c++/2736: g++ misinterpreting initializer syntax
derrick@caltech.edu
derrick@caltech.edu
Fri May 4 04:46:00 GMT 2001
>Number: 2736
>Category: c++
>Synopsis: g++ misinterpreting initializer syntax
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: rejects-legal
>Submitter-Id: net
>Arrival-Date: Fri May 04 04:46:02 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: derrick@caltech.edu
>Release: 2.95.3
>Organization:
>Environment:
i686-pc-linux-gnu (RedHat 6)
>Description:
I have the following in an initializer list:
y(Range(6,7))
where y is a Blitz++ array. g++ seems to be trying to
interpret the Range(6,7) as a function call rather than
as a constructor for a Range object. . . it gives the
following error:
Reading specs from /ufs/newman/users/derrick/gnu/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs
gcc version 2.95.3 20010315 (release)
/ufs/newman/users/derrick/gnu/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/cc1plus testCubic.ii -quiet -version -o /tmp/ccsNqBxH.s
GNU C++ version 2.95.3 20010315 (release) (i686-pc-linux-gnu) compiled by GNU C version 2.95.3 20010315 (release).
CubicSpline.h: In method `CubicSpline<double>::CubicSpline(blitz::Array<double,1>, blitz::Array<double,1>, bool = true, bool = true)':
testCubic.cc:28: instantiated from here
CubicSpline.h:15: non-lvalue in unary `&'
CubicSpline.h:15: no match for call to `(blitz::Range) (int &, int &)'
/ufs/newman/users/derrick/include/blitz/range.h:190: candidates are: int blitz::Range::operator ()(unsigned int) const
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="testCubic.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="testCubic.ii"
IyAwICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19CQVNFX0ZJTEVfXyAidGVzdEN1YmljLmNjIgoj
IDAgInRlc3RDdWJpYy5jYyIKI2RlZmluZSBfX1ZFUlNJT05fXyAiMi45NS4zIDIwMDEwMzE1IChy
ZWxlYXNlKSIKIyAwICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19TSVpFX1RZUEVfXyB1bnNpZ25l
ZCBpbnQKIyAwICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBpbnQKIyAw
ICJ0ZXN0Q3ViaWMuY2MiCiNkZWZpbmUgX19XQ0hBUl9UWVBFX18gX193Y2hhcl90CiMgMCAidGVz
dEN1YmljLmNjIgojZGVmaW5lIF9fREFURV9fICJNYXkgIDQgMjAwMSIKIyAwICJ0ZXN0Q3ViaWMu
Y2MiCiNkZWZpbmUgX19USU1FX18gIjA0OjE5OjA0IgojIDAgInRlc3RDdWJpYy5jYyIKI2RlZmlu
ZSBfX1NURENfXyAxCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMCAidGVzdEN1YmljLmNjIgojIDAgInRlc3RDdWJpYy5jYyIKIyAwICJ0
ZXN0Q3ViaWMuY2MiCiMgMSAidGVzdEN1YmljLmNjIgojIDEgIkN1YmljU3BsaW5lLmgiIDEKIAog
CgojZGVmaW5lIEN1YmljU3BsaW5lX2gKCiMgMSAiSW50ZXJwb2xhdGlvbi5oIiAxCiAKCgojZGVm
aW5lIEludGVycG9sYXRpb25faAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9hcnJheS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CgoKCgoKCgoKCgoKI2RlZmluZSBCWl9BUlJBWV9ICgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9CTElUWl9ICgogCgoKCgoj
IDcwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYmxpdHouaCIKCgoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9jb21waWxlci5oIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5l
IEJaX0NPTVBJTEVSX0gKCiAKIAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovY29uZmlnLmgiIDEKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L2NvbmZpZy5nY2MuaCIgMQogCgoKCgoKCgoKIAoKI2RlZmluZSBCWl9DT05GSUdf
SAogCiNkZWZpbmUgQlpfQ09NUElMRVJfTkFNRSAgICJnKysiCiNkZWZpbmUgQlpfQ09NUElMRVJf
T1BUSU9OUyAiLWZ0ZW1wbGF0ZS1kZXB0aC0zMCIKI2RlZmluZSBCWl9PU19OQU1FICAgICAgICAg
IkxpbnV4IDIuMi4xNC01LjAiCiNkZWZpbmUgQlpfQlpDT05GSUdfREFURSAgICJGcmkgRGVjIDE1
IDAyOjIxOjM5IFBTVCAyMDAwIgojZGVmaW5lIEJaX1BMQVRGT1JNICAgICAgICAiaTY4Ni1wYy1s
aW51eC1nbnUiCiAKI2RlZmluZSBCWl9OQU1FU1BBQ0VTCiNkZWZpbmUgQlpfRVhDRVBUSU9OUwoj
ZGVmaW5lIEJaX1JUVEkKI2RlZmluZSBCWl9NRU1CRVJfQ09OU1RBTlRTCgojZGVmaW5lIEJaX0VY
UExJQ0lUCiNkZWZpbmUgQlpfTVVUQUJMRQojZGVmaW5lIEJaX1RZUEVOQU1FCgojZGVmaW5lIEJa
X05DRUdfUkVTVFJJQ1RfRUdDUwojZGVmaW5lIEJaX0JPT0wKI2RlZmluZSBCWl9DT05TVF9DQVNU
CiNkZWZpbmUgQlpfU1RBVElDX0NBU1QKI2RlZmluZSBCWl9SRUlOVEVSUFJFVF9DQVNUCiNkZWZp
bmUgQlpfRFlOQU1JQ19DQVNUCiNkZWZpbmUgQlpfVEVNUExBVEVTCiNkZWZpbmUgQlpfUEFSVElB
TF9TUEVDSUFMSVpBVElPTgojZGVmaW5lIEJaX1BBUlRJQUxfT1JERVJJTkcKI2RlZmluZSBCWl9E
RUZBVUxUX1RFTVBMQVRFX1BBUkFNRVRFUlMKI2RlZmluZSBCWl9NRU1CRVJfVEVNUExBVEVTCiNk
ZWZpbmUgQlpfTUVNQkVSX1RFTVBMQVRFU19PVVRTSURFX0NMQVNTCiNkZWZpbmUgQlpfRlVMTF9T
UEVDSUFMSVpBVElPTl9TWU5UQVgKI2RlZmluZSBCWl9GVU5DVElPTl9OT05UWVBFX1BBUkFNRVRF
UlMKI2RlZmluZSBCWl9URU1QTEFURV9RVUFMSUZJRURfQkFTRV9DTEFTUwojZGVmaW5lIEJaX1RF
TVBMQVRFX1FVQUxJRklFRF9SRVRVUk5fVFlQRQojZGVmaW5lIEJaX0VYUExJQ0lUX1RFTVBMQVRF
X0ZVTkNUSU9OX1FVQUxJRklDQVRJT04KI2RlZmluZSBCWl9URU1QTEFURVNfQVNfVEVNUExBVEVf
QVJHVU1FTlRTCiNkZWZpbmUgQlpfVEVNUExBVEVfS0VZV09SRF9RVUFMSUZJRVIKI2RlZmluZSBC
Wl9URU1QTEFURV9TQ09QRURfQVJHVU1FTlRfTUFUQ0hJTkcKI2RlZmluZSBCWl9UWVBFX1BST01P
VElPTgojZGVmaW5lIEJaX1VTRV9OVU1UUkFJVAojZGVmaW5lIEJaX0VOVU1fQ09NUFVUQVRJT05T
CiNkZWZpbmUgQlpfRU5VTV9DT01QVVRBVElPTlNfV0lUSF9DQVNUCiNkZWZpbmUgQlpfSEFWRV9D
T01QTEVYCgojZGVmaW5lIEJaX0hBVkVfQ0xJTUlUUwojZGVmaW5lIEJaX0hBVkVfVkFMQVJSQVkK
CiNkZWZpbmUgQlpfSEFWRV9JRUVFX01BVEgKCiNkZWZpbmUgQlpfTUFUSF9GTl9JTl9OQU1FU1BB
Q0VfU1RECiNkZWZpbmUgQlpfQ09NUExFWF9NQVRIX0lOX05BTUVTUEFDRV9TVEQKI2RlZmluZSBC
Wl9IQVZFX1NURAojZGVmaW5lIEJaX0hBVkVfU1RMCiNkZWZpbmUgQlpfSEFWRV9SVVNBR0UKIAoK
IyAyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovY29uZmlnLmgiIDIK
CgoKCgoKCiMgNTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9jb21w
aWxlci5oIiAyCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICAgI2RlZmluZSBCWl9OQU1F
U1BBQ0UoWCkgICAgICAgIG5hbWVzcGFjZSBYIHsKICAgICNkZWZpbmUgQlpfTkFNRVNQQUNFX0VO
RCAgICAgICB9CiAgICAjZGVmaW5lIEJaX1VTSU5HX05BTUVTUEFDRShYKSAgdXNpbmcgbmFtZXNw
YWNlIFg7CgoKCgoKCgogIAoKCgogICAgI2RlZmluZSBCWl9URU1QTEFURV9ERUZBVUxUKFgpICAg
PSBYCgoKCgoKICAgICNkZWZpbmUgX2J6X2V4cGxpY2l0ICAgICBleHBsaWNpdAoKCgoKCiAgICAj
ZGVmaW5lIF9iel90eXBlbmFtZSAgICAgdHlwZW5hbWUKCgoKCgogICAgI2RlZmluZSBfYnpfbXV0
YWJsZSAgICAgIG11dGFibGUKCgoKCgoKCgoKCgogICAgI2RlZmluZSBfYnpfcmVzdHJpY3QgICAg
IF9fcmVzdHJpY3RfXwoKCgoKCiAgICAjZGVmaW5lIF9iel9ib29sICAgICAgICAgYm9vbAogICAg
I2RlZmluZSBfYnpfdHJ1ZSAgICAgICAgIHRydWUKICAgICNkZWZpbmUgX2J6X2ZhbHNlICAgICAg
ICBmYWxzZQoKCgoKCgoKICAgICNkZWZpbmUgQlpfRU5VTV9DQVNUKFgpICAgKGludClYCgoKCgoK
CgogICNkZWZpbmUgQlpfTUFUSEZOX1NDT1BFKHgpIHN0ZDo6eAoKCgoKCgoKICAjZGVmaW5lIEJa
X0NNQVRIRk5fU0NPUEUoeCkgc3RkOjp4CgoKCgoKCgogICNkZWZpbmUgQlpfSUVFRU1BVEhGTl9T
Q09QRSh4KSA6OngKCgoKCgogICNkZWZpbmUgQlpfQkxJVFpfU0NPUEUoeCkgYmxpdHo6OngKCgoK
CgogICNkZWZpbmUgQlpfU1REX1NDT1BFKHgpIHN0ZDo6eAoKCgoKCgojIDcyICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYmxpdHouaCIgMgoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdHVuaW5nLmgiIDEKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9UVU5JTkdfSAoK
IAogCiNkZWZpbmUgQlpfTDFfQ0FDSEVfRVNUSU1BVEVEX1NJWkUgICAgODE5MgojZGVmaW5lIEJa
X0wyX0NBQ0hFX0VTVElNQVRFRF9TSVpFICAgIDY1NTM2CgoKCiNkZWZpbmUgQlpfUEFTU19FWFBS
X0JZX1ZBTFVFCgojZGVmaW5lIEJaX01BTlVBTF9WRUNFWFBSX0NPUFlfQ09OU1RSVUNUT1IKCgoK
I2RlZmluZSBCWl9JTkxJTkVfR1JPVVAxCiNkZWZpbmUgQlpfSU5MSU5FX0dST1VQMgojZGVmaW5l
IEJaX0NPTExBUFNFX0xPT1BTCiNkZWZpbmUgQlpfVVNFX0ZBU1RfUkVBRF9BUlJBWV9FWFBSCiNk
ZWZpbmUgQlpfQVJSQVlfRVhQUl9VU0VfQ09NTU9OX1NUUklERQoKCgojZGVmaW5lIEJaX0FSUkFZ
XzJEX1NURU5DSUxfVElMSU5HCiNkZWZpbmUgQlpfQVJSQVlfMkRfU1RFTkNJTF9USUxFX1NJWkUg
ICAgICAgMTI4CgoKI2RlZmluZSBCWl9GQVNUX0NPTVBJTEUKCgoKICNkZWZpbmUgQlpfTkVXX0VY
UFJFU1NJT05fVEVNUExBVEVTCgoKCiNkZWZpbmUgQlpfRVRQQVJNU19DT05TVFJFRgojZGVmaW5l
IEJaX05PX0lOTElORV9FVAoKCiAKCgoKCgoKCgoKCgoKICAKICAKIAogCiAKCgoKCgoKCiAjZGVm
aW5lIF9iel9pbmxpbmUxIGlubGluZQoKCgoKCiAjZGVmaW5lIF9iel9pbmxpbmUyIGlubGluZQoK
CgoKCiAjZGVmaW5lIF9iel9pbmxpbmVfZXQgCgoKCgoKICNkZWZpbmUgQlpfRVRQQVJNKFgpIGNv
bnN0IFgmCgoKCgojIDE0NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L3R1bmluZy5oIgoKCiAKCgoKCgoKI2RlZmluZSBCWl9OT19QUk9QQUdBVEUoWCkgICBYCgoKCgoK
CgoKCgoKIyA3MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2JsaXR6
LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3RhdS5o
IiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVEFVX0gK
CgoKCgoKICNkZWZpbmUgVFlQRV9TVFJJTkcocHJvZmlsZVN0cmluZywgc3RyKQogI2RlZmluZSBQ
Uk9GSUxFRF9CTE9DSyhuYW1lLCB0eXBlKQogI2RlZmluZSBUQVVfVFlQRV9TVFJJTkcocHJvZmls
ZVN0cmluZywgc3RyKQogI2RlZmluZSBUQVVfUFJPRklMRShuYW1lLCB0eXBlLCBncm91cCkKICNk
ZWZpbmUgVEFVX1BST0ZJTEVfVElNRVIodmFyLCBuYW1lLCB0eXBlLCBncm91cCkKICNkZWZpbmUg
VEFVX1BST0ZJTEVfU1RBUlQodmFyKQogI2RlZmluZSBUQVVfUFJPRklMRV9TVE9QKHZhcikKICNk
ZWZpbmUgVEFVX1BST0ZJTEVfU1RNVChzdG10KQogI2RlZmluZSBUQVVfUFJPRklMRV9FWElUKG1z
ZykKICNkZWZpbmUgVEFVX1BST0ZJTEVfSU5JVChhcmdjLCBhcmd2KQogI2RlZmluZSBUQVVfUFJP
RklMRV9TRVRfTk9ERShub2RlKQogI2RlZmluZSBDVChvYmopCgoKCiMgNzQgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmluZyIgMSAzCiAKCgojZGVm
aW5lIF9fU1RSSU5HX18KCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIu
OTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5j
bHVkZS9nKystMy9zdGQvYmFzdHJpbmcuaCIgMSAzCiAKIAoKIAogCiAKIAogCgogCiAKIAogCgog
CiAKIAoKIAogCiAKIAogCgogCiAKCgojZGVmaW5lIF9fQkFTVFJJTkdfXwoKCiNwcmFnbWEgaW50
ZXJmYWNlCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL2NzdGRkZWYiIDEgMwogCiAKCgojZGVmaW5lIF9fQ1NURERFRl9fCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgoKCgojZGVmaW5lIF9T
VERERUZfSAojZGVmaW5lIF9TVERERUZfSF8KIAojZGVmaW5lIF9BTlNJX1NURERFRl9ICiAKI2Rl
ZmluZSBfX1NURERFRl9IX18KCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgogCgogCgoKCgoKCgoKCgojZGVmaW5lIF9QVFJESUZGX1QKI2RlZmluZSBfVF9QVFJESUZG
XwojZGVmaW5lIF9UX1BUUkRJRkYKI2RlZmluZSBfX1BUUkRJRkZfVAojZGVmaW5lIF9QVFJESUZG
X1RfCiNkZWZpbmUgX0JTRF9QVFJESUZGX1RfCiNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oCiNk
ZWZpbmUgX0dDQ19QVFJESUZGX1QKCgoKdHlwZWRlZiBpbnQgcHRyZGlmZl90OwoKCgoKCgoKCgog
CgoKCgogCgogCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9fc2l6ZV90X18JCiNkZWZpbmUgX1NJ
WkVfVAojZGVmaW5lIF9TWVNfU0laRV9UX0gKI2RlZmluZSBfVF9TSVpFXwojZGVmaW5lIF9UX1NJ
WkUKI2RlZmluZSBfX1NJWkVfVAojZGVmaW5lIF9TSVpFX1RfCiNkZWZpbmUgX0JTRF9TSVpFX1Rf
CiNkZWZpbmUgX1NJWkVfVF9ERUZJTkVEXwojZGVmaW5lIF9TSVpFX1RfREVGSU5FRAojZGVmaW5l
IF9fX2ludF9zaXplX3RfaAojZGVmaW5lIF9HQ0NfU0laRV9UCiNkZWZpbmUgX1NJWkVUXwojZGVm
aW5lIF9fc2l6ZV90CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgogCgoKCgogCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX193Y2hhcl90X18JCiNk
ZWZpbmUgX1dDSEFSX1QKI2RlZmluZSBfVF9XQ0hBUl8KI2RlZmluZSBfVF9XQ0hBUgojZGVmaW5l
IF9fV0NIQVJfVAojZGVmaW5lIF9XQ0hBUl9UXwojZGVmaW5lIF9CU0RfV0NIQVJfVF8KI2RlZmlu
ZSBfV0NIQVJfVF9ERUZJTkVEXwojZGVmaW5lIF9XQ0hBUl9UX0RFRklORUQKI2RlZmluZSBfV0NI
QVJfVF9ICiNkZWZpbmUgX19faW50X3djaGFyX3RfaAojZGVmaW5lIF9fSU5UX1dDSEFSX1RfSAoj
ZGVmaW5lIF9HQ0NfV0NIQVJfVAoKIAoKCgoKCgoKCgoKI3VuZGVmIF9CU0RfV0NIQVJfVF8KCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9XSU5UX1QKCgojZGVmaW5l
IF9fV0lOVF9UWVBFX18gdW5zaWduZWQgaW50Cgp0eXBlZGVmIHVuc2lnbmVkIGludCAgd2ludF90
OwoKCgoKIAoKIAoKIyAzMTcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgoKCiAKCgoKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCgoKCgogCgojZGVmaW5lIG9mZnNl
dG9mKFRZUEUsIE1FTUJFUikgKChzaXplX3QpICYoKFRZUEUgKikwKS0+TUVNQkVSKQoKCgoKCiMg
NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jc3RkZGVm
IiAyIDMKCgojIDM1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0ZC9iYXN0cmluZy5oIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGQvc3RyYWl0cy5oIiAxIDMKIAogCgogCiAKIAogCiAKCiAK
IAogCiAKCiAKIAogCgogCiAKIAogCiAKCiAKIAoKCiNkZWZpbmUgX19TVFJJTkdfQ0hBUl9UUkFJ
VFNfXwoKCiAKI3ByYWdtYSBpbnRlcmZhY2UgInN0ZC9zdHJhaXRzLmgiCgoKCgpleHRlcm4gIkMr
KyIgewp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+CnN0cnVjdCBzdHJpbmdfY2hhcl90cmFpdHMgewog
IHR5cGVkZWYgY2hhclQgY2hhcl90eXBlOyAgCgogICAKCiAgc3RhdGljIHZvaWQgYXNzaWduIChj
aGFyX3R5cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMyKQogICAgeyBjMSA9IGMyOyB9CiAgc3Rh
dGljIGJvb2wgZXEgKGNvbnN0IGNoYXJfdHlwZSYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAg
ICB7IHJldHVybiAoYzEgPT0gYzIpOyB9CiAgc3RhdGljIGJvb2wgbmUgKGNvbnN0IGNoYXJfdHlw
ZSYgYzEsIGNvbnN0IGNoYXJfdHlwZSYgYzIpCiAgICB7IHJldHVybiAhKGMxID09IGMyKTsgfQog
IHN0YXRpYyBib29sIGx0IChjb25zdCBjaGFyX3R5cGUmIGMxLCBjb25zdCBjaGFyX3R5cGUmIGMy
KQogICAgeyByZXR1cm4gKGMxIDwgYzIpOyB9CiAgc3RhdGljIGNoYXJfdHlwZSBlb3MgKCkgeyBy
ZXR1cm4gY2hhcl90eXBlKCk7IH0gIAogIHN0YXRpYyBib29sIGlzX2RlbChjaGFyX3R5cGUgYSkg
eyByZXR1cm4gMDsgfQogICAKICAKICAgCgogIHN0YXRpYyBpbnQgY29tcGFyZSAoY29uc3QgY2hh
cl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7CiAgICAgIHNp
emVfdCBpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQoJaWYgKG5lIChzMVtpXSwgczJb
aV0pKQoJICByZXR1cm4gbHQgKHMxW2ldLCBzMltpXSkgPyAtMSA6IDE7CgogICAgICByZXR1cm4g
MDsKICAgIH0KICAgIAogIHN0YXRpYyBzaXplX3QgbGVuZ3RoIChjb25zdCBjaGFyX3R5cGUqIHMp
CiAgICB7CiAgICAgIHNpemVfdCBsID0gMDsKICAgICAgd2hpbGUgKG5lICgqcysrLCBlb3MgKCkp
KQoJKytsOwogICAgICByZXR1cm4gbDsKICAgIH0KCiAgc3RhdGljIGNoYXJfdHlwZSogY29weSAo
Y2hhcl90eXBlKiBzMSwgY29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7CiAgICAg
IGZvciAoOyBuLS07ICkKCWFzc2lnbiAoczFbbl0sIHMyW25dKTsKICAgICAgcmV0dXJuIHMxOwog
ICAgfQoKICBzdGF0aWMgY2hhcl90eXBlKiBtb3ZlIChjaGFyX3R5cGUqIHMxLCBjb25zdCBjaGFy
X3R5cGUqIHMyLCBzaXplX3QgbikKICAgIHsKICAgICAgY2hhcl90eXBlIGFbbl07CiAgICAgIHNp
emVfdCBpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKQoJYXNzaWduIChhW2ldLCBzMltp
XSk7CiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpCglhc3NpZ24gKHMxW2ldLCBhW2ldKTsK
ICAgICAgcmV0dXJuIHMxOwogICAgfQoKICBzdGF0aWMgY2hhcl90eXBlKiBzZXQgKGNoYXJfdHlw
ZSogczEsIGNvbnN0IGNoYXJfdHlwZSYgYywgc2l6ZV90IG4pCiAgICB7CiAgICAgIGZvciAoOyBu
LS07ICkKCWFzc2lnbiAoczFbbl0sIGMpOwogICAgICByZXR1cm4gczE7CiAgICB9Cn07CgpjbGFz
cyBpc3RyZWFtOwpjbGFzcyBvc3RyZWFtOwojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvY2N0eXBlIiAxIDMKIAogCgoKI2RlZmluZSBfX0NDVFlQRV9f
CiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
I2RlZmluZSAJX0NUWVBFX0gJMQoKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSAJX0ZFQVRVUkVTX0gJMQoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgojZGVmaW5lIF9fS0VSTkVMX1NUUklDVF9OQU1FUwoKCiAKI2RlZmluZSAJ
X19VU0VfQU5TSQkxCgoKIAoKCgoKCgoKIAojIDEzOCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDMKCgogCgoKCgoKI2RlZmluZSBfQlNEX1NPVVJDRQkxCiNkZWZpbmUgX1NWSURfU09VUkNFCTEK
CgogCgoKCgoKIAoKCgojZGVmaW5lIF9QT1NJWF9TT1VSQ0UJMQoKCgojZGVmaW5lIF9QT1NJWF9D
X1NPVVJDRQkxOTk1MDZMCgoKCgojZGVmaW5lIF9fVVNFX1BPU0lYCTEKCgoKI2RlZmluZSBfX1VT
RV9QT1NJWDIJMQoKCgojZGVmaW5lIF9fVVNFX1BPU0lYMTk5MzA5CTEKCgoKI2RlZmluZSBfX1VT
RV9QT1NJWDE5OTUwNgkxCgoKIyAxOTYgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCgoKCgoK
CgoKCgoKCgoKCiNkZWZpbmUgX19VU0VfTUlTQwkxCgoKCiNkZWZpbmUgX19VU0VfQlNECTEKCgoK
I2RlZmluZSBfX1VTRV9TVklECTEKCgoKCgoKCgoKCiAKI2RlZmluZSBfX1NURENfSUVDXzU1OV9f
CQkxCiNkZWZpbmUgX19TVERDX0lFQ181NTlfQ09NUExFWF9fCTEKCiAKCgoKCgoKI2RlZmluZSBf
X0dOVV9MSUJSQVJZX18gNgoKIAoKI2RlZmluZSAJX19HTElCQ19fCTIKI2RlZmluZSAJX19HTElC
Q19NSU5PUl9fCTEKCiAKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMKIAoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIAlfU1lTX0NERUZTX0gJMQoKIAoKCgoKIAoKCgoKCiAKCgoK
I2RlZmluZSBfX1RIUk9XCXRocm93ICgpCgoKCiNkZWZpbmUgX19QKGFyZ3MpCWFyZ3MgX19USFJP
VwogCgojZGVmaW5lIF9fUE1UKGFyZ3MpCWFyZ3MKI2RlZmluZSBfX0RPVFMJCSwgLi4uCgojIDcx
ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKCgogCgoKCgojZGVmaW5lIF9fQ09OQ0FUKHgs
eSkJeCAjIyB5CiNkZWZpbmUgX19TVFJJTkcoeCkJI3gKCiAKI2RlZmluZSBfX3B0cl90IHZvaWQg
KgojZGVmaW5lIF9fbG9uZ19kb3VibGVfdCAgbG9uZyBkb3VibGUKCiMgMTAzICIvdXNyL2luY2x1
ZGUvc3lzL2NkZWZzLmgiIDMKCgoKIAoKI2RlZmluZSBfX0JFR0lOX0RFQ0xTCWV4dGVybiAiQyIg
ewojZGVmaW5lIF9fRU5EX0RFQ0xTCX0KCgoKCgogCgoKCgoKCgoKCgoKI2RlZmluZSBfX1JFRElS
RUNUKG5hbWUsIHByb3RvLCBhbGlhcykgbmFtZSBwcm90byBfX2FzbV9fIChfX0FTTU5BTUUgKCNh
bGlhcykpCiNkZWZpbmUgX19BU01OQU1FKGNuYW1lKSAgX19BU01OQU1FMiAoX19VU0VSX0xBQkVM
X1BSRUZJWF9fLCBjbmFtZSkKI2RlZmluZSBfX0FTTU5BTUUyKHByZWZpeCwgY25hbWUpIF9fU1RS
SU5HIChwcmVmaXgpIGNuYW1lCgogCgoKCgoKCgoKIAoKCgoKCgoKCiAKCgoKCgoKCgoKIAoKCgoK
CgoKIyAyNTAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAyIDMKCgogCgoKCgoKCgoKIAoKCgoK
CiAKCiAKCgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMSAzCiAKCgoKI2Rl
ZmluZSBfX3N0dWJfX19rZXJuZWxfY29zbAojZGVmaW5lIF9fc3R1Yl9fX2tlcm5lbF9zaW5sCiNk
ZWZpbmUgX19zdHViX19fa2VybmVsX3RhbmwKI2RlZmluZSBfX3N0dWJfY2hmbGFncwojZGVmaW5l
IF9fc3R1Yl9lcmZjbAojZGVmaW5lIF9fc3R1Yl9lcmZsCiNkZWZpbmUgX19zdHViX2ZhdHRhY2gK
I2RlZmluZSBfX3N0dWJfZmNoZmxhZ3MKI2RlZmluZSBfX3N0dWJfZmRldGFjaAojZGVmaW5lIF9f
c3R1Yl9mZXhlY3ZlCiNkZWZpbmUgX19zdHViX2dldGNvbnRleHQKI2RlZmluZSBfX3N0dWJfZ2V0
bXNnCiNkZWZpbmUgX19zdHViX2dldHBtc2cKI2RlZmluZSBfX3N0dWJfZ3R0eQojZGVmaW5lIF9f
c3R1Yl9qMGwKI2RlZmluZSBfX3N0dWJfajFsCiNkZWZpbmUgX19zdHViX2pubAojZGVmaW5lIF9f
c3R1Yl9sZ2FtbWFsCgojZGVmaW5lIF9fc3R1Yl9sZ2FtbWFsX3IKCiNkZWZpbmUgX19zdHViX21h
ZHZpc2UKI2RlZmluZSBfX3N0dWJfbWFrZWNvbnRleHQKI2RlZmluZSBfX3N0dWJfcHV0bXNnCiNk
ZWZpbmUgX19zdHViX3B1dHBtc2cKI2RlZmluZSBfX3N0dWJfcmV2b2tlCiNkZWZpbmUgX19zdHVi
X3NldGNvbnRleHQKI2RlZmluZSBfX3N0dWJfc2V0bG9naW4KI2RlZmluZSBfX3N0dWJfc2lncmV0
dXJuCiNkZWZpbmUgX19zdHViX3NzdGsKI2RlZmluZSBfX3N0dWJfc3R0eQojZGVmaW5lIF9fc3R1
Yl9zd2FwY29udGV4dAojZGVmaW5lIF9fc3R1Yl95MGwKI2RlZmluZSBfX3N0dWJfeTFsCiNkZWZp
bmUgX19zdHViX3lubAojIDI3OCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwoKCgoKIyAy
NiAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBl
cy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgCV9CSVRTX1RZUEVTX0gJ
MQoKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y
Ljk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAK
CgoKCgogCgogCgoKIyAxMjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgi
IDMKCgogCgoKCgogCgogCgoKIyAxODggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCiN1bmRlZiAJX19uZWVkX3NpemVfdAoKCgogCgoKCgogCgoKIyAyNjkgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAK
CiMgMzE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoK
I3VuZGVmIE5VTEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKCgoKCiAKCgoKCgoKCiMgMjkg
Ii91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwoKCiAKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
IF9fdV9jaGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdV9zaG9ydDsKdHlwZWRlZiB1bnNp
Z25lZCBpbnQgX191X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fdV9sb25nOwoKX19leHRl
bnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191X3F1YWRfdDsKX19leHRl
bnNpb25fXyB0eXBlZGVmIGxvbmcgbG9uZyBpbnQgX19xdWFkX3Q7CiMgNDggIi91c3IvaW5jbHVk
ZS9iaXRzL3R5cGVzLmgiIDMKCnR5cGVkZWYgc2lnbmVkIGNoYXIgX19pbnQ4X3Q7CnR5cGVkZWYg
dW5zaWduZWQgY2hhciBfX3VpbnQ4X3Q7CnR5cGVkZWYgc2lnbmVkIHNob3J0IGludCBfX2ludDE2
X3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9fdWludDE2X3Q7CnR5cGVkZWYgc2lnbmVk
IGludCBfX2ludDMyX3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdWludDMyX3Q7CgpfX2V4dGVu
c2lvbl9fIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19pbnQ2NF90OwpfX2V4dGVuc2lv
bl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3VpbnQ2NF90OwoKdHlwZWRlZiBf
X3F1YWRfdCAqX19xYWRkcl90OwoKdHlwZWRlZiBfX3VfcXVhZF90IF9fZGV2X3Q7CQkgCnR5cGVk
ZWYgX191X2ludCBfX3VpZF90OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19naWRfdDsJCSAKdHlwZWRl
ZiBfX3VfbG9uZyBfX2lub190OwkJIAp0eXBlZGVmIF9fdV9pbnQgX19tb2RlX3Q7CQkgCnR5cGVk
ZWYgX191X2ludCBfX25saW5rX3Q7IAkJIAp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CQkgCnR5
cGVkZWYgX19xdWFkX3QgX19sb2ZmX3Q7CQkgCnR5cGVkZWYgaW50IF9fcGlkX3Q7CQkJIAp0eXBl
ZGVmIGludCBfX3NzaXplX3Q7CQkJIAp0eXBlZGVmIGxvbmcgaW50IF9fcmxpbV90OwkJIAp0eXBl
ZGVmIF9fcXVhZF90IF9fcmxpbTY0X3Q7CQkgCnR5cGVkZWYgX191X2ludCBfX2lkX3Q7CQkJIAoK
dHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgX192YWxbMl07CiAgfSBfX2ZzaWRfdDsJCQkJIAoK
IAp0eXBlZGVmIGludCBfX2RhZGRyX3Q7CQkJIAp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKdHlw
ZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiBsb25nIGludCBfX3N3YmxrX3Q7CQkgCgwK
dHlwZWRlZiBsb25nIGludCBfX2Nsb2NrX3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQg
X19mZF9tYXNrOwoKIAojZGVmaW5lIF9fRkRfU0VUU0laRQkxMDI0CgogCiNkZWZpbmUgX19ORkRC
SVRTCSg4ICogc2l6ZW9mIChfX2ZkX21hc2spKQojZGVmaW5lIAlfX0ZERUxUKGQpCSgoZCkgLyBf
X05GREJJVFMpCiNkZWZpbmUgCV9fRkRNQVNLKGQpCSgoX19mZF9tYXNrKSAxIDw8ICgoZCkgJSBf
X05GREJJVFMpKQoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgICAKCgoKCgogICAgX19mZF9tYXNr
IF9fZmRzX2JpdHNbMTAyNCAgLyAoOCAqIHNpemVvZiAoX19mZF9tYXNrKSkgXTsKI2RlZmluZSBf
X0ZEU19CSVRTKHNldCkgKChzZXQpLT5fX2Zkc19iaXRzKQoKICB9IF9fZmRfc2V0OwoKCnR5cGVk
ZWYgaW50IF9fa2V5X3Q7CgogCnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IF9faXBjX3BpZF90
OwoKCiAKCiAKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudF90Owp0eXBlZGVmIF9fcXVhZF90IF9f
YmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzYmxrY250X3Q7CnR5cGVkZWYgX191
X3F1YWRfdCBfX2ZzYmxrY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7
CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCiAKdHlwZWRlZiBfX3VfbG9uZyBf
X2lubzY0X3Q7CgogCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKIAp0eXBlZGVmIGxvbmcg
aW50IF9fdF9zY2FsYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3RfdXNjYWxhcl90
OwoKIAp0eXBlZGVmIGludCBfX2ludHB0cl90OwoKCiAKCgoKCgojIDI3ICIvdXNyL2luY2x1ZGUv
Y3R5cGUuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKCiAKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L2VuZGlhbi5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIAlfRU5ESUFOX0gJMQoK
CgogCgoKCgoKI2RlZmluZSAJX19MSVRUTEVfRU5ESUFOCTEyMzQKI2RlZmluZSAJX19CSUdfRU5E
SUFOCTQzMjEKI2RlZmluZSAJX19QRFBfRU5ESUFOCTM0MTIKCiAKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9lbmRpYW4uaCIgMSAzCiAKCgoKCgojZGVmaW5lIF9fQllURV9PUkRFUiBfX0xJVFRMRV9F
TkRJQU4KIyAzNSAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAyIDMKCgogCgoKI2RlZmluZSBfX0ZM
T0FUX1dPUkRfT1JERVIgX19CWVRFX09SREVSCgoKCiNkZWZpbmUgTElUVExFX0VORElBTglfX0xJ
VFRMRV9FTkRJQU4KI2RlZmluZSBCSUdfRU5ESUFOCV9fQklHX0VORElBTgojZGVmaW5lIFBEUF9F
TkRJQU4JX19QRFBfRU5ESUFOCiNkZWZpbmUgQllURV9PUkRFUglfX0JZVEVfT1JERVIKCgoKIyA0
MCAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDIgMwoKCgoKI2RlZmluZSBfSVNiaXQoYml0KQkoKGJp
dCkgPCA4ID8gKCgxIDw8IChiaXQpKSA8PCA4KSA6ICgoMSA8PCAoYml0KSkgPj4gOCkpCgoKZW51
bQp7CiAgX0lTdXBwZXIgPSAoKCAwICkgPCA4ID8gKCgxIDw8ICggMCApKSA8PCA4KSA6ICgoMSA8
PCAoIDAgKSkgPj4gOCkpICwJIAogIF9JU2xvd2VyID0gKCggMSApIDwgOCA/ICgoMSA8PCAoIDEg
KSkgPDwgOCkgOiAoKDEgPDwgKCAxICkpID4+IDgpKSAsCSAKICBfSVNhbHBoYSA9ICgoIDIgKSA8
IDggPyAoKDEgPDwgKCAyICkpIDw8IDgpIDogKCgxIDw8ICggMiApKSA+PiA4KSkgLAkgCiAgX0lT
ZGlnaXQgPSAoKCAzICkgPCA4ID8gKCgxIDw8ICggMyApKSA8PCA4KSA6ICgoMSA8PCAoIDMgKSkg
Pj4gOCkpICwJIAogIF9JU3hkaWdpdCA9ICgoIDQgKSA8IDggPyAoKDEgPDwgKCA0ICkpIDw8IDgp
IDogKCgxIDw8ICggNCApKSA+PiA4KSkgLAkgCiAgX0lTc3BhY2UgPSAoKCA1ICkgPCA4ID8gKCgx
IDw8ICggNSApKSA8PCA4KSA6ICgoMSA8PCAoIDUgKSkgPj4gOCkpICwJIAogIF9JU3ByaW50ID0g
KCggNiApIDwgOCA/ICgoMSA8PCAoIDYgKSkgPDwgOCkgOiAoKDEgPDwgKCA2ICkpID4+IDgpKSAs
CSAKICBfSVNncmFwaCA9ICgoIDcgKSA8IDggPyAoKDEgPDwgKCA3ICkpIDw8IDgpIDogKCgxIDw8
ICggNyApKSA+PiA4KSkgLAkgCiAgX0lTYmxhbmsgPSAoKCA4ICkgPCA4ID8gKCgxIDw8ICggOCAp
KSA8PCA4KSA6ICgoMSA8PCAoIDggKSkgPj4gOCkpICwJIAogIF9JU2NudHJsID0gKCggOSApIDwg
OCA/ICgoMSA8PCAoIDkgKSkgPDwgOCkgOiAoKDEgPDwgKCA5ICkpID4+IDgpKSAsCSAKICBfSVNw
dW5jdCA9ICgoIDEwICkgPCA4ID8gKCgxIDw8ICggMTAgKSkgPDwgOCkgOiAoKDEgPDwgKCAxMCAp
KSA+PiA4KSkgLAkgCiAgX0lTYWxudW0gPSAoKCAxMSApIDwgOCA/ICgoMSA8PCAoIDExICkpIDw8
IDgpIDogKCgxIDw8ICggMTEgKSkgPj4gOCkpIAkgCn07CgoKIAoKCgoKCgoKCgoKZXh0ZXJuIF9f
Y29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICpfX2N0eXBlX2I7CSAKZXh0ZXJuIF9fY29uc3QgX19p
bnQzMl90ICpfX2N0eXBlX3RvbG93ZXI7ICAKZXh0ZXJuIF9fY29uc3QgX19pbnQzMl90ICpfX2N0
eXBlX3RvdXBwZXI7ICAKCiNkZWZpbmUgCV9faXNjdHlwZShjLCB0eXBlKSAoX19jdHlwZV9iWyhp
bnQpIChjKV0gJiAodW5zaWduZWQgc2hvcnQgaW50KSB0eXBlKQoKCiNkZWZpbmUgCV9faXNhc2Np
aShjKQkoKChjKSAmIH4weDdmKSA9PSAwKQkKI2RlZmluZSAJX190b2FzY2lpKGMpCSgoYykgJiAw
eDdmKQkJCgojZGVmaW5lIAlfX2V4Y3R5cGUobmFtZSkJZXh0ZXJuIGludCBuYW1lIF9fUCAoKGlu
dCkpCgogCgoKCmV4dGVybiBpbnQgIGlzYWxudW0gICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVy
biBpbnQgIGlzYWxwaGEgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzY250cmwg
ICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzZGlnaXQgICAoaW50KSAgdGhyb3cg
KCkgICA7CmV4dGVybiBpbnQgIGlzbG93ZXIgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBp
bnQgIGlzZ3JhcGggICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzcHJpbnQgICAo
aW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzcHVuY3QgICAoaW50KSAgdGhyb3cgKCkg
ICA7CmV4dGVybiBpbnQgIGlzc3BhY2UgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQg
IGlzdXBwZXIgICAoaW50KSAgdGhyb3cgKCkgICA7CmV4dGVybiBpbnQgIGlzeGRpZ2l0ICAgKGlu
dCkgIHRocm93ICgpICAgOwoKCgoKCgogCmV4dGVybiBpbnQgdG9sb3dlciAgKGludCBfX2MpICB0
aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHRvdXBwZXIgIChpbnQgX19jKSAgdGhyb3cgKCkgIDsK
CgoKCiAKCmV4dGVybiBpbnQgaXNhc2NpaSAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKZXh0
ZXJuIGludCB0b2FzY2lpICAoaW50IF9fYykgIHRocm93ICgpICA7CgoKCgogCgpleHRlcm4gaW50
ICBfdG91cHBlciAgIChpbnQpICB0aHJvdyAoKSAgIDsKZXh0ZXJuIGludCAgX3RvbG93ZXIgICAo
aW50KSAgdGhyb3cgKCkgICA7CgoKCiNkZWZpbmUgaXNhbG51bShjKQlfX2lzY3R5cGUoKGMpLCBf
SVNhbG51bSkKI2RlZmluZSBpc2FscGhhKGMpCV9faXNjdHlwZSgoYyksIF9JU2FscGhhKQojZGVm
aW5lIGlzY250cmwoYykJX19pc2N0eXBlKChjKSwgX0lTY250cmwpCiNkZWZpbmUgaXNkaWdpdChj
KQlfX2lzY3R5cGUoKGMpLCBfSVNkaWdpdCkKI2RlZmluZSBpc2xvd2VyKGMpCV9faXNjdHlwZSgo
YyksIF9JU2xvd2VyKQojZGVmaW5lIGlzZ3JhcGgoYykJX19pc2N0eXBlKChjKSwgX0lTZ3JhcGgp
CiNkZWZpbmUgaXNwcmludChjKQlfX2lzY3R5cGUoKGMpLCBfSVNwcmludCkKI2RlZmluZSBpc3B1
bmN0KGMpCV9faXNjdHlwZSgoYyksIF9JU3B1bmN0KQojZGVmaW5lIGlzc3BhY2UoYykJX19pc2N0
eXBlKChjKSwgX0lTc3BhY2UpCiNkZWZpbmUgaXN1cHBlcihjKQlfX2lzY3R5cGUoKGMpLCBfSVN1
cHBlcikKI2RlZmluZSBpc3hkaWdpdChjKQlfX2lzY3R5cGUoKGMpLCBfSVN4ZGlnaXQpCgoKCgoK
IyAxNjQgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgoKIyAxODYgIi91c3IvaW5jbHVkZS9jdHlw
ZS5oIiAzCgoKCiNkZWZpbmUgaXNhc2NpaShjKQlfX2lzYXNjaWkgKGMpCiNkZWZpbmUgdG9hc2Np
aShjKQlfX3RvYXNjaWkgKGMpCgojZGVmaW5lIF90b2xvd2VyKGMpCSgoaW50KSBfX2N0eXBlX3Rv
bG93ZXJbKGludCkgKGMpXSkKI2RlZmluZSBfdG91cHBlcihjKQkoKGludCkgX19jdHlwZV90b3Vw
cGVyWyhpbnQpIChjKV0pCgoKCgoKIyAyNzMgIi91c3IvaW5jbHVkZS9jdHlwZS5oIiAzCgoKfSAK
CgojIDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY2N0
eXBlIiAyIDMKCgojIDEwNSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGQvc3RyYWl0cy5oIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9jc3RyaW5nIiAxIDMKIAogCgoKI2RlZmluZSBfX0NTVFJJ
TkdfXwoKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoK
IAoKCgoKI2RlZmluZSAJX1NUUklOR19ICTEKCgoKZXh0ZXJuICJDIiB7IAoKIAojZGVmaW5lIAlf
X25lZWRfc2l6ZV90CiNkZWZpbmUgCV9fbmVlZF9OVUxMCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9n
Y2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0
ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNs
dWRlL3N0ZGRlZi5oIiAzCgojdW5kZWYgCV9fbmVlZF9zaXplX3QKCgoKIAoKCgoKIAoKCiMgMjY5
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoK
CgogCgogCgojIDMxNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
CgoKIAoKCiN1bmRlZiBOVUxMCQkKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCiN1bmRlZiAJX19u
ZWVkX05VTEwKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAyIDMKCgoK
IApleHRlcm4gdm9pZCAqICBtZW1jcHkgICh2b2lkICogIF9fcmVzdHJpY3QgX19kZXN0LAoJCQkg
ICAgX19jb25zdCB2b2lkICogIF9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwogCgpleHRlcm4gdm9pZCAqICBtZW1tb3ZlICAodm9pZCAqICBfX2Rlc3QsIF9fY29uc3Qg
dm9pZCAqICBfX3NyYywKCQkJICAgICBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKCgoKZXh0
ZXJuIHZvaWQgKiAgbWVtY2NweSAgKHZvaWQgKiAgX19kZXN0LCBfX2NvbnN0IHZvaWQgKiAgX19z
cmMsCgkJCSAgICAgaW50IF9fYywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJu
IHZvaWQgKiAgbWVtc2V0ICAodm9pZCAqICBfX3MsIGludCBfX2MsIHNpemVfdCBfX24pICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IG1lbWNtcCAgKF9fY29uc3Qgdm9pZCAqICBfX3MxLCBfX2Nv
bnN0IHZvaWQgKiAgX19zMiwKCQkJc2l6ZV90IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiB2
b2lkICogIG1lbWNociAgKF9fY29uc3Qgdm9pZCAqICBfX3MsIGludCBfX2MsIHNpemVfdCBfX24p
ICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmNweSAgKGNoYXIgKl9fcmVz
dHJpY3QgX19kZXN0LAoJCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgIHRocm93
ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwK
CQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnN0cmNhdCAgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAoJ
CQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykgIHRocm93ICgpICA7CiAKZXh0ZXJu
IGNoYXIgKnN0cm5jYXQgIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKCQkJICAgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJu
IGludCBzdHJjbXAgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRo
cm93ICgpICA7CiAKZXh0ZXJuIGludCBzdHJuY21wICAoX19jb25zdCBjaGFyICpfX3MxLCBfX2Nv
bnN0IGNoYXIgKl9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHN0
cmNvbGwgIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtICAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCgkJ
CSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwoKIyAxMDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgogCmV4dGVybiBjaGFyICpf
X3N0cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGNoYXIgKnN0
cmR1cCAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cgKCkgIDsKCgogCgoKCgoKCiMgMTQzICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgogCmV4dGVybiBjaGFyICpzdHJjaHIgIChfX2NvbnN0
IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CiAKZXh0ZXJuIGNoYXIgKnN0cnJjaHIg
IChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CgoKCgoKCgogCgpleHRl
cm4gc2l6ZV90IHN0cmNzcG4gIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX3Jl
amVjdCkgIHRocm93ICgpICA7CiAKCmV4dGVybiBzaXplX3Qgc3Ryc3BuICAoX19jb25zdCBjaGFy
ICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0aHJvdyAoKSAgOwogCmV4dGVybiBjaGFy
ICpzdHJwYnJrICAoX19jb25zdCBjaGFyICpfX3MsIF9fY29uc3QgY2hhciAqX19hY2NlcHQpICB0
aHJvdyAoKSAgOwogCmV4dGVybiBjaGFyICpzdHJzdHIgIChfX2NvbnN0IGNoYXIgKl9faGF5c3Rh
Y2ssIF9fY29uc3QgY2hhciAqX19uZWVkbGUpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgogCmV4dGVy
biBjaGFyICpzdHJ0b2sgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKCQkJICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgogCgpleHRlcm4gY2hhciAqX19zdHJ0
b2tfciAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19kZWxpbSwKCQkJICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgIHRo
cm93ICgpICA7CgpleHRlcm4gY2hhciAqc3RydG9rX3IgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywK
CQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltLAoJCQkgICAgY2hhciAqKl9f
cmVzdHJpY3QgX19zYXZlX3B0cikgIHRocm93ICgpICA7CgoKIyAyMDMgIi91c3IvaW5jbHVkZS9z
dHJpbmcuaCIgMwoKCgogCmV4dGVybiBzaXplX3Qgc3RybGVuICAoX19jb25zdCBjaGFyICpfX3Mp
ICB0aHJvdyAoKSAgOwoKCgoKCgoKCiAKZXh0ZXJuIGNoYXIgKnN0cmVycm9yICAoaW50IF9fZXJy
bnVtKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3N0cmVycm9yX3IgIChpbnQgX19l
cnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pICB0aHJvdyAoKSAgOwpleHRlcm4g
Y2hhciAqc3RyZXJyb3JfciAgKGludCBfX2Vycm51bSwgY2hhciAqX19idWYsIHNpemVfdCBfX2J1
ZmxlbikgIHRocm93ICgpICA7CgoKIAoKZXh0ZXJuIHZvaWQgX19iemVybyAgKHZvaWQgKiAgX19z
LCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiB2b2lkIGJjb3B5ICAoX19jb25z
dCB2b2lkICogIF9fc3JjLCB2b2lkICogIF9fZGVzdCwgc2l6ZV90IF9fbikgIHRocm93ICgpICA7
CgogCmV4dGVybiB2b2lkIGJ6ZXJvICAodm9pZCAqICBfX3MsIHNpemVfdCBfX24pICB0aHJvdyAo
KSAgOwoKIApleHRlcm4gaW50IGJjbXAgIChfX2NvbnN0IHZvaWQgKiAgX19zMSwgX19jb25zdCB2
b2lkICogIF9fczIsIHNpemVfdCBfX24pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gY2hhciAqaW5k
ZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7CgogCmV4dGVybiBj
aGFyICpyaW5kZXggIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgIHRocm93ICgpICA7Cgog
CgpleHRlcm4gaW50IF9fZmZzICAoaW50IF9faSkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAo
KGNvbnN0KSk7CmV4dGVybiBpbnQgZmZzICAoaW50IF9faSkgIHRocm93ICgpICAgX19hdHRyaWJ1
dGVfXyAoKGNvbnN0KSk7CgogCgoKCgoKCgoKCiAKZXh0ZXJuIGludCBfX3N0cmNhc2VjbXAgIChf
X2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikgIHRocm93ICgpICA7CmV4dGVy
biBpbnQgc3RyY2FzZWNtcCAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3My
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBzdHJuY2FzZWNtcCAgKF9fY29uc3QgY2hhciAq
X19zMSwgX19jb25zdCBjaGFyICpfX3MyLAoJCQkgICAgIHNpemVfdCBfX24pICB0aHJvdyAoKSAg
OwoKCiMgMjc3ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKCgoKIAoKZXh0ZXJuIGNoYXIgKnN0
cnNlcCAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fc3RyaW5ncCwKCQkJICBfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19kZWxpbSkgIHRocm93ICgpICA7CgoKIyAzMTkgIi91c3IvaW5jbHVkZS9zdHJp
bmcuaCIgMwoKCgoKIyAzNDcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwoKCgp9IAoKCiMgNyAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jc3RyaW5nIiAy
IDMKCgojIDk0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L2NzdHJpbmciIDMKCgoKIyAxMDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0y
Ljk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2lu
Y2x1ZGUvZysrLTMvc3RkL3N0cmFpdHMuaCIgMiAzCgoKc3RydWN0IHN0cmluZ19jaGFyX3RyYWl0
cyA8Y2hhcj4gewogIHR5cGVkZWYgY2hhciBjaGFyX3R5cGU7CgogIHN0YXRpYyB2b2lkIGFzc2ln
biAoY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikKICAgIHsgYzEgPSBjMjsgfQog
IHN0YXRpYyBib29sIGVxIChjb25zdCBjaGFyX3R5cGUgJiBjMSwgY29uc3QgY2hhcl90eXBlJiBj
MikKICAgIHsgcmV0dXJuIChjMSA9PSBjMik7IH0KICBzdGF0aWMgYm9vbCBuZSAoY29uc3QgY2hh
cl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBlJiBjMikKICAgIHsgcmV0dXJuIChjMSAhPSBjMik7
IH0KICBzdGF0aWMgYm9vbCBsdCAoY29uc3QgY2hhcl90eXBlJiBjMSwgY29uc3QgY2hhcl90eXBl
JiBjMikKICAgIHsgcmV0dXJuIChjMSA8IGMyKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUgZW9zICgp
IHsgcmV0dXJuIDA7IH0KICBzdGF0aWMgYm9vbCBpc19kZWwoY2hhcl90eXBlIGEpIHsgcmV0dXJu
IChfX2N0eXBlX2JbKGludCkgKCAoIGEgKSApXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQpICAgX0lT
c3BhY2UgKSAgOyB9CgogIHN0YXRpYyBpbnQgY29tcGFyZSAoY29uc3QgY2hhcl90eXBlKiBzMSwg
Y29uc3QgY2hhcl90eXBlKiBzMiwgc2l6ZV90IG4pCiAgICB7IHJldHVybiBtZW1jbXAgKHMxLCBz
Miwgbik7IH0KICBzdGF0aWMgc2l6ZV90IGxlbmd0aCAoY29uc3QgY2hhcl90eXBlKiBzKQogICAg
eyByZXR1cm4gc3RybGVuIChzKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUqIGNvcHkgKGNoYXJfdHlw
ZSogczEsIGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgeyByZXR1cm4gKGNoYXJf
dHlwZSopIG1lbWNweSAoczEsIHMyLCBuKTsgfQogIHN0YXRpYyBjaGFyX3R5cGUqIG1vdmUgKGNo
YXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlwZSogczIsIHNpemVfdCBuKQogICAgeyByZXR1cm4g
KGNoYXJfdHlwZSopIG1lbW1vdmUgKHMxLCBzMiwgbik7IH0KICBzdGF0aWMgY2hhcl90eXBlKiBz
ZXQgKGNoYXJfdHlwZSogczEsIGNvbnN0IGNoYXJfdHlwZSYgYywgc2l6ZV90IG4pCiAgICB7IHJl
dHVybiAoY2hhcl90eXBlKikgbWVtc2V0IChzMSwgYywgbik7IH0KfTsKCiMgMTU5ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9zdHJhaXRzLmgiIDMK
Cn0gIAoKIyAzNiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKyst
My9zdGQvYmFzdHJpbmcuaCIgMiAzCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCiNkZWZpbmUg
X19TR0lfU1RMX0FMTE9DX0gKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX2NvbmZpZy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiNkZWZpbmUgX19TVExfQ09ORklHX0gKCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCgoKIAogCiAKIAogCiAKIAogCiAKIAogCgoKIAoKIAogCiAKIAogCiAKIAoKCgoKCgoKCiMg
MTQ4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9j
b25maWcuaCIgMwoKCgojIDEgIi91c3IvaW5jbHVkZS9fR19jb25maWcuaCIgMSAzCiAKCgoKI2Rl
ZmluZSBfR19jb25maWdfaCAxCgogCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90CiNkZWZpbmUgX19u
ZWVkX3djaGFyX3QKI2RlZmluZSBfX25lZWRfd2ludF90CiNkZWZpbmUgX19uZWVkX05VTEwKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMg
MTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoK
CgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAK
CgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCiN1bmRlZiAJX19uZWVkX3NpemVf
dAoKCgogCgoKCgogCgoKIyAyNjkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0y
Ljk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVm
LmgiIDMKCiN1bmRlZiAJX19uZWVkX3djaGFyX3QKCgoKCgoKCgoKCgojdW5kZWYgX19uZWVkX3dp
bnRfdAoKCiAKCiAKCiMgMzE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45
NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5o
IiAzCgoKCgogCgoKI3VuZGVmIE5VTEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKI3VuZGVm
IAlfX25lZWRfTlVMTAoKCgogCgoKCgoKCgojIDE0ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgi
IDIgMwoKCgoKCgoKCgojZGVmaW5lIF9HX3NpemVfdAlzaXplX3QKI2RlZmluZSBfR19mcG9zX3QJ
X19vZmZfdAojZGVmaW5lIF9HX2Zwb3M2NF90CV9fb2ZmNjRfdAojZGVmaW5lIF9HX3NzaXplX3QJ
X19zc2l6ZV90CiNkZWZpbmUgX0dfb2ZmX3QJX19vZmZfdAojZGVmaW5lIF9HX29mZjY0X3QJX19v
ZmY2NF90CiNkZWZpbmUgCV9HX3BpZF90CV9fcGlkX3QKI2RlZmluZSAJX0dfdWlkX3QJX191aWRf
dAojZGVmaW5lIF9HX3djaGFyX3QJd2NoYXJfdAojZGVmaW5lIF9HX3dpbnRfdAl3aW50X3QKI2Rl
ZmluZSBfR19zdGF0NjQJc3RhdDY0Cgp0eXBlZGVmIGludCBfR19pbnQxNl90IF9fYXR0cmlidXRl
X18gKChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIGludCBfR19pbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCBfR191aW50
MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsKdHlwZWRlZiB1bnNpZ25l
ZCBpbnQgX0dfdWludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7Cgoj
ZGVmaW5lIF9HX0hBVkVfQk9PTCAxCgoKIAojZGVmaW5lIF9HX0hBVkVfQVRFWElUIDEKI2RlZmlu
ZSBfR19IQVZFX1NZU19DREVGUyAxCiNkZWZpbmUgX0dfSEFWRV9TWVNfV0FJVCAxCiNkZWZpbmUg
X0dfTkVFRF9TVERBUkdfSCAxCiNkZWZpbmUgX0dfdmFfbGlzdCBfX2dudWNfdmFfbGlzdAoKI2Rl
ZmluZSBfR19IQVZFX1BSSU5URl9GUCAxCiNkZWZpbmUgX0dfSEFWRV9NTUFQIDEKI2RlZmluZSBf
R19IQVZFX0xPTkdfRE9VQkxFX0lPIDEKI2RlZmluZSBfR19IQVZFX0lPX0ZJTEVfT1BFTiAxCiNk
ZWZpbmUgX0dfSEFWRV9JT19HRVRMSU5FX0lORk8gMQoKI2RlZmluZSBfR19JT19JT19GSUxFX1ZF
UlNJT04gMHgyMDAwMQoKI2RlZmluZSBfR19PUEVONjQJX19vcGVuNjQKI2RlZmluZSBfR19MU0VF
SzY0CV9fbHNlZWs2NAojZGVmaW5lIF9HX0ZTVEFUNjQoZmQsYnVmKSBfX2Z4c3RhdDY0IChfU1RB
VF9WRVIsIGZkLCBidWYpCgogCiNkZWZpbmUgX0dfSEFWRV9TVF9CTEtTSVpFIGRlZmluZWQgKF9T
VEFUQlVGX1NUX0JMS1NJWkUpCgojZGVmaW5lIF9HX0JVRlNJWiA4MTkyCgogCiNkZWZpbmUgX0df
TkFNRVNfSEFWRV9VTkRFUlNDT1JFIDAKI2RlZmluZSBfR19WVEFCTEVfTEFCRUxfSEFTX0xFTkdU
SCAxCiNkZWZpbmUgX0dfVVNJTkdfVEhVTktTCTEKI2RlZmluZSBfR19WVEFCTEVfTEFCRUxfUFJF
RklYICJfX3Z0XyIKI2RlZmluZSBfR19WVEFCTEVfTEFCRUxfUFJFRklYX0lEIF9fdnRfCgoKCiNk
ZWZpbmUgX0dfQVJHUyhBUkdMSVNUKSBBUkdMSVNUCgoKCgoKIyAxNTEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2NvbmZpZy5oIiAyIDMKCiNkZWZp
bmUgX19TVExfSEFTX1dDSEFSX1QKCgoKCgojZGVmaW5lIF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BF
Q0lBTElaQVRJT04KI2RlZmluZSBfX1NUTF9GVU5DVElPTl9UTVBMX1BBUlRJQUxfT1JERVIKI2Rl
ZmluZSBfX1NUTF9NRU1CRVJfVEVNUExBVEVTCiNkZWZpbmUgX19TVExfTUVNQkVSX1RFTVBMQVRF
X0NMQVNTRVMKI2RlZmluZSBfX1NUTF9FWFBMSUNJVF9GVU5DVElPTl9UTVBMX0FSR1MKI2RlZmlu
ZSBfX1NUTF9IQVNfTkFNRVNQQUNFUwojZGVmaW5lIF9fU1RMX05PX05BTUVTUEFDRVMKI2RlZmlu
ZSBfX1NHSV9TVExfVVNFX0FVVE9fUFRSX0NPTlZFUlNJT05TCiNkZWZpbmUgX19TVExfVVNFX05B
TUVTUEFDRVMKCgogICAgICAKCgojZGVmaW5lIF9fU1RMX1BUSFJFQURTCgoKCgoKCgojZGVmaW5l
IF9fU1RMX1VTRV9FWENFUFRJT05TCgoKI2RlZmluZSBfX1NUTF9MT05HX0xPTkcKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojIDIzNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgojIDI0OCAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfY29uZmlnLmgiIDMKCgoKCgoKCgoKCgoK
CgoKI2RlZmluZSBfX1NUTF9URU1QTEFURQoKCgoKCgoKI2RlZmluZSBfX1NUTF9OVUxMX1RNUExf
QVJHUyA8PgoKCgoKCgojZGVmaW5lIF9fU1RMX1RFTVBMQVRFX05VTEwgdGVtcGxhdGU8PgoKCgoK
IAogCiAKIAoKCgoKCgoKI2RlZmluZSBfX1NUTF9VU0VfU1REX0FMTE9DQVRPUlMKCgoKCiNkZWZp
bmUgX19TVExfREVGQVVMVF9BTExPQ0FUT1IoVCkgYWxsb2NhdG9yPFQ+CgoKCgoKIAogCiMgMzE2
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2
ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9jb25m
aWcuaCIgMwoKI2RlZmluZSBfX1NURAojZGVmaW5lIF9fU1RMX0JFR0lOX05BTUVTUEFDRQojZGVm
aW5lIF9fU1RMX0VORF9OQU1FU1BBQ0UKCiNkZWZpbmUgX19TVExfQkVHSU5fUkVMT1BTX05BTUVT
UEFDRQojZGVmaW5lIF9fU1RMX0VORF9SRUxPUFNfTkFNRVNQQUNFCiNkZWZpbmUgX19TVERfUkVM
T1BTCiN1bmRlZiAgX19TVExfVVNFX05BTUVTUEFDRVMKCgoKI2RlZmluZSBfX1NUTF9UUlkgdHJ5
CiNkZWZpbmUgX19TVExfQ0FUQ0hfQUxMIGNhdGNoKC4uLikKI2RlZmluZSBfX1NUTF9USFJPVyh4
KSB0aHJvdyB4CiNkZWZpbmUgX19TVExfUkVUSFJPVyB0aHJvdwojZGVmaW5lIF9fU1RMX05PVEhS
T1cgdGhyb3coKQojZGVmaW5lIF9fU1RMX1VOV0lORChhY3Rpb24pIGNhdGNoKC4uLikgeyBhY3Rp
b247IHRocm93OyB9CgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19zdGxfYXNzZXJ0KGV4cHIpCgoK
CgogCiAKIAojIDE4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL2FsbG9jLmgiIDIgMwoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDEgMwogCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZp
bmUgX19TR0lfU1RMX0lOVEVSTkFMX0FMTE9DX0gKCgoKCgoKI2RlZmluZSBfX1BSSVZBVEUgcHJp
dmF0ZQoKCgoKCgoKIAogCiAKIAogCiAKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9zdHJlYW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgojZGVmaW5lIF9JT1NUUkVBTV9ICgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX1NUUkVBTUJVRl9ICgojcHJh
Z21hIGludGVyZmFjZQoKCiAgIAoKI2RlZmluZSBfSU9fTkVXX1NUUkVBTVMgCgpleHRlcm4gIkMi
IHsKIyAxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojZGVmaW5lIF9JT19TVERJT19ICgoKI2RlZmluZSBfSU9fcG9zX3QgX0dfZnBvc190IAoj
ZGVmaW5lIF9JT19mcG9zX3QgX0dfZnBvc190CiNkZWZpbmUgX0lPX2Zwb3M2NF90IF9HX2Zwb3M2
NF90CiNkZWZpbmUgX0lPX3NpemVfdCBfR19zaXplX3QKI2RlZmluZSBfSU9fc3NpemVfdCBfR19z
c2l6ZV90CiNkZWZpbmUgX0lPX29mZl90IF9HX29mZl90CiNkZWZpbmUgX0lPX29mZjY0X3QgX0df
b2ZmNjRfdAojZGVmaW5lIF9JT19waWRfdCBfR19waWRfdAojZGVmaW5lIF9JT191aWRfdCBfR191
aWRfdAojZGVmaW5lIF9JT19IQVZFX1NZU19XQUlUIF9HX0hBVkVfU1lTX1dBSVQKI2RlZmluZSBf
SU9fSEFWRV9TVF9CTEtTSVpFIF9HX0hBVkVfU1RfQkxLU0laRQojZGVmaW5lIF9JT19CVUZTSVog
X0dfQlVGU0laCiNkZWZpbmUgX0lPX3ZhX2xpc3QgX0dfdmFfbGlzdAoKCiAKI2RlZmluZSBfX25l
ZWRfX192YV9saXN0CiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIg
MSAzCiAKCgoKCgoKCgoKCiN1bmRlZiBfX25lZWRfX192YV9saXN0CgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCiNkZWZpbmUgX19HTlVDX1ZB
X0xJU1QKCgoKdHlwZWRlZiB2b2lkICpfX2dudWNfdmFfbGlzdDsKCgoKIAoKIyAxMjIgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkYXJnLmgiIDMKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDIwOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRhcmcuaCIgMwoKCgoKIyA0OCAi
L3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwoKCiN1bmRlZiBfSU9fdmFfbGlzdAojZGVmaW5lIF9J
T192YV9saXN0IF9fZ251Y192YV9saXN0CgoKCiMgNjcgIi91c3IvaW5jbHVkZS9saWJpby5oIiAz
CgoKIAoKI2RlZmluZSBfUEFSQU1TKHByb3RvcykgX19QKHByb3RvcykKCgoKCgoKCiNkZWZpbmUg
X0lPX1VOSUZJRURfSlVNUFRBQkxFUyAxCgoKCgoKI2RlZmluZSBFT0YgKC0xKQoKIyA5OCAiL3Vz
ci9pbmNsdWRlL2xpYmlvLmgiIDMKCgojZGVmaW5lIF9JT1NfSU5QVVQJMQojZGVmaW5lIF9JT1Nf
T1VUUFVUCTIKI2RlZmluZSBfSU9TX0FURU5ECTQKI2RlZmluZSBfSU9TX0FQUEVORAk4CiNkZWZp
bmUgX0lPU19UUlVOQwkxNgojZGVmaW5lIF9JT1NfTk9DUkVBVEUJMzIKI2RlZmluZSBfSU9TX05P
UkVQTEFDRQk2NAojZGVmaW5lIF9JT1NfQklOCTEyOAoKIAoKCgoKCiNkZWZpbmUgX0lPX01BR0lD
IDB4RkJBRDAwMDAgCiNkZWZpbmUgX09MRF9TVERJT19NQUdJQyAweEZBQkMwMDAwIAojZGVmaW5l
IF9JT19NQUdJQ19NQVNLIDB4RkZGRjAwMDAKI2RlZmluZSBfSU9fVVNFUl9CVUYgMSAKI2RlZmlu
ZSBfSU9fVU5CVUZGRVJFRCAyCiNkZWZpbmUgX0lPX05PX1JFQURTIDQgCiNkZWZpbmUgX0lPX05P
X1dSSVRFUyA4IAojZGVmaW5lIF9JT19FT0ZfU0VFTiAweDEwCiNkZWZpbmUgX0lPX0VSUl9TRUVO
IDB4MjAKI2RlZmluZSBfSU9fREVMRVRFX0RPTlRfQ0xPU0UgMHg0MCAKI2RlZmluZSBfSU9fTElO
S0VEIDB4ODAgCiNkZWZpbmUgX0lPX0lOX0JBQ0tVUCAweDEwMAojZGVmaW5lIF9JT19MSU5FX0JV
RiAweDIwMAojZGVmaW5lIF9JT19USUVEX1BVVF9HRVQgMHg0MDAgCiNkZWZpbmUgX0lPX0NVUlJF
TlRMWV9QVVRUSU5HIDB4ODAwCiNkZWZpbmUgX0lPX0lTX0FQUEVORElORyAweDEwMDAKI2RlZmlu
ZSBfSU9fSVNfRklMRUJVRiAweDIwMDAKI2RlZmluZSBfSU9fQkFEX1NFRU4gMHg0MDAwCgogCiNk
ZWZpbmUgX0lPX1NLSVBXUyAwMQojZGVmaW5lIF9JT19MRUZUIDAyCiNkZWZpbmUgX0lPX1JJR0hU
IDA0CiNkZWZpbmUgX0lPX0lOVEVSTkFMIDAxMAojZGVmaW5lIF9JT19ERUMgMDIwCiNkZWZpbmUg
X0lPX09DVCAwNDAKI2RlZmluZSBfSU9fSEVYIDAxMDAKI2RlZmluZSBfSU9fU0hPV0JBU0UgMDIw
MAojZGVmaW5lIF9JT19TSE9XUE9JTlQgMDQwMAojZGVmaW5lIF9JT19VUFBFUkNBU0UgMDEwMDAK
I2RlZmluZSBfSU9fU0hPV1BPUyAwMjAwMAojZGVmaW5lIF9JT19TQ0lFTlRJRklDIDA0MDAwCiNk
ZWZpbmUgX0lPX0ZJWEVEIDAxMDAwMAojZGVmaW5lIF9JT19VTklUQlVGIDAyMDAwMAojZGVmaW5l
IF9JT19TVERJTyAwNDAwMDAKI2RlZmluZSBfSU9fRE9OVF9DTE9TRSAwMTAwMDAwCiNkZWZpbmUg
X0lPX0JPT0xBTFBIQSAwMjAwMDAwCgoKc3RydWN0IF9JT19qdW1wX3Q7ICBzdHJ1Y3QgX0lPX0ZJ
TEU7CgogCgoKCgoKCgp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKIAoKc3RydWN0IF9JT19t
YXJrZXIgewogIHN0cnVjdCBfSU9fbWFya2VyICpfbmV4dDsKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9z
YnVmOwogICAKCiAgIAogIGludCBfcG9zOwojIDE4NiAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMK
Cn07CgpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CQkgCiNkZWZpbmUgX0lPX2ZpbGVf
ZmxhZ3MgX2ZsYWdzCgogICAKICAgCiAgY2hhciogX0lPX3JlYWRfcHRyOwkgCiAgY2hhciogX0lP
X3JlYWRfZW5kOwkgCiAgY2hhciogX0lPX3JlYWRfYmFzZTsJIAogIGNoYXIqIF9JT193cml0ZV9i
YXNlOwkgCiAgY2hhciogX0lPX3dyaXRlX3B0cjsJIAogIGNoYXIqIF9JT193cml0ZV9lbmQ7CSAK
ICBjaGFyKiBfSU9fYnVmX2Jhc2U7CSAKICBjaGFyKiBfSU9fYnVmX2VuZDsJIAogICAKICBjaGFy
ICpfSU9fc2F2ZV9iYXNlOyAgCiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOyAgIAogIGNoYXIgKl9J
T19zYXZlX2VuZDsgIAoKICBzdHJ1Y3QgX0lPX21hcmtlciAqX21hcmtlcnM7CgogIHN0cnVjdCBf
SU9fRklMRSAqX2NoYWluOwoKICBpbnQgX2ZpbGVubzsKICBpbnQgX2Jsa3NpemU7CiAgX19vZmZf
dCAgIF9vbGRfb2Zmc2V0OyAgCgojZGVmaW5lIF9fSEFWRV9DT0xVTU4gCiAgIAogIHVuc2lnbmVk
IHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zmc2V0OwogIGNoYXIg
X3Nob3J0YnVmWzFdOwoKICAgCgogIF9JT19sb2NrX3QgKl9sb2NrOwoKCgoKCgoKCiAgX19vZmY2
NF90ICAgX29mZnNldDsKICAgCiAgaW50IF91bnVzZWQyWzE2XTsKCn07CgoKCgoKc3RydWN0IF9J
T19GSUxFX3BsdXM7CmV4dGVybiBzdHJ1Y3QgX0lPX0ZJTEVfcGx1cyBfSU9fMl8xX3N0ZGluXzsK
ZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3Rkb3V0XzsKZXh0ZXJuIHN0cnVj
dCBfSU9fRklMRV9wbHVzIF9JT18yXzFfc3RkZXJyXzsKCiNkZWZpbmUgX0lPX3N0ZGluICgoX0lP
X0ZJTEUqKSgmX0lPXzJfMV9zdGRpbl8pKQojZGVmaW5lIF9JT19zdGRvdXQgKChfSU9fRklMRSop
KCZfSU9fMl8xX3N0ZG91dF8pKQojZGVmaW5lIF9JT19zdGRlcnIgKChfSU9fRklMRSopKCZfSU9f
Ml8xX3N0ZGVycl8pKQoKCgoKCgoKIAoKIAoKdHlwZWRlZiBfX3NzaXplX3QgX19pb19yZWFkX2Zu
ICAodm9pZCAqICBfX2Nvb2tpZSwgY2hhciAqX19idWYsCgkJCQkgICAgICAgc2l6ZV90IF9fbmJ5
dGVzKSAgOwoKIAoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9fd3JpdGVfZm4gICh2b2lkICog
IF9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAoJCQkJICAgICAgc2l6ZV90IF9fbikgIDsK
CiAKCgoKCgp0eXBlZGVmIGludCBfX2lvX3NlZWtfZm4gICh2b2lkICogIF9fY29va2llLCBfX29m
Zl90ICAgX19wb3MsIGludCBfX3cpICA7CgogCnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gICh2
b2lkICogIF9fY29va2llKSAgOwoKCiMgMzExICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwoKCgoK
ZXh0ZXJuICJDIiB7CgoKZXh0ZXJuIGludCBfX3VuZGVyZmxvdyAgKF9JT19GSUxFICopICB0aHJv
dyAoKSAgOwpleHRlcm4gaW50IF9fdWZsb3cgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBfX292ZXJmbG93ICAoX0lPX0ZJTEUgKiwgaW50KSAgdGhyb3cgKCkgIDsKCiNkZWZp
bmUgX0lPX2dldGNfdW5sb2NrZWQoX2ZwKSAoKF9mcCktPl9JT19yZWFkX3B0ciA+PSAoX2ZwKS0+
X0lPX3JlYWRfZW5kID8gX191ZmxvdyAoX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAoX2ZwKS0+
X0lPX3JlYWRfcHRyKyspCgoKI2RlZmluZSBfSU9fcGVla2NfdW5sb2NrZWQoX2ZwKSAoKF9mcCkt
Pl9JT19yZWFkX3B0ciA+PSAoX2ZwKS0+X0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93IChfZnAp
ID09IEVPRiA/IEVPRiA6ICoodW5zaWduZWQgY2hhciAqKSAoX2ZwKS0+X0lPX3JlYWRfcHRyKQoK
CgojZGVmaW5lIF9JT19wdXRjX3VubG9ja2VkKF9jaCwgX2ZwKSAoKChfZnApLT5fSU9fd3JpdGVf
cHRyID49IChfZnApLT5fSU9fd3JpdGVfZW5kKSA/IF9fb3ZlcmZsb3cgKF9mcCwgKHVuc2lnbmVk
IGNoYXIpIChfY2gpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfZnApLT5fSU9fd3JpdGVfcHRyKysg
PSAoX2NoKSkpCgoKCgojZGVmaW5lIF9JT19mZW9mX3VubG9ja2VkKF9fZnApICgoKF9fZnApLT5f
ZmxhZ3MgJiBfSU9fRU9GX1NFRU4pICE9IDApCiNkZWZpbmUgX0lPX2ZlcnJvcl91bmxvY2tlZChf
X2ZwKSAoKChfX2ZwKS0+X2ZsYWdzICYgX0lPX0VSUl9TRUVOKSAhPSAwKQoKZXh0ZXJuIGludCBf
SU9fZ2V0YyAgKF9JT19GSUxFICpfX2ZwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fcHV0
YyAgKGludCBfX2MsIF9JT19GSUxFICpfX2ZwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9f
ZmVvZiAgKF9JT19GSUxFICpfX2ZwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBfSU9fZmVycm9y
ICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9j
a2VkICAoX0lPX0ZJTEUgKl9fZnApICB0aHJvdyAoKSAgOwoKIAojZGVmaW5lIF9JT19QRU5ESU5H
X09VVFBVVF9DT1VOVChfZnApCSgoX2ZwKS0+X0lPX3dyaXRlX3B0ciAtIChfZnApLT5fSU9fd3Jp
dGVfYmFzZSkKCgpleHRlcm4gdm9pZCBfSU9fZmxvY2tmaWxlICAoX0lPX0ZJTEUgKikgIHRocm93
ICgpICA7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmlsZSAgKF9JT19GSUxFICopICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IF9JT19mdHJ5bG9ja2ZpbGUgIChfSU9fRklMRSAqKSAgdGhyb3cgKCkg
IDsKCgoKCiNkZWZpbmUgX0lPX3BlZWtjKF9mcCkgX0lPX3BlZWtjX3VubG9ja2VkIChfZnApCiNk
ZWZpbmUgX0lPX2Zsb2NrZmlsZShfZnApIAojZGVmaW5lIF9JT19mdW5sb2NrZmlsZShfZnApIAoj
ZGVmaW5lIF9JT19mdHJ5bG9ja2ZpbGUoX2ZwKSAKI2RlZmluZSBfSU9fY2xlYW51cF9yZWdpb25f
c3RhcnQoX2ZjdCwgX2ZwKSAKI2RlZmluZSBfSU9fY2xlYW51cF9yZWdpb25fZW5kKF9Eb2l0KSAK
CgpleHRlcm4gaW50IF9JT192ZnNjYW5mICAoX0lPX0ZJTEUgKiBfX3Jlc3RyaWN0LCBjb25zdCBj
aGFyICogX19yZXN0cmljdCwKCQkJICAgICBfX2dudWNfdmFfbGlzdCAsIGludCAqX19yZXN0cmlj
dCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgX0lPX3ZmcHJpbnRmICAoX0lPX0ZJTEUgKl9fcmVz
dHJpY3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QsCgkJCSAgICAgIF9fZ251Y192YV9saXN0ICkg
IHRocm93ICgpICA7CmV4dGVybiBfX3NzaXplX3QgICBfSU9fcGFkbiAgKF9JT19GSUxFICosIGlu
dCwgX19zc2l6ZV90ICApICB0aHJvdyAoKSAgOwpleHRlcm4gc2l6ZV90ICAgX0lPX3NnZXRuICAo
X0lPX0ZJTEUgKiwgdm9pZCAqLCBzaXplX3QgICkgIHRocm93ICgpICA7CgpleHRlcm4gX19vZmY2
NF90ICAgX0lPX3NlZWtvZmYgIChfSU9fRklMRSAqLCBfX29mZjY0X3QgICwgaW50LCBpbnQpICB0
aHJvdyAoKSAgOwpleHRlcm4gX19vZmY2NF90ICAgX0lPX3NlZWtwb3MgIChfSU9fRklMRSAqLCBf
X29mZjY0X3QgICwgaW50KSAgdGhyb3cgKCkgIDsKCmV4dGVybiB2b2lkIF9JT19mcmVlX2JhY2t1
cF9hcmVhICAoX0lPX0ZJTEUgKikgIHRocm93ICgpICA7CgoKfQoKCgojIDM2ICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgt
Z251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAyIDMKCn0K
IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMKIAoKCgoK
CgoKI2RlZmluZSBfU1REQVJHX0gKI2RlZmluZSBfQU5TSV9TVERBUkdfSF8KCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiAK
CgoKIAoKCgoKCgoKCgojZGVmaW5lIF9fdmFfcm91bmRlZF9zaXplKFRZUEUpICgoKHNpemVvZiAo
VFlQRSkgKyBzaXplb2YgKGludCkgLSAxKSAvIHNpemVvZiAoaW50KSkgKiBzaXplb2YgKGludCkp
CgoKCiNkZWZpbmUgdmFfc3RhcnQoQVAsIExBU1RBUkcpIChBUCA9ICgoX19nbnVjX3ZhX2xpc3Qp
IF9fYnVpbHRpbl9uZXh0X2FyZyAoTEFTVEFSRykpKQoKCgp2b2lkIHZhX2VuZCAoX19nbnVjX3Zh
X2xpc3QpOwkJIAojZGVmaW5lIHZhX2VuZChBUCkJKCh2b2lkKTApCgogCgoKCiAKI2RlZmluZSB2
YV9hcmcoQVAsIFRZUEUpCShBUCA9IChfX2dudWNfdmFfbGlzdCkgKChjaGFyICopIChBUCkgKyBf
X3ZhX3JvdW5kZWRfc2l6ZSAoVFlQRSkpLAkqKChUWVBFICopICh2b2lkICopICgoY2hhciAqKSAo
QVApIC0gX192YV9yb3VuZGVkX3NpemUgKFRZUEUpKSkpCgoKCgoKCgoKCgoKIAojZGVmaW5lIF9f
dmFfY29weShkZXN0LCBzcmMpIChkZXN0KSA9IChzcmMpCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgog
CiAKCgoKCgoKCgoKCgoKCiMgMTc1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGFy
Zy5oIiAzCgoKIAoKCgoKIAoKIAoKIAoKdHlwZWRlZiBfX2dudWNfdmFfbGlzdCB2YV9saXN0OwoK
CgoKI2RlZmluZSBfVkFfTElTVF8KCgojZGVmaW5lIF9WQV9MSVNUCgoKI2RlZmluZSBfVkFfTElT
VF9ERUZJTkVECgoKI2RlZmluZSBfVkFfTElTVF9UX0gKCgoKCgoKCgoKCiMgNDAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RyZWFtYnVmLmgiIDIgMwoK
CgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBfSU9fd2NoYXJfdCBfR193Y2hhcl90CgoKCgoKZXh0
ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgIApjbGFzcyBvc3RyZWFtOyBjbGFzcyBzdHJlYW1i
dWY7CgogCgoKCgp0eXBlZGVmIF9fb2ZmNjRfdCAgIHN0cmVhbW9mZjsKdHlwZWRlZiBfX29mZjY0
X3QgICBzdHJlYW1wb3M7CgoKCgp0eXBlZGVmIF9fc3NpemVfdCAgIHN0cmVhbXNpemU7Cgp0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgX19mbXRmbGFnczsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9faW9z
dGF0ZTsKCnN0cnVjdCBfaW9zX2ZpZWxkcwp7ICAKICAgIHN0cmVhbWJ1ZiAqX3N0cmJ1ZjsKICAg
IG9zdHJlYW0qIF90aWU7CiAgICBpbnQgX3dpZHRoOwogICAgX19mbXRmbGFncyBfZmxhZ3M7CiAg
ICB3Y2hhcl90ICAgX2ZpbGw7CiAgICBfX2lvc3RhdGUgX3N0YXRlOwogICAgX19pb3N0YXRlIF9l
eGNlcHRpb25zOwogICAgaW50IF9wcmVjaXNpb247CgogICAgdm9pZCAqX2FycmF5czsgIAp9OwoK
I2RlZmluZSBfSU9TX0dPT0QJMAojZGVmaW5lIF9JT1NfRU9GCTEKI2RlZmluZSBfSU9TX0ZBSUwJ
MgojZGVmaW5lIF9JT1NfQkFECTQKCiNkZWZpbmUgX0lPX0lOUFVUCTEKI2RlZmluZSBfSU9fT1VU
UFVUCTIKI2RlZmluZSBfSU9fQVRFTkQJNAojZGVmaW5lIF9JT19BUFBFTkQJOAojZGVmaW5lIF9J
T19UUlVOQwkxNgojZGVmaW5lIF9JT19OT0NSRUFURQkzMgojZGVmaW5lIF9JT19OT1JFUExBQ0UJ
NjQKI2RlZmluZSBfSU9fQklOCQkxMjgKCiMgMTI0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAzCgoKY2xhc3MgaW9zIDogcHVibGlj
IF9pb3NfZmllbGRzIHsKICBpb3MmIG9wZXJhdG9yPShpb3MmKTsgICAKICBpb3MgKGNvbnN0IGlv
cyYpOyAgCiAgcHVibGljOgogICAgdHlwZWRlZiBfX2ZtdGZsYWdzIGZtdGZsYWdzOwogICAgdHlw
ZWRlZiBpbnQgaW9zdGF0ZTsKICAgIHR5cGVkZWYgaW50IG9wZW5tb2RlOwogICAgdHlwZWRlZiBf
X3NzaXplX3QgICBzdHJlYW1zaXplOwogICAgZW51bSBpb19zdGF0ZSB7Cglnb29kYml0ID0gMCAs
Cgllb2ZiaXQgPSAxICwKCWZhaWxiaXQgPSAyICwKCWJhZGJpdCA9IDQgIH07CiAgICBlbnVtIG9w
ZW5fbW9kZSB7CglpbiA9IDEgLAoJb3V0ID0gMiAsCglhdGUgPSA0ICwKCWFwcCA9IDggLAoJdHJ1
bmMgPSAxNiAsCglub2NyZWF0ZSA9IDMyICwKCW5vcmVwbGFjZSA9IDY0ICwKCWJpbiA9IDEyOCAs
ICAKCWJpbmFyeSA9IDEyOCAgfTsKICAgIGVudW0gc2Vla19kaXIgeyBiZWcsIGN1ciwgZW5kfTsK
ICAgIHR5cGVkZWYgZW51bSBzZWVrX2RpciBzZWVrZGlyOwogICAgIAogICAgZW51bSB7IHNraXB3
cz0gMDEgLAoJICAgbGVmdD0gMDIgLCByaWdodD0gMDQgLCBpbnRlcm5hbD0gMDEwICwKCSAgIGRl
Yz0gMDIwICwgb2N0PSAwNDAgLCBoZXg9IDAxMDAgLAoJICAgc2hvd2Jhc2U9IDAyMDAgLCBzaG93
cG9pbnQ9IDA0MDAgLAoJICAgdXBwZXJjYXNlPSAwMTAwMCAsIHNob3dwb3M9IDAyMDAwICwKCSAg
IHNjaWVudGlmaWM9IDA0MDAwICwgZml4ZWQ9IDAxMDAwMCAsCgkgICB1bml0YnVmPSAwMjAwMDAg
LCBzdGRpbz0gMDQwMDAwIAoKCgoJICAgfTsKICAgIGVudW0geyAgCgliYXNlZmllbGQ9ZGVjK29j
dCtoZXgsCglmbG9hdGZpZWxkID0gc2NpZW50aWZpYytmaXhlZCwKCWFkanVzdGZpZWxkID0gbGVm
dCtyaWdodCtpbnRlcm5hbAogICAgfTsKCiMgMTc3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cmVhbWJ1Zi5oIiAzCgoKICAgIG9zdHJlYW0qIHRpZSgp
IGNvbnN0IHsgcmV0dXJuIF90aWU7IH0KICAgIG9zdHJlYW0qIHRpZShvc3RyZWFtKiB2YWwpIHsg
b3N0cmVhbSogc2F2ZT1fdGllOyBfdGllPXZhbDsgcmV0dXJuIHNhdmU7IH0KCiAgICAgCiAgICB3
Y2hhcl90ICAgZmlsbCgpIGNvbnN0IHsgcmV0dXJuIF9maWxsOyB9CiAgICB3Y2hhcl90ICAgZmls
bCh3Y2hhcl90ICAgbmV3ZikKCXt3Y2hhcl90ICAgb2xkZiA9IF9maWxsOyBfZmlsbCA9IG5ld2Y7
IHJldHVybiBvbGRmO30KICAgIGZtdGZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1cm4gX2ZsYWdz
OyB9CiAgICBmbXRmbGFncyBmbGFncyhmbXRmbGFncyBuZXdfdmFsKSB7CglmbXRmbGFncyBvbGRf
dmFsID0gX2ZsYWdzOyBfZmxhZ3MgPSBuZXdfdmFsOyByZXR1cm4gb2xkX3ZhbDsgfQogICAgaW50
IHByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIF9wcmVjaXNpb247IH0KICAgIGludCBwcmVjaXNp
b24oaW50IG5ld3ApIHsKCXVuc2lnbmVkIHNob3J0IG9sZHAgPSBfcHJlY2lzaW9uOyBfcHJlY2lz
aW9uID0gKHVuc2lnbmVkIHNob3J0KW5ld3A7CglyZXR1cm4gb2xkcDsgfQogICAgZm10ZmxhZ3Mg
c2V0ZihmbXRmbGFncyB2YWwpIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3Mg
fD0gdmFsOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10ZmxhZ3Mgc2V0ZihmbXRmbGFncyB2YWws
IGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7CglfZmxhZ3MgPSAo
X2ZsYWdzICYgfm1hc2spIHwgKHZhbCAmIG1hc2spOyByZXR1cm4gb2xkYml0czsgfQogICAgZm10
ZmxhZ3MgdW5zZXRmKGZtdGZsYWdzIG1hc2spIHsKCWZtdGZsYWdzIG9sZGJpdHMgPSBfZmxhZ3M7
CglfZmxhZ3MgJj0gfm1hc2s7IHJldHVybiBvbGRiaXRzOyB9CiAgICBpbnQgd2lkdGgoKSBjb25z
dCB7IHJldHVybiBfd2lkdGg7IH0KICAgIGludCB3aWR0aChpbnQgdmFsKSB7IGludCBzYXZlID0g
X3dpZHRoOyBfd2lkdGggPSB2YWw7IHJldHVybiBzYXZlOyB9CgoKCgogICAgdm9pZCBfdGhyb3df
ZmFpbHVyZSgpIGNvbnN0IHsgfQoKICAgIHZvaWQgY2xlYXIoaW9zdGF0ZSBzdGF0ZSA9IDApIHsK
CV9zdGF0ZSA9IF9zdHJidWYgPyBzdGF0ZSA6IHN0YXRlfGJhZGJpdDsKCWlmIChfc3RhdGUgJiBf
ZXhjZXB0aW9ucykgX3Rocm93X2ZhaWx1cmUoKTsgfQogICAgdm9pZCBzZXQoaW9zdGF0ZSBmbGFn
KSB7IF9zdGF0ZSB8PSBmbGFnOwoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFp
bHVyZSgpOyB9CiAgICB2b2lkIHNldHN0YXRlKGlvc3RhdGUgZmxhZykgeyBfc3RhdGUgfD0gZmxh
ZzsgIAoJaWYgKF9zdGF0ZSAmIF9leGNlcHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CiAgICBp
bnQgZ29vZCgpIGNvbnN0IHsgcmV0dXJuIF9zdGF0ZSA9PSAwOyB9CiAgICBpbnQgZW9mKCkgY29u
c3QgeyByZXR1cm4gX3N0YXRlICYgaW9zOjplb2ZiaXQ7IH0KICAgIGludCBmYWlsKCkgY29uc3Qg
eyByZXR1cm4gX3N0YXRlICYgKGlvczo6YmFkYml0fGlvczo6ZmFpbGJpdCk7IH0KICAgIGludCBi
YWQoKSBjb25zdCB7IHJldHVybiBfc3RhdGUgJiBpb3M6OmJhZGJpdDsgfQogICAgaW9zdGF0ZSBy
ZHN0YXRlKCkgY29uc3QgeyByZXR1cm4gX3N0YXRlOyB9CiAgICBvcGVyYXRvciB2b2lkKigpIGNv
bnN0IHsgcmV0dXJuIGZhaWwoKSA/ICh2b2lkKikwIDogKHZvaWQqKSgtMSk7IH0KICAgIGludCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBmYWlsKCk7IH0KICAgIGlvc3RhdGUgZXhjZXB0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIF9leGNlcHRpb25zOyB9CiAgICB2b2lkIGV4Y2VwdGlvbnMoaW9z
dGF0ZSBlbmFibGUpIHsKCV9leGNlcHRpb25zID0gZW5hYmxlOwoJaWYgKF9zdGF0ZSAmIF9leGNl
cHRpb25zKSBfdGhyb3dfZmFpbHVyZSgpOyB9CgogICAgc3RyZWFtYnVmKiByZGJ1ZigpIGNvbnN0
IHsgcmV0dXJuIF9zdHJidWY7IH0KICAgIHN0cmVhbWJ1ZiogcmRidWYoc3RyZWFtYnVmICpfcykg
ewogICAgICBzdHJlYW1idWYgKl9vbGQgPSBfc3RyYnVmOyBfc3RyYnVmID0gX3M7IGNsZWFyICgp
OyByZXR1cm4gX29sZDsgfQoKICAgIHN0YXRpYyBpbnQgc3luY193aXRoX3N0ZGlvKGludCBvbik7
CiAgICBzdGF0aWMgdm9pZCBzeW5jX3dpdGhfc3RkaW8oKSB7IHN5bmNfd2l0aF9zdGRpbygxKTsg
fQogICAgc3RhdGljIGZtdGZsYWdzIGJpdGFsbG9jKCk7CiAgICBzdGF0aWMgaW50IHhhbGxvYygp
OwogICAgdm9pZComIHB3b3JkKGludCk7CiAgICB2b2lkKiBwd29yZChpbnQpIGNvbnN0OwogICAg
bG9uZyYgaXdvcmQoaW50KTsKICAgIGxvbmcgaXdvcmQoaW50KSBjb25zdDsKCgoKCgoKCgoKICAg
ICAKICAgIGNsYXNzIEluaXQgewogICAgcHVibGljOgogICAgICBJbml0ICgpIHsgfQogICAgfTsK
CiAgcHJvdGVjdGVkOgogICAgaW5saW5lIGlvcyhzdHJlYW1idWYqIHNiID0gMCwgb3N0cmVhbSog
dGllX3RvID0gMCk7CiAgICBpbmxpbmUgdmlydHVhbCB+aW9zKCk7CiAgICBpbmxpbmUgdm9pZCBp
bml0KHN0cmVhbWJ1Ziogc2IsIG9zdHJlYW0qIHRpZSA9IDApOwp9OwoKCgoKdHlwZWRlZiBpb3M6
OnNlZWtfZGlyIF9zZWVrX2RpcjsKCgogCiAKIAogCiAKCiAKIApjbGFzcyBzdHJlYW1tYXJrZXIg
OiBwcml2YXRlIF9JT19tYXJrZXIgewogICAgZnJpZW5kIGNsYXNzIHN0cmVhbWJ1ZjsKICAgIHZv
aWQgc2V0X29mZnNldChpbnQgb2Zmc2V0KSB7IF9wb3MgPSBvZmZzZXQ7IH0KICBwdWJsaWM6CiAg
ICBzdHJlYW1tYXJrZXIoc3RyZWFtYnVmICpzYik7CiAgICB+c3RyZWFtbWFya2VyKCk7CiAgICBp
bnQgc2F2aW5nKCkgeyByZXR1cm4gIDE7IH0KICAgIGludCBkZWx0YShzdHJlYW1tYXJrZXImKTsK
ICAgIGludCBkZWx0YSgpOwp9OwoKc3RydWN0IHN0cmVhbWJ1ZiA6IHB1YmxpYyBfSU9fRklMRSB7
ICAKICAgIGZyaWVuZCBjbGFzcyBpb3M7CiAgICBmcmllbmQgY2xhc3MgaXN0cmVhbTsKICAgIGZy
aWVuZCBjbGFzcyBvc3RyZWFtOwogICAgZnJpZW5kIGNsYXNzIHN0cmVhbW1hcmtlcjsKICAgIGNv
bnN0IHZvaWQgKiZfdnRhYmxlKCkgeyByZXR1cm4gKihjb25zdCB2b2lkKiopKChfSU9fRklMRSop
dGhpcyArIDEpOyB9CiAgcHJvdGVjdGVkOgogICAgc3RhdGljIHN0cmVhbWJ1ZiogX2xpc3RfYWxs
OyAgCiAgICBfSU9fRklMRSomIHhjaGFpbigpIHsgcmV0dXJuIF9jaGFpbjsgfQogICAgdm9pZCBf
dW5fbGluaygpOwogICAgdm9pZCBfbGlua19pbigpOwogICAgY2hhciogZ3B0cigpIGNvbnN0CiAg
ICAgIHsgcmV0dXJuIF9mbGFncyAgJiAweDEwMCAgPyBfSU9fc2F2ZV9iYXNlIDogX0lPX3JlYWRf
cHRyOyB9CiAgICBjaGFyKiBwcHRyKCkgY29uc3QgeyByZXR1cm4gX0lPX3dyaXRlX3B0cjsgfQog
ICAgY2hhciogZWdwdHIoKSBjb25zdAogICAgICB7IHJldHVybiBfZmxhZ3MgICYgMHgxMDAgID8g
X0lPX3NhdmVfZW5kIDogX0lPX3JlYWRfZW5kOyB9CiAgICBjaGFyKiBlcHB0cigpIGNvbnN0IHsg
cmV0dXJuIF9JT193cml0ZV9lbmQ7IH0KICAgIGNoYXIqIHBiYXNlKCkgY29uc3QgeyByZXR1cm4g
X0lPX3dyaXRlX2Jhc2U7IH0KICAgIGNoYXIqIGViYWNrKCkgY29uc3QKICAgICAgeyByZXR1cm4g
X2ZsYWdzICAmIDB4MTAwICA/IF9JT19zYXZlX2Jhc2UgOiBfSU9fcmVhZF9iYXNlO30KICAgIGNo
YXIqIGJhc2UoKSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2Jhc2U7IH0KICAgIGNoYXIqIGVidWYo
KSBjb25zdCB7IHJldHVybiBfSU9fYnVmX2VuZDsgfQogICAgaW50IGJsZW4oKSBjb25zdCB7IHJl
dHVybiBfSU9fYnVmX2VuZCAtIF9JT19idWZfYmFzZTsgfQogICAgdm9pZCB4cHV0X2NoYXIoY2hh
ciBjKSB7ICpfSU9fd3JpdGVfcHRyKysgPSBjOyB9CiAgICBpbnQgeGZsYWdzKCkgeyByZXR1cm4g
X2ZsYWdzIDsgfQogICAgaW50IHhmbGFncyhpbnQgZikge2ludCBmbCA9IF9mbGFncyA7IF9mbGFn
cyAgPSBmOyByZXR1cm4gZmw7fQogICAgdm9pZCB4c2V0ZmxhZ3MoaW50IGYpIHsgX2ZsYWdzICB8
PSBmOyB9CiAgICB2b2lkIHhzZXRmbGFncyhpbnQgZiwgaW50IG1hc2spCiAgICAgIHsgX2ZsYWdz
ICA9IChfZmxhZ3MgICYgfm1hc2spIHwgKGYgJiBtYXNrKTsgfQogICAgdm9pZCBnYnVtcChpbnQg
bikKICAgICAgeyBfZmxhZ3MgICYgMHgxMDAgID8gKF9JT19zYXZlX2Jhc2UrPW4pOihfSU9fcmVh
ZF9wdHIrPW4pO30KICAgIHZvaWQgcGJ1bXAoaW50IG4pIHsgX0lPX3dyaXRlX3B0ciArPSBuOyB9
CiAgICB2b2lkIHNldGIoY2hhciogYiwgY2hhciogZWIsIGludCBhPTApOwogICAgdm9pZCBzZXRw
KGNoYXIqIHAsIGNoYXIqIGVwKQogICAgICB7IF9JT193cml0ZV9iYXNlPV9JT193cml0ZV9wdHI9
cDsgX0lPX3dyaXRlX2VuZD1lcDsgfQogICAgdm9pZCBzZXRnKGNoYXIqIGViLCBjaGFyKiBnLCBj
aGFyICplZykgewogICAgICBpZiAoX2ZsYWdzICAmIDB4MTAwICkgX0lPX2ZyZWVfYmFja3VwX2Fy
ZWEodGhpcyk7IAogICAgICBfSU9fcmVhZF9iYXNlID0gZWI7IF9JT19yZWFkX3B0ciA9IGc7IF9J
T19yZWFkX2VuZCA9IGVnOyB9CiAgICBjaGFyICpzaG9ydGJ1ZigpIHsgcmV0dXJuIF9zaG9ydGJ1
ZjsgfQoKICAgIGludCBpbl9iYWNrdXAoKSB7IHJldHVybiBfZmxhZ3MgJiAweDEwMCA7IH0KICAg
ICAKICAgIGNoYXIgKkdiYXNlKCkgeyByZXR1cm4gaW5fYmFja3VwKCkgPyBfSU9fc2F2ZV9iYXNl
IDogX0lPX3JlYWRfYmFzZTsgfQogICAgIAogICAgY2hhciAqZUdwdHIoKSB7IHJldHVybiBpbl9i
YWNrdXAoKSA/IF9JT19zYXZlX2VuZCA6IF9JT19yZWFkX2VuZDsgfQogICAgIAogICAgY2hhciAq
QmJhc2UoKSB7IHJldHVybiBpbl9iYWNrdXAoKSA/IF9JT19yZWFkX2Jhc2UgOiBfSU9fc2F2ZV9i
YXNlOyB9CiAgICBjaGFyICpCcHRyKCkgeyByZXR1cm4gX0lPX2JhY2t1cF9iYXNlOyB9CiAgICAg
CiAgICBjaGFyICplQnB0cigpIHsgcmV0dXJuIGluX2JhY2t1cCgpID8gX0lPX3JlYWRfZW5kIDog
X0lPX3NhdmVfZW5kOyB9CiAgICBjaGFyICpOYmFzZSgpIHsgcmV0dXJuIF9JT19zYXZlX2Jhc2U7
IH0KICAgIGNoYXIgKmVOcHRyKCkgeyByZXR1cm4gX0lPX3NhdmVfZW5kOyB9CiAgICBpbnQgaGF2
ZV9iYWNrdXAoKSB7IHJldHVybiBfSU9fc2F2ZV9iYXNlICE9IF9fbnVsbCA7IH0KICAgIGludCBo
YXZlX21hcmtlcnMoKSB7IHJldHVybiBfbWFya2VycyAhPSBfX251bGwgOyB9CiAgICB2b2lkIGZy
ZWVfYmFja3VwX2FyZWEoKTsKICAgIHZvaWQgdW5zYXZlX21hcmtlcnMoKTsgIAogICAgaW50IHB1
dF9tb2RlKCkgeyByZXR1cm4gX2ZsYWdzICYgMHg4MDAgOyB9CiAgICBpbnQgc3dpdGNoX3RvX2dl
dF9tb2RlKCk7CiAgICAKICAgIHN0cmVhbWJ1ZihpbnQgZmxhZ3M9MCk7CiAgcHVibGljOgogICAg
c3RhdGljIGludCBmbHVzaF9hbGwoKTsKICAgIHN0YXRpYyB2b2lkIGZsdXNoX2FsbF9saW5lYnVm
ZmVyZWQoKTsgIAogICAgdmlydHVhbCB+c3RyZWFtYnVmKCk7CiAgICB2aXJ0dWFsIGludCBvdmVy
ZmxvdyhpbnQgYyA9ICgtMSkgKTsgIAogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93KCk7ICAKICAg
IHZpcnR1YWwgaW50IHVmbG93KCk7ICAKICAgIHZpcnR1YWwgaW50IHBiYWNrZmFpbChpbnQgYyk7
CiAKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6
ZSBuKTsKICAgIHZpcnR1YWwgc3RyZWFtc2l6ZSB4c2dldG4oY2hhciogcywgc3RyZWFtc2l6ZSBu
KTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGlu
dCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc2Vla3Bvcyhz
dHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6aW58aW9zOjpvdXQpOwoKICAgIHN0cmVhbXBv
cyBwdWJzZWVrb2ZmKHN0cmVhbW9mZiBvLCBfc2Vla19kaXIgZCwgaW50IG1vZGU9aW9zOjppbnxp
b3M6Om91dCkKICAgICAgeyByZXR1cm4gX0lPX3NlZWtvZmYgKHRoaXMsIG8sIGQsIG1vZGUpOyB9
CiAgICBzdHJlYW1wb3MgcHVic2Vla3BvcyhzdHJlYW1wb3MgcG9zLCBpbnQgbW9kZSA9IGlvczo6
aW58aW9zOjpvdXQpCiAgICAgIHsgcmV0dXJuIF9JT19zZWVrcG9zICh0aGlzLCBwb3MsIG1vZGUp
OyB9CiAgICBzdHJlYW1wb3Mgc3NlZWtvZmYoc3RyZWFtb2ZmLCBfc2Vla19kaXIsIGludCBtb2Rl
PWlvczo6aW58aW9zOjpvdXQpOwogICAgc3RyZWFtcG9zIHNzZWVrcG9zKHN0cmVhbXBvcyBwb3Ms
IGludCBtb2RlID0gaW9zOjppbnxpb3M6Om91dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziogc2V0
YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAgdmlydHVhbCBpbnQgc3luYygpOwogICAgdmlydHVh
bCBpbnQgZG9hbGxvY2F0ZSgpOwoKICAgIGludCBzZWVrbWFyayhzdHJlYW1tYXJrZXImIG1hcmss
IGludCBkZWx0YSA9IDApOwogICAgaW50IHNwdXRiYWNrYyhjaGFyIGMpOwogICAgaW50IHN1bmdl
dGMoKTsKICAgIGludCB1bmJ1ZmZlcmVkKCkgeyByZXR1cm4gX2ZsYWdzICYgMiAgPyAxIDogMDsg
fQogICAgaW50IGxpbmVidWZmZXJlZCgpIHsgcmV0dXJuIF9mbGFncyAmIDB4MjAwICA/IDEgOiAw
OyB9CiAgICB2b2lkIHVuYnVmZmVyZWQoaW50IGkpCgl7IGlmIChpKSBfZmxhZ3MgfD0gMiA7IGVs
c2UgX2ZsYWdzICY9IH4yIDsgfQogICAgdm9pZCBsaW5lYnVmZmVyZWQoaW50IGkpCgl7IGlmIChp
KSBfZmxhZ3MgfD0gMHgyMDAgOyBlbHNlIF9mbGFncyAmPSB+MHgyMDAgOyB9CiAgICBpbnQgYWxs
b2NhdGUoKSB7ICAKCWlmIChiYXNlKCkgfHwgdW5idWZmZXJlZCgpKSByZXR1cm4gMDsKCWVsc2Ug
cmV0dXJuIGRvYWxsb2NhdGUoKTsgfQogICAgIAogICAgdm9pZCBhbGxvY2J1ZigpIHsgaWYgKGJh
c2UoKSA9PSBfX251bGwgKSBkb2FsbG9jYnVmKCk7IH0KICAgIHZvaWQgZG9hbGxvY2J1ZigpOwog
ICAgaW50IGluX2F2YWlsKCkgeyByZXR1cm4gX0lPX3JlYWRfZW5kIC0gX0lPX3JlYWRfcHRyOyB9
CiAgICBpbnQgb3V0X3dhaXRpbmcoKSB7IHJldHVybiBfSU9fd3JpdGVfcHRyIC0gX0lPX3dyaXRl
X2Jhc2U7IH0KICAgIHN0cmVhbXNpemUgc3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6ZSBu
KSB7IHJldHVybiB4c3B1dG4ocywgbik7IH0KICAgIHN0cmVhbXNpemUgcGFkbihjaGFyIHBhZCwg
c3RyZWFtc2l6ZSBuKSB7IHJldHVybiBfSU9fcGFkbih0aGlzLCBwYWQsIG4pOyB9CiAgICBzdHJl
YW1zaXplIHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbikgeyByZXR1cm4gX0lPX3NnZXRuKHRo
aXMsIHMsIG4pOyB9CiAgICBpbnQgaWdub3JlKGludCk7CiAgICBpbnQgZ2V0X2NvbHVtbigpOwog
ICAgaW50IHNldF9jb2x1bW4oaW50KTsKICAgIGxvbmcgc2dldGxpbmUoY2hhciogYnVmLCBzaXpl
X3QgICBuLCBjaGFyIGRlbGltLCBpbnQgcHV0YmFja19kZWxpbSk7CiAgICBpbnQgc3B1dGMoaW50
IGMpIHsgcmV0dXJuIF9JT19wdXRjKGMsIHRoaXMpOyB9CiAgICBpbnQgc2J1bXBjKCkgeyByZXR1
cm4gX0lPX2dldGModGhpcyk7IH0KICAgIGludCBzZ2V0YygpIHsgcmV0dXJuICgoICB0aGlzICAp
LT5fSU9fcmVhZF9wdHIgPj0gKCAgdGhpcyAgKS0+X0lPX3JlYWRfZW5kICYmIF9fdW5kZXJmbG93
ICggIHRoaXMgICkgPT0gKC0xKSAgPyAoLTEpICA6ICoodW5zaWduZWQgY2hhciAqKSAoICB0aGlz
ICApLT5fSU9fcmVhZF9wdHIpICA7IH0KICAgIGludCBzbmV4dGMoKSB7CglpZiAoX0lPX3JlYWRf
cHRyID49IF9JT19yZWFkX2VuZCAmJiBfX3VuZGVyZmxvdyh0aGlzKSA9PSAoLTEpICkKCSAgcmV0
dXJuICgtMSkgOwoJZWxzZSByZXR1cm4gX0lPX3JlYWRfcHRyKyssIHNnZXRjKCk7IH0KICAgIHZv
aWQgc3Rvc3NjKCkgeyBpZiAoX0lPX3JlYWRfcHRyIDwgX0lPX3JlYWRfZW5kKSBfSU9fcmVhZF9w
dHIrKzsgfQogICAgaW50IHZzY2FuKGNoYXIgY29uc3QgKmZtdDAsIF9fZ251Y192YV9saXN0ICBh
cCwgaW9zKiBzdHJlYW0gPSBfX251bGwgKTsKICAgIGludCBzY2FuKGNoYXIgY29uc3QgKmZtdDAg
Li4uKTsKICAgIGludCB2Zm9ybShjaGFyIGNvbnN0ICpmbXQwLCBfX2dudWNfdmFfbGlzdCAgYXAp
OwogICAgaW50IGZvcm0oY2hhciBjb25zdCAqZm10MCAuLi4pOwoKCgoKICAgIHZpcnR1YWwgc3Ry
ZWFtc2l6ZSBzeXNfcmVhZChjaGFyKiBidWYsIHN0cmVhbXNpemUgc2l6ZSk7CiAgICB2aXJ0dWFs
IHN0cmVhbXNpemUgc3lzX3dyaXRlKGNvbnN0IGNoYXIqLCBzdHJlYW1zaXplKTsKICAgIHZpcnR1
YWwgc3RyZWFtcG9zIHN5c19zZWVrKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAgIHZpcnR1YWwg
aW50IHN5c19jbG9zZSgpOwogICAgdmlydHVhbCBpbnQgc3lzX3N0YXQodm9pZCopOyAgCgogICAg
dmlydHVhbCBpbnQgc2hvd21hbnljKCk7CiAgICB2aXJ0dWFsIHZvaWQgaW1idWUodm9pZCAqKTsK
Cn07CgogCiAKCmNsYXNzIGZpbGVidWYgOiBwdWJsaWMgc3RyZWFtYnVmIHsKICBwcm90ZWN0ZWQ6
CiAgICB2b2lkIGluaXQoKTsKICBwdWJsaWM6CiAgICBzdGF0aWMgY29uc3QgaW50IG9wZW5wcm90
OyAgCiAgICBmaWxlYnVmKCk7CiAgICBmaWxlYnVmKGludCBmZCk7CiAgICBmaWxlYnVmKGludCBm
ZCwgY2hhciogcCwgaW50IGxlbik7CgoKCiAgICB+ZmlsZWJ1ZigpOwogICAgZmlsZWJ1ZiogYXR0
YWNoKGludCBmZCk7CiAgICBmaWxlYnVmKiBvcGVuKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25z
dCBjaGFyICptb2RlKTsKICAgIGZpbGVidWYqIG9wZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGlv
czo6b3Blbm1vZGUgbW9kZSwgaW50IHByb3QgPSAwNjY0KTsKICAgIHZpcnR1YWwgaW50IHVuZGVy
ZmxvdygpOwogICAgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50IGMgPSAoLTEpICk7CiAgICBpbnQg
aXNfb3BlbigpIGNvbnN0IHsgcmV0dXJuIF9maWxlbm8gPj0gMDsgfQogICAgaW50IGZkKCkgY29u
c3QgeyByZXR1cm4gaXNfb3BlbigpID8gX2ZpbGVubyA6ICgtMSkgOyB9CiAgICBmaWxlYnVmKiBj
bG9zZSgpOwogICAgdmlydHVhbCBpbnQgZG9hbGxvY2F0ZSgpOwogICAgdmlydHVhbCBzdHJlYW1w
b3Mgc2Vla29mZihzdHJlYW1vZmYsIF9zZWVrX2RpciwgaW50IG1vZGU9aW9zOjppbnxpb3M6Om91
dCk7CiAgICB2aXJ0dWFsIHN0cmVhbWJ1Ziogc2V0YnVmKGNoYXIqIHAsIGludCBsZW4pOwogICAg
c3RyZWFtc2l6ZSB4c3B1dG4oY29uc3QgY2hhciogcywgc3RyZWFtc2l6ZSBuKTsKICAgIHN0cmVh
bXNpemUgeHNnZXRuKGNoYXIqIHMsIHN0cmVhbXNpemUgbik7CiAgICB2aXJ0dWFsIGludCBzeW5j
KCk7CiAgcHJvdGVjdGVkOiAgCiAKICAgIGludCBpc19yZWFkaW5nKCkgeyByZXR1cm4gZWJhY2so
KSAhPSBlZ3B0cigpOyB9CiAgICBjaGFyKiBjdXJfcHRyKCkgeyByZXR1cm4gaXNfcmVhZGluZygp
ID8gIGdwdHIoKSA6IHBwdHIoKTsgfQogICAgIAogICAgY2hhciogZmlsZV9wdHIoKSB7IHJldHVy
biBlR3B0cigpOyB9CiAgICAgCiAgICB2aXJ0dWFsIHN0cmVhbXNpemUgc3lzX3JlYWQoY2hhciog
YnVmLCBzdHJlYW1zaXplIHNpemUpOwogICAgdmlydHVhbCBzdHJlYW1wb3Mgc3lzX3NlZWsoc3Ry
ZWFtb2ZmLCBfc2Vla19kaXIpOwogICAgdmlydHVhbCBzdHJlYW1zaXplIHN5c193cml0ZShjb25z
dCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiAgICB2aXJ0dWFsIGludCBzeXNfc3RhdCh2b2lkKik7ICAK
ICAgIHZpcnR1YWwgaW50IHN5c19jbG9zZSgpOwoKCgoKfTsKCmlubGluZSB2b2lkIGlvczo6aW5p
dChzdHJlYW1idWYqIHNiLCBvc3RyZWFtKiB0aWVfdG8pIHsKCQlfc3RhdGUgPSBzYiA/IGlvczo6
Z29vZGJpdCA6IGlvczo6YmFkYml0OyBfZXhjZXB0aW9ucz0wOwoJCV9zdHJidWY9c2I7IF90aWUg
PSB0aWVfdG87IF93aWR0aD0wOyBfZmlsbD0nICc7CgoJCV9mbGFncz1pb3M6OnNraXB3c3xpb3M6
OmRlYzsKCgoKCQlfcHJlY2lzaW9uPTY7IF9hcnJheXMgPSAwOyB9CgppbmxpbmUgaW9zOjppb3Mo
c3RyZWFtYnVmKiBzYiwgb3N0cmVhbSogdGllX3RvKSB7IGluaXQoc2IsIHRpZV90byk7IH0KCmlu
bGluZSBpb3M6On5pb3MoKSB7CgoKCiAgICAgCiAgICAgCiAgICBvcGVyYXRvciBkZWxldGVbXSAo
X2FycmF5cyk7Cn0KfSAgCgojIDMxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL2lvc3RyZWFtLmgiIDIgMwoKCmV4dGVybiAiQysrIiB7CmNsYXNzIGlzdHJl
YW07IGNsYXNzIG9zdHJlYW07CnR5cGVkZWYgaW9zJiAoKl9fbWFuaXApKGlvcyYpOwp0eXBlZGVm
IGlzdHJlYW0mICgqX19pbWFuaXApKGlzdHJlYW0mKTsKdHlwZWRlZiBvc3RyZWFtJiAoKl9fb21h
bmlwKShvc3RyZWFtJik7CgpleHRlcm4gaXN0cmVhbSYgd3MoaXN0cmVhbSYgaW5zKTsKZXh0ZXJu
IG9zdHJlYW0mIGZsdXNoKG9zdHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgZW5kbChvc3Ry
ZWFtJiBvdXRzKTsKZXh0ZXJuIG9zdHJlYW0mIGVuZHMob3N0cmVhbSYgb3V0cyk7CgpjbGFzcyBv
c3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKICAgIHZvaWQgZG9fb3NmeCgpOwog
IHB1YmxpYzoKICAgIG9zdHJlYW0oKSB7IH0KICAgIG9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0
cmVhbSogdGllZD0gX19udWxsICk7CiAgICBpbnQgb3BmeCgpIHsKCWlmICghZ29vZCgpKSByZXR1
cm4gMDsKCWVsc2UgeyBpZiAoX3RpZSkgX3RpZS0+Zmx1c2goKTsgIDsgcmV0dXJuIDE7fSB9CiAg
ICB2b2lkIG9zZngoKSB7ICA7CgkJICBpZiAoZmxhZ3MoKSAmIChpb3M6OnVuaXRidWZ8aW9zOjpz
dGRpbykpCgkJICAgICAgZG9fb3NmeCgpOyB9CiAgICBvc3RyZWFtJiBmbHVzaCgpOwogICAgb3N0
cmVhbSYgcHV0KGNoYXIgYykgeyBfc3RyYnVmLT5zcHV0YyhjKTsgcmV0dXJuICp0aGlzOyB9CgoK
CgoKICAgIG9zdHJlYW0mIHdyaXRlKGNvbnN0IGNoYXIgKnMsIHN0cmVhbXNpemUgbik7CiAgICBv
c3RyZWFtJiB3cml0ZShjb25zdCB1bnNpZ25lZCBjaGFyICpzLCBzdHJlYW1zaXplIG4pCiAgICAg
IHsgcmV0dXJuIHdyaXRlKChjb25zdCBjaGFyKilzLCBuKTt9CiAgICBvc3RyZWFtJiB3cml0ZShj
b25zdCBzaWduZWQgY2hhciAqcywgc3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgo
Y29uc3QgY2hhciopcywgbik7fQogICAgb3N0cmVhbSYgd3JpdGUoY29uc3Qgdm9pZCAqcywgc3Ry
ZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiB3cml0ZSgoY29uc3QgY2hhciopcywgbik7fQogICAg
b3N0cmVhbSYgc2Vla3Aoc3RyZWFtcG9zKTsKICAgIG9zdHJlYW0mIHNlZWtwKHN0cmVhbW9mZiwg
X3NlZWtfZGlyKTsKICAgIHN0cmVhbXBvcyB0ZWxscCgpOwogICAgb3N0cmVhbSYgZm9ybShjb25z
dCBjaGFyICpmb3JtYXQgLi4uKTsKICAgIG9zdHJlYW0mIHZmb3JtKGNvbnN0IGNoYXIgKmZvcm1h
dCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3MpOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY2hhciBj
KTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgY2hhciBjKSB7IHJldHVybiAoKnRo
aXMpIDw8IChjaGFyKWM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc2lnbmVkIGNoYXIgYykg
eyByZXR1cm4gKCp0aGlzKSA8PCAoY2hhciljOyB9CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGNv
bnN0IGNoYXIgKnMpOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB1bnNpZ25lZCBjaGFy
ICpzKQoJeyByZXR1cm4gKCp0aGlzKSA8PCAoY29uc3QgY2hhciopczsgfQogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PChjb25zdCBzaWduZWQgY2hhciAqcykKCXsgcmV0dXJuICgqdGhpcykgPDwgKGNv
bnN0IGNoYXIqKXM7IH0KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCAqcCk7CiAg
ICBvc3RyZWFtJiBvcGVyYXRvcjw8KGludCBuKTsKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwodW5z
aWduZWQgaW50IG4pOwogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChsb25nIG4pOwogICAgb3N0cmVh
bSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIG4pOwoKICAgIF9fZXh0ZW5zaW9uX18gb3N0cmVh
bSYgb3BlcmF0b3I8PChsb25nIGxvbmcgbik7CiAgICBfX2V4dGVuc2lvbl9fIG9zdHJlYW0mIG9w
ZXJhdG9yPDwodW5zaWduZWQgbG9uZyBsb25nIG4pOwoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwo
c2hvcnQgbikge3JldHVybiBvcGVyYXRvcjw8KChpbnQpbik7fQogICAgb3N0cmVhbSYgb3BlcmF0
b3I8PCh1bnNpZ25lZCBzaG9ydCBuKSB7cmV0dXJuIG9wZXJhdG9yPDwoKHVuc2lnbmVkIGludClu
KTt9CgogICAgb3N0cmVhbSYgb3BlcmF0b3I8PChib29sIGIpIHsgcmV0dXJuIG9wZXJhdG9yPDwo
KGludCliKTsgfQoKICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoZG91YmxlIG4pOwogICAgb3N0cmVh
bSYgb3BlcmF0b3I8PChmbG9hdCBuKSB7IHJldHVybiBvcGVyYXRvcjw8KChkb3VibGUpbik7IH0K
CiAgICBvc3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgZG91YmxlIG4pOwoKCgogICAgb3N0cmVhbSYg
b3BlcmF0b3I8PChfX29tYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlzKTsgfQogICAg
b3N0cmVhbSYgb3BlcmF0b3I8PChfX21hbmlwIGZ1bmMpIHsoKmZ1bmMpKCp0aGlzKTsgcmV0dXJu
ICp0aGlzO30KICAgIG9zdHJlYW0mIG9wZXJhdG9yPDwoc3RyZWFtYnVmKik7CgoKCn07CgpjbGFz
cyBpc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgaW9zCnsKICAgICAKcHJvdGVjdGVkOgogICAgc2l6
ZV90ICAgX2djb3VudDsKCiAgICBpbnQgX3NraXBfd3MoKTsKICBwdWJsaWM6CiAgICBpc3RyZWFt
KCk6IF9nY291bnQgKDApIHsgfQogICAgaXN0cmVhbShzdHJlYW1idWYqIHNiLCBvc3RyZWFtKnRp
ZWQ9IF9fbnVsbCApOwogICAgaXN0cmVhbSYgZ2V0KGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBk
ZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0KHVuc2lnbmVkIGNoYXIqIHB0ciwgaW50IGxl
biwgY2hhciBkZWxpbSA9ICdcbicpCgl7IHJldHVybiBnZXQoKGNoYXIqKXB0ciwgbGVuLCBkZWxp
bSk7IH0KICAgIGlzdHJlYW0mIGdldChjaGFyJiBjKTsKICAgIGlzdHJlYW0mIGdldCh1bnNpZ25l
ZCBjaGFyJiBjKSB7IHJldHVybiBnZXQoKGNoYXImKWMpOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5l
KGNoYXIqIHB0ciwgaW50IGxlbiwgY2hhciBkZWxpbSA9ICdcbicpOwogICAgaXN0cmVhbSYgZ2V0
bGluZSh1bnNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyBy
ZXR1cm4gZ2V0bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgZ2V0
KHNpZ25lZCBjaGFyJiBjKSAgeyByZXR1cm4gZ2V0KChjaGFyJiljKTsgfQogICAgaXN0cmVhbSYg
Z2V0KHNpZ25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1
cm4gZ2V0KChjaGFyKilwdHIsIGxlbiwgZGVsaW0pOyB9CiAgICBpc3RyZWFtJiBnZXRsaW5lKHNp
Z25lZCBjaGFyKiBwdHIsIGludCBsZW4sIGNoYXIgZGVsaW0gPSAnXG4nKQoJeyByZXR1cm4gZ2V0
bGluZSgoY2hhciopcHRyLCBsZW4sIGRlbGltKTsgfQogICAgaXN0cmVhbSYgcmVhZChjaGFyICpw
dHIsIHN0cmVhbXNpemUgbik7CiAgICBpc3RyZWFtJiByZWFkKHVuc2lnbmVkIGNoYXIgKnB0ciwg
c3RyZWFtc2l6ZSBuKQogICAgICB7IHJldHVybiByZWFkKChjaGFyKilwdHIsIG4pOyB9CiAgICBp
c3RyZWFtJiByZWFkKHNpZ25lZCBjaGFyICpwdHIsIHN0cmVhbXNpemUgbikKICAgICAgeyByZXR1
cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0cmVhbSYgcmVhZCh2b2lkICpwdHIsIHN0
cmVhbXNpemUgbikKICAgICAgeyByZXR1cm4gcmVhZCgoY2hhciopcHRyLCBuKTsgfQogICAgaXN0
cmVhbSYgZ2V0KHN0cmVhbWJ1ZiYgc2IsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGlzdHJlYW0m
IGdldHMoY2hhciAqKnMsIGNoYXIgZGVsaW0gPSAnXG4nKTsKICAgIGludCBpcGZ4KGludCBuZWVk
ID0gMCkgewoJaWYgKCFnb29kKCkpIHsgc2V0KGlvczo6ZmFpbGJpdCk7IHJldHVybiAwOyB9Cgll
bHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgKG5lZWQgPT0gMCB8fCByZGJ1ZigpLT5pbl9hdmFp
bCgpIDwgbmVlZCkpIF90aWUtPmZsdXNoKCk7CgkgIGlmICghbmVlZCAmJiAoZmxhZ3MoKSAmIGlv
czo6c2tpcHdzKSkgcmV0dXJuIF9za2lwX3dzKCk7CgkgIGVsc2UgcmV0dXJuIDE7Cgl9CiAgICB9
CiAgICBpbnQgaXBmeDAoKSB7ICAKCWlmICghZ29vZCgpKSB7IHNldChpb3M6OmZhaWxiaXQpOyBy
ZXR1cm4gMDsgfQoJZWxzZSB7CgkgICA7CgkgIGlmIChfdGllKSBfdGllLT5mbHVzaCgpOwoJICBp
ZiAoZmxhZ3MoKSAmIGlvczo6c2tpcHdzKSByZXR1cm4gX3NraXBfd3MoKTsKCSAgZWxzZSByZXR1
cm4gMTsKCX0KICAgIH0KICAgIGludCBpcGZ4MSgpIHsgIAoJaWYgKCFnb29kKCkpIHsgc2V0KGlv
czo6ZmFpbGJpdCk7IHJldHVybiAwOyB9CgllbHNlIHsKCSAgIDsKCSAgaWYgKF90aWUgJiYgcmRi
dWYoKS0+aW5fYXZhaWwoKSA9PSAwKSBfdGllLT5mbHVzaCgpOwoJICByZXR1cm4gMTsKCX0KICAg
IH0KICAgIHZvaWQgaXNmeCgpIHsgIDsgfQogICAgaW50IGdldCgpIHsgaWYgKCFpcGZ4MSgpKSBy
ZXR1cm4gKC0xKSA7CgkJZWxzZSB7IGludCBjaCA9IF9zdHJidWYtPnNidW1wYygpOwoJCSAgICAg
ICBpZiAoY2ggPT0gKC0xKSApIHNldChpb3M6OmVvZmJpdCk7CgkJICAgICAgIGlzZngoKTsKCQkg
ICAgICAgcmV0dXJuIGNoOwoJCSAgICAgfSB9CiAgICBpbnQgcGVlaygpOwogICAgc2l6ZV90ICAg
Z2NvdW50KCkgeyByZXR1cm4gX2djb3VudDsgfQogICAgaXN0cmVhbSYgaWdub3JlKGludCBuPTEs
IGludCBkZWxpbSA9ICgtMSkgKTsKICAgIGludCBzeW5jICgpOwogICAgaXN0cmVhbSYgc2Vla2co
c3RyZWFtcG9zKTsKICAgIGlzdHJlYW0mIHNlZWtnKHN0cmVhbW9mZiwgX3NlZWtfZGlyKTsKICAg
IHN0cmVhbXBvcyB0ZWxsZygpOwogICAgaXN0cmVhbSYgcHV0YmFjayhjaGFyIGNoKSB7CglpZiAo
Z29vZCgpICYmIF9zdHJidWYtPnNwdXRiYWNrYyhjaCkgPT0gKC0xKSApIGNsZWFyKGlvczo6YmFk
Yml0KTsKCXJldHVybiAqdGhpczt9CiAgICBpc3RyZWFtJiB1bmdldCgpIHsKCWlmIChnb29kKCkg
JiYgX3N0cmJ1Zi0+c3VuZ2V0YygpID09ICgtMSkgKSBjbGVhcihpb3M6OmJhZGJpdCk7CglyZXR1
cm4gKnRoaXM7fQogICAgaXN0cmVhbSYgc2Nhbihjb25zdCBjaGFyICpmb3JtYXQgLi4uKTsKICAg
IGlzdHJlYW0mIHZzY2FuKGNvbnN0IGNoYXIgKmZvcm1hdCwgX19nbnVjX3ZhX2xpc3QgIGFyZ3Mp
OwoKCgoKCgogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihjaGFyKik7CiAgICBpc3RyZWFtJiBvcGVy
YXRvcj4+KHVuc2lnbmVkIGNoYXIqIHApIHsgcmV0dXJuIG9wZXJhdG9yPj4oKGNoYXIqKXApOyB9
CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNpZ25lZCBjaGFyKnApIHsgcmV0dXJuIG9wZXJhdG9y
Pj4oKGNoYXIqKXApOyB9CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KGNoYXImIGMpOwogICAgaXN0
cmVhbSYgb3BlcmF0b3I+Pih1bnNpZ25lZCBjaGFyJiBjKSB7cmV0dXJuIG9wZXJhdG9yPj4oKGNo
YXImKWMpO30KICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4oc2lnbmVkIGNoYXImIGMpIHtyZXR1cm4g
b3BlcmF0b3I+PigoY2hhciYpYyk7fQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihpbnQmKTsKICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyYpOwoKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYg
b3BlcmF0b3I+Pihsb25nIGxvbmcmKTsKICAgIF9fZXh0ZW5zaW9uX18gaXN0cmVhbSYgb3BlcmF0
b3I+Pih1bnNpZ25lZCBsb25nIGxvbmcmKTsKCiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHNob3J0
Jik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2lnbmVkIGludCYpOwogICAgaXN0cmVhbSYg
b3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nJik7CiAgICBpc3RyZWFtJiBvcGVyYXRvcj4+KHVuc2ln
bmVkIHNob3J0Jik7CgogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihib29sJik7CgogICAgaXN0cmVh
bSYgb3BlcmF0b3I+PihmbG9hdCYpOwogICAgaXN0cmVhbSYgb3BlcmF0b3I+Pihkb3VibGUmKTsK
ICAgIGlzdHJlYW0mIG9wZXJhdG9yPj4obG9uZyBkb3VibGUmKTsKICAgIGlzdHJlYW0mIG9wZXJh
dG9yPj4oIF9fbWFuaXAgZnVuYykgeygqZnVuYykoKnRoaXMpOyByZXR1cm4gKnRoaXM7fQogICAg
aXN0cmVhbSYgb3BlcmF0b3I+PihfX2ltYW5pcCBmdW5jKSB7IHJldHVybiAoKmZ1bmMpKCp0aGlz
KTsgfQogICAgaXN0cmVhbSYgb3BlcmF0b3I+PihzdHJlYW1idWYqKTsKfTsKCmNsYXNzIGlvc3Ry
ZWFtIDogcHVibGljIGlzdHJlYW0sIHB1YmxpYyBvc3RyZWFtCnsKICBwdWJsaWM6CiAgICBpb3N0
cmVhbSgpIHsgfQogICAgaW9zdHJlYW0oc3RyZWFtYnVmKiBzYiwgb3N0cmVhbSp0aWVkPSBfX251
bGwgKTsKfTsKCmNsYXNzIF9JT19pc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgaXN0cmVhbSB7
CnB1YmxpYzoKICBfSU9faXN0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0oaXN0cmVhbSYpOwog
IF9JT19pc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9faXN0cmVhbV93aXRoYXNzaWdu
JiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PGlzdHJlYW0mPiAocmhz
KSk7IH0KfTsKCmNsYXNzIF9JT19vc3RyZWFtX3dpdGhhc3NpZ24gOiBwdWJsaWMgb3N0cmVhbSB7
CnB1YmxpYzoKICBfSU9fb3N0cmVhbV93aXRoYXNzaWduJiBvcGVyYXRvcj0ob3N0cmVhbSYpOwog
IF9JT19vc3RyZWFtX3dpdGhhc3NpZ24mIG9wZXJhdG9yPShfSU9fb3N0cmVhbV93aXRoYXNzaWdu
JiByaHMpCiAgICB7IHJldHVybiBvcGVyYXRvcj0gKHN0YXRpY19jYXN0PG9zdHJlYW0mPiAocmhz
KSk7IH0KfTsKCmV4dGVybiBfSU9faXN0cmVhbV93aXRoYXNzaWduIGNpbjsKIApleHRlcm4gX0lP
X29zdHJlYW1fd2l0aGFzc2lnbiBjb3V0LCBjZXJyOwoKZXh0ZXJuIF9JT19vc3RyZWFtX3dpdGhh
c3NpZ24gY2xvZwoKCgo7CgpleHRlcm4gaXN0cmVhbSYgbG9jayhpc3RyZWFtJiBpbnMpOwpleHRl
cm4gaXN0cmVhbSYgdW5sb2NrKGlzdHJlYW0mIGlucyk7CmV4dGVybiBvc3RyZWFtJiBsb2NrKG9z
dHJlYW0mIG91dHMpOwpleHRlcm4gb3N0cmVhbSYgdW5sb2NrKG9zdHJlYW0mIG91dHMpOwoKc3Ry
dWN0IElvc3RyZWFtX2luaXQgeyB9IDsgICAKCmlubGluZSBpb3MmIGRlYyhpb3MmIGkpCnsgaS5z
ZXRmKGlvczo6ZGVjLCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9Cmlu
bGluZSBpb3MmIGhleChpb3MmIGkpCnsgaS5zZXRmKGlvczo6aGV4LCBpb3M6OmRlY3xpb3M6Omhl
eHxpb3M6Om9jdCk7IHJldHVybiBpOyB9CmlubGluZSBpb3MmIG9jdChpb3MmIGkpCnsgaS5zZXRm
KGlvczo6b2N0LCBpb3M6OmRlY3xpb3M6OmhleHxpb3M6Om9jdCk7IHJldHVybiBpOyB9Cn0gIAoK
CiMgNDUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2FsbG9jLmgiIDIgMwoKI2RlZmluZSBfX1RIUk9XX0JBRF9BTExPQyBjZXJyIDw8ICJvdXQgb2Yg
bWVtb3J5IiA8PCBlbmRsOyBleGl0KDEpCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgojIDUzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45
NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL3N0bF9hbGxvYy5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAx
IDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCiAKI2RlZmluZSAJCV9fbmVlZF9zaXplX3QK
CiNkZWZpbmUgCV9fbmVlZF93Y2hhcl90CiNkZWZpbmUgCV9fbmVlZF9OVUxMCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwoKCgoKCgogCgoKIyAxOSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgogCgoKIAoKCgoKCiAKCgoj
IDYxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiAKCiAKCgojIDEyNiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCiAKCiAKCgojIDE4OCAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdu
dS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKI3VuZGVmIAlfX25lZWRfc2l6ZV90CgoKCiAK
CgoKCiAKCgojIDI2OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoK
I3VuZGVmIAlfX25lZWRfd2NoYXJfdAoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKI3VuZGVmIE5VTEwJCQoK
I2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKI3VuZGVmIAlfX25lZWRfTlVMTAoKCgogCgoKCgoKCgoj
IDMzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCgojZGVmaW5l
IAlfU1RETElCX0gJMQoKIAp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGludCBxdW90OwkJCSAKICAg
IGludCByZW07CQkJIAogIH0gZGl2X3Q7CgogCgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcg
aW50IHF1b3Q7CQkgCiAgICBsb25nIGludCByZW07CQkgCiAgfSBsZGl2X3Q7CiNkZWZpbmUgX19s
ZGl2X3RfZGVmaW5lZAkxCgoKIyA2NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKCiAKI2Rl
ZmluZSAJUkFORF9NQVgJMjE0NzQ4MzY0NwoKCiAKCiNkZWZpbmUgCUVYSVRfRkFJTFVSRQkxCQoj
ZGVmaW5lIAlFWElUX1NVQ0NFU1MJMAkKCgogCiNkZWZpbmUgCU1CX0NVUl9NQVgJKF9fY3R5cGVf
Z2V0X21iX2N1cl9tYXggKCkpCmV4dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21heCAg
KHZvaWQpICB0aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGRvdWJsZSBhdG9mICAoX19jb25zdCBjaGFy
ICpfX25wdHIpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgYXRvaSAgKF9fY29uc3QgY2hhciAq
X19ucHRyKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gbG9uZyBpbnQgYXRvbCAgKF9fY29uc3QgY2hh
ciAqX19ucHRyKSAgdGhyb3cgKCkgIDsKCgogCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGxvbmcgbG9u
ZyBpbnQgYXRvbGwgIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgIHRocm93ICgpICA7CgoKIApleHRl
cm4gZG91YmxlIHN0cnRvZCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCSAg
IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSAgdGhyb3cgKCkgIDsKCgoKCgoKCgoKCiAKZXh0
ZXJuIGxvbmcgaW50IHN0cnRvbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJ
CSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAoKSAg
OwogCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBzdHJ0b3VsICAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJ
CSAgICAgICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgogCl9fZXh0ZW5zaW9uX18KZXh0ZXJu
IGxvbmcgbG9uZyBpbnQgc3RydG9xICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK
CQkJCSAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jhc2UpICB0aHJvdyAoKSAg
OwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91cSAg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJICAgIGNoYXIgKipfX3Jlc3Ry
aWN0IF9fZW5kcHRyLAoJCQkJCSAgICBpbnQgX19iYXNlKSAgdGhyb3cgKCkgIDsKCgoKIAoKIApf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgIChfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19ucHRyLAoJCQkJICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGlu
dCBfX2Jhc2UpICB0aHJvdyAoKSAgOwogCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxv
bmcgbG9uZyBpbnQgc3RydG91bGwgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAoJ
CQkJCSAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJICAgICBpbnQgX19iYXNl
KSAgdGhyb3cgKCkgIDsKCgoKIyAxOTAgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwoKCgogCgoK
ZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9pbnRlcm5hbCAgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX25wdHIsCgkJCQkgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCSAgICAg
IGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFs
ICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCSAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGxvbmcgZG91
YmxlICBfX3N0cnRvbGRfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKgoJCQkJCQlfX3Jlc3RyaWN0
IF9fbnB0ciwKCQkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCWludCBfX2dy
b3VwKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCgkJCQkJY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCgkJCQkJaW50IF9fYmFzZSwgaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwojZGVmaW5l
IF9fc3RydG9sX2ludGVybmFsX2RlZmluZWQJMQoKCmV4dGVybiB1bnNpZ25lZCBsb25nIGludCBf
X3N0cnRvdWxfaW50ZXJuYWwgIChfX2NvbnN0IGNoYXIgKgoJCQkJCQkgIF9fcmVzdHJpY3QgX19u
cHRyLAoJCQkJCQkgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAoJCQkJCQkgIGludCBfX2Jh
c2UsIGludCBfX2dyb3VwKSAgdGhyb3cgKCkgIDsKI2RlZmluZSBfX3N0cnRvdWxfaW50ZXJuYWxf
ZGVmaW5lZAkxCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19zdHJ0b2xs
X2ludGVybmFsICAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKCQkJCQkgICAgICBpbnQgX19iYXNlLCBpbnQgX19n
cm91cCkgIHRocm93ICgpICA7CiNkZWZpbmUgX19zdHJ0b2xsX2ludGVybmFsX2RlZmluZWQJMQoK
Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19zdHJ0b3VsbF9p
bnRlcm5hbCAgKF9fY29uc3QgY2hhciAqCgkJCQkJCQlfX3Jlc3RyaWN0IF9fbnB0ciwKCQkJCQkJ
CWNoYXIgKioKCQkJCQkJCV9fcmVzdHJpY3QgX19lbmRwdHIsCgkJCQkJCQlpbnQgX19iYXNlLAoJ
CQkJCQkJaW50IF9fZ3JvdXApICB0aHJvdyAoKSAgOwojZGVmaW5lIF9fc3RydG91bGxfaW50ZXJu
YWxfZGVmaW5lZAkxCgoKCiMgMzI2ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKCgoKCiAKCgpl
eHRlcm4gY2hhciAqbDY0YSAgKGxvbmcgaW50IF9fbikgIHRocm93ICgpICA7CgogCmV4dGVybiBs
b25nIGludCBhNjRsICAoX19jb25zdCBjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy90eXBlcy5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZp
bmUgCV9TWVNfVFlQRVNfSAkxCgoKCmV4dGVybiAiQyIgeyAKCgoKCnR5cGVkZWYgX191X2NoYXIg
dV9jaGFyOwp0eXBlZGVmIF9fdV9zaG9ydCB1X3Nob3J0Owp0eXBlZGVmIF9fdV9pbnQgdV9pbnQ7
CnR5cGVkZWYgX191X2xvbmcgdV9sb25nOwp0eXBlZGVmIF9fcXVhZF90IHF1YWRfdDsKdHlwZWRl
ZiBfX3VfcXVhZF90IHVfcXVhZF90Owp0eXBlZGVmIF9fZnNpZF90IGZzaWRfdDsKCgp0eXBlZGVm
IF9fbG9mZl90IGxvZmZfdDsKCgoKdHlwZWRlZiBfX2lub190IGlub190OwoKCgojZGVmaW5lIGlu
b190IGlub190CgoKCgoKCgp0eXBlZGVmIF9fZGV2X3QgZGV2X3Q7CiNkZWZpbmUgZGV2X3QgZGV2
X3QKCgoKdHlwZWRlZiBfX2dpZF90IGdpZF90OwojZGVmaW5lIGdpZF90IGdpZF90CgoKCnR5cGVk
ZWYgX19tb2RlX3QgbW9kZV90OwojZGVmaW5lIG1vZGVfdCBtb2RlX3QKCgoKdHlwZWRlZiBfX25s
aW5rX3QgbmxpbmtfdDsKI2RlZmluZSBubGlua190IG5saW5rX3QKCgoKdHlwZWRlZiBfX3VpZF90
IHVpZF90OwojZGVmaW5lIHVpZF90IHVpZF90CgoKCgp0eXBlZGVmIF9fb2ZmX3Qgb2ZmX3Q7CgoK
CiNkZWZpbmUgb2ZmX3Qgb2ZmX3QKCgoKCgoKCnR5cGVkZWYgX19waWRfdCBwaWRfdDsKI2RlZmlu
ZSBwaWRfdCBwaWRfdAoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwoKCgp0eXBlZGVmIF9fc3NpemVf
dCBzc2l6ZV90OwojZGVmaW5lIHNzaXplX3Qgc3NpemVfdAoKCgp0eXBlZGVmIF9fZGFkZHJfdCBk
YWRkcl90Owp0eXBlZGVmIF9fY2FkZHJfdCBjYWRkcl90OwoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5
X3Q7CgoKCgoKI2RlZmluZSAJX19uZWVkX3RpbWVfdAojIDEgIi91c3IvaW5jbHVkZS90aW1lLmgi
IDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCiMgNTEgIi91c3IvaW5jbHVk
ZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKI2RlZmluZSBf
X3RpbWVfdF9kZWZpbmVkCTEKCgoKIAp0eXBlZGVmIF9fdGltZV90IHRpbWVfdDsKCgojdW5kZWYg
CV9fbmVlZF90aW1lX3QKCgojIDg5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgojIDI3OSAi
L3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgojIDEyMiAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5o
IiAyIDMKCgojZGVmaW5lIAlfX25lZWRfc2l6ZV90CiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
aW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu
My9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L3N0ZGRlZi5oIiAzCgojdW5kZWYgCV9fbmVlZF9zaXplX3QKCgoKIAoKCgoKIAoKCiMgMjY5ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoKCgoKCgoKCgoKCgog
CgogCgojIDMxNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCgoK
IAoKCiN1bmRlZiBOVUxMCQkKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCgoKCgogCgoKCgoKCgoj
IDEyNSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVk
IGxvbmcgaW50IHVsb25nOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCB1c2hvcnQ7CnR5cGVk
ZWYgdW5zaWduZWQgaW50IHVpbnQ7CgoKIAoKIyAxNTkgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMwoKCiAKI2RlZmluZSBfX2ludE5fdChOLCBNT0RFKSB0eXBlZGVmIGludCBpbnQjI04jI190
IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoTU9ERSkpKQoKI2RlZmluZSBfX3VfaW50Tl90KE4s
IE1PREUpIHR5cGVkZWYgdW5zaWduZWQgaW50IHVfaW50IyNOIyNfdCBfX2F0dHJpYnV0ZV9fICgo
X19tb2RlX18gKE1PREUpKSkKCgoKI2RlZmluZSBfX2ludDhfdF9kZWZpbmVkCnR5cGVkZWYgaW50
IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19RSV9fICkpKSA7CnR5cGVkZWYg
aW50IGludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fSElfXyApKSkgOwp0eXBl
ZGVmIGludCBpbnQzMl90IF9fYXR0cmlidXRlX18gKChfX21vZGVfXyAoICBfX1NJX18gKSkpIDsK
dHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKCAgX19ESV9fICkp
KSA7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQ4X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fICggIF9fUUlfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDE2X3QgX19hdHRy
aWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fSElfXyApKSkgOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1
X2ludDMyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fU0lfXyApKSkgOwp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDY0X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fICggIF9fRElf
XyApKSkgOwoKdHlwZWRlZiBpbnQgcmVnaXN0ZXJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fd29yZF9fKSkpOwoKCiAKCgojZGVmaW5lIF9fQklUX1RZUEVTX0RFRklORURfXwkxCgoKCiAK
CgogCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKCiNkZWZpbmUgX1NZU19TRUxFQ1RfSAkxCgoKCiAKCgogCiMgMSAiL3Vzci9pbmNsdWRl
L2JpdHMvc2VsZWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19G
RF9aRVJPKGZkc3ApIGRvIHsJaW50IF9fZDAsIF9fZDE7CV9fYXNtX18gX192b2xhdGlsZV9fICgi
Y2xkOyByZXA7IHN0b3NsIgk6ICI9YyIgKF9fZDApLCAiPUQiIChfX2QxKQk6ICJhIiAoMCksICIw
IiAoc2l6ZW9mIChfX2ZkX3NldCkJLyBzaXplb2YgKF9fZmRfbWFzaykpLAkiMSIgKCZfX0ZEU19C
SVRTIChmZHNwKVswXSkJOiAibWVtb3J5Iik7CX0gd2hpbGUgKDApCiMgMzYgIi91c3IvaW5jbHVk
ZS9iaXRzL3NlbGVjdC5oIiAzCgojZGVmaW5lIF9fRkRfU0VUKGZkLCBmZHNwKSBfX2FzbV9fIF9f
dm9sYXRpbGVfXyAoImJ0c2wgJTEsJTAiCTogIj1tIiAoX19GRFNfQklUUyAoZmRzcClbX19GREVM
VCAoZmQpXSkJOiAiciIgKCgoaW50KSAoZmQpKSAlIF9fTkZEQklUUykJOiAiY2MiLCJtZW1vcnki
KQoKCgoKI2RlZmluZSBfX0ZEX0NMUihmZCwgZmRzcCkgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJi
dHJsICUxLCUwIgk6ICI9bSIgKF9fRkRTX0JJVFMgKGZkc3ApW19fRkRFTFQgKGZkKV0pCTogInIi
ICgoKGludCkgKGZkKSkgJSBfX05GREJJVFMpCTogImNjIiwibWVtb3J5IikKCgoKCiNkZWZpbmUg
X19GRF9JU1NFVChmZCwgZmRzcCkgKF9fZXh0ZW5zaW9uX18JKHtyZWdpc3RlciBjaGFyIF9fcmVz
dWx0OwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImJ0bCAlMSwlMiA7IHNldGNiICViMCIJOiAiPXEi
IChfX3Jlc3VsdCkJOiAiciIgKCgoaW50KSAoZmQpKSAlIF9fTkZEQklUUyksCSJtIiAoX19GRFNf
QklUUyAoZmRzcClbX19GREVMVCAoZmQpXSkJOiAiY2MiKTsJX19yZXN1bHQ7IH0pKQojIDU2ICIv
dXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMwoKIyA3MiAiL3Vzci9pbmNsdWRlL2JpdHMvc2Vs
ZWN0LmgiIDMKCiMgMzEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCiAKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZp
bmUgX1NJR1NFVF9IX3R5cGVzCTEKCnR5cGVkZWYgaW50IF9fc2lnX2F0b21pY190OwoKIAoKI2Rl
ZmluZSBfU0lHU0VUX05XT1JEUwkoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGlu
dCkpKQp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0
IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcgaW50KSkpIF07CiAgfSBfX3NpZ3NldF90OwoK
CgoKIAoKCgoKCiMgMTI1ICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwoKIyAzNCAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzCgoKIAojZGVmaW5lIF9fbmVlZF90aW1lc3BlYwoj
IDEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoK
CgoKCgoKCiMgNTEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyA2MiAiL3Vzci9pbmNsdWRl
L3RpbWUuaCIgMwoKCgojIDczICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCgoKCiNkZWZpbmUg
X190aW1lc3BlY19kZWZpbmVkCTEKCiAKCnN0cnVjdCB0aW1lc3BlYwogIHsKICAgIGxvbmcgaW50
IHR2X3NlYzsJCSAKICAgIGxvbmcgaW50IHR2X25zZWM7CQkgCiAgfTsKCgojdW5kZWYgCV9fbmVl
ZF90aW1lc3BlYwoKCiMgMjc5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgMzggIi91c3Iv
aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMwoKCmV4dGVybiAiQyIgeyAKCiAKCgoKc3RydWN0IHRp
bWV2YWw7Cgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKIAp0eXBlZGVmIF9fZmRfc2V0IGZk
X3NldDsKCiAKI2RlZmluZSAJRkRfU0VUU0laRQkJX19GRF9TRVRTSVpFCgoKIAojZGVmaW5lIE5G
REJJVFMJCV9fTkZEQklUUwoKCgogCiNkZWZpbmUgCUZEX1NFVChmZCwgZmRzZXRwKQlfX0ZEX1NF
VCAoKGZkKSwgKGZkc2V0cCkpCiNkZWZpbmUgCUZEX0NMUihmZCwgZmRzZXRwKQlfX0ZEX0NMUiAo
KGZkKSwgKGZkc2V0cCkpCiNkZWZpbmUgCUZEX0lTU0VUKGZkLCBmZHNldHApCV9fRkRfSVNTRVQg
KChmZCksIChmZHNldHApKQojZGVmaW5lIAlGRF9aRVJPKGZkc2V0cCkJCV9fRkRfWkVSTyAoZmRz
ZXRwKQoKCiAKCgoKCmV4dGVybiBpbnQgX19zZWxlY3QgIChpbnQgX19uZmRzLCBfX2ZkX3NldCAq
X19yZWFkZmRzLAoJCQkgIF9fZmRfc2V0ICpfX3dyaXRlZmRzLCBfX2ZkX3NldCAqX19leGNlcHRm
ZHMsCgkJCSAgc3RydWN0IHRpbWV2YWwgKl9fdGltZW91dCkgIHRocm93ICgpICA7CmV4dGVybiBp
bnQgc2VsZWN0ICAoaW50IF9fbmZkcywgX19mZF9zZXQgKl9fcmVhZGZkcywKCQkJX19mZF9zZXQg
Kl9fd3JpdGVmZHMsIF9fZmRfc2V0ICpfX2V4Y2VwdGZkcywKCQkJc3RydWN0IHRpbWV2YWwgKl9f
dGltZW91dCkgIHRocm93ICgpICA7CgojIDkxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAz
CgoKfSAKCgojIDE5NCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgogCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZp
bmUgX1NZU19TWVNNQUNST1NfSAkxCgogCgoKCgojZGVmaW5lIG1ham9yKGRldikgKChpbnQpKCgo
ZGV2KSA+PiA4KSAmIDB4ZmYpKQojZGVmaW5lIG1pbm9yKGRldikgKChpbnQpKChkZXYpICYgMHhm
ZikpCiNkZWZpbmUgbWFrZWRldihtYWpvciwgbWlub3IpICgoKCh1bnNpZ25lZCBpbnQpIChtYWpv
cikpIDw8IDgpIHwgKCh1bnNpZ25lZCBpbnQpIChtaW5vcikpKQoKIyA0NyAiL3Vzci9pbmNsdWRl
L3N5cy9zeXNtYWNyb3MuaCIgMwoKCgojIDE5NyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
IDMKCgoKCiAKCnR5cGVkZWYgX19ibGtjbnRfdCBibGtjbnRfdDsJICAKdHlwZWRlZiBfX2ZzYmxr
Y250X3QgZnNibGtjbnRfdDsgIAp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90OyAgCgoK
CgoKCgoKCgoKCn0gCgoKIyAzMzkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKIAoKCgog
CmV4dGVybiBpbnQzMl90IHJhbmRvbSAgKHZvaWQpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gdm9p
ZCBzcmFuZG9tICAodW5zaWduZWQgaW50IF9fc2VlZCkgIHRocm93ICgpICA7CgogCgoKCmV4dGVy
biB2b2lkICogIGluaXRzdGF0ZSAgKHVuc2lnbmVkIGludCBfX3NlZWQsIHZvaWQgKiAgX19zdGF0
ZWJ1ZiwKCQkJICAgICAgIHNpemVfdCBfX3N0YXRlbGVuKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVy
biB2b2lkICogIHNldHN0YXRlICAodm9pZCAqICBfX3N0YXRlYnVmKSAgdGhyb3cgKCkgIDsKCgoK
IAoKCgpzdHJ1Y3QgcmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwkJIAogICAgaW50
MzJfdCAqcnB0cjsJCSAKICAgIGludDMyX3QgKnN0YXRlOwkJIAogICAgaW50IHJhbmRfdHlwZTsJ
CSAKICAgIGludCByYW5kX2RlZzsJCSAKICAgIGludCByYW5kX3NlcDsJCSAKICAgIGludDMyX3Qg
KmVuZF9wdHI7CQkgCiAgfTsKCmV4dGVybiBpbnQgcmFuZG9tX3IgIChzdHJ1Y3QgcmFuZG9tX2Rh
dGEgKl9fcmVzdHJpY3QgX19idWYsCgkJCSAgaW50MzJfdCAqX19yZXN0cmljdCBfX3Jlc3VsdCkg
IHRocm93ICgpICA7CgpleHRlcm4gaW50IHNyYW5kb21fciAgKHVuc2lnbmVkIGludCBfX3NlZWQs
IHN0cnVjdCByYW5kb21fZGF0YSAqX19idWYpICB0aHJvdyAoKSAgOwoKZXh0ZXJuIGludCBpbml0
c3RhdGVfciAgKHVuc2lnbmVkIGludCBfX3NlZWQsCgkJCSAgICAgdm9pZCAqICBfX3Jlc3RyaWN0
IF9fc3RhdGVidWYsCgkJCSAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCgkJCSAgICAgc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCmV4dGVybiBpbnQgc2V0
c3RhdGVfciAgKHZvaWQgKiAgX19yZXN0cmljdCBfX3N0YXRlYnVmLAoJCQkgICAgc3RydWN0IHJh
bmRvbV9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJuIGlu
dCByYW5kICAodm9pZCkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgc3JhbmQgICh1bnNpZ25l
ZCBpbnQgX19zZWVkKSAgdGhyb3cgKCkgIDsKCgogCmV4dGVybiBpbnQgcmFuZF9yICAodW5zaWdu
ZWQgaW50ICpfX3NlZWQpICB0aHJvdyAoKSAgOwoKCgoKIAoKIApleHRlcm4gZG91YmxlIGRyYW5k
NDggICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4ICAodW5zaWduZWQg
c2hvcnQgaW50IF9feHN1YmlbM10pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gbG9uZyBpbnQgbHJh
bmQ0OCAgKHZvaWQpICB0aHJvdyAoKSAgOwpleHRlcm4gbG9uZyBpbnQgbnJhbmQ0OCAgKHVuc2ln
bmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGxvbmcgaW50
IG1yYW5kNDggICh2b2lkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGxvbmcgaW50IGpyYW5kNDggICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lk
IHNyYW5kNDggIChsb25nIGludCBfX3NlZWR2YWwpICB0aHJvdyAoKSAgOwpleHRlcm4gdW5zaWdu
ZWQgc2hvcnQgaW50ICpzZWVkNDggICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2WzNdKSAg
dGhyb3cgKCkgIDsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAgKHVuc2lnbmVkIHNob3J0IGludCBfX3Bh
cmFtWzddKSAgdGhyb3cgKCkgIDsKCiAKc3RydWN0IGRyYW5kNDhfZGF0YQogIHsKICAgIHVuc2ln
bmVkIHNob3J0IGludCB4WzNdOwkgCiAgICB1bnNpZ25lZCBzaG9ydCBpbnQgYVszXTsJIAogICAg
dW5zaWduZWQgc2hvcnQgaW50IGM7CSAKICAgIHVuc2lnbmVkIHNob3J0IGludCBvbGRfeFszXTsg
IAogICAgaW50IGluaXQ7CQkJIAogIH07CgoKIApleHRlcm4gaW50IGRyYW5kNDhfciAgKHN0cnVj
dCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqX19yZXN0
cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgZXJhbmQ0OF9yICAodW5zaWdu
ZWQgc2hvcnQgaW50IF9feHN1YmlbM10sCgkJCSAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCgkJCSAgIGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgbHJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y
ZXN0cmljdCBfX2J1ZmZlciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0
aHJvdyAoKSAgOwpleHRlcm4gaW50IG5yYW5kNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hz
dWJpWzNdLAoJCQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJ
CQkgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgogCmV4dGVy
biBpbnQgbXJhbmQ0OF9yICAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZl
ciwKCQkJICAgbG9uZyBpbnQgKl9fcmVzdHJpY3QgX19yZXN1bHQpICB0aHJvdyAoKSAgOwpleHRl
cm4gaW50IGpyYW5kNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAoJCQkgICBz
dHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAoJCQkgICBsb25nIGludCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgc3JhbmQ0OF9y
ICAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgIHRo
cm93ICgpICA7CgpleHRlcm4gaW50IHNlZWQ0OF9yICAodW5zaWduZWQgc2hvcnQgaW50IF9fc2Vl
ZDE2dlszXSwKCQkJICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgIHRocm93ICgpICA7
CgpleHRlcm4gaW50IGxjb25nNDhfciAgKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddLAoJ
CQkgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikgIHRocm93ICgpICA7CgoKCgoKCiNk
ZWZpbmUgX19tYWxsb2NfYW5kX2NhbGxvY19kZWZpbmVkCiAKZXh0ZXJuIHZvaWQgKiAgbWFsbG9j
ICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIHZvaWQgKiAgY2FsbG9jICAo
c2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4g
dm9pZCAqICByZWFsbG9jICAodm9pZCAqICBfX3B0ciwgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIHZvaWQgZnJlZSAgKHZvaWQgKiAgX19wdHIpICB0aHJvdyAoKSAgOwoKCiAK
ZXh0ZXJuIHZvaWQgY2ZyZWUgICh2b2lkICogIF9fcHRyKSAgdGhyb3cgKCkgIDsKCgoKIyAxICIv
dXNyL2luY2x1ZGUvYWxsb2NhLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgCV9B
TExPQ0FfSAkxCgoKCiNkZWZpbmUgCV9fbmVlZF9zaXplX3QKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgogCgogCgoKIyAxMjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251
L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUv
c3RkZGVmLmgiIDMKCgogCgoKCgogCgogCgoKIyAxODggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCiN1bmRlZiAJX19uZWVkX3NpemVfdAoKCgogCgoKCgogCgoKIyAy
NjkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoK
CgoKCiAKCiAKCiMgMzE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4z
L2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAz
CgoKCgogCgoKI3VuZGVmIE5VTEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKCgoKCiAKCgoK
CgoKCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxvY2EuaCIgMiAzCgoKZXh0ZXJuICJDIiB7IAoKIAoK
CiAKZXh0ZXJuIHZvaWQgKiAgYWxsb2NhICAoc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7CgoK
I2RlZmluZSBhbGxvY2Eoc2l6ZSkJX19idWlsdGluX2FsbG9jYSAoc2l6ZSkKCgp9IAoKCiMgNDky
ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKCgoKIApleHRlcm4gdm9pZCAqICB2YWxsb2Mg
IChzaXplX3QgX19zaXplKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gdm9pZCBhYm9ydCAgKHZv
aWQpICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogCmV4dGVy
biBpbnQgYXRleGl0ICAodm9pZCAoKl9fZnVuYykgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgogCgpl
eHRlcm4gaW50IF9fb25fZXhpdCAgKHZvaWQgKCpfX2Z1bmMpIChpbnQgX19zdGF0dXMsIHZvaWQg
KiAgX19hcmcpLAoJCQkgICB2b2lkICogIF9fYXJnKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBv
bl9leGl0ICAodm9pZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqICBfX2FyZyksCgkJ
CSB2b2lkICogIF9fYXJnKSAgdGhyb3cgKCkgIDsKCgogCgoKZXh0ZXJuIHZvaWQgZXhpdCAgKGlu
dCBfX3N0YXR1cykgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
CgoKCgoKCiAKZXh0ZXJuIGNoYXIgKmdldGVudiAgKF9fY29uc3QgY2hhciAqX19uYW1lKSAgdGhy
b3cgKCkgIDsKCiAKCmV4dGVybiBjaGFyICpfX3NlY3VyZV9nZXRlbnYgIChfX2NvbnN0IGNoYXIg
Kl9fbmFtZSkgIHRocm93ICgpICA7CgoKIAogCgpleHRlcm4gaW50IHB1dGVudiAgKGNoYXIgKl9f
c3RyaW5nKSAgdGhyb3cgKCkgIDsKCgoKIAoKZXh0ZXJuIGludCBzZXRlbnYgIChfX2NvbnN0IGNo
YXIgKl9fbmFtZSwgX19jb25zdCBjaGFyICpfX3ZhbHVlLAoJCQlpbnQgX19yZXBsYWNlKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgdW5zZXRlbnYgIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
IHRocm93ICgpICA7CgoKCiAKCgpleHRlcm4gaW50IGNsZWFyZW52ICAodm9pZCkgIHRocm93ICgp
ICA7CgoKCgogCgoKCmV4dGVybiBjaGFyICpta3RlbXAgIChjaGFyICpfX3RlbXBsYXRlKSAgdGhy
b3cgKCkgIDsKCiAKCgoKCmV4dGVybiBpbnQgbWtzdGVtcCAgKGNoYXIgKl9fdGVtcGxhdGUpICB0
aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgc3lzdGVtICAoX19jb25zdCBjaGFyICpfX2NvbW1h
bmQpICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKIAoKCgoKCmV4dGVybiBjaGFyICpyZWFscGF0aCAg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJCSAgICBjaGFyICpfX3Jlc3RyaWN0
IF9fcmVzb2x2ZWQpICB0aHJvdyAoKSAgOwoKCgogCgojZGVmaW5lIF9fQ09NUEFSX0ZOX1QKdHlw
ZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KSAgKF9fY29uc3Qgdm9pZCAqICwgX19jb25zdCB2b2lk
ICogKSAgOwoKCgoKCgogCgpleHRlcm4gdm9pZCAqICBic2VhcmNoICAoX19jb25zdCB2b2lkICog
IF9fa2V5LCBfX2NvbnN0IHZvaWQgKiAgX19iYXNlLAoJCQkgICAgICAgc2l6ZV90IF9fbm1lbWIs
IHNpemVfdCBfX3NpemUsCgkJCSAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKSAgOwoKIAoK
ZXh0ZXJuIHZvaWQgcXNvcnQgICh2b2lkICogIF9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNpemVf
dCBfX3NpemUsCgkJCSAgX19jb21wYXJfZm5fdCBfX2NvbXBhcikgIDsKCgogCmV4dGVybiBpbnQg
YWJzICAoaW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpl
eHRlcm4gbG9uZyBpbnQgbGFicyAgKGxvbmcgaW50IF9feCkgIHRocm93ICgpICAgX19hdHRyaWJ1
dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgogCgogCmV4dGVybiBkaXZfdCBkaXYgIChpbnQgX19u
dW1lciwgaW50IF9fZGVub20pICB0aHJvdyAoKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p
KTsKZXh0ZXJuIGxkaXZfdCBsZGl2ICAobG9uZyBpbnQgX19udW1lciwgbG9uZyBpbnQgX19kZW5v
bSkgIHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKCgoK
IAoKCiAKCgpleHRlcm4gY2hhciAqZWN2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQs
IGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhy
b3cgKCkgIDsKCiAKCgpleHRlcm4gY2hhciAqZmN2dCAgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19u
ZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19zaWdu
KSAgdGhyb3cgKCkgIDsKCiAKCgpleHRlcm4gY2hhciAqZ2N2dCAgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGNoYXIgKl9fYnVmKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGNoYXIgKnFl
Y3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGludCAqX19yZXN0
cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGNoYXIgKnFmY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwKCQkJIGlu
dCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKSAgdGhyb3cgKCkg
IDsKZXh0ZXJuIGNoYXIgKnFnY3Z0ICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdp
dCwgY2hhciAqX19idWYpICB0aHJvdyAoKSAgOwoKCgogCgpleHRlcm4gaW50IGVjdnRfciAgKGRv
dWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlp
bnQgKl9fcmVzdHJpY3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQlzaXplX3Qg
X19sZW4pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGZjdnRfciAgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAoJCQlpbnQgKl9fcmVzdHJpY3Qg
X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQlzaXplX3QgX19sZW4pICB0aHJvdyAo
KSAgOwoKZXh0ZXJuIGludCBxZWN2dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25k
aWdpdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWdu
LAoJCQkgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsK
ZXh0ZXJuIGludCBxZmN2dF9yICAobG9uZyBkb3VibGUgIF9fdmFsdWUsIGludCBfX25kaWdpdCwK
CQkJIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduLAoJCQkg
Y2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fbGVuKSAgdGhyb3cgKCkgIDsKCgoKCiAK
CmV4dGVybiBpbnQgbWJsZW4gIChfX2NvbnN0IGNoYXIgKl9fcywgc2l6ZV90IF9fbikgIHRocm93
ICgpICA7CiAKCmV4dGVybiBpbnQgbWJ0b3djICAod2NoYXJfdCAqX19yZXN0cmljdCBfX3B3YywK
CQkJX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgIHRocm93ICgpICA7
CiAKCmV4dGVybiBpbnQgd2N0b21iICAoY2hhciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpICB0aHJv
dyAoKSAgOwoKCiAKZXh0ZXJuIHNpemVfdCBtYnN0b3djcyAgKHdjaGFyX3QgKl9fcmVzdHJpY3Qg
IF9fcHdjcywKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19u
KSAgdGhyb3cgKCkgIDsKIApleHRlcm4gc2l6ZV90IHdjc3RvbWJzICAoY2hhciAqX19yZXN0cmlj
dCBfX3MsCgkJCSAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90
IF9fbikgIHRocm93ICgpICA7CgoKCiAKCgoKZXh0ZXJuIGludCBycG1hdGNoICAoX19jb25zdCBj
aGFyICpfX3Jlc3BvbnNlKSAgdGhyb3cgKCkgIDsKCgoKIyA3MzIgIi91c3IvaW5jbHVkZS9zdGRs
aWIuaCIgMwoKCgojIDc1NiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCgoKIyA3NjYgIi91c3Iv
aW5jbHVkZS9zdGRsaWIuaCIgMwoKCgoKCn0gCgoKIyA1NCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMiAzCgoKIyAxICIvdXNyL2lu
Y2x1ZGUvYXNzZXJ0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgojIDMyICIvdXNyL2lu
Y2x1ZGUvYXNzZXJ0LmgiIDMKCgojZGVmaW5lIAlfQVNTRVJUX0gJMQoKCiAKCgoKCiMgNTYgIi91
c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCmV4dGVybiAiQyIgeyAKCiAKZXh0ZXJuIHZvaWQgX19h
c3NlcnRfZmFpbCAgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sCgkJCQlfX2NvbnN0IGNoYXIg
Kl9fZmlsZSwKCQkJCXVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQlfX2NvbnN0IGNoYXIgKl9fZnVu
Y3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoK
IApleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAgKGludCBfX2Vycm51bSwKCQkJCSAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgX19saW5l
LAoJCQkJICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikgIHRocm93ICgpICAKICAgICBf
X2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cgp9IAoKI2RlZmluZSBhc3NlcnQoZXhwcikJ
KCh2b2lkKSAoKGV4cHIpID8gMCA6CShfX2Fzc2VydF9mYWlsIChfX1NUUklORyhleHByKSwJX19G
SUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTiksIDApKSkKCgoKCgoKCgoKCgogCgoK
CgoKCgoKI2RlZmluZSBfX0FTU0VSVF9GVU5DVElPTglfX1BSRVRUWV9GVU5DVElPTl9fCgoKCgoK
CgoKCgoKCiMgNTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvc3RsX2FsbG9jLmgiIDIgMwoKCiNkZWZpbmUgX19SRVNUUklDVAoKCgoKCgoKCgogICAgIAog
ICAgIAogICAgIAojIDEgIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgiIDEgMwogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCgoKI2RlZmluZSBfUFRIUkVBRF9ICTEKCgoKIyAxICIvdXNyL2luY2x1ZGUv
c2NoZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgCV9TQ0hFRF9ICTEKCgoK
IAoKCiNkZWZpbmUgX19uZWVkX3RpbWVzcGVjCiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAz
CiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKIyA1MSAiL3Vzci9pbmNsdWRlL3Rp
bWUuaCIgMwoKCgojIDYyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzCgoKCiMgNzMgIi91c3IvaW5j
bHVkZS90aW1lLmgiIDMKCgoKCiMgODkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCiN1bmRlZiAJ
X19uZWVkX3RpbWVzcGVjCgoKIyAyNzkgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKIyAyOSAi
L3Vzci9pbmNsdWRlL3NjaGVkLmgiIDIgMwoKCiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zY2hl
ZC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKI2RlZmluZSBTQ0hFRF9PVEhF
UgkwCiNkZWZpbmUgU0NIRURfRklGTwkxCiNkZWZpbmUgU0NIRURfUlIJMgoKCiAKI2RlZmluZSBD
U0lHTkFMICAgICAgIDB4MDAwMDAwZmYgCiNkZWZpbmUgQ0xPTkVfVk0gICAgICAweDAwMDAwMTAw
IAojZGVmaW5lIENMT05FX0ZTICAgICAgMHgwMDAwMDIwMCAKI2RlZmluZSBDTE9ORV9GSUxFUyAg
IDB4MDAwMDA0MDAgCiNkZWZpbmUgQ0xPTkVfU0lHSEFORCAweDAwMDAwODAwIAojZGVmaW5lIENM
T05FX1BJRCAgICAgMHgwMDAwMTAwMCAKI2RlZmluZSBDTE9ORV9QVFJBQ0UgIDB4MDAwMDIwMDAg
CiNkZWZpbmUgQ0xPTkVfVkZPUksgICAweDAwMDA0MDAwIAoKCgogCnN0cnVjdCBzY2hlZF9wYXJh
bQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9OwoKZXh0ZXJuICJDIiB7IAoKIAoKZXh0
ZXJuIGludCBjbG9uZSAgKGludCAoKl9fZm4pICh2b2lkICpfX2FyZyksIHZvaWQgKl9fY2hpbGRf
c3RhY2ssCgkJICAgICAgIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZykgIHRocm93ICgpICA7CgoK
fSAKCgoKCgojZGVmaW5lIF9fZGVmaW5lZF9zY2hlZHBhcmFtCTEKIApzdHJ1Y3QgX19zY2hlZF9w
YXJhbQogIHsKICAgIGludCBzY2hlZF9wcmlvcml0eTsKICB9OwoKCiMgMzIgIi91c3IvaW5jbHVk
ZS9zY2hlZC5oIiAyIDMKCgpleHRlcm4gIkMiIHsgCgogCmV4dGVybiBpbnQgX19zY2hlZF9zZXRw
YXJhbSAgKF9fcGlkX3QgX19waWQsCgkJCQkgIF9fY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpf
X3BhcmFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9zZXRwYXJhbSAgKF9fcGlkX3Qg
X19waWQsCgkJCQlfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgp
ICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9nZXRwYXJhbSAgKF9fcGlkX3QgX19waWQsIHN0cnVj
dCBzY2hlZF9wYXJhbSAqX19wYXJhbSkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfZ2V0
cGFyYW0gIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IF9fc2NoZWRfc2V0c2NoZWR1bGVyICAoX19waWRfdCBfX3Bp
ZCwgaW50IF9fcG9saWN5LAoJCQkJICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9f
cGFyYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX3NldHNjaGVkdWxlciAgKF9fcGlk
X3QgX19waWQsIGludCBfX3BvbGljeSwKCQkJCSAgICBfX2NvbnN0IHN0cnVjdCBzY2hlZF9wYXJh
bSAqX19wYXJhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9nZXRzY2hlZHVs
ZXIgIChfX3BpZF90IF9fcGlkKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBzY2hlZF9nZXRzY2hl
ZHVsZXIgIChfX3BpZF90IF9fcGlkKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVk
X3lpZWxkICAodm9pZCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfeWllbGQgICh2b2lk
KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3NjaGVkX2dldF9wcmlvcml0eV9tYXggIChp
bnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHNjaGVkX2dldF9wcmlvcml0
eV9tYXggIChpbnQgX19hbGdvcml0aG0pICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9fc2No
ZWRfZ2V0X3ByaW9yaXR5X21pbiAgKGludCBfX2FsZ29yaXRobSkgIHRocm93ICgpICA7CmV4dGVy
biBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiAgKGludCBfX2FsZ29yaXRobSkgIHRocm93ICgp
ICA7CgogCmV4dGVybiBpbnQgX19zY2hlZF9ycl9nZXRfaW50ZXJ2YWwgIChfX3BpZF90IF9fcGlk
LCBzdHJ1Y3QgdGltZXNwZWMgKl9fdCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgc2NoZWRfcnJf
Z2V0X2ludGVydmFsICAoX19waWRfdCBfX3BpZCwgc3RydWN0IHRpbWVzcGVjICpfX3QpICB0aHJv
dyAoKSAgOwoKfSAKCgojIDIwICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgojZGVmaW5l
IF9USU1FX0gJMQoKCmV4dGVybiAiQyIgeyAKCgoKCiAKI2RlZmluZSBfX25lZWRfc2l6ZV90CiNk
ZWZpbmUgX19uZWVkX05VTEwKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKCgoKCgoKIAoKCiMgMTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3Rk
ZGVmLmgiIDMKCgoKIAoKCiAKCgoKCgogCgoKIyA2MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5j
bHVkZS9zdGRkZWYuaCIgMwoKCiAKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgogCgog
CgoKIyAxMjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoK
CgogCgogCgoKIyAxODggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMK
CiN1bmRlZiAJX19uZWVkX3NpemVfdAoKCgogCgoKCgogCgoKIyAyNjkgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgoKCgoKCgoKCgoKCgoKCiAKCiAKCiMgMzE3ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgogCgoKI3VuZGVmIE5V
TEwJCQoKI2RlZmluZSBOVUxMIF9fbnVsbAoKCgoKI3VuZGVmIAlfX25lZWRfTlVMTAoKCgogCgoK
CgoKCgojIDM4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgojIDEgIi91c3IvaW5jbHVk
ZS9iaXRzL3RpbWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiNkZWZpbmUgX0JJ
VFNfVElNRV9ICTEKCiAKCgogCgoKI2RlZmluZSBDTE9DS1NfUEVSX1NFQyAgMTAwMDAwMAoKCiAK
CiNkZWZpbmUgQ0xLX1RDSyAxMDAKCgoKCgojIDU5ICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgi
IDMKIAojIDQyICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgogCgoKCgoKCgoKCgojZGVmaW5l
IF9fY2xvY2tfdF9kZWZpbmVkCTEKCgoKIAp0eXBlZGVmIF9fY2xvY2tfdCBjbG9ja190OwoKCgoK
IyA3MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwoKCgoKIyA4OSAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMwoKCgoKCiAKc3RydWN0IHRtCnsKICBpbnQgdG1fc2VjOwkJCSAKICBpbnQgdG1fbWluOwkJ
CSAKICBpbnQgdG1faG91cjsJCQkgCiAgaW50IHRtX21kYXk7CQkJIAogIGludCB0bV9tb247CQkJ
IAogIGludCB0bV95ZWFyOwkJCSAKICBpbnQgdG1fd2RheTsJCQkgCiAgaW50IHRtX3lkYXk7CQkJ
IAogIGludCB0bV9pc2RzdDsJCQkgCgoKICBsb25nIGludCB0bV9nbXRvZmY7CQkgCiAgX19jb25z
dCBjaGFyICp0bV96b25lOwkgCgoKCgp9OwoKCiAKCmV4dGVybiBjbG9ja190IGNsb2NrICAodm9p
ZCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZSAgKHRpbWVfdCAqX190aW1lcikg
IHRocm93ICgpICA7CgogCmV4dGVybiBkb3VibGUgZGlmZnRpbWUgICh0aW1lX3QgX190aW1lMSwg
dGltZV90IF9fdGltZTApICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf
XykpOwoKIApleHRlcm4gdGltZV90IG1rdGltZSAgKHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgp
ICA7CgoKIAoKCmV4dGVybiBzaXplX3Qgc3RyZnRpbWUgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywg
c2l6ZV90IF9fbWF4c2l6ZSwKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt
YXQsCgkJCSAgICAgX19jb25zdCBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgIHRocm93ICgp
ICA7CgoKCgoKCgoKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAgKF9fY29uc3QgdGltZV90
ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1Y3QgdG0gKmxvY2FsdGltZSAg
KF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cgKCkgIDsKCgogCgpleHRlcm4gc3RydWN0
IHRtICpfX2dtdGltZV9yICAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKCQkJ
CSAgIHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIHN0cnVj
dCB0bSAqZ210aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAoJCQkJ
IHN0cnVjdCB0bSAqX19yZXN0cmljdCBfX3RwKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBzdHJ1
Y3QgdG0gKmxvY2FsdGltZV9yICAoX19jb25zdCB0aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwK
CQkJCSAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX190cCkgIHRocm93ICgpICA7CgoKIAoKZXh0
ZXJuIGNoYXIgKmFzY3RpbWUgIChfX2NvbnN0IHN0cnVjdCB0bSAqX190cCkgIHRocm93ICgpICA7
CgogCmV4dGVybiBjaGFyICpjdGltZSAgKF9fY29uc3QgdGltZV90ICpfX3RpbWVyKSAgdGhyb3cg
KCkgIDsKCgogCgogCgpleHRlcm4gY2hhciAqYXNjdGltZV9yICAoX19jb25zdCBzdHJ1Y3QgdG0g
Kl9fcmVzdHJpY3QgX190cCwKCQkJICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGNoYXIgKmN0aW1lX3IgIChfX2NvbnN0IHRpbWVfdCAqX19yZXN0cmlj
dCBfX3RpbWVyLAoJCQkgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmKSAgdGhyb3cgKCkgIDsKCgoK
IApleHRlcm4gY2hhciAqX190em5hbWVbMl07CSAKZXh0ZXJuIGludCBfX2RheWxpZ2h0OwkJIApl
eHRlcm4gbG9uZyBpbnQgX190aW1lem9uZTsJIAoKCgogCmV4dGVybiBjaGFyICp0em5hbWVbMl07
CgogCgpleHRlcm4gdm9pZCB0enNldCAgKHZvaWQpICB0aHJvdyAoKSAgOwoKCgpleHRlcm4gaW50
IGRheWxpZ2h0OwpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoKCiAKCmV4dGVybiBpbnQgc3Rp
bWUgIChfX2NvbnN0IHRpbWVfdCAqX193aGVuKSAgdGhyb3cgKCkgIDsKCgoKIAoKI2RlZmluZSBf
X2lzbGVhcCh5ZWFyKQkoKHllYXIpICUgNCA9PSAwICYmICgoeWVhcikgJSAxMDAgIT0gMCB8fCAo
eWVhcikgJSA0MDAgPT0gMCkpCgoKCgogCgoKIApleHRlcm4gdGltZV90IHRpbWVnbSAgKHN0cnVj
dCB0bSAqX190cCkgIHRocm93ICgpICA7CgogCmV4dGVybiB0aW1lX3QgdGltZWxvY2FsICAoc3Ry
dWN0IHRtICpfX3RwKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBkeXNpemUgIChpbnQgX195
ZWFyKSAgdGhyb3cgKCkgIDsKCgoKCiAKZXh0ZXJuIGludCBuYW5vc2xlZXAgIChfX2NvbnN0IHN0
cnVjdCB0aW1lc3BlYyAqX19yZXF1ZXN0ZWRfdGltZSwKCQkJICAgc3RydWN0IHRpbWVzcGVjICpf
X3JlbWFpbmluZykgIHRocm93ICgpICA7CgoKCiMgMjY0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAz
CgoKIyAyNzQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKCgoKfSAKCgoKCiMgMjEgIi91c3IvaW5j
bHVkZS9wdGhyZWFkLmgiIDIgMwoKCiNkZWZpbmUgX19uZWVkX3NpZ3NldF90CiMgMSAiL3Vzci9p
bmNsdWRlL3NpZ25hbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCgpleHRl
cm4gIkMiIHsgCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCgojIDMzICIvdXNyL2luY2x1ZGUvYml0cy9zaWdzZXQuaCIgMwoKCgogCgoKCgoK
IyAxMjUgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3NldC5oIiAzCgojIDMzICIvdXNyL2luY2x1ZGUv
c2lnbmFsLmgiIDIgMwoKCiAKCgoKCgoKCgoKCgojdW5kZWYgX19uZWVkX3NpZ3NldF90CiNkZWZp
bmUgX19zaWdzZXRfdF9kZWZpbmVkCTEKdHlwZWRlZiBfX3NpZ3NldF90IHNpZ3NldF90OwoKCgoj
IDM2MCAiL3Vzci9pbmNsdWRlL3NpZ25hbC5oIiAzCgoKfSAKCgojIDI0ICIvdXNyL2luY2x1ZGUv
cHRocmVhZC5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEg
MwogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCgoKCgoKCiNkZWZpbmUgX0JJVFNfUFRIUkVBRFRZ
UEVTX0gJMQoKI2RlZmluZSBfX25lZWRfc2NoZWRwYXJhbQojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3NjaGVkLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDYyICIvdXNyL2luY2x1ZGUvYml0
cy9zY2hlZC5oIiAzCgoKIyA3MyAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwoKIyAyMyAi
L3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDIgMwoKCiAKc3RydWN0IF9wdGhyZWFk
X2Zhc3Rsb2NrCnsKICBsb25nIGludCBfX3N0YXR1czsgICAgICAgICAgICAgCiAgaW50IF9fc3Bp
bmxvY2s7ICAgICAgICAgICAgICAgIAp9OwoKCiAKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVz
Y3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKI2RlZmluZSBfUFRIUkVBRF9ERVNDUl9ERUZJTkVE
CgoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2RldGFjaHN0YXRlOwogIGludCBfX3NjaGVk
cG9saWN5OwogIHN0cnVjdCBfX3NjaGVkX3BhcmFtIF9fc2NoZWRwYXJhbTsKICBpbnQgX19pbmhl
cml0c2NoZWQ7CiAgaW50IF9fc2NvcGU7CiAgc2l6ZV90IF9fZ3VhcmRzaXplOwogIGludCBfX3N0
YWNrYWRkcl9zZXQ7CiAgdm9pZCAqX19zdGFja2FkZHI7CiAgc2l6ZV90IF9fc3RhY2tzaXplOwp9
IHB0aHJlYWRfYXR0cl90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9m
YXN0bG9jayBfX2NfbG9jazsgIAogIF9wdGhyZWFkX2Rlc2NyIF9fY193YWl0aW5nOyAgICAgICAg
IAp9IHB0aHJlYWRfY29uZF90OwoKCiAKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9
IHB0aHJlYWRfY29uZGF0dHJfdDsKCiAKdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHRocmVhZF9rZXlf
dDsKCgogCiAKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19tX3Jlc2VydmVkOyAgICAgICAgICAg
ICAgICAKICBpbnQgX19tX2NvdW50OyAgICAgICAgICAgICAgICAgICAKICBfcHRocmVhZF9kZXNj
ciBfX21fb3duZXI7ICAgICAgICAKICBpbnQgX19tX2tpbmQ7ICAgICAgICAgICAgICAgICAgICAK
ICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7ICAKfSBwdGhyZWFkX211dGV4X3Q7
CgoKIAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5kOwp9IHB0aHJlYWRfbXV0ZXhh
dHRyX3Q7CgoKIAp0eXBlZGVmIGludCBwdGhyZWFkX29uY2VfdDsKCgojIDExNiAiL3Vzci9pbmNs
dWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDMKCgoKIAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50
IHB0aHJlYWRfdDsKCgojIDI1ICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAyIDMKCgoKZXh0ZXJu
ICJDIiB7IAoKIAoKI2RlZmluZSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSIHswLCAwLCAwLCBQ
VEhSRUFEX01VVEVYX0ZBU1RfTlAsIHswLCAwfX0KCgoKCgoKI2RlZmluZSBQVEhSRUFEX0NPTkRf
SU5JVElBTElaRVIge3swLCAwfSwgMH0KCgoKCgoKCiAKCmVudW0KewogIFBUSFJFQURfQ1JFQVRF
X0pPSU5BQkxFLAojZGVmaW5lIFBUSFJFQURfQ1JFQVRFX0pPSU5BQkxFCVBUSFJFQURfQ1JFQVRF
X0pPSU5BQkxFCiAgUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQKI2RlZmluZSBQVEhSRUFEX0NSRUFU
RV9ERVRBQ0hFRAlQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAp9OwoKZW51bQp7CiAgUFRIUkVBRF9J
TkhFUklUX1NDSEVELAojZGVmaW5lIFBUSFJFQURfSU5IRVJJVF9TQ0hFRAlQVEhSRUFEX0lOSEVS
SVRfU0NIRUQKICBQVEhSRUFEX0VYUExJQ0lUX1NDSEVECiNkZWZpbmUgUFRIUkVBRF9FWFBMSUNJ
VF9TQ0hFRAlQVEhSRUFEX0VYUExJQ0lUX1NDSEVECn07CgplbnVtCnsKICBQVEhSRUFEX1NDT1BF
X1NZU1RFTSwKI2RlZmluZSBQVEhSRUFEX1NDT1BFX1NZU1RFTQlQVEhSRUFEX1NDT1BFX1NZU1RF
TQogIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwojZGVmaW5lIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwlQ
VEhSRUFEX1NDT1BFX1BST0NFU1MKfTsKCmVudW0KewogIFBUSFJFQURfTVVURVhfRkFTVF9OUCwK
ICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRV9OUCwKICBQVEhSRUFEX01VVEVYX0VSUk9SQ0hFQ0tf
TlAKCgoKCgoKCn07CgplbnVtCnsKICBQVEhSRUFEX1BST0NFU1NfUFJJVkFURSwKI2RlZmluZSBQ
VEhSRUFEX1BST0NFU1NfUFJJVkFURQlQVEhSRUFEX1BST0NFU1NfUFJJVkFURQogIFBUSFJFQURf
UFJPQ0VTU19TSEFSRUQKI2RlZmluZSBQVEhSRUFEX1BST0NFU1NfU0hBUkVECVBUSFJFQURfUFJP
Q0VTU19TSEFSRUQKfTsKCiMgMTAzICIvdXNyL2luY2x1ZGUvcHRocmVhZC5oIiAzCgoKI2RlZmlu
ZSBQVEhSRUFEX09OQ0VfSU5JVCAwCgogCgpzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIK
ewogIHZvaWQgKCpfX3JvdXRpbmUpICAodm9pZCAqKSAgOwkgICAKICB2b2lkICpfX2FyZzsJCQkJ
ICAgCiAgaW50IF9fY2FuY2VsdHlwZTsJCQkgICAKICBzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9i
dWZmZXIgKl9fcHJldjsgIAp9OwoKIAoKZW51bQp7CiAgUFRIUkVBRF9DQU5DRUxfRU5BQkxFLAoj
ZGVmaW5lIFBUSFJFQURfQ0FOQ0VMX0VOQUJMRQlQVEhSRUFEX0NBTkNFTF9FTkFCTEUKICBQVEhS
RUFEX0NBTkNFTF9ESVNBQkxFCiNkZWZpbmUgUFRIUkVBRF9DQU5DRUxfRElTQUJMRQlQVEhSRUFE
X0NBTkNFTF9ESVNBQkxFCn07CmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVELAojZGVm
aW5lIFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVECVBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVECiAgUFRI
UkVBRF9DQU5DRUxfQVNZTkNIUk9OT1VTCiNkZWZpbmUgUFRIUkVBRF9DQU5DRUxfQVNZTkNIUk9O
T1VTCVBUSFJFQURfQ0FOQ0VMX0FTWU5DSFJPTk9VUwp9OwojZGVmaW5lIFBUSFJFQURfQ0FOQ0VM
RUQgKCh2b2lkICopIC0xKQoKCiAKCiAKCgpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlICAocHRo
cmVhZF90ICpfX3RocmVhZCwKCQkJCV9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CXZvaWQgKigqX19zdGFydF9yb3V0aW5lKSAodm9pZCAqKSwKCQkJCXZvaWQgKl9fYXJnKSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIHB0aHJlYWRfdCBwdGhyZWFkX3NlbGYgICh2b2lkKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2VxdWFsICAocHRocmVhZF90IF9fdGhyZWFkMSwg
cHRocmVhZF90IF9fdGhyZWFkMikgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIHB0aHJlYWRf
ZXhpdCAgKHZvaWQgKl9fcmV0dmFsKSAgdGhyb3cgKCkgICBfX2F0dHJpYnV0ZV9fICgoX19ub3Jl
dHVybl9fKSk7CgogCgoKZXh0ZXJuIGludCBwdGhyZWFkX2pvaW4gIChwdGhyZWFkX3QgX190aCwg
dm9pZCAqKl9fdGhyZWFkX3JldHVybikgIHRocm93ICgpICA7CgogCgoKCmV4dGVybiBpbnQgcHRo
cmVhZF9kZXRhY2ggIChwdGhyZWFkX3QgX190aCkgIHRocm93ICgpICA7CgoKIAoKIAoKCmV4dGVy
biBpbnQgcHRocmVhZF9hdHRyX2luaXQgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyKSAgdGhyb3cg
KCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZGVzdHJveSAgKHB0aHJlYWRfYXR0cl90
ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRkZXRh
Y2hzdGF0ZSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAgICBpbnQgX19kZXRhY2hz
dGF0ZSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldGRldGFjaHN0
YXRlICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAgICAgaW50ICpfX2Rl
dGFjaHN0YXRlKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2No
ZWRwYXJhbSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkgICAgICAgIF9fY29uc3Qgc3Ry
dWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfZ2V0c2NoZWRwYXJhbSAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwK
CQkJCQkgICAgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c2NoZWRwb2xpY3kgIChwdGhyZWFkX2F0dHJfdCAqX19h
dHRyLAoJCQkJCSAgICAgaW50IF9fcG9saWN5KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfZ2V0c2NoZWRwb2xpY3kgIChfX2NvbnN0IHB0aHJlYWRfYXR0cl90ICpfX2F0
dHIsCgkJCQkJICAgICBpbnQgKl9fcG9saWN5KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CQkgICAgICBpbnQgX19pbmhlcml0KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFk
X2F0dHJfZ2V0aW5oZXJpdHNjaGVkICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJ
CQkJCSAgICAgIGludCAqX19pbmhlcml0KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhy
ZWFkX2F0dHJfc2V0c2NvcGUgIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgX19zY29wZSkg
IHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHNjb3BlICAoX19jb25z
dCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJICAgICAgIGludCAqX19zY29wZSkgIHRocm93
ICgpICA7CgojIDIyNCAiL3Vzci9pbmNsdWRlL3B0aHJlYWQuaCIgMwoKCiAKCgoKZXh0ZXJuIGlu
dCBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyICAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CQkgICB2b2lkICpfX3N0YWNrYWRkcikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVh
ZF9hdHRyX2dldHN0YWNrYWRkciAgKF9fY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKCQkJ
CQkgICB2b2lkICoqX19zdGFja2FkZHIpICB0aHJvdyAoKSAgOwoKIAoKCmV4dGVybiBpbnQgcHRo
cmVhZF9hdHRyX3NldHN0YWNrc2l6ZSAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCgkJCQkJICAg
c2l6ZV90IF9fc3RhY2tzaXplKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBwdGhyZWFkX2F0
dHJfZ2V0c3RhY2tzaXplICAoX19jb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAoJCQkJCSAg
IHNpemVfdCAqX19zdGFja3NpemUpICB0aHJvdyAoKSAgOwoKIAoKIAoKZXh0ZXJuIGludCBwdGhy
ZWFkX3NldHNjaGVkcGFyYW0gIChwdGhyZWFkX3QgX190YXJnZXRfdGhyZWFkLCBpbnQgX19wb2xp
Y3ksCgkJCQkgICAgICAgX19jb25zdCBzdHJ1Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJv
dyAoKSAgOwoKIApleHRlcm4gaW50IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSAgKHB0aHJlYWRfdCBf
X3RhcmdldF90aHJlYWQsCgkJCQkgICAgICAgaW50ICpfX3BvbGljeSwKCQkJCSAgICAgICBzdHJ1
Y3Qgc2NoZWRfcGFyYW0gKl9fcGFyYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoKCgogCgogCgpleHRl
cm4gaW50IF9fcHRocmVhZF9tdXRleF9pbml0ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4LAoJ
CQkJICAgX19jb25zdCBwdGhyZWFkX211dGV4YXR0cl90ICpfX211dGV4X2F0dHIpICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfaW5pdCAgKHB0aHJlYWRfbXV0ZXhfdCAqX19t
dXRleCwKCQkJCSAgIF9fY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqX19tdXRleF9hdHRyKSAg
dGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfZGVzdHJveSAgKHB0aHJl
YWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRl
eF9kZXN0cm95ICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCiAKZXh0
ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfdHJ5bG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRl
eCkgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF90cnlsb2NrICAocHRocmVh
ZF9tdXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRf
bXV0ZXhfbG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CmV4dGVy
biBpbnQgcHRocmVhZF9tdXRleF9sb2NrICAocHRocmVhZF9tdXRleF90ICpfX211dGV4KSAgdGhy
b3cgKCkgIDsKCiAKZXh0ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhfdW5sb2NrICAocHRocmVhZF9t
dXRleF90ICpfX211dGV4KSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X3Vu
bG9jayAgKHB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkgIHRocm93ICgpICA7CgoKIAoKIAoKZXh0
ZXJuIGludCBfX3B0aHJlYWRfbXV0ZXhhdHRyX2luaXQgIChwdGhyZWFkX211dGV4YXR0cl90ICpf
X2F0dHIpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQgIChw
dGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKIApleHRlcm4gaW50IF9f
cHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAgKHB0aHJlYWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikg
IHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZGVzdHJveSAgKHB0aHJl
YWRfbXV0ZXhhdHRyX3QgKl9fYXR0cikgIHRocm93ICgpICA7CgojIDMxNiAiL3Vzci9pbmNsdWRl
L3B0aHJlYWQuaCIgMwoKCgogCgogCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9pbml0ICAocHRo
cmVhZF9jb25kX3QgKl9fY29uZCwKCQkJCSAgIF9fY29uc3QgcHRocmVhZF9jb25kYXR0cl90ICpf
X2NvbmRfYXR0cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Rlc3Ry
b3kgIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dGhyZWFkX2NvbmRfc2lnbmFsICAocHRocmVhZF9jb25kX3QgKl9fY29uZCkgIHRocm93ICgpICA7
CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCAgKHB0aHJlYWRfY29uZF90ICpf
X2NvbmQpICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfd2FpdCAgKHB0
aHJlYWRfY29uZF90ICpfX2NvbmQsCgkJCQkgICBwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpICB0
aHJvdyAoKSAgOwoKIAoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF90aW1lZHdhaXQgIChwdGhy
ZWFkX2NvbmRfdCAqX19jb25kLAoJCQkJCXB0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCwKCQkJCQlf
X2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19hYnN0aW1lKSAgdGhyb3cgKCkgIDsKCiAKCiAKZXh0
ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2luaXQgIChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0
cikgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9kZXN0cm95ICAo
cHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpICB0aHJvdyAoKSAgOwoKCiMgNDA5ICIvdXNyL2lu
Y2x1ZGUvcHRocmVhZC5oIiAzCgoKCiAKCiAKCgoKCgpleHRlcm4gaW50IF9fcHRocmVhZF9rZXlf
Y3JlYXRlICAocHRocmVhZF9rZXlfdCAqX19rZXksCgkJCQkgICAgICB2b2lkICgqX19kZXN0cl9m
dW5jdGlvbikgKHZvaWQgKikpICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IHB0aHJlYWRfa2V5X2Ny
ZWF0ZSAgKHB0aHJlYWRfa2V5X3QgKl9fa2V5LAoJCQkJICAgIHZvaWQgKCpfX2Rlc3RyX2Z1bmN0
aW9uKSAodm9pZCAqKSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9rZXlfZGVs
ZXRlICAocHRocmVhZF9rZXlfdCBfX2tleSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgX19w
dGhyZWFkX3NldHNwZWNpZmljICAocHRocmVhZF9rZXlfdCBfX2tleSwKCQkJCSAgICAgICBfX2Nv
bnN0IHZvaWQgKl9fcG9pbnRlcikgIHRocm93ICgpICA7CmV4dGVybiBpbnQgcHRocmVhZF9zZXRz
cGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXksCgkJCQkgICAgIF9fY29uc3Qgdm9pZCAqX19w
b2ludGVyKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIHZvaWQgKl9fcHRocmVhZF9nZXRzcGVjaWZp
YyAgKHB0aHJlYWRfa2V5X3QgX19rZXkpICB0aHJvdyAoKSAgOwpleHRlcm4gdm9pZCAqcHRocmVh
ZF9nZXRzcGVjaWZpYyAgKHB0aHJlYWRfa2V5X3QgX19rZXkpICB0aHJvdyAoKSAgOwoKCiAKCiAK
CgoKZXh0ZXJuIGludCBfX3B0aHJlYWRfb25jZSAgKHB0aHJlYWRfb25jZV90ICpfX29uY2VfY29u
dHJvbCwKCQkJCXZvaWQgKCpfX2luaXRfcm91dGluZSkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKZXh0
ZXJuIGludCBwdGhyZWFkX29uY2UgIChwdGhyZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCgkJ
CSAgICAgIHZvaWQgKCpfX2luaXRfcm91dGluZSkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKCgogCgog
CgpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y2FuY2Vsc3RhdGUgIChpbnQgX19zdGF0ZSwgaW50ICpf
X29sZHN0YXRlKSAgdGhyb3cgKCkgIDsKCiAKCmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWx0
eXBlICAoaW50IF9fdHlwZSwgaW50ICpfX29sZHR5cGUpICB0aHJvdyAoKSAgOwoKIApleHRlcm4g
aW50IHB0aHJlYWRfY2FuY2VsICAocHRocmVhZF90IF9fdGhyZWFkKSAgdGhyb3cgKCkgIDsKCiAK
CgpleHRlcm4gdm9pZCBwdGhyZWFkX3Rlc3RjYW5jZWwgICh2b2lkKSAgdGhyb3cgKCkgIDsKCgog
CgoKCgoKCiNkZWZpbmUgcHRocmVhZF9jbGVhbnVwX3B1c2gocm91dGluZSxhcmcpCXsgc3RydWN0
IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyIF9idWZmZXI7CV9wdGhyZWFkX2NsZWFudXBfcHVzaCAo
Jl9idWZmZXIsIChyb3V0aW5lKSwgKGFyZykpOwoKCgpleHRlcm4gdm9pZCBfcHRocmVhZF9jbGVh
bnVwX3B1c2ggIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVmZmVyLAoJCQkJ
CXZvaWQgKCpfX3JvdXRpbmUpICh2b2lkICopLAoJCQkJCXZvaWQgKl9fYXJnKSAgdGhyb3cgKCkg
IDsKCiAKCgojZGVmaW5lIHB0aHJlYWRfY2xlYW51cF9wb3AoZXhlY3V0ZSkJX3B0aHJlYWRfY2xl
YW51cF9wb3AgKCZfYnVmZmVyLCAoZXhlY3V0ZSkpOyB9CgoKZXh0ZXJuIHZvaWQgX3B0aHJlYWRf
Y2xlYW51cF9wb3AgIChzdHJ1Y3QgX3B0aHJlYWRfY2xlYW51cF9idWZmZXIgKl9fYnVmZmVyLAoJ
CQkJICAgICAgIGludCBfX2V4ZWN1dGUpICB0aHJvdyAoKSAgOwoKIAoKCiMgNTE1ICIvdXNyL2lu
Y2x1ZGUvcHRocmVhZC5oIiAzCgoKIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NpZ3RocmVhZC5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBfQklUU19TSUdUSFJFQURfSAkxCgoK
CgoKIAoKIAoKZXh0ZXJuIGludCBwdGhyZWFkX3NpZ21hc2sgIChpbnQgX19ob3csIF9fY29uc3Qg
X19zaWdzZXRfdCAqX19uZXdtYXNrLAoJCQkJIF9fc2lnc2V0X3QgKl9fb2xkbWFzaykgIHRocm93
ICgpICA7CgogCmV4dGVybiBpbnQgcHRocmVhZF9raWxsICAocHRocmVhZF90IF9fdGhyZWFkLCBp
bnQgX19zaWdubykgIHRocm93ICgpICA7CgoKIyA1MTggIi91c3IvaW5jbHVkZS9wdGhyZWFkLmgi
IDIgMwoKCgogCgogCgoKCgoKCgoKCgpleHRlcm4gaW50IF9fcHRocmVhZF9hdGZvcmsgICh2b2lk
ICgqX19wcmVwYXJlKSAodm9pZCksCgkJCQkgIHZvaWQgKCpfX3BhcmVudCkgKHZvaWQpLAoJCQkJ
ICB2b2lkICgqX19jaGlsZCkgKHZvaWQpKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBwdGhyZWFk
X2F0Zm9yayAgKHZvaWQgKCpfX3ByZXBhcmUpICh2b2lkKSwKCQkJCXZvaWQgKCpfX3BhcmVudCkg
KHZvaWQpLAoJCQkJdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkgIHRocm93ICgpICA7CgogCgoKZXh0
ZXJuIHZvaWQgcHRocmVhZF9raWxsX290aGVyX3RocmVhZHNfbnAgICh2b2lkKSAgdGhyb3cgKCkg
IDsKCgogCmV4dGVybiB2b2lkIF9fcHRocmVhZF9pbml0aWFsaXplICAodm9pZCkgIHRocm93ICgp
ICA7Cgp9IAoKCiMgNzEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUv
ZysrLTMvc3RsX2FsbG9jLmgiIDIgMwoKI2RlZmluZSBfX05PREVfQUxMT0NBVE9SX0xPQ0sgaWYg
KHRocmVhZHMpIHB0aHJlYWRfbXV0ZXhfbG9jaygmX1Nfbm9kZV9hbGxvY2F0b3JfbG9jaykKCiNk
ZWZpbmUgX19OT0RFX0FMTE9DQVRPUl9VTkxPQ0sgaWYgKHRocmVhZHMpIHB0aHJlYWRfbXV0ZXhf
dW5sb2NrKCZfU19ub2RlX2FsbG9jYXRvcl9sb2NrKQoKI2RlZmluZSBfX05PREVfQUxMT0NBVE9S
X1RIUkVBRFMgdHJ1ZQojZGVmaW5lIF9fVk9MQVRJTEUgdm9sYXRpbGUgIAoKIyA4NyAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxsb2MuaCIgMwoK
IyA5NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxp
Yi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxf
YWxsb2MuaCIgMwoKIyAxMTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDMKCgoKCgoKCgoKIAoKCgoKCiAKIAoKCgoKCgoKCgp0ZW1w
bGF0ZSA8aW50IF9faW5zdD4KY2xhc3MgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGUgewoKcHJpdmF0
ZToKCiAgc3RhdGljIHZvaWQqIF9TX29vbV9tYWxsb2Moc2l6ZV90KTsKICBzdGF0aWMgdm9pZCog
X1Nfb29tX3JlYWxsb2Modm9pZCosIHNpemVfdCk7CgoKICBzdGF0aWMgdm9pZCAoKiBfX21hbGxv
Y19hbGxvY19vb21faGFuZGxlcikoKTsKCgpwdWJsaWM6CgogIHN0YXRpYyB2b2lkKiBhbGxvY2F0
ZShzaXplX3QgX19uKQogIHsKICAgIHZvaWQqIF9fcmVzdWx0ID0gbWFsbG9jKF9fbik7CiAgICBp
ZiAoMCA9PSBfX3Jlc3VsdCkgX19yZXN1bHQgPSBfU19vb21fbWFsbG9jKF9fbik7CiAgICByZXR1
cm4gX19yZXN1bHQ7CiAgfQoKICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6
ZV90ICApCiAgewogICAgZnJlZShfX3ApOwogIH0KCiAgc3RhdGljIHZvaWQqIHJlYWxsb2NhdGUo
dm9pZCogX19wLCBzaXplX3QgICwgc2l6ZV90IF9fbmV3X3N6KQogIHsKICAgIHZvaWQqIF9fcmVz
dWx0ID0gcmVhbGxvYyhfX3AsIF9fbmV3X3N6KTsKICAgIGlmICgwID09IF9fcmVzdWx0KSBfX3Jl
c3VsdCA9IF9TX29vbV9yZWFsbG9jKF9fcCwgX19uZXdfc3opOwogICAgcmV0dXJuIF9fcmVzdWx0
OwogIH0KCiAgc3RhdGljIHZvaWQgKCogX19zZXRfbWFsbG9jX2hhbmRsZXIodm9pZCAoKl9fZiko
KSkpKCkKICB7CiAgICB2b2lkICgqIF9fb2xkKSgpID0gX19tYWxsb2NfYWxsb2Nfb29tX2hhbmRs
ZXI7CiAgICBfX21hbGxvY19hbGxvY19vb21faGFuZGxlciA9IF9fZjsKICAgIHJldHVybihfX29s
ZCk7CiAgfQoKfTsKCiAKCgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4Kdm9pZCAoKiBfX21hbGxvY19h
bGxvY190ZW1wbGF0ZTxfX2luc3Q+OjpfX21hbGxvY19hbGxvY19vb21faGFuZGxlcikoKSA9IDA7
CgoKdGVtcGxhdGUgPGludCBfX2luc3Q+CnZvaWQqCl9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9f
aW5zdD46Ol9TX29vbV9tYWxsb2Moc2l6ZV90IF9fbikKewogICAgdm9pZCAoKiBfX215X21hbGxv
Y19oYW5kbGVyKSgpOwogICAgdm9pZCogX19yZXN1bHQ7CgogICAgZm9yICg7OykgewogICAgICAg
IF9fbXlfbWFsbG9jX2hhbmRsZXIgPSBfX21hbGxvY19hbGxvY19vb21faGFuZGxlcjsKICAgICAg
ICBpZiAoMCA9PSBfX215X21hbGxvY19oYW5kbGVyKSB7IGNlcnIgPDwgIm91dCBvZiBtZW1vcnki
IDw8IGVuZGw7IGV4aXQoMSkgOyB9CiAgICAgICAgKCpfX215X21hbGxvY19oYW5kbGVyKSgpOwog
ICAgICAgIF9fcmVzdWx0ID0gbWFsbG9jKF9fbik7CiAgICAgICAgaWYgKF9fcmVzdWx0KSByZXR1
cm4oX19yZXN1bHQpOwogICAgfQp9Cgp0ZW1wbGF0ZSA8aW50IF9faW5zdD4Kdm9pZCogX19tYWxs
b2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0Pjo6X1Nfb29tX3JlYWxsb2Modm9pZCogX19wLCBzaXpl
X3QgX19uKQp7CiAgICB2b2lkICgqIF9fbXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAgICB2b2lkKiBf
X3Jlc3VsdDsKCiAgICBmb3IgKDs7KSB7CiAgICAgICAgX19teV9tYWxsb2NfaGFuZGxlciA9IF9f
bWFsbG9jX2FsbG9jX29vbV9oYW5kbGVyOwogICAgICAgIGlmICgwID09IF9fbXlfbWFsbG9jX2hh
bmRsZXIpIHsgY2VyciA8PCAib3V0IG9mIG1lbW9yeSIgPDwgZW5kbDsgZXhpdCgxKSA7IH0KICAg
ICAgICAoKl9fbXlfbWFsbG9jX2hhbmRsZXIpKCk7CiAgICAgICAgX19yZXN1bHQgPSByZWFsbG9j
KF9fcCwgX19uKTsKICAgICAgICBpZiAoX19yZXN1bHQpIHJldHVybihfX3Jlc3VsdCk7CiAgICB9
Cn0KCnR5cGVkZWYgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8MD4gbWFsbG9jX2FsbG9jOwoKdGVt
cGxhdGU8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmNsYXNzIHNpbXBsZV9hbGxvYyB7CgpwdWJs
aWM6CiAgICBzdGF0aWMgX1RwKiBhbGxvY2F0ZShzaXplX3QgX19uKQogICAgICB7IHJldHVybiAw
ID09IF9fbiA/IDAgOiAoX1RwKikgX0FsbG9jOjphbGxvY2F0ZShfX24gKiBzaXplb2YgKF9UcCkp
OyB9CiAgICBzdGF0aWMgX1RwKiBhbGxvY2F0ZSh2b2lkKQogICAgICB7IHJldHVybiAoX1RwKikg
X0FsbG9jOjphbGxvY2F0ZShzaXplb2YgKF9UcCkpOyB9CiAgICBzdGF0aWMgdm9pZCBkZWFsbG9j
YXRlKF9UcCogX19wLCBzaXplX3QgX19uKQogICAgICB7IGlmICgwICE9IF9fbikgX0FsbG9jOjpk
ZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mIChfVHApKTsgfQogICAgc3RhdGljIHZvaWQgZGVh
bGxvY2F0ZShfVHAqIF9fcCkKICAgICAgeyBfQWxsb2M6OmRlYWxsb2NhdGUoX19wLCBzaXplb2Yg
KF9UcCkpOyB9Cn07CgogCiAKIAogCiAKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KY2xhc3MgZGVi
dWdfYWxsb2MgewoKcHJpdmF0ZToKCiAgZW51bSB7X1NfZXh0cmEgPSA4fTsgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgCgpwdWJsaWM6CgogIHN0
YXRpYyB2b2lkKiBhbGxvY2F0ZShzaXplX3QgX19uKQogIHsKICAgIGNoYXIqIF9fcmVzdWx0ID0g
KGNoYXIqKV9BbGxvYzo6YWxsb2NhdGUoX19uICsgX1NfZXh0cmEpOwogICAgKihzaXplX3QqKV9f
cmVzdWx0ID0gX19uOwogICAgcmV0dXJuIF9fcmVzdWx0ICsgX1NfZXh0cmE7CiAgfQoKICBzdGF0
aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6ZV90IF9fbikKICB7CiAgICBjaGFyKiBf
X3JlYWxfcCA9IChjaGFyKilfX3AgLSBfU19leHRyYTsKICAgICgodm9pZCkgKCggKihzaXplX3Qq
KV9fcmVhbF9wID09IF9fbiApID8gMCA6CShfX2Fzc2VydF9mYWlsICgiKihzaXplX3QqKV9fcmVh
bF9wID09IF9fbiIgLAkiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9zdGxfYWxsb2MuaCIsIDI2MywgX19QUkVUVFlfRlVOQ1RJT05fXyApLCAwKSkpIDsKICAg
IF9BbGxvYzo6ZGVhbGxvY2F0ZShfX3JlYWxfcCwgX19uICsgX1NfZXh0cmEpOwogIH0KCiAgc3Rh
dGljIHZvaWQqIHJlYWxsb2NhdGUodm9pZCogX19wLCBzaXplX3QgX19vbGRfc3osIHNpemVfdCBf
X25ld19zeikKICB7CiAgICBjaGFyKiBfX3JlYWxfcCA9IChjaGFyKilfX3AgLSBfU19leHRyYTsK
ICAgICgodm9pZCkgKCggKihzaXplX3QqKV9fcmVhbF9wID09IF9fb2xkX3N6ICkgPyAwIDoJKF9f
YXNzZXJ0X2ZhaWwgKCIqKHNpemVfdCopX19yZWFsX3AgPT0gX19vbGRfc3oiICwJIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiLCAyNzAs
IF9fUFJFVFRZX0ZVTkNUSU9OX18gKSwgMCkpKSA7CiAgICBjaGFyKiBfX3Jlc3VsdCA9IChjaGFy
KikKICAgICAgX0FsbG9jOjpyZWFsbG9jYXRlKF9fcmVhbF9wLCBfX29sZF9zeiArIF9TX2V4dHJh
LCBfX25ld19zeiArIF9TX2V4dHJhKTsKICAgICooc2l6ZV90KilfX3Jlc3VsdCA9IF9fbmV3X3N6
OwogICAgcmV0dXJuIF9fcmVzdWx0ICsgX1NfZXh0cmE7CiAgfQoKfTsKCgoKCgoKCgoKCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCiAKIAoKIAogCiAKIAogCiAKIAogCiAKCgoKCgoKCnRlbXBsYXRl
IDxib29sIHRocmVhZHMsIGludCBpbnN0PgpjbGFzcyBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGUg
ewoKcHJpdmF0ZToKICAgCiAgIAoKICAgIGVudW0ge19BTElHTiA9IDh9OwogICAgZW51bSB7X01B
WF9CWVRFUyA9IDEyOH07CiAgICBlbnVtIHtfTkZSRUVMSVNUUyA9IF9NQVhfQllURVMvX0FMSUdO
fTsKCiAgc3RhdGljIHNpemVfdAogIF9TX3JvdW5kX3VwKHNpemVfdCBfX2J5dGVzKQogICAgeyBy
ZXR1cm4gKCgoX19ieXRlcykgKyBfQUxJR04tMSkgJiB+KF9BTElHTiAtIDEpKTsgfQoKcHJpdmF0
ZSA6CiAgdW5pb24gX09iaiB7CiAgICAgICAgdW5pb24gX09iaiogX01fZnJlZV9saXN0X2xpbms7
CiAgICAgICAgY2hhciBfTV9jbGllbnRfZGF0YVsxXTsgICAgIAogIH07CnByaXZhdGU6CgoKCgog
ICAgc3RhdGljIF9PYmoqIHZvbGF0aWxlICBfU19mcmVlX2xpc3RbX05GUkVFTElTVFNdOwoKICBz
dGF0aWMgIHNpemVfdCBfU19mcmVlbGlzdF9pbmRleChzaXplX3QgX19ieXRlcykgewogICAgICAg
IHJldHVybiAoKChfX2J5dGVzKSArIF9BTElHTi0xKS9fQUxJR04gLSAxKTsKICB9CgogICAKICBz
dGF0aWMgdm9pZCogX1NfcmVmaWxsKHNpemVfdCBfX24pOwogICAKICAgCiAgc3RhdGljIGNoYXIq
IF9TX2NodW5rX2FsbG9jKHNpemVfdCBfX3NpemUsIGludCYgX19ub2Jqcyk7CgogICAKICBzdGF0
aWMgY2hhciogX1Nfc3RhcnRfZnJlZTsKICBzdGF0aWMgY2hhciogX1NfZW5kX2ZyZWU7CiAgc3Rh
dGljIHNpemVfdCBfU19oZWFwX3NpemU7CgoKCgoKCgoKICAgIHN0YXRpYyBwdGhyZWFkX211dGV4
X3QgX1Nfbm9kZV9hbGxvY2F0b3JfbG9jazsKCgoKCgoKIyAzODkgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgiIDMKCgogICAgY2xhc3Mg
X0xvY2sgewogICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgX0xvY2soKSB7IGlmICh0aHJlYWRz
KSBwdGhyZWFkX211dGV4X2xvY2soJl9TX25vZGVfYWxsb2NhdG9yX2xvY2spIDsgfQogICAgICAg
ICAgICB+X0xvY2soKSB7IGlmICh0aHJlYWRzKSBwdGhyZWFkX211dGV4X3VubG9jaygmX1Nfbm9k
ZV9hbGxvY2F0b3JfbG9jaykgOyB9CiAgICB9OwogICAgZnJpZW5kIGNsYXNzIF9Mb2NrOwoKcHVi
bGljOgoKICAgCiAgc3RhdGljIHZvaWQqIGFsbG9jYXRlKHNpemVfdCBfX24pCiAgewogICAgX09i
aiogdm9sYXRpbGUgKiBfX215X2ZyZWVfbGlzdDsKICAgIF9PYmoqICAgX19yZXN1bHQ7CgogICAg
aWYgKF9fbiA+IChzaXplX3QpIF9NQVhfQllURVMpIHsKICAgICAgICByZXR1cm4obWFsbG9jX2Fs
bG9jOjphbGxvY2F0ZShfX24pKTsKICAgIH0KICAgIF9fbXlfZnJlZV9saXN0ID0gX1NfZnJlZV9s
aXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19uKTsKICAgICAKICAgICAKICAgICAKCiAgICAgICAg
IAogICAgICAgIF9Mb2NrIF9fbG9ja19pbnN0YW5jZTsKCiAgICBfX3Jlc3VsdCA9ICpfX215X2Zy
ZWVfbGlzdDsKICAgIGlmIChfX3Jlc3VsdCA9PSAwKSB7CiAgICAgICAgdm9pZCogX19yID0gX1Nf
cmVmaWxsKF9TX3JvdW5kX3VwKF9fbikpOwogICAgICAgIHJldHVybiBfX3I7CiAgICB9CiAgICAq
X19teV9mcmVlX2xpc3QgPSBfX3Jlc3VsdCAtPiBfTV9mcmVlX2xpc3RfbGluazsKICAgIHJldHVy
biAoX19yZXN1bHQpOwogIH07CgogICAKICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKHZvaWQqIF9f
cCwgc2l6ZV90IF9fbikKICB7CiAgICBfT2JqKiBfX3EgPSAoX09iaiopX19wOwogICAgX09iaiog
dm9sYXRpbGUgKiBfX215X2ZyZWVfbGlzdDsKCiAgICBpZiAoX19uID4gKHNpemVfdCkgX01BWF9C
WVRFUykgewogICAgICAgIG1hbGxvY19hbGxvYzo6ZGVhbGxvY2F0ZShfX3AsIF9fbik7CiAgICAg
ICAgcmV0dXJuOwogICAgfQogICAgX19teV9mcmVlX2xpc3QgPSBfU19mcmVlX2xpc3QgKyBfU19m
cmVlbGlzdF9pbmRleChfX24pOwogICAgIAoKICAgICAgICAgCiAgICAgICAgX0xvY2sgX19sb2Nr
X2luc3RhbmNlOwoKICAgIF9fcSAtPiBfTV9mcmVlX2xpc3RfbGluayA9ICpfX215X2ZyZWVfbGlz
dDsKICAgICpfX215X2ZyZWVfbGlzdCA9IF9fcTsKICAgICAKICB9CgogIHN0YXRpYyB2b2lkKiBy
ZWFsbG9jYXRlKHZvaWQqIF9fcCwgc2l6ZV90IF9fb2xkX3N6LCBzaXplX3QgX19uZXdfc3opOwoK
fSA7Cgp0eXBlZGVmIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTwgdHJ1ZSAsIDA+IGFsbG9jOwp0
eXBlZGVmIF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxmYWxzZSwgMD4gc2luZ2xlX2NsaWVudF9h
bGxvYzsKCgoKIAogCiAKIAp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmNo
YXIqCl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX2NodW5r
X2FsbG9jKHNpemVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgX19ub2JqcykKewogICAgY2hhciogX19yZXN1
bHQ7CiAgICBzaXplX3QgX190b3RhbF9ieXRlcyA9IF9fc2l6ZSAqIF9fbm9ianM7CiAgICBzaXpl
X3QgX19ieXRlc19sZWZ0ID0gX1NfZW5kX2ZyZWUgLSBfU19zdGFydF9mcmVlOwoKICAgIGlmIChf
X2J5dGVzX2xlZnQgPj0gX190b3RhbF9ieXRlcykgewogICAgICAgIF9fcmVzdWx0ID0gX1Nfc3Rh
cnRfZnJlZTsKICAgICAgICBfU19zdGFydF9mcmVlICs9IF9fdG90YWxfYnl0ZXM7CiAgICAgICAg
cmV0dXJuKF9fcmVzdWx0KTsKICAgIH0gZWxzZSBpZiAoX19ieXRlc19sZWZ0ID49IF9fc2l6ZSkg
ewogICAgICAgIF9fbm9ianMgPSAoaW50KShfX2J5dGVzX2xlZnQvX19zaXplKTsKICAgICAgICBf
X3RvdGFsX2J5dGVzID0gX19zaXplICogX19ub2JqczsKICAgICAgICBfX3Jlc3VsdCA9IF9TX3N0
YXJ0X2ZyZWU7CiAgICAgICAgX1Nfc3RhcnRfZnJlZSArPSBfX3RvdGFsX2J5dGVzOwogICAgICAg
IHJldHVybihfX3Jlc3VsdCk7CiAgICB9IGVsc2UgewogICAgICAgIHNpemVfdCBfX2J5dGVzX3Rv
X2dldCA9CgkgIDIgKiBfX3RvdGFsX2J5dGVzICsgX1Nfcm91bmRfdXAoX1NfaGVhcF9zaXplID4+
IDQpOwogICAgICAgICAKICAgICAgICBpZiAoX19ieXRlc19sZWZ0ID4gMCkgewogICAgICAgICAg
ICBfT2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9saXN0ID0KICAgICAgICAgICAgICAgICAgICAg
ICAgX1NfZnJlZV9saXN0ICsgX1NfZnJlZWxpc3RfaW5kZXgoX19ieXRlc19sZWZ0KTsKCiAgICAg
ICAgICAgICgoX09iaiopX1Nfc3RhcnRfZnJlZSkgLT4gX01fZnJlZV9saXN0X2xpbmsgPSAqX19t
eV9mcmVlX2xpc3Q7CiAgICAgICAgICAgICpfX215X2ZyZWVfbGlzdCA9IChfT2JqKilfU19zdGFy
dF9mcmVlOwogICAgICAgIH0KICAgICAgICBfU19zdGFydF9mcmVlID0gKGNoYXIqKW1hbGxvYyhf
X2J5dGVzX3RvX2dldCk7CiAgICAgICAgaWYgKDAgPT0gX1Nfc3RhcnRfZnJlZSkgewogICAgICAg
ICAgICBzaXplX3QgX19pOwogICAgICAgICAgICBfT2JqKiB2b2xhdGlsZSAqIF9fbXlfZnJlZV9s
aXN0OwoJICAgIF9PYmoqIF9fcDsKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAKICAgICAgICAgICAgZm9yIChfX2kgPSBfX3NpemU7IF9faSA8PSBfTUFYX0JZVEVTOyBf
X2kgKz0gX0FMSUdOKSB7CiAgICAgICAgICAgICAgICBfX215X2ZyZWVfbGlzdCA9IF9TX2ZyZWVf
bGlzdCArIF9TX2ZyZWVsaXN0X2luZGV4KF9faSk7CiAgICAgICAgICAgICAgICBfX3AgPSAqX19t
eV9mcmVlX2xpc3Q7CiAgICAgICAgICAgICAgICBpZiAoMCAhPSBfX3ApIHsKICAgICAgICAgICAg
ICAgICAgICAqX19teV9mcmVlX2xpc3QgPSBfX3AgLT4gX01fZnJlZV9saXN0X2xpbms7CiAgICAg
ICAgICAgICAgICAgICAgX1Nfc3RhcnRfZnJlZSA9IChjaGFyKilfX3A7CiAgICAgICAgICAgICAg
ICAgICAgX1NfZW5kX2ZyZWUgPSBfU19zdGFydF9mcmVlICsgX19pOwogICAgICAgICAgICAgICAg
ICAgIHJldHVybihfU19jaHVua19hbGxvYyhfX3NpemUsIF9fbm9ianMpKTsKICAgICAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CgkgICAgX1NfZW5kX2ZyZWUgPSAwOwkgCiAgICAgICAgICAgIF9TX3N0YXJ0X2ZyZWUg
PSAoY2hhciopbWFsbG9jX2FsbG9jOjphbGxvY2F0ZShfX2J5dGVzX3RvX2dldCk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIF9TX2hl
YXBfc2l6ZSArPSBfX2J5dGVzX3RvX2dldDsKICAgICAgICBfU19lbmRfZnJlZSA9IF9TX3N0YXJ0
X2ZyZWUgKyBfX2J5dGVzX3RvX2dldDsKICAgICAgICByZXR1cm4oX1NfY2h1bmtfYWxsb2MoX19z
aXplLCBfX25vYmpzKSk7CiAgICB9Cn0KCgogCiAKIAp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMs
IGludCBfX2luc3Q+CnZvaWQqCl9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9f
aW5zdD46Ol9TX3JlZmlsbChzaXplX3QgX19uKQp7CiAgICBpbnQgX19ub2JqcyA9IDIwOwogICAg
Y2hhciogX19jaHVuayA9IF9TX2NodW5rX2FsbG9jKF9fbiwgX19ub2Jqcyk7CiAgICBfT2JqKiB2
b2xhdGlsZSAqIF9fbXlfZnJlZV9saXN0OwogICAgX09iaiogX19yZXN1bHQ7CiAgICBfT2JqKiBf
X2N1cnJlbnRfb2JqOwogICAgX09iaiogX19uZXh0X29iajsKICAgIGludCBfX2k7CgogICAgaWYg
KDEgPT0gX19ub2JqcykgcmV0dXJuKF9fY2h1bmspOwogICAgX19teV9mcmVlX2xpc3QgPSBfU19m
cmVlX2xpc3QgKyBfU19mcmVlbGlzdF9pbmRleChfX24pOwoKICAgICAKICAgICAgX19yZXN1bHQg
PSAoX09iaiopX19jaHVuazsKICAgICAgKl9fbXlfZnJlZV9saXN0ID0gX19uZXh0X29iaiA9IChf
T2JqKikoX19jaHVuayArIF9fbik7CiAgICAgIGZvciAoX19pID0gMTsgOyBfX2krKykgewogICAg
ICAgIF9fY3VycmVudF9vYmogPSBfX25leHRfb2JqOwogICAgICAgIF9fbmV4dF9vYmogPSAoX09i
aiopKChjaGFyKilfX25leHRfb2JqICsgX19uKTsKICAgICAgICBpZiAoX19ub2JqcyAtIDEgPT0g
X19pKSB7CiAgICAgICAgICAgIF9fY3VycmVudF9vYmogLT4gX01fZnJlZV9saXN0X2xpbmsgPSAw
OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfX2N1cnJl
bnRfb2JqIC0+IF9NX2ZyZWVfbGlzdF9saW5rID0gX19uZXh0X29iajsKICAgICAgICB9CiAgICAg
IH0KICAgIHJldHVybihfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxib29sIHRocmVhZHMsIGludCBp
bnN0Pgp2b2lkKgpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8dGhyZWFkcywgaW5zdD46OnJlYWxs
b2NhdGUodm9pZCogX19wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IF9fb2xkX3N6LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbmV3X3N6KQp7CiAgICB2b2lkKiBfX3Jl
c3VsdDsKICAgIHNpemVfdCBfX2NvcHlfc3o7CgogICAgaWYgKF9fb2xkX3N6ID4gKHNpemVfdCkg
X01BWF9CWVRFUyAmJiBfX25ld19zeiA+IChzaXplX3QpIF9NQVhfQllURVMpIHsKICAgICAgICBy
ZXR1cm4ocmVhbGxvYyhfX3AsIF9fbmV3X3N6KSk7CiAgICB9CiAgICBpZiAoX1Nfcm91bmRfdXAo
X19vbGRfc3opID09IF9TX3JvdW5kX3VwKF9fbmV3X3N6KSkgcmV0dXJuKF9fcCk7CiAgICBfX3Jl
c3VsdCA9IGFsbG9jYXRlKF9fbmV3X3N6KTsKICAgIF9fY29weV9zeiA9IF9fbmV3X3N6ID4gX19v
bGRfc3o/IF9fb2xkX3N6IDogX19uZXdfc3o7CiAgICBtZW1jcHkoX19yZXN1bHQsIF9fcCwgX19j
b3B5X3N6KTsKICAgIGRlYWxsb2NhdGUoX19wLCBfX29sZF9zeik7CiAgICByZXR1cm4oX19yZXN1
bHQpOwp9CgoKICAgIHRlbXBsYXRlIDxib29sIF9fdGhyZWFkcywgaW50IF9faW5zdD4KICAgIHB0
aHJlYWRfbXV0ZXhfdAogICAgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19p
bnN0Pjo6X1Nfbm9kZV9hbGxvY2F0b3JfbG9jawogICAgICAgID0gezAsIDAsIDAsIFBUSFJFQURf
TVVURVhfRkFTVF9OUCwgezAsIDB9fSA7CgoKCgoKCgoKCiMgNjAyICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGxvYy5oIiAzCgoKIyA2ODkgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsbG9jLmgi
IDMKCgp0ZW1wbGF0ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmNoYXIqIF9fZGVmYXVs
dF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD46Ol9TX3N0YXJ0X2ZyZWUgPSAwOwoK
dGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgpjaGFyKiBfX2RlZmF1bHRfYWxs
b2NfdGVtcGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19lbmRfZnJlZSA9IDA7Cgp0ZW1wbGF0
ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CnNpemVfdCBfX2RlZmF1bHRfYWxsb2NfdGVt
cGxhdGU8X190aHJlYWRzLCBfX2luc3Q+OjpfU19oZWFwX3NpemUgPSAwOwoKdGVtcGxhdGUgPGJv
b2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgpfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190aHJl
YWRzLCBfX2luc3Q+OjpfT2JqKiB2b2xhdGlsZSAKX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9f
dGhyZWFkcywgX19pbnN0PiA6Ol9TX2ZyZWVfbGlzdFsKICAgIF9ORlJFRUxJU1RTCl0gPSB7MCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgfTsKIAogCiAKCgoK
CgoKCgoKCiAKIAogCiAKIAogCiAKCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3MgYWxsb2Nh
dG9yIHsKICB0eXBlZGVmIGFsbG9jIF9BbGxvYzsgICAgICAgICAgIApwdWJsaWM6CiAgdHlwZWRl
ZiBzaXplX3QgICAgIHNpemVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCAgZGlmZmVyZW5jZV90
eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3QgX1RwKiBj
b25zdF9wb2ludGVyOwogIHR5cGVkZWYgX1RwJiAgICAgICByZWZlcmVuY2U7CiAgdHlwZWRlZiBj
b25zdCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsKICB0eXBlZGVmIF9UcCAgICAgICAgdmFsdWVfdHlw
ZTsKCiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+IHN0cnVjdCByZWJpbmQgewogICAgdHlwZWRlZiBh
bGxvY2F0b3I8X1RwMT4gb3RoZXI7CiAgfTsKCiAgYWxsb2NhdG9yKCkgdGhyb3coKSAge30KICBh
bGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yJikgdGhyb3coKSAge30KICB0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwMT4gYWxsb2NhdG9yKGNvbnN0IGFsbG9jYXRvcjxfVHAxPiYpIHRocm93KCkgIHt9CiAgfmFs
bG9jYXRvcigpIHRocm93KCkgIHt9CgogIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgX194KSBj
b25zdCB7IHJldHVybiAmX194OyB9CiAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVy
ZW5jZSBfX3gpIGNvbnN0IHsgcmV0dXJuICZfX3g7IH0KCiAgIAogICAKICBfVHAqIGFsbG9jYXRl
KHNpemVfdHlwZSBfX24sIGNvbnN0IHZvaWQqID0gMCkgewogICAgcmV0dXJuIF9fbiAhPSAwID8g
c3RhdGljX2Nhc3Q8X1RwKj4oX0FsbG9jOjphbGxvY2F0ZShfX24gKiBzaXplb2YoX1RwKSkpCiAg
ICAgICAgICAgICAgICAgICAgOiAwOwogIH0KCiAgIAogIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVy
IF9fcCwgc2l6ZV90eXBlIF9fbikKICAgIHsgX0FsbG9jOjpkZWFsbG9jYXRlKF9fcCwgX19uICog
c2l6ZW9mKF9UcCkpOyB9CgogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHRocm93KCkgCiAg
ICB7IHJldHVybiBzaXplX3QoLTEpIC8gc2l6ZW9mKF9UcCk7IH0KCiAgdm9pZCBjb25zdHJ1Y3Qo
cG9pbnRlciBfX3AsIGNvbnN0IF9UcCYgX192YWwpIHsgbmV3KF9fcCkgX1RwKF9fdmFsKTsgfQog
IHZvaWQgZGVzdHJveShwb2ludGVyIF9fcCkgeyBfX3AtPn5fVHAoKTsgfQp9OwoKdGVtcGxhdGU8
PgpjbGFzcyBhbGxvY2F0b3I8dm9pZD4gewogIHR5cGVkZWYgc2l6ZV90ICAgICAgc2l6ZV90eXBl
OwogIHR5cGVkZWYgcHRyZGlmZl90ICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCog
ICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IHZvaWQqIGNvbnN0X3BvaW50ZXI7CiAgdHlw
ZWRlZiB2b2lkICAgICAgICB2YWx1ZV90eXBlOwoKICB0ZW1wbGF0ZSA8Y2xhc3MgX1RwMT4gc3Ry
dWN0IHJlYmluZCB7CiAgICB0eXBlZGVmIGFsbG9jYXRvcjxfVHAxPiBvdGhlcjsKICB9Owp9OwoK
CnRlbXBsYXRlIDxjbGFzcyBfVDEsIGNsYXNzIF9UMj4KaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBhbGxvY2F0b3I8X1QxPiYsIGNvbnN0IGFsbG9jYXRvcjxfVDI+JikKewogIHJldHVybiB0
cnVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgYWxsb2NhdG9yPF9UMT4mLCBjb25zdCBhbGxvY2F0b3I8X1QyPiYpCnsKICBy
ZXR1cm4gZmFsc2U7Cn0KCiAKIAogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBf
QWxsb2M+CnN0cnVjdCBfX2FsbG9jYXRvciB7CiAgX0FsbG9jIF9fdW5kZXJseWluZ19hbGxvYzsK
CiAgdHlwZWRlZiBzaXplX3QgICAgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZl
cmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0
IF9UcCogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgICAgICAgcmVmZXJlbmNlOwogIHR5
cGVkZWYgY29uc3QgX1RwJiBjb25zdF9yZWZlcmVuY2U7CiAgdHlwZWRlZiBfVHAgICAgICAgIHZh
bHVlX3R5cGU7CgogIHRlbXBsYXRlIDxjbGFzcyBfVHAxPiBzdHJ1Y3QgcmViaW5kIHsKICAgIHR5
cGVkZWYgX19hbGxvY2F0b3I8X1RwMSwgX0FsbG9jPiBvdGhlcjsKICB9OwoKICBfX2FsbG9jYXRv
cigpIHRocm93KCkgIHt9CiAgX19hbGxvY2F0b3IoY29uc3QgX19hbGxvY2F0b3ImIF9fYSkgdGhy
b3coKSAKICAgIDogX191bmRlcmx5aW5nX2FsbG9jKF9fYS5fX3VuZGVybHlpbmdfYWxsb2MpIHt9
CiAgdGVtcGxhdGUgPGNsYXNzIF9UcDE+CiAgX19hbGxvY2F0b3IoY29uc3QgX19hbGxvY2F0b3I8
X1RwMSwgX0FsbG9jPiYgX19hKSB0aHJvdygpIAogICAgOiBfX3VuZGVybHlpbmdfYWxsb2MoX19h
Ll9fdW5kZXJseWluZ19hbGxvYykge30KICB+X19hbGxvY2F0b3IoKSB0aHJvdygpICB7fQoKICBw
b2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIF9feCkgY29uc3QgeyByZXR1cm4gJl9feDsgfQogIGNv
bnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgX194KSBjb25zdCB7IHJldHVybiAm
X194OyB9CgogICAKICBfVHAqIGFsbG9jYXRlKHNpemVfdHlwZSBfX24sIGNvbnN0IHZvaWQqID0g
MCkgewogICAgcmV0dXJuIF9fbiAhPSAwCiAgICAgICAgPyBzdGF0aWNfY2FzdDxfVHAqPihfX3Vu
ZGVybHlpbmdfYWxsb2MuYWxsb2NhdGUoX19uICogc2l6ZW9mKF9UcCkpKQogICAgICAgIDogMDsK
ICB9CgogICAKICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBfX3AsIHNpemVfdHlwZSBfX24pCiAg
ICB7IF9fdW5kZXJseWluZ19hbGxvYy5kZWFsbG9jYXRlKF9fcCwgX19uICogc2l6ZW9mKF9UcCkp
OyB9CgogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHRocm93KCkgCiAgICB7IHJldHVybiBz
aXplX3QoLTEpIC8gc2l6ZW9mKF9UcCk7IH0KCiAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBfX3As
IGNvbnN0IF9UcCYgX192YWwpIHsgbmV3KF9fcCkgX1RwKF9fdmFsKTsgfQogIHZvaWQgZGVzdHJv
eShwb2ludGVyIF9fcCkgeyBfX3AtPn5fVHAoKTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9BbGxv
Yz4KY2xhc3MgX19hbGxvY2F0b3I8dm9pZCwgX0FsbG9jPiB7CiAgdHlwZWRlZiBzaXplX3QgICAg
ICBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiB2b2lkKiAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgY29uc3Qgdm9pZCogY29uc3RfcG9p
bnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgIHZhbHVlX3R5cGU7CgogIHRlbXBsYXRlIDxjbGFz
cyBfVHAxPiBzdHJ1Y3QgcmViaW5kIHsKICAgIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwMSwgX0Fs
bG9jPiBvdGhlcjsKICB9Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IF9fYWxsb2NhdG9yPF9UcCwgX0FsbG9jPiYgX19h
MSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfX2FsbG9jYXRvcjxfVHAsIF9BbGxvYz4m
IF9fYTIpCnsKICByZXR1cm4gX19hMS5fX3VuZGVybHlpbmdfYWxsb2MgPT0gX19hMi5fX3VuZGVy
bHlpbmdfYWxsb2M7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CmlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX19hbGxvY2F0b3I8X1RwLCBfQWxsb2M+JiBfX2ExLAog
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fYWxsb2NhdG9yPF9UcCwgX0FsbG9jPiYgX19h
MikKewogIHJldHVybiBfX2ExLl9fdW5kZXJseWluZ19hbGxvYyAhPSBfX2EyLl9fdW5kZXJseWlu
Z19hbGxvYzsKfQoKCiAKIAogCgp0ZW1wbGF0ZSA8aW50IGluc3Q+CmlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8aW5zdD4mLAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPGluc3Q+JikKewogIHJldHVy
biB0cnVlOwp9CgoKdGVtcGxhdGUgPGludCBfX2luc3Q+CmlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiYsCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiYpCnsKICByZXR1cm4g
ZmFsc2U7Cn0KCgoKdGVtcGxhdGUgPGJvb2wgX190aHJlYWRzLCBpbnQgX19pbnN0PgppbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IF9fZGVmYXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocmVhZHMs
IF9faW5zdD4mLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fZGVmYXVsdF9hbGxvY190
ZW1wbGF0ZTxfX3RocmVhZHMsIF9faW5zdD4mKQp7CiAgcmV0dXJuIHRydWU7Cn0KCgp0ZW1wbGF0
ZSA8Ym9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiYsCiAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywg
X19pbnN0PiYpCnsKICByZXR1cm4gZmFsc2U7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4K
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JiwKICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JikgewogIHJldHVybiB0
cnVlOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBkZWJ1Z19hbGxvYzxfQWxsb2M+JiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBk
ZWJ1Z19hbGxvYzxfQWxsb2M+JikgewogIHJldHVybiBmYWxzZTsKfQoKCiAKIAogCiAKIAogCgog
CiAKIAogCiAKIAoKIAogCiAKIAogCiAKIAogCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Rw
LCBjbGFzcyBfQWxsb2NhdG9yPgpzdHJ1Y3QgX0FsbG9jX3RyYWl0cwp7CiAgc3RhdGljIGNvbnN0
IGJvb2wgX1NfaW5zdGFuY2VsZXNzID0gZmFsc2U7CiAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2Nh
dG9yOjogICByZWJpbmQ8X1RwPjo6b3RoZXIKICAgICAgICAgIGFsbG9jYXRvcl90eXBlOwp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jYXRvcj4KY29uc3QgYm9vbCBfQWxsb2Nf
dHJhaXRzPF9UcCwgX0FsbG9jYXRvcj46Ol9TX2luc3RhbmNlbGVzczsKCiAKCnRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9UcDE+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgYWxsb2NhdG9y
PF9UcDE+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAg
dHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBhbGxvYz4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBh
bGxvY2F0b3I8X1RwPiBhbGxvY2F0b3JfdHlwZTsKfTsKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAs
IGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9UcCwgX19tYWxsb2NfYWxsb2NfdGVt
cGxhdGU8X19pbnN0PiA+CnsKICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0
cnVlOwogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9UcCwgX19tYWxsb2NfYWxsb2NfdGVtcGxhdGU8
X19pbnN0PiA+IF9BbGxvY190eXBlOwogIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX21hbGxv
Y19hbGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gYWxsb2NhdG9yX3R5cGU7Cn07CgoKdGVtcGxhdGUg
PGNsYXNzIF9UcCwgYm9vbCBfX3RocmVhZHMsIGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2NfdHJh
aXRzPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiA+CnsK
ICBzdGF0aWMgY29uc3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogIHR5cGVkZWYgc2lt
cGxlX2FsbG9jPF9UcCwgX19kZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0
PiA+CiAgICAgICAgICBfQWxsb2NfdHlwZTsKICB0eXBlZGVmIF9fYWxsb2NhdG9yPF9UcCwgX19k
ZWZhdWx0X2FsbG9jX3RlbXBsYXRlPF9fdGhyZWFkcywgX19pbnN0PiA+CiAgICAgICAgICBhbGxv
Y2F0b3JfdHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxsb2M+CnN0cnVj
dCBfQWxsb2NfdHJhaXRzPF9UcCwgZGVidWdfYWxsb2M8X0FsbG9jPiA+CnsKICBzdGF0aWMgY29u
c3QgYm9vbCBfU19pbnN0YW5jZWxlc3MgPSB0cnVlOwogIHR5cGVkZWYgc2ltcGxlX2FsbG9jPF9U
cCwgZGVidWdfYWxsb2M8X0FsbG9jPiA+IF9BbGxvY190eXBlOwogIHR5cGVkZWYgX19hbGxvY2F0
b3I8X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gYWxsb2NhdG9yX3R5cGU7Cn07CgogCiAKCnRl
bXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9UcDEsIGludCBfX2luc3Q+CnN0cnVjdCBfQWxsb2Nf
dHJhaXRzPF9UcCwKICAgICAgICAgICAgICAgICAgICAgX19hbGxvY2F0b3I8X1RwMSwgX19tYWxs
b2NfYWxsb2NfdGVtcGxhdGU8X19pbnN0PiA+ID4KewogIHN0YXRpYyBjb25zdCBib29sIF9TX2lu
c3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8X1RwLCBfX21hbGxvY19h
bGxvY190ZW1wbGF0ZTxfX2luc3Q+ID4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2FsbG9jYXRv
cjxfVHAsIF9fbWFsbG9jX2FsbG9jX3RlbXBsYXRlPF9faW5zdD4gPiBhbGxvY2F0b3JfdHlwZTsK
fTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfVHAxLCBib29sIF9fdGhyLCBpbnQgX19p
bnN0PgpzdHJ1Y3QgX0FsbG9jX3RyYWl0czxfVHAsCiAgICAgICAgICAgICAgICAgICAgICBfX2Fs
bG9jYXRvcjxfVHAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19kZWZhdWx0
X2FsbG9jX3RlbXBsYXRlPF9fdGhyLCBfX2luc3Q+ID4gPgp7CiAgc3RhdGljIGNvbnN0IGJvb2wg
X1NfaW5zdGFuY2VsZXNzID0gdHJ1ZTsKICB0eXBlZGVmIHNpbXBsZV9hbGxvYzxfVHAsIF9fZGVm
YXVsdF9hbGxvY190ZW1wbGF0ZTxfX3RocixfX2luc3Q+ID4KICAgICAgICAgIF9BbGxvY190eXBl
OwogIHR5cGVkZWYgX19hbGxvY2F0b3I8X1RwLCBfX2RlZmF1bHRfYWxsb2NfdGVtcGxhdGU8X190
aHIsX19pbnN0PiA+CiAgICAgICAgICBhbGxvY2F0b3JfdHlwZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfVHAxLCBjbGFzcyBfQWxsb2M+CnN0cnVjdCBfQWxsb2NfdHJhaXRzPF9U
cCwgX19hbGxvY2F0b3I8X1RwMSwgZGVidWdfYWxsb2M8X0FsbG9jPiA+ID4KewogIHN0YXRpYyBj
b25zdCBib29sIF9TX2luc3RhbmNlbGVzcyA9IHRydWU7CiAgdHlwZWRlZiBzaW1wbGVfYWxsb2M8
X1RwLCBkZWJ1Z19hbGxvYzxfQWxsb2M+ID4gX0FsbG9jX3R5cGU7CiAgdHlwZWRlZiBfX2FsbG9j
YXRvcjxfVHAsIGRlYnVnX2FsbG9jPF9BbGxvYz4gPiBhbGxvY2F0b3JfdHlwZTsKfTsKCgoKCgoK
CgogCgojdW5kZWYgX19QUklWQVRFCgoKCiAKIAogCiMgMjEgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMiAzCgoKCiMgNDAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxsb2MuaCIgMwoKCgoKIAog
CiAKIyAzOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGQvYmFzdHJpbmcuaCIgMiAzCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgaXN0cmVhbTsgY2xhc3Mg
b3N0cmVhbTsKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9pdGVyYXRvciIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9f
U0dJX1NUTF9JVEVSQVRPUgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfcmVsb3BzLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgogCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9JTlRFUk5BTF9SRUxPUFMKCiAKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CmlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9U
cCYgX195KSB7CiAgcmV0dXJuICEoX194ID09IF9feSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+
CmlubGluZSBib29sIG9wZXJhdG9yPihjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIHsK
ICByZXR1cm4gX195IDwgX194Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgYm9vbCBv
cGVyYXRvcjw9KGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgewogIHJldHVybiAhKF9f
eSA8IF9feCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBib29sIG9wZXJhdG9yPj0o
Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSB7CiAgcmV0dXJuICEoX194IDwgX195KTsK
fQoKIAoKCgogCiAKIAojIDMxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45
NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNs
dWRlL2crKy0zL2l0ZXJhdG9yIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVk
ZS9zdGRkZWYuaCIgMSAzCiMgMzQyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRl
Zi5oIiAzCgojIDMyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL2l0ZXJhdG9yIiAyIDMKCgoKCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfSVRFUkFUT1JfSAoKIAoK
c3RydWN0IGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IG91dHB1dF9pdGVyYXRvcl90YWcg
e307CnN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBpbnB1dF9pdGVyYXRvcl90
YWcge307CnN0cnVjdCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyA6IHB1YmxpYyBmb3J3YXJk
X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIDogcHVi
bGljIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnIHt9OwoKIAogCiAKIAoKdGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgaW5wdXRfaXRlcmF0b3IgewogIHR5cGVk
ZWYgaW5wdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwICAg
ICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAgZGlm
ZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlw
ZWRlZiBfVHAmICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKc3RydWN0IG91dHB1dF9pdGVy
YXRvciB7CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5Owog
IHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9pZCAg
ICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAg
ICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsK
CnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0IGZvcndhcmRfaXRl
cmF0b3IgewogIHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7
CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rp
c3RhbmNlICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAg
ICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIF9UcCYgICAgICAgICAgICAgICAgIHJlZmVyZW5j
ZTsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBiaWRp
cmVjdGlvbmFsX2l0ZXJhdG9yIHsKICB0eXBlZGVmIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFn
IGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgICAgICAg
dmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgICAgICAgICAgICAgICAgIGRpZmZlcmVu
Y2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAg
dHlwZWRlZiBfVHAmICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJh
dG9yIHsKICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVn
b3J5OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0
eXBlZGVmIF9EaXN0YW5jZSAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBl
ZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmICAg
ICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07CgojIDk4ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKCgp0ZW1w
bGF0ZSA8Y2xhc3MgX0l0ZXJhdG9yPgpzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzIHsKICB0eXBlZGVm
IHR5cGVuYW1lIF9JdGVyYXRvcjo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7
CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnZhbHVlX3R5cGUgICAgICAgIHZhbHVlX3R5
cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OmRpZmZlcmVuY2VfdHlwZSAgIGRpZmZl
cmVuY2VfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cG9pbnRlciAgICAgICAg
ICAgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9JdGVyYXRvcjo6cmVmZXJlbmNlICAgICAg
ICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGl0ZXJhdG9yX3Ry
YWl0czxfVHAqPiB7CiAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRv
cl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90
eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90ICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlw
ZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVk
ZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRlIDxj
bGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4gewogIHR5cGVkZWYg
cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBf
VHAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZf
dCAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBjb25zdCBfVHAq
ICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IF9UcCYgICAgICAgICAg
ICAgICAgICByZWZlcmVuY2U7Cn07CgogCiAKIAogCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+
CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+OjppdGVyYXRvcl9jYXRlZ29y
eQpfX2l0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IF9JdGVyJikKewogIHR5cGVkZWYgdHlwZW5hbWUg
aXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkgX0NhdGVnb3J5OwogIHJl
dHVybiBfQ2F0ZWdvcnkoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5h
bWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKgpfX2Rpc3RhbmNlX3R5
cGUoY29uc3QgX0l0ZXImKQp7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVuYW1lIGl0ZXJhdG9y
X3RyYWl0czxfSXRlcj46OmRpZmZlcmVuY2VfdHlwZSo+KDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2YWx1ZV90eXBl
KgpfX3ZhbHVlX3R5cGUoY29uc3QgX0l0ZXImKQp7CiAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVu
YW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OnZhbHVlX3R5cGUqPigwKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRl
cmF0b3JfY2F0ZWdvcnkKaXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgX0l0ZXImIF9faSkgeyByZXR1
cm4gX19pdGVyYXRvcl9jYXRlZ29yeShfX2kpOyB9CgoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgpp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6ZGlmZmVyZW5jZV90eXBlKgpk
aXN0YW5jZV90eXBlKGNvbnN0IF9JdGVyJiBfX2kpIHsgcmV0dXJuIF9fZGlzdGFuY2VfdHlwZShf
X2kpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0l0ZXI+CmlubGluZSB0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0l0ZXI+Ojp2YWx1ZV90eXBlKgp2YWx1ZV90eXBlKGNvbnN0IF9JdGVyJiBfX2kpIHsg
cmV0dXJuIF9fdmFsdWVfdHlwZShfX2kpOyB9CgojZGVmaW5lIF9fSVRFUkFUT1JfQ0FURUdPUlko
X19pKSBfX2l0ZXJhdG9yX2NhdGVnb3J5KF9faSkKI2RlZmluZSBfX0RJU1RBTkNFX1RZUEUoX19p
KSAgICAgX19kaXN0YW5jZV90eXBlKF9faSkKI2RlZmluZSBfX1ZBTFVFX1RZUEUoX19pKSAgICAg
ICAgX192YWx1ZV90eXBlKF9faSkKCiMgMjU5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0bF9pdGVyYXRvci5oIiAzCgoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9fZGlzdGFuY2UoX0lu
cHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgICAgIF9EaXN0YW5jZSYgX19uLCBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICB3aGlsZSAo
X19maXJzdCAhPSBfX2xhc3QpIHsgKytfX2ZpcnN0OyArK19fbjsgfQp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9f
ZGlzdGFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIAogICAgICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAg
ICAgIF9EaXN0YW5jZSYgX19uLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKewogIF9fbiAr
PSBfX2xhc3QgLSBfX2ZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3IsIGNs
YXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgZGlzdGFuY2UoX0lucHV0SXRlcmF0b3IgX19maXJz
dCwgCiAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgX0Rpc3RhbmNl
JiBfX24pCnsKICBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19uLCBpdGVyYXRvcl9jYXRl
Z29yeShfX2ZpcnN0KSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgppbmxp
bmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90
eXBlCl9fZGlzdGFuY2UoX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19s
YXN0LCBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lu
cHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICB3aGlsZSAoX19maXJzdCAh
PSBfX2xhc3QpIHsKICAgICsrX19maXJzdDsgKytfX247CiAgfQogIHJldHVybiBfX247Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+CmlubGluZSB0eXBlbmFtZSBpdGVy
YXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCl9fZGlz
dGFuY2UoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2xhc3QsCiAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpIHsKICByZXR1
cm4gX19sYXN0IC0gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgpp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlCmRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9f
bGFzdCkgewogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9y
Pjo6aXRlcmF0b3JfY2F0ZWdvcnkgCiAgICBfQ2F0ZWdvcnk7CiAgcmV0dXJuIF9fZGlzdGFuY2Uo
X19maXJzdCwgX19sYXN0LCBfQ2F0ZWdvcnkoKSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNlKF9JbnB1dEl0ZXIm
IF9faSwgX0Rpc3RhbmNlIF9fbiwgaW5wdXRfaXRlcmF0b3JfdGFnKSB7CiAgd2hpbGUgKF9fbi0t
KSArK19faTsKfQoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBj
bGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9fYWR2YW5jZShfQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yJiBfX2ksIF9EaXN0YW5jZSBfX24sIAogICAgICAgICAgICAgICAgICAgICAgYmlkaXJlY3Rp
b25hbF9pdGVyYXRvcl90YWcpIHsKICBpZiAoX19uID49IDApCiAgICB3aGlsZSAoX19uLS0pICsr
X19pOwogIGVsc2UKICAgIHdoaWxlIChfX24rKykgLS1fX2k7Cn0KCgoKCgp0ZW1wbGF0ZSA8Y2xh
c3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2b2lkIF9f
YWR2YW5jZShfUmFuZG9tQWNjZXNzSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwgCiAgICAg
ICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIF9faSArPSBf
X247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlPgpp
bmxpbmUgdm9pZCBhZHZhbmNlKF9JbnB1dEl0ZXJhdG9yJiBfX2ksIF9EaXN0YW5jZSBfX24pIHsK
ICBfX2FkdmFuY2UoX19pLCBfX24sIGl0ZXJhdG9yX2NhdGVnb3J5KF9faSkpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KY2xhc3MgYmFja19pbnNlcnRfaXRlcmF0b3Igewpwcm90ZWN0
ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVy
ICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBp
dGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk
ZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAg
ICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IGJhY2tfaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWlu
ZXImIF9feCkgOiBjb250YWluZXIoJl9feCkge30KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29u
dGFpbmVyPiYKICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFsdWVfdHlw
ZSYgX192YWx1ZSkgeyAKICAgIGNvbnRhaW5lci0+cHVzaF9iYWNrKF9fdmFsdWUpOwogICAgcmV0
dXJuICp0aGlzOwogIH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0
b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgYmFja19pbnNlcnRfaXRlcmF0b3I8
X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoKIyAzNzgg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJh
dG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KaW5saW5lIGJhY2tfaW5zZXJ0
X2l0ZXJhdG9yPF9Db250YWluZXI+IGJhY2tfaW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194KSB7CiAg
cmV0dXJuIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBfQ29udGFpbmVyPgpjbGFzcyBmcm9udF9pbnNlcnRfaXRlcmF0b3Igewpwcm90ZWN0
ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29udGFpbmVy
ICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBp
dGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlw
ZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVk
ZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAg
ICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IGZyb250X2luc2VydF9pdGVyYXRvcihfQ29udGFp
bmVyJiBfX3gpIDogY29udGFpbmVyKCZfX3gpIHt9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9D
b250YWluZXI+JgogIG9wZXJhdG9yPShjb25zdCB0eXBlbmFtZSBfQ29udGFpbmVyOjp2YWx1ZV90
eXBlJiBfX3ZhbHVlKSB7IAogICAgY29udGFpbmVyLT5wdXNoX2Zyb250KF9fdmFsdWUpOwogICAg
cmV0dXJuICp0aGlzOwogIH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9w
ZXJhdG9yKigpIHsgcmV0dXJuICp0aGlzOyB9CiAgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250
YWluZXI+JiBvcGVyYXRvcisrKCkgeyByZXR1cm4gKnRoaXM7IH0KICBmcm9udF9pbnNlcnRfaXRl
cmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoK
IyA0MTcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KaW5saW5lIGZyb250
X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiBmcm9udF9pbnNlcnRlcihfQ29udGFpbmVyJiBf
X3gpIHsKICByZXR1cm4gZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+KF9feCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgpjbGFzcyBpbnNlcnRfaXRlcmF0b3Igewpwcm90
ZWN0ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwogIHR5cGVuYW1lIF9Db250YWluZXI6Oml0
ZXJhdG9yIGl0ZXI7CnB1YmxpYzoKICB0eXBlZGVmIF9Db250YWluZXIgICAgICAgICAgY29udGFp
bmVyX3R5cGU7CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5
OwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgdm9p
ZCAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lkICAgICAgICAg
ICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsK
CiAgaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWluZXImIF9feCwgdHlwZW5hbWUgX0NvbnRhaW5lcjo6
aXRlcmF0b3IgX19pKSAKICAgIDogY29udGFpbmVyKCZfX3gpLCBpdGVyKF9faSkge30KICBpbnNl
cnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250
YWluZXI6OnZhbHVlX3R5cGUmIF9fdmFsdWUpIHsgCiAgICBpdGVyID0gY29udGFpbmVyLT5pbnNl
cnQoaXRlciwgX192YWx1ZSk7CiAgICArK2l0ZXI7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGlu
c2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0K
ICBpbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhp
czsgfQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0
dXJuICp0aGlzOyB9Cn07CgojIDQ1OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIgMwoKCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFp
bmVyLCBjbGFzcyBfSXRlcmF0b3I+CmlubGluZSAKaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+
IGluc2VydGVyKF9Db250YWluZXImIF9feCwgX0l0ZXJhdG9yIF9faSkKewogIHR5cGVkZWYgdHlw
ZW5hbWUgX0NvbnRhaW5lcjo6aXRlcmF0b3IgX19pdGVyOwogIHJldHVybiBpbnNlcnRfaXRlcmF0
b3I8X0NvbnRhaW5lcj4oX194LCBfX2l0ZXIoX19pKSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyYXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmZXJlbmNlID0gX1RwJiwg
CiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2UgPSBwdHJkaWZmX3Q+IAoKCgoKY2xhc3MgcmV2ZXJz
ZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yIHsKICB0eXBlZGVmIHJldmVyc2VfYmlkaXJlY3Rpb25h
bF9pdGVyYXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBfVHAsIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZlcmVuY2UsIF9EaXN0YW5jZT4gIF9TZWxmOwpw
cm90ZWN0ZWQ6CiAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBjdXJyZW50OwpwdWJsaWM6CiAgdHlw
ZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBl
ZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlz
dGFuY2UgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAg
ICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1JlZmVyZW5jZSAgICAgICAg
ICAgICAgICAgcmVmZXJlbmNlOwoKICByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3IoKSB7
fQogIGV4cGxpY2l0IHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvcihfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yIF9feCkKICAgIDogY3VycmVudChfX3gpIHt9CiAgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciBiYXNlKCkgY29uc3QgeyByZXR1cm4gY3VycmVudDsgfQogIF9SZWZlcmVuY2Ugb3BlcmF0
b3IqKCkgY29uc3QgewogICAgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3RtcCA9IGN1cnJlbnQ7
CiAgICByZXR1cm4gKi0tX190bXA7CiAgfQoKICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7
IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAgIC0t
Y3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsK
ICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7
CiAgfQogIF9TZWxmJiBvcGVyYXRvci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJuICp0
aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhp
czsKICAgICsrY3VycmVudDsKICAgIHJldHVybiBfX3RtcDsKICB9Cn07CgojIDU1MCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxp
bnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfaXRlcmF0b3IuaCIg
MwoKCnRlbXBsYXRlIDxjbGFzcyBfQmlJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9SZWYsCiAgICAg
ICAgICBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBib29sIG9wZXJhdG9yPT0oCiAgICBjb25zdCBy
ZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpSXRlciwgX1RwLCBfUmVmLCBfRGlzdGFu
Y2U+JiBfX3gsIAogICAgY29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yPF9CaUl0
ZXIsIF9UcCwgX1JlZiwgX0Rpc3RhbmNlPiYgX195KQp7CiAgcmV0dXJuIF9feC5iYXNlKCkgPT0g
X195LmJhc2UoKTsKfQoKCgogCiAKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmNs
YXNzIHJldmVyc2VfaXRlcmF0b3IgCnsKcHJvdGVjdGVkOgogIF9JdGVyYXRvciBjdXJyZW50Owpw
dWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6aXRl
cmF0b3JfY2F0ZWdvcnkKICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICAgICAgIHZh
bHVlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6
ZGlmZmVyZW5jZV90eXBlCiAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB0eXBl
bmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6cG9pbnRlcgogICAgICAgICAgcG9pbnRl
cjsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpyZWZlcmVu
Y2UKICAgICAgICAgIHJlZmVyZW5jZTsKCiAgdHlwZWRlZiBfSXRlcmF0b3IgaXRlcmF0b3JfdHlw
ZTsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiBfU2VsZjsKCnB1YmxpYzoK
ICByZXZlcnNlX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCByZXZlcnNlX2l0ZXJhdG9yKGl0ZXJh
dG9yX3R5cGUgX194KSA6IGN1cnJlbnQoX194KSB7fQoKICByZXZlcnNlX2l0ZXJhdG9yKGNvbnN0
IF9TZWxmJiBfX3gpIDogY3VycmVudChfX3guY3VycmVudCkge30KCiAgdGVtcGxhdGUgPGNsYXNz
IF9JdGVyPgogIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcj4m
IF9feCkKICAgIDogY3VycmVudChfX3guYmFzZSgpKSB7fQoKICAgIAogIGl0ZXJhdG9yX3R5cGUg
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkg
Y29uc3QgewogICAgX0l0ZXJhdG9yIF9fdG1wID0gY3VycmVudDsKICAgIHJldHVybiAqLS1fX3Rt
cDsKICB9CgogIHBvaW50ZXIgb3BlcmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuICYob3BlcmF0b3Iq
KCkpOyB9CgoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAgIC0tY3VycmVudDsKICAgIHJldHVy
biAqdGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0g
KnRoaXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQogIF9TZWxmJiBvcGVy
YXRvci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBv
cGVyYXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAgICsrY3VycmVudDsK
ICAgIHJldHVybiBfX3RtcDsKICB9CgogIF9TZWxmIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUg
X19uKSBjb25zdCB7CiAgICByZXR1cm4gX1NlbGYoY3VycmVudCAtIF9fbik7CiAgfQogIF9TZWxm
JiBvcGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX24pIHsKICAgIGN1cnJlbnQgLT0gX19uOwog
ICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0oZGlmZmVyZW5jZV90eXBlIF9f
bikgY29uc3QgewogICAgcmV0dXJuIF9TZWxmKGN1cnJlbnQgKyBfX24pOwogIH0KICBfU2VsZiYg
b3BlcmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgX19uKSB7CiAgICBjdXJyZW50ICs9IF9fbjsKICAg
IHJldHVybiAqdGhpczsKICB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBl
IF9fbikgY29uc3QgeyByZXR1cm4gKigqdGhpcyArIF9fbik7IH0gIAp9OyAKIAp0ZW1wbGF0ZSA8
Y2xhc3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJldmVyc2VfaXRl
cmF0b3I8X0l0ZXJhdG9yPiYgX194LCAKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZl
cnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVybiBfX3guYmFzZSgpID09IF9f
eS5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGluZSBib29sIG9wZXJh
dG9yPChjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwgCiAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJl
dHVybiBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRv
cj4KaW5saW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5j
ZV90eXBlCm9wZXJhdG9yLShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwg
CiAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJl
dHVybiBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRv
cj4KaW5saW5lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiAKb3BlcmF0b3IrKHR5cGVuYW1l
IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiwKICAgICAg
ICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194KSB7CiAgcmV0dXJuIHJl
dmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPihfX3guYmFzZSgpIC0gX19uKTsKfQoKIyA4MDUgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9y
LmgiIDMKCgogCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0ID0gcHRyZGlmZl90
PiAKY2xhc3MgaXN0cmVhbV9pdGVyYXRvciB7CiAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PSA8PiAg
KGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImKTsKcHJvdGVjdGVkOgogIGlz
dHJlYW0qIF9NX3N0cmVhbTsKICBfVHAgX01fdmFsdWU7CiAgYm9vbCBfTV9lbmRfbWFya2VyOwog
IHZvaWQgX01fcmVhZCgpIHsKICAgIF9NX2VuZF9tYXJrZXIgPSAoKl9NX3N0cmVhbSkgPyB0cnVl
IDogZmFsc2U7CiAgICBpZiAoX01fZW5kX21hcmtlcikgKl9NX3N0cmVhbSA+PiBfTV92YWx1ZTsK
ICAgIF9NX2VuZF9tYXJrZXIgPSAoKl9NX3N0cmVhbSkgPyB0cnVlIDogZmFsc2U7CiAgfQpwdWJs
aWM6CiAgdHlwZWRlZiBpbnB1dF9pdGVyYXRvcl90YWcgIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5
cGVkZWYgX1RwICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3QgICAg
ICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiBjb25zdCBfVHAqICAgICAgICAg
IHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBfVHAmICAgICAgICAgIHJlZmVyZW5jZTsKCiAgaXN0
cmVhbV9pdGVyYXRvcigpIDogX01fc3RyZWFtKCZjaW4pLCBfTV9lbmRfbWFya2VyKGZhbHNlKSB7
fQogIGlzdHJlYW1faXRlcmF0b3IoaXN0cmVhbSYgX19zKSA6IF9NX3N0cmVhbSgmX19zKSB7IF9N
X3JlYWQoKTsgfQogIHJlZmVyZW5jZSBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiBfTV92YWx1
ZTsgfQoKICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigp
KTsgfQoKICBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0Rpc3Q+JiBvcGVyYXRvcisrKCkgeyAKICAg
IF9NX3JlYWQoKTsgCiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGlzdHJlYW1faXRlcmF0b3I8X1Rw
LCBfRGlzdD4gb3BlcmF0b3IrKyhpbnQpICB7CiAgICBpc3RyZWFtX2l0ZXJhdG9yPF9UcCwgX0Rp
c3Q+IF9fdG1wID0gKnRoaXM7CiAgICBfTV9yZWFkKCk7CiAgICByZXR1cm4gX190bXA7CiAgfQp9
OwoKIyA4NjQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMv
c3RsX2l0ZXJhdG9yLmgiIDMKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+
CmlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0
YW5jZT4mIF9feCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc3RyZWFtX2l0ZXJhdG9y
PF9UcCwgX0Rpc3RhbmNlPiYgX195KSB7CiAgcmV0dXJuIChfX3guX01fc3RyZWFtID09IF9feS5f
TV9zdHJlYW0gJiYKICAgICAgICAgIF9feC5fTV9lbmRfbWFya2VyID09IF9feS5fTV9lbmRfbWFy
a2VyKSB8fAogICAgICAgICBfX3guX01fZW5kX21hcmtlciA9PSBmYWxzZSAmJiBfX3kuX01fZW5k
X21hcmtlciA9PSBmYWxzZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xhc3Mgb3N0cmVhbV9p
dGVyYXRvciB7CnByb3RlY3RlZDoKICBvc3RyZWFtKiBfTV9zdHJlYW07CiAgY29uc3QgY2hhciog
X01fc3RyaW5nOwpwdWJsaWM6CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y
X2NhdGVnb3J5OwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5
cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB2b2lk
ICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZTsKCiAgb3N0cmVhbV9pdGVyYXRvcihvc3RyZWFtJiBfX3MpIDogX01fc3RyZWFtKCZf
X3MpLCBfTV9zdHJpbmcoMCkge30KICBvc3RyZWFtX2l0ZXJhdG9yKG9zdHJlYW0mIF9fcywgY29u
c3QgY2hhciogX19jKSAKICAgIDogX01fc3RyZWFtKCZfX3MpLCBfTV9zdHJpbmcoX19jKSAge30K
ICBvc3RyZWFtX2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yPShjb25zdCBfVHAmIF9fdmFsdWUpIHsg
CiAgICAqX01fc3RyZWFtIDw8IF9fdmFsdWU7CiAgICBpZiAoX01fc3RyaW5nKSAqX01fc3RyZWFt
IDw8IF9NX3N0cmluZzsKICAgIHJldHVybiAqdGhpczsKICB9CiAgb3N0cmVhbV9pdGVyYXRvcjxf
VHA+JiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQogIG9zdHJlYW1faXRlcmF0b3I8X1Rw
PiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9IAogIG9zdHJlYW1faXRlcmF0b3I8X1Rw
PiYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9IAp9OwoKIyA5MDcgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2l0ZXJhdG9yLmgiIDMK
CgogCgoKCiAKIAogCiMgMzggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvaXRlcmF0b3IiIDIgMwoKCgoKIAogCiAKIyA0NCAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvYmFzdHJpbmcuaCIgMiAzCgoKCgpleHRl
cm4gdm9pZCBfX291dF9vZl9yYW5nZSAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgX19sZW5n
dGhfZXJyb3IgKGNvbnN0IGNoYXIgKik7CgojZGVmaW5lIE9VVE9GUkFOR0UoY29uZCkgZG8geyBp
ZiAoY29uZCkgX19vdXRfb2ZfcmFuZ2UgKCNjb25kKTsgfSB3aGlsZSAoMCkKCiNkZWZpbmUgTEVO
R1RIRVJST1IoY29uZCkgZG8geyBpZiAoY29uZCkgX19sZW5ndGhfZXJyb3IgKCNjb25kKTsgfSB3
aGlsZSAoMCkKCgoKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID0g
c3RyaW5nX2NoYXJfdHJhaXRzPGNoYXJUPiwKCSAgY2xhc3MgQWxsb2NhdG9yID0gYWxsb2MgPgpj
bGFzcyBiYXNpY19zdHJpbmcKewpwcml2YXRlOgogIHN0cnVjdCBSZXAgewogICAgc2l6ZV90IGxl
biwgcmVzLCByZWY7CiAgICBib29sIHNlbGZpc2g7CgogICAgY2hhclQqIGRhdGEgKCkgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyVCAqPih0aGlzICsgMSk7IH0KICAgIGNoYXJUJiBvcGVy
YXRvcltdIChzaXplX3QgcykgeyByZXR1cm4gZGF0YSAoKSBbc107IH0KICAgIGNoYXJUKiBncmFi
ICgpIHsgaWYgKHNlbGZpc2gpIHJldHVybiBjbG9uZSAoKTsgKytyZWY7IHJldHVybiBkYXRhICgp
OyB9CgogICAgdm9pZCByZWxlYXNlICgpCiAgICAgIHsKCXNpemVfdCBfX3ZhbDsKCSAKCSAKCSAK
CSAKCWFzbSAoIi5ieXRlIDB4ZjAsIDB4MGYsIDB4YzEsIDB4MDIiICAKCSAgICA6ICI9YSIgKF9f
dmFsKQoJICAgIDogIjAiICgtMSksICJtIiAocmVmKSwgImQiICgmcmVmKQoJICAgIDogIm1lbW9y
eSIpOwoKCWlmIChfX3ZhbCA9PSAxKQoJICBkZWxldGUgdGhpczsKICAgICAgfQojIDExMCAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvYmFzdHJpbmcu
aCIgMwoKCiAgICBpbmxpbmUgc3RhdGljIHZvaWQgKiBvcGVyYXRvciBuZXcgKHNpemVfdCwgc2l6
ZV90KTsKICAgIGlubGluZSBzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGUgKHZvaWQgKik7CiAg
ICBpbmxpbmUgc3RhdGljIFJlcCogY3JlYXRlIChzaXplX3QpOwogICAgY2hhclQqIGNsb25lICgp
OwoKICAgIGlubGluZSB2b2lkIGNvcHkgKHNpemVfdCwgY29uc3QgY2hhclQgKiwgc2l6ZV90KTsK
ICAgIGlubGluZSB2b2lkIG1vdmUgKHNpemVfdCwgY29uc3QgY2hhclQgKiwgc2l6ZV90KTsKICAg
IGlubGluZSB2b2lkIHNldCAgKHNpemVfdCwgY29uc3QgY2hhclQsICAgc2l6ZV90KTsKCiAgICBp
bmxpbmUgc3RhdGljIGJvb2wgZXhjZXNzX3Nsb3AgKHNpemVfdCwgc2l6ZV90KTsKICAgIGlubGlu
ZSBzdGF0aWMgc2l6ZV90IGZyb2Jfc2l6ZSAoc2l6ZV90KTsKCiAgcHJpdmF0ZToKICAgIFJlcCAm
b3BlcmF0b3I9IChjb25zdCBSZXAgJik7CiAgfTsKCnB1YmxpYzoKIAogIHR5cGVkZWYJICAgdHJh
aXRzCQl0cmFpdHNfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl90eXBlCXZh
bHVlX3R5cGU7CiAgdHlwZWRlZgkgICBBbGxvY2F0b3IJCWFsbG9jYXRvcl90eXBlOwoKICB0eXBl
ZGVmIHNpemVfdCBzaXplX3R5cGU7CiAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBl
OwogIHR5cGVkZWYgY2hhclQmIHJlZmVyZW5jZTsKICB0eXBlZGVmIGNvbnN0IGNoYXJUJiBjb25z
dF9yZWZlcmVuY2U7CiAgdHlwZWRlZiBjaGFyVCogcG9pbnRlcjsKICB0eXBlZGVmIGNvbnN0IGNo
YXJUKiBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgcG9pbnRlciBpdGVyYXRvcjsKICB0eXBlZGVm
IGNvbnN0X3BvaW50ZXIgY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiA6OnJldmVyc2VfaXRlcmF0
b3I8aXRlcmF0b3I+IHJldmVyc2VfaXRlcmF0b3I7CiAgdHlwZWRlZiA6OnJldmVyc2VfaXRlcmF0
b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgc3RhdGljIGNvbnN0
IHNpemVfdHlwZSBucG9zID0gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPigtMSk7Cgpwcml2YXRlOgog
IFJlcCAqcmVwICgpIGNvbnN0IHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8UmVwICo+KGRhdCkg
LSAxOyB9CiAgdm9pZCByZXB1cCAoUmVwICpwKSB7IHJlcCAoKS0+cmVsZWFzZSAoKTsgZGF0ID0g
cC0+ZGF0YSAoKTsgfQoKcHVibGljOgogIGNvbnN0IGNoYXJUKiBkYXRhICgpIGNvbnN0CiAgICB7
IHJldHVybiByZXAgKCktPmRhdGEoKTsgfQogIHNpemVfdHlwZSBsZW5ndGggKCkgY29uc3QKICAg
IHsgcmV0dXJuIHJlcCAoKS0+bGVuOyB9CiAgc2l6ZV90eXBlIHNpemUgKCkgY29uc3QKICAgIHsg
cmV0dXJuIHJlcCAoKS0+bGVuOyB9CiAgc2l6ZV90eXBlIGNhcGFjaXR5ICgpIGNvbnN0CiAgICB7
IHJldHVybiByZXAgKCktPnJlczsgfQogIHNpemVfdHlwZSBtYXhfc2l6ZSAoKSBjb25zdAogICAg
eyByZXR1cm4gKG5wb3MgLSAxKS9zaXplb2YgKGNoYXJUKTsgfQkJIAogIGJvb2wgZW1wdHkgKCkg
Y29uc3QKICAgIHsgcmV0dXJuIHNpemUgKCkgPT0gMDsgfQoKIAogIGJhc2ljX3N0cmluZyYgb3Bl
cmF0b3I9IChjb25zdCBiYXNpY19zdHJpbmcmIHN0cikKICAgIHsKICAgICAgaWYgKCZzdHIgIT0g
dGhpcykgeyByZXAgKCktPnJlbGVhc2UgKCk7IGRhdCA9IHN0ci5yZXAgKCktPmdyYWIgKCk7IH0K
ICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICBleHBsaWNpdCBiYXNpY19zdHJpbmcgKCk6IGRh
dCAobmlsUmVwLmdyYWIgKCkpIHsgfQogIGJhc2ljX3N0cmluZyAoY29uc3QgYmFzaWNfc3RyaW5n
JiBzdHIpOiBkYXQgKHN0ci5yZXAgKCktPmdyYWIgKCkpIHsgfQogIGJhc2ljX3N0cmluZyAoY29u
c3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuID0gbnBvcykK
ICAgIDogZGF0IChuaWxSZXAuZ3JhYiAoKSkgeyBhc3NpZ24gKHN0ciwgcG9zLCBuKTsgfQogIGJh
c2ljX3N0cmluZyAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBuKQogICAgOiBkYXQgKG5pbFJl
cC5ncmFiICgpKSB7IGFzc2lnbiAocywgbik7IH0KICBiYXNpY19zdHJpbmcgKGNvbnN0IGNoYXJU
KiBzKQogICAgOiBkYXQgKG5pbFJlcC5ncmFiICgpKSB7IGFzc2lnbiAocyk7IH0KICBiYXNpY19z
dHJpbmcgKHNpemVfdHlwZSBuLCBjaGFyVCBjKQogICAgOiBkYXQgKG5pbFJlcC5ncmFiICgpKSB7
IGFzc2lnbiAobiwgYyk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KICAgIGJh
c2ljX3N0cmluZyhJbnB1dEl0ZXJhdG9yIF9fYmVnaW4sIElucHV0SXRlcmF0b3IgX19lbmQpCgoK
CiAgICA6IGRhdCAobmlsUmVwLmdyYWIgKCkpIHsgYXNzaWduIChfX2JlZ2luLCBfX2VuZCk7IH0K
CiAgfmJhc2ljX3N0cmluZyAoKQogICAgeyByZXAgKCktPnJlbGVhc2UgKCk7IH0KCiAgdm9pZCBz
d2FwIChiYXNpY19zdHJpbmcgJnMpIHsgY2hhclQgKmQgPSBkYXQ7IGRhdCA9IHMuZGF0OyBzLmRh
dCA9IGQ7IH0KCiAgYmFzaWNfc3RyaW5nJiBhcHBlbmQgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3Ry
LCBzaXplX3R5cGUgcG9zID0gMCwKCQkJc2l6ZV90eXBlIG4gPSBucG9zKQogICAgeyByZXR1cm4g
cmVwbGFjZSAobGVuZ3RoICgpLCAwLCBzdHIsIHBvcywgbik7IH0KICBiYXNpY19zdHJpbmcmIGFw
cGVuZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBuKQogICAgeyByZXR1cm4gcmVwbGFjZSAo
bGVuZ3RoICgpLCAwLCBzLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgYXBwZW5kIChjb25zdCBjaGFy
VCogcykKICAgIHsgcmV0dXJuIGFwcGVuZCAocywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJh
c2ljX3N0cmluZyYgYXBwZW5kIChzaXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsgcmV0dXJuIHJl
cGxhY2UgKGxlbmd0aCAoKSwgMCwgbiwgYyk7IH0KCiAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVy
YXRvcj4KICAgIGJhc2ljX3N0cmluZyYgYXBwZW5kKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0
SXRlcmF0b3IgbGFzdCkKCgoKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGllbmQgKCksIGllbmQgKCks
IGZpcnN0LCBsYXN0KTsgfQoKICB2b2lkIHB1c2hfYmFjayhjaGFyVCBfX2MpCiAgeyBhcHBlbmQo
MSwgX19jKTsgfQogIAogIGJhc2ljX3N0cmluZyYgYXNzaWduIChjb25zdCBiYXNpY19zdHJpbmcm
IHN0ciwgc2l6ZV90eXBlIHBvcyA9IDAsCgkJCXNpemVfdHlwZSBuID0gbnBvcykKICAgIHsgcmV0
dXJuIHJlcGxhY2UgKDAsIG5wb3MsIHN0ciwgcG9zLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgYXNz
aWduIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIG4pCiAgICB7IHJldHVybiByZXBsYWNlICgw
LCBucG9zLCBzLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgYXNzaWduIChjb25zdCBjaGFyVCogcykK
ICAgIHsgcmV0dXJuIGFzc2lnbiAocywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJhc2ljX3N0
cmluZyYgYXNzaWduIChzaXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsgcmV0dXJuIHJlcGxhY2Ug
KDAsIG5wb3MsIG4sIGMpOyB9CgogIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3I+CiAgICBi
YXNpY19zdHJpbmcmIGFzc2lnbihJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxh
c3QpCgoKCiAgICB7IHJldHVybiByZXBsYWNlIChpYmVnaW4gKCksIGllbmQgKCksIGZpcnN0LCBs
YXN0KTsgfQoKICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yPSAoY29uc3QgY2hhclQqIHMpCiAgICB7
IHJldHVybiBhc3NpZ24gKHMpOyB9CiAgYmFzaWNfc3RyaW5nJiBvcGVyYXRvcj0gKGNoYXJUIGMp
CiAgICB7IHJldHVybiBhc3NpZ24gKDEsIGMpOyB9CgogIGJhc2ljX3N0cmluZyYgb3BlcmF0b3Ir
PSAoY29uc3QgYmFzaWNfc3RyaW5nJiByaHMpCiAgICB7IHJldHVybiBhcHBlbmQgKHJocyk7IH0K
ICBiYXNpY19zdHJpbmcmIG9wZXJhdG9yKz0gKGNvbnN0IGNoYXJUKiBzKQogICAgeyByZXR1cm4g
YXBwZW5kIChzKTsgfQogIGJhc2ljX3N0cmluZyYgb3BlcmF0b3IrPSAoY2hhclQgYykKICAgIHsg
cmV0dXJuIGFwcGVuZCAoMSwgYyk7IH0KCiAgYmFzaWNfc3RyaW5nJiBpbnNlcnQgKHNpemVfdHlw
ZSBwb3MxLCBjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwKCQkJc2l6ZV90eXBlIHBvczIgPSAwLCBz
aXplX3R5cGUgbiA9IG5wb3MpCiAgICB7IHJldHVybiByZXBsYWNlIChwb3MxLCAwLCBzdHIsIHBv
czIsIG4pOyB9CiAgYmFzaWNfc3RyaW5nJiBpbnNlcnQgKHNpemVfdHlwZSBwb3MsIGNvbnN0IGNo
YXJUKiBzLCBzaXplX3R5cGUgbikKICAgIHsgcmV0dXJuIHJlcGxhY2UgKHBvcywgMCwgcywgbik7
IH0KICBiYXNpY19zdHJpbmcmIGluc2VydCAoc2l6ZV90eXBlIHBvcywgY29uc3QgY2hhclQqIHMp
CiAgICB7IHJldHVybiBpbnNlcnQgKHBvcywgcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIGJh
c2ljX3N0cmluZyYgaW5zZXJ0IChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbiwgY2hhclQgYykK
ICAgIHsgcmV0dXJuIHJlcGxhY2UgKHBvcywgMCwgbiwgYyk7IH0KICBpdGVyYXRvciBpbnNlcnQo
aXRlcmF0b3IgcCwgY2hhclQgYykKICAgIHsgc2l6ZV90eXBlIF9fbyA9IHAgLSBpYmVnaW4gKCk7
CiAgICAgIGluc2VydCAocCAtIGliZWdpbiAoKSwgMSwgYyk7IHNlbGZpc2ggKCk7CiAgICAgIHJl
dHVybiBpYmVnaW4gKCkgKyBfX287IH0KICBpdGVyYXRvciBpbnNlcnQoaXRlcmF0b3IgcCwgc2l6
ZV90eXBlIG4sIGNoYXJUIGMpCiAgICB7IHNpemVfdHlwZSBfX28gPSBwIC0gaWJlZ2luICgpOwog
ICAgICBpbnNlcnQgKHAgLSBpYmVnaW4gKCksIG4sIGMpOyBzZWxmaXNoICgpOwogICAgICByZXR1
cm4gaWJlZ2luICgpICsgX19vOyB9CgogIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3I+CiAg
ICB2b2lkIGluc2VydChpdGVyYXRvciBwLCBJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJh
dG9yIGxhc3QpCgoKCiAgICB7IHJlcGxhY2UgKHAsIHAsIGZpcnN0LCBsYXN0KTsgfQoKICBiYXNp
Y19zdHJpbmcmIGVyYXNlIChzaXplX3R5cGUgcG9zID0gMCwgc2l6ZV90eXBlIG4gPSBucG9zKQog
ICAgeyByZXR1cm4gcmVwbGFjZSAocG9zLCBuLCAoc2l6ZV90eXBlKTAsIChjaGFyVCkwKTsgfQog
IGl0ZXJhdG9yIGVyYXNlKGl0ZXJhdG9yIHApCiAgICB7IHNpemVfdHlwZSBfX28gPSBwIC0gYmVn
aW4oKTsKICAgICAgcmVwbGFjZSAoX19vLCAxLCAoc2l6ZV90eXBlKTAsIChjaGFyVCkwKTsgc2Vs
ZmlzaCAoKTsKICAgICAgcmV0dXJuIGliZWdpbigpICsgX19vOyB9CiAgaXRlcmF0b3IgZXJhc2Uo
aXRlcmF0b3IgZiwgaXRlcmF0b3IgbCkKICAgIHsgc2l6ZV90eXBlIF9fbyA9IGYgLSBpYmVnaW4o
KTsKICAgICAgcmVwbGFjZSAoX19vLCBsLWYsIChzaXplX3R5cGUpMCwgKGNoYXJUKTApO3NlbGZp
c2ggKCk7CiAgICAgIHJldHVybiBpYmVnaW4oKSArIF9fbzsgfQoKICBiYXNpY19zdHJpbmcmIHJl
cGxhY2UgKHNpemVfdHlwZSBwb3MxLCBzaXplX3R5cGUgbjEsIGNvbnN0IGJhc2ljX3N0cmluZyYg
c3RyLAoJCQkgc2l6ZV90eXBlIHBvczIgPSAwLCBzaXplX3R5cGUgbjIgPSBucG9zKTsKICBiYXNp
Y19zdHJpbmcmIHJlcGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuMSwgY29uc3QgY2hh
clQqIHMsCgkJCSBzaXplX3R5cGUgbjIpOwogIGJhc2ljX3N0cmluZyYgcmVwbGFjZSAoc2l6ZV90
eXBlIHBvcywgc2l6ZV90eXBlIG4xLCBjb25zdCBjaGFyVCogcykKICAgIHsgcmV0dXJuIHJlcGxh
Y2UgKHBvcywgbjEsIHMsIHRyYWl0czo6bGVuZ3RoIChzKSk7IH0KICBiYXNpY19zdHJpbmcmIHJl
cGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuMSwgc2l6ZV90eXBlIG4yLCBjaGFyVCBj
KTsKICBiYXNpY19zdHJpbmcmIHJlcGxhY2UgKHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuLCBj
aGFyVCBjKQogICAgeyByZXR1cm4gcmVwbGFjZSAocG9zLCBuLCAxLCBjKTsgfQogIGJhc2ljX3N0
cmluZyYgcmVwbGFjZSAoaXRlcmF0b3IgaTEsIGl0ZXJhdG9yIGkyLCBjb25zdCBiYXNpY19zdHJp
bmcmIHN0cikKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGkxIC0gaWJlZ2luICgpLCBpMiAtIGkxLCBz
dHIpOyB9CiAgYmFzaWNfc3RyaW5nJiByZXBsYWNlIChpdGVyYXRvciBpMSwgaXRlcmF0b3IgaTIs
IGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgbikKICAgIHsgcmV0dXJuIHJlcGxhY2UgKGkxIC0g
aWJlZ2luICgpLCBpMiAtIGkxLCBzLCBuKTsgfQogIGJhc2ljX3N0cmluZyYgcmVwbGFjZSAoaXRl
cmF0b3IgaTEsIGl0ZXJhdG9yIGkyLCBjb25zdCBjaGFyVCogcykKICAgIHsgcmV0dXJuIHJlcGxh
Y2UgKGkxIC0gaWJlZ2luICgpLCBpMiAtIGkxLCBzKTsgfQogIGJhc2ljX3N0cmluZyYgcmVwbGFj
ZSAoaXRlcmF0b3IgaTEsIGl0ZXJhdG9yIGkyLCBzaXplX3R5cGUgbiwgY2hhclQgYykKICAgIHsg
cmV0dXJuIHJlcGxhY2UgKGkxIC0gaWJlZ2luICgpLCBpMiAtIGkxLCBuLCBjKTsgfQoKICB0ZW1w
bGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yPgogICAgYmFzaWNfc3RyaW5nJiByZXBsYWNlKGl0ZXJh
dG9yIGkxLCBpdGVyYXRvciBpMiwKCQkJICBJbnB1dEl0ZXJhdG9yIGoxLCBJbnB1dEl0ZXJhdG9y
IGoyKTsKCgoKCgpwcml2YXRlOgogIHN0YXRpYyBjaGFyVCBlb3MgKCkgeyByZXR1cm4gdHJhaXRz
Ojplb3MgKCk7IH0KICB2b2lkIHVuaXF1ZSAoKSB7IGlmIChyZXAgKCktPnJlZiA+IDEpIGFsbG9j
IChsZW5ndGggKCksIHRydWUpOyB9CiAgdm9pZCBzZWxmaXNoICgpIHsgdW5pcXVlICgpOyByZXAg
KCktPnNlbGZpc2ggPSB0cnVlOyB9CgpwdWJsaWM6CiAgY2hhclQgb3BlcmF0b3JbXSAoc2l6ZV90
eXBlIHBvcykgY29uc3QKICAgIHsKICAgICAgaWYgKHBvcyA9PSBsZW5ndGggKCkpCglyZXR1cm4g
ZW9zICgpOwogICAgICByZXR1cm4gZGF0YSAoKVtwb3NdOwogICAgfQoKICByZWZlcmVuY2Ugb3Bl
cmF0b3JbXSAoc2l6ZV90eXBlIHBvcykKICAgIHsgc2VsZmlzaCAoKTsgcmV0dXJuICgqcmVwICgp
KVtwb3NdOyB9CgogIHJlZmVyZW5jZSBhdCAoc2l6ZV90eXBlIHBvcykKICAgIHsKICAgICAgZG8g
eyBpZiAoIHBvcyA+PSBsZW5ndGggKCkgKSBfX291dF9vZl9yYW5nZSAoInBvcyA+PSBsZW5ndGgg
KCkiKTsgfSB3aGlsZSAoMCkgOwogICAgICByZXR1cm4gKCp0aGlzKVtwb3NdOwogICAgfQogIGNv
bnN0X3JlZmVyZW5jZSBhdCAoc2l6ZV90eXBlIHBvcykgY29uc3QKICAgIHsKICAgICAgZG8geyBp
ZiAoIHBvcyA+PSBsZW5ndGggKCkgKSBfX291dF9vZl9yYW5nZSAoInBvcyA+PSBsZW5ndGggKCki
KTsgfSB3aGlsZSAoMCkgOwogICAgICByZXR1cm4gZGF0YSAoKVtwb3NdOwogICAgfQoKcHJpdmF0
ZToKICB2b2lkIHRlcm1pbmF0ZSAoKSBjb25zdAogICAgeyB0cmFpdHM6OmFzc2lnbiAoKCpyZXAg
KCkpW2xlbmd0aCAoKV0sIGVvcyAoKSk7IH0KCnB1YmxpYzoKICBjb25zdCBjaGFyVCogY19zdHIg
KCkgY29uc3QKICAgIHsgaWYgKGxlbmd0aCAoKSA9PSAwKSByZXR1cm4gIiI7IHRlcm1pbmF0ZSAo
KTsgcmV0dXJuIGRhdGEgKCk7IH0KICB2b2lkIHJlc2l6ZSAoc2l6ZV90eXBlIG4sIGNoYXJUIGMp
OwogIHZvaWQgcmVzaXplIChzaXplX3R5cGUgbikKICAgIHsgcmVzaXplIChuLCBlb3MgKCkpOyB9
CiAgdm9pZCByZXNlcnZlIChzaXplX3R5cGUpIHsgfQoKICBzaXplX3R5cGUgY29weSAoY2hhclQq
IHMsIHNpemVfdHlwZSBuLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3Q7CgogIHNpemVfdHlwZSBm
aW5kIChjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9IDApIGNvbnN0CiAg
ICB7IHJldHVybiBmaW5kIChzdHIuZGF0YSgpLCBwb3MsIHN0ci5sZW5ndGgoKSk7IH0KICBzaXpl
X3R5cGUgZmluZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBj
b25zdDsKICBzaXplX3R5cGUgZmluZCAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3MgPSAw
KSBjb25zdAogICAgeyByZXR1cm4gZmluZCAocywgcG9zLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9
CiAgc2l6ZV90eXBlIGZpbmQgKGNoYXJUIGMsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdDsKCiAg
c2l6ZV90eXBlIHJmaW5kIChjb25zdCBiYXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9
IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiByZmluZCAoc3RyLmRhdGEoKSwgcG9zLCBzdHIubGVu
Z3RoKCkpOyB9CiAgc2l6ZV90eXBlIHJmaW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBv
cywgc2l6ZV90eXBlIG4pIGNvbnN0OwogIHNpemVfdHlwZSByZmluZCAoY29uc3QgY2hhclQqIHMs
IHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1cm4gcmZpbmQgKHMsIHBvcywg
dHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSByZmluZCAoY2hhclQgYywgc2l6ZV90
eXBlIHBvcyA9IG5wb3MpIGNvbnN0OwoKICBzaXplX3R5cGUgZmluZF9maXJzdF9vZiAoY29uc3Qg
YmFzaWNfc3RyaW5nJiBzdHIsIHNpemVfdHlwZSBwb3MgPSAwKSBjb25zdAogICAgeyByZXR1cm4g
ZmluZF9maXJzdF9vZiAoc3RyLmRhdGEoKSwgcG9zLCBzdHIubGVuZ3RoKCkpOyB9CiAgc2l6ZV90
eXBlIGZpbmRfZmlyc3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5
cGUgbikgY29uc3Q7CiAgc2l6ZV90eXBlIGZpbmRfZmlyc3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBz
aXplX3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZpbmRfZmlyc3Rfb2YgKHMsIHBv
cywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQogIHNpemVfdHlwZSBmaW5kX2ZpcnN0X29mIChjaGFy
VCBjLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZpbmQgKGMsIHBvcyk7
IH0KCiAgc2l6ZV90eXBlIGZpbmRfbGFzdF9vZiAoY29uc3QgYmFzaWNfc3RyaW5nJiBzdHIsIHNp
emVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9sYXN0X29mIChzdHIu
ZGF0YSgpLCBwb3MsIHN0ci5sZW5ndGgoKSk7IH0KICBzaXplX3R5cGUgZmluZF9sYXN0X29mIChj
b25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIG4pIGNvbnN0OwogIHNpemVf
dHlwZSBmaW5kX2xhc3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zID0gbnBvcykg
Y29uc3QKICAgIHsgcmV0dXJuIGZpbmRfbGFzdF9vZiAocywgcG9zLCB0cmFpdHM6Omxlbmd0aCAo
cykpOyB9CiAgc2l6ZV90eXBlIGZpbmRfbGFzdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcyA9
IG5wb3MpIGNvbnN0CiAgICB7IHJldHVybiByZmluZCAoYywgcG9zKTsgfQoKICBzaXplX3R5cGUg
ZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9z
ID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGZpbmRfZmlyc3Rfbm90X29mIChzdHIuZGF0YSgpLCBw
b3MsIHN0ci5sZW5ndGgoKSk7IH0KICBzaXplX3R5cGUgZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0
IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAgc2l6ZV90eXBl
IGZpbmRfZmlyc3Rfbm90X29mIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcyA9IDApIGNv
bnN0CiAgICB7IHJldHVybiBmaW5kX2ZpcnN0X25vdF9vZiAocywgcG9zLCB0cmFpdHM6Omxlbmd0
aCAocykpOyB9CiAgc2l6ZV90eXBlIGZpbmRfZmlyc3Rfbm90X29mIChjaGFyVCBjLCBzaXplX3R5
cGUgcG9zID0gMCkgY29uc3Q7CgogIHNpemVfdHlwZSBmaW5kX2xhc3Rfbm90X29mIChjb25zdCBi
YXNpY19zdHJpbmcmIHN0ciwgc2l6ZV90eXBlIHBvcyA9IG5wb3MpIGNvbnN0CiAgICB7IHJldHVy
biBmaW5kX2xhc3Rfbm90X29mIChzdHIuZGF0YSgpLCBwb3MsIHN0ci5sZW5ndGgoKSk7IH0KICBz
aXplX3R5cGUgZmluZF9sYXN0X25vdF9vZiAoY29uc3QgY2hhclQqIHMsIHNpemVfdHlwZSBwb3Ms
IHNpemVfdHlwZSBuKSBjb25zdDsKICBzaXplX3R5cGUgZmluZF9sYXN0X25vdF9vZiAoY29uc3Qg
Y2hhclQqIHMsIHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdAogICAgeyByZXR1cm4gZmluZF9s
YXN0X25vdF9vZiAocywgcG9zLCB0cmFpdHM6Omxlbmd0aCAocykpOyB9CiAgc2l6ZV90eXBlIGZp
bmRfbGFzdF9ub3Rfb2YgKGNoYXJUIGMsIHNpemVfdHlwZSBwb3MgPSBucG9zKSBjb25zdDsKCiAg
YmFzaWNfc3RyaW5nIHN1YnN0ciAoc2l6ZV90eXBlIHBvcyA9IDAsIHNpemVfdHlwZSBuID0gbnBv
cykgY29uc3QKICAgIHsgcmV0dXJuIGJhc2ljX3N0cmluZyAoKnRoaXMsIHBvcywgbik7IH0KCiAg
aW50IGNvbXBhcmUgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUgcG9zID0gMCwg
c2l6ZV90eXBlIG4gPSBucG9zKSBjb25zdDsKICAgCiAgaW50IGNvbXBhcmUgKGNvbnN0IGNoYXJU
KiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3Q7CiAgaW50IGNvbXBhcmUgKGNv
bnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zID0gMCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbXBh
cmUgKHMsIHBvcywgdHJhaXRzOjpsZW5ndGggKHMpKTsgfQoKICBpdGVyYXRvciBiZWdpbiAoKSB7
IHNlbGZpc2ggKCk7IHJldHVybiAmKCp0aGlzKVswXTsgfQogIGl0ZXJhdG9yIGVuZCAoKSB7IHNl
bGZpc2ggKCk7IHJldHVybiAmKCp0aGlzKVtsZW5ndGggKCldOyB9Cgpwcml2YXRlOgogIGl0ZXJh
dG9yIGliZWdpbiAoKSBjb25zdCB7IHJldHVybiAmKCpyZXAgKCkpWzBdOyB9CiAgaXRlcmF0b3Ig
aWVuZCAoKSBjb25zdCB7IHJldHVybiAmKCpyZXAgKCkpW2xlbmd0aCAoKV07IH0KCnB1YmxpYzoK
ICBjb25zdF9pdGVyYXRvciBiZWdpbiAoKSBjb25zdCB7IHJldHVybiBpYmVnaW4gKCk7IH0KICBj
b25zdF9pdGVyYXRvciBlbmQgKCkgY29uc3QgeyByZXR1cm4gaWVuZCAoKTsgfQoKICByZXZlcnNl
X2l0ZXJhdG9yICAgICAgIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IgKGVuZCAo
KSk7IH0KICBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0CiAgICB7IHJldHVy
biBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIChlbmQgKCkpOyB9CiAgcmV2ZXJzZV9pdGVyYXRvciAg
ICAgICByZW5kKCkgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvciAoYmVnaW4gKCkpOyB9CiAgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QKICAgIHsgcmV0dXJuIGNvbnN0X3JldmVy
c2VfaXRlcmF0b3IgKGJlZ2luICgpKTsgfQoKcHJpdmF0ZToKICB2b2lkIGFsbG9jIChzaXplX3R5
cGUgc2l6ZSwgYm9vbCBzYXZlKTsKICBzdGF0aWMgc2l6ZV90eXBlIF9maW5kIChjb25zdCBjaGFy
VCogcHRyLCBjaGFyVCBjLCBzaXplX3R5cGUgeHBvcywgc2l6ZV90eXBlIGxlbik7CiAgaW5saW5l
IGJvb2wgY2hlY2tfcmVhbGxvYyAoc2l6ZV90eXBlIHMpIGNvbnN0OwoKICBzdGF0aWMgUmVwIG5p
bFJlcDsKICBjaGFyVCAqZGF0Owp9OwoKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+IHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIGJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6CnJlcGxhY2UgKGl0ZXJhdG9yIGkxLCBpdGVyYXRvciBpMiwg
SW5wdXRJdGVyYXRvciBqMSwgSW5wdXRJdGVyYXRvciBqMikKCgoKCgp7CiAgY29uc3Qgc2l6ZV90
eXBlIGxlbiA9IGxlbmd0aCAoKTsKICBzaXplX3R5cGUgcG9zID0gaTEgLSBpYmVnaW4gKCk7CiAg
c2l6ZV90eXBlIG4xID0gaTIgLSBpMTsKICBzaXplX3R5cGUgbjIgPSBqMiAtIGoxOwoKICBkbyB7
IGlmICggcG9zID4gbGVuICkgX19vdXRfb2ZfcmFuZ2UgKCJwb3MgPiBsZW4iKTsgfSB3aGlsZSAo
MCkgOwogIGlmIChuMSA+IGxlbiAtIHBvcykKICAgIG4xID0gbGVuIC0gcG9zOwogIGRvIHsgaWYg
KCBsZW4gLSBuMSA+IG1heF9zaXplICgpIC0gbjIgKSBfX2xlbmd0aF9lcnJvciAoImxlbiAtIG4x
ID4gbWF4X3NpemUgKCkgLSBuMiIpOyB9IHdoaWxlICgwKSA7CiAgc2l6ZV90IG5ld2xlbiA9IGxl
biAtIG4xICsgbjI7CgogIGlmIChjaGVja19yZWFsbG9jIChuZXdsZW4pKQogICAgewogICAgICBS
ZXAgKnAgPSBSZXA6OmNyZWF0ZSAobmV3bGVuKTsKICAgICAgcC0+Y29weSAoMCwgZGF0YSAoKSwg
cG9zKTsKICAgICAgcC0+Y29weSAocG9zICsgbjIsIGRhdGEgKCkgKyBwb3MgKyBuMSwgbGVuIC0g
KHBvcyArIG4xKSk7CiAgICAgIGZvciAoOyBqMSAhPSBqMjsgKytqMSwgKytwb3MpCgl0cmFpdHM6
OmFzc2lnbiAoKCpwKVtwb3NdLCAqajEpOwogICAgICByZXB1cCAocCk7CiAgICB9CiAgZWxzZQog
ICAgewogICAgICByZXAgKCktPm1vdmUgKHBvcyArIG4yLCBkYXRhICgpICsgcG9zICsgbjEsIGxl
biAtIChwb3MgKyBuMSkpOwogICAgICBmb3IgKDsgajEgIT0gajI7ICsrajEsICsrcG9zKQoJdHJh
aXRzOjphc3NpZ24gKCgqcmVwICgpKVtwb3NdLCAqajEpOwogICAgfQogIHJlcCAoKS0+bGVuID0g
bmV3bGVuOwoKICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3Mg
dHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj4Kb3BlcmF0b3IrIChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj4mIGxocywKCSAgIGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0
cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+IHN0ciAobGhzKTsKICBzdHIuYXBwZW5kIChyaHMpOwogIHJldHVybiBzdHI7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGlu
ZSBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4Kb3BlcmF0b3IrIChjb25z
dCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRv
cj4mIHJocykKewogIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiBzdHIg
KGxocyk7CiAgc3RyLmFwcGVuZCAocmhzKTsKICByZXR1cm4gc3RyOwp9Cgp0ZW1wbGF0ZSA8Y2xh
c3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+Cm9wZXJhdG9yKyAoY2hhclQgbGhzLCBjb25z
dCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIGJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiBzdHIgKDEsIGxocyk7CiAgc3RyLmFw
cGVuZCAocmhzKTsKICByZXR1cm4gc3RyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNz
IHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+Cm9wZXJhdG9yKyAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMpCnsKICBiYXNpY19zdHJpbmcg
PGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4gc3RyIChsaHMpOwogIHN0ci5hcHBlbmQgKHJocyk7
CiAgcmV0dXJuIHN0cjsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNs
YXNzIEFsbG9jYXRvcj4KaW5saW5lIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPgpvcGVyYXRvcisgKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2Nh
dG9yPiYgbGhzLCBjaGFyVCByaHMpCnsKICBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj4gc3RyIChsaHMpOwogIHN0ci5hcHBlbmQgKDEsIHJocyk7CiAgcmV0dXJuIHN0cjsK
fQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4K
aW5saW5lIGJvb2wKb3BlcmF0b3I9PSAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpID09IDApOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpp
bmxpbmUgYm9vbApvcGVyYXRvcj09IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAocmhzLmNvbXBh
cmUgKGxocykgPT0gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBj
bGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPT0gKGNvbnN0IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLCBjb25zdCBjaGFyVCogcmhzKQp7CiAg
cmV0dXJuIChsaHMuY29tcGFyZSAocmhzKSA9PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJU
LCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3IhPSAo
Y29uc3QgY2hhclQqIGxocywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+JiByaHMpCnsKICByZXR1cm4gKHJocy5jb21wYXJlIChsaHMpICE9IDApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUg
Ym9vbApvcGVyYXRvciE9IChjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj4mIGxocywgY29uc3QgY2hhclQqIHJocykKewogIHJldHVybiAobGhzLmNvbXBhcmUgKHJo
cykgIT0gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBB
bGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPCAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMp
IDwgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxv
Y2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPCAoY29uc3QgY2hhclQqIGxocywgY29uc3QgYmFz
aWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKHJo
cy5jb21wYXJlIChsaHMpID4gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPCAoY29uc3QgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMp
CnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpIDwgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9y
PiAoY29uc3QgY2hhclQqIGxocywgY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKHJocy5jb21wYXJlIChsaHMpIDwgMCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGlu
ZSBib29sCm9wZXJhdG9yPiAoY29uc3QgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxv
Y2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJUKiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChy
aHMpID4gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBB
bGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPD0gKGNvbnN0IGNoYXJUKiBsaHMsIGNvbnN0
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJu
IChyaHMuY29tcGFyZSAobGhzKSA+PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFz
cyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I8PSAoY29uc3Qg
YmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsIGNvbnN0IGNoYXJU
KiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJlIChyaHMpIDw9IDApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApv
cGVyYXRvcj49IChjb25zdCBjaGFyVCogbGhzLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj4mIHJocykKewogIHJldHVybiAocmhzLmNvbXBhcmUgKGxocykgPD0g
MCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0
b3I+CmlubGluZSBib29sCm9wZXJhdG9yPj0gKGNvbnN0IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPiYgbGhzLCBjb25zdCBjaGFyVCogcmhzKQp7CiAgcmV0dXJuIChsaHMu
Y29tcGFyZSAocmhzKSA+PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3IhPSAoY29uc3QgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5j
b21wYXJlIChyaHMpICE9IDApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgYm9vbApvcGVyYXRvcj4gKGNvbnN0IGJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLAoJICAgY29uc3QgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21w
YXJlIChyaHMpID4gMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBj
bGFzcyBBbGxvY2F0b3I+CmlubGluZSBib29sCm9wZXJhdG9yPD0gKGNvbnN0IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgbGhzLAoJICAgIGNvbnN0IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYgcmhzKQp7CiAgcmV0dXJuIChsaHMuY29tcGFy
ZSAocmhzKSA8PSAwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNs
YXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wKb3BlcmF0b3I+PSAoY29uc3QgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBsaHMsCgkgICAgY29uc3QgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiByaHMpCnsKICByZXR1cm4gKGxocy5jb21wYXJl
IChyaHMpID49IDApOwp9CgpjbGFzcyBpc3RyZWFtOyBjbGFzcyBvc3RyZWFtOwp0ZW1wbGF0ZSA8
Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPiBpc3RyZWFtJgpvcGVy
YXRvcj4+IChpc3RyZWFtJiwgYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+
Jik7CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+
IG9zdHJlYW0mCm9wZXJhdG9yPDwgKG9zdHJlYW0mLCBjb25zdCBiYXNpY19zdHJpbmcgPGNoYXJU
LCB0cmFpdHMsIEFsbG9jYXRvcj4mKTsKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFp
dHMsIGNsYXNzIEFsbG9jYXRvcj4gaXN0cmVhbSYKZ2V0bGluZSAoaXN0cmVhbSYsIGJhc2ljX3N0
cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPiYsIGNoYXJUIGRlbGltID0gJ1xuJyk7Cgp9
ICAKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGQvYmFzdHJpbmcuY2MiIDEgMwogCiAKCiAKIAogCiAKIAoKIAogCiAKIAoKIAogCiAKCiAKIAog
CiAKIAoKIAogCgpleHRlcm4gIkMrKyIgewp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRy
YWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgdm9pZCAqIGJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKb3BlcmF0b3IgbmV3IChzaXplX3Qgcywgc2l6ZV90
IGV4dHJhKQp7CiAgcmV0dXJuIEFsbG9jYXRvcjo6YWxsb2NhdGUocyArIGV4dHJhICogc2l6ZW9m
IChjaGFyVCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3Mg
QWxsb2NhdG9yPgppbmxpbmUgdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9j
YXRvcj46OlJlcDo6Cm9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqIHB0cikKewogIEFsbG9jYXRvcjo6
ZGVhbGxvY2F0ZShwdHIsIHNpemVvZihSZXApICsKCQkJcmVpbnRlcnByZXRfY2FzdDxSZXAgKj4o
cHRyKS0+cmVzICoKCQkJc2l6ZW9mIChjaGFyVCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQs
IGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgc2l6ZV90IGJhc2ljX3N0cmlu
ZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKZnJvYl9zaXplIChzaXplX3QgcykK
ewogIHNpemVfdCBpID0gMTY7CiAgd2hpbGUgKGkgPCBzKSBpICo9IDI7CiAgcmV0dXJuIGk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Cmlu
bGluZSBiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcCAqCmJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKY3JlYXRlIChzaXplX3Qg
ZXh0cmEpCnsKICBleHRyYSA9IGZyb2Jfc2l6ZSAoZXh0cmEgKyAxKTsKICBSZXAgKnAgPSBuZXcg
KGV4dHJhKSBSZXA7CiAgcC0+cmVzID0gZXh0cmE7CiAgcC0+cmVmID0gMTsKICBwLT5zZWxmaXNo
ID0gZmFsc2U7CiAgcmV0dXJuIHA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJh
aXRzLCBjbGFzcyBBbGxvY2F0b3I+CmNoYXJUICogYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRz
LCBBbGxvY2F0b3I+OjpSZXA6OgpjbG9uZSAoKQp7CiAgUmVwICpwID0gUmVwOjpjcmVhdGUgKGxl
bik7CiAgcC0+Y29weSAoMCwgZGF0YSAoKSwgbGVuKTsKICBwLT5sZW4gPSBsZW47CiAgcmV0dXJu
IHAtPmRhdGEgKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFz
cyBBbGxvY2F0b3I+CmlubGluZSBib29sIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxs
b2NhdG9yPjo6UmVwOjoKZXhjZXNzX3Nsb3AgKHNpemVfdCBzLCBzaXplX3QgcikKewogIHJldHVy
biAyICogKHMgPD0gMTYgPyAxNiA6IHMpIDwgcjsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBj
bGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIGJvb2wgYmFzaWNfc3RyaW5nIDxj
aGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKY2hlY2tfcmVhbGxvYyAoYmFzaWNfc3RyaW5nOjpz
aXplX3R5cGUgcykgY29uc3QKewogIHMgKz0gc2l6ZW9mIChjaGFyVCk7CiAgcmVwICgpLT5zZWxm
aXNoID0gZmFsc2U7CiAgcmV0dXJuIChyZXAgKCktPnJlZiA+IDEKCSAgfHwgcyA+IGNhcGFjaXR5
ICgpCgkgIHx8IFJlcDo6ZXhjZXNzX3Nsb3AgKHMsIGNhcGFjaXR5ICgpKSk7Cn0KCnRlbXBsYXRl
IDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CnZvaWQgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKYWxsb2MgKGJhc2ljX3N0cmluZzo6
c2l6ZV90eXBlIF9fc2l6ZSwgYm9vbCBfX3NhdmUpCnsKICBpZiAoISBjaGVja19yZWFsbG9jIChf
X3NpemUpKQogICAgcmV0dXJuOwoKICBSZXAgKnAgPSBSZXA6OmNyZWF0ZSAoX19zaXplKTsKCiAg
aWYgKF9fc2F2ZSkKICAgIHsKICAgICAgcC0+Y29weSAoMCwgZGF0YSAoKSwgbGVuZ3RoICgpKTsK
ICAgICAgcC0+bGVuID0gbGVuZ3RoICgpOwogICAgfQogIGVsc2UKICAgIHAtPmxlbiA9IDA7Cgog
IHJlcHVwIChwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNz
IEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JgpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUg
cG9zMSwgc2l6ZV90eXBlIG4xLAoJIGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUg
cG9zMiwgc2l6ZV90eXBlIG4yKQp7CiAgY29uc3Qgc2l6ZV90IGxlbjIgPSBzdHIubGVuZ3RoICgp
OwoKICBpZiAocG9zMSA9PSAwICYmIG4xID49IGxlbmd0aCAoKSAmJiBwb3MyID09IDAgJiYgbjIg
Pj0gbGVuMikKICAgIHJldHVybiBvcGVyYXRvcj0gKHN0cik7CgogIGRvIHsgaWYgKCBwb3MyID4g
bGVuMiApIF9fb3V0X29mX3JhbmdlICgicG9zMiA+IGxlbjIiKTsgfSB3aGlsZSAoMCkgOwoKICBp
ZiAobjIgPiBsZW4yIC0gcG9zMikKICAgIG4yID0gbGVuMiAtIHBvczI7CgogIHJldHVybiByZXBs
YWNlIChwb3MxLCBuMSwgc3RyLmRhdGEgKCkgKyBwb3MyLCBuMik7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmlubGluZSB2b2lkIGJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6UmVwOjoKY29weSAoc2l6ZV90IHBv
cywgY29uc3QgY2hhclQgKnMsIHNpemVfdCBuKQp7CiAgaWYgKG4pCiAgICB0cmFpdHM6OmNvcHkg
KGRhdGEgKCkgKyBwb3MsIHMsIG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRy
YWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbmxpbmUgdm9pZCBiYXNpY19zdHJpbmcgPGNoYXJULCB0
cmFpdHMsIEFsbG9jYXRvcj46OlJlcDo6Cm1vdmUgKHNpemVfdCBwb3MsIGNvbnN0IGNoYXJUICpz
LCBzaXplX3QgbikKewogIGlmIChuKQogICAgdHJhaXRzOjptb3ZlIChkYXRhICgpICsgcG9zLCBz
LCBuKTsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9j
YXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JgpiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUgcG9zLCBz
aXplX3R5cGUgbjEsIGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUgbjIpCnsKICBjb25zdCBzaXpl
X3R5cGUgbGVuID0gbGVuZ3RoICgpOwogIGRvIHsgaWYgKCBwb3MgPiBsZW4gKSBfX291dF9vZl9y
YW5nZSAoInBvcyA+IGxlbiIpOyB9IHdoaWxlICgwKSA7CiAgaWYgKG4xID4gbGVuIC0gcG9zKQog
ICAgbjEgPSBsZW4gLSBwb3M7CiAgZG8geyBpZiAoIGxlbiAtIG4xID4gbWF4X3NpemUgKCkgLSBu
MiApIF9fbGVuZ3RoX2Vycm9yICgibGVuIC0gbjEgPiBtYXhfc2l6ZSAoKSAtIG4yIik7IH0gd2hp
bGUgKDApIDsKICBzaXplX3QgbmV3bGVuID0gbGVuIC0gbjEgKyBuMjsKCiAgaWYgKGNoZWNrX3Jl
YWxsb2MgKG5ld2xlbikpCiAgICB7CiAgICAgIFJlcCAqcCA9IFJlcDo6Y3JlYXRlIChuZXdsZW4p
OwogICAgICBwLT5jb3B5ICgwLCBkYXRhICgpLCBwb3MpOwogICAgICBwLT5jb3B5IChwb3MgKyBu
MiwgZGF0YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAgcC0+Y29weSAo
cG9zLCBzLCBuMik7CiAgICAgIHJlcHVwIChwKTsKICAgIH0KICBlbHNlCiAgICB7CiAgICAgIHJl
cCAoKS0+bW92ZSAocG9zICsgbjIsIGRhdGEgKCkgKyBwb3MgKyBuMSwgbGVuIC0gKHBvcyArIG4x
KSk7CiAgICAgIHJlcCAoKS0+Y29weSAocG9zLCBzLCBuMik7CiAgICB9CiAgcmVwICgpLT5sZW4g
PSBuZXdsZW47CgogIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFz
cyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5lIHZvaWQgYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpSZXA6OgpzZXQgKHNpemVfdCBwb3MsIGNvbnN0IGNoYXJU
IGMsIHNpemVfdCBuKQp7CiAgdHJhaXRzOjpzZXQgIChkYXRhICgpICsgcG9zLCBjLCBuKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFz
aWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBiYXNpY19zdHJpbmcgPGNoYXJU
LCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZXBsYWNlIChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUg
bjEsIHNpemVfdHlwZSBuMiwgY2hhclQgYykKewogIGNvbnN0IHNpemVfdCBsZW4gPSBsZW5ndGgg
KCk7CiAgZG8geyBpZiAoIHBvcyA+IGxlbiApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVuIik7
IH0gd2hpbGUgKDApIDsKICBpZiAobjEgPiBsZW4gLSBwb3MpCiAgICBuMSA9IGxlbiAtIHBvczsK
ICBkbyB7IGlmICggbGVuIC0gbjEgPiBtYXhfc2l6ZSAoKSAtIG4yICkgX19sZW5ndGhfZXJyb3Ig
KCJsZW4gLSBuMSA+IG1heF9zaXplICgpIC0gbjIiKTsgfSB3aGlsZSAoMCkgOwogIHNpemVfdCBu
ZXdsZW4gPSBsZW4gLSBuMSArIG4yOwoKICBpZiAoY2hlY2tfcmVhbGxvYyAobmV3bGVuKSkKICAg
IHsKICAgICAgUmVwICpwID0gUmVwOjpjcmVhdGUgKG5ld2xlbik7CiAgICAgIHAtPmNvcHkgKDAs
IGRhdGEgKCksIHBvcyk7CiAgICAgIHAtPmNvcHkgKHBvcyArIG4yLCBkYXRhICgpICsgcG9zICsg
bjEsIGxlbiAtIChwb3MgKyBuMSkpOwogICAgICBwLT5zZXQgIChwb3MsIGMsIG4yKTsKICAgICAg
cmVwdXAgKHApOwogICAgfQogIGVsc2UKICAgIHsKICAgICAgcmVwICgpLT5tb3ZlIChwb3MgKyBu
MiwgZGF0YSAoKSArIHBvcyArIG4xLCBsZW4gLSAocG9zICsgbjEpKTsKICAgICAgcmVwICgpLT5z
ZXQgIChwb3MsIGMsIG4yKTsKICAgIH0KICByZXAgKCktPmxlbiA9IG5ld2xlbjsKCiAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxs
b2NhdG9yPgp2b2lkIGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CnJl
c2l6ZSAoc2l6ZV90eXBlIG4sIGNoYXJUIGMpCnsKICBkbyB7IGlmICggbiA+IG1heF9zaXplICgp
ICkgX19sZW5ndGhfZXJyb3IgKCJuID4gbWF4X3NpemUgKCkiKTsgfSB3aGlsZSAoMCkgOwoKICBp
ZiAobiA+IGxlbmd0aCAoKSkKICAgIGFwcGVuZCAobiAtIGxlbmd0aCAoKSwgYyk7CiAgZWxzZQog
ICAgZXJhc2UgKG4pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xh
c3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNp
emVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46Ogpjb3B5IChj
aGFyVCogcywgc2l6ZV90eXBlIG4sIHNpemVfdHlwZSBwb3MpIGNvbnN0CnsKICBkbyB7IGlmICgg
cG9zID4gbGVuZ3RoICgpICkgX19vdXRfb2ZfcmFuZ2UgKCJwb3MgPiBsZW5ndGggKCkiKTsgfSB3
aGlsZSAoMCkgOwoKICBpZiAobiA+IGxlbmd0aCAoKSAtIHBvcykKICAgIG4gPSBsZW5ndGggKCkg
LSBwb3M7CgogIHRyYWl0czo6Y29weSAocywgZGF0YSAoKSArIHBvcywgbik7CiAgcmV0dXJuIG47
Cn0KCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+
CmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6CmZpbmQgKGNvbnN0IGNoYXJUKiBz
LCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIHNpemVfdCB4cG9zID0gcG9z
OwogIGZvciAoOyB4cG9zICsgbiA8PSBsZW5ndGggKCk7ICsreHBvcykKICAgIGlmICh0cmFpdHM6
OmVxIChkYXRhICgpIFt4cG9zXSwgKnMpCgkmJiB0cmFpdHM6OmNvbXBhcmUgKGRhdGEgKCkgKyB4
cG9zLCBzLCBuKSA9PSAwKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVt
cGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW5saW5l
IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2lj
X3N0cmluZyA8Y2hhclQsIHRyYWl0cywgQWxsb2NhdG9yPjo6Cl9maW5kIChjb25zdCBjaGFyVCog
cHRyLCBjaGFyVCBjLCBzaXplX3R5cGUgeHBvcywgc2l6ZV90eXBlIGxlbikKewogIGZvciAoOyB4
cG9zIDwgbGVuOyArK3hwb3MpCiAgICBpZiAodHJhaXRzOjplcSAocHRyIFt4cG9zXSwgYykpCiAg
ICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQs
IGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFp
dHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFs
bG9jYXRvcj46OgpmaW5kIChjaGFyVCBjLCBzaXplX3R5cGUgcG9zKSBjb25zdAp7CiAgcmV0dXJu
IF9maW5kIChkYXRhICgpLCBjLCBwb3MsIGxlbmd0aCAoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBj
aGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hhclQs
IHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0
cywgQWxsb2NhdG9yPjo6CnJmaW5kIChjb25zdCBjaGFyVCogcywgc2l6ZV90eXBlIHBvcywgc2l6
ZV90eXBlIG4pIGNvbnN0CnsKICBpZiAobiA+IGxlbmd0aCAoKSkKICAgIHJldHVybiBucG9zOwoK
ICBzaXplX3QgeHBvcyA9IGxlbmd0aCAoKSAtIG47CiAgaWYgKHhwb3MgPiBwb3MpCiAgICB4cG9z
ID0gcG9zOwoKICBmb3IgKCsreHBvczsgeHBvcy0tID4gMDsgKQogICAgaWYgKHRyYWl0czo6ZXEg
KGRhdGEgKCkgW3hwb3NdLCAqcykKCSYmIHRyYWl0czo6Y29tcGFyZSAoZGF0YSAoKSArIHhwb3Ms
IHMsIG4pID09IDApCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9zOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNpY19zdHJp
bmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNpY19zdHJpbmcgPGNo
YXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpyZmluZCAoY2hhclQgYywgc2l6ZV90eXBlIHBvcykg
Y29uc3QKewogIGlmICgxID4gbGVuZ3RoICgpKQogICAgcmV0dXJuIG5wb3M7CgogIHNpemVfdCB4
cG9zID0gbGVuZ3RoICgpIC0gMTsKICBpZiAoeHBvcyA+IHBvcykKICAgIHhwb3MgPSBwb3M7Cgog
IGZvciAoKyt4cG9zOyB4cG9zLS0gPiAwOyApCiAgICBpZiAodHJhaXRzOjplcSAoZGF0YSAoKSBb
eHBvc10sIGMpKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUg
PGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFy
VCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9maXJzdF9vZiAoY29uc3QgY2hhclQqIHMsIHNp
emVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7CiAgc2l6ZV90IHhwb3MgPSBwb3M7CiAg
Zm9yICg7IHhwb3MgPCBsZW5ndGggKCk7ICsreHBvcykKICAgIGlmIChfZmluZCAocywgZGF0YSAo
KSBbeHBvc10sIDAsIG4pICE9IG5wb3MpCiAgICAgIHJldHVybiB4cG9zOwogIHJldHVybiBucG9z
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9y
PgpiYXNpY19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OnNpemVfdHlwZQpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OgpmaW5kX2xhc3Rfb2YgKGNvbnN0
IGNoYXJUKiBzLCBzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGlmIChsZW5n
dGgoKSA9PSAwKQogICAgcmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAx
OwogIGlmICh4cG9zID4gcG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0t
ID4gMDspCiAgICBpZiAoX2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3NdLCAwLCBuKSAhPSBucG9zKQog
ICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJU
LCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJh
aXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBB
bGxvY2F0b3I+OjoKZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXplX3R5cGUg
cG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIHNpemVfdCB4cG9zID0gcG9zOwogIGZvciAoOyB4
cG9zIDwgbGVuZ3RoICgpOyArK3hwb3MpCiAgICBpZiAoX2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3Nd
LCAwLCBuKSA9PSBucG9zKQogICAgICByZXR1cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVt
cGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmluZF9maXJzdF9ub3Rfb2YgKGNoYXJUIGMs
IHNpemVfdHlwZSBwb3MpIGNvbnN0CnsKICBzaXplX3QgeHBvcyA9IHBvczsKICBmb3IgKDsgeHBv
cyA8IGxlbmd0aCAoKTsgKyt4cG9zKQogICAgaWYgKHRyYWl0czo6bmUgKGRhdGEgKCkgW3hwb3Nd
LCBjKSkKICAgICAgcmV0dXJuIHhwb3M7CiAgcmV0dXJuIG5wb3M7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+CmJhc2ljX3N0cmluZyA8Y2hh
clQsIHRyYWl0cywgQWxsb2NhdG9yPjo6c2l6ZV90eXBlCmJhc2ljX3N0cmluZyA8Y2hhclQsIHRy
YWl0cywgQWxsb2NhdG9yPjo6CmZpbmRfbGFzdF9ub3Rfb2YgKGNvbnN0IGNoYXJUKiBzLCBzaXpl
X3R5cGUgcG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGlmIChsZW5ndGgoKSA9PSAwKQogICAg
cmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAxOwogIGlmICh4cG9zID4g
cG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0tID4gMDspCiAgICBpZiAo
X2ZpbmQgKHMsIGRhdGEgKCkgW3hwb3NdLCAwLCBuKSA9PSBucG9zKQogICAgICByZXR1cm4geHBv
czsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMs
IGNsYXNzIEFsbG9jYXRvcj4KYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+
OjpzaXplX3R5cGUKYmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKZmlu
ZF9sYXN0X25vdF9vZiAoY2hhclQgYywgc2l6ZV90eXBlIHBvcykgY29uc3QKewogIGlmIChsZW5n
dGgoKSA9PSAwKQogICAgcmV0dXJuIG5wb3M7CiAgc2l6ZV90IHhwb3MgPSBsZW5ndGggKCkgLSAx
OwogIGlmICh4cG9zID4gcG9zKQogICAgeHBvcyA9IHBvczsKICBmb3IgKCsreHBvczsgeHBvcy0t
ID4gMDspCiAgICBpZiAodHJhaXRzOjpuZSAoZGF0YSAoKSBbeHBvc10sIGMpKQogICAgICByZXR1
cm4geHBvczsKICByZXR1cm4gbnBvczsKfQoKdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0
cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KaW50IGJhc2ljX3N0cmluZyA8Y2hhclQsIHRyYWl0cywg
QWxsb2NhdG9yPjo6CmNvbXBhcmUgKGNvbnN0IGJhc2ljX3N0cmluZyYgc3RyLCBzaXplX3R5cGUg
cG9zLCBzaXplX3R5cGUgbikgY29uc3QKewogIGRvIHsgaWYgKCBwb3MgPiBsZW5ndGggKCkgKSBf
X291dF9vZl9yYW5nZSAoInBvcyA+IGxlbmd0aCAoKSIpOyB9IHdoaWxlICgwKSA7CgogIHNpemVf
dCBybGVuID0gbGVuZ3RoICgpIC0gcG9zOwogIGlmIChybGVuID4gbikKICAgIHJsZW4gPSBuOwog
IGlmIChybGVuID4gc3RyLmxlbmd0aCAoKSkKICAgIHJsZW4gPSBzdHIubGVuZ3RoICgpOwogIGlu
dCByID0gdHJhaXRzOjpjb21wYXJlIChkYXRhICgpICsgcG9zLCBzdHIuZGF0YSAoKSwgcmxlbik7
CiAgaWYgKHIgIT0gMCkKICAgIHJldHVybiByOwogIGlmIChybGVuID09IG4pCiAgICByZXR1cm4g
MDsKICByZXR1cm4gKGxlbmd0aCAoKSAtIHBvcykgLSBzdHIubGVuZ3RoICgpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgppbnQgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjoKY29tcGFyZSAoY29uc3QgY2hhclQq
IHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBuKSBjb25zdAp7CiAgZG8geyBpZiAoIHBvcyA+
IGxlbmd0aCAoKSApIF9fb3V0X29mX3JhbmdlICgicG9zID4gbGVuZ3RoICgpIik7IH0gd2hpbGUg
KDApIDsKCiAgc2l6ZV90IHJsZW4gPSBsZW5ndGggKCkgLSBwb3M7CiAgaWYgKHJsZW4gPiBuKQog
ICAgcmxlbiA9IG47CiAgaW50IHIgPSB0cmFpdHM6OmNvbXBhcmUgKGRhdGEgKCkgKyBwb3MsIHMs
IHJsZW4pOwogIGlmIChyICE9IDApCiAgICByZXR1cm4gcjsKICByZXR1cm4gKGxlbmd0aCAoKSAt
IHBvcykgLSBuOwp9CgoKCnRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFz
cyBBbGxvY2F0b3I+CmlzdHJlYW0gJgpvcGVyYXRvcj4+IChpc3RyZWFtICZpcywgYmFzaWNfc3Ry
aW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+ICZzKQp7CiAgaW50IHcgPSBpcy53aWR0aCAo
MCk7CiAgaWYgKGlzLmlwZngwICgpKQogICAgewogICAgICByZWdpc3RlciBzdHJlYW1idWYgKnNi
ID0gaXMucmRidWYgKCk7CiAgICAgIHMucmVzaXplICgwKTsKICAgICAgd2hpbGUgKDEpCgl7Cgkg
IGludCBjaCA9IHNiLT5zYnVtcGMgKCk7CgkgIGlmIChjaCA9PSAoLTEpICkKCSAgICB7CgkgICAg
ICBpcy5zZXRzdGF0ZSAoaW9zOjplb2ZiaXQpOwoJICAgICAgYnJlYWs7CgkgICAgfQoJICBlbHNl
IGlmICh0cmFpdHM6OmlzX2RlbCAoY2gpKQoJICAgIHsKCSAgICAgIHNiLT5zdW5nZXRjICgpOwoJ
ICAgICAgYnJlYWs7CgkgICAgfQoJICBzICs9IHN0YXRpY19jYXN0PGNoYXJUPiAoY2gpOwoJICBp
ZiAoLS13ID09IDEpCgkgICAgYnJlYWs7Cgl9CiAgICB9CgogIGlzLmlzZnggKCk7CiAgaWYgKHMu
bGVuZ3RoICgpID09IDApCiAgICBpcy5zZXRzdGF0ZSAoaW9zOjpmYWlsYml0KTsKCiAgcmV0dXJu
IGlzOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2Nh
dG9yPgpvc3RyZWFtICYKb3BlcmF0b3I8PCAob3N0cmVhbSAmbywgY29uc3QgYmFzaWNfc3RyaW5n
IDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQp7CiAgcmV0dXJuIG8ud3JpdGUgKHMuZGF0
YSAoKSwgcy5sZW5ndGggKCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0
cywgY2xhc3MgQWxsb2NhdG9yPgppc3RyZWFtJgpnZXRsaW5lIChpc3RyZWFtICZpcywgYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzLCBjaGFyVCBkZWxpbSkKewogIGlm
IChpcy5pcGZ4MSAoKSkKICAgIHsKICAgICAgc2l6ZV90ICAgY291bnQgPSAwOwogICAgICBzdHJl
YW1idWYgKnNiID0gaXMucmRidWYgKCk7CiAgICAgIHMucmVzaXplICgwKTsKCiAgICAgIHdoaWxl
ICgxKQoJewoJICBpbnQgY2ggPSBzYi0+c2J1bXBjICgpOwoJICBpZiAoY2ggPT0gKC0xKSApCgkg
ICAgewoJICAgICAgaXMuc2V0c3RhdGUgKGNvdW50ID09IDAKCQkJICAgPyAoaW9zOjpmYWlsYml0
fGlvczo6ZW9mYml0KQoJCQkgICA6IGlvczo6ZW9mYml0KTsKCSAgICAgIGJyZWFrOwoJICAgIH0K
CgkgICsrY291bnQ7CgoJICBpZiAoY2ggPT0gZGVsaW0pCgkgICAgYnJlYWs7CgoJICBzICs9IHN0
YXRpY19jYXN0PGNoYXJUPiAoY2gpOwoKCSAgaWYgKHMubGVuZ3RoICgpID09IHMubnBvcyAtIDEp
CgkgICAgewoJICAgICAgaXMuc2V0c3RhdGUgKGlvczo6ZmFpbGJpdCk7CgkgICAgICBicmVhazsK
CSAgICB9Cgl9CiAgICB9CgogICAKICAgCiAgaXMuaXNmeCAoKTsKCiAgcmV0dXJuIGlzOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgpiYXNp
Y19zdHJpbmcgPGNoYXJULCB0cmFpdHMsIEFsbG9jYXRvcj46OlJlcApiYXNpY19zdHJpbmc8Y2hh
clQsIHRyYWl0cywgQWxsb2NhdG9yPjo6bmlsUmVwID0geyAwLCAwLCAxLCBmYWxzZSB9OwoKdGVt
cGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KY29uc3Qg
YmFzaWNfc3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpzaXplX3R5cGUKYmFzaWNf
c3RyaW5nIDxjaGFyVCwgdHJhaXRzLCBBbGxvY2F0b3I+OjpucG9zOwoKfSAgCiMgNjU1ICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9iYXN0cmluZy5o
IiAyIDMKCgoKIyA2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0cmluZyIgMiAzCgoKZXh0ZXJuICJDKysiIHsKdHlwZWRlZiBiYXNpY19zdHJpbmcgPGNo
YXI+IHN0cmluZzsKIAp9ICAKCgojIDc2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovYmxpdHouaCIgMgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzCiAKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKCiNkZWZpbmUgX1NURElPX0gJMQoKCmV4dGVybiAiQyIgeyAK
CiNkZWZpbmUgX19uZWVkX3NpemVfdAojZGVmaW5lIF9fbmVlZF9OVUxMCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCgoKCgoKCiAKCgojIDE5ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGlu
dXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCiAKCgogCgoKCgoKIAoKCiMgNjEg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvc3RkZGVmLmgiIDMKCgogCgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgogCgoKCgoKIAoKIAoKCiMgMTI2ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9p
bmNsdWRlL3N0ZGRlZi5oIiAzCgoKIAoKCgoKIAoKIAoKCiMgMTg4ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgojdW5kZWYgCV9fbmVlZF9zaXplX3QKCgoKIAoKCgoK
IAoKCiMgMjY5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAzCgoKCgoK
CgoKCgoKCgoKCgogCgogCgojIDMxNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKCgoKIAoKCiN1bmRlZiBOVUxMCQkKCiNkZWZpbmUgTlVMTCBfX251bGwKCgoKCiN1
bmRlZiAJX19uZWVkX05VTEwKCgoKIAoKCgoKCgoKIyAzMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi
IDIgMwoKCgojZGVmaW5lIF9fbmVlZF9fX3ZhX2xpc3QKCgoKCgoKCgoKCiAKdHlwZWRlZiBzdHJ1
Y3QgX0lPX0ZJTEUgRklMRTsKCiNkZWZpbmUgX19GSUxFX2RlZmluZWQJMQoKCgoKI2RlZmluZSBf
U1RESU9fVVNFU19JT1NUUkVBTQoKCgogCgp0eXBlZGVmIF9fb2ZmX3QgIGZwb3NfdDsKCgoKCgoK
CiAKI2RlZmluZSBfSU9GQkYgMCAJCQojZGVmaW5lIF9JT0xCRiAxCQkKI2RlZmluZSBfSU9OQkYg
MgkJCgoKIAoKI2RlZmluZSBCVUZTSVogX0lPX0JVRlNJWgoKCgogCgoKCgoKCiAKCiNkZWZpbmUg
U0VFS19TRVQJMAkKI2RlZmluZSBTRUVLX0NVUgkxCQojZGVmaW5lIFNFRUtfRU5ECTIJCgoKCiAK
I2RlZmluZSBQX3RtcGRpcgkiL3RtcCIKCgoKIAoKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp
dHMvc3RkaW9fbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIExfdG1w
bmFtIDIwCiNkZWZpbmUgVE1QX01BWCAyMzgzMjgKI2RlZmluZSBGSUxFTkFNRV9NQVggNDA5NSAK
CgojZGVmaW5lIExfY3Rlcm1pZCA5CiNkZWZpbmUgTF9jdXNlcmlkIDkKCgoKCgojZGVmaW5lIEZP
UEVOX01BWCAyNTYgCgojIDExMCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMwoKCgogCmV4dGVy
biBGSUxFICpzdGRpbjsJCSAKZXh0ZXJuIEZJTEUgKnN0ZG91dDsJCSAKZXh0ZXJuIEZJTEUgKnN0
ZGVycjsJCSAKIAojZGVmaW5lIHN0ZGluIHN0ZGluCiNkZWZpbmUgc3Rkb3V0IHN0ZG91dAojZGVm
aW5lIHN0ZGVyciBzdGRlcnIKCgogCmV4dGVybiBpbnQgcmVtb3ZlICAoX19jb25zdCBjaGFyICpf
X2ZpbGVuYW1lKSAgdGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHJlbmFtZSAgKF9fY29uc3QgY2hh
ciAqX19vbGQsIF9fY29uc3QgY2hhciAqX19uZXcpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBG
SUxFICp0bXBmaWxlICAodm9pZCkgIHRocm93ICgpICA7CgoKCgoKCgoKCgogCmV4dGVybiBjaGFy
ICp0bXBuYW0gIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCiAKCmV4dGVybiBjaGFyICp0bXBu
YW1fciAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKCgogCgoKCgoKCmV4dGVybiBjaGFyICp0
ZW1wbmFtICAoX19jb25zdCBjaGFyICpfX2RpciwgX19jb25zdCBjaGFyICpfX3BmeCkgIHRocm93
ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmY2xvc2UgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgp
ICA7CiAKZXh0ZXJuIGludCBmZmx1c2ggIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoK
IApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg
IDsKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZm9wZW4gIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19maWxlbmFtZSwKCQkJIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzKSAgdGhy
b3cgKCkgIDsKIApleHRlcm4gRklMRSAqZnJlb3BlbiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2ZpbGVuYW1lLAoJCQkgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKCQkJ
ICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CiMgMjAxICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwoKCgoKCgoKCgoKIApleHRlcm4gRklMRSAqZmRvcGVuICAoaW50IF9f
ZmQsIF9fY29uc3QgY2hhciAqX19tb2RlcykgIHRocm93ICgpICA7CgoKIyAyMjcgIi91c3IvaW5j
bHVkZS9zdGRpby5oIiAzCgoKCiAKCmV4dGVybiB2b2lkIHNldGJ1ZiAgKEZJTEUgKl9fcmVzdHJp
Y3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYpICB0aHJvdyAoKSAgOwogCgoKZXh0
ZXJuIGludCBzZXR2YnVmICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0
cmljdCBfX2J1ZiwKCQkJIGludCBfX21vZGVzLCBzaXplX3QgX19uKSAgdGhyb3cgKCkgIDsKCgog
CgpleHRlcm4gdm9pZCBzZXRidWZmZXIgIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBjaGFy
ICpfX3Jlc3RyaWN0IF9fYnVmLAoJCQkgICAgc2l6ZV90IF9fc2l6ZSkgIHRocm93ICgpICA7Cgog
CmV4dGVybiB2b2lkIHNldGxpbmVidWYgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgoK
CiAKZXh0ZXJuIGludCBmcHJpbnRmICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkJIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsKIApleHRl
cm4gaW50IHByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAg
dGhyb3cgKCkgIDsKIApleHRlcm4gaW50IHNwcmludGYgIChjaGFyICpfX3Jlc3RyaWN0IF9fcywK
CQkJIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSAgdGhyb3cgKCkgIDsK
CiAKZXh0ZXJuIGludCB2ZnByaW50ZiAgKEZJTEUgKl9fcmVzdHJpY3QgX19zLAoJCQkgIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFfbGlzdCAgX19hcmcp
ICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgdnByaW50ZiAgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX2Zvcm1hdCwKCQkJIF9fZ251Y192YV9saXN0ICBfX2FyZykgIHRocm93ICgpICA7CiAK
ZXh0ZXJuIGludCB2c3ByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAoJCQkgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICBfX2dudWNfdmFfbGlzdCAgX19hcmcpICB0
aHJvdyAoKSAgOwoKCiAKZXh0ZXJuIGludCBzbnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19z
LCBzaXplX3QgX19tYXhsZW4sCgkJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0
LCAuLi4pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJp
bnRmX18sIDMsIDQpKSk7CgpleHRlcm4gaW50IF9fdnNucHJpbnRmICAoY2hhciAqX19yZXN0cmlj
dCBfX3MsIHNpemVfdCBfX21heGxlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19mb3JtYXQsCgkJCSAgICAgX19nbnVjX3ZhX2xpc3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAg
IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwpleHRlcm4g
aW50IHZzbnByaW50ZiAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCgkJ
CSAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKCQkJICAgX19nbnVjX3ZhX2xp
c3QgIF9fYXJnKSAgdGhyb3cgKCkgIAogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3ByaW50Zl9fLCAzLCAwKSkpOwoKCiMgMzA2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwoKCgog
CmV4dGVybiBpbnQgZnNjYW5mICAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkJX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pICB0aHJvdyAoKSAgOwogCmV4dGVybiBp
bnQgc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIHRocm93
ICgpICA7CiAKZXh0ZXJuIGludCBzc2NhbmYgIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19z
LAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgIHRocm93ICgpICA7
CgojIDMzNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKIApleHRlcm4gaW50IGZnZXRjICAo
RklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50IGdldGMgIChGSUxFICpfX3N0
cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBpbnQgZ2V0Y2hhciAgKHZvaWQpICB0aHJvdyAo
KSAgOwoKIAoKI2RlZmluZSBnZXRjKF9mcCkgX0lPX2dldGMgKF9mcCkKCgogCmV4dGVybiBpbnQg
Z2V0Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJuIGludCBn
ZXRjaGFyX3VubG9ja2VkICAodm9pZCkgIHRocm93ICgpICA7CgoKCiAKZXh0ZXJuIGludCBmZ2V0
Y191bmxvY2tlZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50
IGZwdXRjICAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gaW50
IHB1dGMgIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiBp
bnQgcHV0Y2hhciAgKGludCBfX2MpICB0aHJvdyAoKSAgOwoKIAoKI2RlZmluZSBwdXRjKF9jaCwg
X2ZwKSBfSU9fcHV0YyAoX2NoLCBfZnApCgoKIApleHRlcm4gaW50IGZwdXRjX3VubG9ja2VkICAo
aW50IF9fYywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgcHV0
Y191bmxvY2tlZCAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKZXh0ZXJu
IGludCBwdXRjaGFyX3VubG9ja2VkICAoaW50IF9fYykgIHRocm93ICgpICA7CgoKCgogCmV4dGVy
biBpbnQgZ2V0dyAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCiAKZXh0ZXJuIGludCBw
dXR3ICAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBj
aGFyICpmZ2V0cyAgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBpbnQgX19uLAoJCQkgRklMRSAqX19y
ZXN0cmljdCBfX3N0cmVhbSkgIHRocm93ICgpICA7CgoKCgoKCgogCgpleHRlcm4gY2hhciAqZ2V0
cyAgKGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIyA0MjQgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCgoKCiAKZXh0ZXJuIGludCBmcHV0cyAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CgkJICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoK
IApleHRlcm4gaW50IHB1dHMgIChfX2NvbnN0IGNoYXIgKl9fcykgIHRocm93ICgpICA7CgoKIApl
eHRlcm4gaW50IHVuZ2V0YyAgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsK
CgogCmV4dGVybiBzaXplX3QgZnJlYWQgICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3Qg
X19zaXplLAoJCQkgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJv
dyAoKSAgOwogCmV4dGVybiBzaXplX3QgZndyaXRlICAoX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0
IF9fcHRyLCBzaXplX3QgX19zaXplLAoJCQkgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fcykgIHRocm93ICgpICA7CgoKIApleHRlcm4gc2l6ZV90IGZyZWFkX3VubG9ja2VkICAodm9p
ZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKCQkJCSAgIHNpemVfdCBfX24sIEZJ
TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pICB0aHJvdyAoKSAgOwpleHRlcm4gc2l6ZV90IGZ3cml0
ZV91bmxvY2tlZCAgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwKCQkJCSAgICBzaXpl
X3QgX19zaXplLCBzaXplX3QgX19uLAoJCQkJICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0p
ICB0aHJvdyAoKSAgOwoKCgogCmV4dGVybiBpbnQgZnNlZWsgIChGSUxFICpfX3N0cmVhbSwgbG9u
ZyBpbnQgX19vZmYsIGludCBfX3doZW5jZSkgIHRocm93ICgpICA7CiAKZXh0ZXJuIGxvbmcgaW50
IGZ0ZWxsICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwogCmV4dGVybiB2b2lkIHJld2lu
ZCAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCiAKCgoKCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCmV4dGVybiBpbnQgZmdldHBvcyAgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0s
CgkJCSBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpICB0aHJvdyAoKSAgOwogCmV4dGVybiBpbnQg
ZnNldHBvcyAgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0IGZwb3NfdCAqX19wb3MpICB0aHJvdyAo
KSAgOwojIDUyMyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgojIDUzMyAiL3Vzci9pbmNsdWRl
L3N0ZGlvLmgiIDMKCgogCmV4dGVybiB2b2lkIGNsZWFyZXJyICAoRklMRSAqX19zdHJlYW0pICB0
aHJvdyAoKSAgOwogCmV4dGVybiBpbnQgZmVvZiAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkg
IDsKIApleHRlcm4gaW50IGZlcnJvciAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgog
CmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAo
KSAgOwpleHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgp
ICA7CmV4dGVybiBpbnQgZmVycm9yX3VubG9ja2VkICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAo
KSAgOwoKCgogCmV4dGVybiB2b2lkIHBlcnJvciAgKF9fY29uc3QgY2hhciAqX19zKSAgdGhyb3cg
KCkgIDsKCiAKCgpleHRlcm4gaW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2Nv
bnN0IHN5c19lcnJsaXN0W107CgoKCgoKCgoKIApleHRlcm4gaW50IGZpbGVubyAgKEZJTEUgKl9f
c3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKIApleHRlcm4gaW50IGZpbGVub191bmxvY2tlZCAgKEZJ
TEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoKCgogCmV4dGVybiBGSUxFICpwb3BlbiAgKF9f
Y29uc3QgY2hhciAqX19jb21tYW5kLCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpICB0aHJvdyAoKSAg
OwoKIApleHRlcm4gaW50IHBjbG9zZSAgKEZJTEUgKl9fc3RyZWFtKSAgdGhyb3cgKCkgIDsKCgoK
CiAKZXh0ZXJuIGNoYXIgKmN0ZXJtaWQgIChjaGFyICpfX3MpICB0aHJvdyAoKSAgOwoKCgoKCgoK
CgojIDYwNyAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKCgoKCiAKCiAKZXh0ZXJuIHZvaWQgZmxv
Y2tmaWxlICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKIAoKZXh0ZXJuIGludCBmdHJ5
bG9ja2ZpbGUgIChGSUxFICpfX3N0cmVhbSkgIHRocm93ICgpICA7CgogCmV4dGVybiB2b2lkIGZ1
bmxvY2tmaWxlICAoRklMRSAqX19zdHJlYW0pICB0aHJvdyAoKSAgOwoKCgoKCgoKCgoKIAoKCgoK
Cn0gCgoKCgojIDc3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYmxp
dHouaCIgMgoKCgogIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1
LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1
ZGUvZysrLTMvaW9zdHJlYW0iIDEgMwogCiAKCgojZGVmaW5lIF9fSU9TVFJFQU1fXwoKCiMgODAg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgogIAoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvaW9tYW5p
cCIgMSAzCiAKIAoKCiNkZWZpbmUgX19JT01BTklQX18KIyAxICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUu
My8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2lvbWFuaXAuaCIgMSAzCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCiNwcmFnbWEgaW50ZXJmYWNlCgojZGVmaW5lIF9JT01BTklQX0gKCgoKZXh0
ZXJuICJDKysiIHsKIAogCiAKCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgVFA+IGNsYXNzIHNtYW5p
cDsgIAoKdGVtcGxhdGU8Y2xhc3MgVFA+IGNsYXNzIHNhcHAgewogICAgaW9zJiAoKl9mKShpb3Mm
LCBUUCk7CnB1YmxpYzogCiAgICBzYXBwKGlvcyYgKCpmKShpb3MmLCBUUCkpIDogX2YoZikge30K
ICAgICAKICAgIHNtYW5pcDxUUD4gb3BlcmF0b3IoKShUUCBhKSAKICAgICAgeyByZXR1cm4gc21h
bmlwPFRQPihfZiwgYSk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFRQPgppbmxpbmUgaXN0cmVhbSYg
b3BlcmF0b3I+Pihpc3RyZWFtJiBpLCBjb25zdCBzbWFuaXA8VFA+JiBtKTsKdGVtcGxhdGU8Y2xh
c3MgVFA+CmlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG8sIGNvbnN0IHNtYW5p
cDxUUD4mIG0pOwoKdGVtcGxhdGUgPGNsYXNzIFRQPiBjbGFzcyBzbWFuaXAgewogICAgaW9zJiAo
Kl9mKShpb3MmLCBUUCk7CiAgICBUUCBfYTsKcHVibGljOgogICAgc21hbmlwKGlvcyYgKCpmKShp
b3MmLCBUUCksIFRQIGEpIDogX2YoZiksIF9hKGEpIHt9CiAgICAgCiAgICBmcmllbmQgCiAgICAg
IGlzdHJlYW0mIG9wZXJhdG9yPj4gPD4oaXN0cmVhbSYgaSwgY29uc3Qgc21hbmlwPFRQPiYgbSk7
CiAgICBmcmllbmQKICAgICAgb3N0cmVhbSYgb3BlcmF0b3I8PCA8Pihvc3RyZWFtJiBvLCBjb25z
dCBzbWFuaXA8VFA+JiBtKTsKfTsKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiB0ZW1wbGF0ZSBjbGFz
cyBzbWFuaXA8aW50PjsKX19leHRlbnNpb25fXyBleHRlcm4gdGVtcGxhdGUgY2xhc3Mgc21hbmlw
PGlvczo6Zm10ZmxhZ3M+OwoKCnRlbXBsYXRlPGNsYXNzIFRQPgppbmxpbmUgaXN0cmVhbSYgb3Bl
cmF0b3I+Pihpc3RyZWFtJiBpLCBjb25zdCBzbWFuaXA8VFA+JiBtKQp7ICgqbS5fZikoaSwgbS5f
YSk7IHJldHVybiBpOyB9Cgp0ZW1wbGF0ZTxjbGFzcyBUUD4KaW5saW5lIG9zdHJlYW0mIG9wZXJh
dG9yPDwob3N0cmVhbSYgbywgY29uc3Qgc21hbmlwPFRQPiYgbSkKeyAoKm0uX2YpKG8sIG0uX2Ep
OyByZXR1cm4gbzt9CgoKX19leHRlbnNpb25fXyBleHRlcm4gCnRlbXBsYXRlIGlzdHJlYW0mIG9w
ZXJhdG9yPj4oaXN0cmVhbSYsIGNvbnN0IHNtYW5pcDxpbnQ+Jik7Cl9fZXh0ZW5zaW9uX18gZXh0
ZXJuIAp0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mLCBjb25zdCBzbWFuaXA8
aW9zOjpmbXRmbGFncz4mKTsKX19leHRlbnNpb25fXyBleHRlcm4gCnRlbXBsYXRlIG9zdHJlYW0m
IG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IHNtYW5pcDxpbnQ+Jik7Cl9fZXh0ZW5zaW9uX18g
ZXh0ZXJuIAp0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBjb25zdCBzbWFu
aXA8aW9zOjpmbXRmbGFncz4mKTsKCgogCiAKIAogCnRlbXBsYXRlPGNsYXNzIFRQPiBjbGFzcyBp
bWFuaXA7IAoKdGVtcGxhdGU8Y2xhc3MgVFA+IGNsYXNzIGlhcHAgewogICAgaXN0cmVhbSYgKCpf
ZikoaXN0cmVhbSYsIFRQKTsKcHVibGljOiAKICAgIGlhcHAoaXN0cmVhbSYgKCpmKShpc3RyZWFt
JixUUCkpIDogX2YoZikge30KICAgICAKICAgIGltYW5pcDxUUD4gb3BlcmF0b3IoKShUUCBhKQog
ICAgICAgeyByZXR1cm4gaW1hbmlwPFRQPihfZiwgYSk7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBU
UD4KaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYsIGNvbnN0IGltYW5pcDxUUD4m
KTsKCnRlbXBsYXRlIDxjbGFzcyBUUD4gY2xhc3MgaW1hbmlwIHsKICAgIGlzdHJlYW0mICgqX2Yp
KGlzdHJlYW0mLCBUUCk7CiAgICBUUCBfYTsKcHVibGljOgogICAgaW1hbmlwKGlzdHJlYW0mICgq
ZikoaXN0cmVhbSYsIFRQKSwgVFAgYSkgOiBfZihmKSwgX2EoYSkge30KICAgICAKICAgIGZyaWVu
ZAogICAgICBpc3RyZWFtJiBvcGVyYXRvcj4+IDw+KGlzdHJlYW0mIGksIGNvbnN0IGltYW5pcDxU
UD4mIG0pOwp9OwoKdGVtcGxhdGUgPGNsYXNzIFRQPgppbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+
Pihpc3RyZWFtJiBpLCBjb25zdCBpbWFuaXA8VFA+JiBtKQp7IHJldHVybiAoKm0uX2YpKCBpLCBt
Ll9hKTsgfQoKIAogCiAKIAp0ZW1wbGF0ZTxjbGFzcyBUUD4gY2xhc3Mgb21hbmlwOyAKCnRlbXBs
YXRlPGNsYXNzIFRQPiBjbGFzcyBvYXBwIHsKICAgIG9zdHJlYW0mICgqX2YpKG9zdHJlYW0mLCBU
UCk7CnB1YmxpYzogCiAgICBvYXBwKG9zdHJlYW0mICgqZikob3N0cmVhbSYsVFApKSA6IF9mKGYp
IHt9CiAgICAgCiAgICBvbWFuaXA8VFA+IG9wZXJhdG9yKCkoVFAgYSkKICAgICAgeyByZXR1cm4g
b21hbmlwPFRQPihfZiwgYSk7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBUUD4KaW5saW5lIG9zdHJl
YW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIGNvbnN0IG9tYW5pcDxUUD4mKTsKCnRlbXBsYXRlIDxj
bGFzcyBUUD4gY2xhc3Mgb21hbmlwIHsKICAgIG9zdHJlYW0mICgqX2YpKG9zdHJlYW0mLCBUUCk7
CiAgICBUUCBfYTsKcHVibGljOgogICAgb21hbmlwKG9zdHJlYW0mICgqZikob3N0cmVhbSYsIFRQ
KSwgVFAgYSkgOiBfZihmKSwgX2EoYSkge30KICAgICAKICAgIGZyaWVuZAogICAgICBvc3RyZWFt
JiBvcGVyYXRvcjw8IDw+KG9zdHJlYW0mIG8sIGNvbnN0IG9tYW5pcDxUUD4mIG0pOwp9OwoKdGVt
cGxhdGUgPGNsYXNzIFRQPgppbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvLCBj
b25zdCBvbWFuaXA8VFA+JiBtKQp7IHJldHVybiAoKm0uX2YpKG8sIG0uX2EpOyB9CgogCiAKIAoK
IAogCiAKIAojZGVmaW5lIF9fREVGSU5FX0lPTUFOSVBfRk4xKHR5cGUscGFyYW0sZnVuY3Rpb24p
IGV4dGVybiBpb3MmIF9faW9tYW5pcF8jI2Z1bmN0aW9uIChpb3MmLCBwYXJhbSk7IGlubGluZSB0
eXBlPHBhcmFtPiBmdW5jdGlvbiAocGFyYW0gbikgeyByZXR1cm4gdHlwZTxwYXJhbT4gKF9faW9t
YW5pcF8jI2Z1bmN0aW9uLCBuKTsgfQoKCgoKZXh0ZXJuIGlvcyYgX19pb21hbmlwX3NldGJhc2Ug
IChpb3MmLCAgIGludCApOyBpbmxpbmUgICBzbWFuaXAgPCAgaW50ID4gICBzZXRiYXNlICAoICBp
bnQgIG4pIHsgcmV0dXJuICAgc21hbmlwIDwgIGludCA+IChfX2lvbWFuaXBfc2V0YmFzZSAsIG4p
OyB9IApleHRlcm4gaW9zJiBfX2lvbWFuaXBfc2V0ZmlsbCAgKGlvcyYsICAgaW50ICk7IGlubGlu
ZSAgIHNtYW5pcCA8ICBpbnQgPiAgIHNldGZpbGwgICggIGludCAgbikgeyByZXR1cm4gICBzbWFu
aXAgPCAgaW50ID4gKF9faW9tYW5pcF9zZXRmaWxsICwgbik7IH0gCmV4dGVybiBpb3MmIF9faW9t
YW5pcF9zZXRwcmVjaXNpb24gIChpb3MmLCAgIGludCApOyBpbmxpbmUgICBzbWFuaXAgPCAgaW50
ID4gICBzZXRwcmVjaXNpb24gICggIGludCAgbikgeyByZXR1cm4gICBzbWFuaXAgPCAgaW50ID4g
KF9faW9tYW5pcF9zZXRwcmVjaXNpb24gLCBuKTsgfSAKZXh0ZXJuIGlvcyYgX19pb21hbmlwX3Nl
dHcgIChpb3MmLCAgIGludCApOyBpbmxpbmUgICBzbWFuaXAgPCAgaW50ID4gICBzZXR3ICAoICBp
bnQgIG4pIHsgcmV0dXJuICAgc21hbmlwIDwgIGludCA+IChfX2lvbWFuaXBfc2V0dyAsIG4pOyB9
IAoKZXh0ZXJuIGlvcyYgX19pb21hbmlwX3Jlc2V0aW9zZmxhZ3MgIChpb3MmLCAgIGlvczo6Zm10
ZmxhZ3MgKTsgaW5saW5lICAgc21hbmlwIDwgIGlvczo6Zm10ZmxhZ3MgPiAgIHJlc2V0aW9zZmxh
Z3MgICggIGlvczo6Zm10ZmxhZ3MgIG4pIHsgcmV0dXJuICAgc21hbmlwIDwgIGlvczo6Zm10Zmxh
Z3MgPiAoX19pb21hbmlwX3Jlc2V0aW9zZmxhZ3MgLCBuKTsgfSAKZXh0ZXJuIGlvcyYgX19pb21h
bmlwX3NldGlvc2ZsYWdzICAoaW9zJiwgICBpb3M6OmZtdGZsYWdzICk7IGlubGluZSAgIHNtYW5p
cCA8ICBpb3M6OmZtdGZsYWdzID4gICBzZXRpb3NmbGFncyAgKCAgaW9zOjpmbXRmbGFncyAgbikg
eyByZXR1cm4gICBzbWFuaXAgPCAgaW9zOjpmbXRmbGFncyA+IChfX2lvbWFuaXBfc2V0aW9zZmxh
Z3MgLCBuKTsgfSAKfSAgCgoKIyA2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL2lvbWFuaXAiIDIgMwoKCiMgODEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKCgoKCgogIAojIDEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY21hdGgiIDEgMwogCiAKCgojZGVmaW5l
IF9fQ01BVEhfXwoKIyAxICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgojZGVmaW5lIAlfTUFUSF9ICTEKCgoKZXh0ZXJuICJDIiB7IAoKIAoKIyAxICIv
dXNyL2luY2x1ZGUvYml0cy9odWdlX3ZhbC5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKIAoKI2RlZmluZSAJX19IVUdFX1ZBTF9ieXRlcwl7IDAsIDAsIDAsIDAsIDAsIDAsIDB4ZjAs
IDB4N2YgfQoKI2RlZmluZSBfX2h1Z2VfdmFsX3QJdW5pb24geyB1bnNpZ25lZCBjaGFyIF9fY1s4
XTsgZG91YmxlIF9fZDsgfQoKI2RlZmluZSBIVUdFX1ZBTAkoX19leHRlbnNpb25fXyAoKF9faHVn
ZV92YWxfdCkgeyBfX2M6IF9fSFVHRV9WQUxfYnl0ZXMgfSkuX19kKQoKCgoKCgoKIAoKIyA2OCAi
L3Vzci9pbmNsdWRlL2JpdHMvaHVnZV92YWwuaCIgMwoKIyAzMyAiL3Vzci9pbmNsdWRlL21hdGgu
aCIgMiAzCgoKIAoKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGRlZi5oIiAxIDMKIAoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojIDQ3ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoZGVmLmgiIDMK
CiMgNDAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMwoKCgogCgoKCgojZGVmaW5lIF9fTUFUSENB
TEwoZnVuY3Rpb24sc3VmZml4LCBhcmdzKQlfX01BVEhERUNMIChfTWRvdWJsZV8sZnVuY3Rpb24s
c3VmZml4LCBhcmdzKQoKI2RlZmluZSBfX01BVEhERUNMKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwg
YXJncykgX19NQVRIREVDTF8xKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwgYXJncyk7IF9fTUFUSERF
Q0xfMSh0eXBlLCBfX0NPTkNBVChfXyxmdW5jdGlvbiksc3VmZml4LCBhcmdzKQoKCiNkZWZpbmUg
X19NQVRIQ0FMTFgoZnVuY3Rpb24sc3VmZml4LCBhcmdzLCBhdHRyaWIpCV9fTUFUSERFQ0xYIChf
TWRvdWJsZV8sZnVuY3Rpb24sc3VmZml4LCBhcmdzLCBhdHRyaWIpCgojZGVmaW5lIF9fTUFUSERF
Q0xYKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwgYXJncywgYXR0cmliKSBfX01BVEhERUNMXzEodHlw
ZSwgZnVuY3Rpb24sc3VmZml4LCBhcmdzKSBfX2F0dHJpYnV0ZV9fIChhdHRyaWIpOyBfX01BVEhE
RUNMXzEodHlwZSwgX19DT05DQVQoX18sZnVuY3Rpb24pLHN1ZmZpeCwgYXJncykgX19hdHRyaWJ1
dGVfXyAoYXR0cmliKQoKCiNkZWZpbmUgX19NQVRIREVDTF8xKHR5cGUsIGZ1bmN0aW9uLHN1ZmZp
eCwgYXJncykgZXh0ZXJuIHR5cGUgX19NQVRIX1BSRUNOQU1FKGZ1bmN0aW9uLHN1ZmZpeCkgYXJn
cwoKCiNkZWZpbmUgX01kb3VibGVfIAkJZG91YmxlCiNkZWZpbmUgX19NQVRIX1BSRUNOQU1FKG5h
bWUscikJX19DT05DQVQobmFtZSxyKQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiAKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3MgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fYWNvcyAgICAgICAgICAoZG91YmxlICBf
X3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBhc2luICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW4gICAgICAgICAgKGRv
dWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgYXRhbiAgICAgICAg
ICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19hdGFuICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW4y
ICAgICAgICAgIChkb3VibGUgIF9feSwgZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19hdGFuMiAgICAgICAgICAoZG91YmxlICBfX3ksIGRvdWJsZSAgX194KSAgICAg
IDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcyAgICAgICAgICAoZG91YmxlICBfX3gp
ICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19jb3MgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgc2luICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX3NpbiAgICAgICAgICAoZG91Ymxl
ICBfX3gpICAgICAgOwogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB0YW4gICAgICAgICAgKGRv
dWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fdGFuICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgICA7CgoKCgoKCgogCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBj
b3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2Nvc2ggICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKIApleHRlcm4gICBkb3VibGUgICAg
ICAgICAgc2luaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgX19zaW5oICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIHRhbmggICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRv
dWJsZSAgICAgICAgIF9fdGFuaCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCiAKZXh0
ZXJuICAgZG91YmxlICAgICAgICAgIGFjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2Fjb3NoICAgICAgICAgIChkb3VibGUgIF9feCkgICAg
ICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGFzaW5oICAgICAgICAgIChkb3VibGUgIF9f
eCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2FzaW5oICAgICAgICAgIChkb3VibGUg
IF9feCkgICAgICA7CiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGF0YW5oICAgICAgICAgIChk
b3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2F0YW5oICAgICAgICAg
IChkb3VibGUgIF9feCkgICAgICA7CgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZXhw
ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2V4
cCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIGZyZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50ICpfX2V4cG9uZW50KSAg
ICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZnJleHAgICAgICAgICAgKGRvdWJsZSAgX194
LCBpbnQgKl9fZXhwb25lbnQpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbGRl
eHAgICAgICAgICAgKGRvdWJsZSAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX2xkZXhwICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fZXhwb25l
bnQpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nICAgICAgICAgIChkb3Vi
bGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2xvZyAgICAgICAgICAoZG91
YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMTAgICAgICAg
ICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9nMTAgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIG1v
ZGYgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAg
ZG91YmxlICAgICAgICAgX19tb2RmICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICAqX19p
cHRyKSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBleHBtMSAgICAgICAgICAo
ZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19leHBtMSAgICAgICAg
ICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgbG9nMXAg
ICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbG9n
MXAgICAgICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgIGxvZ2IgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fbG9nYiAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKCgoKCgoKCgoKCiAKCiAK
ZXh0ZXJuICAgZG91YmxlICAgICAgICAgIHBvdyAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcG93ICAgICAgICAgIChkb3Vi
bGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAg
c3FydCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X19zcXJ0ICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgoKIApleHRlcm4gICBkb3VibGUg
ICAgICAgICAgaHlwb3QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBl
eHRlcm4gICBkb3VibGUgICAgICAgICBfX2h5cG90ICAgICAgICAgIChkb3VibGUgIF9feCwgZG91
YmxlICBfX3kpICAgICAgOwoKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBjYnJ0ICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2NicnQgICAg
ICAgICAgKGRvdWJsZSAgX194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBkb3VibGUgICAgICAg
ICAgY2VpbCAgICAgICAgICAoZG91YmxlICBfX3gpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19jZWlsICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGRvdWJs
ZSAgICAgICAgICBmYWJzICAgICAgICAgIChkb3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18g
KCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19mYWJzICAgICAg
ICAgIChkb3VibGUgIF9feCkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAg
OwoKIApleHRlcm4gICBkb3VibGUgICAgICAgICAgZmxvb3IgICAgICAgICAgKGRvdWJsZSAgX194
KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fZmxvb3IgICAgICAgICAgKGRvdWJsZSAg
X194KSAgICAgIDsKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGZtb2QgICAgICAgICAgKGRv
dWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBfX2Zt
b2QgICAgICAgICAgKGRvdWJsZSAgX194LCBkb3VibGUgIF9feSkgICAgICA7CgoKIAoKZXh0ZXJu
ICBpbnQgICAgIF9faXNpbmYgICAgICAoZG91YmxlICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18g
KChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgIF9fZmluaXRlICAgICAgKGRvdWJsZSAg
X192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKIAoKZXh0ZXJuICBpbnQg
ICAgIGlzaW5mICAgICAgKGRvdWJsZSAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25z
dF9fKSk7CgogCmV4dGVybiAgaW50ICAgICBmaW5pdGUgICAgICAoZG91YmxlICBfX3ZhbHVlKSAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBkb3VibGUgICAg
ICAgICAgaW5mbmFuICAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAg
ICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19pbmZuYW4gICAgICAg
ICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7
CgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBkcmVtICAgICAgICAgIChkb3VibGUgIF9feCwg
ZG91YmxlICBfX3kpICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAgX19kcmVtICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIHNpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgOyBleHRlcm4gICBk
b3VibGUgICAgICAgICBfX3NpZ25pZmljYW5kICAgICAgICAgIChkb3VibGUgIF9feCkgICAgICA7
CgoKCiAKZXh0ZXJuICAgZG91YmxlICAgICAgICAgIGNvcHlzaWduICAgICAgICAgIChkb3VibGUg
IF9feCwgZG91YmxlICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7
IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fY29weXNpZ24gICAgICAgICAgKGRvdWJsZSAgX194
LCBkb3VibGUgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAgOwoK
CgoKCgoKCiAKZXh0ZXJuICBpbnQgICAgIF9faXNuYW4gICAgICAoZG91YmxlICBfX3ZhbHVlKSAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgICBpc25hbiAg
ICAgIChkb3VibGUgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApl
eHRlcm4gICBkb3VibGUgICAgICAgICAgajAgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgX19qMCAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAg
IGRvdWJsZSAgICAgICAgICBqMSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3Vi
bGUgICAgICAgICBfX2oxICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIGpuICAgICAgICAgIChpbnQsIGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgX19qbiAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIHkwICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAg
ICAgICAgIF9feTAgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAg
ICAgICAgeTEgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAgICAg
X195MSAgICAgICAgICAoZG91YmxlICkgICAgICA7CmV4dGVybiAgIGRvdWJsZSAgICAgICAgICB5
biAgICAgICAgICAoaW50LCBkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
eW4gICAgICAgICAgKGludCwgZG91YmxlICkgICAgICA7CgoKCgogCmV4dGVybiAgIGRvdWJsZSAg
ICAgICAgICBlcmYgICAgICAgICAgKGRvdWJsZSApICAgIDsgZXh0ZXJuICAgZG91YmxlICAgICAg
ICAgX19lcmYgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAg
ICAgZXJmYyAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X2VyZmMgICAgICAgICAgKGRvdWJsZSApICAgICAgOwpleHRlcm4gICBkb3VibGUgICAgICAgICAg
bGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
bGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICAgIDsKZXh0ZXJuICAgZG91YmxlICAgICAgICAg
IHRnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgOyBleHRlcm4gICBkb3VibGUgICAgICAgICBf
X3RnYW1tYSAgICAgICAgICAoZG91YmxlICkgICAgICA7CgoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIGdhbW1hICAgICAgICAgIChkb3VibGUgKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAg
ICAgIF9fZ2FtbWEgICAgICAgICAgKGRvdWJsZSApICAgICAgOwoKCgogCgoKZXh0ZXJuICAgZG91
YmxlICAgICAgICAgIGxnYW1tYV9yICAgICAgICAgICAgICAoZG91YmxlICwgaW50ICpfX3NpZ25n
YW1wKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fbGdhbW1hX3IgICAgICAgICAgICAg
IChkb3VibGUgLCBpbnQgKl9fc2lnbmdhbXApICAgICAgOwoKCgoKIAoKZXh0ZXJuICAgZG91Ymxl
ICAgICAgICAgIHJpbnQgICAgICAgICAgKGRvdWJsZSAgX194KSAgICA7IGV4dGVybiAgIGRvdWJs
ZSAgICAgICAgIF9fcmludCAgICAgICAgICAoZG91YmxlICBfX3gpICAgICAgOwoKIApleHRlcm4g
ICBkb3VibGUgICAgICAgICAgbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91Ymxl
ICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAgIGRv
dWJsZSAgICAgICAgIF9fbmV4dGFmdGVyICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBf
X3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCiAKZXh0ZXJu
ICAgZG91YmxlICAgICAgICAgIHJlbWFpbmRlciAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX195KSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9fcmVtYWluZGVyICAgICAgICAg
IChkb3VibGUgIF9feCwgZG91YmxlICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgZG91YmxlICAg
ICAgICAgIHNjYWxiICAgICAgICAgIChkb3VibGUgIF9feCwgZG91YmxlICBfX24pICAgIDsgZXh0
ZXJuICAgZG91YmxlICAgICAgICAgX19zY2FsYiAgICAgICAgICAoZG91YmxlICBfX3gsIGRvdWJs
ZSAgX19uKSAgICAgIDsKCgogCmV4dGVybiAgIGRvdWJsZSAgICAgICAgICBzY2FsYm4gICAgICAg
ICAgKGRvdWJsZSAgX194LCBpbnQgX19uKSAgICA7IGV4dGVybiAgIGRvdWJsZSAgICAgICAgIF9f
c2NhbGJuICAgICAgICAgIChkb3VibGUgIF9feCwgaW50IF9fbikgICAgICA7CgogCmV4dGVybiAg
IGludCAgICAgICAgaWxvZ2IgICAgICAgIChkb3VibGUgIF9feCkgICA7IGV4dGVybiAgIGludCAg
ICAgICAgX19pbG9nYiAgICAgICAgKGRvdWJsZSAgX194KSAgICA7CgoKIyAzMzYgIi91c3IvaW5j
bHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDYzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMK
CiN1bmRlZiAJX01kb3VibGVfCiN1bmRlZiAJX19NQVRIX1BSRUNOQU1FCgoKCgogCgoKCiNkZWZp
bmUgX01mbG9hdF8JCWZsb2F0CgojZGVmaW5lIF9NZG91YmxlXyAJCV9NZmxvYXRfCgojZGVmaW5l
IF9fTUFUSF9QUkVDTkFNRShuYW1lLHIpIG5hbWUjI2YjI3IKCgoKIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9tYXRoY2FsbHMuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGFjb3NmICAgICAg
ICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hY29zZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmYg
ICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2FzaW5m
ICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBh
dGFuZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
YXRhbmYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGF0YW4yZiAgICAgICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX2F0YW4yZiAgICAgICAgIChmbG9hdCAgIF9feSwgZmxvYXQgICBf
X3gpICAgICAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBjb3NmICAgICAgICAgKGZsb2F0
ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19jb3NmICAgICAgICAgKGZsb2F0
ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBzaW5mICAgICAgICAgKGZs
b2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19zaW5mICAgICAgICAgKGZs
b2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAgICAgICB0YW5mICAgICAgICAg
KGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX190YW5mICAgICAgICAg
KGZsb2F0ICAgX194KSAgICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAg
Y29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBf
X2Nvc2hmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKIApleHRlcm4gICBmbG9hdCAgICAg
ICAgICBzaW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGZsb2F0
ICAgICAgICAgIHRhbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX190YW5oZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CgoKIApleHRlcm4g
ICBmbG9hdCAgICAgICAgICBhY29zaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX2Fjb3NoZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgICA7CiAK
ZXh0ZXJuICAgZmxvYXQgICAgICAgICAgYXNpbmhmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7
IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19hc2luaGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGF0YW5oZiAgICAgICAgIChmbG9hdCAgIF9f
eCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fYXRhbmhmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGV4cGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2V4cGYgICAgICAgICAo
ZmxvYXQgICBfX3gpICAgICAgOwoKCgoKCgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZnJl
eHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAg
ZmxvYXQgICAgICAgICBfX2ZyZXhwZiAgICAgICAgIChmbG9hdCAgIF9feCwgaW50ICpfX2V4cG9u
ZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbGRleHBmICAgICAgICAgKGZs
b2F0ICAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
bGRleHBmICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19leHBvbmVudCkgICAgICA7CgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZ2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0
ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZ2YgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2cxMGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzEwZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIG1vZGZmICAgICAgICAgKGZsb2F0ICAg
X194LCBmbG9hdCAgICpfX2lwdHIpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX21vZGZm
ICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgICpfX2lwdHIpICAgICAgOwoKCiAKZXh0ZXJu
ICAgZmxvYXQgICAgICAgICAgZXhwbTFmICAgICAgICAgKGZsb2F0ICAgX194KSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19leHBtMWYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBsb2cxcGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
IDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2xvZzFwZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxvZ2JmICAgICAgICAgKGZsb2F0ICAg
X194KSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sb2diZiAgICAgICAgIChmbG9hdCAg
IF9feCkgICAgICA7CgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBwb3dm
ICAgICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAg
ICAgICAgIF9fcG93ZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAgOwoK
IApleHRlcm4gICBmbG9hdCAgICAgICAgICBzcXJ0ZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
OyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc3FydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAg
ICAgOwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgaHlwb3RmICAgICAgICAgKGZsb2F0ICAg
X194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9faHlwb3RmICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJuICAgZmxv
YXQgICAgICAgICAgY2JydGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxv
YXQgICAgICAgICBfX2NicnRmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCgoKIAoKIApl
eHRlcm4gICBmbG9hdCAgICAgICAgICBjZWlsZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAgOyBl
eHRlcm4gICBmbG9hdCAgICAgICAgIF9fY2VpbGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgICAg
OwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBmYWJzZiAgICAgICAgIChmbG9hdCAgIF9feCkg
ICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgZmxvYXQgICAg
ICAgICBfX2ZhYnNmICAgICAgICAgKGZsb2F0ICAgX194KSAgICAgX19hdHRyaWJ1dGVfXyAoICAg
IChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGZsb29yZiAgICAg
ICAgIChmbG9hdCAgIF9feCkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fZmxvb3JmICAg
ICAgICAgKGZsb2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZm1v
ZGYgICAgICAgICAoZmxvYXQgICBfX3gsIGZsb2F0ICAgX195KSAgICA7IGV4dGVybiAgIGZsb2F0
ICAgICAgICAgX19mbW9kZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAg
OwoKCiAKCmV4dGVybiAgaW50ICAgIF9faXNpbmZmICAgICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9f
YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJuICBpbnQgICAgX19maW5pdGVmICAg
ICAoZmxvYXQgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpl
eHRlcm4gIGludCAgICBpc2luZmYgICAgIChmbG9hdCAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKIApleHRlcm4gIGludCAgICBmaW5pdGVmICAgICAoZmxvYXQgICBf
X3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBm
bG9hdCAgICAgICAgICBpbmZuYW5mICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1
dGVfXyAoICAgIChfX2NvbnN0X18pICApOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9faW5mbmFu
ZiAgICAgICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f
KSAgKSAgOwoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICBkcmVtZiAgICAgICAgIChmbG9hdCAg
IF9feCwgZmxvYXQgICBfX3kpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2RyZW1mICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgICA7CgoKIApleHRlcm4gICBmbG9h
dCAgICAgICAgICBzaWduaWZpY2FuZGYgICAgICAgICAoZmxvYXQgICBfX3gpICAgIDsgZXh0ZXJu
ICAgZmxvYXQgICAgICAgICBfX3NpZ25pZmljYW5kZiAgICAgICAgIChmbG9hdCAgIF9feCkgICAg
ICA7CgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgY29weXNpZ25mICAgICAgICAgKGZsb2F0
ICAgX194LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAg
KTsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2NvcHlzaWduZiAgICAgICAgIChmbG9hdCAgIF9f
eCwgZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsK
CgoKCgoKCgogCmV4dGVybiAgaW50ICAgIF9faXNuYW5mICAgICAoZmxvYXQgICBfX3ZhbHVlKSAg
IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgIGlzbmFuZiAg
ICAgKGZsb2F0ICAgX192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4
dGVybiAgIGZsb2F0ICAgICAgICAgIGowZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVybiAg
IGZsb2F0ICAgICAgICAgX19qMGYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZs
b2F0ICAgICAgICAgIGoxZiAgICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAg
ICAgICAgX19qMWYgICAgICAgICAoZmxvYXQgICkgICAgICA7CmV4dGVybiAgIGZsb2F0ICAgICAg
ICAgIGpuZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAg
ICBfX2puZiAgICAgICAgIChpbnQsIGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAg
ICAgICB5MGYgICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9f
eTBmICAgICAgICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5MWYg
ICAgICAgICAoZmxvYXQgICkgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9feTFmICAgICAg
ICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB5bmYgICAgICAgICAo
aW50LCBmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX195bmYgICAgICAgICAo
aW50LCBmbG9hdCAgKSAgICAgIDsKCgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZXJmZiAg
ICAgICAgIChmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19lcmZmICAgICAg
ICAgKGZsb2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICBlcmZjZiAgICAgICAg
IChmbG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19lcmZjZiAgICAgICAgIChm
bG9hdCAgKSAgICAgIDsKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbGdhbW1hZiAgICAgICAgIChm
bG9hdCAgKSAgICA7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19sZ2FtbWFmICAgICAgICAgKGZs
b2F0ICApICAgICAgOwpleHRlcm4gICBmbG9hdCAgICAgICAgICB0Z2FtbWFmICAgICAgICAgKGZs
b2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3RnYW1tYWYgICAgICAgICAoZmxv
YXQgICkgICAgICA7CgoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgZ2FtbWFmICAgICAgICAg
KGZsb2F0ICApICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX2dhbW1hZiAgICAgICAgIChm
bG9hdCAgKSAgICAgIDsKCgoKIAoKCmV4dGVybiAgIGZsb2F0ICAgICAgICAgIGxnYW1tYWZfciAg
ICAgICAgICAgIChmbG9hdCAgLCBpbnQgKl9fc2lnbmdhbXApICAgIDsgZXh0ZXJuICAgZmxvYXQg
ICAgICAgICBfX2xnYW1tYWZfciAgICAgICAgICAgIChmbG9hdCAgLCBpbnQgKl9fc2lnbmdhbXAp
ICAgICAgOwoKCgoKIAoKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgcmludGYgICAgICAgICAoZmxv
YXQgICBfX3gpICAgIDsgZXh0ZXJuICAgZmxvYXQgICAgICAgICBfX3JpbnRmICAgICAgICAgKGZs
b2F0ICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgbmV4dGFmdGVyZiAg
ICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAg
KF9fY29uc3RfXykgICk7IGV4dGVybiAgIGZsb2F0ICAgICAgICAgX19uZXh0YWZ0ZXJmICAgICAg
ICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19j
b25zdF9fKSAgKSAgOwoKCgoKIApleHRlcm4gICBmbG9hdCAgICAgICAgICByZW1haW5kZXJmICAg
ICAgICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9feSkgICAgOyBleHRlcm4gICBmbG9hdCAgICAg
ICAgIF9fcmVtYWluZGVyZiAgICAgICAgIChmbG9hdCAgIF9feCwgZmxvYXQgICBfX3kpICAgICAg
OwoKCiAKZXh0ZXJuICAgZmxvYXQgICAgICAgICAgc2NhbGJmICAgICAgICAgKGZsb2F0ICAgX194
LCBmbG9hdCAgIF9fbikgICAgOyBleHRlcm4gICBmbG9hdCAgICAgICAgIF9fc2NhbGJmICAgICAg
ICAgKGZsb2F0ICAgX194LCBmbG9hdCAgIF9fbikgICAgICA7CgoKIApleHRlcm4gICBmbG9hdCAg
ICAgICAgICBzY2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19uKSAgICA7IGV4dGVy
biAgIGZsb2F0ICAgICAgICAgX19zY2FsYm5mICAgICAgICAgKGZsb2F0ICAgX194LCBpbnQgX19u
KSAgICAgIDsKCiAKZXh0ZXJuICAgaW50ICAgICAgIGlsb2diZiAgICAgICAoZmxvYXQgICBfX3gp
ICAgOyBleHRlcm4gICBpbnQgICAgICAgX19pbG9nYmYgICAgICAgKGZsb2F0ICAgX194KSAgICA7
CgoKIyAzMzYgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDgyICIvdXNyL2lu
Y2x1ZGUvbWF0aC5oIiAyIDMKCiN1bmRlZiAJX01kb3VibGVfCiN1bmRlZiAJX19NQVRIX1BSRUNO
QU1FCgoKIAoKCgojZGVmaW5lIF9NbG9uZ19kb3VibGVfCWxvbmcgZG91YmxlCgojZGVmaW5lIF9N
ZG91YmxlXyAJCV9NbG9uZ19kb3VibGVfCgojZGVmaW5lIF9fTUFUSF9QUkVDTkFNRShuYW1lLHIp
IG5hbWUjI2wjI3IKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMSAzCiAK
CgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGFjb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19hY29zbCAgICAgICAgIChs
b25nIGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
YXNpbmwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2FzaW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBhdGFubCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbmwgICAgICAgICAo
bG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
IGF0YW4ybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feSwgbG9uZyBkb3VibGUgICBfX3gpICAg
IDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2F0YW4ybCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feSwgbG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICBjb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19jb3NsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzaW5sICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zaW5s
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBsb25nIGRvdWJs
ZSAgICAgICAgICB0YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX190YW5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgIDsKCgoKCgoKCiAKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29zaGwgICAg
ICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAg
ICBfX2Nvc2hsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKIApleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICBzaW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAg
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc2luaGwgICAgICAgICAobG9uZyBkb3Vi
bGUgICBfX3gpICAgICAgOwogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIHRhbmhsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgX190YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBhY29zaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gp
ICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2Fjb3NobCAgICAgICAgIChsb25n
IGRvdWJsZSAgIF9feCkgICAgICA7CiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgYXNp
bmhsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91Ymxl
ICAgICAgICAgX19hc2luaGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwogCmV4
dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGF0YW5obCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fYXRhbmhsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCgogCgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGV4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICBfX2V4cGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAg
OwoKCgoKCgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZnJleHBsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194LCBpbnQgKl9fZXhwb25lbnQpICAgIDsgZXh0ZXJuICAgbG9uZyBk
b3VibGUgICAgICAgICBfX2ZyZXhwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgaW50ICpf
X2V4cG9uZW50KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbGRleHBs
ICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBpbnQgX19leHBvbmVudCkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fbGRleHBsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
LCBpbnQgX19leHBvbmVudCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAg
IGxvZ2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2xvZ2wgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBsb2cxMGwgICAgICAgICAobG9uZyBkb3VibGUg
ICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xvZzEwbCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAg
ICAgIG1vZGZsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgICpfX2lw
dHIpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX21vZGZsICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgICpfX2lwdHIpICAgICAgOwoKCiAKZXh0ZXJu
ICAgbG9uZyBkb3VibGUgICAgICAgICAgZXhwbTFsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19leHBtMWwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBs
b2cxcGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2xvZzFwbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7Cgog
CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGxvZ2JsICAgICAgICAgKGxvbmcgZG91Ymxl
ICAgX194KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19sb2dibCAgICAgICAg
IChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7CgoKCgoKCgoKCgoKIAoKIApleHRlcm4gICBsb25n
IGRvdWJsZSAgICAgICAgICBwb3dsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRv
dWJsZSAgIF9feSkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fcG93bCAgICAg
ICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKIApleHRl
cm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzcXJ0bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9f
eCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc3FydGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gpICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAg
aHlwb3RsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAg
OyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9faHlwb3RsICAgICAgICAgKGxvbmcgZG91
YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgICA7CgoKCiAKZXh0ZXJuICAgbG9uZyBk
b3VibGUgICAgICAgICAgY2JydGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0
ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2NicnRsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194KSAgICAgIDsKCgoKIAoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBjZWlsbCAg
ICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAg
ICAgIF9fY2VpbGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgICAgOwoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBmYWJzbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkg
ICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3Vi
bGUgICAgICAgICBfX2ZhYnNsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgX19hdHRy
aWJ1dGVfXyAoICAgIChfX2NvbnN0X18pICApICA7CgogCmV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgIGZsb29ybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9fZmxvb3JsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAg
ICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZm1vZGwgICAgICAgICAobG9u
ZyBkb3VibGUgICBfX3gsIGxvbmcgZG91YmxlICAgX195KSAgICA7IGV4dGVybiAgIGxvbmcgZG91
YmxlICAgICAgICAgX19mbW9kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3Vi
bGUgICBfX3kpICAgICAgOwoKCiAKCmV4dGVybiAgaW50ICAgIF9faXNpbmZsICAgICAobG9uZyBk
b3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCiAKZXh0ZXJu
ICBpbnQgICAgX19maW5pdGVsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCgogCgpleHRlcm4gIGludCAgICBpc2luZmwgICAgIChsb25n
IGRvdWJsZSAgIF9fdmFsdWUpICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKIApleHRl
cm4gIGludCAgICBmaW5pdGVsICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmli
dXRlX18gKChfX2NvbnN0X18pKTsKCiAKCgoKCgpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAg
ICBpbmZuYW5sICAgICAgICAgKGludCBfX2Vycm9yKSAgICAgX19hdHRyaWJ1dGVfXyAoICAgIChf
X2NvbnN0X18pICApOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9faW5mbmFubCAgICAg
ICAgIChpbnQgX19lcnJvcikgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9fKSAgKSAg
OwoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBkcmVtbCAgICAgICAgIChsb25nIGRv
dWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICBfX2RyZW1sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAg
IF9feSkgICAgICA7CgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBzaWduaWZpY2Fu
ZGwgICAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICBfX3NpZ25pZmljYW5kbCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCkgICAgICA7
CgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgY29weXNpZ25sICAgICAgICAgKGxv
bmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAg
ICAoX19jb25zdF9fKSAgKTsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2NvcHlzaWdu
bCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICBfX2F0
dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICkgIDsKCgoKCgoKCgogCmV4dGVybiAgaW50ICAg
IF9faXNuYW5sICAgICAobG9uZyBkb3VibGUgICBfX3ZhbHVlKSAgIF9fYXR0cmlidXRlX18gKChf
X2NvbnN0X18pKTsKCgogCmV4dGVybiAgaW50ICAgIGlzbmFubCAgICAgKGxvbmcgZG91YmxlICAg
X192YWx1ZSkgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgogCmV4dGVybiAgIGxvbmcg
ZG91YmxlICAgICAgICAgIGowbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19qMGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgICA7
CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGoxbCAgICAgICAgIChsb25nIGRvdWJsZSAg
KSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19qMWwgICAgICAgICAobG9uZyBk
b3VibGUgICkgICAgICA7CmV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgIGpubCAgICAgICAg
IChpbnQsIGxvbmcgZG91YmxlICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBf
X2pubCAgICAgICAgIChpbnQsIGxvbmcgZG91YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRv
dWJsZSAgICAgICAgICB5MGwgICAgICAgICAobG9uZyBkb3VibGUgICkgICAgOyBleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgIF9feTBsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOwpl
eHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICB5MWwgICAgICAgICAobG9uZyBkb3VibGUgICkg
ICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9feTFsICAgICAgICAgKGxvbmcgZG91
YmxlICApICAgICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICB5bmwgICAgICAgICAo
aW50LCBsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX195
bmwgICAgICAgICAoaW50LCBsb25nIGRvdWJsZSAgKSAgICAgIDsKCgoKCiAKZXh0ZXJuICAgbG9u
ZyBkb3VibGUgICAgICAgICAgZXJmbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVy
biAgIGxvbmcgZG91YmxlICAgICAgICAgX19lcmZsICAgICAgICAgKGxvbmcgZG91YmxlICApICAg
ICAgOwpleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICBlcmZjbCAgICAgICAgIChsb25nIGRv
dWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19lcmZjbCAgICAgICAg
IChsb25nIGRvdWJsZSAgKSAgICAgIDsKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgbGdh
bW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAg
ICAgICAgX19sZ2FtbWFsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgICAgOwpleHRlcm4gICBs
b25nIGRvdWJsZSAgICAgICAgICB0Z2FtbWFsICAgICAgICAgKGxvbmcgZG91YmxlICApICAgIDsg
ZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3RnYW1tYWwgICAgICAgICAobG9uZyBkb3Vi
bGUgICkgICAgICA7CgoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgZ2FtbWFsICAg
ICAgICAgKGxvbmcgZG91YmxlICApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBf
X2dhbW1hbCAgICAgICAgIChsb25nIGRvdWJsZSAgKSAgICAgIDsKCgoKIAoKCmV4dGVybiAgIGxv
bmcgZG91YmxlICAgICAgICAgIGxnYW1tYWxfciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBp
bnQgKl9fc2lnbmdhbXApICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX2xnYW1t
YWxfciAgICAgICAgICAgIChsb25nIGRvdWJsZSAgLCBpbnQgKl9fc2lnbmdhbXApICAgICAgOwoK
CgoKIAoKZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICAgcmludGwgICAgICAgICAobG9uZyBk
b3VibGUgICBfX3gpICAgIDsgZXh0ZXJuICAgbG9uZyBkb3VibGUgICAgICAgICBfX3JpbnRsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICAgIDsKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICAgbmV4dGFmdGVybCAgICAgICAgIChsb25nIGRvdWJsZSAgIF9feCwgbG9uZyBkb3Vi
bGUgICBfX3kpICAgICBfX2F0dHJpYnV0ZV9fICggICAgKF9fY29uc3RfXykgICk7IGV4dGVybiAg
IGxvbmcgZG91YmxlICAgICAgICAgX19uZXh0YWZ0ZXJsICAgICAgICAgKGxvbmcgZG91YmxlICAg
X194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgIF9fYXR0cmlidXRlX18gKCAgICAoX19jb25zdF9f
KSAgKSAgOwoKCgoKIApleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgICByZW1haW5kZXJsICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9feSkgICAgOyBleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgIF9fcmVtYWluZGVybCAgICAgICAgIChsb25nIGRvdWJsZSAg
IF9feCwgbG9uZyBkb3VibGUgICBfX3kpICAgICAgOwoKCiAKZXh0ZXJuICAgbG9uZyBkb3VibGUg
ICAgICAgICAgc2NhbGJsICAgICAgICAgKGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAg
IF9fbikgICAgOyBleHRlcm4gICBsb25nIGRvdWJsZSAgICAgICAgIF9fc2NhbGJsICAgICAgICAg
KGxvbmcgZG91YmxlICAgX194LCBsb25nIGRvdWJsZSAgIF9fbikgICAgICA7CgoKIApleHRlcm4g
ICBsb25nIGRvdWJsZSAgICAgICAgICBzY2FsYm5sICAgICAgICAgKGxvbmcgZG91YmxlICAgX194
LCBpbnQgX19uKSAgICA7IGV4dGVybiAgIGxvbmcgZG91YmxlICAgICAgICAgX19zY2FsYm5sICAg
ICAgICAgKGxvbmcgZG91YmxlICAgX194LCBpbnQgX19uKSAgICAgIDsKCiAKZXh0ZXJuICAgaW50
ICAgICAgIGlsb2dibCAgICAgICAobG9uZyBkb3VibGUgICBfX3gpICAgOyBleHRlcm4gICBpbnQg
ICAgICAgX19pbG9nYmwgICAgICAgKGxvbmcgZG91YmxlICAgX194KSAgICA7CgoKIyAzMzYgIi91
c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzCgojIDk5ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCiN1bmRlZiBfTWRvdWJsZV8KI3VuZGVmIF9fTUFUSF9QUkVDTkFNRQoKCgoKI3VuZGVm
IAlfX01BVEhERUNMXzEKI3VuZGVmIAlfX01BVEhERUNMCiN1bmRlZiAJX19NQVRIQ0FMTAoKCgog
CmV4dGVybiBpbnQgc2lnbmdhbTsKCgoKIAojIDIzMiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoK
CgogCnR5cGVkZWYgZW51bQp7CiAgX0lFRUVfID0gLTEsCSAKICBfU1ZJRF8sCSAKICBfWE9QRU5f
LAkgCiAgX1BPU0lYXywKICBfSVNPQ18JIAp9IF9MSUJfVkVSU0lPTl9UWVBFOwoKIAoKCmV4dGVy
biBfTElCX1ZFUlNJT05fVFlQRSBfTElCX1ZFUlNJT047CgoKCgogCgoKCgoKc3RydWN0IF9fZXhj
ZXB0aW9uCgoKCiAgewogICAgaW50IHR5cGU7CiAgICBjaGFyICpuYW1lOwogICAgZG91YmxlIGFy
ZzE7CiAgICBkb3VibGUgYXJnMjsKICAgIGRvdWJsZSByZXR2YWw7CiAgfTsKCgpleHRlcm4gaW50
IG1hdGhlcnIgIChzdHJ1Y3QgX19leGNlcHRpb24gKl9fZXhjKSAgdGhyb3cgKCkgIDsKCgoKCiNk
ZWZpbmUgWF9UTE9TUwkxLjQxNDg0NzU1MDQwNTY4ODAwMDAwZSsxNgoKIAojZGVmaW5lIERPTUFJ
TgkJMQojZGVmaW5lIFNJTkcJCTIKI2RlZmluZSBPVkVSRkxPVwkzCiNkZWZpbmUgVU5ERVJGTE9X
CTQKI2RlZmluZSBUTE9TUwkJNQojZGVmaW5lIFBMT1NTCQk2CgogCiNkZWZpbmUgSFVHRQkJRkxU
X01BWAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvZmxvYXQuaCIgMSAzCiAKCgoj
ZGVmaW5lIF9GTE9BVF9IXwogCgogICAgCgojZGVmaW5lIEZMVF9SQURJWCAyCiAgICAKCiNkZWZp
bmUgRkxUX01BTlRfRElHIDI0CiAgICAKCiNkZWZpbmUgRkxUX0RJRyA2CiAgICAKCiNkZWZpbmUg
RkxUX1JPVU5EUyAxCiAgICAKCiNkZWZpbmUgRkxUX0VQU0lMT04gMS4xOTIwOTI5MGUtMDdGCiAg
ICAKCiNkZWZpbmUgRkxUX01JTl9FWFAgKC0xMjUpCiAgICAKCiNkZWZpbmUgRkxUX01JTiAxLjE3
NTQ5NDM1ZS0zOEYKICAgIAoKI2RlZmluZSBGTFRfTUlOXzEwX0VYUCAoLTM3KQogICAgCgojZGVm
aW5lIEZMVF9NQVhfRVhQIDEyOAogICAgCgojZGVmaW5lIEZMVF9NQVggMy40MDI4MjM0N2UrMzhG
CiAgICAKCiNkZWZpbmUgRkxUX01BWF8xMF9FWFAgMzgKCiAgICAKCiNkZWZpbmUgREJMX01BTlRf
RElHIDUzCiAgICAKCiNkZWZpbmUgREJMX0RJRyAxNQogICAgCgojZGVmaW5lIERCTF9FUFNJTE9O
IDIuMjIwNDQ2MDQ5MjUwMzEzMWUtMTYKICAgIAoKI2RlZmluZSBEQkxfTUlOX0VYUCAoLTEwMjEp
CiAgICAKCiNkZWZpbmUgREJMX01JTiAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOAogICAgCgojZGVm
aW5lIERCTF9NSU5fMTBfRVhQICgtMzA3KQogICAgCgojZGVmaW5lIERCTF9NQVhfRVhQIDEwMjQK
ICAgIAoKI2RlZmluZSBEQkxfTUFYIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4CiAgICAKCiNkZWZp
bmUgREJMX01BWF8xMF9FWFAgMzA4CgogICAgCgojZGVmaW5lIExEQkxfTUFOVF9ESUcgNjQKICAg
IAoKI2RlZmluZSBMREJMX0RJRyAxOAogICAgCgoKI2RlZmluZSBfX0xEQkxfVU5JT05fXwp1bmlv
biBfX2NvbnZlcnRfbG9uZ19kb3VibGUgewogIHVuc2lnbmVkIF9fY29udmVydF9sb25nX2RvdWJs
ZV9pWzRdOwogIGxvbmcgZG91YmxlIF9fY29udmVydF9sb25nX2RvdWJsZV9kOwp9OwoKI2RlZmlu
ZSBMREJMX0VQU0lMT04gKF9fZXh0ZW5zaW9uX18gKCh1bmlvbiBfX2NvbnZlcnRfbG9uZ19kb3Vi
bGUpIHtfX2NvbnZlcnRfbG9uZ19kb3VibGVfaTogezB4MCwgMHg4MDAwMDAwMCwgMHgzZmMwLCAw
eDB9fSkuX19jb252ZXJ0X2xvbmdfZG91YmxlX2QpCiAgICAKCiNkZWZpbmUgTERCTF9NSU5fRVhQ
ICgtMTYzODEpCiAgICAKCiNkZWZpbmUgTERCTF9NSU4gKF9fZXh0ZW5zaW9uX18gKCh1bmlvbiBf
X2NvbnZlcnRfbG9uZ19kb3VibGUpIHtfX2NvbnZlcnRfbG9uZ19kb3VibGVfaTogezB4MCwgMHg4
MDAwMDAwMCwgMHgxLCAweDB9fSkuX19jb252ZXJ0X2xvbmdfZG91YmxlX2QpCiAgICAKCiNkZWZp
bmUgTERCTF9NSU5fMTBfRVhQICgtNDkzMSkKICAgIAoKI2RlZmluZSBMREJMX01BWF9FWFAgMTYz
ODQKICAgIAoKI2RlZmluZSBMREJMX01BWCAoX19leHRlbnNpb25fXyAoKHVuaW9uIF9fY29udmVy
dF9sb25nX2RvdWJsZSkge19fY29udmVydF9sb25nX2RvdWJsZV9pOiB7MHhmZmZmZmZmZiwgMHhm
ZmZmZmZmZiwgMHgxMDdmZmUsIDB4MH19KS5fX2NvbnZlcnRfbG9uZ19kb3VibGVfZCkKICAgIAoK
I2RlZmluZSBMREJMX01BWF8xMF9FWFAgNDkzMgoKCiMgMjg5ICIvdXNyL2luY2x1ZGUvbWF0aC5o
IiAyIDMKCgojIDI5OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMwoKCgogCgojZGVmaW5lIE1fRQkJ
Mi43MTgyODE4Mjg0NTkwNDUyMzU0CQojZGVmaW5lIE1fTE9HMkUJMS40NDI2OTUwNDA4ODg5NjM0
MDc0CQojZGVmaW5lIE1fTE9HMTBFCTAuNDM0Mjk0NDgxOTAzMjUxODI3NjUJCiNkZWZpbmUgTV9M
TjIJCTAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDIJCiNkZWZpbmUgTV9MTjEwCQkyLjMwMjU4NTA5Mjk5
NDA0NTY4NDAyCQojZGVmaW5lIE1fUEkJCTMuMTQxNTkyNjUzNTg5NzkzMjM4NDYJCiNkZWZpbmUg
TV9QSV8yCQkxLjU3MDc5NjMyNjc5NDg5NjYxOTIzCQojZGVmaW5lIE1fUElfNAkJMC43ODUzOTgx
NjMzOTc0NDgzMDk2MgkKI2RlZmluZSBNXzFfUEkJCTAuMzE4MzA5ODg2MTgzNzkwNjcxNTQJCiNk
ZWZpbmUgTV8yX1BJCQkwLjYzNjYxOTc3MjM2NzU4MTM0MzA4CQojZGVmaW5lIE1fMl9TUVJUUEkJ
MS4xMjgzNzkxNjcwOTU1MTI1NzM5MAkKI2RlZmluZSBNX1NRUlQyCTEuNDE0MjEzNTYyMzczMDk1
MDQ4ODAJCiNkZWZpbmUgTV9TUVJUMV8yCTAuNzA3MTA2NzgxMTg2NTQ3NTI0NDAJCgoKIAoKCiMg
MzM2ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzCgoKCiAKCgoKCgoKIAoKCgoKCiMgNDA3ICIvdXNy
L2luY2x1ZGUvbWF0aC5oIiAzCgoKfSAKCgoKIyA3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8u
Li8uLi8uLi9pbmNsdWRlL2crKy0zL2NtYXRoIiAyIDMKCgoKI3ByYWdtYSBpbnRlcmZhY2UgImNt
YXRoIgoKCmV4dGVybiAiQysrIiB7CiMgMzggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251
L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4u
Ly4uL2luY2x1ZGUvZysrLTMvY21hdGgiIDMKCgppbmxpbmUgZmxvYXQgIGFicyAoZmxvYXQgIHgp
IHsgcmV0dXJuIGZhYnMgKHgpOyB9CgppbmxpbmUgZG91YmxlIGFicyAoZG91YmxlIHgpIHsgcmV0
dXJuIGZhYnMgKHgpOyB9CgoKIyA3MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9jbWF0aCIgMwoKaW5saW5lIGxvbmcgZG91YmxlIGFicyAobG9uZyBkb3Vi
bGUgeCkgeyByZXR1cm4gZmFicyAoeCk7IH0KCn0gIAoKCiMgODggIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKCgoKCiAgCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jb21wbGV4IiAxIDMKIAogCgoK
I2RlZmluZSBfX0NPTVBMRVhfXwoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9n
Y2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0ZC9jb21wbGV4dC5oIiAxIDMKIAogCgogCiAKIAogCgogCiAKIAog
CgogCiAKIAoKIAogCiAKIAogCgogCiAKCgojZGVmaW5lIF9fQ09NUExFWFRfXwoKCiNwcmFnbWEg
aW50ZXJmYWNlCgoKCgoKCgoKY2xhc3MgaXN0cmVhbTsKY2xhc3Mgb3N0cmVhbTsKCmV4dGVybiAi
QysrIiB7CnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBjbGFzcyBjb21wbGV4Owp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZMVD4gY29tcGxleDxfRkxUPiYKICBfX2RvYXBsIChjb21wbGV4PF9GTFQ+KiB0aHMsIGNv
bnN0IGNvbXBsZXg8X0ZMVD4mIHIpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxU
PiYKICBfX2RvYW1pIChjb21wbGV4PF9GTFQ+KiB0aHMsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIp
Owp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPiYKICBfX2RvYW1sIChjb21wbGV4
PF9GTFQ+KiB0aHMsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZM
VD4gY29tcGxleDxfRkxUPiYKICBfX2RvYWR2IChjb21wbGV4PF9GTFQ+KiB0aHMsIGNvbnN0IGNv
bXBsZXg8X0ZMVD4mIHIpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+CmNsYXNzIGNvbXBsZXgKewpw
dWJsaWM6CiAgY29tcGxleCAoX0ZMVCByID0gMCwgX0ZMVCBpID0gMCk6IHJlIChyKSwgaW0gKGkp
IHsgfQogIGNvbXBsZXgmIG9wZXJhdG9yICs9IChjb25zdCBjb21wbGV4Jik7CiAgY29tcGxleCYg
b3BlcmF0b3IgLT0gKGNvbnN0IGNvbXBsZXgmKTsKICBjb21wbGV4JiBvcGVyYXRvciAqPSAoY29u
c3QgY29tcGxleCYpOwogIGNvbXBsZXgmIG9wZXJhdG9yIC89IChjb25zdCBjb21wbGV4Jik7CiAg
X0ZMVCByZWFsICgpIGNvbnN0IHsgcmV0dXJuIHJlOyB9CiAgX0ZMVCBpbWFnICgpIGNvbnN0IHsg
cmV0dXJuIGltOyB9CnByaXZhdGU6CiAgX0ZMVCByZSwgaW07CgogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYXBsPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYW1pPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYW1sPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4JiBf
X2RvYWR2PD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwp9OwoKIApjbGFzcyBjb21wbGV4
PGZsb2F0PjsKY2xhc3MgY29tcGxleDxkb3VibGU+OwpjbGFzcyBjb21wbGV4PGxvbmcgZG91Ymxl
PjsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPgppbmxpbmUgY29tcGxleDxfRkxUPiYKX19kb2FwbCAo
Y29tcGxleDxfRkxUPiogdGhzLCBjb25zdCBjb21wbGV4PF9GTFQ+JiByKQp7CiAgdGhzLT5yZSAr
PSByLnJlOwogIHRocy0+aW0gKz0gci5pbTsKICByZXR1cm4gKnRoczsKfQp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZMVD4KaW5saW5lIGNvbXBsZXg8X0ZMVD4mCmNvbXBsZXg8X0ZMVD46Om9wZXJhdG9yICs9
IChjb25zdCBjb21wbGV4PF9GTFQ+JiByKQp7CiAgcmV0dXJuIF9fZG9hcGwgKHRoaXMsIHIpOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4KaW5saW5lIGNvbXBsZXg8X0ZMVD4mCl9fZG9hbWkgKGNv
bXBsZXg8X0ZMVD4qIHRocywgY29uc3QgY29tcGxleDxfRkxUPiYgcikKewogIHRocy0+cmUgLT0g
ci5yZTsKICB0aHMtPmltIC09IHIuaW07CiAgcmV0dXJuICp0aHM7Cn0KdGVtcGxhdGUgPGNsYXNz
IF9GTFQ+CmlubGluZSBjb21wbGV4PF9GTFQ+Jgpjb21wbGV4PF9GTFQ+OjpvcGVyYXRvciAtPSAo
Y29uc3QgY29tcGxleDxfRkxUPiYgcikKewogIHJldHVybiBfX2RvYW1pICh0aGlzLCByKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+CmlubGluZSBjb21wbGV4PF9GTFQ+JgpfX2RvYW1sIChjb21w
bGV4PF9GTFQ+KiB0aHMsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpCnsKICBfRkxUIGYgPSB0aHMt
PnJlICogci5yZSAtIHRocy0+aW0gKiByLmltOwogIHRocy0+aW0gPSB0aHMtPnJlICogci5pbSAr
IHRocy0+aW0gKiByLnJlOwogIHRocy0+cmUgPSBmOwogIHJldHVybiAqdGhzOwp9CnRlbXBsYXRl
IDxjbGFzcyBfRkxUPgppbmxpbmUgY29tcGxleDxfRkxUPiYKY29tcGxleDxfRkxUPjo6b3BlcmF0
b3IgKj0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpCnsKICByZXR1cm4gX19kb2FtbCAodGhpcywg
cik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRkxUPgppbmxpbmUgY29tcGxleDxfRkxUPiYKY29tcGxl
eDxfRkxUPjo6b3BlcmF0b3IgLz0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHIpCnsKICByZXR1cm4g
X19kb2FkdiAodGhpcywgcik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgX0ZMVApp
bWFnIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4KSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRl
bXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgX0ZMVAppbWFnIChjb25zdCBjb21wbGV4PF9GTFQ+
JiB4KQp7CiAgcmV0dXJuIHguaW1hZyAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGlu
ZSBfRkxUCnJlYWwgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25z
dCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCnJlYWwgKGNvbnN0IGNvbXBs
ZXg8X0ZMVD4mIHgpCnsKICByZXR1cm4geC5yZWFsICgpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZM
VD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoY29uc3QgY29tcGxleDxfRkxUPiYg
eCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoY29uc3Qg
Y29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkKewogIHJldHVybiBjb21w
bGV4PF9GTFQ+IChyZWFsICh4KSArIHJlYWwgKHkpLCBpbWFnICh4KSArIGltYWcgKHkpKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yICsgKGNv
bnN0IGNvbXBsZXg8X0ZMVD4mIHgsIF9GTFQgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoY29u
c3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KQp7CiAgcmV0dXJuIGNvbXBsZXg8X0ZMVD4gKHJl
YWwgKHgpICsgeSwgaW1hZyAoeCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNv
bXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKyAoX0ZMVCB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBf
X2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29t
cGxleDxfRkxUPgpvcGVyYXRvciArIChfRkxUIHgsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHkpCnsK
ICByZXR1cm4gY29tcGxleDxfRkxUPiAoeCArIHJlYWwgKHkpLCBpbWFnICh5KSk7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVyYXRvciAtIChjb25zdCBj
b21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBfX2F0dHJpYnV0ZV9fICgo
Y29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVy
YXRvciAtIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KQp7
CiAgcmV0dXJuIGNvbXBsZXg8X0ZMVD4gKHJlYWwgKHgpIC0gcmVhbCAoeSksIGltYWcgKHgpIC0g
aW1hZyAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4K
b3BlcmF0b3IgLSAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KSBfX2F0dHJpYnV0ZV9f
ICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpv
cGVyYXRvciAtIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpCnsKICByZXR1cm4gY29t
cGxleDxfRkxUPiAocmVhbCAoeCkgLSB5LCBpbWFnICh4KSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
RkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVyYXRvciAtIChfRkxUIHgsIGNvbnN0IGNvbXBs
ZXg8X0ZMVD4mIHkpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9G
TFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yIC0gKF9GTFQgeCwgY29uc3QgY29tcGxl
eDxfRkxUPiYgeSkKewogIHJldHVybiBjb21wbGV4PF9GTFQ+ICh4IC0gcmVhbCAoeSksIC0gaW1h
ZyAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3Bl
cmF0b3IgKiAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkg
X19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNv
bXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29t
cGxleDxfRkxUPiYgeSkKewogIHJldHVybiBjb21wbGV4PF9GTFQ+IChyZWFsICh4KSAqIHJlYWwg
KHkpIC0gaW1hZyAoeCkgKiBpbWFnICh5KSwKCQkJICAgcmVhbCAoeCkgKiBpbWFnICh5KSArIGlt
YWcgKHgpICogcmVhbCAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBs
ZXg8X0ZMVD4Kb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KSBfX2F0
dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxl
eDxfRkxUPgpvcGVyYXRvciAqIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpCnsKICBy
ZXR1cm4gY29tcGxleDxfRkxUPiAocmVhbCAoeCkgKiB5LCBpbWFnICh4KSAqIHkpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4Kb3BlcmF0b3IgKiAoX0ZMVCB4
LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBs
YXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpvcGVyYXRvciAqIChfRkxUIHgs
IGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHkpCnsKICByZXR1cm4gY29tcGxleDxfRkxUPiAoeCAqIHJl
YWwgKHkpLCB4ICogaW1hZyAoeSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxf
RkxUPgpvcGVyYXRvciAvIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpIF9fYXR0cmli
dXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4Kb3Bl
cmF0b3IgLyAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgX0ZMVCB5KQp7CiAgcmV0dXJuIGNvbXBs
ZXg8X0ZMVD4gKHJlYWwgKHgpIC8geSwgaW1hZyAoeCkgLyB5KTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yICsgKGNvbnN0IGNvbXBsZXg8X0ZM
VD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlu
bGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9yICsgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpCnsK
ICByZXR1cm4geDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+
Cm9wZXJhdG9yIC0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25z
dCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+Cm9wZXJhdG9y
IC0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpCnsKICByZXR1cm4gY29tcGxleDxfRkxUPiAoLXJl
YWwgKHgpLCAtaW1hZyAoeCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wK
b3BlcmF0b3IgPT0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgsIGNvbnN0IGNvbXBsZXg8X0ZMVD4m
IHkpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGlu
ZSBib29sCm9wZXJhdG9yID09IChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4
PF9GTFQ+JiB5KQp7CiAgcmV0dXJuIHJlYWwgKHgpID09IHJlYWwgKHkpICYmIGltYWcgKHgpID09
IGltYWcgKHkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3Ig
PT0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgsIF9GTFQgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0
KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3IgPT0gKGNvbnN0
IGNvbXBsZXg8X0ZMVD4mIHgsIF9GTFQgeSkKewogIHJldHVybiByZWFsICh4KSA9PSB5ICYmIGlt
YWcgKHgpID09IDA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgYm9vbApvcGVyYXRv
ciA9PSAoX0ZMVCB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgYm9vbApvcGVyYXRvciA9PSAoX0ZM
VCB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KQp7CiAgcmV0dXJuIHggPT0gcmVhbCAoeSkgJiYg
aW1hZyAoeSkgPT0gMDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBib29sCm9wZXJh
dG9yICE9IChjb25zdCBjb21wbGV4PF9GTFQ+JiB4LCBjb25zdCBjb21wbGV4PF9GTFQ+JiB5KSBf
X2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgYm9v
bApvcGVyYXRvciAhPSAoY29uc3QgY29tcGxleDxfRkxUPiYgeCwgY29uc3QgY29tcGxleDxfRkxU
PiYgeSkKewogIHJldHVybiByZWFsICh4KSAhPSByZWFsICh5KSB8fCBpbWFnICh4KSAhPSBpbWFn
ICh5KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBib29sCm9wZXJhdG9yICE9IChj
b25zdCBjb21wbGV4PF9GTFQ+JiB4LCBfRkxUIHkpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBib29sCm9wZXJhdG9yICE9IChjb25zdCBjb21w
bGV4PF9GTFQ+JiB4LCBfRkxUIHkpCnsKICByZXR1cm4gcmVhbCAoeCkgIT0geSB8fCBpbWFnICh4
KSAhPSAwOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3IgIT0g
KF9GTFQgeCwgY29uc3QgY29tcGxleDxfRkxUPiYgeSkgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGJvb2wKb3BlcmF0b3IgIT0gKF9GTFQgeCwg
Y29uc3QgY29tcGxleDxfRkxUPiYgeSkKewogIHJldHVybiB4ICE9IHJlYWwgKHkpIHx8IGltYWcg
KHkpICE9IDA7Cn0KCiAKZXh0ZXJuICJDIiBkb3VibGUgaHlwb3QgKGRvdWJsZSwgZG91YmxlKSBf
X2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBpbmxpbmUgX0ZM
VAphYnMgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCmFicyAoY29uc3QgY29tcGxleDxfRkxU
PiYgeCkKewogIHJldHVybiBoeXBvdCAocmVhbCAoeCksIGltYWcgKHgpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCmFyZyAoY29uc3QgY29tcGxleDxfRkxUPiYgeCkgX19h
dHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIF9GTFQK
YXJnIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4KQp7CiAgcmV0dXJuIGF0YW4yIChpbWFnICh4KSwg
cmVhbCAoeCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gaW5saW5lIGNvbXBsZXg8X0ZMVD4K
cG9sYXIgKF9GTFQgciwgX0ZMVCB0KSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRl
IDxjbGFzcyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpwb2xhciAoX0ZMVCByLCBfRkxUIHQp
CnsKICByZXR1cm4gY29tcGxleDxfRkxUPiAociAqIGNvcyAodCksIHIgKiBzaW4gKHQpKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBjb21wbGV4PF9GTFQ+CmNvbmogKGNvbnN0IGNv
bXBsZXg8X0ZMVD4mIHgpICBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCnRlbXBsYXRlIDxjbGFz
cyBfRkxUPiBpbmxpbmUgY29tcGxleDxfRkxUPgpjb25qIChjb25zdCBjb21wbGV4PF9GTFQ+JiB4
KSAKewogIHJldHVybiBjb21wbGV4PF9GTFQ+IChyZWFsICh4KSwgLWltYWcgKHgpKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9GTFQ+IGlubGluZSBfRkxUCm5vcm0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4m
IHgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGlubGlu
ZSBfRkxUCm5vcm0gKGNvbnN0IGNvbXBsZXg8X0ZMVD4mIHgpCnsKICByZXR1cm4gcmVhbCAoeCkg
KiByZWFsICh4KSArIGltYWcgKHgpICogaW1hZyAoeCk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBf
RkxUPiBjb21wbGV4PF9GTFQ+CiAgb3BlcmF0b3IgLyAoY29uc3QgY29tcGxleDxfRkxUPiYsIGNv
bnN0IGNvbXBsZXg8X0ZMVD4mKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKdGVtcGxhdGUgPGNs
YXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4KICBvcGVyYXRvciAvIChfRkxULCBjb25zdCBjb21wbGV4
PF9GTFQ+JikgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7CnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBj
b21wbGV4PF9GTFQ+CiAgY29zIChjb25zdCBjb21wbGV4PF9GTFQ+JikgX19hdHRyaWJ1dGVfXyAo
KGNvbnN0KSk7CnRlbXBsYXRlIDxjbGFzcyBfRkxUPiBjb21wbGV4PF9GTFQ+CiAgY29zaCAoY29u
c3QgY29tcGxleDxfRkxUPiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xh
c3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIGV4cCAoY29uc3QgY29tcGxleDxfRkxUPiYpIF9fYXR0
cmlidXRlX18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgog
IGxvZyAoY29uc3QgY29tcGxleDxfRkxUPiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIHBvdyAoY29uc3QgY29tcGxleDxfRkxU
PiYsIGNvbnN0IGNvbXBsZXg8X0ZMVD4mKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKdGVtcGxh
dGUgPGNsYXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4KICBwb3cgKGNvbnN0IGNvbXBsZXg8X0ZMVD4m
LCBfRkxUKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGNv
bXBsZXg8X0ZMVD4KICBwb3cgKGNvbnN0IGNvbXBsZXg8X0ZMVD4mLCBpbnQpIF9fYXR0cmlidXRl
X18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIHBvdyAo
X0ZMVCwgY29uc3QgY29tcGxleDxfRkxUPiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxleDxfRkxUPgogIHNpbiAoY29uc3QgY29tcGxleDxfRkxU
PiYpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ZMVD4gY29tcGxl
eDxfRkxUPgogIHNpbmggKGNvbnN0IGNvbXBsZXg8X0ZMVD4mKSBfX2F0dHJpYnV0ZV9fICgoY29u
c3QpKTsKdGVtcGxhdGUgPGNsYXNzIF9GTFQ+IGNvbXBsZXg8X0ZMVD4KICBzcXJ0IChjb25zdCBj
b21wbGV4PF9GTFQ+JikgX19hdHRyaWJ1dGVfXyAoKGNvbnN0KSk7Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0ZMVD4gaXN0cmVhbSYgb3BlcmF0b3IgPj4gKGlzdHJlYW0mLCBjb21wbGV4PF9GTFQ+Jik7CnRl
bXBsYXRlIDxjbGFzcyBfRkxUPiBvc3RyZWFtJiBvcGVyYXRvciA8PCAob3N0cmVhbSYsIGNvbnN0
IGNvbXBsZXg8X0ZMVD4mKTsKfSAgCgogCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL2Zjb21wbGV4LmgiIDEgMwogCiAKCiAKIAogCiAKIAoK
IAogCiAKIAoKIAogCiAKCiAKIAogCiAKIAoKIAogCgoKI2RlZmluZSBfX0ZDT01QTEVYX18KCgoj
cHJhZ21hIGludGVyZmFjZSAiZmNvbXBsZXgiCgoKZXh0ZXJuICJDKysiIHsKY2xhc3MgY29tcGxl
eDxmbG9hdD4KewpwdWJsaWM6CiAgY29tcGxleCAoZmxvYXQgciA9IDAsIGZsb2F0IGkgPSAwKTog
cmUgKHIpLCBpbSAoaSkgeyB9CiAgZXhwbGljaXQgY29tcGxleCAoY29uc3QgY29tcGxleDxkb3Vi
bGU+JiByKTsKICBleHBsaWNpdCBjb21wbGV4IChjb25zdCBjb21wbGV4PGxvbmcgZG91YmxlPiYg
cik7CgogIGNvbXBsZXgmIG9wZXJhdG9yKz0gKGNvbnN0IGNvbXBsZXgmIHIpIHsgcmV0dXJuIF9f
ZG9hcGwgKHRoaXMsIHIpOyB9CiAgY29tcGxleCYgb3BlcmF0b3ItPSAoY29uc3QgY29tcGxleCYg
cikgeyByZXR1cm4gX19kb2FtaSAodGhpcywgcik7IH0KICBjb21wbGV4JiBvcGVyYXRvcio9IChj
b25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2RvYW1sICh0aGlzLCByKTsgfQogIGNvbXBsZXgm
IG9wZXJhdG9yLz0gKGNvbnN0IGNvbXBsZXgmIHIpIHsgcmV0dXJuIF9fZG9hZHYgKHRoaXMsIHIp
OyB9CgogIGZsb2F0IHJlYWwgKCkgY29uc3QgeyByZXR1cm4gcmU7IH0KICBmbG9hdCBpbWFnICgp
IGNvbnN0IHsgcmV0dXJuIGltOyB9CnByaXZhdGU6CiAgZmxvYXQgcmUsIGltOwoKICBmcmllbmQg
Y29tcGxleCYgX19kb2FwbDw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKICBmcmllbmQg
Y29tcGxleCYgX19kb2FtaTw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKICBmcmllbmQg
Y29tcGxleCYgX19kb2FtbDw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKICBmcmllbmQg
Y29tcGxleCYgX19kb2Fkdjw+IChjb21wbGV4ICosIGNvbnN0IGNvbXBsZXgmKTsKCgogIGZyaWVu
ZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciArIChjb25zdCBjb21wbGV4JiB4LCBmbG9hdCB5KQog
ICAgeyByZXR1cm4gb3BlcmF0b3IrPD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBjb21wbGV4
IG9wZXJhdG9yICsgKGZsb2F0IHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVy
YXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLSAoY29u
c3QgY29tcGxleCYgeCwgZmxvYXQgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yLTw+ICh4LCB5KTsg
fQogIGZyaWVuZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAtIChmbG9hdCB4LCBjb25zdCBjb21w
bGV4JiB5KQogICAgeyByZXR1cm4gb3BlcmF0b3ItPD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGlu
ZSBjb21wbGV4IG9wZXJhdG9yICogKGNvbnN0IGNvbXBsZXgmIHgsIGZsb2F0IHkpCiAgICB7IHJl
dHVybiBvcGVyYXRvcio8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0
b3IgKiAoZmxvYXQgeCwgY29uc3QgY29tcGxleCYgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yKjw+
ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAvIChjb25zdCBjb21w
bGV4JiB4LCBmbG9hdCB5KQogICAgeyByZXR1cm4gb3BlcmF0b3IvPD4gKHgsIHkpOyB9CiAgZnJp
ZW5kIGlubGluZSBjb21wbGV4IG9wZXJhdG9yIC8gKGZsb2F0IHgsIGNvbnN0IGNvbXBsZXgmIHkp
CiAgICB7IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGJvb2wg
b3BlcmF0b3IgPT0gKGNvbnN0IGNvbXBsZXgmIHgsIGZsb2F0IHkpCiAgICB7IHJldHVybiBvcGVy
YXRvcj09PD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yID09IChmbG9h
dCB4LCBjb25zdCBjb21wbGV4JiB5KQogICAgeyByZXR1cm4gb3BlcmF0b3I9PTw+ICh4LCB5KTsg
fQogIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgY29tcGxleCYgeCwgZmxv
YXQgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yIT08PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5l
IGJvb2wgb3BlcmF0b3IgIT0gKGZsb2F0IHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVy
biBvcGVyYXRvciE9PD4gKHgsIHkpOyB9Cgp9Owp9ICAKCgojIDM5NiAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8y
Ljk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGQvY29tcGxleHQuaCIgMiAzCgojIDEg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL2Rjb21w
bGV4LmgiIDEgMwogCiAKCiAKIAogCiAKIAoKIAogCiAKIAoKIAogCiAKCiAKIAogCiAKIAoKIAog
CgoKI2RlZmluZSBfX0RDT01QTEVYX18KCgojcHJhZ21hIGludGVyZmFjZSAiZGNvbXBsZXgiCgoK
ZXh0ZXJuICJDKysiIHsKY2xhc3MgY29tcGxleDxkb3VibGU+CnsKcHVibGljOgogIGNvbXBsZXgg
KGRvdWJsZSByID0gMCwgZG91YmxlIGkgPSAwKTogcmUgKHIpLCBpbSAoaSkgeyB9CiAgY29tcGxl
eCAoY29uc3QgY29tcGxleDxmbG9hdD4mIHIpOiByZSAoci5yZWFsICgpKSwgaW0gKHIuaW1hZyAo
KSkgeyB9CiAgZXhwbGljaXQgY29tcGxleCAoY29uc3QgY29tcGxleDxsb25nIGRvdWJsZT4mIHIp
OwoKICBjb21wbGV4JiBvcGVyYXRvcis9IChjb25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2Rv
YXBsICh0aGlzLCByKTsgfQogIGNvbXBsZXgmIG9wZXJhdG9yLT0gKGNvbnN0IGNvbXBsZXgmIHIp
IHsgcmV0dXJuIF9fZG9hbWkgKHRoaXMsIHIpOyB9CiAgY29tcGxleCYgb3BlcmF0b3IqPSAoY29u
c3QgY29tcGxleCYgcikgeyByZXR1cm4gX19kb2FtbCAodGhpcywgcik7IH0KICBjb21wbGV4JiBv
cGVyYXRvci89IChjb25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2RvYWR2ICh0aGlzLCByKTsg
fQoKICBkb3VibGUgcmVhbCAoKSBjb25zdCB7IHJldHVybiByZTsgfQogIGRvdWJsZSBpbWFnICgp
IGNvbnN0IHsgcmV0dXJuIGltOyB9CnByaXZhdGU6CiAgZG91YmxlIHJlLCBpbTsKCiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hcGw8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hbWk8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hbWw8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CiAgZnJpZW5k
IGNvbXBsZXgmIF9fZG9hZHY8PiAoY29tcGxleCAqLCBjb25zdCBjb21wbGV4Jik7CgoKICBmcmll
bmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgKyAoY29uc3QgY29tcGxleCYgeCwgZG91YmxlIHkp
CiAgICB7IHJldHVybiBvcGVyYXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBs
ZXggb3BlcmF0b3IgKyAoZG91YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBv
cGVyYXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLSAo
Y29uc3QgY29tcGxleCYgeCwgZG91YmxlIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci08PiAoeCwg
eSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLSAoZG91YmxlIHgsIGNvbnN0
IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci08PiAoeCwgeSk7IH0KICBmcmllbmQg
aW5saW5lIGNvbXBsZXggb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleCYgeCwgZG91YmxlIHkpCiAg
ICB7IHJldHVybiBvcGVyYXRvcio8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXgg
b3BlcmF0b3IgKiAoZG91YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVy
YXRvcio8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLyAoY29u
c3QgY29tcGxleCYgeCwgZG91YmxlIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7
IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgLyAoZG91YmxlIHgsIGNvbnN0IGNv
bXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7IH0KICBmcmllbmQgaW5s
aW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGNvbXBsZXgmIHgsIGRvdWJsZSB5KQogICAgeyBy
ZXR1cm4gb3BlcmF0b3I9PTw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRv
ciA9PSAoZG91YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvcj09
PD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBjb21w
bGV4JiB4LCBkb3VibGUgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yIT08PiAoeCwgeSk7IH0KICBm
cmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGRvdWJsZSB4LCBjb25zdCBjb21wbGV4JiB5
KQogICAgeyByZXR1cm4gb3BlcmF0b3IhPTw+ICh4LCB5KTsgfQoKfTsKCmlubGluZSBjb21wbGV4
PGZsb2F0Pjo6Y29tcGxleCAoY29uc3QgY29tcGxleDxkb3VibGU+JiByKQo6IHJlIChyLnJlYWwg
KCkpLCBpbSAoci5pbWFnICgpKQp7IH0KfSAgCgoKIyAzOTcgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4z
Ly4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RkL2NvbXBsZXh0LmgiIDIgMwoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMt
bGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0ZC9sZGNvbXBsZXgu
aCIgMSAzCiAKIAoKIAogCiAKIAogCgogCiAKIAogCgogCiAKIAoKIAogCiAKIAogCgogCiAKCgoj
ZGVmaW5lIF9fTERDT01QTEVYX18KCgojcHJhZ21hIGludGVyZmFjZSAibGRjb21wbGV4IgoKCmV4
dGVybiAiQysrIiB7CmNsYXNzIGNvbXBsZXg8bG9uZyBkb3VibGU+CnsKcHVibGljOgogIGNvbXBs
ZXggKGxvbmcgZG91YmxlIHIgPSAwLCBsb25nIGRvdWJsZSBpID0gMCk6IHJlIChyKSwgaW0gKGkp
IHsgfQogIGNvbXBsZXggKGNvbnN0IGNvbXBsZXg8ZmxvYXQ+JiByKTogcmUgKHIucmVhbCAoKSks
IGltIChyLmltYWcgKCkpIHsgfQogIGNvbXBsZXggKGNvbnN0IGNvbXBsZXg8ZG91YmxlPiYgcik6
IHJlIChyLnJlYWwgKCkpLCBpbSAoci5pbWFnICgpKSB7IH0KCiAgY29tcGxleCYgb3BlcmF0b3Ir
PSAoY29uc3QgY29tcGxleCYgcikgeyByZXR1cm4gX19kb2FwbCAodGhpcywgcik7IH0KICBjb21w
bGV4JiBvcGVyYXRvci09IChjb25zdCBjb21wbGV4JiByKSB7IHJldHVybiBfX2RvYW1pICh0aGlz
LCByKTsgfQogIGNvbXBsZXgmIG9wZXJhdG9yKj0gKGNvbnN0IGNvbXBsZXgmIHIpIHsgcmV0dXJu
IF9fZG9hbWwgKHRoaXMsIHIpOyB9CiAgY29tcGxleCYgb3BlcmF0b3IvPSAoY29uc3QgY29tcGxl
eCYgcikgeyByZXR1cm4gX19kb2FkdiAodGhpcywgcik7IH0KCiAgbG9uZyBkb3VibGUgcmVhbCAo
KSBjb25zdCB7IHJldHVybiByZTsgfQogIGxvbmcgZG91YmxlIGltYWcgKCkgY29uc3QgeyByZXR1
cm4gaW07IH0KcHJpdmF0ZToKICBsb25nIGRvdWJsZSByZSwgaW07CgogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYXBsPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYW1pPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYW1sPD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwogIGZyaWVuZCBjb21wbGV4
JiBfX2RvYWR2PD4gKGNvbXBsZXggKiwgY29uc3QgY29tcGxleCYpOwoKCiAgZnJpZW5kIGlubGlu
ZSBjb21wbGV4IG9wZXJhdG9yICsgKGNvbnN0IGNvbXBsZXgmIHgsIGxvbmcgZG91YmxlIHkpCiAg
ICB7IHJldHVybiBvcGVyYXRvcis8PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXgg
b3BlcmF0b3IgKyAobG9uZyBkb3VibGUgeCwgY29uc3QgY29tcGxleCYgeSkKICAgIHsgcmV0dXJu
IG9wZXJhdG9yKzw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAt
IChjb25zdCBjb21wbGV4JiB4LCBsb25nIGRvdWJsZSB5KQogICAgeyByZXR1cm4gb3BlcmF0b3It
PD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBjb21wbGV4IG9wZXJhdG9yIC0gKGxvbmcgZG91
YmxlIHgsIGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvci08PiAoeCwgeSk7
IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3BlcmF0b3IgKiAoY29uc3QgY29tcGxleCYgeCwg
bG9uZyBkb3VibGUgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yKjw+ICh4LCB5KTsgfQogIGZyaWVu
ZCBpbmxpbmUgY29tcGxleCBvcGVyYXRvciAqIChsb25nIGRvdWJsZSB4LCBjb25zdCBjb21wbGV4
JiB5KQogICAgeyByZXR1cm4gb3BlcmF0b3IqPD4gKHgsIHkpOyB9CiAgZnJpZW5kIGlubGluZSBj
b21wbGV4IG9wZXJhdG9yIC8gKGNvbnN0IGNvbXBsZXgmIHgsIGxvbmcgZG91YmxlIHkpCiAgICB7
IHJldHVybiBvcGVyYXRvci88PiAoeCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGNvbXBsZXggb3Bl
cmF0b3IgLyAobG9uZyBkb3VibGUgeCwgY29uc3QgY29tcGxleCYgeSkKICAgIHsgcmV0dXJuIG9w
ZXJhdG9yLzw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29u
c3QgY29tcGxleCYgeCwgbG9uZyBkb3VibGUgeSkKICAgIHsgcmV0dXJuIG9wZXJhdG9yPT08PiAo
eCwgeSk7IH0KICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGxvbmcgZG91YmxlIHgs
IGNvbnN0IGNvbXBsZXgmIHkpCiAgICB7IHJldHVybiBvcGVyYXRvcj09PD4gKHgsIHkpOyB9CiAg
ZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBjb21wbGV4JiB4LCBsb25nIGRv
dWJsZSB5KQogICAgeyByZXR1cm4gb3BlcmF0b3IhPTw+ICh4LCB5KTsgfQogIGZyaWVuZCBpbmxp
bmUgYm9vbCBvcGVyYXRvciAhPSAobG9uZyBkb3VibGUgeCwgY29uc3QgY29tcGxleCYgeSkKICAg
IHsgcmV0dXJuIG9wZXJhdG9yIT08PiAoeCwgeSk7IH0KCn07CgppbmxpbmUgY29tcGxleDxmbG9h
dD46OmNvbXBsZXggKGNvbnN0IGNvbXBsZXg8bG9uZyBkb3VibGU+JiByKQo6IHJlIChyLnJlYWwg
KCkpLCBpbSAoci5pbWFnICgpKQp7IH0KCmlubGluZSBjb21wbGV4PGRvdWJsZT46OmNvbXBsZXgg
KGNvbnN0IGNvbXBsZXg8bG9uZyBkb3VibGU+JiByKQo6IHJlIChyLnJlYWwgKCkpLCBpbSAoci5p
bWFnICgpKQp7IH0KfSAgCgoKIyAzOTggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RkL2NvbXBsZXh0LmgiIDIgMwoKCgojIDcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUv
Mi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY29tcGxleCIgMiAzCgoKZXh0ZXJuICJD
KysiIHsKI2RlZmluZSBfX1NURF9DT01QTEVYCgogCnR5cGVkZWYgY29tcGxleDxmbG9hdD4gZmxv
YXRfY29tcGxleDsKdHlwZWRlZiBjb21wbGV4PGRvdWJsZT4gZG91YmxlX2NvbXBsZXg7CnR5cGVk
ZWYgY29tcGxleDxsb25nIGRvdWJsZT4gbG9uZ19kb3VibGVfY29tcGxleDsKfQoKCiMgOTQgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9ibGl0ei5oIiAyCgoKCiNkZWZp
bmUgQlpfVEhST1cgICAgICAgICAgICAgICAgICAgICAKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgoK
IHVzaW5nIG5hbWVzcGFjZSAgc3RkIDsgCgoKCgoKCiAjZGVmaW5lIF9iel9nbG9iYWwgZXh0ZXJu
CiAjZGVmaW5lIEJaX0dMT0JBTF9JTklUKFgpIAoKCn0gCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9iemRlYnVnLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9ERUJVR19ICgoKIyAx
ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKCiN1
bmRlZiAJX0FTU0VSVF9ICiN1bmRlZiAJYXNzZXJ0CgoKCgoKCgojZGVmaW5lIAlfQVNTRVJUX0gJ
MQoKCiAKCgoKCiMgNTYgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMwoKCmV4dGVybiAiQyIgeyAK
CiAKZXh0ZXJuIHZvaWQgX19hc3NlcnRfZmFpbCAgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24s
CgkJCQlfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCXVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQlf
X2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAo
KF9fbm9yZXR1cm5fXykpOwoKIApleHRlcm4gdm9pZCBfX2Fzc2VydF9wZXJyb3JfZmFpbCAgKGlu
dCBfX2Vycm51bSwKCQkJCSAgICAgICBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKCQkJCSAgICAgICB1
bnNpZ25lZCBpbnQgX19saW5lLAoJCQkJICAgICAgIF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikg
IHRocm93ICgpICAKICAgICBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Cgp9IAoKI2Rl
ZmluZSBhc3NlcnQoZXhwcikJKCh2b2lkKSAoKGV4cHIpID8gMCA6CShfX2Fzc2VydF9mYWlsIChf
X1NUUklORyhleHByKSwJX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTiksIDAp
KSkKCgoKCgoKCgoKCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiMgNTcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9iemRlYnVnLmgiIDIKCgoKIAojIDEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zL2luY2x1ZGUvdHlwZWluZm8iIDEgMwogCiAKCgojZGVmaW5lIF9fVFlQRUlO
Rk9fXwoKI3ByYWdtYSBpbnRlcmZhY2UgInR5cGVpbmZvIgoKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL2V4Y2VwdGlvbiIgMSAzCiAKIAoKCiNkZWZpbmUgX19FWENFUFRJT05fXwoK
I3ByYWdtYSBpbnRlcmZhY2UgImV4Y2VwdGlvbiIKCmV4dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ug
c3RkIHsKCmNsYXNzIGV4Y2VwdGlvbiB7CnB1YmxpYzoKICBleGNlcHRpb24gKCkgeyB9CiAgdmly
dHVhbCB+ZXhjZXB0aW9uICgpIHsgfQogIHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCAoKSBjb25z
dDsKfTsKCmNsYXNzIGJhZF9leGNlcHRpb24gOiBwdWJsaWMgZXhjZXB0aW9uIHsKcHVibGljOgog
IGJhZF9leGNlcHRpb24gKCkgeyB9CiAgdmlydHVhbCB+YmFkX2V4Y2VwdGlvbiAoKSB7IH0KfTsK
CnR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAoKTsKdHlwZWRlZiB2b2lkICgqdW5l
eHBlY3RlZF9oYW5kbGVyKSAoKTsKCnRlcm1pbmF0ZV9oYW5kbGVyIHNldF90ZXJtaW5hdGUgKHRl
cm1pbmF0ZV9oYW5kbGVyKTsKdm9pZCB0ZXJtaW5hdGUgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwp1bmV4cGVjdGVkX2hhbmRsZXIgc2V0X3VuZXhwZWN0ZWQgKHVuZXhwZWN0ZWRf
aGFuZGxlcik7CnZvaWQgdW5leHBlY3RlZCAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CmJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uICgpOwoKfSAgCgp9ICAKCgojIDkgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zL2luY2x1ZGUvdHlwZWluZm8iIDIgMwoKCmV4dGVybiAiQysrIiB7CgpuYW1l
c3BhY2Ugc3RkIHsKCmNsYXNzIHR5cGVfaW5mbyB7CnByaXZhdGU6CiAgIAogIHR5cGVfaW5mbyYg
b3BlcmF0b3I9IChjb25zdCB0eXBlX2luZm8mKTsKICB0eXBlX2luZm8gKGNvbnN0IHR5cGVfaW5m
byYpOwoKcHJvdGVjdGVkOgogIGV4cGxpY2l0IHR5cGVfaW5mbyAoY29uc3QgY2hhciAqbik6IF9u
YW1lIChuKSB7IH0KCiAgY29uc3QgY2hhciAqX25hbWU7CgpwdWJsaWM6CiAgIAogIHZpcnR1YWwg
fnR5cGVfaW5mbyAoKTsKICAgIAogIGJvb2wgYmVmb3JlIChjb25zdCB0eXBlX2luZm8mIGFyZykg
Y29uc3Q7CiAgY29uc3QgY2hhciogbmFtZSAoKSBjb25zdAogICAgeyByZXR1cm4gX25hbWU7IH0K
ICBib29sIG9wZXJhdG9yPT0gKGNvbnN0IHR5cGVfaW5mbyYgYXJnKSBjb25zdDsKICBib29sIG9w
ZXJhdG9yIT0gKGNvbnN0IHR5cGVfaW5mbyYgYXJnKSBjb25zdDsKfTsKCmlubGluZSBib29sIHR5
cGVfaW5mbzo6Cm9wZXJhdG9yIT0gKGNvbnN0IHR5cGVfaW5mbyYgYXJnKSBjb25zdAp7CiAgcmV0
dXJuICFvcGVyYXRvcj09IChhcmcpOwp9CgpjbGFzcyBiYWRfY2FzdCA6IHB1YmxpYyBleGNlcHRp
b24gewpwdWJsaWM6CiAgYmFkX2Nhc3QoKSB7IH0KICB2aXJ0dWFsIH5iYWRfY2FzdCgpIHsgfQp9
OwoKY2xhc3MgYmFkX3R5cGVpZCA6IHB1YmxpYyBleGNlcHRpb24gewogcHVibGljOgogIGJhZF90
eXBlaWQgKCkgeyB9CiAgdmlydHVhbCB+YmFkX3R5cGVpZCAoKSB7IH0KfTsKCn0gIAoKfSAgCgoj
IDYwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYnpkZWJ1Zy5oIiAy
CgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCgoKZXh0ZXJuICBib29sICBhc3NlcnRGYWls
TW9kZSAgICAgIDsKZXh0ZXJuICBpbnQgICAgICBhc3NlcnRGYWlsQ291bnQgICAgIDsKZXh0ZXJu
ICBpbnQgICAgICBhc3NlcnRTdWNjZXNzQ291bnQgIDsKCgojIDE1MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2J6ZGVidWcuaCIKCiMgMTg0ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYnpkZWJ1Zy5oIgoKICAgICNkZWZpbmUgQlpBU1NF
UlQoWCkKICAgICNkZWZpbmUgQlpQUkVDT05ESVRJT04oWCkKICAgICNkZWZpbmUgQlpQT1NUQ09O
RElUSU9OKFgpCiAgICAjZGVmaW5lIEJaU1RBVEVDSEVDSyhYLFkpCiAgICAjZGVmaW5lIEJaUFJF
Q0hFQ0soWCxZKQogICAgI2RlZmluZSBCWl9QUkVfRkFJTAogICAgI2RlZmluZSBCWl9ERUJVR19N
RVNTQUdFKFgpCgoKCiAKIAp2b2lkIF9iel9kZWJ1Z19tYXJrZXIoKTsKCiNkZWZpbmUgQlpfTk9U
X0lNUExFTUVOVEVEKCkgICB7IGNlcnIgPDwgIltCbGl0eisrXSBOb3QgaW1wbGVtZW50ZWQ6IG1v
ZHVsZSAiIDw8IF9fRklMRV9fIDw8ICIgbGluZSAiIDw8IF9fTElORV9fIDw8IGVuZGw7IGV4aXQo
MSk7IH0KCgoKCiNkZWZpbmUgQlpfREVCVUdfVEVNUExBVEVfQVNfU1RSSU5HX0xJVEVSQUwoWCkg
IHR5cGVpZChYKS5uYW1lKCkKIyAyNDcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9iemRlYnVnLmgiCgoKfSAKCgojIDExNSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L2JsaXR6LmgiIDIKCgoKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCgoKCiAKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWVtYmxvY2suaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBfX0JaX01F
TUJMT0NLX0hfXwoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L251bXRyYWl0LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKI2RlZmluZSBCWl9OVU1UUkFJVF9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAg
eyAKCgoKCgoKCgojZGVmaW5lIEJaX1NVTVRZUEUoWCkgICBfYnpfdHlwZW5hbWUgTnVtZXJpY1R5
cGVUcmFpdHM8WD46OlRfc3VtdHlwZQojZGVmaW5lIEJaX0RJRkZUWVBFKFgpICBfYnpfdHlwZW5h
bWUgTnVtZXJpY1R5cGVUcmFpdHM8WD46OlRfZGlmZnR5cGUKI2RlZmluZSBCWl9GTE9BVFRZUEUo
WCkgX2J6X3R5cGVuYW1lIE51bWVyaWNUeXBlVHJhaXRzPFg+OjpUX2Zsb2F0dHlwZQojZGVmaW5l
IEJaX1NJR05FRFRZUEUoWCkgX2J6X3R5cGVuYW1lIE51bWVyaWNUeXBlVHJhaXRzPFg+OjpUX3Np
Z25lZHR5cGUKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgTnVtZXJpY1R5cGVUcmFp
dHMgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSBUX3N1bXR5cGU7ICAgICAKICAgIHR5
cGVkZWYgUF9udW10eXBlIFRfZGlmZnR5cGU7ICAgIAogICAgdHlwZWRlZiBQX251bXR5cGUgVF9m
bG9hdHR5cGU7ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIHR5
cGVkZWYgUF9udW10eXBlIFRfc2lnbmVkdHlwZTsgIAogICAgZW51bSB7IGhhc1RyaXZpYWxDdG9y
ID0gMCB9OyAgICAgCn07CgojZGVmaW5lIEJaREVDTE5VTVRSQUlUKFgsWSxaLFcsVSkgdGVtcGxh
dGU8PiBjbGFzcyBOdW1lcmljVHlwZVRyYWl0czxYPiB7IHB1YmxpYzogdHlwZWRlZiBZIFRfc3Vt
dHlwZTsgdHlwZWRlZiBaIFRfZGlmZnR5cGU7IHR5cGVkZWYgVyBUX2Zsb2F0dHlwZTsgdHlwZWRl
ZiBVIFRfc2lnbmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiMg
ODkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9udW10cmFpdC5oIgoK
CiAgICB0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNUeXBlVHJhaXRzPCBib29sID4geyBwdWJsaWM6
IHR5cGVkZWYgIHVuc2lnbmVkICBUX3N1bXR5cGU7IHR5cGVkZWYgIGludCAgVF9kaWZmdHlwZTsg
dHlwZWRlZiAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICBpbnQgIFRfc2lnbmVkdHlwZTsg
ZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9IDsKCgp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVy
aWNUeXBlVHJhaXRzPCBjaGFyID4geyBwdWJsaWM6IHR5cGVkZWYgIGludCAgVF9zdW10eXBlOyB0
eXBlZGVmICBpbnQgIFRfZGlmZnR5cGU7IHR5cGVkZWYgIGZsb2F0ICBUX2Zsb2F0dHlwZTsgdHlw
ZWRlZiAgY2hhciAgVF9zaWduZWR0eXBlOyBlbnVtIHsgaGFzVHJpdmlhbEN0b3IgPSAxIH07IH0g
Owp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNUeXBlVHJhaXRzPCB1bnNpZ25lZCBjaGFyID4geyBw
dWJsaWM6IHR5cGVkZWYgICB1bnNpZ25lZCAgVF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2Rp
ZmZ0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICBpbnQgIFRfc2ln
bmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9IDsKdGVtcGxhdGU8PiBjbGFz
cyBOdW1lcmljVHlwZVRyYWl0czwgc2hvcnQgaW50ID4geyBwdWJsaWM6IHR5cGVkZWYgICBpbnQg
IFRfc3VtdHlwZTsgdHlwZWRlZiAgIGludCAgVF9kaWZmdHlwZTsgdHlwZWRlZiAgIGZsb2F0ICBU
X2Zsb2F0dHlwZTsgdHlwZWRlZiAgIHNob3J0IGludCAgVF9zaWduZWR0eXBlOyBlbnVtIHsgaGFz
VHJpdmlhbEN0b3IgPSAxIH07IH0gOwp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNUeXBlVHJhaXRz
PCBzaG9ydCB1bnNpZ25lZCBpbnQgPiB7IHB1YmxpYzogdHlwZWRlZiAgIHVuc2lnbmVkIGludCAg
VF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2RpZmZ0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRf
ZmxvYXR0eXBlOyB0eXBlZGVmICAgaW50ICBUX3NpZ25lZHR5cGU7IGVudW0geyBoYXNUcml2aWFs
Q3RvciA9IDEgfTsgfSA7CnRlbXBsYXRlPD4gY2xhc3MgTnVtZXJpY1R5cGVUcmFpdHM8IGludCA+
IHsgcHVibGljOiB0eXBlZGVmICAgbG9uZyAgVF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2Rp
ZmZ0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICAgaW50ICBUX3Np
Z25lZHR5cGU7IGVudW0geyBoYXNUcml2aWFsQ3RvciA9IDEgfTsgfSA7CnRlbXBsYXRlPD4gY2xh
c3MgTnVtZXJpY1R5cGVUcmFpdHM8IHVuc2lnbmVkIGludCA+IHsgcHVibGljOiB0eXBlZGVmICAg
dW5zaWduZWQgbG9uZyAgVF9zdW10eXBlOyB0eXBlZGVmICAgaW50ICBUX2RpZmZ0eXBlOyB0eXBl
ZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICAgbG9uZyAgVF9zaWduZWR0eXBlOyBl
bnVtIHsgaGFzVHJpdmlhbEN0b3IgPSAxIH07IH0gOwp0ZW1wbGF0ZTw+IGNsYXNzIE51bWVyaWNU
eXBlVHJhaXRzPCBsb25nID4geyBwdWJsaWM6IHR5cGVkZWYgICBsb25nICBUX3N1bXR5cGU7IHR5
cGVkZWYgICBsb25nICBUX2RpZmZ0eXBlOyB0eXBlZGVmICAgZG91YmxlICBUX2Zsb2F0dHlwZTsg
dHlwZWRlZiAgIGxvbmcgIFRfc2lnbmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9
OyB9IDsKdGVtcGxhdGU8PiBjbGFzcyBOdW1lcmljVHlwZVRyYWl0czwgdW5zaWduZWQgbG9uZyA+
IHsgcHVibGljOiB0eXBlZGVmICAgdW5zaWduZWQgbG9uZyAgVF9zdW10eXBlOyB0eXBlZGVmICAg
bG9uZyAgVF9kaWZmdHlwZTsgdHlwZWRlZiAgIGRvdWJsZSAgVF9mbG9hdHR5cGU7IHR5cGVkZWYg
ICBsb25nICBUX3NpZ25lZHR5cGU7IGVudW0geyBoYXNUcml2aWFsQ3RvciA9IDEgfTsgfSA7CnRl
bXBsYXRlPD4gY2xhc3MgTnVtZXJpY1R5cGVUcmFpdHM8IGZsb2F0ID4geyBwdWJsaWM6IHR5cGVk
ZWYgICBkb3VibGUgIFRfc3VtdHlwZTsgdHlwZWRlZiAgIGZsb2F0ICBUX2RpZmZ0eXBlOyB0eXBl
ZGVmICAgZmxvYXQgIFRfZmxvYXR0eXBlOyB0eXBlZGVmICAgZmxvYXQgIFRfc2lnbmVkdHlwZTsg
ZW51bSB7IGhhc1RyaXZpYWxDdG9yID0gMSB9OyB9IDsKdGVtcGxhdGU8PiBjbGFzcyBOdW1lcmlj
VHlwZVRyYWl0czwgZG91YmxlID4geyBwdWJsaWM6IHR5cGVkZWYgICBkb3VibGUgIFRfc3VtdHlw
ZTsgdHlwZWRlZiAgIGRvdWJsZSAgVF9kaWZmdHlwZTsgdHlwZWRlZiAgIGRvdWJsZSAgVF9mbG9h
dHR5cGU7IHR5cGVkZWYgICBkb3VibGUgIFRfc2lnbmVkdHlwZTsgZW51bSB7IGhhc1RyaXZpYWxD
dG9yID0gMSB9OyB9IDsKCgogCiAKCgoKCn0gCgoKIyA2OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L21lbWJsb2NrLmgiIDIKCgoKIyAxICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIu
OTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNDIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2lu
Y2x1ZGUvc3RkZGVmLmgiIDMKCiMgNzEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9tZW1ibG9jay5oIiAyCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCmVudW0gcHJlZXhp
c3RpbmdNZW1vcnlQb2xpY3kgeyAKICBkdXBsaWNhdGVEYXRhLCAKICBkZWxldGVEYXRhV2hlbkRv
bmUsIAogIG5ldmVyRGVsZXRlRGF0YSAKfTsKCiAKdGVtcGxhdGU8Y2xhc3MgVF90eXBlPiBjbGFz
cyBNZW1vcnlCbG9ja1JlZmVyZW5jZTsKCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgUF90eXBlPgpj
bGFzcyBNZW1vcnlCbG9jayB7CgogICAgZnJpZW5kIGNsYXNzIE1lbW9yeUJsb2NrUmVmZXJlbmNl
PFBfdHlwZT47CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfdHlwZSBUX3R5cGU7Cgpwcm90ZWN0ZWQ6
CiAgICBNZW1vcnlCbG9jaygpCiAgICB7CiAgICAgICAgbGVuZ3RoXyA9IDA7CiAgICAgICAgZGF0
YV8gPSAwOwogICAgICAgIGRhdGFCbG9ja0FkZHJlc3NfID0gMDsKICAgICAgICByZWZlcmVuY2Vz
XyA9IDA7CiAgICB9CgogICAgZXhwbGljaXQgIE1lbW9yeUJsb2NrKHNpemVfdCBpdGVtcykKICAg
IHsKICAgICAgICBsZW5ndGhfID0gaXRlbXM7CiAgICAgICAgYWxsb2NhdGUobGVuZ3RoXyk7CgoK
CgoKCiAgICAgICAgIDsKCiAgICAgICAgcmVmZXJlbmNlc18gPSAwOwogICAgfQoKICAgIE1lbW9y
eUJsb2NrKHNpemVfdCBsZW5ndGgsIFRfdHlwZSogX19yZXN0cmljdF9fICBkYXRhKQogICAgewog
ICAgICAgIGxlbmd0aF8gPSBsZW5ndGg7CiAgICAgICAgZGF0YV8gPSBkYXRhOwogICAgICAgIGRh
dGFCbG9ja0FkZHJlc3NfID0gMDsKICAgICAgICByZWZlcmVuY2VzXyA9IDA7CiAgICB9CgogICAg
dmlydHVhbCB+TWVtb3J5QmxvY2soKQogICAgewogICAgICAgIGlmIChkYXRhQmxvY2tBZGRyZXNz
XykgCiAgICAgICAgewoKCgoKCgogICAgICAgICAgICBkZWFsbG9jYXRlKCk7CiAgICAgICAgfQog
ICAgfQoKICAgIHZvaWQgICAgICAgICAgYWRkUmVmZXJlbmNlKCkKICAgIHsgCiAgICAgICAgKyty
ZWZlcmVuY2VzXzsgCgoKCgoKCgogICAgfQoKICAgIFRfdHlwZSogX19yZXN0cmljdF9fICAgICAg
IGRhdGEoKSAKICAgIHsgCiAgICAgICAgcmV0dXJuIGRhdGFfOyAKICAgIH0KCiAgICBjb25zdCBU
X3R5cGUqIF9fcmVzdHJpY3RfXyAgZGF0YSgpICAgICAgY29uc3QKICAgIHsgCiAgICAgICAgcmV0
dXJuIGRhdGFfOyAKICAgIH0KCiAgICBzaXplX3QgICAgICAgIGxlbmd0aCgpICAgIGNvbnN0CiAg
ICB7IAogICAgICAgIHJldHVybiBsZW5ndGhfOyAKICAgIH0KCiAgICB2b2lkICAgICAgICAgICAg
ICByZW1vdmVSZWZlcmVuY2UoKQogICAgewogICAgICAgIC0tcmVmZXJlbmNlc187CgoKCgoKCiAg
ICB9CgogICAgaW50IHJlZmVyZW5jZXMoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiByZWZl
cmVuY2VzXzsKICAgIH0KCnByb3RlY3RlZDoKICAgIGlubGluZSB2b2lkIGFsbG9jYXRlKGludCBs
ZW5ndGgpOwogICAgdm9pZCBkZWFsbG9jYXRlKCk7Cgpwcml2YXRlOiAgICAKICAgIE1lbW9yeUJs
b2NrKGNvbnN0IE1lbW9yeUJsb2NrPFRfdHlwZT4mKQogICAgeyB9CgogICAgdm9pZCBvcGVyYXRv
cj0oY29uc3QgTWVtb3J5QmxvY2s8VF90eXBlPiYpCiAgICB7IH0KCnByaXZhdGU6ICAgIAogICAg
VF90eXBlICogX19yZXN0cmljdF9fICBkYXRhXzsKICAgIFRfdHlwZSAqIF9fcmVzdHJpY3RfXyAg
ZGF0YUJsb2NrQWRkcmVzc187CgoKCgogICAgaW50ICAgICByZWZlcmVuY2VzXzsKCgogICAgc2l6
ZV90ICBsZW5ndGhfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF90eXBlPgpjbGFzcyBVbm93bmVkTWVt
b3J5QmxvY2sgOiBwdWJsaWMgTWVtb3J5QmxvY2s8UF90eXBlPiB7CnB1YmxpYzoKICAgIFVub3du
ZWRNZW1vcnlCbG9jayhzaXplX3QgbGVuZ3RoLCBQX3R5cGUqIF9fcmVzdHJpY3RfXyAgZGF0YSkK
ICAgICAgICA6IE1lbW9yeUJsb2NrPFBfdHlwZT4obGVuZ3RoLGRhdGEpCiAgICB7CiAgICB9Cgog
ICAgdmlydHVhbCB+VW5vd25lZE1lbW9yeUJsb2NrKCkKICAgIHsKICAgIH0KfTsKCnRlbXBsYXRl
PGNsYXNzIFBfdHlwZT4KY2xhc3MgTnVsbE1lbW9yeUJsb2NrIDogcHVibGljIE1lbW9yeUJsb2Nr
PFBfdHlwZT4gewpwdWJsaWM6CiAgICBOdWxsTWVtb3J5QmxvY2soKQogICAgeyAKICAgICAgICAg
CiAgICAgICAgIAogICAgICAgIHRoaXMtPmFkZFJlZmVyZW5jZSgpOyAgICAgICAgCiAgICB9Cgog
ICAgdmlydHVhbCB+TnVsbE1lbW9yeUJsb2NrKCkgIAogICAgeyB9Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBQX3R5cGU+CmNsYXNzIE1lbW9yeUJsb2NrUmVmZXJlbmNlIHsKCnB1YmxpYzoKICAgIHR5cGVk
ZWYgUF90eXBlIFRfdHlwZTsKCnByb3RlY3RlZDoKICAgIFRfdHlwZSAqIF9fcmVzdHJpY3RfXyAg
ZGF0YV87Cgpwcml2YXRlOgogICAgTWVtb3J5QmxvY2s8VF90eXBlPiogYmxvY2tfOwogICAgc3Rh
dGljIE51bGxNZW1vcnlCbG9jazxUX3R5cGU+IG51bGxCbG9ja187CgpwdWJsaWM6CgogICAgTWVt
b3J5QmxvY2tSZWZlcmVuY2UoKQogICAgewogICAgICAgIGJsb2NrXyA9ICZudWxsQmxvY2tfOwog
ICAgICAgIGJsb2NrXy0+YWRkUmVmZXJlbmNlKCk7CiAgICAgICAgZGF0YV8gPSAwOwogICAgfQoK
ICAgIE1lbW9yeUJsb2NrUmVmZXJlbmNlKE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfdHlwZT4mIHJl
ZikKICAgIHsKICAgICAgICBibG9ja18gPSByZWYuYmxvY2tfOwogICAgICAgIGJsb2NrXy0+YWRk
UmVmZXJlbmNlKCk7CiAgICAgICAgZGF0YV8gPSBibG9ja18tPmRhdGEoKTsKICAgIH0KCiAgICBN
ZW1vcnlCbG9ja1JlZmVyZW5jZShNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX3R5cGU+JiByZWYsIHNp
emVfdCBvZmZzZXQpCiAgICB7CiAgICAgICAgYmxvY2tfID0gcmVmLmJsb2NrXzsKICAgICAgICBi
bG9ja18tPmFkZFJlZmVyZW5jZSgpOwogICAgICAgIGRhdGFfID0gYmxvY2tfLT5kYXRhKCkgKyBv
ZmZzZXQ7CiAgICB9CgogICAgTWVtb3J5QmxvY2tSZWZlcmVuY2Uoc2l6ZV90IGxlbmd0aCwgVF90
eXBlKiBkYXRhLCAKICAgICAgICBwcmVleGlzdGluZ01lbW9yeVBvbGljeSBkZWxldGlvblBvbGlj
eSkKICAgIHsKICAgICAgICAgCgogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAg
ICAKCiAgICAgICAgaWYgKChkZWxldGlvblBvbGljeSA9PSBuZXZlckRlbGV0ZURhdGEpIAogICAg
ICAgICAgfHwgKGRlbGV0aW9uUG9saWN5ID09IGR1cGxpY2F0ZURhdGEpKQogICAgICAgICAgICBi
bG9ja18gPSBuZXcgVW5vd25lZE1lbW9yeUJsb2NrPFRfdHlwZT4obGVuZ3RoLCBkYXRhKTsKICAg
ICAgICBlbHNlIGlmIChkZWxldGlvblBvbGljeSA9PSBkZWxldGVEYXRhV2hlbkRvbmUpCiAgICAg
ICAgICAgIGJsb2NrXyA9IG5ldyBNZW1vcnlCbG9jazxUX3R5cGU+KGxlbmd0aCwgZGF0YSk7CiAg
ICAgICAgYmxvY2tfLT5hZGRSZWZlcmVuY2UoKTsKCgoKCgoKICAgICAgICBkYXRhXyA9IGRhdGE7
CiAgICB9CgogICAgZXhwbGljaXQgIE1lbW9yeUJsb2NrUmVmZXJlbmNlKHNpemVfdCBpdGVtcykK
ICAgIHsKICAgICAgICBibG9ja18gPSBuZXcgTWVtb3J5QmxvY2s8VF90eXBlPihpdGVtcyk7CiAg
ICAgICAgYmxvY2tfLT5hZGRSZWZlcmVuY2UoKTsKICAgICAgICBkYXRhXyA9IGJsb2NrXy0+ZGF0
YSgpOwoKCgoKCgogICAgfQoKICAgIHZvaWQgYmxvY2tSZW1vdmVSZWZlcmVuY2UoKQogICAgewog
ICAgICAgIGJsb2NrXy0+cmVtb3ZlUmVmZXJlbmNlKCk7CiAgICAgICAgaWYgKChibG9ja18tPnJl
ZmVyZW5jZXMoKSA9PSAwKSAmJiAoYmxvY2tfICE9ICZudWxsQmxvY2tfKSkKICAgICAgICB7CgoK
CgoKICAgICAgICAgICAgZGVsZXRlIGJsb2NrXzsKICAgICAgICB9CiAgICB9CgogICB+TWVtb3J5
QmxvY2tSZWZlcmVuY2UoKQogICAgewogICAgICAgIGJsb2NrUmVtb3ZlUmVmZXJlbmNlKCk7CiAg
ICB9CgogICAgaW50IG51bVJlZmVyZW5jZXMoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBi
bG9ja18tPnJlZmVyZW5jZXMoKTsKICAgIH0KCnByb3RlY3RlZDoKCiAgICB2b2lkIGNoYW5nZVRv
TnVsbEJsb2NrKCkKICAgIHsKICAgICAgICBibG9ja1JlbW92ZVJlZmVyZW5jZSgpOwogICAgICAg
IGJsb2NrXyA9ICZudWxsQmxvY2tfOwogICAgICAgIGJsb2NrXy0+YWRkUmVmZXJlbmNlKCk7CiAg
ICAgICAgZGF0YV8gPSAwOwogICAgfQoKICAgIHZvaWQgY2hhbmdlQmxvY2soTWVtb3J5QmxvY2tS
ZWZlcmVuY2U8VF90eXBlPiYgcmVmLCBzaXplX3Qgb2Zmc2V0KQogICAgewogICAgICAgIGJsb2Nr
UmVtb3ZlUmVmZXJlbmNlKCk7CiAgICAgICAgYmxvY2tfID0gcmVmLmJsb2NrXzsKICAgICAgICBi
bG9ja18tPmFkZFJlZmVyZW5jZSgpOwogICAgICAgIGRhdGFfID0gYmxvY2tfLT5kYXRhKCkgKyBv
ZmZzZXQ7CiAgICB9CgogICAgdm9pZCBuZXdCbG9jayhzaXplX3QgaXRlbXMpCiAgICB7CiAgICAg
ICAgYmxvY2tSZW1vdmVSZWZlcmVuY2UoKTsKICAgICAgICBibG9ja18gPSBuZXcgTWVtb3J5Qmxv
Y2s8VF90eXBlPihpdGVtcyk7CiAgICAgICAgYmxvY2tfLT5hZGRSZWZlcmVuY2UoKTsKICAgICAg
ICBkYXRhXyA9IGJsb2NrXy0+ZGF0YSgpOwoKCgoKCiAgICB9Cgpwcml2YXRlOgogICAgdm9pZCBv
cGVyYXRvcj0oY29uc3QgTWVtb3J5QmxvY2tSZWZlcmVuY2U8VF90eXBlPiYpCiAgICB7IH0KfTsK
Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWVtYmxv
Y2suY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9NRU1CTE9DS19DQwoK
CiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWVtYmxvY2su
aCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojIDM3NSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21l
bWJsb2NrLmgiCgojIDI3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
bWVtYmxvY2suY2MiIDIKCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBsYXRlPGNs
YXNzIFBfdHlwZT4gCk51bGxNZW1vcnlCbG9jazxQX3R5cGU+IE1lbW9yeUJsb2NrUmVmZXJlbmNl
PFBfdHlwZT46Om51bGxCbG9ja187Cgp0ZW1wbGF0ZTxjbGFzcyBQX3R5cGU+CnZvaWQgTWVtb3J5
QmxvY2s8UF90eXBlPjo6ZGVhbGxvY2F0ZSgpCnsKCiAgICBkZWxldGUgW10gZGF0YUJsb2NrQWRk
cmVzc187CiMgNTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tZW1i
bG9jay5jYyIKCn0KCnRlbXBsYXRlPGNsYXNzIFBfdHlwZT4KaW5saW5lIHZvaWQgTWVtb3J5Qmxv
Y2s8UF90eXBlPjo6YWxsb2NhdGUoaW50IGxlbmd0aCkKewogICAgIDsKCiAgICAgOwoKCiAgICBk
YXRhXyA9ICBuZXcgVF90eXBlW2xlbmd0aF07CiAgICBkYXRhQmxvY2tBZGRyZXNzXyA9IGRhdGFf
OwojIDEwMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21lbWJsb2Nr
LmNjIgoKfQoKCn0gCgoKIyAzNzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9i
bGl0ei9tZW1ibG9jay5oIiAyCgoKCiMgNTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L3JhbmdlLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9SQU5HRV9ICgoKCgoKCiAKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZXhwcndyYXAuaCIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDRVhQUldSQVBf
SAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmNsYXNz
IF9iel9WZWNFeHByIHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9leHByIFRfZXhwcjsKICAgIHR5
cGVkZWYgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlIFRfbnVtdHlwZTsKCgogICAgX2J6X1Zl
Y0V4cHIoVF9leHByIGEpCiAgICAgICAgOiBpdGVyXyhhKQogICAgeyB9CgoKCgoKCgogICAgX2J6
X1ZlY0V4cHIoY29uc3QgX2J6X1ZlY0V4cHI8VF9leHByPiYgYSkKICAgICAgICA6IGl0ZXJfKGEu
aXRlcl8pCiAgICB7IH0KCgogICAgVF9udW10eXBlIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAg
ICB7IHJldHVybiBpdGVyX1tpXTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpKSBj
b25zdAogICAgeyByZXR1cm4gaXRlcl8oaSk7IH0KCiAgICBpbnQgbGVuZ3RoKGludCByZWNvbW1l
bmRlZExlbmd0aCkgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLmxlbmd0aChyZWNvbW1lbmRlZExl
bmd0aCk7IH0KCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0aENvdW50ID0gKGludCkgUF9leHBy
OjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICwKICAgICAgICAgICBfYnpfZHluYW1pY0xlbmd0aENv
dW50ID0gKGludCkgUF9leHByOjpfYnpfZHluYW1pY0xlbmd0aENvdW50ICAsCiAgICAgICAgICAg
X2J6X3N0YXRpY0xlbmd0aCA9IChpbnQpIFBfZXhwcjo6X2J6X3N0YXRpY0xlbmd0aCAgIH07Cgog
ICAgaW50IF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLl9iel9z
dWdnZXN0TGVuZ3RoKCk7IH0KCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAg
ICB7IHJldHVybiBpdGVyXy5fYnpfaGFzRmFzdEFjY2VzcygpOyB9CgogICAgVF9udW10eXBlIF9i
el9mYXN0QWNjZXNzKGludCBpKSBjb25zdAogICAgeyByZXR1cm4gaXRlcl8uX2J6X2Zhc3RBY2Nl
c3MoaSk7IH0KCnByaXZhdGU6CiAgICBfYnpfVmVjRXhwcigpOwoKICAgIFRfZXhwciBpdGVyXzsK
fTsKCn0gCgoKIyA1OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Jh
bmdlLmgiIDIKCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
d3JhcC1jbGltaXRzLmgiIDEKCiNkZWZpbmUgQlpfV1JBUF9DTElNSVRTX0gKCgogCiMgMSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9jbGltaXRzIiAxIDMK
IAogCgoKI2RlZmluZSBfX0NMSU1JVFNfXwojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1
ZGUvbGltaXRzLmgiIDEgMwogCgoKIAoKCiNkZWZpbmUgX0dDQ19MSU1JVFNfSF8KCgogCiMgMSAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMSAzCiAKCgoKCiNkZWZp
bmUgX0dDQ19ORVhUX0xJTUlUU19ICQkKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L2xpbWl0cy5oIiAxIDMKIAoKCiAKCiMgMTE0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRl
L2xpbWl0cy5oIiAzCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgX0xJQkNfTElNSVRTX0hfCTEKCgoKCiAKIyAxICIvdXNy
L2luY2x1ZGUvYml0cy9wb3NpeDFfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
CgojZGVmaW5lIAlfQklUU19QT1NJWDFfTElNX0gJMQoKCiAKCiAKI2RlZmluZSBfUE9TSVhfQUlP
X0xJU1RJT19NQVgJMgoKIAojZGVmaW5lIF9QT1NJWF9BSU9fTUFYCQkxCgogCiNkZWZpbmUgCV9Q
T1NJWF9BUkdfTUFYCQk0MDk2CgogCiNkZWZpbmUgCV9QT1NJWF9DSElMRF9NQVgJNgoKIAojZGVm
aW5lIF9QT1NJWF9ERUxBWVRJTUVSX01BWAkzMgoKIAojZGVmaW5lIAlfUE9TSVhfTElOS19NQVgJ
CTgKCiAKI2RlZmluZSAJX1BPU0lYX01BWF9DQU5PTgkyNTUKCiAKCiNkZWZpbmUgCV9QT1NJWF9N
QVhfSU5QVVQJMjU1CgogCiNkZWZpbmUgX1BPU0lYX01RX09QRU5fTUFYCTgKCiAKI2RlZmluZSBf
UE9TSVhfTVFfUFJJT19NQVgJMzIKCiAKI2RlZmluZSAJX1BPU0lYX05HUk9VUFNfTUFYCTAKCiAK
I2RlZmluZSAJX1BPU0lYX09QRU5fTUFYCQkxNgoKIAoKI2RlZmluZSAJX1BPU0lYX0ZEX1NFVFNJ
WkUJX1BPU0lYX09QRU5fTUFYCgogCiNkZWZpbmUgCV9QT1NJWF9OQU1FX01BWAkJMTQKCiAKI2Rl
ZmluZSAJX1BPU0lYX1BBVEhfTUFYCQkyNTUKCiAKI2RlZmluZSAJX1BPU0lYX1BJUEVfQlVGCQk1
MTIKCiAKI2RlZmluZSBfUE9TSVhfUlRTSUdfTUFYCTgKCiAKI2RlZmluZSBfUE9TSVhfU0VNX05T
RU1TX01BWAkyNTYKCiAKI2RlZmluZSBfUE9TSVhfU0VNX1ZBTFVFX01BWAkzMjc2NwoKIAojZGVm
aW5lIF9QT1NJWF9TSUdRVUVVRV9NQVgJMzIKCiAKI2RlZmluZSAJX1BPU0lYX1NTSVpFX01BWAkz
Mjc2NwoKIAojZGVmaW5lIAlfUE9TSVhfU1RSRUFNX01BWAk4CgogCiNkZWZpbmUgCV9QT1NJWF9U
Wk5BTUVfTUFYCTMKCiAKI2RlZmluZSAJX1BPU0lYX1FMSU1JVAkJMQoKIAoKI2RlZmluZSAJX1BP
U0lYX0hJV0FUCQlfUE9TSVhfUElQRV9CVUYKCiAKI2RlZmluZSAJX1BPU0lYX1VJT19NQVhJT1YJ
MTYKCiAKI2RlZmluZSAJX1BPU0lYX1RUWV9OQU1FX01BWAk5CgogCiNkZWZpbmUgX1BPU0lYX1RJ
TUVSX01BWAkzMgoKIAojZGVmaW5lIAlfUE9TSVhfTE9HSU5fTkFNRV9NQVgJOQoKIAojZGVmaW5l
IF9QT1NJWF9DTE9DS1JFU19NSU4JMjAwMDAwMDAKCgogCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv
bG9jYWxfbGltLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgojZGVmaW5lIF9fdW5kZWZf
TlJfT1BFTgoKCiAKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvbGltaXRzLmgiIDEgMwoKI2RlZmlu
ZSBfTElOVVhfTElNSVRTX0gKCiNkZWZpbmUgTlJfT1BFTgkJMTAyNAoKI2RlZmluZSBOR1JPVVBT
X01BWCAgICAgICAzMgkKI2RlZmluZSBBUkdfTUFYICAgICAgIDEzMTA3MgkKI2RlZmluZSBDSElM
RF9NQVggICAgICAgIDk5OSAgICAKI2RlZmluZSBPUEVOX01BWCAgICAgICAgIDI1NgkKI2RlZmlu
ZSBMSU5LX01BWCAgICAgICAgIDEyNwkKI2RlZmluZSBNQVhfQ0FOT04gICAgICAgIDI1NQkKI2Rl
ZmluZSBNQVhfSU5QVVQgICAgICAgIDI1NQkKI2RlZmluZSBOQU1FX01BWCAgICAgICAgIDI1NQkK
I2RlZmluZSBQQVRIX01BWCAgICAgICAgNDA5NQkKI2RlZmluZSBQSVBFX0JVRiAgICAgICAgNDA5
NgkKCiNkZWZpbmUgUlRTSUdfTUFYCSAgMzIKCgojIDI3ICIvdXNyL2luY2x1ZGUvYml0cy9sb2Nh
bF9saW0uaCIgMiAzCgoKIAoKI3VuZGVmIE5SX09QRU4KI3VuZGVmIF9fdW5kZWZfTlJfT1BFTgoK
CiAKI2RlZmluZSBfUE9TSVhfVEhSRUFEX0tFWVNfTUFYCTEyOAogCiNkZWZpbmUgUFRIUkVBRF9L
RVlTX01BWAkxMDI0CgogCiNkZWZpbmUgX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElP
TlMJNAogCiNkZWZpbmUgUFRIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMJX1BPU0lYX1RIUkVB
RF9ERVNUUlVDVE9SX0lURVJBVElPTlMKCiAKI2RlZmluZSBfUE9TSVhfVEhSRUFEX1RIUkVBRFNf
TUFYCTY0CiAKI2RlZmluZSBQVEhSRUFEX1RIUkVBRFNfTUFYCTEwMjQKCiAKCiNkZWZpbmUgQUlP
X1BSSU9fREVMVEFfTUFYCTIwCgogCiNkZWZpbmUgUFRIUkVBRF9TVEFDS19NSU4JMTYzODQKIyAx
MjYgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4MV9saW0uaCIgMiAzCgoKCgojZGVmaW5lIFNTSVpF
X01BWAlJTlRfTUFYCgoKCiAKCgoKCgoKCiMgMzAgIi91c3IvaW5jbHVkZS9saW1pdHMuaCIgMiAz
CgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3Bvc2l4Ml9saW0uaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgogCgoKCgojZGVmaW5lIAlfQklUU19QT1NJWDJfTElNX0gJMQoKCiAKI2RlZmluZSAJ
X1BPU0lYMl9CQ19CQVNFX01BWAkJOTkKCiAKI2RlZmluZSAJX1BPU0lYMl9CQ19ESU1fTUFYCQky
MDQ4CgogCiNkZWZpbmUgCV9QT1NJWDJfQkNfU0NBTEVfTUFYCQk5OQoKIAojZGVmaW5lIAlfUE9T
SVgyX0JDX1NUUklOR19NQVgJCTEwMDAKCiAKCgojZGVmaW5lIAlfUE9TSVgyX0NPTExfV0VJR0hU
U19NQVgJMjU1CgogCgoKI2RlZmluZSAJX1BPU0lYMl9FUVVJVl9DTEFTU19NQVgJCTI1NQoKIAoK
I2RlZmluZSAJX1BPU0lYMl9FWFBSX05FU1RfTUFYCQkzMgoKIAojZGVmaW5lIAlfUE9TSVgyX0xJ
TkVfTUFYCQkyMDQ4CgogCgojZGVmaW5lIAlfUE9TSVgyX1JFX0RVUF9NQVgJCTI1NQoKIAoKI2Rl
ZmluZSAJX1BPU0lYMl9DSEFSQ0xBU1NfTkFNRV9NQVgJMjA0OAoKCiAKCgoKCiNkZWZpbmUgCUJD
X0JBU0VfTUFYCQlfUE9TSVgyX0JDX0JBU0VfTUFYCgoKI2RlZmluZSAJQkNfRElNX01BWAkJX1BP
U0lYMl9CQ19ESU1fTUFYCgoKI2RlZmluZSAJQkNfU0NBTEVfTUFYCQlfUE9TSVgyX0JDX1NDQUxF
X01BWAoKCiNkZWZpbmUgCUJDX1NUUklOR19NQVgJCV9QT1NJWDJfQkNfU1RSSU5HX01BWAoKCiNk
ZWZpbmUgCUNPTExfV0VJR0hUU19NQVgJX1BPU0lYMl9DT0xMX1dFSUdIVFNfTUFYCgoKI2RlZmlu
ZSAJRVFVSVZfQ0xBU1NfTUFYCQlfUE9TSVgyX0VRVUlWX0NMQVNTX01BWAoKCiNkZWZpbmUgCUVY
UFJfTkVTVF9NQVgJCV9QT1NJWDJfRVhQUl9ORVNUX01BWAoKCiNkZWZpbmUgCUxJTkVfTUFYCQlf
UE9TSVgyX0xJTkVfTUFYCgoKI2RlZmluZSAJQ0hBUkNMQVNTX05BTUVfTUFYCV9QT1NJWDJfQ0hB
UkNMQVNTX05BTUVfTUFYCgoKIAojZGVmaW5lIAlSRV9EVVBfTUFYICgweDdmZmYpCgoKIyAzNCAi
L3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCgoKCgogCgoKI2RlZmluZSBNQl9MRU5fTUFY
CTYKCgogCgojIDEyMSAiL3Vzci9pbmNsdWRlL2xpbWl0cy5oIiAzCgoKCgogIAoKCgoKCgoKCiMg
MTE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL2xpbWl0cy5oIiAyIDMKCgoKCiMgNyAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zeXNsaW1pdHMuaCIgMiAzCgojdW5kZWYgX0dD
Q19ORVhUX0xJTUlUU19ICiMgMTEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0y
Ljk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvbGltaXRz
LmgiIDIgMwoKCgoKCiAKI2RlZmluZSBfTElNSVRTX0hfX18KI2RlZmluZSBfTUFDSF9NQUNITElN
SVRTX0hfCgogCgojZGVmaW5lIENIQVJfQklUIDgKCiAKCgoKCiAKCiNkZWZpbmUgU0NIQVJfTUlO
ICgtMTI4KQoKI2RlZmluZSBTQ0hBUl9NQVggMTI3CgogCgojZGVmaW5lIFVDSEFSX01BWCAyNTUK
CiAKCgoKCgoKCiNkZWZpbmUgQ0hBUl9NSU4gKC0xMjgpCgojZGVmaW5lIENIQVJfTUFYIDEyNwoK
CiAKCiAKI2RlZmluZSBTSFJUX01JTiAoLTMyNzY3LTEpCgojZGVmaW5lIFNIUlRfTUFYIDMyNzY3
CgogCgojZGVmaW5lIFVTSFJUX01BWCA2NTUzNQoKIAoKI2RlZmluZSBfX0lOVF9NQVhfXyAyMTQ3
NDgzNjQ3CgoKI2RlZmluZSBJTlRfTUlOICgtSU5UX01BWC0xKQoKI2RlZmluZSBJTlRfTUFYIF9f
SU5UX01BWF9fCgogCgojZGVmaW5lIFVJTlRfTUFYIChJTlRfTUFYICogMlUgKyAxKQoKIAoKCgoK
CiNkZWZpbmUgX19MT05HX01BWF9fIDIxNDc0ODM2NDdMCgoKCiNkZWZpbmUgTE9OR19NSU4gKC1M
T05HX01BWC0xKQoKI2RlZmluZSBMT05HX01BWCBfX0xPTkdfTUFYX18KCiAKCiNkZWZpbmUgVUxP
TkdfTUFYIChMT05HX01BWCAqIDJVTCArIDEpCgojIDEwNyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
aW5jbHVkZS9saW1pdHMuaCIgMwoKCgoKIAoKCgoKCgoKCgojIDYgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvY2xpbWl0cyIgMiAzCgoKIyA1ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovd3JhcC1jbGltaXRzLmgiIDIKCgoKCgoK
IyA2MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3JhbmdlLmgiIDIK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAogCiAKIAogCiAKIAoKZW51bSB7IGZyb21TdGFydCA9
ICgtIDIxNDc0ODM2NDcgIC0xKSAsIHRvRW5kID0gKC0gMjE0NzQ4MzY0NyAgLTEpICB9OwoKIApj
bGFzcyBSYW5nZSB7CgpwdWJsaWM6CiAgICAgCiAgICAgCiAgICAgCgogICAgdHlwZWRlZiBpbnQg
VF9udW10eXBlOwoKICAgIGVudW0geyBmcm9tU3RhcnQgPSAoLSAyMTQ3NDgzNjQ3ICAtMSkgLCB0
b0VuZCA9ICgtIDIxNDc0ODM2NDcgIC0xKSAgfTsKCiAgICBSYW5nZSgpCiAgICB7CiAgICAgICAg
Zmlyc3RfID0gZnJvbVN0YXJ0OwogICAgICAgIGxhc3RfID0gdG9FbmQ7CiAgICAgICAgc3RyaWRl
XyA9IDE7CiAgICB9CgogICAgIAoKICAgIFJhbmdlKGNvbnN0IFJhbmdlJiByKQogICAgewogICAg
ICAgIGZpcnN0XyA9IHIuZmlyc3RfOwogICAgICAgIGxhc3RfID0gci5sYXN0XzsKICAgICAgICBz
dHJpZGVfID0gci5zdHJpZGVfOwogICAgfQoKCiAgICBleHBsaWNpdCAgUmFuZ2UoaW50IHNsaWNl
UG9zaXRpb24pCiAgICB7CiAgICAgICAgZmlyc3RfID0gc2xpY2VQb3NpdGlvbjsKICAgICAgICBs
YXN0XyA9IHNsaWNlUG9zaXRpb247CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICB9CgogICAgUmFu
Z2UoaW50IGZpcnN0LCBpbnQgbGFzdCwgaW50IHN0cmlkZT0xKQogICAgICAgIDogZmlyc3RfKGZp
cnN0KSwgbGFzdF8obGFzdCksIHN0cmlkZV8oc3RyaWRlKQogICAgeyAKICAgICAgICAgOwoKCgog
ICAgICAgICA7CgogICAgfQoKICAgIGludCBmaXJzdChpbnQgbG93UmFuZ2UgPSAwKSBjb25zdAog
ICAgeyAKICAgICAgICBpZiAoZmlyc3RfID09IGZyb21TdGFydCkKICAgICAgICAgICAgcmV0dXJu
IGxvd1JhbmdlOwogICAgICAgIHJldHVybiBmaXJzdF87IAogICAgfQoKICAgIGludCBsYXN0KGlu
dCBoaWdoUmFuZ2UgPSAwKSBjb25zdAogICAgewogICAgICAgIGlmIChsYXN0XyA9PSB0b0VuZCkK
ICAgICAgICAgICAgcmV0dXJuIGhpZ2hSYW5nZTsKICAgICAgICByZXR1cm4gbGFzdF87CiAgICB9
CgogICAgdW5zaWduZWQgbGVuZ3RoKGludCByZWNvbW1lbmRlZExlbmd0aCA9IDApIGNvbnN0CiAg
ICB7CiAgICAgICAgIDsKICAgICAgICAgOwogICAgICAgICA7CiAgICAgICAgcmV0dXJuIChsYXN0
XyAtIGZpcnN0XykgLyBzdHJpZGVfICsgMTsKICAgIH0KCiAgICBpbnQgc3RyaWRlKCkgY29uc3QK
ICAgIHsgcmV0dXJuIHN0cmlkZV87IH0KCiAgICBib29sICBpc0FzY2VuZGluZ0NvbnRpZ3VvdXMo
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiAoZmlyc3RfIDw9IGxhc3RfKSAmJiAoc3RyaWRl
XyA9PSAxKTsKICAgIH0KCiAgICB2b2lkIHNldFJhbmdlKGludCBmaXJzdCwgaW50IGxhc3QsIGlu
dCBzdHJpZGU9MSkKICAgIHsKICAgICAgICAgOwoKCiAgICAgICAgIDsKICAgICAgICBmaXJzdF8g
PSBmaXJzdDsKICAgICAgICBsYXN0XyA9IGxhc3Q7CiAgICAgICAgc3RyaWRlXyA9IHN0cmlkZTsK
ICAgIH0KCiAgICBzdGF0aWMgUmFuZ2UgYWxsKCkgCiAgICB7IHJldHVybiBSYW5nZShmcm9tU3Rh
cnQsdG9FbmQsMSk7IH0KCiAgICBib29sIGlzVW5pdFN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVy
biBzdHJpZGVfID09IDE7IH0KCiAgICAgCiAgICBSYW5nZSBvcGVyYXRvci0oaW50IHNoaWZ0KSBj
b25zdAogICAgeyAKICAgICAgICAgOwogICAgICAgICA7CiAgICAgICAgcmV0dXJuIFJhbmdlKGZp
cnN0XyAtIHNoaWZ0LCBsYXN0XyAtIHNoaWZ0LCBzdHJpZGVfKTsgCiAgICB9CgogICAgUmFuZ2Ug
b3BlcmF0b3IrKGludCBzaGlmdCkgY29uc3QKICAgIHsgCiAgICAgICAgIDsKICAgICAgICAgOwog
ICAgICAgIHJldHVybiBSYW5nZShmaXJzdF8gKyBzaGlmdCwgbGFzdF8gKyBzaGlmdCwgc3RyaWRl
Xyk7IAogICAgfQoKICAgIGludCBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAg
ICAgICAgcmV0dXJuIGZpcnN0XyArIGkgKiBzdHJpZGVfOwogICAgfQoKICAgIGludCBvcGVyYXRv
cigpKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGZpcnN0XyArIGkgKiBz
dHJpZGVfOwogICAgfQoKICAgIGZyaWVuZCBpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3Ry
ZWFtJiBvcywgY29uc3QgUmFuZ2UmIHJhbmdlKQogICAgewogICAgICAgIG9zIDw8ICJSYW5nZSgi
IDw8IHJhbmdlLmZpcnN0KCkgPDwgIiwiIDw8IHJhbmdlLmxhc3QoKSA8PCAiLCIKICAgICAgICAg
ICA8PCByYW5nZS5zdHJpZGUoKSA8PCAiKSI7CgogICAgICAgIHJldHVybiBvczsKICAgIH0KCiAg
ICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgZW51bSB7IF9iel9zdGF0aWNMZW5ndGhD
b3VudCA9IDAsCiAgICAgICAgICAgX2J6X2R5bmFtaWNMZW5ndGhDb3VudCA9IDAsCiAgICAgICAg
ICAgX2J6X3N0YXRpY0xlbmd0aCA9IDAgfTsKCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2Vzcygp
IGNvbnN0CiAgICB7IHJldHVybiBzdHJpZGVfID09IDE7IH0KCiAgICBUX251bXR5cGUgX2J6X2Zh
c3RBY2Nlc3ModW5zaWduZWQgaSkgY29uc3QKICAgIHsgcmV0dXJuIGZpcnN0XyArIGk7IH0KCiAg
ICB1bnNpZ25lZCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IAogICAgICAgIHJldHVy
biBsZW5ndGgoKTsKICAgIH0KCiAgICBfYnpfVmVjRXhwcjxSYW5nZT4gX2J6X2FzVmVjRXhwcigp
IGNvbnN0CiAgICB7IHJldHVybiBfYnpfVmVjRXhwcjxSYW5nZT4oKnRoaXMpOyB9Cgpwcml2YXRl
OgogICAgaW50IGZpcnN0XywgbGFzdF8sIHN0cmlkZV87Cn07Cgp9IAoKCiMgNjAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgogCiMgMSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWMuaCIgMQogCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVElOWVZFQ19ICgoKCgoK
CgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2xpc3Rp
bml0LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoK
CiNkZWZpbmUgQlpfTElTVElOSVRfSAoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgY2xhc3MgVF9pdGVyYXRvcj4KY2xhc3MgTGlzdEluaXRpYWxpemVyIHsK
CnB1YmxpYzoKICAgIExpc3RJbml0aWFsaXplcihUX2l0ZXJhdG9yIGl0ZXIpCiAgICAgICAgOiBp
dGVyXyhpdGVyKQogICAgewogICAgfQoKICAgIExpc3RJbml0aWFsaXplcjxUX251bXR5cGUsIFRf
aXRlcmF0b3I+IG9wZXJhdG9yLChUX251bXR5cGUgeCkKICAgIHsKICAgICAgICAqaXRlcl8gPSB4
OwogICAgICAgIHJldHVybiBMaXN0SW5pdGlhbGl6ZXI8VF9udW10eXBlLCBUX2l0ZXJhdG9yPihp
dGVyXyArIDEpOwogICAgfQoKcHJpdmF0ZToKICAgIExpc3RJbml0aWFsaXplcigpOwoKcHJvdGVj
dGVkOgogICAgVF9pdGVyYXRvciBpdGVyXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNs
YXNzIFRfaXRlcmF0b3IgPSB0eXBlbmFtZSAgVF9hcnJheTo6VF9udW10eXBlKj4KY2xhc3MgTGlz
dEluaXRpYWxpemF0aW9uU3dpdGNoIHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFRf
YXJyYXk6OlRfbnVtdHlwZSBUX251bXR5cGU7CgogICAgIAogICAgIAoKICAgIExpc3RJbml0aWFs
aXphdGlvblN3aXRjaChjb25zdCBMaXN0SW5pdGlhbGl6YXRpb25Td2l0Y2g8VF9hcnJheSwKICAg
ICAgICB0eXBlbmFtZSAgVF9hcnJheTo6VF9udW10eXBlKj4mIGxpcykKICAgICAgOiBhcnJheV8o
bGlzLmFycmF5XyksIHZhbHVlXyhsaXMudmFsdWVfKSwgCiAgICAgICAgICB3aXBlT25EZXN0cnVj
dF8odHJ1ZSApCiAgICB7CiAgICAgICAgbGlzLmRpc2FibGUoKTsKICAgIH0KCiAgICBMaXN0SW5p
dGlhbGl6YXRpb25Td2l0Y2goVF9hcnJheSYgYXJyYXksIFRfbnVtdHlwZSB2YWx1ZSkKICAgICAg
ICA6IGFycmF5XyhhcnJheSksIHZhbHVlXyh2YWx1ZSksIHdpcGVPbkRlc3RydWN0Xyh0cnVlICkK
ICAgIHsgfQoKICAgIH5MaXN0SW5pdGlhbGl6YXRpb25Td2l0Y2goKQogICAgewogICAgICAgIGlm
ICh3aXBlT25EZXN0cnVjdF8pCiAgICAgICAgICAgIGFycmF5Xy5pbml0aWFsaXplKHZhbHVlXyk7
CiAgICB9CgogICAgTGlzdEluaXRpYWxpemVyPFRfbnVtdHlwZSwgVF9pdGVyYXRvcj4gb3BlcmF0
b3IsKFRfbnVtdHlwZSB4KQogICAgewogICAgICAgIHdpcGVPbkRlc3RydWN0XyA9IGZhbHNlIDsK
ICAgICAgICBUX2l0ZXJhdG9yIGl0ZXIgPSBhcnJheV8uZ2V0SW5pdGlhbGl6YXRpb25JdGVyYXRv
cigpOwogICAgICAgICppdGVyID0gdmFsdWVfOwogICAgICAgIFRfaXRlcmF0b3IgaXRlcjIgPSBp
dGVyICsgMTsKICAgICAgICAqaXRlcjIgPSB4OwogICAgICAgIHJldHVybiBMaXN0SW5pdGlhbGl6
ZXI8VF9udW10eXBlLCBUX2l0ZXJhdG9yPihpdGVyMiArIDEpOwogICAgfQoKICAgIHZvaWQgZGlz
YWJsZSgpIGNvbnN0CiAgICB7CiAgICAgICAgd2lwZU9uRGVzdHJ1Y3RfID0gZmFsc2UgOwogICAg
fQoKcHJpdmF0ZToKICAgIExpc3RJbml0aWFsaXphdGlvblN3aXRjaCgpOwoKcHJvdGVjdGVkOgog
ICAgVF9hcnJheSYgYXJyYXlfOwogICAgVF9udW10eXBlIHZhbHVlXzsKICAgIG11dGFibGUgYm9v
bCAgd2lwZU9uRGVzdHJ1Y3RfOwp9OwoKfSAKCgoKIyA0OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWMuaCIgMgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9USU5ZX0gKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKY2xhc3MgX2J6X3RpbnlCYXNlIHsKfTsKCn0gCgoKCiMgNTIgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55dmVjLmgiIDIKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aCwgaW50IE5fc3Ry
aWRlID0gIDEgICA+CmNsYXNzIFRpbnlWZWN0b3JJdGVyOwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlLCBpbnQgTl9sZW5ndGgsIGludCBOX3N0cmlkZSA9ICAxICAgPgpjbGFzcyBUaW55VmVjdG9y
SXRlckNvbnN0OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBWZWN0b3I7Cgp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmNsYXNzIF9iel9WZWNFeHByOwoKdGVtcGxhdGU8Y2xhc3MgUF9k
aXN0cmlidXRpb24+CmNsYXNzIFJhbmRvbTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xh
c3MgVmVjdG9yUGljazsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlw
ZTIsIGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnMsCiAgICBpbnQgTl92ZWNTdHJpZGU+CmNsYXNz
IF9iel9tYXRyaXhWZWN0b3JQcm9kdWN0OwoKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fbGVuZ3RoPgpjbGFzcyBUaW55VmVjdG9yIHsKCnB1YmxpYzoKICAgICAKICAgICAK
ICAgICAKCiAgICB0eXBlZGVmIFBfbnVtdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgVGlueVZlY3RvcjxUX251bXR5cGUsTl9sZW5n
dGg+ICAgICAgICAgICAgICAgVF92ZWN0b3I7CiAgICB0eXBlZGVmIFRpbnlWZWN0b3JJdGVyPFRf
bnVtdHlwZSxOX2xlbmd0aCwxPiAgICAgICAgIFRfaXRlcmF0b3I7CiAgICB0eXBlZGVmIFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8VF9udW10eXBlLE5fbGVuZ3RoLDE+ICAgIFRfY29uc3RJdGVyYXRvcjsK
ICAgIHR5cGVkZWYgVF9pdGVyYXRvciBpdGVyYXRvcjsKICAgIHR5cGVkZWYgVF9jb25zdEl0ZXJh
dG9yIGNvbnN0X2l0ZXJhdG9yOwogICAgZW51bSB7IG51bUVsZW1lbnRzID0gTl9sZW5ndGggfTsK
CiAgICBUaW55VmVjdG9yKCkKICAgIHsgfQoKICAgIH5UaW55VmVjdG9yKCkgCiAgICB7IH0KCiAg
ICBpbmxpbmUgVGlueVZlY3Rvcihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSxOX2xlbmd0aD4m
IHgpOwoKICAgIGlubGluZSBUaW55VmVjdG9yKFRfbnVtdHlwZSBpbml0VmFsdWUpOwoKICAgIFRp
bnlWZWN0b3IoVF9udW10eXBlIHgwLCBUX251bXR5cGUgeDEpCiAgICB7CiAgICAgICAgZGF0YV9b
MF0gPSB4MDsKICAgICAgICBkYXRhX1sxXSA9IHgxOwogICAgfQoKICAgIFRpbnlWZWN0b3IoVF9u
dW10eXBlIHgwLCBUX251bXR5cGUgeDEsIFRfbnVtdHlwZSB4MikKICAgIHsKICAgICAgICBkYXRh
X1swXSA9IHgwOwogICAgICAgIGRhdGFfWzFdID0geDE7CiAgICAgICAgZGF0YV9bMl0gPSB4MjsK
ICAgIH0KCiAgICBUaW55VmVjdG9yKFRfbnVtdHlwZSB4MCwgVF9udW10eXBlIHgxLCBUX251bXR5
cGUgeDIsCiAgICAgICAgVF9udW10eXBlIHgzKQogICAgewogICAgICAgIGRhdGFfWzBdID0geDA7
CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAgICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRh
dGFfWzNdID0geDM7CiAgICB9CgogICAgVGlueVZlY3RvcihUX251bXR5cGUgeDAsIFRfbnVtdHlw
ZSB4MSwgVF9udW10eXBlIHgyLAogICAgICAgIFRfbnVtdHlwZSB4MywgVF9udW10eXBlIHg0KQog
ICAgewogICAgICAgIGRhdGFfWzBdID0geDA7CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAg
ICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRhdGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9bNF0g
PSB4NDsKICAgIH0KCiAgICBUaW55VmVjdG9yKFRfbnVtdHlwZSB4MCwgVF9udW10eXBlIHgxLCBU
X251bXR5cGUgeDIsCiAgICAgICAgVF9udW10eXBlIHgzLCBUX251bXR5cGUgeDQsIFRfbnVtdHlw
ZSB4NSkKICAgIHsKICAgICAgICBkYXRhX1swXSA9IHgwOwogICAgICAgIGRhdGFfWzFdID0geDE7
CiAgICAgICAgZGF0YV9bMl0gPSB4MjsKICAgICAgICBkYXRhX1szXSA9IHgzOwogICAgICAgIGRh
dGFfWzRdID0geDQ7CiAgICAgICAgZGF0YV9bNV0gPSB4NTsKICAgIH0KCiAgICBUaW55VmVjdG9y
KFRfbnVtdHlwZSB4MCwgVF9udW10eXBlIHgxLCBUX251bXR5cGUgeDIsCiAgICAgICAgVF9udW10
eXBlIHgzLCBUX251bXR5cGUgeDQsIFRfbnVtdHlwZSB4NSwgVF9udW10eXBlIHg2KQogICAgewog
ICAgICAgIGRhdGFfWzBdID0geDA7CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAgICBkYXRh
X1syXSA9IHgyOwogICAgICAgIGRhdGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9bNF0gPSB4NDsK
ICAgICAgICBkYXRhX1s1XSA9IHg1OwogICAgICAgIGRhdGFfWzZdID0geDY7CiAgICB9CgogICAg
VGlueVZlY3RvcihUX251bXR5cGUgeDAsIFRfbnVtdHlwZSB4MSwgVF9udW10eXBlIHgyLAogICAg
ICAgIFRfbnVtdHlwZSB4MywgVF9udW10eXBlIHg0LCBUX251bXR5cGUgeDUsIFRfbnVtdHlwZSB4
NiwKICAgICAgICBUX251bXR5cGUgeDcpCiAgICB7CiAgICAgICAgZGF0YV9bMF0gPSB4MDsKICAg
ICAgICBkYXRhX1sxXSA9IHgxOwogICAgICAgIGRhdGFfWzJdID0geDI7CiAgICAgICAgZGF0YV9b
M10gPSB4MzsKICAgICAgICBkYXRhX1s0XSA9IHg0OwogICAgICAgIGRhdGFfWzVdID0geDU7CiAg
ICAgICAgZGF0YV9bNl0gPSB4NjsKICAgICAgICBkYXRhX1s3XSA9IHg3OwogICAgfQoKICAgIFRp
bnlWZWN0b3IoVF9udW10eXBlIHgwLCBUX251bXR5cGUgeDEsIFRfbnVtdHlwZSB4MiwKICAgICAg
ICBUX251bXR5cGUgeDMsIFRfbnVtdHlwZSB4NCwgVF9udW10eXBlIHg1LCBUX251bXR5cGUgeDYs
CiAgICAgICAgVF9udW10eXBlIHg3LCBUX251bXR5cGUgeDgpCiAgICB7CiAgICAgICAgZGF0YV9b
MF0gPSB4MDsKICAgICAgICBkYXRhX1sxXSA9IHgxOwogICAgICAgIGRhdGFfWzJdID0geDI7CiAg
ICAgICAgZGF0YV9bM10gPSB4MzsKICAgICAgICBkYXRhX1s0XSA9IHg0OwogICAgICAgIGRhdGFf
WzVdID0geDU7CiAgICAgICAgZGF0YV9bNl0gPSB4NjsKICAgICAgICBkYXRhX1s3XSA9IHg3Owog
ICAgICAgIGRhdGFfWzhdID0geDg7CiAgICB9CgogICAgVGlueVZlY3RvcihUX251bXR5cGUgeDAs
IFRfbnVtdHlwZSB4MSwgVF9udW10eXBlIHgyLAogICAgICAgIFRfbnVtdHlwZSB4MywgVF9udW10
eXBlIHg0LCBUX251bXR5cGUgeDUsIFRfbnVtdHlwZSB4NiwKICAgICAgICBUX251bXR5cGUgeDcs
IFRfbnVtdHlwZSB4OCwgVF9udW10eXBlIHg5KQogICAgewogICAgICAgIGRhdGFfWzBdID0geDA7
CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAgICAgICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRh
dGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9bNF0gPSB4NDsKICAgICAgICBkYXRhX1s1XSA9IHg1
OwogICAgICAgIGRhdGFfWzZdID0geDY7CiAgICAgICAgZGF0YV9bN10gPSB4NzsKICAgICAgICBk
YXRhX1s4XSA9IHg4OwogICAgICAgIGRhdGFfWzldID0geDk7CiAgICB9CgogICAgVGlueVZlY3Rv
cihUX251bXR5cGUgeDAsIFRfbnVtdHlwZSB4MSwgVF9udW10eXBlIHgyLAogICAgICAgIFRfbnVt
dHlwZSB4MywgVF9udW10eXBlIHg0LCBUX251bXR5cGUgeDUsIFRfbnVtdHlwZSB4NiwKICAgICAg
ICBUX251bXR5cGUgeDcsIFRfbnVtdHlwZSB4OCwgVF9udW10eXBlIHg5LCBUX251bXR5cGUgeDEw
KQogICAgewogICAgICAgIGRhdGFfWzBdID0geDA7CiAgICAgICAgZGF0YV9bMV0gPSB4MTsKICAg
ICAgICBkYXRhX1syXSA9IHgyOwogICAgICAgIGRhdGFfWzNdID0geDM7CiAgICAgICAgZGF0YV9b
NF0gPSB4NDsKICAgICAgICBkYXRhX1s1XSA9IHg1OwogICAgICAgIGRhdGFfWzZdID0geDY7CiAg
ICAgICAgZGF0YV9bN10gPSB4NzsKICAgICAgICBkYXRhX1s4XSA9IHg4OwogICAgICAgIGRhdGFf
WzldID0geDk7CiAgICAgICAgZGF0YV9bMTBdID0geDEwOwogICAgfQoKICAgICAKICAgIHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4KICAgIGlubGluZSBUaW55VmVjdG9yKF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcik7CgogICAgVF9pdGVyYXRvciBiZWdpbigpCiAgICB7IHJldHVybiBUX2l0ZXJhdG9y
KCp0aGlzKTsgfQoKICAgIFRfY29uc3RJdGVyYXRvciBiZWdpbigpIGNvbnN0CiAgICB7IHJldHVy
biBUX2NvbnN0SXRlcmF0b3IoKnRoaXMpOyB9CgogICAgIAogICAgIAoKICAgIFRfbnVtdHlwZSAq
IF9fcmVzdHJpY3RfXyAgZGF0YSgpCiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0IFRf
bnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YSgpIGNvbnN0CiAgICB7IHJldHVybiBkYXRhXzsg
fQoKICAgIFRfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YUZpcnN0KCkKICAgIHsgcmV0dXJu
IGRhdGFfOyB9CgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICBkYXRhRmlyc3Qo
KSBjb25zdAogICAgeyByZXR1cm4gZGF0YV87IH0KCiAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dAogICAgeyByZXR1cm4gTl9sZW5ndGg7IH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAg
CgogICAgdW5zaWduZWQgICAgICAgIF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0
dXJuIE5fbGVuZ3RoOyB9CgogICAgYm9vbCAgICAgICAgIF9iel9oYXNGYXN0QWNjZXNzKCkgY29u
c3QKICAgIHsgcmV0dXJuIHRydWUgOyB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18gICAg
ICBfYnpfZmFzdEFjY2Vzcyh1bnNpZ25lZCBpKQogICAgeyByZXR1cm4gZGF0YV9baV07IH0KCiAg
ICBUX251bXR5cGUgICAgICAgX2J6X2Zhc3RBY2Nlc3ModW5zaWduZWQgaSkgY29uc3QKICAgIHsg
cmV0dXJuIGRhdGFfW2ldOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFzcyBQX3Vw
ZGF0ZXI+CiAgICB2b2lkIF9iel9hc3NpZ24oUF9leHByLCBQX3VwZGF0ZXIpOwoKICAgIF9iel9W
ZWNFeHByPFRfY29uc3RJdGVyYXRvcj4gX2J6X2FzVmVjRXhwcigpIGNvbnN0CiAgICB7IHJldHVy
biBfYnpfVmVjRXhwcjxUX2NvbnN0SXRlcmF0b3I+KGJlZ2luKCkpOyB9CiAgIAogICAgIAogICAg
IAogICAgIAoKICAgIGludCBsZW5ndGhDaGVjayh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAg
ICAgICA7CgoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3Io
KSh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFf
W2ldOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKHVuc2ln
bmVkIGkpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2ldOwogICAgfQoK
ICAgIFRfbnVtdHlwZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAgICAgICAg
IDsKICAgICAgICByZXR1cm4gZGF0YV9baV07CiAgICB9CgogICAgVF9udW10eXBlJiBfX3Jlc3Ry
aWN0X18gIG9wZXJhdG9yW10odW5zaWduZWQgaSkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJl
dHVybiBkYXRhX1tpXTsKICAgIH0KCiAgICAgCiAgICAgCiAgICAgCgogICAgIAogICAgTGlzdElu
aXRpYWxpemF0aW9uU3dpdGNoPFRfdmVjdG9yPiBvcGVyYXRvcj0oVF9udW10eXBlIHgpCiAgICB7
CiAgICAgICAgcmV0dXJuIExpc3RJbml0aWFsaXphdGlvblN3aXRjaDxUX3ZlY3Rvcj4oKnRoaXMs
IHgpOwogICAgfQoKICAgIFRfdmVjdG9yJiBpbml0aWFsaXplKFRfbnVtdHlwZSk7CiAgICBUX3Zl
Y3RvciYgb3BlcmF0b3IrPShUX251bXR5cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yLT0oVF9u
dW10eXBlKTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcio9KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3Rv
ciYgb3BlcmF0b3IvPShUX251bXR5cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yJT0oVF9udW10
eXBlKTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYg
b3BlcmF0b3ImPShUX251bXR5cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yfD0oVF9udW10eXBl
KTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcj4+PShpbnQpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9y
PDw9KGludCk7CgogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gCiAgICBUX3ZlY3RvciYg
b3BlcmF0b3I9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcis9KGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci09KGNvbnN0IFRpbnlWZWN0b3I8UF9u
dW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAg
IFRfdmVjdG9yJiBvcGVyYXRvcio9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5n
dGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVy
YXRvci89KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvciU9KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRf
dmVjdG9yJiBvcGVyYXRvciY9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+
ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRv
cnw9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+ICYpOwogICAgdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcj4+PShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3I8PD0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aD4gJik7CgogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF92ZWN0
b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IrPShjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0
b3ItPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IqPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IvPShjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBU
X3ZlY3RvciYgb3BlcmF0b3IlPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3JePShjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYg
b3BlcmF0b3ImPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3J8PShjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3I+
Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4gVF92ZWN0b3ImIG9wZXJhdG9yPDw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiAmKTsK
CiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvcj0oX2J6
X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBv
cGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHBy
PiBUX3ZlY3RvciYgb3BlcmF0b3ItPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRl
PGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yKj0oX2J6X1ZlY0V4cHI8UF9leHByPik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvci89KF9iel9WZWNF
eHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3RvciYgb3BlcmF0
b3IlPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92
ZWN0b3ImIG9wZXJhdG9yXj0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvciY9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3RvciYgb3BlcmF0b3J8PShfYnpfVmVjRXhwcjxQ
X2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yPj49
KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3Rv
ciYgb3BlcmF0b3I8PD0oX2J6X1ZlY0V4cHI8UF9leHByPik7CgogICAgIAogICAgdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3Zl
Y3RvciYgb3BlcmF0b3IrPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci09KGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsK
ICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3IvPShj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvciU9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBl
Mj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgogICAgVF92ZWN0b3ImIG9wZXJh
dG9yXj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ImPShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9y
JiBvcGVyYXRvcnw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUyPgogICAgVF92ZWN0b3ImIG9wZXJhdG9yPj49KGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgogICAg
VF92ZWN0b3ImIG9wZXJhdG9yPDw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7Cgog
ICAgIAogICAgVF92ZWN0b3ImIG9wZXJhdG9yPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0
b3IrPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ItPShSYW5nZSk7CiAgICBUX3ZlY3Rv
ciYgb3BlcmF0b3IqPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3IvPShSYW5nZSk7CiAg
ICBUX3ZlY3RvciYgb3BlcmF0b3IlPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3JePShS
YW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ImPShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3Bl
cmF0b3J8PShSYW5nZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3I+Pj0oUmFuZ2UpOwogICAgVF92
ZWN0b3ImIG9wZXJhdG9yPDw9KFJhbmdlKTsKCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAg
Z2V0SW5pdGlhbGl6YXRpb25JdGVyYXRvcigpCiAgICB7IHJldHVybiBkYXRhRmlyc3QoKTsgfQoK
cHJpdmF0ZToKICAgIFRfbnVtdHlwZSBkYXRhX1tOX2xlbmd0aF07Cn07CgoKIAogCgp0ZW1wbGF0
ZTxjbGFzcyBUPgpjbGFzcyBUaW55VmVjdG9yPFQsMD4gewp9OwoKfSAKCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWNpdGVyLmgiIDEKIAoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9USU5ZVkVDSVRFUl9ICgoK
CgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwg
aW50IE5fbGVuZ3RoLCBpbnQgTl9zdHJpZGU+CmNsYXNzIFRpbnlWZWN0b3JJdGVyIHsKcHVibGlj
OgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoKICAgIGV4cGxpY2l0ICBUaW55VmVj
dG9ySXRlcihUaW55VmVjdG9yPFRfbnVtdHlwZSwgTl9sZW5ndGg+JiB4KQogICAgICAgIDogZGF0
YV8oeC5kYXRhKCkpCiAgICB7IH0KCgogICAgVGlueVZlY3Rvckl0ZXIoY29uc3QgVGlueVZlY3Rv
ckl0ZXI8VF9udW10eXBlLCBOX2xlbmd0aCwgTl9zdHJpZGU+JiBpdGVyKQogICAgICAgIDogZGF0
YV8oaXRlci5kYXRhXykKICAgIHsKICAgIH0KCgogICAgVF9udW10eXBlIG9wZXJhdG9yW10odW5z
aWduZWQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpICog
Tl9zdHJpZGVdOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcltd
KHVuc2lnbmVkIGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZGF0YV9baSAqIE5f
c3RyaWRlXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKSh1bnNpZ25lZCBpKSBjb25z
dAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kgKiBOX3N0cmlkZV07CiAg
ICB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIG9wZXJhdG9yKCkodW5zaWduZWQgaSkK
ICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpICogTl9zdHJpZGVdOwogICAg
fQoKICAgIHVuc2lnbmVkIGxlbmd0aCh1bnNpZ25lZCkgY29uc3QKICAgIHsgcmV0dXJuIE5fbGVu
Z3RoOyB9CgogICAgZW51bSB7IF9iel9zdGF0aWNMZW5ndGhDb3VudCA9IDEsCiAgICAgICAgICAg
X2J6X2R5bmFtaWNMZW5ndGhDb3VudCA9IDAsCiAgICAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9
IDAgfTsKCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVybiB0
cnVlIDsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2Vzcyh1bnNpZ25lZCBpKSBjb25zdAog
ICAgeyByZXR1cm4gZGF0YV9baSAqIE5fc3RyaWRlXTsgfQoKICAgIFRfbnVtdHlwZSYgX2J6X2Zh
c3RBY2Nlc3ModW5zaWduZWQgaSkKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBOX3N0cmlkZV07IH0K
CiAgICB1bnNpZ25lZCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IHJldHVybiBOX2xl
bmd0aDsgfQoKcHJpdmF0ZToKICAgIFRfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YV87Cn07
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoLCBpbnQgTl9zdHJpZGU+
CmNsYXNzIFRpbnlWZWN0b3JJdGVyQ29uc3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZSBUX251bXR5cGU7CgogICAgZXhwbGljaXQgIFRpbnlWZWN0b3JJdGVyQ29uc3QoY29uc3QgVGlu
eVZlY3RvcjxUX251bXR5cGUsIE5fbGVuZ3RoPiYgeCkKICAgICAgICA6IGRhdGFfKHguZGF0YSgp
KQogICAgeyB9CgoKICAgIFRpbnlWZWN0b3JJdGVyQ29uc3QoY29uc3QgVGlueVZlY3Rvckl0ZXJD
b25zdDxUX251bXR5cGUsIE5fbGVuZ3RoLCAKICAgICAgICBOX3N0cmlkZT4mIGl0ZXIpCiAgICAg
ICAgOiBkYXRhXyhpdGVyLmRhdGFfKQogICAgewogICAgfQoKICAgIHZvaWQgb3BlcmF0b3I9KGNv
bnN0IFRpbnlWZWN0b3JJdGVyQ29uc3Q8VF9udW10eXBlLCBOX2xlbmd0aCwgTl9zdHJpZGU+JiAK
ICAgICAgICBpdGVyKQogICAgewogICAgICAgIGRhdGFfID0gaXRlci5kYXRhXzsKICAgIH0KCgog
ICAgVF9udW10eXBlIG9wZXJhdG9yW10odW5zaWduZWQgaSkgY29uc3QKICAgIHsKICAgICAgICAg
OwogICAgICAgIHJldHVybiBkYXRhX1tpICogTl9zdHJpZGVdOwogICAgfQoKICAgIFRfbnVtdHlw
ZSBvcGVyYXRvcigpKHVuc2lnbmVkIGkpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKICAgICAgICBy
ZXR1cm4gZGF0YV9baSAqIE5fc3RyaWRlXTsKICAgIH0KCiAgICB1bnNpZ25lZCBsZW5ndGgodW5z
aWduZWQpIGNvbnN0CiAgICB7IHJldHVybiBOX2xlbmd0aDsgfQoKICAgIGVudW0geyBfYnpfc3Rh
dGljTGVuZ3RoQ291bnQgPSAxLAogICAgICAgICAgIF9iel9keW5hbWljTGVuZ3RoQ291bnQgPSAw
LAogICAgICAgICAgIF9iel9zdGF0aWNMZW5ndGggPSAwIH07CgogICAgYm9vbCAgX2J6X2hhc0Zh
c3RBY2Nlc3MoKSBjb25zdAogICAgeyByZXR1cm4gdHJ1ZSA7IH0KCiAgICBUX251bXR5cGUgX2J6
X2Zhc3RBY2Nlc3ModW5zaWduZWQgaSkgY29uc3QKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBOX3N0
cmlkZV07IH0KCiAgICB1bnNpZ25lZCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IHJl
dHVybiBOX2xlbmd0aDsgfQoKcHJpdmF0ZToKICAgIGNvbnN0IFRfbnVtdHlwZSAqIF9fcmVzdHJp
Y3RfXyAgZGF0YV87Cn07Cgp9IAoKCiMgNDQzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdGlueXZlYy5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei90dmVjZ2xvYnMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgojZGVmaW5lIEJaX1RWRUNHTE9CU19ICgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tZXRhL21ldGFwcm9nLmgiIDEKIAoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01FVEFfTUVUQVBST0dfSAoKbmFtZXNw
YWNlICBibGl0eiAgeyAKCiAKCmNsYXNzIF9iel9tZXRhX251bGxPcGVyYW5kIHsKcHVibGljOgog
ICAgX2J6X21ldGFfbnVsbE9wZXJhbmQoKSB7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSBUIG9wZXJhdG9yKyhjb25zdCBUJiBhLCBfYnpfbWV0YV9udWxsT3BlcmFuZCkKeyByZXR1cm4g
YTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgVCBvcGVyYXRvciooY29uc3QgVCYgYSwgX2J6
X21ldGFfbnVsbE9wZXJhbmQpCnsgcmV0dXJuIGE7IH0KCgogCgp0ZW1wbGF0ZTxpbnQgTjEsIGlu
dCBOMj4KY2xhc3MgX2J6X21ldGFfbWF4IHsKcHVibGljOgogICAgZW51bSB7IG1heCA9IChOMSA+
IE4yKSA/IE4xIDogTjIgfTsKfTsKCiAKCnRlbXBsYXRlPGludCBOMSwgaW50IE4yPgpjbGFzcyBf
YnpfbWV0YV9taW4gewpwdWJsaWM6CiAgICBlbnVtIHsgbWluID0gKE4xIDwgTjIpID8gTjEgOiBO
MiB9Owp9OwoKfSAgCgoKIyAzOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L3R2ZWNnbG9icy5oIiAyCgoKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei90dmNyb3NzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgojZGVmaW5lIEJaX1RWQ1JPU1NfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoK
CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZT4KVGlueVZlY3RvcjxUX251bXR5cGUsMz4gY3Jv
c3MoY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUsMz4mIHgsIAogICAgY29uc3QgVGlueVZlY3Rv
cjxUX251bXR5cGUsMz4mIHkpCnsKICAgIHJldHVybiBUaW55VmVjdG9yPFRfbnVtdHlwZSwzPih4
WzFdKnlbMl0gLSB5WzFdKnhbMl0sCiAgICAgICAgeVswXSp4WzJdIC0geFswXSp5WzJdLCB4WzBd
KnlbMV0gLSB5WzBdKnhbMV0pOwp9CgoKfSAKCgojIDQ2ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovdHZlY2dsb2JzLmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L21ldGEvZG90LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01FVEFfRE9UX0gKCgogCiMgMSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Byb21vdGUuaCIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1BST01PVEVfSAoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKCiAgICAjZGVmaW5lIEJaX1BST01PVEUoQSxCKSBfYnpfdHlwZW5hbWUgcHJvbW90ZV90cmFp
dDxBLEI+OjpUX3Byb21vdGUKCgoKCgoKIAoKCgoKCnRlbXBsYXRlPGNsYXNzIFQ+CnN0cnVjdCBw
cmVjaXNpb25fdHJhaXQgewogICAgZW51bSB7IHByZWNpc2lvblJhbmsgPSAwLAogICAgICAgICAg
IGtub3dQcmVjaXNpb25SYW5rID0gMCB9Owp9OwoKI2RlZmluZSBCWl9ERUNMQVJFX1BSRUNJU0lP
TihULHJhbmspIHRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFpdDwgVCA+IHsgZW51bSB7
IHByZWNpc2lvblJhbmsgPSByYW5rLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsKCgoKCgoK
dGVtcGxhdGU8PiBzdHJ1Y3QgcHJlY2lzaW9uX3RyYWl0PCAgaW50ICA+IHsgZW51bSB7IHByZWNp
c2lvblJhbmsgPSAgMTAwICwga25vd1ByZWNpc2lvblJhbmsgPSAxIH07IH07IAp0ZW1wbGF0ZTw+
IHN0cnVjdCBwcmVjaXNpb25fdHJhaXQ8ICB1bnNpZ25lZCBpbnQgID4geyBlbnVtIHsgcHJlY2lz
aW9uUmFuayA9ICAyMDAgLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4g
c3RydWN0IHByZWNpc2lvbl90cmFpdDwgIGxvbmcgID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9
ICAzMDAgLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHBy
ZWNpc2lvbl90cmFpdDwgIHVuc2lnbmVkIGxvbmcgID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9
ICA0MDAgLCBrbm93UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHBy
ZWNpc2lvbl90cmFpdDwgIGZsb2F0ICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgNTAwICwg
a25vd1ByZWNpc2lvblJhbmsgPSAxIH07IH07IAp0ZW1wbGF0ZTw+IHN0cnVjdCBwcmVjaXNpb25f
dHJhaXQ8ICBkb3VibGUgID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9ICA2MDAgLCBrbm93UHJl
Y2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFpdDwg
IGxvbmcgZG91YmxlICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgNzAwICwga25vd1ByZWNp
c2lvblJhbmsgPSAxIH07IH07IAoKCnRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFpdDwg
IGNvbXBsZXg8ZmxvYXQ+ICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgODAwICwga25vd1By
ZWNpc2lvblJhbmsgPSAxIH07IH07IAp0ZW1wbGF0ZTw+IHN0cnVjdCBwcmVjaXNpb25fdHJhaXQ8
ICBjb21wbGV4PGRvdWJsZT4gID4geyBlbnVtIHsgcHJlY2lzaW9uUmFuayA9ICA5MDAgLCBrbm93
UHJlY2lzaW9uUmFuayA9IDEgfTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IHByZWNpc2lvbl90cmFp
dDwgIGNvbXBsZXg8bG9uZyBkb3VibGU+ICA+IHsgZW51bSB7IHByZWNpc2lvblJhbmsgPSAgMTAw
MCAsIGtub3dQcmVjaXNpb25SYW5rID0gMSB9OyB9OyAKCgp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1
Y3QgYXV0b3Byb21vdGVfdHJhaXQgewogICAgdHlwZWRlZiBUIFRfbnVtdHlwZTsKfTsKCiNkZWZp
bmUgQlpfREVDTEFSRV9BVVRPUFJPTU9URShUMSxUMikgdGVtcGxhdGU8PiBzdHJ1Y3QgYXV0b3By
b21vdGVfdHJhaXQ8VDE+IHsgdHlwZWRlZiBUMiBUX251bXR5cGU7IH07CgoKCgoKIAogCiAKdGVt
cGxhdGU8PiBzdHJ1Y3QgYXV0b3Byb21vdGVfdHJhaXQ8IGJvb2wgPiB7IHR5cGVkZWYgICBpbnQg
IFRfbnVtdHlwZTsgfTsgCnRlbXBsYXRlPD4gc3RydWN0IGF1dG9wcm9tb3RlX3RyYWl0PCBjaGFy
ID4geyB0eXBlZGVmICAgaW50ICBUX251bXR5cGU7IH07IAp0ZW1wbGF0ZTw+IHN0cnVjdCBhdXRv
cHJvbW90ZV90cmFpdDwgdW5zaWduZWQgY2hhciA+IHsgdHlwZWRlZiAgIGludCAgVF9udW10eXBl
OyB9OyAKdGVtcGxhdGU8PiBzdHJ1Y3QgYXV0b3Byb21vdGVfdHJhaXQ8IHNob3J0IGludCA+IHsg
dHlwZWRlZiAgIGludCAgVF9udW10eXBlOyB9OyAKdGVtcGxhdGU8PiBzdHJ1Y3QgYXV0b3Byb21v
dGVfdHJhaXQ8IHNob3J0IHVuc2lnbmVkIGludCA+IHsgdHlwZWRlZiAgIHVuc2lnbmVkIGludCAg
VF9udW10eXBlOyB9OyAKCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgaW50IHByb21vdGVU
b1QxPgpzdHJ1Y3QgX2J6X3Byb21vdGUyIHsKICAgIHR5cGVkZWYgVDEgVF9wcm9tb3RlOwp9OwoK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgpzdHJ1Y3QgX2J6X3Byb21vdGUyPFQxLFQyLDA+
IHsKICAgIHR5cGVkZWYgVDIgVF9wcm9tb3RlOwp9OwoKdGVtcGxhdGU8Y2xhc3MgVDFfb3JpZywg
Y2xhc3MgVDJfb3JpZz4Kc3RydWN0IHByb21vdGVfdHJhaXQgewogICAgIAogICAgdHlwZWRlZiB0
eXBlbmFtZSAgYXV0b3Byb21vdGVfdHJhaXQ8VDFfb3JpZz46OlRfbnVtdHlwZSBUMTsKICAgIHR5
cGVkZWYgdHlwZW5hbWUgIGF1dG9wcm9tb3RlX3RyYWl0PFQyX29yaWc+OjpUX251bXR5cGUgVDI7
CgogICAgIAogICAgZW51bSB7CiAgICAgIFQxSXNCZXR0ZXIgPQogICAgICAgIChpbnQpIHByZWNp
c2lvbl90cmFpdDxUMT46OnByZWNpc2lvblJhbmsgICA+CiAgICAgICAgICAoaW50KSBwcmVjaXNp
b25fdHJhaXQ8VDI+OjpwcmVjaXNpb25SYW5rICAsCgogICAgIAogICAgICBrbm93Qm90aFJhbmtz
ID0KICAgICAgICAoaW50KSBwcmVjaXNpb25fdHJhaXQ8VDE+Ojprbm93UHJlY2lzaW9uUmFuayAg
CiAgICAgICYmIChpbnQpIHByZWNpc2lvbl90cmFpdDxUMj46Omtub3dQcmVjaXNpb25SYW5rICAs
CgogICAgIAogICAgICBrbm93VDFidXROb3RUMiA9ICAoaW50KSBwcmVjaXNpb25fdHJhaXQ8VDE+
Ojprbm93UHJlY2lzaW9uUmFuayAgCiAgICAgICAgJiYgISgoaW50KSBwcmVjaXNpb25fdHJhaXQ8
VDI+Ojprbm93UHJlY2lzaW9uUmFuayAgKSwKCiAgICAgCiAgICAgIGtub3dUMmJ1dE5vdFQxID0g
IChpbnQpIHByZWNpc2lvbl90cmFpdDxUMj46Omtub3dQcmVjaXNpb25SYW5rICAKICAgICAgICAm
JiAhKChpbnQpIHByZWNpc2lvbl90cmFpdDxUMT46Omtub3dQcmVjaXNpb25SYW5rICApLAoKICAg
ICAKICAgICAgVDFJc0xhcmdlciA9IHNpemVvZihUMSkgPj0gc2l6ZW9mKFQyKSwKCiAgICAgCiAg
ICAgCiAgICAgCiAgICAgIGRlZmF1bHRQcm9tb3Rpb24gPSBrbm93VDFidXROb3RUMiA/IGZhbHNl
ICA6IAogICAgICAgICAoa25vd1QyYnV0Tm90VDEgPyB0cnVlICA6IFQxSXNMYXJnZXIpCiAgICB9
OwoKICAgICAKICAgICAKICAgICAKCiAgICBlbnVtIHsKICAgICAgcHJvbW90ZVRvVDEgPSAoKGlu
dCkga25vd0JvdGhSYW5rcyAgID8gKGludCkgVDFJc0JldHRlciAgCiAgICAgICAgOiAoaW50KSBk
ZWZhdWx0UHJvbW90aW9uICApID8gMSA6IDAKICAgIH07CgogICAgdHlwZWRlZiB0eXBlbmFtZSBf
YnpfcHJvbW90ZTI8VDEsVDIscHJvbW90ZVRvVDE+OjpUX3Byb21vdGUgVF9wcm9tb3RlOwp9OwoK
CgoKCgoKCn0gCgoKIyA0MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L21ldGEvZG90LmgiIDIKCgoKCiAKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8aW50
IE4sIGludCBJPgpjbGFzcyBfYnpfbWV0YV92ZWN0b3JEb3QgewpwdWJsaWM6CiAgICBlbnVtIHsg
bG9vcEZsYWcgPSAoSSA8IE4tMSkgPyAxIDogMCB9OwoKICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhw
cjEsIGNsYXNzIFRfZXhwcjI+CiAgICBzdGF0aWMgaW5saW5lIHR5cGVuYW1lICBwcm9tb3RlX3Ry
YWl0PCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlICwgCiAgICAgICAgdHlwZW5hbWUgIFRf
ZXhwcjI6OlRfbnVtdHlwZSA+OjpUX3Byb21vdGUgCiAgICBmKGNvbnN0IFRfZXhwcjEmIGEsIGNv
bnN0IFRfZXhwcjImIGIpCiAgICB7CiAgICAgICAgcmV0dXJuIGFbSV0gKiBiW0ldCiAgICAgICAg
ICAgICsgX2J6X21ldGFfdmVjdG9yRG90PGxvb3BGbGFnICogTiwgbG9vcEZsYWcgKiAoSSsxKT46
OmYoYSxiKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIxLCBjbGFzcyBUX2V4cHIy
PgogICAgc3RhdGljIGlubGluZSB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgdHlwZW5hbWUgIFRf
ZXhwcjE6OlRfbnVtdHlwZSAsIAogICAgICAgIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUg
Pjo6VF9wcm9tb3RlIAogICAgZl92YWx1ZV9yZWYoVF9leHByMSBhLCBjb25zdCBUX2V4cHIyJiBi
KQogICAgewogICAgICAgIHJldHVybiBhW0ldICogYltJXQogICAgICAgICAgICArIF9iel9tZXRh
X3ZlY3RvckRvdDxsb29wRmxhZyAqIE4sIGxvb3BGbGFnICogKEkrMSk+OjpmKGEsYik7CiAgICB9
CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9leHByMj4KICAgIHN0YXRpYyBp
bmxpbmUgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUgLCAKICAgICAgICB0eXBlbmFtZSAgVF9leHByMjo6VF9udW10eXBlID46OlRfcHJvbW90ZSAK
ICAgIGZfcmVmX3ZhbHVlKGNvbnN0IFRfZXhwcjEmIGEsIFRfZXhwcjIgYikKICAgIHsKICAgICAg
ICByZXR1cm4gYVtJXSAqIGJbSV0KICAgICAgICAgICAgKyBfYnpfbWV0YV92ZWN0b3JEb3Q8bG9v
cEZsYWcgKiBOLCBsb29wRmxhZyAqIChJKzEpPjo6ZihhLGIpOwogICAgfQoKICAgIHRlbXBsYXRl
PGNsYXNzIFRfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CiAgICBzdGF0aWMgaW5saW5lIHR5cGVu
YW1lICBwcm9tb3RlX3RyYWl0PCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlICwgCiAgICAg
ICAgUF9udW10eXBlMiA+OjpUX3Byb21vdGUgCiAgICBkb3RXaXRoQXJncyhjb25zdCBUX2V4cHIx
JiBhLCBQX251bXR5cGUyIGkxLCBQX251bXR5cGUyIGkyPTAsCiAgICAgICAgUF9udW10eXBlMiBp
Mz0wLCBQX251bXR5cGUyIGk0PTAsIFBfbnVtdHlwZTIgaTU9MCwgUF9udW10eXBlMiBpNj0wLAog
ICAgICAgIFBfbnVtdHlwZTIgaTc9MCwgUF9udW10eXBlMiBpOD0wLCBQX251bXR5cGUyIGk5PTAs
IFBfbnVtdHlwZTIgaTEwPTApCiAgICB7CiAgICAgICAgcmV0dXJuIGFbSV0gKiBpMSAgCiAgICAg
ICAgICAgICsgX2J6X21ldGFfdmVjdG9yRG90PGxvb3BGbGFnICogTiwgbG9vcEZsYWcgKiAoSSsx
KT46OmRvdFdpdGhBcmdzCiAgICAgICAgICAgICAgICAgKGEsIGkyLCBpMywgaTQsIGk1LCBpNiwg
aTcsIGk4LCBpOSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9tZXRhX3ZlY3RvckRv
dDwwLDA+IHsKcHVibGljOgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9leHBy
Mj4KICAgIHN0YXRpYyBpbmxpbmUgX2J6X21ldGFfbnVsbE9wZXJhbmQgZihjb25zdCBUX2V4cHIx
JiwgY29uc3QgVF9leHByMiYpCiAgICB7IHJldHVybiBfYnpfbWV0YV9udWxsT3BlcmFuZCgpOyB9
CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KICAgIHN0YXRp
YyBpbmxpbmUgX2J6X21ldGFfbnVsbE9wZXJhbmQgCiAgICBkb3RXaXRoQXJncyhjb25zdCBUX2V4
cHIxJiBhLCBQX251bXR5cGUyIGkxLCBQX251bXR5cGUyIGkyPTAsCiAgICAgICAgUF9udW10eXBl
MiBpMz0wLCBQX251bXR5cGUyIGk0PTAsIFBfbnVtdHlwZTIgaTU9MCwgUF9udW10eXBlMiBpNj0w
LAogICAgICAgIFBfbnVtdHlwZTIgaTc9MCwgUF9udW10eXBlMiBpOD0wLCBQX251bXR5cGUyIGk5
PTAsIFBfbnVtdHlwZTIgaTEwPTApCiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9tZXRhX251bGxP
cGVyYW5kKCk7IAogICAgfQoKfTsKCn0gCgoKIyA0NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L3R2ZWNnbG9icy5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9tZXRhL3Byb2R1Y3QuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfTUVUQV9QUk9EVUNUX0gKCgoKCgoKIAoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxpbnQgTiwgaW50IEk+CmNsYXNzIF9iel9tZXRh
X3ZlY3RvclByb2R1Y3QgewpwdWJsaWM6CiAgICBlbnVtIHsgbG9vcEZsYWcgPSAoSSA8IE4tMSkg
PyAxIDogMCB9OwoKICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhwcjE+CiAgICBzdGF0aWMgaW5saW5l
IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlw
ZSA+OjpUX3N1bXR5cGUgCiAgICBmKGNvbnN0IFRfZXhwcjEmIGEpCiAgICB7CiAgICAgICAgcmV0
dXJuIGFbSV0gKiBfYnpfbWV0YV92ZWN0b3JQcm9kdWN0PGxvb3BGbGFnICogTiwgCiAgICAgICAg
ICAgIGxvb3BGbGFnICogKEkrMSk+OjpmKGEpOwogICAgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBf
YnpfbWV0YV92ZWN0b3JQcm9kdWN0PDAsMD4gewpwdWJsaWM6CiAgICB0ZW1wbGF0ZTxjbGFzcyBU
X2V4cHIxPgogICAgc3RhdGljIGlubGluZSBfYnpfbWV0YV9udWxsT3BlcmFuZCBmKGNvbnN0IFRf
ZXhwcjEmKQogICAgeyByZXR1cm4gX2J6X21ldGFfbnVsbE9wZXJhbmQoKTsgfQp9OwoKfSAKCgoj
IDQ4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdHZlY2dsb2JzLmgi
IDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21ldGEvc3Vt
LmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01F
VEFfU1VNX0gKCgogCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGludCBOLCBpbnQg
ST4KY2xhc3MgX2J6X21ldGFfdmVjdG9yU3VtIHsKcHVibGljOgogICAgZW51bSB7IGxvb3BGbGFn
ID0gKEkgPCBOLTEpID8gMSA6IDAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIxPgogICAg
c3RhdGljIGlubGluZSB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlCiAgICBmKGNvbnN0IFRf
ZXhwcjEmIGEpCiAgICB7CiAgICAgICAgcmV0dXJuIGFbSV0gKwogICAgICAgICAgICArIF9iel9t
ZXRhX3ZlY3RvclN1bTxsb29wRmxhZyAqIE4sIGxvb3BGbGFnICogKEkrMSk+OjpmKGEpOwogICAg
fQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbWV0YV92ZWN0b3JTdW08MCwwPiB7CnB1YmxpYzoK
ICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhwcjE+CiAgICBzdGF0aWMgaW5saW5lIF9iel9tZXRhX251
bGxPcGVyYW5kIGYoY29uc3QgVF9leHByMSYpCiAgICB7IHJldHVybiBfYnpfbWV0YV9udWxsT3Bl
cmFuZCgpOyB9Cgp9OwoKfSAKCgojIDQ5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovdHZlY2dsb2JzLmgiIDIKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8
Y2xhc3MgVF9udW10eXBlMSwgY2xhc3MgVF9udW10eXBlMiwgaW50IE5fbGVuZ3RoPgppbmxpbmUg
dHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3By
b21vdGUgCmRvdChjb25zdCBUaW55VmVjdG9yPFRfbnVtdHlwZTEsIE5fbGVuZ3RoPiYgYSwgCiAg
ICBjb25zdCBUaW55VmVjdG9yPFRfbnVtdHlwZTIsIE5fbGVuZ3RoPiYgYikKewogICAgcmV0dXJu
IF9iel9tZXRhX3ZlY3RvckRvdDxOX2xlbmd0aCwgMD46OmYoYSxiKTsKfQoKdGVtcGxhdGU8Y2xh
c3MgVF9leHByMSwgY2xhc3MgVF9udW10eXBlMiwgaW50IE5fbGVuZ3RoPgppbmxpbmUgdHlwZW5h
bWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUgLCAgVF9udW10
eXBlMiA+OjpUX3Byb21vdGUgCmRvdChfYnpfVmVjRXhwcjxUX2V4cHIxPiBhLCBjb25zdCBUaW55
VmVjdG9yPFRfbnVtdHlwZTIsIE5fbGVuZ3RoPiYgYikKewogICAgcmV0dXJuIF9iel9tZXRhX3Zl
Y3RvckRvdDxOX2xlbmd0aCwgMD46OmZfdmFsdWVfcmVmKGEsYik7Cn0KCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfZXhwcjIsIGludCBOX2xlbmd0aD4KaW5saW5lIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5
cGUgPjo6VF9wcm9tb3RlIApkb3QoY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUxLCBOX2xlbmd0
aD4mIGEsIF9iel9WZWNFeHByPFRfZXhwcjI+IGIpCnsKICAgIHJldHVybiBfYnpfbWV0YV92ZWN0
b3JEb3Q8Tl9sZW5ndGgsIDA+OjpmX3JlZl92YWx1ZShhLGIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9sZW5ndGg+CmlubGluZSB0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFp
dHM8IFRfbnVtdHlwZTEgPjo6VF9zdW10eXBlIApwcm9kdWN0KGNvbnN0IFRpbnlWZWN0b3I8VF9u
dW10eXBlMSwgTl9sZW5ndGg+JiBhKQp7CiAgICByZXR1cm4gX2J6X21ldGFfdmVjdG9yUHJvZHVj
dDxOX2xlbmd0aCwgMD46OmYoYSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
bGVuZ3RoPgppbmxpbmUgVF9udW10eXBlCnN1bShjb25zdCBUaW55VmVjdG9yPFRfbnVtdHlwZSwg
Tl9sZW5ndGg+JiBhKQp7CiAgICByZXR1cm4gX2J6X21ldGFfdmVjdG9yU3VtPE5fbGVuZ3RoLCAw
Pjo6ZihhKTsKfQoKfSAKCgoKIyA0NDQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei90aW55dmVjLmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3ZlY3Rvci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDVE9SX0gKCgoKCgoKIAoK
CgoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
PiBjbGFzcyBWZWN0b3JJdGVyOwp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IGNsYXNzIFZlY3Rv
ckl0ZXJDb25zdDsKdGVtcGxhdGU8Y2xhc3MgUF9leHByPiAgICBjbGFzcyBfYnpfVmVjRXhwcjsg
ICAgICAgCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gY2xhc3MgVmVjdG9yUGljazsKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiBjbGFzcyBSYW5kb207CgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmNsYXNzIFZlY3RvciA6IHByb3RlY3RlZCBNZW1vcnlCbG9ja1JlZmVyZW5jZTxQX251
bXR5cGU+IHsKCnB1YmxpYzoKICAgICAKICAgICAKICAgICAKCiAgICB0eXBlZGVmIE1lbW9yeUJs
b2NrUmVmZXJlbmNlPFBfbnVtdHlwZT4gVF9CYXNlOwogICAgdHlwZWRlZiBQX251bXR5cGUgICAg
ICAgICAgICAgICAgICBUX251bXR5cGU7CiAgICB0eXBlZGVmIFZlY3RvcjxUX251bXR5cGU+ICAg
ICAgICAgIFRfdmVjdG9yOwogICAgdHlwZWRlZiBWZWN0b3JJdGVyPFRfbnVtdHlwZT4gICAgICBU
X2l0ZXJhdG9yOwogICAgdHlwZWRlZiBWZWN0b3JJdGVyQ29uc3Q8VF9udW10eXBlPiBUX2NvbnN0
SXRlcmF0b3I7CiAgICB0eXBlZGVmIFZlY3RvclBpY2s8VF9udW10eXBlPiAgICAgIFRfcGljazsK
ICAgIHR5cGVkZWYgVmVjdG9yPGludD4gICAgICAgICAgICAgICAgVF9pbmRleFZlY3RvcjsKCiAg
ICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgVmVjdG9yKCkKICAgIHsgCiAg
ICAgICAgbGVuZ3RoXyA9IDA7CiAgICAgICAgc3RyaWRlXyA9IDA7CiAgICB9CgogICAgIAogICAg
IAogICAgVmVjdG9yKFZlY3RvcjxUX251bXR5cGU+JiB2ZWMpCiAgICAgICAgOiBNZW1vcnlCbG9j
a1JlZmVyZW5jZTxUX251bXR5cGU+KHZlYykKICAgIHsKICAgICAgICBsZW5ndGhfID0gdmVjLmxl
bmd0aF87CiAgICAgICAgc3RyaWRlXyA9IHZlYy5zdHJpZGVfOwogICAgfQoKICAgICAKICAgIFZl
Y3Rvcihjb25zdCBWZWN0b3I8VF9udW10eXBlPiYgdmVjKQogICAgICAgIDogTWVtb3J5QmxvY2tS
ZWZlcmVuY2U8VF9udW10eXBlPgogICAgICAgICAgIChjb25zdF9jYXN0PFZlY3RvcjxUX251bXR5
cGU+JiA+KHZlYykpCiAgICB7CiAgICAgICAgbGVuZ3RoXyA9IHZlYy5sZW5ndGhfOwogICAgICAg
IHN0cmlkZV8gPSB2ZWMuc3RyaWRlXzsKICAgIH0KCiAgICBleHBsaWNpdCAgVmVjdG9yKGludCBs
ZW5ndGgpCiAgICAgICAgOiBNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX251bXR5cGU+KGxlbmd0aCkK
ICAgIHsKICAgICAgICBsZW5ndGhfID0gbGVuZ3RoOwogICAgICAgIHN0cmlkZV8gPSAxOwogICAg
fQoKICAgIFZlY3RvcihWZWN0b3I8VF9udW10eXBlPiYgdmVjLCBSYW5nZSByKQogICAgICAgIDog
TWVtb3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPih2ZWMsIAogICAgICAgICAgICByLmZpcnN0
KCkgKiB2ZWMuc3RyaWRlKCkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICAgOwoKICAgICAgICBs
ZW5ndGhfID0gKHIubGFzdCh2ZWMubGVuZ3RoKCktMSkgLSByLmZpcnN0KCkpIC8gci5zdHJpZGUo
KSArIDE7CiAgICAgICAgc3RyaWRlXyA9IHZlYy5zdHJpZGVfICogci5zdHJpZGUoKTsKICAgIH0K
CiAgICBWZWN0b3IoaW50IGxlbmd0aCwgVF9udW10eXBlIGluaXRWYWx1ZSkKICAgICAgICA6IE1l
bW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlwZT4obGVuZ3RoKQogICAgewogICAgICAgIGxlbmd0
aF8gPSBsZW5ndGg7CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICAgICAgKCp0aGlzKSA9IGluaXRW
YWx1ZTsKICAgIH0KCiAgICBWZWN0b3IoaW50IGxlbmd0aCwgVF9udW10eXBlIGZpcnN0VmFsdWUs
IFRfbnVtdHlwZSBkZWx0YSkKICAgICAgICA6IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlw
ZT4obGVuZ3RoKQogICAgewogICAgICAgIGxlbmd0aF8gPSBsZW5ndGg7CiAgICAgICAgc3RyaWRl
XyA9IDE7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAg
IGRhdGFfW2ldID0gZmlyc3RWYWx1ZSArIGkgKiBkZWx0YTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxj
bGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFZlY3RvcihpbnQgbGVuZ3RoLCBSYW5kb208UF9kaXN0
cmlidXRpb24+JiByYW5kb20pCiAgICAgICAgOiBNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX251bXR5
cGU+KGxlbmd0aCkKICAgIHsKICAgICAgICBsZW5ndGhfID0gbGVuZ3RoOwogICAgICAgIHN0cmlk
ZV8gPSAxOwogICAgICAgICgqdGhpcykgPSByYW5kb207CiAgICB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgUF9leHByPgogICAgVmVjdG9yKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKICAgICAgICA6
IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlwZT4oZXhwci5fYnpfc3VnZ2VzdExlbmd0aCgp
KQogICAgewogICAgICAgIGxlbmd0aF8gPSBleHByLl9iel9zdWdnZXN0TGVuZ3RoKCk7CiAgICAg
ICAgc3RyaWRlXyA9IDE7CiAgICAgICAgKCp0aGlzKSA9IGV4cHI7CiAgICB9CgogICAgIAogICAg
IAogICAgIAogICAgVmVjdG9yKGludCBsZW5ndGgsIFRfbnVtdHlwZSogX19yZXN0cmljdF9fICBk
YXRhLCBpbnQgc3RyaWRlID0gMSkKICAgICAgICA6IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVt
dHlwZT4obGVuZ3RoLCBkYXRhLCBuZXZlckRlbGV0ZURhdGEpCiAgICB7CiAgICAgICAgbGVuZ3Ro
XyA9IGxlbmd0aDsKICAgICAgICBzdHJpZGVfID0gc3RyaWRlOwogICAgfQoKICAgICAKICAgIFZl
Y3RvcihSYW5nZSByKQogICAgICAgIDogTWVtb3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPihy
Ll9iel9zdWdnZXN0TGVuZ3RoKCkpCiAgICB7CiAgICAgICAgbGVuZ3RoXyA9IHIuX2J6X3N1Z2dl
c3RMZW5ndGgoKTsKICAgICAgICBzdHJpZGVfID0gMTsKICAgICAgICAoKnRoaXMpID0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgfQogICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgIAogICAg
IAogICAgIAogICAgIAogICAgIAogICAgIAogICAgIAogICAgdm9pZCAgICAgICAgICAgIGFzc2Vy
dFVuaXRTdHJpZGUoKQogICAgewogICAgICAgICA7CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICB9
CgogICAgVF9pdGVyYXRvciAgICAgIGJlZ2luKCkKICAgIHsgcmV0dXJuIFRfaXRlcmF0b3IoKnRo
aXMpOyB9CgogICAgVF9jb25zdEl0ZXJhdG9yIGJlZ2luKCkgIGNvbnN0CiAgICB7IHJldHVybiBU
X2NvbnN0SXRlcmF0b3IoKnRoaXMpOyB9CgogICAgVF92ZWN0b3IgICAgICAgIGNvcHkoKSAgIGNv
bnN0OwoKICAgICAKICAgICAKCiAgICBUX251bXR5cGUgKiBfX3Jlc3RyaWN0X18gIGRhdGEoKSAg
CiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZSAqIF9fcmVzdHJpY3Rf
XyAgZGF0YSgpIGNvbnN0CiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGJvb2wgICAgICAgICBp
c1VuaXRTdHJpZGUoKSBjb25zdAogICAgeyByZXR1cm4gc3RyaWRlXyA9PSAxOyB9CgogICAgaW50
ICAgICAgICBsZW5ndGgoKSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKICAgIHZvaWQg
ICAgICAgICAgICBtYWtlVW5pcXVlKCk7CgogICAgIAoKICAgICAKCiAgICB2b2lkICAgICAgICAg
ICAgcmVmZXJlbmNlKFRfdmVjdG9yJik7CgogICAgdm9pZCAgICAgICAgICAgIHJlc2l6ZShpbnQg
bGVuZ3RoKTsKCiAgICB2b2lkICAgICAgICAgICAgcmVzaXplQW5kUHJlc2VydmUoaW50IG5ld0xl
bmd0aCk7CgogICAgIAoKICAgIFRfdmVjdG9yICAgICAgICByZXZlcnNlKCkKICAgIHsgcmV0dXJu
IFRfdmVjdG9yKCp0aGlzLFJhbmdlKGxlbmd0aCgpLTEsMCwtMSkpOyB9CgogICAgaW50ICAgICAg
ICAgICAgIHN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVybiBzdHJpZGVfOyB9CgogICAgb3BlcmF0
b3IgX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFRfbnVtdHlwZT4gPiAoKSBjb25zdAogICAg
eyByZXR1cm4gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFRfbnVtdHlwZT4gPihiZWdpbigp
KTsgfQoKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKCiAgICBpbnQgICAgICAgIF9iel9z
dWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBib29sICAg
ICAgICAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25zdAogICAgeyByZXR1cm4gc3RyaWRlXyA9PSAx
OyB9CgogICAgVF9udW10eXBlJiAgICAgIF9iel9mYXN0QWNjZXNzKGludCBpKQogICAgeyByZXR1
cm4gZGF0YV9baV07IH0KCiAgICBUX251bXR5cGUgICAgICAgX2J6X2Zhc3RBY2Nlc3MoaW50IGkp
IGNvbnN0CiAgICB7IHJldHVybiBkYXRhX1tpXTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhw
ciwgY2xhc3MgUF91cGRhdGVyPgogICAgdm9pZCAgICAgICAgICAgIF9iel9hc3NpZ24oUF9leHBy
LCBQX3VwZGF0ZXIpOwoKICAgIF9iel9WZWNFeHByPFRfY29uc3RJdGVyYXRvcj4gX2J6X2FzVmVj
RXhwcigpIGNvbnN0CiAgICB7IHJldHVybiBfYnpfVmVjRXhwcjxUX2NvbnN0SXRlcmF0b3I+KGJl
Z2luKCkpOyB9CgogICAgIAogICAgIAogICAgIAoKICAgICAKICAgICAKICAgIFRfbnVtdHlwZSAg
ICAgICAgb3BlcmF0b3IoKShpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgICA7
CiAgICAgICAgcmV0dXJuIGRhdGFfW2ldOwogICAgfQoKICAgICAKICAgICAKICAgIFRfbnVtdHlw
ZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKGludCBpKSAKICAgIHsKICAgICAgICAgOwogICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2ldOwogICAgfQoKICAgIFRfbnVtdHlwZSAgICAg
ICAgb3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVy
biBkYXRhX1tpICogc3RyaWRlX107CiAgICB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18g
IG9wZXJhdG9yW10oaW50IGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZGF0YV9b
aSAqIHN0cmlkZV9dOwogICAgfQoKICAgIFRfdmVjdG9yICAgICAgb3BlcmF0b3IoKShSYW5nZSBy
KQogICAgewogICAgICAgIHJldHVybiBUX3ZlY3RvcigqdGhpcywgcik7CiAgICB9CgogICAgVF92
ZWN0b3IgICAgICBvcGVyYXRvcltdKFJhbmdlIHIpCiAgICB7CiAgICAgICAgcmV0dXJuIFRfdmVj
dG9yKCp0aGlzLCByKTsKICAgIH0KCiAgICBUX3BpY2sgICAgICAgIG9wZXJhdG9yKCkoVF9pbmRl
eFZlY3RvciBpKQogICAgewogICAgICAgIHJldHVybiBUX3BpY2soKnRoaXMsIGkpOwogICAgfQoK
ICAgIFRfcGljayAgICAgICAgb3BlcmF0b3JbXShUX2luZGV4VmVjdG9yIGkpCiAgICB7CiAgICAg
ICAgcmV0dXJuIFRfcGljaygqdGhpcywgaSk7CiAgICB9CgogICAgIAoKICAgICAKICAgICAKICAg
ICAKCiAgICAgCiAgICBMaXN0SW5pdGlhbGl6YXRpb25Td2l0Y2g8VF92ZWN0b3IsVF9pdGVyYXRv
cj4gb3BlcmF0b3I9KFRfbnVtdHlwZSB4KQogICAgewogICAgICAgIHJldHVybiBMaXN0SW5pdGlh
bGl6YXRpb25Td2l0Y2g8VF92ZWN0b3IsVF9pdGVyYXRvcj4oKnRoaXMsIHgpOwogICAgfQoKICAg
IFRfaXRlcmF0b3IgZ2V0SW5pdGlhbGl6YXRpb25JdGVyYXRvcigpCiAgICB7IHJldHVybiBiZWdp
bigpOyB9CgogICAgVF92ZWN0b3ImIGluaXRpYWxpemUoVF9udW10eXBlKTsKICAgIFRfdmVjdG9y
JiBvcGVyYXRvcis9KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3ItPShUX251bXR5
cGUpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0oVF9udW10eXBlKTsKICAgIFRfdmVjdG9yJiBv
cGVyYXRvci89KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3IlPShUX251bXR5cGUp
OwogICAgVF92ZWN0b3ImIG9wZXJhdG9yXj0oVF9udW10eXBlKTsKICAgIFRfdmVjdG9yJiBvcGVy
YXRvciY9KFRfbnVtdHlwZSk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3J8PShUX251bXR5cGUpOwog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yPj49KGludCk7CiAgICBUX3ZlY3RvciYgb3BlcmF0b3I8PD0o
aW50KTsgCgogICAgIAogICAKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IFRfdmVjdG9y
JiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwoKICAgICAKICAgICAKICAg
ICAKICAgICAKCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0
b3IrPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3ItPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IqPShjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBU
X3ZlY3RvciYgb3BlcmF0b3IvPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3IlPShjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYg
b3BlcmF0b3JePShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3ImPShjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3J8
PShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUyPiBUX3ZlY3RvciYgb3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwog
ICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF92ZWN0b3ImIG9wZXJhdG9yPDw9KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiAmKTsKCiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+
IFRfdmVjdG9yJiBvcGVyYXRvcj0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhwcj4pOyAK
ICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yLT0oX2J6X1ZlY0V4
cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRv
cio9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3Zl
Y3RvciYgb3BlcmF0b3IvPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNz
IFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yJT0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfdmVjdG9yJiBvcGVyYXRvcl49KF9iel9WZWNFeHByPFBf
ZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3ZlY3RvciYgb3BlcmF0b3ImPShf
YnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3Im
IG9wZXJhdG9yfD0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHI+IFRfdmVjdG9yJiBvcGVyYXRvcj4+PShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4gVF92ZWN0b3ImIG9wZXJhdG9yPDw9KF9iel9WZWNFeHByPFBfZXhw
cj4pOwogICAgCiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAgIFRfdmVj
dG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF92ZWN0b3ImIG9wZXJhdG9yKz0oY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yLT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsK
ICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+IAogICAgVF92ZWN0b3ImIG9wZXJhdG9yLz0oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3Bl
cmF0b3IlPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgogICAgVF92ZWN0
b3ImIG9wZXJhdG9yJj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CiAgICBUX3ZlY3RvciYgb3BlcmF0b3J8PShjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAg
IFRfdmVjdG9yJiBvcGVyYXRvcj4+PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwog
ICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcjw8PShj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwoKICAgICAKICAgIFRfdmVjdG9yJiBvcGVy
YXRvcj0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yKz0oUmFuZ2UpOwogICAgVF92ZWN0
b3ImIG9wZXJhdG9yLT0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yKj0oUmFuZ2UpOwog
ICAgVF92ZWN0b3ImIG9wZXJhdG9yLz0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yJT0o
UmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yXj0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9w
ZXJhdG9yJj0oUmFuZ2UpOwogICAgVF92ZWN0b3ImIG9wZXJhdG9yfD0oUmFuZ2UpOwogICAgVF92
ZWN0b3ImIG9wZXJhdG9yPj49KFJhbmdlKTsKICAgIFRfdmVjdG9yJiBvcGVyYXRvcjw8PShSYW5n
ZSk7CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3ZlY3Rv
ciYgb3BlcmF0b3I9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0
ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcis9KFJhbmRvbTxQ
X2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlv
bj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci09KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRv
bSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVy
YXRvcio9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvci89KFJhbmRvbTxQX2Rpc3Ry
aWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAg
IFRfdmVjdG9yJiBvcGVyYXRvciU9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAg
ICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvcl49
KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rp
c3RyaWJ1dGlvbj4KICAgIFRfdmVjdG9yJiBvcGVyYXRvciY9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlv
bj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfdmVj
dG9yJiBvcGVyYXRvcnw9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CgogICAgIAog
ICAgIAogICAgIAoKIAogCiAKIAogICAgCiAgICB1c2luZyAgICBUX0Jhc2U6OmRhdGFfOwoKcHJp
dmF0ZToKICAgIGludCAgICAgIGxlbmd0aF87CiAgICBpbnQgICAgICBzdHJpZGVfOwp9OwoKIAoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mIG9z
LCBjb25zdCBWZWN0b3I8UF9udW10eXBlPiYgeCk7Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+Cm9z
dHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3MsIF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcik7
Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjaXRl
ci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
ZGVmaW5lIEJaX1ZFQ0lURVJfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgVmVjdG9ySXRlciB7CnB1YmxpYzoKICAgIHR5cGVkZWYg
UF9udW10eXBlIFRfbnVtdHlwZTsKCiAgICBleHBsaWNpdCAgVmVjdG9ySXRlcihWZWN0b3I8UF9u
dW10eXBlPiYgeCkKICAgICAgICA6IGRhdGFfKHguZGF0YSgpKQogICAgewogICAgICAgIHN0cmlk
ZV8gPSB4LnN0cmlkZSgpOwogICAgICAgIGxlbmd0aF8gPSB4Lmxlbmd0aCgpOwogICAgfQoKICAg
IFZlY3Rvckl0ZXIoUF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGRhdGEsIGludCBzdHJpZGUsIGlu
dCBsZW5ndGgpCiAgICAgICAgOiBkYXRhXyhkYXRhKSwgc3RyaWRlXyhzdHJpZGUpLCBsZW5ndGhf
KGxlbmd0aCkKICAgIHsgfQoKCiAgICBWZWN0b3JJdGVyKGNvbnN0IFZlY3Rvckl0ZXI8UF9udW10
eXBlPiYgeCkKICAgIHsKICAgICAgICBkYXRhXyA9IHguZGF0YV87CiAgICAgICAgc3RyaWRlXyA9
IHguc3RyaWRlXzsKICAgICAgICBsZW5ndGhfID0geC5sZW5ndGhfOwogICAgfQoKCiAgICBQX251
bXR5cGUgb3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsgCiAgICAgICAgIDsKICAgICAgICBy
ZXR1cm4gZGF0YV9baSpzdHJpZGVfXTsgCiAgICB9CgogICAgUF9udW10eXBlJiBfX3Jlc3RyaWN0
X18gIG9wZXJhdG9yW10oaW50IGkpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRh
dGFfW2kqc3RyaWRlX107IAogICAgfQoKICAgIFBfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpKSBj
b25zdAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kqc3RyaWRlX107CiAg
ICB9CgogICAgUF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIG9wZXJhdG9yKCkoaW50IGkpIAogICAg
ewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kqc3RyaWRlX107CiAgICB9CgogICAg
UF9udW10eXBlIG9wZXJhdG9yKigpIGNvbnN0CiAgICB7IHJldHVybiAqZGF0YV87IH0KCiAgICBQ
X251bXR5cGUmIG9wZXJhdG9yKigpCiAgICB7IHJldHVybiAqZGF0YV87IH0KCiAgICBWZWN0b3JJ
dGVyPFBfbnVtdHlwZT4gb3BlcmF0b3IrKGludCBpKQogICAgewogICAgICAgICAKICAgICAgICBy
ZXR1cm4gVmVjdG9ySXRlcjxQX251bXR5cGU+KGRhdGFfK2kqc3RyaWRlXywgc3RyaWRlXywgbGVu
Z3RoXy1pKTsKICAgIH0KCiAgICBpbnQgbGVuZ3RoKGludCkgY29uc3QKICAgIHsgcmV0dXJuIGxl
bmd0aF87IH0KCiAgICBib29sICBpc1VuaXRTdHJpZGUoKSBjb25zdAogICAgeyByZXR1cm4gKHN0
cmlkZV8gPT0gMSk7IH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgZW51bSB7
IF9iel9zdGF0aWNMZW5ndGhDb3VudCA9IDAsCiAgICAgICAgICAgX2J6X2R5bmFtaWNMZW5ndGhD
b3VudCA9IDEsCiAgICAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9IDAgfTsKCiAgICBib29sICBf
YnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVybiBpc1VuaXRTdHJpZGUoKTsgfQoK
ICAgIFBfbnVtdHlwZSBfYnpfZmFzdEFjY2VzcyhpbnQgaSkgY29uc3QKICAgIHsgcmV0dXJuIGRh
dGFfW2ldOyB9CgogICAgUF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIF9iel9mYXN0QWNjZXNzKGlu
dCBpKQogICAgeyByZXR1cm4gZGF0YV9baV07IH0KCiAgICBpbnQgX2J6X3N1Z2dlc3RMZW5ndGgo
KSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKcHJpdmF0ZToKICAgIFZlY3Rvckl0ZXIo
KSB7IH0KICAgIFBfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgZGF0YV87CiAgICBpbnQgc3RyaWRl
XzsKICAgIGludCBsZW5ndGhfOwp9OwoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3Mg
VmVjdG9ySXRlckNvbnN0IHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBl
OwoKICAgIGV4cGxpY2l0ICBWZWN0b3JJdGVyQ29uc3QoY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4m
IHgpCiAgICAgICAgOiBkYXRhXyh4LmRhdGEoKSkKICAgIHsKICAgICAgICBzdHJpZGVfID0geC5z
dHJpZGUoKTsKICAgICAgICBsZW5ndGhfID0geC5sZW5ndGgoKTsKICAgIH0KCgogICAgVmVjdG9y
SXRlckNvbnN0KGNvbnN0IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGU+JiB4KQogICAgewogICAg
ICAgIGRhdGFfID0geC5kYXRhXzsKICAgICAgICBzdHJpZGVfID0geC5zdHJpZGVfOwogICAgICAg
IGxlbmd0aF8gPSB4Lmxlbmd0aF87CiAgICB9CgoKICAgIFBfbnVtdHlwZSBvcGVyYXRvcltdKGlu
dCBpKSBjb25zdAogICAgeyAKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpKnN0cmlk
ZV9dOyAKICAgIH0KCiAgICBQX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaSkgY29uc3QKICAgIHsK
ICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tpKnN0cmlkZV9dOwogICAgfQoKICAgIGlu
dCBsZW5ndGgoaW50KSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKICAgIGJvb2wgIGlz
VW5pdFN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVybiAoc3RyaWRlXyA9PSAxKTsgfQoKICAgICAK
ICAgICAKICAgICAKICAgICAKICAgICAKCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0aENvdW50
ID0gMCwKICAgICAgICAgICBfYnpfZHluYW1pY0xlbmd0aENvdW50ID0gMSwKICAgICAgICAgICBf
Ynpfc3RhdGljTGVuZ3RoID0gMCB9OwoKICAgIGJvb2wgICBfYnpfaGFzRmFzdEFjY2VzcygpIGNv
bnN0CiAgICB7IHJldHVybiBpc1VuaXRTdHJpZGUoKTsgfQoKICAgIFBfbnVtdHlwZSBfYnpfZmFz
dEFjY2VzcyhpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gZGF0YV9baV07CiAgICB9
CgogICAgaW50IF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87
IH0KCnByaXZhdGU6CiAgICBjb25zdCBQX251bXR5cGUgKiBfX3Jlc3RyaWN0X18gIGRhdGFfOwog
ICAgaW50IHN0cmlkZV87CiAgICBpbnQgbGVuZ3RoXzsKfTsKCn0gCgoKIyA0OTQgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuaCIgMgoKIyAxICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5oIiAxCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDUElDS19I
CgogCgoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZT4gY2xhc3MgVmVjdG9yUGlja0l0ZXI7CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gY2xh
c3MgVmVjdG9yUGlja0l0ZXJDb25zdDsKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xh
c3MgVmVjdG9yUGljayB7CgpwdWJsaWM6CiAgICAgCiAgICAgCiAgICAgCgogICAgdHlwZWRlZiBQ
X251bXR5cGUgICAgICAgICAgICAgICAgICAgICAgVF9udW10eXBlOwogICAgdHlwZWRlZiBWZWN0
b3I8VF9udW10eXBlPiAgICAgICAgICAgICAgVF92ZWN0b3I7CiAgICB0eXBlZGVmIFZlY3Rvcjxp
bnQ+ICAgICAgICAgICAgICAgICAgICBUX2luZGV4VmVjdG9yOwogICAgdHlwZWRlZiBWZWN0b3JQ
aWNrPFRfbnVtdHlwZT4gICAgICAgICAgVF9waWNrOwogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRl
cjxUX251bXR5cGU+ICAgICAgVF9pdGVyYXRvcjsKICAgIHR5cGVkZWYgVmVjdG9yUGlja0l0ZXJD
b25zdDxUX251bXR5cGU+IFRfY29uc3RJdGVyYXRvcjsKCiAgICAgCiAgICAgCiAgICAgCgogICAg
VmVjdG9yUGljayhUX3ZlY3RvciYgdmVjdG9yLCBUX2luZGV4VmVjdG9yJiBpbmRleGFyZykKICAg
ICAgICA6IHZlY3Rvcl8odmVjdG9yKSwgaW5kZXhfKGluZGV4YXJnKQogICAgeyB9CgogICAgVmVj
dG9yUGljayhjb25zdCBUX3BpY2smIHZlY3BpY2spCiAgICAgICAgOiB2ZWN0b3JfKGNvbnN0X2Nh
c3Q8VF92ZWN0b3ImPih2ZWNwaWNrLnZlY3Rvcl8pKSwgCiAgICAgICAgICBpbmRleF8oY29uc3Rf
Y2FzdDxUX2luZGV4VmVjdG9yJj4odmVjcGljay5pbmRleF8pKQogICAgeyB9CgogICAgVmVjdG9y
UGljayhUX3BpY2smIHZlY3BpY2ssIFJhbmdlIHIpCiAgICAgICAgOiB2ZWN0b3JfKHZlY3BpY2su
dmVjdG9yXyksIGluZGV4Xyh2ZWNwaWNrLmluZGV4X1tyXSkKICAgIHsgfQogCiAgICAgCiAgICAg
CiAgICAgCgogICAgVF9pdGVyYXRvciAgICAgICAgIGJlZ2luKCkKICAgIHsgcmV0dXJuIFZlY3Rv
clBpY2tJdGVyPFRfbnVtdHlwZT4oKnRoaXMpOyB9CgogICAgVF9jb25zdEl0ZXJhdG9yICAgIGJl
Z2luKCkgICAgICBjb25zdAogICAgeyByZXR1cm4gVmVjdG9yUGlja0l0ZXJDb25zdDxUX251bXR5
cGU+KCp0aGlzKTsgfQoKICAgICAKCiAgICAgCgogICAgIAoKICAgIFRfaW5kZXhWZWN0b3ImICAg
ICBpbmRleFNldCgpCiAgICB7IHJldHVybiBpbmRleF87IH0KIAogICAgY29uc3QgVF9pbmRleFZl
Y3RvciYgaW5kZXhTZXQoKSAgICAgIGNvbnN0CiAgICB7IHJldHVybiBpbmRleF87IH0KCiAgICBp
bnQgICAgICAgICAgIGxlbmd0aCgpICAgICBjb25zdAogICAgeyByZXR1cm4gaW5kZXhfLmxlbmd0
aCgpOyB9CgogICAgdm9pZCAgICAgICAgICAgICAgIHNldFZlY3RvcihWZWN0b3I8VF9udW10eXBl
PiYgeCkKICAgIHsgdmVjdG9yXy5yZWZlcmVuY2UoeCk7IH0KCiAgICB2b2lkICAgICAgICAgICAg
ICAgc2V0SW5kZXgoVmVjdG9yPGludD4mIGluZGV4KQogICAgeyBpbmRleF8ucmVmZXJlbmNlKGlu
ZGV4KTsgfQoKICAgIFRfdmVjdG9yJiAgICAgICAgICB2ZWN0b3IoKQogICAgeyByZXR1cm4gdmVj
dG9yXzsgfQoKICAgIGNvbnN0IFRfdmVjdG9yJiAgICB2ZWN0b3IoKSAgICAgY29uc3QKICAgIHsg
cmV0dXJuIHZlY3Rvcl87IH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgaW50
ICAgICAgICBfYnpfc3VnZ2VzdExlbmd0aCgpIGNvbnN0CiAgICB7IHJldHVybiBpbmRleF8ubGVu
Z3RoKCk7IH0KCiAgICBib29sICAgICAgICAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25zdAogICAg
eyByZXR1cm4gdmVjdG9yXy5fYnpfaGFzRmFzdEFjY2VzcygpICYmIGluZGV4Xy5fYnpfaGFzRmFz
dEFjY2VzcygpOyB9CgogICAgVF9udW10eXBlJiAgICAgIF9iel9mYXN0QWNjZXNzKGludCBpKQog
ICAgeyByZXR1cm4gdmVjdG9yXy5fYnpfZmFzdEFjY2VzcyhpbmRleF8uX2J6X2Zhc3RBY2Nlc3Mo
aSkpOyB9CgogICAgVF9udW10eXBlICAgICAgIF9iel9mYXN0QWNjZXNzKGludCBpKSBjb25zdAog
ICAgeyByZXR1cm4gdmVjdG9yXy5fYnpfZmFzdEFjY2VzcyhpbmRleF8uX2J6X2Zhc3RBY2Nlc3Mo
aSkpOyB9CgogICAgX2J6X1ZlY0V4cHI8VF9jb25zdEl0ZXJhdG9yPiBfYnpfYXNWZWNFeHByKCkg
Y29uc3QKICAgIHsgcmV0dXJuIF9iel9WZWNFeHByPFRfY29uc3RJdGVyYXRvcj4oYmVnaW4oKSk7
IH0KCiAgICAgCiAgICAgCiAgICAgCgogICAgVF9udW10eXBlICAgICAgIG9wZXJhdG9yKCkoaW50
IGkpIGNvbnN0CiAgICB7IAogICAgICAgICA7CiAgICAgICAgIDsKICAgICAgICAgOwogICAgICAg
ICA7CiAgICAgICAgcmV0dXJuIHZlY3Rvcl8oaW5kZXhfKGkpKTsKICAgIH0KCiAgICBUX251bXR5
cGUmICAgICAgb3BlcmF0b3IoKShpbnQgaSkKICAgIHsKICAgICAgICAgOwogICAgICAgICA7CiAg
ICAgICAgIDsKICAgICAgICAgOwogICAgICAgIHJldHVybiB2ZWN0b3JfKGluZGV4XyhpKSk7CiAg
ICB9CgogICAgVF9udW10eXBlICAgICAgIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgICB7CiAg
ICAgICAgIDsKICAgICAgICAgOwogICAgICAgICA7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4g
dmVjdG9yX1tpbmRleF9baV1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgICAgICBvcGVyYXRvcltd
KGludCBpKQogICAgewogICAgICAgICA7CiAgICAgICAgIDsKICAgICAgICAgOwogICAgICAgICA7
CiAgICAgICAgcmV0dXJuIHZlY3Rvcl9baW5kZXhfW2ldXTsKICAgIH0KCiAgICBUX3BpY2sgICAg
ICAgICAgb3BlcmF0b3IoKShSYW5nZSByKQogICAgewogICAgICAgIHJldHVybiBUX3BpY2soKnRo
aXMsIGluZGV4X1tyXSk7CiAgICB9CgogICAgVF9waWNrICAgICAgICAgIG9wZXJhdG9yW10oUmFu
Z2UgcikKICAgIHsKICAgICAgICByZXR1cm4gVF9waWNrKCp0aGlzLCBpbmRleF9bcl0pOwogICAg
fQoKICAgICAKICAgICAKICAgICAKCiAgICAgCiAgICBUX3BpY2smIG9wZXJhdG9yPShUX251bXR5
cGUpOwogICAgVF9waWNrJiBvcGVyYXRvcis9KFRfbnVtdHlwZSk7CiAgICBUX3BpY2smIG9wZXJh
dG9yLT0oVF9udW10eXBlKTsKICAgIFRfcGljayYgb3BlcmF0b3IqPShUX251bXR5cGUpOwogICAg
VF9waWNrJiBvcGVyYXRvci89KFRfbnVtdHlwZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yJT0oVF9u
dW10eXBlKTsKICAgIFRfcGljayYgb3BlcmF0b3JePShUX251bXR5cGUpOwogICAgVF9waWNrJiBv
cGVyYXRvciY9KFRfbnVtdHlwZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yfD0oVF9udW10eXBlKTsK
ICAgIFRfcGljayYgb3BlcmF0b3I+Pj0oaW50KTsKICAgIFRfcGljayYgb3BlcmF0b3I8PD0oaW50
KTsKCiAgICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3BpY2smIG9wZXJhdG9y
PShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUyPiBUX3BpY2smIG9wZXJhdG9yKz0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYpOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVyYXRvci09KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IFRfcGljayYg
b3BlcmF0b3IqPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPiBUX3BpY2smIG9wZXJhdG9yLz0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVyYXRvciU9KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
IFRfcGljayYgb3BlcmF0b3JePShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4gJik7CiAgICB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPiBUX3BpY2smIG9wZXJhdG9yJj0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVy
YXRvcnw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+IFRfcGljayYgb3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+ICYp
OwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gVF9waWNrJiBvcGVyYXRvcjw8PShjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4gJik7CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHBy
PiBUX3BpY2smIG9wZXJhdG9yPShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNs
YXNzIFBfZXhwcj4gVF9waWNrJiBvcGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAg
dGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3BpY2smIG9wZXJhdG9yLT0oX2J6X1ZlY0V4cHI8UF9l
eHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfcGljayYgb3BlcmF0b3IqPShfYnpf
VmVjRXhwcjxQX2V4cHI+KTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gVF9waWNrJiBvcGVy
YXRvci89KF9iel9WZWNFeHByPFBfZXhwcj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBU
X3BpY2smIG9wZXJhdG9yJT0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHI+IFRfcGljayYgb3BlcmF0b3JePShfYnpfVmVjRXhwcjxQX2V4cHI+KTsKICAgIHRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4gVF9waWNrJiBvcGVyYXRvciY9KF9iel9WZWNFeHByPFBfZXhw
cj4pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByPiBUX3BpY2smIG9wZXJhdG9yfD0oX2J6X1Zl
Y0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRfcGljayYgb3BlcmF0
b3I+Pj0oX2J6X1ZlY0V4cHI8UF9leHByPik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+IFRf
cGljayYgb3BlcmF0b3I8PD0oX2J6X1ZlY0V4cHI8UF9leHByPik7CgogICAgIAogICAgVF9waWNr
JiBvcGVyYXRvcj0oUmFuZ2UpOwogICAgVF9waWNrJiBvcGVyYXRvcis9KFJhbmdlKTsKICAgIFRf
cGljayYgb3BlcmF0b3ItPShSYW5nZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yKj0oUmFuZ2UpOwog
ICAgVF9waWNrJiBvcGVyYXRvci89KFJhbmdlKTsKICAgIFRfcGljayYgb3BlcmF0b3IlPShSYW5n
ZSk7CiAgICBUX3BpY2smIG9wZXJhdG9yXj0oUmFuZ2UpOwogICAgVF9waWNrJiBvcGVyYXRvciY9
KFJhbmdlKTsKICAgIFRfcGljayYgb3BlcmF0b3J8PShSYW5nZSk7CiAgICBUX3BpY2smIG9wZXJh
dG9yPj49KFJhbmdlKTsKICAgIFRfcGljayYgb3BlcmF0b3I8PD0oUmFuZ2UpOwoKICAgICAKICAg
IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF9waWNrJiBvcGVyYXRvcj0oY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
IAogICAgVF9waWNrJiBvcGVyYXRvcis9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7
CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAgIFRfcGljayYgb3BlcmF0b3ItPShj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4gCiAgICBUX3BpY2smIG9wZXJhdG9yKj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiAmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+IAogICAgVF9waWNrJiBvcGVyYXRv
ci89KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUyPiAKICAgIFRfcGljayYgb3BlcmF0b3IlPShjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+ICYpOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4gCiAgICBUX3BpY2smIG9w
ZXJhdG9yXj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKICAgIHRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTI+IAogICAgVF9waWNrJiBvcGVyYXRvciY9KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAgIFRfcGlj
ayYgb3BlcmF0b3J8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+ICYpOwogICAgdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4gCiAgICBUX3BpY2smIG9wZXJhdG9yPj49KGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4gJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPiAKICAg
IFRfcGljayYgb3BlcmF0b3I8PD0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiAmKTsKCiAg
ICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfcGljayYgb3BlcmF0
b3I9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQ
X2Rpc3RyaWJ1dGlvbj4KICAgIFRfcGljayYgb3BlcmF0b3IrPShSYW5kb208UF9kaXN0cmlidXRp
b24+JiByYW5kb20pOwogICAgdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3Bp
Y2smIG9wZXJhdG9yLT0oUmFuZG9tPFBfZGlzdHJpYnV0aW9uPiYgcmFuZG9tKTsKICAgIHRlbXBs
YXRlPGNsYXNzIFBfZGlzdHJpYnV0aW9uPgogICAgVF9waWNrJiBvcGVyYXRvcio9KFJhbmRvbTxQ
X2Rpc3RyaWJ1dGlvbj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlv
bj4KICAgIFRfcGljayYgb3BlcmF0b3IvPShSYW5kb208UF9kaXN0cmlidXRpb24+JiByYW5kb20p
OwogICAgdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3BpY2smIG9wZXJhdG9y
JT0oUmFuZG9tPFBfZGlzdHJpYnV0aW9uPiYgcmFuZG9tKTsKICAgIHRlbXBsYXRlPGNsYXNzIFBf
ZGlzdHJpYnV0aW9uPgogICAgVF9waWNrJiBvcGVyYXRvcl49KFJhbmRvbTxQX2Rpc3RyaWJ1dGlv
bj4mIHJhbmRvbSk7CiAgICB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KICAgIFRfcGlj
ayYgb3BlcmF0b3ImPShSYW5kb208UF9kaXN0cmlidXRpb24+JiByYW5kb20pOwogICAgdGVtcGxh
dGU8Y2xhc3MgUF9kaXN0cmlidXRpb24+CiAgICBUX3BpY2smIG9wZXJhdG9yfD0oUmFuZG9tPFBf
ZGlzdHJpYnV0aW9uPiYgcmFuZG9tKTsKCnByaXZhdGU6CiAgICBWZWN0b3JQaWNrKCkgeyB9Cgog
ICAgdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFzcyBQX3VwZGF0ZXI+CiAgICBpbmxpbmUgdm9p
ZCBfYnpfYXNzaWduKFBfZXhwciwgUF91cGRhdGVyKTsKCnByaXZhdGU6CiAgICBUX3ZlY3RvciB2
ZWN0b3JfOwogICAgVF9pbmRleFZlY3RvciBpbmRleF87Cn07Cgp9IAoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5jYyIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ1BJQ0tfQ0MKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei91cGRhdGUuaCIgMQogCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1VQREFURV9ICgoKCgoK
bmFtZXNwYWNlICBibGl0eiAgeyAKCmNsYXNzIF9iel91cGRhdGVyX2Jhc2UgeyB9OwoKI2RlZmlu
ZSBCWl9ERUNMX1VQREFURVIobmFtZSxvcCxzeW1ib2wpIHRlbXBsYXRlPGNsYXNzIFgsIGNsYXNz
IFk+IGNsYXNzIG5hbWUgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzogc3RhdGlj
IGlubGluZSB2b2lkIHVwZGF0ZShYJiBfYnpfcmVzdHJpY3QgeCwgWSB5KSB7IHggb3AgeTsgfSBz
dGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0cikgeyBzdHIgKz0gc3ltYm9sOyB9IH0K
IyA2NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3VwZGF0ZS5oIgoK
dGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KY2xhc3MgX2J6X3VwZGF0ZSA6IHB1YmxpYyBfYnpf
dXBkYXRlcl9iYXNlIHsKICBwdWJsaWM6CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlKFgm
IF9fcmVzdHJpY3RfXyAgeCwgWSB5KQogICAgeyB4ID0gKFgpeTsgfQoKICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyKQogICAgeyBzdHIgKz0gIj0iOyB9Cn07Cgp0ZW1wbGF0
ZTxjbGFzcyBYLCBjbGFzcyBZPiBjbGFzcyAgX2J6X3BsdXNfdXBkYXRlICA6IHB1YmxpYyBfYnpf
dXBkYXRlcl9iYXNlIHsgcHVibGljOiBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlKFgmIF9fcmVz
dHJpY3RfXyAgeCwgWSB5KSB7IHggICArPSAgeTsgfSBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0cikgeyBzdHIgKz0gICAiKz0iIDsgfSB9IDsKdGVtcGxhdGU8Y2xhc3MgWCwgY2xh
c3MgWT4gY2xhc3MgIF9iel9taW51c191cGRhdGUgIDogcHVibGljIF9iel91cGRhdGVyX2Jhc2Ug
eyBwdWJsaWM6IHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGUoWCYgX19yZXN0cmljdF9fICB4LCBZ
IHkpIHsgeCAgIC09ICB5OyB9IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyKSB7
IHN0ciArPSAgICItPSIgOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPiBjbGFzcyAg
X2J6X211bHRpcGx5X3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzog
c3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4ICAg
Kj0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAg
Iio9IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfZGl2aWRl
X3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzogc3RhdGljIGlubGlu
ZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4ICAgLz0gIHk7IH0gc3Rh
dGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAgIi89IiA7IH0gfSA7
CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfbW9kX3VwZGF0ZSAgOiBwdWJs
aWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1YmxpYzogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShY
JiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4ICAgJT0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAgIiU9IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNz
IFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfeG9yX3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJf
YmFzZSB7IHB1YmxpYzogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18g
IHgsIFkgeSkgeyB4ICAgXj0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBz
dHIpIHsgc3RyICs9ICAgIl49IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNs
YXNzICBfYnpfYml0YW5kX3VwZGF0ZSAgOiBwdWJsaWMgX2J6X3VwZGF0ZXJfYmFzZSB7IHB1Ymxp
Yzogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZShYJiBfX3Jlc3RyaWN0X18gIHgsIFkgeSkgeyB4
ICAgJj0gIHk7IH0gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9
ICAgIiY9IiA7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFgsIGNsYXNzIFk+IGNsYXNzICBfYnpfYml0
b3JfdXBkYXRlICA6IHB1YmxpYyBfYnpfdXBkYXRlcl9iYXNlIHsgcHVibGljOiBzdGF0aWMgaW5s
aW5lIHZvaWQgdXBkYXRlKFgmIF9fcmVzdHJpY3RfXyAgeCwgWSB5KSB7IHggICB8PSAgeTsgfSBz
dGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0cikgeyBzdHIgKz0gICAifD0iIDsgfSB9
IDsKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4gY2xhc3MgIF9iel9zaGlmdGxfdXBkYXRlICA6
IHB1YmxpYyBfYnpfdXBkYXRlcl9iYXNlIHsgcHVibGljOiBzdGF0aWMgaW5saW5lIHZvaWQgdXBk
YXRlKFgmIF9fcmVzdHJpY3RfXyAgeCwgWSB5KSB7IHggICA8PD0gIHk7IH0gc3RhdGljIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIHsgc3RyICs9ICAgIjw8PSIgOyB9IH0gOwp0ZW1wbGF0
ZTxjbGFzcyBYLCBjbGFzcyBZPiBjbGFzcyAgX2J6X3NoaWZ0cl91cGRhdGUgIDogcHVibGljIF9i
el91cGRhdGVyX2Jhc2UgeyBwdWJsaWM6IHN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGUoWCYgX19y
ZXN0cmljdF9fICB4LCBZIHkpIHsgeCAgID4+PSAgeTsgfSBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0cikgeyBzdHIgKz0gICAiPj49IiA7IH0gfSA7Cgp9IAoKCgojIDMxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5jYyIgMgoKCgoKIAoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9yYW5kb20uaCIgMQog
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfUkFORE9N
X0gKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9kaXN0cmlidXRp
b24+CmNsYXNzIFJhbmRvbSB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZGlzdHJpYnV0aW9uIFRf
ZGlzdHJpYnV0aW9uOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF9kaXN0cmlidXRpb246OlRfbnVt
dHlwZSBUX251bXR5cGU7CgogICAgUmFuZG9tKGRvdWJsZSBwYXJtMT0wLjAsIGRvdWJsZSBwYXJt
Mj0xLjAsIGRvdWJsZSBwYXJtMz0wLjApCiAgICAgICAgOiBnZW5lcmF0b3JfKHBhcm0xLCBwYXJt
MiwgcGFybTMpCiAgICB7IH0KCiAgICB2b2lkIHJhbmRvbWl6ZSgpCiAgICB7IGdlbmVyYXRvcl8u
cmFuZG9taXplKCk7IH0KICAgCiAgICBUX251bXR5cGUgcmFuZG9tKCkKICAgIHsgcmV0dXJuIGdl
bmVyYXRvcl8ucmFuZG9tKCk7IH0KCiAgICBvcGVyYXRvciBUX251bXR5cGUoKQogICAgeyByZXR1
cm4gZ2VuZXJhdG9yXy5yYW5kb20oKTsgfQoKcHJvdGVjdGVkOiAKICAgIFRfZGlzdHJpYnV0aW9u
IGdlbmVyYXRvcl87Cn07Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovcmFuZHJlZi5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiNkZWZpbmUgQlpfUkFORFJFRl9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBs
YXRlPGNsYXNzIFBfZGlzdHJpYnV0aW9uPgpjbGFzcyBfYnpfVmVjRXhwclJhbmRvbSB7CgpwdWJs
aWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBSYW5kb208UF9kaXN0cmlidXRpb24+OjpUX251bXR5
cGUgVF9udW10eXBlOwoKICAgIF9iel9WZWNFeHByUmFuZG9tKFJhbmRvbTxQX2Rpc3RyaWJ1dGlv
bj4mIHJhbmRvbSkKICAgICAgICA6IHJhbmRvbV8ocmFuZG9tKQogICAgeyB9CgoKICAgIF9iel9W
ZWNFeHByUmFuZG9tKF9iel9WZWNFeHByUmFuZG9tPFBfZGlzdHJpYnV0aW9uPiYgeCkKICAgICAg
ICA6IHJhbmRvbV8oeC5yYW5kb21fKQogICAgeyB9CgoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcltd
KHVuc2lnbmVkKSBjb25zdAogICAgeyByZXR1cm4gcmFuZG9tXy5yYW5kb20oKTsgfQoKICAgIFRf
bnVtdHlwZSBvcGVyYXRvcigpKHVuc2lnbmVkKSBjb25zdAogICAgeyByZXR1cm4gcmFuZG9tXy5y
YW5kb20oKTsgfQoKICAgIHVuc2lnbmVkIGxlbmd0aCh1bnNpZ25lZCByZWNvbW1lbmRlZExlbmd0
aCkgY29uc3QKICAgIHsgcmV0dXJuIHJlY29tbWVuZGVkTGVuZ3RoOyB9CgogICAgdW5zaWduZWQg
X2J6X3N1Z2dlc3RMZW5ndGgoKSBjb25zdAogICAgeyByZXR1cm4gMDsgfQoKICAgIGJvb2wgIF9i
el9oYXNGYXN0QWNjZXNzKCkgY29uc3QKICAgIHsgcmV0dXJuIDE7IH0KCiAgICBUX251bXR5cGUg
X2J6X2Zhc3RBY2Nlc3ModW5zaWduZWQpIGNvbnN0CiAgICB7IHJldHVybiByYW5kb21fLnJhbmRv
bSgpOyB9Cgpwcml2YXRlOgogICAgX2J6X1ZlY0V4cHJSYW5kb20oKSB7IH0KCiAgICBSYW5kb208
UF9kaXN0cmlidXRpb24+JiByYW5kb21fOwp9OwoKfSAKCgoKIyA3NSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3JhbmRvbS5oIiAyCgoKCgojIDM1ICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGljay5jYyIgMgoKCgoKIAojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNleHByLmgiIDEKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVD
RVhQUl9ICgoKCgoKCiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovYXBwbGljcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCiNkZWZpbmUgQlpfQVBQTElDU19ICgoKCgoKCgoKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKIAogCiAKY2xhc3MgQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsgfTsKY2xhc3MgVHdvT3Bl
cmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSA6IHB1YmxpYyBBcHBsaWNhdGl2ZVRlbXBsYXRl
c0Jhc2UgeyB9OwpjbGFzcyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIDogcHVi
bGljIEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7IH07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBjbGFzcyBQX251bXR5cGUyPgpjbGFzcyBfYnpfQWRkIDogcHVibGljIFR3b09wZXJhbmRB
cHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEg
VF9udW10eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRl
ZiB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsIFRfbnVtdHlwZTIgPjo6VF9w
cm9tb3RlICBUX3Byb21vdGU7IAogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAg
ICBzdGF0aWMgaW5saW5lIFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIg
eSkKICAgIHsgcmV0dXJuIHggKyB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBj
bGFzcyBQX251bXR5cGUyPgpjbGFzcyBfYnpfU3VidHJhY3QgOiBwdWJsaWMgVHdvT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVm
IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3By
b21vdGUgIFRfcHJvbW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CiAKICAg
IHN0YXRpYyBpbmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5
KQogICAgeyByZXR1cm4geCAtIHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNs
YXNzIFBfbnVtdHlwZTI+CmNsYXNzIF9iel9NdWx0aXBseSA6IHB1YmxpYyBUd29PcGVyYW5kQXBw
bGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJv
bW90ZSAgVF9wcm9tb3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBz
dGF0aWMgaW5saW5lIFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkK
ICAgIHsgcmV0dXJuIHggKiB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBQX251bXR5cGUyPgpjbGFzcyBfYnpfRGl2aWRlIDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNh
dGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10
eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiB0eXBl
bmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3Rl
ICBUX3Byb21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRp
YyBpbmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAg
eyByZXR1cm4geCAvIHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
bnVtdHlwZTI+CmNsYXNzIF9iel9Nb2QgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGlu
ZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJldHVy
biB4ICUgeTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0JpdHdpc2VYT1IgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGlu
ZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJldHVy
biB4IF4geTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0JpdHdpc2VBbmQgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGlu
ZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJldHVy
biB4ICYgeTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0JpdHdpc2VPciA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggfCB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUy
PgpjbGFzcyBfYnpfU2hpZnRSaWdodCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggPj4geTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X1NoaWZ0TGVmdCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggPDwgeTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KY2xhc3MgX2J6X0dyZWF0ZXIgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxh
dGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAg
dHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIGJvb2wgICAgVF9wcm9t
b3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJu
IHggPiB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUy
PgpjbGFzcyBfYnpfTGVzcyA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNC
YXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAgICBUX3Byb21vdGU7
CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9w
cm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAgeyByZXR1cm4geCA8
IHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmNs
YXNzIF9iel9HcmVhdGVyT3JFcXVhbCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAgICBUX3By
b21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAgeyByZXR1
cm4geCA+PSB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5
cGUyPgpjbGFzcyBfYnpfTGVzc09yRXF1YWwgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUx
OwogICAgdHlwZWRlZiBQX251bXR5cGUyIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIGJvb2wgICAg
VF9wcm9tb3RlOwogICAgdHlwZWRlZiBUX3Byb21vdGUgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfcHJvbW90ZSBhcHBseShQX251bXR5cGUxIHgsIFBfbnVtdHlwZTIgeSkKICAgIHsg
cmV0dXJuIHggPD0geTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9u
dW10eXBlMj4KY2xhc3MgX2J6X0VxdWFsIDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNhdGl2ZVRl
bXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsK
ICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiBib29sICAgIFRf
cHJvbW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAgICB7IHJl
dHVybiB4ID09IHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVt
dHlwZTI+CmNsYXNzIF9iel9Ob3RFcXVhbCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRpdmVU
ZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7
CiAgICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAgICBU
X3Byb21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBp
bmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAgeyBy
ZXR1cm4geCAhPSB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgpjbGFzcyBfYnpfTG9naWNhbEFuZCA6IHB1YmxpYyBUd29PcGVyYW5kQXBwbGljYXRp
dmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlw
ZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTIgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgYm9vbCAg
ICBUX3Byb21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgVF9udW10eXBlOwoKICAgIHN0YXRp
YyBpbmxpbmUgVF9wcm9tb3RlIGFwcGx5KFBfbnVtdHlwZTEgeCwgUF9udW10eXBlMiB5KQogICAg
eyByZXR1cm4geCAmJiB5OyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQ
X251bXR5cGUyPgpjbGFzcyBfYnpfTG9naWNhbE9yIDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNh
dGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10
eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiBib29s
ICAgIFRfcHJvbW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICBUX251bXR5cGU7CgogICAgc3Rh
dGljIGlubGluZSBUX3Byb21vdGUgYXBwbHkoUF9udW10eXBlMSB4LCBQX251bXR5cGUyIHkpCiAg
ICB7IHJldHVybiB4IHx8IHk7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZV9pbiwgY2xh
c3MgUF9udW10eXBlX291dD4KY2xhc3MgX2J6X0Nhc3QgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxp
Y2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlX2luIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZV9vdXQgVF9wcm9tb3RlOwogICAgdHlwZWRl
ZiBUX3Byb21vdGUgICAgIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFBfbnVtdHlwZV9v
dXQgYXBwbHkoUF9udW10eXBlX2luIHgpCiAgICB7IHJldHVybiBQX251bXR5cGVfb3V0KHgpOyB9
Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmNsYXNzIF9iel9Mb2dpY2FsTm90IDogcHVi
bGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBl
ZGVmIFBfbnVtdHlwZSAgICAgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgYm9vbCAgICAgICBUX3By
b21vdGU7CiAgICB0eXBlZGVmIFRfcHJvbW90ZSAgICAgVF9udW10eXBlOwoKICAgIHN0YXRpYyBp
bmxpbmUgUF9udW10eXBlIGFwcGx5KFBfbnVtdHlwZSB4KQogICAgeyByZXR1cm4gIXg7IH0KfTsK
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgX2J6X0JpdHdpc2VOb3QgOiBwdWJsaWMg
T25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYg
UF9udW10eXBlICAgICBUX251bXR5cGUxOwogICAgdHlwZWRlZiBUX251bXR5cGUxICAgIFRfcHJv
bW90ZTsKICAgIHR5cGVkZWYgVF9wcm9tb3RlICAgICBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBQX251bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpCiAgICB7IHJldHVybiB+eDsgfQp9OwoK
IAoKCgogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAK
IAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAogCiAKIAog
CiAKIAogCiAKIAogCiAKIAogCgoKfSAKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiIDEKIAoKCiNkZWZpbmUgQlpfTUFUSEZVTkNfSAoK
CgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9wcmV0
dHlwcmludC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUg
QlpfUFJFVFRZUFJJTlRfSAoKbmFtZXNwYWNlICBibGl0eiAgeyAKCmNsYXNzIHByZXR0eVByaW50
Rm9ybWF0IHsKCnB1YmxpYzoKICAgIHByZXR0eVByaW50Rm9ybWF0KGJvb2wgIHRlcnNlID0gZmFs
c2UgKQogICAgICA6IHRlcnNlUHJpbnRpbmdTZWxlY3RlZF8odGVyc2UpCiAgICB7CiAgICAgICAg
YXJyYXlPcGVyYW5kQ291bnRlcl8gPSAwOwogICAgICAgIHNjYWxhck9wZXJhbmRDb3VudGVyXyA9
IDA7CiAgICAgICAgZHVtcEFycmF5U2hhcGVzXyA9IGZhbHNlIDsKICAgIH0KCiAgICB2b2lkIHNl
dER1bXBBcnJheVNoYXBlc01vZGUoKQogICAgewogICAgICAgIGR1bXBBcnJheVNoYXBlc18gPSB0
cnVlIDsKICAgIH0KCiAgICBjaGFyIG5leHRBcnJheU9wZXJhbmRTeW1ib2woKQogICAgewogICAg
ICAgIHJldHVybiAnQScgKyAoKGFycmF5T3BlcmFuZENvdW50ZXJfKyspICUgMjYpOwogICAgfQoK
ICAgIGNoYXIgbmV4dFNjYWxhck9wZXJhbmRTeW1ib2woKQogICAgewogICAgICAgIHJldHVybiAn
cycgKyAoKHNjYWxhck9wZXJhbmRDb3VudGVyXysrKSAlIDI2KTsKICAgIH0KCiAgICBib29sICB0
ZXJzZVByaW50aW5nU2VsZWN0ZWQoKSBjb25zdAogICAgeyAKICAgICAgICByZXR1cm4gdGVyc2VQ
cmludGluZ1NlbGVjdGVkXzsKICAgIH0KCiAgICBib29sICBkdW1wQXJyYXlTaGFwZXNNb2RlKCkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gZHVtcEFycmF5U2hhcGVzXzsKICAgIH0KCnByaXZh
dGU6CiAgICBib29sICB0ZXJzZVByaW50aW5nU2VsZWN0ZWRfOwogICAgYm9vbCAgZHVtcEFycmF5
U2hhcGVzXzsKICAgIGludCBhcnJheU9wZXJhbmRDb3VudGVyXzsKICAgIGludCBzY2FsYXJPcGVy
YW5kQ291bnRlcl87Cn07Cgp9IAoKCiMgMTIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9tYXRoZnVuYy5oIiAyCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9hYnMgOiBwdWJsaWMgT25lT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBh
YnMgICh4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhYnMoIjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRl
PD4KY2xhc3MgX2J6X2Ficzxsb25nPiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBsb25nIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGxvbmcgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRf
bnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGxhYnMgICgobG9uZyl4KTsgfQoKICAgIHRl
bXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIs
IHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAg
ICAgICAgc3RyICs9ICJsYWJzKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsK
ICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9hYnM8
ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJs
aWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVt
dHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAg
ICB7IHJldHVybiBzdGQ6OiBmYWJzICAoKGZsb2F0KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
ImZhYnMoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciAr
PSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2Ficzxkb3VibGU+IDogcHVi
bGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBl
ZGVmIGRvdWJsZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAg
IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJu
IHN0ZDo6IGZhYnMgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBz
dGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZv
cm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImZhYnMoIjsK
ICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAg
ICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2Ficzxsb25nIGRvdWJsZT4gOiBwdWJsaWMg
T25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYg
bG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBl
OwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsg
cmV0dXJuIHN0ZDo6IGZhYnMgICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciAr
PSAiZmFicygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3Ry
ICs9ICIpIjsKICAgIH0KfTsKCiAKIyAxMzcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxNTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxODEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KY2xhc3MgX2J6X2Fjb3MgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVt
cGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBl
IGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGFjb3MgICgoZG91YmxlKXgp
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYg
YSkKICAgIHsKICAgICAgICBzdHIgKz0gImFjb3MoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xh
c3MgX2J6X2Fjb3M8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRl
c0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVm
IGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251
bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBhY29zICAoKGZsb2F0KXgpOyB9CgogICAgdGVt
cGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwg
cHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAg
ICAgICBzdHIgKz0gImFjb3MoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwog
ICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2Fjb3M8
bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ug
ewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVm
IGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBs
eShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBhY29zICAoKGxvbmcgZG91YmxlKXgp
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYg
YSkKICAgIHsKICAgICAgICBzdHIgKz0gImFjb3MoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgpjbGFzcyBfYnpfYWNvc2ggOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0
aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5
cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9u
dW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGFjb3NoICAoKGRvdWJs
ZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJp
bnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3Qg
VDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhY29zaCgiOwogICAgICAgIGEucHJldHR5UHJp
bnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9hc2luIDogcHVibGljIE9uZU9wZXJhbmRBcHBs
aWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9u
dW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBhc2luICAo
KGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhc2luKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1w
bGF0ZTw+CmNsYXNzIF9iel9hc2luPGZsb2F0PiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRp
dmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUg
YXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogYXNpbiAgKChmbG9hdCl4KTsg
fQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3Ry
aW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEp
CiAgICB7CiAgICAgICAgc3RyICs9ICJhc2luKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIs
Zm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNz
IF9iel9hc2luPGxvbmcgZG91YmxlPiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGUxOwog
ICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251
bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogYXNpbiAgKChsb25n
IGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJhc2luKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2FzaW5oIDogcHVibGljIE9uZU9wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiA6OiBhc2lu
aCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAiYXNpbmgoIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoK
IAojIDM2NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5j
LmgiCgoKIAojIDM4OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21h
dGhmdW5jLmgiCgoKIAojIDQxMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L21hdGhmdW5jLmgiCgoKIAojIDQzMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFz
cyBfYnpfYXRhbiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsK
cHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRv
dWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10
eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogYXRhbiAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAiYXRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfYXRhbjxm
bG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIHN0ZDo6IGF0YW4gICgoZmxvYXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZv
cm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAi
YXRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfYXRhbjxsb25nIGRvdWJsZT4g
OiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUg
VF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEg
eCkKICAgIHsgcmV0dXJuIHN0ZDo6IGF0YW4gICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAiYXRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmNsYXNzIF9iel9hdGFuaCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNC
YXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHko
VF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gOjogYXRhbmggICgoZG91YmxlKXgpOyB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsK
ICAgICAgICBzdHIgKz0gImF0YW5oKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0
KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KY2xhc3MgX2J6X2F0YW4yIDogcHVibGljIFR3b09wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlw
ZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5
KFRfbnVtdHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1cm4gc3RkOjogYXRhbjIgICgo
ZG91YmxlKXgsKGRvdWJsZSl5KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4K
ICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1h
dCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYikKICAgIHsKICAgICAg
ICBzdHIgKz0gImF0YW4yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIiwiOwogICAgICAgIGIucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfYXRhbjI8Zmxv
YXQsIGZsb2F0ID4gOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7
CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQg
VF9udW10eXBlMjsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1
cm4gc3RkOjogYXRhbjIgICgoZmxvYXQpeCwoZmxvYXQpeSk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgVDI+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwg
cHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSwgY29uc3QgVDIm
IGIpCiAgICB7CiAgICAgICAgc3RyICs9ICJhdGFuMigiOwogICAgICAgIGEucHJldHR5UHJpbnQo
c3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIsIjsKICAgICAgICBiLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xh
c3MgX2J6X2F0YW4yPGxvbmcgZG91YmxlLCBsb25nIGRvdWJsZSA+IDogcHVibGljIFR3b09wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91
YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTI7CiAgICB0
eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlw
ZSBhcHBseShUX251bXR5cGUxIHgsIFRfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJuIHN0ZDo6IGF0
YW4yICAoKGxvbmcgZG91YmxlKXgsKGxvbmcgZG91YmxlKXkpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFQyPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIs
IHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEsIGNvbnN0IFQy
JiBiKQogICAgewogICAgICAgIHN0ciArPSAiYXRhbjIoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiLCI7CiAgICAgICAgYi5wcmV0dHlQcmludChz
dHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAojIDYwNiAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2NicnQgOiBwdWJsaWMgT25lT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGNicnQgICgo
ZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0
dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBj
b25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImNicnQoIjsKICAgICAgICBhLnByZXR0
eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfY2VpbCA6IHB1YmxpYyBPbmVPcGVyYW5k
QXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUx
IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogY2Vp
bCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAiY2VpbCgiOwogICAgICAgIGEu
cHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAK
dGVtcGxhdGU8PgpjbGFzcyBfYnpfY2VpbDxmbG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxp
Y2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBl
MTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNlaWwgICgoZmxvYXQp
eCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50
KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQx
JiBhKQogICAgewogICAgICAgIHN0ciArPSAiY2VpbCgiOwogICAgICAgIGEucHJldHR5UHJpbnQo
c3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8Pgpj
bGFzcyBfYnpfY2VpbDxsb25nIGRvdWJsZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBl
MTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUg
VF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNlaWwgICgo
bG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAiY2VpbCgiOwogICAgICAgIGEu
cHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAK
IyA3MTAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5o
IgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2NvcyA6IHB1YmxpYyBP
bmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQ
X251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAg
c3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4g
c3RkOjogY29zICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3Rh
dGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3Jt
YXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjb3MoIjsKICAg
ICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9
Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X2NvczxmbG9hdD4gOiBwdWJsaWMgT25lT3BlcmFu
ZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9u
dW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUg
VF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNvcyAgKChm
bG9hdCl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjb3MoIjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRl
PD4KY2xhc3MgX2J6X2Nvczxsb25nIGRvdWJsZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0
aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10
eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGNvcyAg
KChsb25nIGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZv
aWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAg
ICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjb3MoIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07Cgog
CiMgNzkyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMu
aCIKCgogCiMgODE0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0
aGZ1bmMuaCIKCgogCiMgODM2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovbWF0aGZ1bmMuaCIKCgogCiMgODYxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNz
IF9iel9jb3NoIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91
YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5
cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBjb3NoICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBs
YXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHBy
ZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAg
ICAgc3RyICs9ICJjb3NoKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9jb3NoPGZs
b2F0PiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGlj
OgogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGUxOwogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5
cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAg
eyByZXR1cm4gc3RkOjogY29zaCAgKChmbG9hdCl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQx
PgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJj
b3NoKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0g
IikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9jb3NoPGxvbmcgZG91YmxlPiA6
IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAg
dHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBU
X251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4
KQogICAgeyByZXR1cm4gc3RkOjogY29zaCAgKChsb25nIGRvdWJsZSl4KTsgfQoKICAgIHRlbXBs
YXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHBy
ZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAg
ICAgc3RyICs9ICJjb3NoKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAojIDk0MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDk2NSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDk4NyAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDEwMTIgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2V4cCA6IHB1YmxpYyBPbmVPcGVyYW5k
QXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUx
IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogZXhw
ICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAg
ICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJleHAoIjsKICAgICAgICBhLnBy
ZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRl
bXBsYXRlPD4KY2xhc3MgX2J6X2V4cDxmbG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0
aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsK
ICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBl
IGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGV4cCAgKChmbG9hdCl4KTsg
fQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3Ry
aW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEp
CiAgICB7CiAgICAgICAgc3RyICs9ICJleHAoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixm
b3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3Mg
X2J6X2V4cDxsb25nIGRvdWJsZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxh
dGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAg
IHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGV4cCAgKChsb25nIGRv
dWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJleHAoIjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCiMgMTA5NCAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoj
IDExMTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5o
IgoKCiAKIyAxMTM4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0
aGZ1bmMuaCIKCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfZXhwbTEg
OiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIDo6IGV4cG0xICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQx
PgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJl
eHBtMSgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpf
ZXJmIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6
CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRf
bnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgp
CiAgICB7IHJldHVybiA6OiBlcmYgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
ImVyZigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpf
ZXJmYyA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGlj
OgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBU
X251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4
KQogICAgeyByZXR1cm4gOjogZXJmYyAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciAr
PSAiZXJmYygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3Ry
ICs9ICIpIjsKICAgIH0KfTsKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9i
el9mbG9vciA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVi
bGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJs
ZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBl
MSB4KQogICAgeyByZXR1cm4gc3RkOjogZmxvb3IgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJl
dHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAg
ICBzdHIgKz0gImZsb29yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9mbG9vcjxm
bG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIHN0ZDo6IGZsb29yICAoKGZsb2F0KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
ImZsb29yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIg
Kz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9mbG9vcjxsb25nIGRvdWJs
ZT4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoK
ICAgIHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3Vi
bGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlw
ZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGZsb29yICAoKGxvbmcgZG91YmxlKXgpOyB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsK
ICAgICAgICBzdHIgKz0gImZsb29yKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0
KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAojIDEyODkgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxMzE0ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTMzNiAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X2lzbmFuIDogcHVibGljIE9uZU9w
ZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVt
dHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgaW50IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiA6OiBpc25h
biAgKHgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQ
cmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25z
dCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImlzbmFuKCI7CiAgICAgICAgYS5wcmV0dHlQ
cmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKCiAKIyAxMzgw
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgog
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfajAgOiBwdWJsaWMgT25lT3Bl
cmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10
eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRp
YyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGow
ICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAg
ICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJqMCgiOwogICAgICAgIGEucHJl
dHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCgogCgp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfajEgOiBwdWJsaWMgT25lT3BlcmFu
ZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBl
MSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBp
bmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IGoxICAo
KGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJqMSgiOwogICAgICAgIGEucHJldHR5
UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCgogCgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfbGdhbW1hIDogcHVibGljIE9uZU9wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiA6OiBsZ2Ft
bWEgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9p
ZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAg
ICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gImxnYW1tYSgiOwogICAgICAg
IGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsK
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9sb2cgOiBwdWJsaWMgT25l
T3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9u
dW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0
YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0
ZDo6IGxvZyAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRp
YyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0
LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAibG9nKCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9sb2c8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRB
cHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVt
dHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRf
bnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cgICgoZmxv
YXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVBy
aW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0
IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAibG9nKCI7CiAgICAgICAgYS5wcmV0dHlQcmlu
dChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+
CmNsYXNzIF9iel9sb2c8bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2
ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlw
ZTE7CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5l
IFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cgICgo
bG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lk
IHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAg
ICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAibG9nKCI7CiAgICAgICAgYS5w
cmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAoj
IDE1MjggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5o
IgoKCiAKIyAxNTUwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0
aGZ1bmMuaCIKCgogCiMgMTU3MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L21hdGhmdW5jLmgiCgoKIAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6
X2xvZ2IgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUg
VF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEg
eCkKICAgIHsgcmV0dXJuIDo6IGxvZ2IgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJp
bnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIg
Kz0gImxvZ2IoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0
ciArPSAiKSI7CiAgICB9Cn07CgoKIAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3Mg
X2J6X2xvZzFwIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91
YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5
cGUxIHgpCiAgICB7IHJldHVybiA6OiBsb2cxcCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0
ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0
dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAg
IHN0ciArPSAibG9nMXAoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAg
ICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpj
bGFzcyBfYnpfbG9nMTAgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFz
ZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRl
ZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRf
bnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IGxvZzEwICAoKGRvdWJsZSl4KTsgfQoKICAg
IHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBz
dHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7
CiAgICAgICAgc3RyICs9ICJsb2cxMCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1h
dCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpf
bG9nMTA8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ug
ewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0
IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUx
IHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cxMCAgKChmbG9hdCl4KTsgfQoKICAgIHRlbXBsYXRl
PGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0
eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAg
c3RyICs9ICJsb2cxMCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbG9nMTA8bG9u
ZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGxv
bmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShU
X251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBsb2cxMCAgKChsb25nIGRvdWJsZSl4KTsg
fQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3Ry
aW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEp
CiAgICB7CiAgICAgICAgc3RyICs9ICJsb2cxMCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3Ry
LGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKIyAxNjk4ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTcyMyAi
L3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBfYnpfbmVnYXRlIDogcHVibGljIE9uZU9wZXJh
bmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1l
ICBOdW1lcmljVHlwZVRyYWl0czwgUF9udW10eXBlID46OlRfc2lnbmVkdHlwZSAgVF9udW10eXBl
OwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZSB4KQogICAgeyBy
ZXR1cm4gLXg7IH0KfTsKCiAKIyAxNzU0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTc3OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX251bXR5cGUyPgpjbGFzcyBfYnpfcG93IDogcHVibGljIFR3b09wZXJhbmRBcHBs
aWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9u
dW10eXBlMTsKICAgIHR5cGVkZWYgUF9udW10eXBlMiBUX251bXR5cGUyOwogICAgdHlwZWRlZiBk
b3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVt
dHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1cm4gc3RkOjogcG93ICAoKGRvdWJsZSl4
LChkb3VibGUpeSk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CiAgICBzdGF0
aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1h
dCwKICAgICAgICBjb25zdCBUMSYgYSwgY29uc3QgVDImIGIpCiAgICB7CiAgICAgICAgc3RyICs9
ICJwb3coIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciAr
PSAiLCI7CiAgICAgICAgYi5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0g
IikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9wb3c8ZmxvYXQsIGZsb2F0ID4g
OiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMjsK
ICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBl
IGFwcGx5KFRfbnVtdHlwZTEgeCwgVF9udW10eXBlMiB5KQogICAgeyByZXR1cm4gc3RkOjogcG93
ICAoKGZsb2F0KXgsKGZsb2F0KXkpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQy
PgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKQogICAgewogICAg
ICAgIHN0ciArPSAicG93KCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAg
ICAgICBzdHIgKz0gIiwiOwogICAgICAgIGIucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfcG93PGxvbmcg
ZG91YmxlLCBsb25nIGRvdWJsZSA+IDogcHVibGljIFR3b09wZXJhbmRBcHBsaWNhdGl2ZVRlbXBs
YXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTI7CiAgICB0eXBlZGVmIGxvbmcgZG91Ymxl
IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUx
IHgsIFRfbnVtdHlwZTIgeSkKICAgIHsgcmV0dXJuIHN0ZDo6IHBvdyAgKChsb25nIGRvdWJsZSl4
LChsb25nIGRvdWJsZSl5KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KICAg
IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYg
Zm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYikKICAgIHsKICAgICAgICBz
dHIgKz0gInBvdygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAg
c3RyICs9ICIsIjsKICAgICAgICBiLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0
ciArPSAiKSI7CiAgICB9Cn07CgogCiMgMTg3MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDE4OTggIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKIyAxOTIzICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMTk0OCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3JpbnQgOiBwdWJsaWMgT25lT3BlcmFuZEFw
cGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBU
X251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIDo6IHJpbnQgICgo
ZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0
dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBj
b25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInJpbnQoIjsKICAgICAgICBhLnByZXR0
eVByaW50KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAojIDE5
OTIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoK
CiAKIyAyMDE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1
bmMuaCIKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9zaW4gOiBwdWJs
aWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVk
ZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoK
ICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0
dXJuIHN0ZDo6IHNpbiAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAg
IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYg
Zm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic2luKCI7
CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwog
ICAgfQp9OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9zaW48ZmxvYXQ+IDogcHVibGljIE9uZU9w
ZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0
IFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5s
aW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBzaW4g
ICgoZmxvYXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHBy
ZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAg
IGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic2luKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1w
bGF0ZTw+CmNsYXNzIF9iel9zaW48bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBs
aWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMg
aW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiBz
aW4gICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRp
YyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0
LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic2luKCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAojIDIwOTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRo
ZnVuYy5oIgoKCiAKIyAyMTIxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovbWF0aGZ1bmMuaCIKCgogCiMgMjE0MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFz
cyBfYnpfc2luaCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsK
cHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRv
dWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10
eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogc2luaCAgKChkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAic2luaCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfc2luaDxm
bG9hdD4gOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1Ymxp
YzoKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZmxvYXQgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAg
IHsgcmV0dXJuIHN0ZDo6IHNpbmggICgoZmxvYXQpeCk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZv
cm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAi
c2luaCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfc2luaDxsb25nIGRvdWJsZT4g
OiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAg
IHR5cGVkZWYgbG9uZyBkb3VibGUgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgbG9uZyBkb3VibGUg
VF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEg
eCkKICAgIHsgcmV0dXJuIHN0ZDo6IHNpbmggICgobG9uZyBkb3VibGUpeCk7IH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBw
cmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAg
ICAgIHN0ciArPSAic2luaCgiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAg
ICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKIyAyMjI1ICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMjI0NyAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDIyNjkgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgX2J6X3NxciA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGlj
YXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10
eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZSB4KQogICAg
eyByZXR1cm4geCp4OyB9CiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHBy
ZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAg
IGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAic3FyKCI7CiAgICAgICAgYS5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIyAyMzA5
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9iel9zcXJ0IDogcHVibGljIE9uZU9w
ZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVt
dHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0
aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6
OiBzcXJ0ICAoKGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGlj
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQs
CiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJzcXJ0KCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9zcXJ0PGZsb2F0PiA6IHB1YmxpYyBPbmVPcGVyYW5k
QXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBmbG9hdCBUX251
bXR5cGUxOwogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBU
X251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogc3FydCAgKChm
bG9hdCl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5
UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29u
c3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJzcXJ0KCI7CiAgICAgICAgYS5wcmV0dHlQ
cmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0
ZTw+CmNsYXNzIF9iel9zcXJ0PGxvbmcgZG91YmxlPiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGlj
YXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251
bXR5cGUxOwogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlu
bGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyByZXR1cm4gc3RkOjogc3Fy
dCAgKChsb25nIGRvdWJsZSl4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGlj
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQs
CiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJzcXJ0KCI7CiAgICAg
ICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9
OwoKIAojIDIzOTEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRo
ZnVuYy5oIgoKCiAKIyAyNDEzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovbWF0aGZ1bmMuaCIKCgogCiMgMjQzNSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpjbGFz
cyBfYnpfdGFuIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ugewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYgZG91
YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5
cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiB0YW4gICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJl
dHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAg
ICBzdHIgKz0gInRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAg
ICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfdGFuPGZsb2F0
PiA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgog
ICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGUxOwogICAgdHlwZWRlZiBmbG9hdCBUX251bXR5cGU7
CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgeyBy
ZXR1cm4gc3RkOjogdGFuICAoKGZsb2F0KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAg
ICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQm
IGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInRhbigi
OwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsK
ICAgIH0KfTsKCiAKdGVtcGxhdGU8PgpjbGFzcyBfYnpfdGFuPGxvbmcgZG91YmxlPiA6IHB1Ymxp
YyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRl
ZiBsb25nIGRvdWJsZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBsb25nIGRvdWJsZSBUX251bXR5
cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAg
eyByZXR1cm4gc3RkOjogdGFuICAoKGxvbmcgZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJp
bnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIg
Kz0gInRhbigiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3Ry
ICs9ICIpIjsKICAgIH0KfTsKCiAKIyAyNTE3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovbWF0aGZ1bmMuaCIKCgogCiMgMjUzOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDI1NjEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KY2xhc3MgX2J6X3RhbmggOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUx
OwogICAgdHlwZWRlZiBkb3VibGUgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIHN0ZDo6IHRhbmggICgoZG91Ymxl
KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBU
MSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInRhbmgoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4K
Y2xhc3MgX2J6X3Rhbmg8ZmxvYXQ+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBs
YXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGZsb2F0IFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGZsb2F0IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShU
X251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiB0YW5oICAoKGZsb2F0KXgpOyB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsK
ICAgICAgICBzdHIgKz0gInRhbmgoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQp
OwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPD4KY2xhc3MgX2J6X3Rh
bmg8bG9uZyBkb3VibGU+IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jh
c2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTE7CiAgICB0eXBl
ZGVmIGxvbmcgZG91YmxlIFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBh
cHBseShUX251bXR5cGUxIHgpCiAgICB7IHJldHVybiBzdGQ6OiB0YW5oICAoKGxvbmcgZG91Ymxl
KXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBU
MSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInRhbmgoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCiMgMjY0MyAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L21hdGhmdW5jLmgiCgoKIAojIDI2
NjUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZnVuYy5oIgoK
CiAKIyAyNjg3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWF0aGZ1
bmMuaCIKCgogCiMgMjcwOSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L21hdGhmdW5jLmgiCgoKIAojIDI3MzQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9tYXRoZnVuYy5oIgoKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNz
IF9iel95MCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVi
bGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJs
ZSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBl
MSB4KQogICAgeyByZXR1cm4gOjogeTAgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xh
c3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJp
bnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIg
Kz0gInkwKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIg
Kz0gIikiOwogICAgfQp9OwoKCiAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNsYXNzIF9i
el95MSA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGlj
OgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIGRvdWJsZSBU
X251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSB4
KQogICAgeyByZXR1cm4gOjogeTEgICgoZG91YmxlKXgpOyB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0g
InkxKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0g
IikiOwogICAgfQp9OwoKCgoKfSAKCgojIDM5MCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FwcGxpY3MuaCIgMgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9tYXRoZjIuaCIgMQoKI2RlZmluZSBCWl9NQVRIRjJfSAoKCgoK
CgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpj
bGFzcyBfYnpfY2V4cCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNl
IHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVm
IFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5
KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIF9iel9leHA8VF9udW10eXBlMT46OmFwcGx5KHgp
OyB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYg
YSkKICAgIHsKICAgICAgICBzdHIgKz0gImNleHAoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0
cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmNsYXNzIF9iel9jc3FydCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRp
dmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlw
ZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUg
VF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgcmV0dXJuIF9iel9zcXJ0PFRfbnVt
dHlwZTE+OjphcHBseSh4KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZv
aWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAg
ICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJjc3FydCgiOwogICAgICAg
IGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsK
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3BvdzIgOiBwdWJsaWMgT25l
T3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9u
dW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTsKCiAg
ICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAgICB7IAogICAg
ICAgIHJldHVybiAgeCAgICogIHggIDsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAg
IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYg
Zm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAicG93Migi
OwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsK
ICAgIH0KfTsKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3BvdzMgOiBw
dWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoKICAgIHR5
cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVt
dHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIHgpCiAg
ICB7IAogICAgICAgIHJldHVybiAgeCAgICogIHggICAqCiAgICAgICAgICAgeCAgOwogICAgfQoK
ICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5n
JiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAgY29uc3QgVDEmIGEpCiAg
ICB7CiAgICAgICAgc3RyICs9ICJwb3czKCI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsZm9y
bWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgpjbGFzcyBfYnpfcG93NCA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGljYXRpdmVUZW1w
bGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVtdHlwZTE7CiAg
ICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxpbmUgVF9udW10
eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsgCiAgICAgICAgVF9udW10eXBlIHQxID0gIHgg
ICAqICB4ICA7CiAgICAgICAgcmV0dXJuICB0MSAgICogIHQxICA7CiAgICB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJl
dHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAgIHsKICAgICAg
ICBzdHIgKz0gInBvdzQoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOwogICAg
ICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmNs
YXNzIF9iel9wb3c1IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBsYXRlc0Jhc2Ug
ewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAgIHR5cGVkZWYg
UF9udW10eXBlMSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHko
VF9udW10eXBlMSB4KQogICAgewogICAgICAgIFRfbnVtdHlwZSB0MSA9ICB4ICAgKiAgeCAgOwog
ICAgICAgIHJldHVybiAgdDEgICAqICB0MSAgCiAgICAgICAgICAgICogIHQxICA7CiAgICB9Cgog
ICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcm
IHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBUMSYgYSkKICAg
IHsKICAgICAgICBzdHIgKz0gInBvdzUoIjsKICAgICAgICBhLnByZXR0eVByaW50KHN0cixmb3Jt
YXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmNsYXNzIF9iel9wb3c2IDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2ZVRlbXBs
YXRlc0Jhc2UgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlMTsKICAg
IHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGU7CgogICAgc3RhdGljIGlubGluZSBUX251bXR5
cGUgYXBwbHkoVF9udW10eXBlMSB4KQogICAgewogICAgICAgIFRfbnVtdHlwZSB0MSA9ICB4ICAg
KiAgeCAgIAogICAgICAgICAgICAqICB4ICA7CiAgICAgICAgcmV0dXJuICB0MSAgICogIHQxICA7
CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVDE+CiAgICBzdGF0aWMgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwKICAgICAgICBjb25zdCBU
MSYgYSkKICAgIHsKICAgICAgICBzdHIgKz0gInBvdzYoIjsKICAgICAgICBhLnByZXR0eVByaW50
KHN0cixmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07CgoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgpjbGFzcyBfYnpfcG93NyA6IHB1YmxpYyBPbmVPcGVyYW5kQXBwbGlj
YXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5cGUxIFRfbnVt
dHlwZTE7CiAgICB0eXBlZGVmIFBfbnVtdHlwZTEgVF9udW10eXBlOwoKICAgIHN0YXRpYyBpbmxp
bmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgeCkKICAgIHsKICAgICAgICBUX251bXR5cGUg
dDEgPSAgeCAgICogIHggICAKICAgICAgICAgICAgKiAgeCAgOwogICAgICAgIHJldHVybiAgdDEg
ICAqICB0MSAgCiAgICAgICAgICAgICogIHggIDsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZv
cm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciArPSAi
cG93NygiOwogICAgICAgIGEucHJldHR5UHJpbnQoc3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9
ICIpIjsKICAgIH0KfTsKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KY2xhc3MgX2J6X3Bv
dzggOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFzZSB7CnB1YmxpYzoK
ICAgIHR5cGVkZWYgUF9udW10eXBlMSBUX251bXR5cGUxOwogICAgdHlwZWRlZiBQX251bXR5cGUx
IFRfbnVtdHlwZTsKCiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUx
IHgpCiAgICB7CiAgICAgICAgVF9udW10eXBlIHQxID0gIHggICAqICB4ICA7CiAgICAgICAgVF9u
dW10eXBlIHQyID0gIHQxICAgKiAgdDEgIDsKICAgICAgICByZXR1cm4gIHQyICAgKiAgdDIgIDsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50
KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQx
JiBhKQogICAgewogICAgICAgIHN0ciArPSAicG93OCgiOwogICAgICAgIGEucHJldHR5UHJpbnQo
c3RyLGZvcm1hdCk7CiAgICAgICAgc3RyICs9ICIpIjsKICAgIH0KfTsKCiAKCgoKCgoKIAogCgoj
ZGVmaW5lIEJaX0RFQ0xBUkVfUE9XKFQpIGlubGluZSBUIHBvdzIoVCB4KSB7IHJldHVybiB4Kng7
IH0gaW5saW5lIFQgcG93MyhUIHgpIHsgcmV0dXJuIHgqeCp4OyB9IGlubGluZSBUIHBvdzQoVCB4
KSB7IFQgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgVCBwb3c1KFQgeCkgeyBUIHQx
ID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgVCBwb3c2KFQgeCkgeyBUIHQxID0geCp4
Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgVCBwb3c3KFQgeCkgeyBUIHQxID0geCp4OyByZXR1
cm4gdDEqdDEqdDEqeDsgfSBpbmxpbmUgVCBwb3c4KFQgeCkgeyBUIHQxID0geCp4LCB0Mj10MSp0
MTsgcmV0dXJuIHQyKnQyOyB9ICAKCgoKCgoKCgppbmxpbmUgIGludCAgcG93MiggaW50ICB4KSB7
IHJldHVybiB4Kng7IH0gaW5saW5lICBpbnQgIHBvdzMoIGludCAgeCkgeyByZXR1cm4geCp4Kng7
IH0gaW5saW5lICBpbnQgIHBvdzQoIGludCAgeCkgeyAgaW50ICB0MSA9IHgqeDsgcmV0dXJuIHQx
KnQxOyB9IGlubGluZSAgaW50ICBwb3c1KCBpbnQgIHgpIHsgIGludCAgdDEgPSB4Kng7IHJldHVy
biB0MSp0MSp4OyB9IGlubGluZSAgaW50ICBwb3c2KCBpbnQgIHgpIHsgIGludCAgdDEgPSB4Kngq
eDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAgaW50ICBwb3c3KCBpbnQgIHgpIHsgIGludCAgdDEg
PSB4Kng7IHJldHVybiB0MSp0MSp0MSp4OyB9IGlubGluZSAgaW50ICBwb3c4KCBpbnQgIHgpIHsg
IGludCAgdDEgPSB4KngsIHQyPXQxKnQxOyByZXR1cm4gdDIqdDI7IH0gCmlubGluZSAgZmxvYXQg
IHBvdzIoIGZsb2F0ICB4KSB7IHJldHVybiB4Kng7IH0gaW5saW5lICBmbG9hdCAgcG93MyggZmxv
YXQgIHgpIHsgcmV0dXJuIHgqeCp4OyB9IGlubGluZSAgZmxvYXQgIHBvdzQoIGZsb2F0ICB4KSB7
ICBmbG9hdCAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGZsb2F0ICBwb3c1KCBm
bG9hdCAgeCkgeyAgZmxvYXQgIHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgIGZs
b2F0ICBwb3c2KCBmbG9hdCAgeCkgeyAgZmxvYXQgIHQxID0geCp4Kng7IHJldHVybiB0MSp0MTsg
fSBpbmxpbmUgIGZsb2F0ICBwb3c3KCBmbG9hdCAgeCkgeyAgZmxvYXQgIHQxID0geCp4OyByZXR1
cm4gdDEqdDEqdDEqeDsgfSBpbmxpbmUgIGZsb2F0ICBwb3c4KCBmbG9hdCAgeCkgeyAgZmxvYXQg
IHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAppbmxpbmUgIGRvdWJsZSAgcG93
MiggZG91YmxlICB4KSB7IHJldHVybiB4Kng7IH0gaW5saW5lICBkb3VibGUgIHBvdzMoIGRvdWJs
ZSAgeCkgeyByZXR1cm4geCp4Kng7IH0gaW5saW5lICBkb3VibGUgIHBvdzQoIGRvdWJsZSAgeCkg
eyAgZG91YmxlICB0MSA9IHgqeDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAgZG91YmxlICBwb3c1
KCBkb3VibGUgIHgpIHsgIGRvdWJsZSAgdDEgPSB4Kng7IHJldHVybiB0MSp0MSp4OyB9IGlubGlu
ZSAgZG91YmxlICBwb3c2KCBkb3VibGUgIHgpIHsgIGRvdWJsZSAgdDEgPSB4KngqeDsgcmV0dXJu
IHQxKnQxOyB9IGlubGluZSAgZG91YmxlICBwb3c3KCBkb3VibGUgIHgpIHsgIGRvdWJsZSAgdDEg
PSB4Kng7IHJldHVybiB0MSp0MSp0MSp4OyB9IGlubGluZSAgZG91YmxlICBwb3c4KCBkb3VibGUg
IHgpIHsgIGRvdWJsZSAgdDEgPSB4KngsIHQyPXQxKnQxOyByZXR1cm4gdDIqdDI7IH0gCmlubGlu
ZSAgbG9uZyBkb3VibGUgIHBvdzIoIGxvbmcgZG91YmxlICB4KSB7IHJldHVybiB4Kng7IH0gaW5s
aW5lICBsb25nIGRvdWJsZSAgcG93MyggbG9uZyBkb3VibGUgIHgpIHsgcmV0dXJuIHgqeCp4OyB9
IGlubGluZSAgbG9uZyBkb3VibGUgIHBvdzQoIGxvbmcgZG91YmxlICB4KSB7ICBsb25nIGRvdWJs
ZSAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c1KCBs
b25nIGRvdWJsZSAgeCkgeyAgbG9uZyBkb3VibGUgIHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsg
fSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c2KCBsb25nIGRvdWJsZSAgeCkgeyAgbG9uZyBkb3Vi
bGUgIHQxID0geCp4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c3
KCBsb25nIGRvdWJsZSAgeCkgeyAgbG9uZyBkb3VibGUgIHQxID0geCp4OyByZXR1cm4gdDEqdDEq
dDEqeDsgfSBpbmxpbmUgIGxvbmcgZG91YmxlICBwb3c4KCBsb25nIGRvdWJsZSAgeCkgeyAgbG9u
ZyBkb3VibGUgIHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAoKCmlubGluZSAg
Y29tcGxleDxmbG9hdD4gIHBvdzIoIGNvbXBsZXg8ZmxvYXQ+ICB4KSB7IHJldHVybiB4Kng7IH0g
aW5saW5lICBjb21wbGV4PGZsb2F0PiAgcG93MyggY29tcGxleDxmbG9hdD4gIHgpIHsgcmV0dXJu
IHgqeCp4OyB9IGlubGluZSAgY29tcGxleDxmbG9hdD4gIHBvdzQoIGNvbXBsZXg8ZmxvYXQ+ICB4
KSB7ICBjb21wbGV4PGZsb2F0PiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGNv
bXBsZXg8ZmxvYXQ+ICBwb3c1KCBjb21wbGV4PGZsb2F0PiAgeCkgeyAgY29tcGxleDxmbG9hdD4g
IHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgIGNvbXBsZXg8ZmxvYXQ+ICBwb3c2
KCBjb21wbGV4PGZsb2F0PiAgeCkgeyAgY29tcGxleDxmbG9hdD4gIHQxID0geCp4Kng7IHJldHVy
biB0MSp0MTsgfSBpbmxpbmUgIGNvbXBsZXg8ZmxvYXQ+ICBwb3c3KCBjb21wbGV4PGZsb2F0PiAg
eCkgeyAgY29tcGxleDxmbG9hdD4gIHQxID0geCp4OyByZXR1cm4gdDEqdDEqdDEqeDsgfSBpbmxp
bmUgIGNvbXBsZXg8ZmxvYXQ+ICBwb3c4KCBjb21wbGV4PGZsb2F0PiAgeCkgeyAgY29tcGxleDxm
bG9hdD4gIHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAppbmxpbmUgIGNvbXBs
ZXg8ZG91YmxlPiAgcG93MiggY29tcGxleDxkb3VibGU+ICB4KSB7IHJldHVybiB4Kng7IH0gaW5s
aW5lICBjb21wbGV4PGRvdWJsZT4gIHBvdzMoIGNvbXBsZXg8ZG91YmxlPiAgeCkgeyByZXR1cm4g
eCp4Kng7IH0gaW5saW5lICBjb21wbGV4PGRvdWJsZT4gIHBvdzQoIGNvbXBsZXg8ZG91YmxlPiAg
eCkgeyAgY29tcGxleDxkb3VibGU+ICB0MSA9IHgqeDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAg
Y29tcGxleDxkb3VibGU+ICBwb3c1KCBjb21wbGV4PGRvdWJsZT4gIHgpIHsgIGNvbXBsZXg8ZG91
YmxlPiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MSp4OyB9IGlubGluZSAgY29tcGxleDxkb3VibGU+
ICBwb3c2KCBjb21wbGV4PGRvdWJsZT4gIHgpIHsgIGNvbXBsZXg8ZG91YmxlPiAgdDEgPSB4Kngq
eDsgcmV0dXJuIHQxKnQxOyB9IGlubGluZSAgY29tcGxleDxkb3VibGU+ICBwb3c3KCBjb21wbGV4
PGRvdWJsZT4gIHgpIHsgIGNvbXBsZXg8ZG91YmxlPiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MSp0
MSp4OyB9IGlubGluZSAgY29tcGxleDxkb3VibGU+ICBwb3c4KCBjb21wbGV4PGRvdWJsZT4gIHgp
IHsgIGNvbXBsZXg8ZG91YmxlPiAgdDEgPSB4KngsIHQyPXQxKnQxOyByZXR1cm4gdDIqdDI7IH0g
CmlubGluZSAgY29tcGxleDxsb25nIGRvdWJsZT4gIHBvdzIoIGNvbXBsZXg8bG9uZyBkb3VibGU+
ICB4KSB7IHJldHVybiB4Kng7IH0gaW5saW5lICBjb21wbGV4PGxvbmcgZG91YmxlPiAgcG93Mygg
Y29tcGxleDxsb25nIGRvdWJsZT4gIHgpIHsgcmV0dXJuIHgqeCp4OyB9IGlubGluZSAgY29tcGxl
eDxsb25nIGRvdWJsZT4gIHBvdzQoIGNvbXBsZXg8bG9uZyBkb3VibGU+ICB4KSB7ICBjb21wbGV4
PGxvbmcgZG91YmxlPiAgdDEgPSB4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGNvbXBsZXg8
bG9uZyBkb3VibGU+ICBwb3c1KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxleDxs
b25nIGRvdWJsZT4gIHQxID0geCp4OyByZXR1cm4gdDEqdDEqeDsgfSBpbmxpbmUgIGNvbXBsZXg8
bG9uZyBkb3VibGU+ICBwb3c2KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxleDxs
b25nIGRvdWJsZT4gIHQxID0geCp4Kng7IHJldHVybiB0MSp0MTsgfSBpbmxpbmUgIGNvbXBsZXg8
bG9uZyBkb3VibGU+ICBwb3c3KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxleDxs
b25nIGRvdWJsZT4gIHQxID0geCp4OyByZXR1cm4gdDEqdDEqdDEqeDsgfSBpbmxpbmUgIGNvbXBs
ZXg8bG9uZyBkb3VibGU+ICBwb3c4KCBjb21wbGV4PGxvbmcgZG91YmxlPiAgeCkgeyAgY29tcGxl
eDxsb25nIGRvdWJsZT4gIHQxID0geCp4LCB0Mj10MSp0MTsgcmV0dXJuIHQyKnQyOyB9IAoKCn0g
CgoKIyAzOTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcHBsaWNz
LmgiIDIKCgoKCiMgNTYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92
ZWNleHByLmgiIDIKCgoKCgoKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9leHByMiwgY2xhc3MgUF9vcD4KY2xhc3MgX2J6X1ZlY0V4cHJP
cCB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICAgIHR5cGVkZWYgUF9l
eHByMiBUX2V4cHIyOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlIFRf
bnVtdHlwZTE7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9udW10
eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAg
VF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgUF9vcCAgICBU
X29wOwoKCiAgICBfYnpfVmVjRXhwck9wKFRfZXhwcjEgYSwgVF9leHByMiBiKQogICAgICAgIDog
aXRlcjFfKGEpLCBpdGVyMl8oYikKICAgIHsgfQoKCgoKCgoKICAgIF9iel9WZWNFeHByT3AoY29u
c3QgX2J6X1ZlY0V4cHJPcDxQX2V4cHIxLCBQX2V4cHIyLCBQX29wPiYgeCkKICAgICAgICA6IGl0
ZXIxXyh4Lml0ZXIxXyksIGl0ZXIyXyh4Lml0ZXIyXykKICAgIHsgfQoKCiAgICBUX251bXR5cGUg
b3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsgcmV0dXJuIFRfb3A6OmFwcGx5KGl0ZXIxX1tp
XSwgaXRlcjJfW2ldKTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpKSBjb25zdAog
ICAgeyByZXR1cm4gVF9vcDo6YXBwbHkoaXRlcjFfKGkpLCBpdGVyMl8oaSkpOyB9CgogICAgaW50
IGxlbmd0aChpbnQgcmVjb21tZW5kZWRMZW5ndGgpIGNvbnN0CiAgICB7IAogICAgICAgICA7Cgog
ICAgICAgIHJldHVybiBpdGVyMV8ubGVuZ3RoKHJlY29tbWVuZGVkTGVuZ3RoKTsgCiAgICB9Cgog
ICAgZW51bSB7IAogICAgICAgICAgIF9iel9zdGF0aWNMZW5ndGhDb3VudCA9IAogICAgICAoaW50
KSBQX2V4cHIxOjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICAKICAgICAgICAgKyAoaW50KSBQX2V4
cHIyOjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICwKCiAgICAgICAgICAgX2J6X2R5bmFtaWNMZW5n
dGhDb3VudCA9IAogICAgICAoaW50KSBQX2V4cHIxOjpfYnpfZHluYW1pY0xlbmd0aENvdW50ICAg
CiAgICAgICAgKyAoaW50KSBQX2V4cHIyOjpfYnpfZHluYW1pY0xlbmd0aENvdW50ICAsCgogICAg
ICAgICAgIF9iel9zdGF0aWNMZW5ndGggPSAoKGludCkgUF9leHByMTo6X2J6X3N0YXRpY0xlbmd0
aCAgID4gKGludCkgUF9leHByMjo6X2J6X3N0YXRpY0xlbmd0aCAgKSA/IChpbnQpIFBfZXhwcjE6
Ol9iel9zdGF0aWNMZW5ndGggICA6IChpbnQpIFBfZXhwcjI6Ol9iel9zdGF0aWNMZW5ndGggIAoK
IAogICAgfTsKCiAgICBpbnQgX2J6X3N1Z2dlc3RMZW5ndGgoKSBjb25zdAogICAgewogICAgICAg
IGludCBsZW5ndGgxID0gaXRlcjFfLl9iel9zdWdnZXN0TGVuZ3RoKCk7CiAgICAgICAgaWYgKGxl
bmd0aDEgIT0gMCkKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDE7CiAgICAgICAgcmV0dXJuIGl0
ZXIyXy5fYnpfc3VnZ2VzdExlbmd0aCgpOwogICAgfQoKICAgIGJvb2wgICBfYnpfaGFzRmFzdEFj
Y2VzcygpIGNvbnN0CiAgICB7IHJldHVybiBpdGVyMV8uX2J6X2hhc0Zhc3RBY2Nlc3MoKSAmJiBp
dGVyMl8uX2J6X2hhc0Zhc3RBY2Nlc3MoKTsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2Vz
cyhpbnQgaSkgY29uc3QKICAgIHsgCiAgICAgICAgcmV0dXJuIFRfb3A6OmFwcGx5KGl0ZXIxXy5f
YnpfZmFzdEFjY2VzcyhpKSwKICAgICAgICAgICAgaXRlcjJfLl9iel9mYXN0QWNjZXNzKGkpKTsg
CiAgICB9CiAgICAKcHJpdmF0ZToKICAgIF9iel9WZWNFeHByT3AoKTsKCiAgICBUX2V4cHIxIGl0
ZXIxXzsKICAgIFRfZXhwcjIgaXRlcjJfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFz
cyBQX3VuYXJ5T3A+CmNsYXNzIF9iel9WZWNFeHByVW5hcnlPcCB7CgpwdWJsaWM6CiAgICB0eXBl
ZGVmIFBfZXhwciBUX2V4cHI7CiAgICB0eXBlZGVmIFBfdW5hcnlPcCBUX3VuYXJ5T3A7CiAgICB0
eXBlZGVmIHR5cGVuYW1lICBUX3VuYXJ5T3A6OlRfbnVtdHlwZSBUX251bXR5cGU7CgoKICAgIF9i
el9WZWNFeHByVW5hcnlPcChUX2V4cHIgaXRlcikKICAgICAgICA6IGl0ZXJfKGl0ZXIpCiAgICB7
IH0KCgoKCgoKCiAgICBfYnpfVmVjRXhwclVuYXJ5T3AoY29uc3QgX2J6X1ZlY0V4cHJVbmFyeU9w
PFBfZXhwciwgUF91bmFyeU9wPiYgeCkKICAgICAgICA6IGl0ZXJfKHguaXRlcl8pCiAgICB7IH0K
CgogICAgVF9udW10eXBlIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgICB7IHJldHVybiBUX3Vu
YXJ5T3A6OmFwcGx5KGl0ZXJfW2ldKTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBp
KSBjb25zdAogICAgeyByZXR1cm4gVF91bmFyeU9wOjphcHBseShpdGVyXyhpKSk7IH0KCiAgICBp
bnQgbGVuZ3RoKGludCByZWNvbW1lbmRlZExlbmd0aCkgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJf
Lmxlbmd0aChyZWNvbW1lbmRlZExlbmd0aCk7IH0KCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0
aENvdW50ID0gKGludCkgUF9leHByOjpfYnpfc3RhdGljTGVuZ3RoQ291bnQgICwKICAgICAgICAg
ICBfYnpfZHluYW1pY0xlbmd0aENvdW50ID0gKGludCkgUF9leHByOjpfYnpfZHluYW1pY0xlbmd0
aENvdW50ICAsCiAgICAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9IChpbnQpIFBfZXhwcjo6X2J6
X3N0YXRpY0xlbmd0aCAgIH07CgogICAgaW50IF9iel9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAg
IHsgcmV0dXJuIGl0ZXJfLl9iel9zdWdnZXN0TGVuZ3RoKCk7IH0KCiAgICBib29sICBfYnpfaGFz
RmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5fYnpfaGFzRmFzdEFjY2Vzcygp
OyB9CgogICAgVF9udW10eXBlIF9iel9mYXN0QWNjZXNzKGludCBpKSBjb25zdAogICAgeyByZXR1
cm4gVF91bmFyeU9wOjphcHBseShpdGVyXy5fYnpfZmFzdEFjY2VzcyhpKSk7IH0KCnByaXZhdGU6
CiAgICBfYnpfVmVjRXhwclVuYXJ5T3AoKSB7IH0KCiAgICBUX2V4cHIgaXRlcl87ICAgIAp9OwoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBfYnpfVmVjRXhwckNvbnN0YW50IHsKcHVi
bGljOgogICAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoKICAgIF9iel9WZWNFeHByQ29u
c3RhbnQoUF9udW10eXBlIHZhbHVlKQogICAgICAgIDogdmFsdWVfKCB2YWx1ZSAgKQogICAgeyAK
ICAgIH0KCgogICAgX2J6X1ZlY0V4cHJDb25zdGFudChjb25zdCBfYnpfVmVjRXhwckNvbnN0YW50
PFBfbnVtdHlwZT4mIHgpCiAgICAgICAgOiB2YWx1ZV8oeC52YWx1ZV8pCiAgICB7IH0KCgogICAg
VF9udW10eXBlIG9wZXJhdG9yW10oaW50KSBjb25zdAogICAgeyByZXR1cm4gdmFsdWVfOyB9Cgog
ICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50KSBjb25zdAogICAgeyByZXR1cm4gdmFsdWVfOyB9
CgogICAgaW50IGxlbmd0aChpbnQgcmVjb21tZW5kZWRMZW5ndGgpIGNvbnN0CiAgICB7IHJldHVy
biByZWNvbW1lbmRlZExlbmd0aDsgfQoKICAgIGVudW0geyBfYnpfc3RhdGljTGVuZ3RoQ291bnQg
PSAwLAogICAgICAgICAgIF9iel9keW5hbWljTGVuZ3RoQ291bnQgPSAwLAogICAgICAgICAgIF9i
el9zdGF0aWNMZW5ndGggPSAwCiAgICB9OwoKICAgIGludCBfYnpfc3VnZ2VzdExlbmd0aCgpIGNv
bnN0CiAgICB7IHJldHVybiAwOyB9CgogICAgYm9vbCAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25z
dAogICAgeyByZXR1cm4gMTsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2VzcyhpbnQpIGNv
bnN0CiAgICB7IHJldHVybiB2YWx1ZV87IH0KCnByaXZhdGU6CgogICAgX2J6X1ZlY0V4cHJDb25z
dGFudCgpIHsgfQoKICAgIFRfbnVtdHlwZSB2YWx1ZV87Cn07CgogCgp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8
UF9leHByPiwgCiAgICBfYnpfbmVnYXRlPCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+ID4g
PgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8UF9leHByPiBhKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHI+LAogICAgICAgIF9iel9uZWdhdGU8IHR5cGVu
YW1lICBQX2V4cHI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoYSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZT4s
CiAgICBfYnpfbmVnYXRlPFBfbnVtdHlwZT4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9u
dW10eXBlPiYgYSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZT4sCiAgICAgICAgX2J6X25lZ2F0ZTxQX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihhLmJlZ2luKCkpKTsKfQoKaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwgX2J6X25lZ2F0ZTxSYW5n
ZTo6VF9udW10eXBlPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIHIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFJhbmdlLCBfYnpfbmVnYXRlPFJhbmdlOjpUX251bXR5cGU+ID4gVF9leHBy
OwogICAgCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIocikpOwp9CgoKIAoK
fSAKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNi
b3BzLmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgogCiAKCgojZGVmaW5lIEJaX1ZF
Q0JPUFNfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAoKCgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cisoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
UmFuZ2UsIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
Kyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQWRkPFBf
bnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9BZGQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBmbG9h
dCA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGZs
b2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfQWRk
PFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBkb3VibGUg
PiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3Vi
bGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfQWRk
PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwg
bG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEs
IAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
ID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29t
cGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAK
ICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yKyhfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcisoX2J6X1ZlY0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKF9iel9WZWNFeHByPFBf
ZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAg
X2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBpbnQgPiA+ID4Kb3BlcmF0b3IrKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
ZmxvYXQ+LAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9h
dCA+ID4gPgpvcGVyYXRvcisoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGRvdWJsZSA+ID4gPgpvcGVyYXRvcisoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9BZGQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yKyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
Y29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkp
Owp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxQ
X251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IrKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludCA+ID4gPgpv
cGVyYXRvcisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUx
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRv
cisoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9BZGQ8UF9udW10
eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91
YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9i
el9BZGQ8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9BZGQ8UF9u
dW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGxvbmcg
ZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkp
Owp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9BZGQ8UF9u
dW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4g
KGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhSYW5nZSBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0FkZDxpbnQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IrKFJhbmdlIGQxLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0FkZDxpbnQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGludCwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcisoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9BZGQ8aW50LCBpbnQgPiA+ID4Kb3Bl
cmF0b3IrKFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0FkZDxpbnQsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxpbnQsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3IrKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAg
X2J6X0FkZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwKICAgICAgX2J6X0FkZDxpbnQsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yKyhSYW5nZSBk
MSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9BZGQ8aW50LCBmbG9h
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+LAogICAgICBfYnpfQWRkPGludCwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKyhSYW5nZSBk
MSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0FkZDxpbnQsIGRv
dWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfQWRkPGludCwgbG9uZyBkb3VibGUgPiA+ID4Kb3Bl
cmF0b3IrKFJhbmdlIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X0FkZDxpbnQsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0FkZDxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVy
YXRvcisoUmFuZ2UgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
ICwgCiAgICAgIF9iel9BZGQ8aW50LCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBl
MSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfQWRkPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3IrKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0Fk
ZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0FkZDxQ
X251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IrKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251
bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3Bl
cmF0b3IrKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5f
bGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3IrKGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgX2J6X0FkZDxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKyhj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X0FkZDxQX251bXR5cGUxLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4g
PiA+Cm9wZXJhdG9yKyhjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQx
LCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgbG9uZyBk
b3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7
Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFQy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gLAogICAgICBfYnpfQWRkPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVy
YXRvcisoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9BZGQ8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
KyhpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxpbnQsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQWRk
PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoaW50IGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9BZGQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0FkZDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGludCBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
KyhpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAg
ICAgX2J6X0FkZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGZsb2F0LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yKyhmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9B
ZGQ8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0FkZDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8ZmxvYXQsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGZsb2F0IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfQWRkPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRk
PGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3IrKGZsb2F0IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIFJhbmdlLCAKICAgICAgX2J6X0FkZDxmbG9hdCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9s
ZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwKICAgICAgX2J6X0FkZDxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoZmxv
YXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAg
ICBfYnpfQWRkPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxkb3VibGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfQWRkPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8ZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKyhkb3VibGUgZDEsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0FkZDxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
QWRkPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoZG91YmxlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X0FkZDxkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvcisoZG91Ymxl
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9BZGQ8ZG91Ymxl
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9BZGQ8ZG91YmxlLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKyhkb3VibGUgZDEsIAogICAgICBjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0FkZDxkb3VibGUsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yKyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9BZGQ8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihk
MSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0FkZDxsb25nIGRv
dWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisobG9uZyBk
b3VibGUgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAg
ZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9BZGQ8bG9uZyBkb3VibGUs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBpbnQgPiA+
ID4Kb3BlcmF0b3IrKGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X0FkZDxsb25nIGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxsb25nIGRvdWJsZSwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcisobG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQWRkPGxvbmcgZG91YmxlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0FkZDxjb21w
bGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGNvbXBsZXg8VDE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQWRkPGNvbXBsZXg8VDE+ICwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8Y29tcGxleDxUMT4gLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKyhjb21wbGV4PFQxPiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0FkZDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7
Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAs
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQWRkPGNv
bXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcisoY29tcGxleDxUMT4gZDEsIAog
ICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0FkZDxjb21wbGV4PFQxPiAs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJh
bmdlLAogICAgICBfYnpfQWRkPGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+Cm9wZXJhdG9yKyhjb21w
bGV4PFQxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0FkZDxjb21wbGV4PFQxPiAsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0FkZDxjb21wbGV4PFQxPiAsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IrKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQWRkPGNvbXBsZXg8
VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgoKIAoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAg
ICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
UmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBp
bnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9i
el9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBpbnQgPiA+ID4K
b3BlcmF0b3ItKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10
eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9w
ZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251
bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBkb3VibGUg
PiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3Vi
bGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU3Vi
dHJhY3Q8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1N1YnRyYWN0PFBf
bnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yLShjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBsb25nIGRv
dWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9TdWJ0cmFjdDxQX251
bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgY29tcGxl
eDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIp
KSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8
UF9leHByMT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1YnRyYWN0PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShf
YnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvci0oX2J6X1ZlY0V4cHI8
UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X1N1YnRyYWN0PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvci0oX2J6X1Zl
Y0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAg
X2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4K
b3BlcmF0b3ItKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3ItKF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7
Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLShfYnpfVmVjRXhw
cjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxU
Mj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29u
c3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1N1YnRyYWN0
PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ItKGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwg
aW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpf
U3VidHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGludCA+ID4g
PgpvcGVyYXRvci0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1N1YnRy
YWN0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvci0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGRvdWJs
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgbG9uZyBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3ItKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEs
IGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvci0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUx
PiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGNvbXBs
ZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9TdWJ0cmFjdDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKFJhbmdl
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X1N1YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxp
bnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1N1YnRy
YWN0PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9T
dWJ0cmFjdDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfU3VidHJhY3Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9TdWJ0cmFjdDxpbnQsIGludCA+ID4gPgpvcGVyYXRvci0oUmFuZ2UgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2Us
IAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3It
KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X1N1YnRyYWN0PGlu
dCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAog
ICAgICBfYnpfU3VidHJhY3Q8aW50LCBmbG9hdCA+ID4gPgpvcGVyYXRvci0oUmFuZ2UgZDEsIAog
ICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBmbG9h
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+LAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBkb3VibGUgPiA+ID4Kb3BlcmF0b3ItKFJh
bmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJh
Y3Q8aW50LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoK
IAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1N1YnRyYWN0PGludCwgbG9uZyBk
b3VibGUgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1N1YnRyYWN0PGludCwgbG9uZyBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfU3VidHJhY3Q8aW50
LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3ItKFJhbmdlIGQxLCAKICAgICAgY29tcGxleDxU
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBjb21w
bGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yLShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PFBf
bnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8
UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQg
Tl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X1N1
YnRyYWN0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3Ro
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBf
YnpfU3VidHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlW
ZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU3Vi
dHJhY3Q8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfU3VidHJh
Y3Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yLShjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlw
ZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9TdWJ0cmFj
dDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9u
dW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfU3VidHJhY3Q8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yLShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6
X1N1YnRyYWN0PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5f
bGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxs
b25nIGRvdWJsZT4sCiAgICAgIF9iel9TdWJ0cmFjdDxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+
ID4gPgpvcGVyYXRvci0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwg
bG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4o
ZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNs
YXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLAogICAgICBfYnpfU3VidHJhY3Q8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
ID4gPiA+Cm9wZXJhdG9yLShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X1N1YnRyYWN0PFBfbnVtdHlw
ZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1
YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGludCBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8aW50
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0PGludCwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvci0oaW50IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X1N1YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVu
Z3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfU3VidHJhY3Q8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShpbnQg
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X1N1YnRyYWN0PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxmbG9hdCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvci0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9u
dW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfU3VidHJhY3Q8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGZsb2F0LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShmbG9hdCBkMSwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfU3VidHJhY3Q8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGZsb2F0IGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU3VidHJhY3Q8ZmxvYXQsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TdWJ0cmFjdDxmbG9hdCwgaW50ID4gPiA+Cm9wZXJh
dG9yLShmbG9hdCBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9T
dWJ0cmFjdDxmbG9hdCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1
YnRyYWN0PGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShmbG9hdCBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TdWJ0cmFj
dDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3ItKGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfU3VidHJhY3Q8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGRvdWJsZSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0oZG91YmxlIGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfU3VidHJhY3Q8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShk
b3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU3VidHJhY3Q8ZG91
YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUs
IGludCA+ID4gPgpvcGVyYXRvci0oZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBS
YW5nZSwgCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBO
X2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwKICAgICAgX2J6X1N1YnRyYWN0PGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvci0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3It
KGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0
PGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxsb25nIGRv
dWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci0obG9uZyBk
b3VibGUgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3VibGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0PGxv
bmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLShsb25nIGRvdWJsZSBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0PGxvbmcgZG91Ymxl
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVn
aW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU3VidHJhY3Q8
bG9uZyBkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvci0obG9uZyBkb3VibGUgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3Vi
bGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9T
dWJ0cmFjdDxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0obG9uZyBkb3Vi
bGUgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4s
IAogICAgICBfYnpfU3VidHJhY3Q8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCnRlbXBsYXRlPGNs
YXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU3VidHJhY3Q8Y29tcGxleDxUMT4gLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yLShjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X1N1YnRyYWN0PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBs
YXRlPGNsYXNzIFQxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGNvbXBsZXg8VDE+IGQxLCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfU3VidHJhY3Q8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9
CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1N1YnRyYWN0
PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29tcGxleDxUMT4gZDEs
IAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1N1YnRyYWN0PGNvbXBs
ZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgUmFuZ2UsCiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIGludCA+ID4gPgpv
cGVyYXRvci0oY29tcGxleDxUMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBS
YW5nZSwgCiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1N1YnRy
YWN0PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci0oY29tcGxleDxUMT4g
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQx
PiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwg
CiAgICAgIF9iel9TdWJ0cmFjdDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X011bHRpcGx5PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5
cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9NdWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciooY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAg
ICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcioo
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTXVs
dGlwbHk8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9NdWx0aXBs
eTxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvciooY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9h
dD4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
TXVsdGlwbHk8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpv
cGVyYXRvciooY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpf
TXVsdGlwbHk8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9w
ZXJhdG9yKihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6
X011bHRpcGx5PFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvciooX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlwbHk8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUg
PiA+ID4Kb3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X011bHRpcGx5
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRp
cGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yKihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9l
eHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4K
b3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdl
LCAKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwg
aW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAg
ICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQg
PiA+ID4Kb3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sCiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3IqKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZmxv
YXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X011bHRpcGx5PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpf
TXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+
Cm9wZXJhdG9yKihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9NdWx0aXBseTwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
LCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAg
ICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+
ICA+ID4gPgpvcGVyYXRvciooX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb21wbGV4
PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9N
dWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvciooY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQ
X2V4cHIyPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10
eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X011bHRpcGx5
PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9N
dWx0aXBseTxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9N
dWx0aXBseTxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAg
ICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yKihjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEs
IGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IqKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91
YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9i
el9NdWx0aXBseTxQX251bXR5cGUxLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X011
bHRpcGx5PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PFBf
bnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBU
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAg
ICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3Iq
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9i
el9NdWx0aXBseTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxSYW5nZSwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVsdGlwbHk8aW50LCBpbnQgPiA+ID4K
b3BlcmF0b3IqKFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X011bHRpcGx5PGludCwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlW
ZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X011bHRpcGx5PGludCwgZmxvYXQg
PiA+ID4Kb3BlcmF0b3IqKFJhbmdlIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X011bHRpcGx5PGludCwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+KGQyKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X011bHRpcGx5PGlu
dCwgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAg
ICAgIF9iel9NdWx0aXBseTxpbnQsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yKihSYW5nZSBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9N
dWx0aXBseTxpbnQsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwKICAgICAgX2J6X011bHRpcGx5PGludCwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9y
KihSYW5nZSBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAK
ICAgICAgX2J6X011bHRpcGx5PGludCwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTXVsdGlwbHk8UF9u
dW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwg
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTXVsdGlwbHk8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBpbnQgPiA+ID4K
b3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X011
bHRpcGx5PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVy
YXRvciooY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+LAogICAgICBfYnpfTXVsdGlwbHk8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3Bl
cmF0b3IqKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvciooY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+
JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTXVsdGlw
bHk8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IqKGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgX2J6X011bHRpcGx5PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X011bHRp
cGx5PFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciooY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwg
CiAgICAgIF9iel9NdWx0aXBseTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X011bHRpcGx5PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooaW50IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlw
bHk8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKihpbnQg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGludCBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X011bHRpcGx5PGludCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvciooaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9NdWx0aXBseTxpbnQsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGZsb2F0
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGZsb2F0LCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAg
IF9iel9NdWx0aXBseTxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvciooZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PGZsb2F0LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yKihmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X011bHRpcGx5PGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVs
dGlwbHk8ZmxvYXQsIGludCA+ID4gPgpvcGVyYXRvciooZmxvYXQgZDEsIAogICAgICBSYW5nZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTxmbG9hdCwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvciooZmxvYXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfTXVsdGlwbHk8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihkb3VibGUg
ZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGRvdWJsZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9NdWx0aXBseTxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3IqKGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZG91YmxlLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PGRvdWJsZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X011bHRpcGx5PGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdl
LAogICAgICBfYnpfTXVsdGlwbHk8ZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0b3IqKGRvdWJsZSBk
MSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTXVsdGlwbHk8ZG91
YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTxk
b3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IqKGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8ZG91
YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91Ymxl
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yKihsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfTXVsdGlwbHk8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGUgPiA+ID4Kb3BlcmF0b3IqKGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X011bHRpcGx5PGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpv
cGVyYXRvcioobG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0
b3IqKGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLCAK
ICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGlu
dCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTXVsdGlwbHk8bG9uZyBkb3VibGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3IqKGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X011bHRpcGx5PGxvbmcgZG91
YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+ICwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X011
bHRpcGx5PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciooY29tcGxleDxU
MT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4
PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlw
bHk8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yKihjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X011bHRpcGx5PGNvbXBs
ZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IqKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwgCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTXVsdGlw
bHk8Y29tcGxleDxUMT4gLCBpbnQgPiA+ID4Kb3BlcmF0b3IqKGNvbXBsZXg8VDE+IGQxLCAKICAg
ICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTXVsdGlwbHk8Y29t
cGxleDxUMT4gLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQy
KSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9NdWx0aXBseTxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3IqKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTXVsdGlwbHk8Y29tcGxleDxU
MT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Rpdmlk
ZTxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3I8UF9udW10eXBl
MT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvci8oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yLyhjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50
IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IvKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAg
IF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRGl2
aWRlPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
RGl2aWRlPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvci8oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRv
ci8oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRGl2aWRl
PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAg
ICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IvKGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfRGl2aWRlPFBf
bnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9E
aXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3IvKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Rpdmlk
ZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKF9i
el9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yLyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9EaXZpZGU8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0RpdmlkZTwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvci8oX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9i
el9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yLyhfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0RpdmlkZTwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yLyhfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBk
b3VibGUgPiA+ID4Kb3BlcmF0b3IvKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9u
ZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21w
bGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IvKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
Y29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAg
ICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvci8oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50
ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUx
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRlPFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBl
MSwgaW50ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRGl2aWRlPFBfbnVt
dHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfRGl2aWRlPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvci8oY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBkb3Vi
bGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBsb25nIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvci8oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBjb21w
bGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgY29tcGxleDxUMj4g
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAg
X2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKFJhbmdlIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRGl2aWRlPGludCwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxpbnQs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwKICAgICAgX2J6X0RpdmlkZTxpbnQsIGlu
dCA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfRGl2aWRlPGlu
dCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xl
bmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRl
PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAgICBjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRGl2aWRlPGludCwgZmxvYXQg
PiA+ID4Kb3BlcmF0b3IvKFJhbmdlIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X0RpdmlkZTxpbnQsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0
PihkMikpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9EaXZpZGU8aW50LCBk
b3VibGUgPiA+ID4Kb3BlcmF0b3IvKFJhbmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRGl2aWRlPGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9i
el9EaXZpZGU8aW50LCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvci8oUmFuZ2UgZDEsIAogICAg
ICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRGl2aWRlPGlu
dCwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkp
Owp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAg
ICBfYnpfRGl2aWRlPGludCwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLyhSYW5nZSBkMSwg
CiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0Rp
dmlkZTxpbnQsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9E
aXZpZGU8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvci8oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2
aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
RGl2aWRlPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvci8oY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6
X0RpdmlkZTxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9EaXZpZGU8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfRGl2aWRlPFBfbnVt
dHlwZTEsIGludCA+ID4gPgpvcGVyYXRvci8oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBO
X2xlbmd0aDE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9EaXZpZGU8UF9udW10eXBlMSwgaW50PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUx
LCBmbG9hdCA+ID4gPgpvcGVyYXRvci8oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlwZTEsIGZsb2F0
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0RpdmlkZTxQX251
bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRGl2aWRlPFBfbnVtdHlw
ZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAg
IF9iel9EaXZpZGU8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IvKGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBsb25nIGRvdWJs
ZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9i
el9EaXZpZGU8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLyhjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLCAKICAgICAgX2J6X0RpdmlkZTxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGludCBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9EaXZpZGU8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLyhpbnQgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LCAKICAgICAgX2J6X0RpdmlkZTxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfRGl2aWRlPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oaW50IGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0RpdmlkZTxpbnQsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IvKGludCBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sIAogICAgICBfYnpfRGl2aWRlPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZp
ZGU8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGZsb2F0IGQxLCAKICAgICAgY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0RpdmlkZTxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRGl2aWRlPGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLyhmbG9hdCBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X0RpdmlkZTxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oZmxvYXQg
ZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAK
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIGludCA+ID4gPgpvcGVy
YXRvci8oZmxvYXQgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
RGl2aWRlPGZsb2F0LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2
aWRlPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhmbG9hdCBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9EaXZpZGU8Zmxv
YXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2aWRlPGRvdWJsZSwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvci8oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZp
ZGU8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxkb3VibGUsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpf
RGl2aWRlPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9E
aXZpZGU8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhkb3VibGUgZDEsIAogICAg
ICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPGRvdWJsZSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwg
CiAgICAgIFJhbmdlLAogICAgICBfYnpfRGl2aWRlPGRvdWJsZSwgaW50ID4gPiA+Cm9wZXJhdG9y
Lyhkb3VibGUgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0Rp
dmlkZTxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0Rp
dmlkZTxkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGRvdWJsZSBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfRGl2aWRl
PGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZpZGU8bG9uZyBkb3Vi
bGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IvKGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0RpdmlkZTxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfRGl2aWRlPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yLyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9E
aXZpZGU8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0RpdmlkZTxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
ci8obG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9EaXZpZGU8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2Us
CiAgICAgIF9iel9EaXZpZGU8bG9uZyBkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvci8obG9uZyBk
b3VibGUgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
RGl2aWRlPGxvbmcgZG91YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0
aDI+LAogICAgICBfYnpfRGl2aWRlPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yLyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9EaXZpZGU8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgog
CnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+
ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oY29tcGxleDxUMT4gZDEsIAogICAgICBjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9EaXZpZGU8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxjb21wbGV4PFQxPiAsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGNvbXBsZXg8VDE+IGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIp
KTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9EaXZp
ZGU8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yLyhjb21wbGV4PFQxPiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRGl2aWRlPGNvbXBs
ZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgUmFuZ2UsCiAgICAgIF9iel9EaXZpZGU8Y29tcGxleDxUMT4gLCBpbnQgPiA+ID4Kb3Bl
cmF0b3IvKGNvbXBsZXg8VDE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+ICwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfRGl2aWRlPGNv
bXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvci8oY29tcGxleDxUMT4gZDEsIAog
ICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwg
CiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAg
IF9iel9EaXZpZGU8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IlKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01vZDxQX251bXR5cGUx
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvciUoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yJShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3IlKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9Nb2Q8
UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgX2J6X01vZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9kPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJShfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJShfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yJShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4g
PgpvcGVyYXRvciUoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50
IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3IlKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpf
TW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3IlKF9i
el9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IlKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01v
ZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
JShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X01v
ZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9N
b2Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X01vZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9Nb2Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAg
ICAgX2J6X01vZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IlKGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9N
b2Q8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJShjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Nb2Q8aW50LCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yJShSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01v
ZDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKFJhbmdl
IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X01v
ZDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTW9k
PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9N
b2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Nb2Q8aW50
LCBpbnQgPiA+ID4Kb3BlcmF0b3IlKFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X01vZDxp
bnQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9s
ZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X01vZDxp
bnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IlKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X01vZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
ciUoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X01vZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yJShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X01vZDxQ
X251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBSYW5nZSwKICAgICAgX2J6X01vZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0
b3IlKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X01vZDxQX251
bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sCiAgICAgIF9iel9Nb2Q8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvciUoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAog
ICAgICBfYnpfTW9kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6
X01vZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IlKGNvbnN0IFRpbnlWZWN0b3I8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTW9kPFBfbnVtdHlwZTEs
IGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfTW9kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoaW50IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Nb2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01vZDxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGludCBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTW9kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Nb2Q8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4s
IAogICAgICBfYnpfTW9kPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0
aDI+LAogICAgICBfYnpfTW9kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciUoaW50IGQx
LCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9N
b2Q8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0
d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9S
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlw
ZTEsIGludCA+ID4gPgpvcGVyYXRvcl4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5
cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUx
LCBpbnQgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0
d2lzZVhPUjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcl4o
X2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihf
YnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKF9iel9WZWNF
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3
aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3Je
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9s
ZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwK
ICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3JeKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwK
ICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+
ID4gPgpvcGVyYXRvcl4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lz
ZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdp
c2VYT1I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUx
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9u
dW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lz
ZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcl4o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBSYW5nZSwgCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlw
ZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAg
ICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUx
LCBpbnQgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgUF9udW10eXBlMiA+ID4gPgpv
cGVyYXRvcl4oUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjxpbnQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfQml0d2lzZVhPUjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3JeKFJhbmdlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yXihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgaW50ID4gPiA+Cm9w
ZXJhdG9yXihSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZVhPUjxp
bnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3JeKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yXihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9S
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpf
Qml0d2lzZVhPUjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yXihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBl
MSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cl4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJh
bmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lzZVhP
UjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3JeKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8UF9udW10eXBlMSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwg
aW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3Bl
cmF0b3JeKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfQml0d2lzZVhPUjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VY
T1I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQx
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0JpdHdpc2VYT1I8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0Jp
dHdpc2VYT1I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZVhPUjxpbnQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yXihpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8aW50LCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBf
YnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4g
PiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihj
b25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5i
ZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYo
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3ImKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEs
IAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAg
ICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImKF9i
el9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUy
LCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
PFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0
aDI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciYoX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlQW5k
PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYoY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9C
aXR3aXNlQW5kPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAg
ICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3Im
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlw
ZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9C
aXR3aXNlQW5kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYoUmFuZ2UgZDEsIAogICAg
ICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
Qml0d2lzZUFuZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZUFuZDxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ImKFJhbmdlIGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdp
c2VBbmQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihSYW5nZSBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9CaXR3aXNlQW5kPGludCwgaW50ID4gPiA+Cm9wZXJhdG9yJihSYW5nZSBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5n
ZSwgCiAgICAgIF9iel9CaXR3aXNlQW5kPGludCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZUFuZDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3ImKFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdp
c2VBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
Qml0d2lzZUFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJihjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5
cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVu
Z3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNl
QW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYoY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lzZUFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgx
LCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9i
el9CaXR3aXNlQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImKGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0Jp
dHdpc2VBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0
d2lzZUFuZDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3ImKGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZUFuZDxQ
X251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yJihpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yJihpbnQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yJihpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
Qml0d2lzZUFuZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0
aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwK
ICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJihpbnQg
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X0JpdHdpc2VBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAg
ICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Jp
dHdpc2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10
eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10
eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZU9yPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
aW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0JpdHdp
c2VPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAg
ICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yfChfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcnwoX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfQml0d2lz
ZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9C
aXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3J8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfQml0
d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3J8
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEs
IAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3aXNl
T3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfChjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6
X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
CiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfChjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEs
IGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChSYW5nZSBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KFJhbmdlIGQxLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfQml0d2lzZU9yPGlu
dCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9CaXR3
aXNlT3I8aW50LCBpbnQgPiA+ID4Kb3BlcmF0b3J8KFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0JpdHdpc2VPcjxpbnQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwK
ICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3J8KFJhbmdl
IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9u
dW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxQ
X251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yfChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0JpdHdp
c2VPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQg
PiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBp
bnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8UF9udW10eXBl
MSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0JpdHdpc2VPcjxQX251bXR5cGUxLCBpbnQg
PiA+ID4Kb3BlcmF0b3J8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfQml0d2lzZU9yPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
Qml0d2lzZU9yPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnwoaW50IGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxpbnQs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGludCBkMSwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAog
ICAgICBfYnpfQml0d2lzZU9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9i
el9CaXR3aXNlT3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfChpbnQgZDEsIAogICAg
ICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfQml0d2lzZU9yPGludCwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfQml0d2lzZU9yPGludCwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcnwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8aW50LCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+
ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+
Pihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cj4+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwg
aW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRSaWdo
dDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cj4+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUx
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+KF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4+KF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PihfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9TaGlmdFJpZ2h0
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlm
dFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yPj4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9y
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfU2hp
ZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9y
Pj4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5
cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+Pihjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRS
aWdodDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFu
Z2UsIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yPj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9T
aGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludCA+
ID4gPgpvcGVyYXRvcj4+KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
aW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9T
aGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cj4+KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X1NoaWZ0UmlnaHQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yPj4oUmFuZ2UgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAog
ICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+
PihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgaW50ID4gPiA+Cm9wZXJh
dG9yPj4oUmFuZ2UgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj4oUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I+Pihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpf
U2hpZnRSaWdodDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yPj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5cGUxLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAg
ICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+
KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRSaWdodDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yPj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfU2hpZnRS
aWdodDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I+Pihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8UF9udW10eXBlMSwgaW50ID4gPiA+
Cm9wZXJhdG9yPj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwg
CiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hp
ZnRSaWdodDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PihpbnQgZDEsIAogICAgICBj
b25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj4oaW50IGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9TaGlmdFJpZ2h0PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4+KGludCBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PGludCwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PihpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yPDwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJh
dG9yPDwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIs
IGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8
PChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBp
bnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoX2J6X1ZlY0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
cjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw8KF9iel9WZWNFeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I8PChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPDwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10
eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9TaGlmdExl
ZnQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6
X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAg
X2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8PChjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0
PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2UgZDEsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExl
ZnQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9TaGlmdExl
ZnQ8aW50LCBpbnQgPiA+ID4Kb3BlcmF0b3I8PChSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9i
el9TaGlmdExlZnQ8aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAg
ICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoUmFuZ2Ug
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0PGludCwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251
bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAog
ICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8
UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfU2hp
ZnRMZWZ0PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfU2hpZnRMZWZ0PFBfbnVtdHlwZTEsIGlu
dCA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAg
ICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yPDwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0
aDE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9TaGlmdExlZnQ8UF9udW10eXBlMSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoaW50IGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0TGVm
dDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PChpbnQg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X1NoaWZ0TGVmdDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfU2hpZnRMZWZ0PGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw8KGludCBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8aW50
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPDwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8aW50LCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4g
PiA+Cm9wZXJhdG9yPihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9HcmVhdGVyPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5
cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb25zdCBW
ZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X0dyZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAg
IF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfR3JlYXRlcjxQ
X251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5
cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyPFBf
bnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+
JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAg
IF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPihjb25z
dCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVt
dHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6
X0dyZWF0ZXI8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPihjb25zdCBW
ZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10
eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0
ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3I+KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4oX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVjRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9HcmVhdGVy
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
PihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9HcmVhdGVyPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KF9iel9WZWNFeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBm
bG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9i
el9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4Kb3Bl
cmF0b3I+KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPihfYnpfVmVjRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwgCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25n
IGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I+KF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAsIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVh
dGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8
UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
R3JlYXRlcjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
Pihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBl
MSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwK
ICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPihjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I+
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3JlYXRlcjxQX251
bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4oY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVy
PFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
CiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRv
cj4oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAg
X2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPGludCwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9HcmVhdGVyPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcj4oUmFuZ2UgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I+KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBSYW5nZSwKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBpbnQgPiA+ID4Kb3BlcmF0
b3I+KFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9HcmVhdGVyPGludCwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcj4oUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAog
ICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoK
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8aW50LCBmbG9hdCA+ID4gPgpvcGVy
YXRvcj4oUmFuZ2UgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpf
R3JlYXRlcjxpbnQsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsK
fQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyPGludCwgZG91YmxlID4g
PiA+Cm9wZXJhdG9yPihSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X0dyZWF0ZXI8aW50LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPihkMikpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0
ZXI8aW50LCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4oUmFuZ2UgZDEsIAogICAgICBsb25n
IGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIGxv
bmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6
X0dyZWF0ZXI8aW50LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I+KFJhbmdlIGQxLCAKICAg
ICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfR3JlYXRl
cjxpbnQsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEs
IGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+
JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxQ
X251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBf
YnpfR3JlYXRlcjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBlMSwgaW50PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVu
Z3RoMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAg
ICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9H
cmVhdGVyPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0dyZWF0
ZXI8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPihjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10eXBl
MSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXI8
UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0dyZWF0ZXI8UF9udW10
eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
R3JlYXRlcjxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfR3Jl
YXRlcjxQX251bXR5cGUxLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpv
cGVyYXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAg
ICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjxQX251bXR5cGUxLCBsb25nIGRv
dWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgVDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxU
Mj4gPiAsCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpv
cGVyYXRvcj4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAg
ICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9HcmVhdGVyPFBfbnVtdHlwZTEsIGNvbXBs
ZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3I+KGludCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3I+KGludCBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I+KGludCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPGlu
dCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3Jl
YXRlcjxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+KGludCBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlcjxpbnQsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvcj4oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcj4oZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9HcmVhdGVyPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLAogICAgICBf
YnpfR3JlYXRlcjxmbG9hdCwgaW50ID4gPiA+Cm9wZXJhdG9yPihmbG9hdCBkMSwgCiAgICAgIFJh
bmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyPGZsb2F0LCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcj4oZmxvYXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlcjxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZG91Ymxl
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcj4oZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAg
ICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0dyZWF0ZXI8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAg
ICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgaW50ID4gPiA+Cm9wZXJhdG9yPihkb3VibGUgZDEsIAog
ICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXI8ZG91YmxlLCBp
bnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj4oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyPGRvdWJsZSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPihsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxs
b25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9HcmVhdGVyPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yPihsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPGxv
bmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihsb25n
IGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0
ZXI8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+KGxvbmcgZG91Ymxl
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0
ZXI8bG9uZyBkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4s
CiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
Pihsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4g
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPihjb21wbGV4PFQxPiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
MikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+
ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dy
ZWF0ZXI8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPihjb21wbGV4PFQx
PiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAg
ICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlcjxj
b21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlcjxjb21wbGV4PFQxPiAsIGludCA+ID4g
PgpvcGVyYXRvcj4oY29tcGxleDxUMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyPGNvbXBsZXg8VDE+ICwgaW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3Jl
YXRlcjxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+KGNvbXBsZXg8VDE+
IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxU
MT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4s
IAogICAgICBfYnpfR3JlYXRlcjxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNz
PFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10
eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwg
aW50ID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
UmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTGVzczxQ
X251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcjwoY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9i
el9MZXNzPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6
X0xlc3M8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwK
ICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8UF9udW10
eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpf
TGVzczxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBj
b21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoX2J6X1Zl
Y0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQg
PiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFJhbmdlLCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGlu
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAg
ICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVy
YXRvcjwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBf
YnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0
b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwK
ICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4g
PgpvcGVyYXRvcjwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihk
MikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEs
IAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
ICwgCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4
PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5
cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yPChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludCA+ID4gPgpv
cGVyYXRvcjwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVt
dHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBf
YnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3Bl
cmF0b3I8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNzPFBfbnVt
dHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpv
cGVyYXRvcjwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNz
PFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGRv
dWJsZSA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAog
ICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAK
ICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9i
el9MZXNzPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBWZWN0
b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8UF9udW10
eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFQyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAg
X2J6X0xlc3M8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPChjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTGVzczxQ
X251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I8KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xl
c3M8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChSYW5n
ZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9M
ZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9M
ZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoUmFuZ2UgZDEsIAogICAgICBjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTGVz
czxpbnQsIGludCA+ID4gPgpvcGVyYXRvcjwoUmFuZ2UgZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
TGVzczxpbnQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBp
bnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6
X0xlc3M8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChSYW5nZSBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVn
aW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfTGVzczxpbnQsIGZsb2F0
ID4gPiA+Cm9wZXJhdG9yPChSYW5nZSBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0Piwg
CiAgICAgIF9iel9MZXNzPGludCwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQyKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0xlc3M8aW50LCBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3I8KFJhbmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfTGVzczxpbnQsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+KGQyKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5n
ZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTGVz
czxpbnQsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChSYW5nZSBkMSwgCiAgICAgIGxvbmcg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9MZXNzPGludCwgbG9uZyBk
b3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTGVz
czxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjwoUmFuZ2UgZDEsIAogICAgICBjb21w
bGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9MZXNzPGludCwgY29t
cGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yPChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChjb25zdCBUaW55VmVj
dG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9MZXNzPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgx
LCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X0xlc3M8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGludCA+ID4g
PgpvcGVyYXRvcjwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwg
CiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpf
TGVzczxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYg
ZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVu
Z3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfTGVzczxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTGVz
czxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQy
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBf
YnpfTGVzczxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTGVzczxQ
X251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0Pihk
MikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAg
IF9iel9MZXNzPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjwoY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9M
ZXNzPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3Ro
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJh
dG9yPChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
bG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9MZXNzPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBUMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwK
ICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPChj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29tcGxl
eDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLCAKICAgICAgX2J6X0xlc3M8UF9udW10eXBlMSwgY29tcGxleDxUMj4gPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoaW50
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzPGlu
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjwoaW50IGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9MZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9M
ZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjwoaW50IGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xlc3M8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
LCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cjwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAg
ICAgIF9iel9MZXNzPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9MZXNzPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNz
PGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xlc3M8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9MZXNzPGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3I8KGZsb2F0IGQxLCAKICAgICAgUmFu
Z2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xlc3M8ZmxvYXQsIGludD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9MZXNzPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9h
dD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xl
c3M8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChkb3VibGUgZDEsIAogICAgICBj
b25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3M8ZG91
YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChkb3VibGUg
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUyPiwKICAgICAgX2J6X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChk
b3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzczxkb3VibGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGRvdWJsZT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0xlc3M8ZG91YmxlLCBpbnQgPiA+
ID4Kb3BlcmF0b3I8KGRvdWJsZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsIAog
ICAgICBfYnpfTGVzczxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAg
ICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAg
ICAgX2J6X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPChkb3VibGUgZDEs
IAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6
X0xlc3M8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3M8bG9uZyBk
b3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91YmxlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xl
c3M8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGxv
bmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVz
czxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBSYW5nZSwKICAgICAg
X2J6X0xlc3M8bG9uZyBkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvcjwobG9uZyBkb3VibGUgZDEs
IAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzczxsb25n
IGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAg
X2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91
YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LCAKICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3I8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
LAogICAgICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpf
TGVzczxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzczxjb21wbGV4PFQxPiAsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRl
bXBsYXRlPGNsYXNzIFQxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNz
PGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+Cm9wZXJhdG9yPChjb21wbGV4PFQxPiBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xlc3M8Y29tcGxleDxU
MT4gLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0K
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9MZXNzPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvcjwoY29tcGxleDxUMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzPGNvbXBsZXg8VDE+ICwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgoKIAoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5
cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFs
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBf
YnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPj0oY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAog
ICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcj49KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVx
dWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpv
cGVyYXRvcj49KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGZs
b2F0ID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAg
IGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
bG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGNvbXBs
ZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQy
KSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVx
dWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9w
ZXJhdG9yPj0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRl
ck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0dyZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAg
ICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9l
eHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+
PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfR3JlYXRl
ck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRv
cj49KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZs
b2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj49KF9iel9W
ZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+PShfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQy
KSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcj49
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQ
X251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5n
ZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
cj49KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3Mg
UF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9HcmVh
dGVyT3JFcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpv
cGVyYXRvcj49KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3Jl
YXRlck9yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj49KGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlw
ZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPj0o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6
X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVh
bDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShSYW5nZSBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5n
ZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0dyZWF0ZXJPckVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KFJhbmdlIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgUmFuZ2UsCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxpbnQsIGludCA+ID4gPgpvcGVyYXRv
cj49KFJhbmdlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxSYW5nZSwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgaW50
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1
YWw8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAogICAgICBjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxpbnQsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAogICAgICBmbG9h
dCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBmbG9hdD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+
PShSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4o
ZDIpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDxpbnQsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oUmFuZ2UgZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1
YWw8aW50LCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4o
ZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRv
cj49KFJhbmdlIGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
IAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8aW50LCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVh
dGVyT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVh
dGVyT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBS
YW5nZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVy
YXRvcj49KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0
ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBO
X2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlw
ZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBO
X2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251
bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlw
ZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj49KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0dyZWF0
ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpv
cGVyYXRvcj49KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAog
ICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgZG91YmxlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj0oY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4s
IAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFQyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAg
ICBfYnpfR3JlYXRlck9yRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJh
dG9yPj0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxQX251bXR5cGUxLCBj
b21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgUF9u
dW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfR3JlYXRlck9yRXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0dyZWF0ZXJPckVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxpbnQsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVx
dWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj49KGludCBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPj0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj0oZmxvYXQgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yPj0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9H
cmVhdGVyT3JFcXVhbDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3I+PShmbG9hdCBkMSwgCiAgICAg
IFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxmbG9hdCwg
aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZs
b2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oZmxvYXQgZDEsIAogICAgICBjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8
ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9HcmVhdGVyT3JFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
Pj0oZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxkb3VibGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAg
ZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91Ymxl
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPj0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCBpbnQgPiA+ID4Kb3Bl
cmF0b3I+PShkb3VibGUgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAg
X2J6X0dyZWF0ZXJPckVxdWFsPGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3Ro
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxk
b3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yPj0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3I+PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9HcmVhdGVyT3JFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBf
YnpfR3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I+PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9H
cmVhdGVyT3JFcXVhbDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I+PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8bG9uZyBk
b3VibGUsIGludCA+ID4gPgpvcGVyYXRvcj49KGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2Ug
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGxvbmcgZG91
YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpf
R3JlYXRlck9yRXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShs
b25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5n
dGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
CiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxj
b21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb21wbGV4PFQxPiBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGNvbXBsZXg8
VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX2V4cHIyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVy
T3JFcXVhbDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3I+PShjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxjb21wbGV4PFQx
PiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I+PShjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8Y29tcGxleDxU
MT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBSYW5nZSwKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+
Cm9wZXJhdG9yPj0oY29tcGxleDxUMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBSYW5nZSwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDxjb21wbGV4PFQxPiAsIGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHBy
Q29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwg
CiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAg
X2J6X0dyZWF0ZXJPckVxdWFsPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cj49KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBO
X2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8Y29tcGxleDxUMT4gLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpf
TGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NP
ckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10
eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzT3JF
cXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3I8UF9udW10
eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9i
el9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10
eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTGVz
c09yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpf
TGVzc09yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0
b3I8PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBf
bnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5
cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBf
bnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvcjxQX251
bXR5cGUxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
Y29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFs
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
PD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4s
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1
YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2lu
KCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0
b3I8PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
ZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9
KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVz
c09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQy
LmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJhbmdlLAogICAg
ICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4g
PgpvcGVyYXRvcjw9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFJh
bmdlLCAKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KF9iel9WZWNFeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xl
c3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEs
IAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjw9KF9iel9WZWNFeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBm
bG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9i
el9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+
Cm9wZXJhdG9yPD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjw9KF9iel9WZWNF
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9MZXNzT3JFcXVh
bDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJh
dG9yPD0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAg
ICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfTGVz
c09yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAg
ICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4g
PgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTGVzc09y
RXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4g
PgpvcGVyYXRvcjw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVt
dHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUx
PiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAog
ICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPD0o
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFs
PFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfTGVzc09yRXF1YWw8
UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVt
dHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBUMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAg
IF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I8
PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBf
YnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGlu
dCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFs
PGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShSYW5nZSBkMSwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwKICAgICAgX2J6
X0xlc3NPckVxdWFsPGludCwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oUmFuZ2UgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2Us
IAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3Bl
cmF0b3I8PShSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I8
PShSYW5nZSBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxpbnQsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsK
fQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvcjw9KFJhbmdlIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAg
X2J6X0xlc3NPckVxdWFsPGludCwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShSYW5nZSBk
MSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFu
Z2UsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxpbnQsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQyPiA+ICwKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgY29tcGxleDxUMj4gID4gPiA+Cm9w
ZXJhdG9yPD0oUmFuZ2UgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xl
c3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAg
ICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50
IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
TGVzc09yRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50
IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVy
YXRvcjw9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwK
ICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvcjw9KGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBpbnQgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9s
ZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZs
b2F0PiwKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJh
dG9yPD0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9h
dD4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwg
ZG91YmxlID4gPiA+Cm9wZXJhdG9yPD0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUx
LCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBf
YnpfTGVzc09yRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgbG9uZyBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgVDI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
CiAgICAgIF9iel9MZXNzT3JFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3Bl
cmF0b3I8PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAg
ICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0xlc3NPckVxdWFsPFBfbnVtdHlwZTEsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4g
KGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDEpLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JF
cXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGludD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8aW50LCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPD0oaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUy
LCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTGVzc09yRXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShmbG9hdCBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxmbG9hdCwgUF9udW10eXBl
Mj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTGVzc09yRXF1YWw8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3I8PShmbG9hdCBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxmbG9hdCwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8ZmxvYXQs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShmbG9hdCBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxmbG9hdD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdl
LAogICAgICBfYnpfTGVzc09yRXF1YWw8ZmxvYXQsIGludCA+ID4gPgpvcGVyYXRvcjw9KGZsb2F0
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xlc3NPckVxdWFs
PGZsb2F0LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1
YWw8ZmxvYXQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShmbG9hdCBkMSwgCiAgICAgIGNv
bnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVh
bDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxkb3VibGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0xlc3NPckVxdWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I8PShkb3Vi
bGUgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I8PShkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfTGVzc09yRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9MZXNzT3JFcXVhbDxkb3VibGUsIGludCA+ID4gPgpvcGVyYXRvcjw9KGRvdWJsZSBkMSwg
CiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzc09yRXF1YWw8ZG91
YmxlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9MZXNzT3JFcXVh
bDxkb3VibGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I8PShkb3VibGUgZDEsIAogICAgICBj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xlc3NPckVx
dWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxs
b25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGxvbmcgZG91YmxlIGQxLCAK
ICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGxvbmcgZG91YmxlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxsb25nIGRvdWJsZSwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGxvbmcgZG91YmxlIGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxsb25nIGRv
dWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGxvbmcgZG91YmxlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8bG9uZyBkb3VibGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9MZXNzT3JFcXVh
bDxsb25nIGRvdWJsZSwgaW50ID4gPiA+Cm9wZXJhdG9yPD0obG9uZyBkb3VibGUgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTGVzc09yRXF1YWw8bG9u
ZyBkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4s
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAg
IF9iel9MZXNzT3JFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9
KGxvbmcgZG91YmxlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoK
IAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNvbXBs
ZXg8VDE+ICwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcjw9KGNvbXBsZXg8VDE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxleDxUMT4gLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4g
PiAsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNv
bXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9
KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxl
eDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcjw9KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUyPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCgoK
IAp0ZW1wbGF0ZTxjbGFzcyBUMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLAogICAgICBfYnpf
TGVzc09yRXF1YWw8Y29tcGxleDxUMT4gLCBpbnQgPiA+ID4Kb3BlcmF0b3I8PShjb21wbGV4PFQx
PiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xl
c3NPckVxdWFsPGNvbXBsZXg8VDE+ICwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChk
MSksIAogICAgICBkMikpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5
cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxleDxU
MT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPD0oY29tcGxleDxUMT4gZDEsIAogICAgICBj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
Mi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDxQX251
bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0oY29u
c3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBl
MSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEs
IGludCA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGlu
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9F
cXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3I9
PShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
CiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj09KGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNF
eHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj09KGNv
bnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4g
PiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGxvbmcg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBfYnpfRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gLAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgY29tcGxleDxUMj4gID4gPiA+Cm9w
ZXJhdG9yPT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9i
el9FcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3I9PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAg
IF9iel9FcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcj09KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVj
dG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfRXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFs
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
PT0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I9PShfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4cHI8
UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
IAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0VxdWFs
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I9PShf
YnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcg
ZG91YmxlID4gPiA+Cm9wZXJhdG9yPT0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBf
YnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwKICAgICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21w
bGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I9PShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAg
ICAgX2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpv
cGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+
ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJh
bmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGlu
dD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUx
LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUx
PiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQy
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwg
CiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgaW50
ID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAg
ICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6
X0VxdWFsPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwg
ZmxvYXQgPiA+ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0
ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9iel9FcXVh
bDxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I9PShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgZG91YmxlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZSA+ID4gPgpv
cGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxj
b21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ICA+
ID4gPgpvcGVyYXRvcj09KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
Y29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+ICwgCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8
aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oUmFuZ2UgZDEsIAogICAgICBjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8aW50
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KFJhbmdlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3I9PShSYW5nZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIFJhbmdlLAogICAgICBfYnpfRXF1YWw8aW50LCBpbnQgPiA+ID4Kb3BlcmF0
b3I9PShSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9FcXVhbDxpbnQsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFsPGludCwgUF9udW10eXBl
MiA+ID4gPgpvcGVyYXRvcj09KFJhbmdlIGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdl
LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAg
ICAgX2J6X0VxdWFsPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfRXF1YWw8aW50LCBmbG9hdCA+ID4gPgpvcGVyYXRvcj09
KFJhbmdlIGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0VxdWFs
PGludCwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0VxdWFsPGludCwgZG91YmxlID4gPiA+Cm9wZXJh
dG9yPT0oUmFuZ2UgZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9i
el9FcXVhbDxpbnQsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkp
Owp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LAogICAgICBfYnpfRXF1YWw8aW50LCBsb25n
IGRvdWJsZSA+ID4gPgpvcGVyYXRvcj09KFJhbmdlIGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0VxdWFsPGludCwgbG9uZyBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfRXF1YWw8aW50LCBj
b21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3I9PShSYW5nZSBkMSwgCiAgICAgIGNvbXBsZXg8VDI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBfYnpfVmVjRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0VxdWFsPGludCwgY29tcGxleDxU
Mj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09
KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25z
dCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5i
ZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0VxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgx
LCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQg
PiA+ID4Kb3BlcmF0b3I9PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwgCiAgICAg
IF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2lu
KCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwg
aW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9y
PT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGlu
dCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LAogICAgICBfYnpfRXF1YWw8UF9udW10eXBlMSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I9PShj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgZmxvYXQg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQg
Tl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBkb3VibGUgPiA+ID4Kb3BlcmF0
b3I9PShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9FcXVhbDxQX251bXR5cGUxLCBsb25n
IGRvdWJsZSA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiYgZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAg
IF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0VxdWFsPFBfbnVt
dHlwZTEsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5n
dGgxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0VxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8
VDI+ICA+ID4gPgpvcGVyYXRvcj09KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfRXF1YWw8UF9udW10
eXBlMSwgY29tcGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAoZDIpKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0Vx
dWFsPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdp
bigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8
aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAg
ICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9F
cXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgUF9u
dW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cj09KGZsb2F0IGQxLCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFsPGZsb2F0LCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9FcXVhbDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcj09KGZsb2F0IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAg
ICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGZsb2F0LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvcj09KGZsb2F0IGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBf
YnpfRXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxm
bG9hdCwgaW50ID4gPiA+Cm9wZXJhdG9yPT0oZmxvYXQgZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfRXF1YWw8ZmxvYXQsIGludD4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09
KGZsb2F0IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0VxdWFsPGZsb2F0LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDEp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0VxdWFsPGRv
dWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09KGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3Vi
bGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGRvdWJs
ZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGRvdWJsZSBk
MSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfRXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUyPiwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09
KGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxkb3Vi
bGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4o
KSkpOwp9CgogCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgaW50
ID4gPiA+Cm9wZXJhdG9yPT0oZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBSYW5n
ZSwgCiAgICAgIF9iel9FcXVhbDxkb3VibGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMSks
IAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0
aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcj09KGRv
dWJsZSBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAog
ICAgICBfYnpfRXF1YWw8ZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQx
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0Vx
dWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUg
ZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfRXF1YWw8bG9uZyBkb3VibGUsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVj
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4s
IAogICAgICBfYnpfRXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
VmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUy
PiwgCiAgICAgIF9iel9FcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBSYW5nZSwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0
b3I9PShsb25nIGRvdWJsZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBSYW5nZSwg
CiAgICAgIF9iel9FcXVhbDxsb25nIGRvdWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJs
ZT4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQg
Tl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfRXF1YWw8bG9uZyBkb3VibGUsIFBf
bnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4g
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfRXF1YWw8Y29t
cGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29tcGxleDxUMT4gZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9FcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihf
YnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyLmJlZ2luKCkp
KTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwg
CiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfRXF1YWw8Y29tcGxleDxUMT4g
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0oY29tcGxleDxU
MT4gZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpf
VmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9FcXVhbDxjb21wbGV4PFQxPiAsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMT4gPiAsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfRXF1YWw8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yPT0oY29tcGxl
eDxUMT4gZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAs
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0VxdWFs
PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+
ID4gLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9FcXVhbDxjb21wbGV4PFQxPiAsIGludCA+ID4g
PgpvcGVyYXRvcj09KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAg
ICAgUmFuZ2UsIAogICAgICBfYnpfRXF1YWw8Y29tcGxleDxUMT4gLCBpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKCiAKdGVtcGxhdGU8Y2xhc3Mg
VDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9FcXVh
bDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3I9PShjb21wbGV4PFQxPiBk
MSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+
ID4gLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAK
ICAgICAgX2J6X0VxdWFsPGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKIAoKCgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9O
b3RFcXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShjb25zdCBW
ZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLAogICAg
ICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAg
ICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAog
ICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X05v
dEVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3RvcjxQX251
bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X05vdEVx
dWFsPFBfbnVtdHlwZTEsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAg
X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfTm90RXF1YWw8UF9udW10eXBlMSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgbG9uZyBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAg
IF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMj4gPiAsCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiAgPiA+
ID4Kb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29tcGxl
eDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAg
ICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpf
VmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQ
X251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwg
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVx
dWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yIT0oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpf
Tm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBS
YW5nZSwKICAgICAgX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBp
bnQgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIFJhbmdl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBSYW5nZSwgCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAg
IFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9O
b3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10eXBlMj4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIu
YmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciE9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHBy
MT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTm90RXF1YWw8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9i
el9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvciE9KF9iel9W
ZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGRvdWJsZT4sIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJs
ZT4sCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9u
ZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3IhPShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAg
IF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciE9KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpf
VmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAsIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsK
fQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVh
bDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVh
bDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAg
X2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGlj
azxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUx
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAg
IFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251
bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X05vdEVx
dWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwKICAgICAg
X2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2Us
IAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVu
Z3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3IhPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X05vdEVxdWFs
PFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0
YW50PGludD4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0
b3IhPShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
IAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTm90RXF1YWw8UF9u
dW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4
cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+
ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
ZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBf
YnpfTm90RXF1YWw8UF9udW10eXBlMSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X05vdEVxdWFs
PFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBkb3VibGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGxvbmcgZG91YmxlID4g
PiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAg
ICBfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgY29t
cGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYg
ZDEsIAogICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGNvbXBsZXg8
VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkp
Owp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAg
ICAgIF9iel9Ob3RFcXVhbDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShSYW5nZSBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAg
ICAgIF9iel9Ob3RFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxS
YW5nZSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTm90RXF1YWw8aW50
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yIT0oUmFuZ2UgZDEs
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1
YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJh
bmdlLCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05v
dEVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KFJhbmdlIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAg
ICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9Ob3RFcXVhbDxpbnQsIGludCA+ID4gPgpvcGVyYXRvciE9KFJhbmdlIGQxLCAKICAgICAg
UmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFJhbmdl
LCAKICAgICAgX2J6X05vdEVxdWFsPGludCwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xl
bmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
IT0oUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTm90RXF1YWw8
aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4s
CiAgICAgIF9iel9Ob3RFcXVhbDxpbnQsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yIT0oUmFuZ2UgZDEs
IAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBm
bG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAKCmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8aW50LCBkb3VibGUgPiA+ID4Kb3BlcmF0b3Ih
PShSYW5nZSBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X05v
dEVxdWFsPGludCwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7
Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6
X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9Ob3RFcXVhbDxpbnQsIGxv
bmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yIT0oUmFuZ2UgZDEsIAogICAgICBsb25nIGRvdWJsZSBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBsb25nIGRvdWJs
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9Ob3RFcXVh
bDxpbnQsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciE9KFJhbmdlIGQxLCAKICAgICAgY29t
cGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfTm90RXF1YWw8aW50
LCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIp
KSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBk
MSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAog
ICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTm90RXF1YWw8UF9u
dW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Ob3RF
cXVhbDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJh
dG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhw
cj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9O
b3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlu
eVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEs
IGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3IhPShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAg
ICAgIF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJl
Z2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAg
IF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3IhPShjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X05vdEVx
dWFsPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4o
ZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9Ob3RFcXVhbDxQX251bXR5cGUxLCBmbG9hdCA+ID4gPgpvcGVyYXRvciE9KGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBmbG9hdCBkMikKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6
X05vdEVxdWFsPFBfbnVtdHlwZTEsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9WZWNFeHByQ29uc3Rh
bnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91
YmxlPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEsIGRvdWJsZSA+ID4gPgpvcGVyYXRv
ciE9KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBk
b3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBlMSwgZG91YmxlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9i
el9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X05vdEVxdWFsPFBfbnVtdHlwZTEs
IGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTm90RXF1
YWw8UF9udW10eXBlMSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDEsIGNsYXNzIFQyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8UF9udW10eXBl
MSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yIT0oY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9O
b3RFcXVhbDxQX251bXR5cGUxLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgX2J6X1ZlY0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05v
dEVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVxdWFsPGludCwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAg
IF9iel9WZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTm90RXF1YWw8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxp
bnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X05v
dEVxdWFsPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPGludCwgUF9udW10eXBlMiA+
ID4gPgpvcGVyYXRvciE9KGludCBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4sIAogICAgICBfYnpfTm90RXF1YWw8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X05vdEVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZmxvYXQgZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfTm90RXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05v
dEVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
IT0oZmxvYXQgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8ZmxvYXQsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUyPiwKICAgICAgX2J6X05vdEVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yIT0oZmxvYXQgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+
JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9O
b3RFcXVhbDxmbG9hdCwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6
X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBSYW5nZSwKICAgICAgX2J6X05vdEVxdWFs
PGZsb2F0LCBpbnQgPiA+ID4Kb3BlcmF0b3IhPShmbG9hdCBkMSwgCiAgICAgIFJhbmdlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBSYW5nZSwgCiAgICAgIF9iel9Ob3RFcXVhbDxmbG9hdCwgaW50PiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxm
bG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBp
bnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPGZsb2F0LCBQX251bXR5cGUyID4gPiA+Cm9w
ZXJhdG9yIT0oZmxvYXQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5f
bGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sIAogICAgICBfYnpfTm90RXF1YWw8ZmxvYXQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50
PGZsb2F0PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTm90RXF1YWw8ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZG91YmxlIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxkb3VibGUsIFBfbnVtdHlwZTI+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTm90RXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yIT0oZG91YmxlIGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxkb3VibGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAg
ICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTm90RXF1YWw8ZG91YmxlLCBQ
X251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZG91YmxlIGQxLCAKICAgICAgY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X05vdEVxdWFsPGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdl
LAogICAgICBfYnpfTm90RXF1YWw8ZG91YmxlLCBpbnQgPiA+ID4Kb3BlcmF0b3IhPShkb3VibGUg
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X05vdEVxdWFsPGRv
dWJsZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgVGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8
ZG91YmxlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yIT0oZG91YmxlIGQxLCAKICAgICAgY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxk
b3VibGUsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVn
aW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAg
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3Vi
bGUsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxsb25nIGRvdWJsZSwgUF9udW10eXBlMj4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGUgPiA+ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9WZWNF
eHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9Ob3RFcXVhbDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNF
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X05vdEVxdWFsPGxvbmcgZG91YmxlLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4oZDEpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIFJhbmdlLAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIGludCA+ID4gPgpv
cGVyYXRvciE9KGxvbmcgZG91YmxlIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFJh
bmdlLCAKICAgICAgX2J6X05vdEVxdWFsPGxvbmcgZG91YmxlLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIFBf
bnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShsb25nIGRvdWJsZSBkMSwgCiAgICAgIGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9Ob3RFcXVhbDxs
b25nIGRvdWJsZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfbnVtdHlw
ZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9Ob3RFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShj
b21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4g
LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X05vdEVxdWFs
PGNvbXBsZXg8VDE+ICwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgoKCgogCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9Ob3RFcXVhbDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+
ID4Kb3BlcmF0b3IhPShjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+ICwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X05vdEVx
dWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxjb21wbGV4PFQxPiAsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3IhPShjb21wbGV4PFQxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMj4sIAogICAgICBfYnpfTm90RXF1YWw8Y29tcGxleDxUMT4gLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0K
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBSYW5nZSwKICAgICAg
X2J6X05vdEVxdWFsPGNvbXBsZXg8VDE+ICwgaW50ID4gPiA+Cm9wZXJhdG9yIT0oY29tcGxleDxU
MT4gZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9O
b3RFcXVhbDxjb21wbGV4PFQxPiAsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIpKTsKfQoKCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9udW10eXBl
MiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X05vdEVxdWFsPGNvbXBsZXg8VDE+ICwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciE9KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTm90RXF1
YWw8Y29tcGxleDxUMT4gLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChk
MSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCgogCgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+
Cm9wZXJhdG9yJiYoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
IAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxB
bmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRv
ciYmKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xvZ2ljYWxB
bmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBk
MikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
PiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dp
Y2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
MT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAgX2J6X0xv
Z2ljYWxBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAg
IF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFJhbmdlLCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3Ro
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yJiYoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUx
LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sCiAgICAg
IF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZl
Y3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTI+LCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
LCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTG9n
aWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciYmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxf
YnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwg
Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAog
ICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvciYmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29u
c3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3ImJihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMSwgY2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yJiYoX2J6
X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIs
IE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3Ro
Mj4sIAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
UF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yJiYoX2J6X1ZlY0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAg
ICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yJiYoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAog
ICAgICBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQx
LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVt
dHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5
cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2Fs
QW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFZlY3RvclBpY2s8UF9u
dW10eXBlMT4mIGQxLCAKICAgICAgUmFuZ2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAogICAgICBf
YnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBOX2xlbmd0aDI+
LAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yJiYoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55
VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBf
bnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVyYXRv
ciYmKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwg
CiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBf
bnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAg
IF9iel9Mb2dpY2FsQW5kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKFJhbmdlIGQx
LCAKICAgICAgY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
UmFuZ2UsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJiYoUmFuZ2Ug
ZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9n
aWNhbEFuZDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
T3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBf
YnpfTG9naWNhbEFuZDxpbnQsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihSYW5nZSBkMSwg
CiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBkMi5iZWdpbigpKSk7
Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgUmFu
Z2UsCiAgICAgIF9iel9Mb2dpY2FsQW5kPGludCwgaW50ID4gPiA+Cm9wZXJhdG9yJiYoUmFuZ2Ug
ZDEsIAogICAgICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAK
ICAgICAgUmFuZ2UsIAogICAgICBfYnpfTG9naWNhbEFuZDxpbnQsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yJiYoUmFuZ2UgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2Us
IAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAg
ICBfYnpfTG9naWNhbEFuZDxpbnQsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3ImJihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAgICBfYnpfTG9naWNhbEFuZDxQ
X251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJiYo
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIF9iel9W
ZWNFeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMSwgaW50IE5fbGVuZ3RoMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHBy
PF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+
LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xvZ2lj
YWxBbmQ8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKGNvbnN0IFRpbnlW
ZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5cGUxLCBQX251bXR5
cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBSYW5nZSwKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJiYoY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7
CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
LCBOX2xlbmd0aDE+LCAKICAgICAgUmFuZ2UsIAogICAgICBfYnpfTG9naWNhbEFuZDxQX251bXR5
cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEs
IE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4K
b3BlcmF0b3ImJihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxLCAK
ICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xl
bmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yJiYo
Y29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAgICAgIGludCBk
MikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9Mb2dpY2FsQW5kPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAg
ICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9naWNhbEFuZDxpbnQs
IFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0b3ImJihpbnQgZDEsIAogICAgICBjb25zdCBWZWN0b3I8
UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHJD
b25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+LCAKICAgICAg
X2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAg
ICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yJiYoaW50IGQxLCAKICAgICAgX2J6X1Zl
Y0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhw
ckNvbnN0YW50PGludD4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9M
b2dpY2FsQW5kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByQ29uc3RhbnQ8aW50Piwg
CiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2Fs
QW5kPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvciYmKGludCBkMSwgCiAgICAgIGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPGludCwgUF9udW10eXBlMj4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PihkMSksIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTG9naWNhbEFuZDxpbnQsIFBfbnVtdHlwZTIg
PiA+ID4Kb3BlcmF0b3ImJihpbnQgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4
cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyLCBO
X2xlbmd0aDI+LCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQogCgoKCiAKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIFBfbnVtdHlw
ZTIgPiA+ID4Kb3BlcmF0b3J8fChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAg
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9M
b2dpY2FsT3I8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvcnx8KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEsIAogICAgICBfYnpfVmVjRXhw
cjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xv
Z2ljYWxPcjxQX251bXR5cGUxLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgY2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6
X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBl
Mj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9i
el9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMi5iZWdpbigp
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsCiAg
ICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9wZXJhdG9yfHwoY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgUmFuZ2UsIAog
ICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTIsIGludCBOX2xlbmd0
aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgy
PiwKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJh
dG9yfHwoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFRpbnlWZWN0
b3I8UF9udW10eXBlMiwgTl9sZW5ndGgyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEs
IFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAg
X2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3J8fChjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByT3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAg
ICAgX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEsIAogICAgICBj
b25zdCBWZWN0b3I8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4s
IAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxP
cjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcnx8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgX2J6
X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xv
Z2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQ
X251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9i
el9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIFBfbnVtdHlwZTIgPiA+
ID4Kb3BlcmF0b3J8fChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LCAK
ICAgICAgX2J6X0xvZ2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAg
UmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGludCA+ID4gPgpvcGVyYXRvcnx8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQxLCAKICAgICAgUmFu
Z2UgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwg
CiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xvZ2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNz
IFBfbnVtdHlwZTIsIGludCBOX2xlbmd0aDI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
ck9wPF9iel9WZWNFeHByPFBfZXhwcjE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUyLCBOX2xlbmd0aDI+LAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoX2J6X1ZlY0V4cHI8UF9l
eHByMT4gZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAog
ICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sIAogICAgICBf
YnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBQX251bXR5cGUyPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9W
ZWNFeHByPF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfVmVj
RXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcnx8KF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTG9n
aWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9WZWNFeHBy
Q29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTIgPiA+ID4Kb3BlcmF0
b3J8fChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAg
IGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Mb2dp
Y2FsT3I8UF9udW10eXBlMSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcnx8KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
LCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNv
bnN0PFBfbnVtdHlwZTE+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwK
ICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9y
fHwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBWZWN0b3JQ
aWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTI+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUyPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwg
CiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTE+LCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50ID4g
PiA+Cm9wZXJhdG9yfHwoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEsIAogICAgICBS
YW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8
UF9udW10eXBlMT4sIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBl
MSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwg
Y2xhc3MgUF9udW10eXBlMiwgaW50IE5fbGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9sZW5ndGgyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxQ
X251bXR5cGUxLCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoY29uc3QgVmVjdG9yUGljazxQ
X251bXR5cGUxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVu
Z3RoMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwgTl9s
ZW5ndGgyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCks
IAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5
cGUxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50PiwKICAgICAgX2J6X0xvZ2ljYWxP
cjxQX251bXR5cGUxLCBpbnQgPiA+ID4Kb3BlcmF0b3J8fChjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTE+JiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sIAogICAgICBfYnpfVmVjRXhwckNvbnN0YW50
PGludD4sIAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBf
YnpfVmVjRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5
cGUyID4gPiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3I8UF9udW10
eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgUF9udW10
eXBlMj4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgX2J6X1ZlY0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxSYW5nZSwgCiAgICAgIFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyID4g
PiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlw
ZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFJhbmdlLCAKICAgICAgVmVjdG9y
UGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251
bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBkMi5iZWdpbigpKSk7Cn0KCiAKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwck9wPFJhbmdlLCAKICAgICAgUmFuZ2UsCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBpbnQg
PiA+ID4Kb3BlcmF0b3J8fChSYW5nZSBkMSwgCiAgICAgIFJhbmdlIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBSYW5nZSwgCiAgICAgIF9iel9Mb2dpY2FsT3I8
aW50LCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMiwgaW50IE5f
bGVuZ3RoMj4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dp
Y2FsT3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoUmFuZ2UgZDEsIAogICAgICBj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4mIGQyKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByT3A8UmFuZ2UsIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTIsIE5fbGVuZ3RoMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgUF9udW10eXBlMj4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
ZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0
aDEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251
bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xl
bmd0aDE+JiBkMSwgCiAgICAgIGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgZDIpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9n
aWNhbE9yPFBfbnVtdHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUg
PiA+ID4Kb3BlcmF0b3J8fChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4m
IGQxLCAKICAgICAgX2J6X1ZlY0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAg
ICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCksIAogICAgICBkMikpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDEsIGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4s
CiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRv
cnx8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAgICBj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4sIAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVt
dHlwZTEsIFBfbnVtdHlwZTI+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIuYmVnaW4oKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAg
ICAgIFJhbmdlLAogICAgICBfYnpfTG9naWNhbE9yPFBfbnVtdHlwZTEsIGludCA+ID4gPgpvcGVy
YXRvcnx8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEsIAogICAg
ICBSYW5nZSBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIFJhbmdlLCAKICAgICAgX2J6X0xvZ2lj
YWxPcjxQX251bXR5cGUxLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxLCBjbGFzcyBQX251bXR5cGUyLCBpbnQgTl9sZW5n
dGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgUF9udW10
eXBlMiA+ID4gPgpvcGVyYXRvcnx8KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiYgZDEsIAogICAgICBjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoMj4m
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByT3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LCAKICAgICAgVGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
LCBOX2xlbmd0aDI+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjxQX251bXR5cGUxLCBQX251bXR5cGUy
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxUaW55VmVj
dG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sIAogICAgICBfYnpfVmVjRXhwckNv
bnN0YW50PGludD4sCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50ID4gPiA+Cm9w
ZXJhdG9yfHwoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSwgCiAg
ICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwgCiAgICAgIF9iel9WZWNFeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8UF9udW10eXBlMSwgaW50PiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSwgCiAgICAgIF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4sCiAgICAgIF9iel9Mb2dpY2Fs
T3I8aW50LCBQX251bXR5cGUyID4gPiA+Cm9wZXJhdG9yfHwoaW50IGQxLCAKICAgICAgY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiwg
CiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+KGQx
KSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxp
bmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfVmVjRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxpbnQsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChpbnQgZDEsIAogICAgICBf
YnpfVmVjRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9W
ZWNFeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9WZWNFeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X0xvZ2ljYWxPcjxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfVmVjRXhwckNvbnN0
YW50PGludD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJPcDxfYnpfVmVjRXhwckNvbnN0YW50PGlu
dD4sIAogICAgICBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+LAogICAgICBfYnpfTG9n
aWNhbE9yPGludCwgUF9udW10eXBlMiA+ID4gPgpvcGVyYXRvcnx8KGludCBkMSwgCiAgICAgIGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIGQyKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
T3A8X2J6X1ZlY0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgVmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUyLCBpbnQgTl9sZW5ndGgyPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJP
cDxfYnpfVmVjRXhwckNvbnN0YW50PGludD4sIAogICAgICBUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTIsIE5fbGVuZ3RoMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUy
ID4gPiA+Cm9wZXJhdG9yfHwoaW50IGQxLCAKICAgICAgY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aDI+JiBkMikKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwck9wPF9iel9WZWNF
eHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMiwg
Tl9sZW5ndGgyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8aW50LCBQX251bXR5cGUyPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoX2J6X1ZlY0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyLmJlZ2luKCkpKTsKfQp9IAoKCiMgMjg4ICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZXhwci5oIiAyCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN1b3BzLmNjIiAxCiAKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCiAKCiAKIAoKCiNkZWZpbmUgQlpfVkVDVU9QU19DQwoKCgoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X2FiczxQX251bXR5cGUxPiA+ID4KYWJzKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYWJzPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWJzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlPiA+ID4KYWJzKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfYWJzPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgX2J6X2FiczxQX251bXR5cGUxPiA+ID4KYWJzKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hYnM8UF9udW10eXBl
MT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2Us
CiAgICBfYnpfYWJzPGludD4gPiA+CmFicyhSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2FiczxpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJV
bmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9i
el9hYnM8UF9udW10eXBlMT4gPiA+CmFicyhjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2FiczxQX251bXR5
cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgIF9iel9hY29zPFBfbnVtdHlwZTE+ID4gPgphY29zKGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwKICAgICAgICBfYnpfYWNvczxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X2Fjb3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gPgphY29zKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfYWNvczwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgIF9iel9hY29zPFBfbnVtdHlwZTE+ID4gPgphY29zKGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hY29zPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgX2J6X2Fjb3M8aW50PiA+ID4KYWNvcyhSYW5nZSBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2Fjb3M8aW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
CiAgICBfYnpfYWNvczxQX251bXR5cGUxPiA+ID4KYWNvcyhjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2Fj
b3M8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTE+LAogICAgX2J6X2Fjb3NoPFBfbnVtdHlwZTE+ID4gPgphY29zaChjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2Fjb3NoPFBfbnVtdHlwZTE+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
KSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWNvc2g8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgphY29zaChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAg
ICAgICAgX2J6X2Fjb3NoPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2Fjb3NoPFBfbnVtdHlwZTE+
ID4gPgphY29zaChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAg
ICAgICBfYnpfYWNvc2g8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfYWNvc2g8aW50PiA+ID4KYWNvc2goUmFu
Z2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9i
el9hY29zaDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9hY29zaDxQX251bXR5cGUxPiA+ID4KYWNv
c2goY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LAogICAgICAgIF9iel9hY29zaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfYXNpbjxQX251bXR5
cGUxPiA+ID4KYXNpbihjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAg
X2J6X2FzaW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwK
ICAgIF9iel9hc2luPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KYXNpbihfYnpf
VmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2FzaW48IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBf
YnpfYXNpbjxQX251bXR5cGUxPiA+ID4KYXNpbihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYXNpbjxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9hc2luPGlu
dD4gPiA+CmFzaW4oUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgICAgIF9iel9hc2luPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGlu
dCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2FzaW48UF9udW10
eXBlMT4gPiA+CmFzaW4oY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9hc2luPFBfbnVtdHlwZTE+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7
Cn0KCgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9h
c2luaDxQX251bXR5cGUxPiA+ID4KYXNpbmgoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgICAgIF9iel9hc2luaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNF
eHByPFBfZXhwcjE+LAogICAgX2J6X2FzaW5oPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
PiA+ID4KYXNpbmgoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9hc2luaDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNF
eHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+Cmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQ
X251bXR5cGUxPiwKICAgIF9iel9hc2luaDxQX251bXR5cGUxPiA+ID4KYXNpbmgoY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2FzaW5oPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgX2J6X2FzaW5oPGludD4gPiA+CmFzaW5oKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfYXNpbmg8aW50PiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sCiAgICBfYnpfYXNpbmg8UF9udW10eXBlMT4gPiA+CmFzaW5oKGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBf
YnpfYXNpbmg8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2F0YW48UF9udW10eXBlMT4gPiA+CmF0YW4oY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hdGFuPFBfbnVtdHlwZTE+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYXRhbjwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmF0YW4oX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAog
ICAgICAgIF9iel9hdGFuPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2F0YW48UF9udW10eXBlMT4g
PiA+CmF0YW4oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAg
ICAgX2J6X2F0YW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfYXRhbjxpbnQ+ID4gPgphdGFuKFJhbmdlIGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfYXRh
bjxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9hdGFuPFBfbnVtdHlwZTE+ID4gPgphdGFuKGNvbnN0
IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6
X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiwKICAgICAgICBfYnpfYXRhbjxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfYXRhbmg8UF9udW10eXBlMT4gPiA+
CmF0YW5oKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYXRh
bmg8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9i
el9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9i
el9hdGFuaDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmF0YW5oKF9iel9WZWNF
eHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVj
RXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfYXRhbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpf
YXRhbmg8UF9udW10eXBlMT4gPiA+CmF0YW5oKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4m
IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9hdGFuaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9hdGFuaDxp
bnQ+ID4gPgphdGFuaChSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8
UmFuZ2UsCiAgICAgICAgX2J6X2F0YW5oPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEs
IGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2F0YW5oPFBf
bnVtdHlwZTE+ID4gPgphdGFuaChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2F0YW5oPFBfbnVtdHlwZTE+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpKSk7Cn0KCgoKIAoKCgojIDU2NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L3ZlY3VvcHMuY2MiCgoKIAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfY2JydDxQX251bXR5cGUxPiA+ID4KY2JydChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2NicnQ8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9jYnJ0PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlPiA+ID4KY2JydChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6
X2NicnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfY2JydDxQX251bXR5cGUxPiA+ID4KY2JydChj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfY2Jy
dDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxSYW5nZSwKICAgIF9iel9jYnJ0PGludD4gPiA+CmNicnQoUmFuZ2UgZDEpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel9jYnJ0PGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LAogICAgX2J6X2NicnQ8UF9udW10eXBlMT4gPiA+CmNicnQoY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVu
YXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAg
IF9iel9jYnJ0PFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwKICAgIF9iel9jZWlsPFBfbnVtdHlwZTE+ID4gPgpjZWlsKGNvbnN0
IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfY2VpbDxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X2NlaWw8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpjZWlsKF9iel9WZWNFeHByPFBfZXhwcjE+IGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwK
ICAgICAgICBfYnpfY2VpbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9jZWlsPFBfbnVtdHlwZTE+
ID4gPgpjZWlsKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAg
ICAgIF9iel9jZWlsPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6X2NlaWw8aW50PiA+ID4KY2VpbChSYW5nZSBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2Nl
aWw8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpfY2VpbDxQX251bXR5cGUxPiA+ID4KY2VpbChjb25z
dCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sCiAgICAgICAgX2J6X2NlaWw8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfY29zPFBfbnVtdHlwZTE+ID4gPgpj
b3MoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9jb3M8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9jb3M8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpjb3MoX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LAogICAgICAgIF9iel9jb3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfY29zPFBfbnVtdHlw
ZTE+ID4gPgpjb3MoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAg
ICAgICAgX2J6X2NvczxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9jb3M8aW50PiA+ID4KY29zKFJhbmdlIGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfY29z
PGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
KSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2NvczxQX251bXR5cGUxPiA+ID4KY29zKGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgICAgICBfYnpfY29zPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2Nvc2g8UF9udW10eXBlMT4gPiA+CmNvc2go
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVu
YXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9jb3NoPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfY29zaDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmNvc2goX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LAogICAgICAgIF9iel9jb3NoPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2Nvc2g8UF9udW10
eXBlMT4gPiA+CmNvc2goY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5
cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4s
CiAgICAgICAgX2J6X2Nvc2g8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfY29zaDxpbnQ+ID4gPgpjb3NoKFJh
bmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBf
YnpfY29zaDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9jb3NoPFBfbnVtdHlwZTE+ID4gPgpjb3No
KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9s
ZW5ndGgxPiwKICAgICAgICBfYnpfY29zaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9leHA8UF9udW10eXBlMT4g
PiA+CmV4cChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2V4
cDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6
X2V4cDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmV4cChfYnpfVmVjRXhwcjxQ
X2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8
UF9leHByMT4sCiAgICAgICAgX2J6X2V4cDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9leHA8UF9u
dW10eXBlMT4gPiA+CmV4cChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUx
PiwKICAgICAgICBfYnpfZXhwPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6X2V4cDxpbnQ+ID4gPgpleHAoUmFu
Z2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9i
el9leHA8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpfZXhwPFBfbnVtdHlwZTE+ID4gPgpleHAoY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LAogICAgICAgIF9iel9leHA8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2V4cG0xPFBfbnVtdHlwZTE+ID4g
PgpleHBtMShjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2V4
cG0xPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBf
YnpfZXhwbTE8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpleHBtMShfYnpfVmVj
RXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2V4cG0xPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6
X2V4cG0xPFBfbnVtdHlwZTE+ID4gPgpleHBtMShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+
JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfZXhwbTE8UF9udW10eXBlMT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlu
bGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfZXhwbTE8
aW50PiA+ID4KZXhwbTEoUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFJhbmdlLAogICAgICAgIF9iel9leHBtMTxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9leHBtMTxQ
X251bXR5cGUxPiA+ID4KZXhwbTEoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0
aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9leHBtMTxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9CgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpf
VmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAog
ICAgX2J6X2VyZjxQX251bXR5cGUxPiA+ID4KZXJmKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYg
ZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxPiwKICAgICAgICBfYnpfZXJmPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sCiAgICBfYnpfZXJmPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
PiA+ID4KZXJmKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfZXJmPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LAogICAgX2J6X2VyZjxQX251bXR5cGUxPiA+ID4KZXJmKGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9lcmY8UF9udW10eXBlMT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkp
KTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBf
YnpfZXJmPGludD4gPiA+CmVyZihSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVu
YXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2VyZjxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9w
PFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9lcmY8
UF9udW10eXBlMT4gPiA+CmVyZihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2VyZjxQX251bXR5cGUxPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSkpOwp9CgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAg
X2J6X2VyZmM8UF9udW10eXBlMT4gPiA+CmVyZmMoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTE+LAogICAgICAgIF9iel9lcmZjPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1Zl
Y0V4cHI8UF9leHByMT4sCiAgICBfYnpfZXJmYzwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZT4gPiA+CmVyZmMoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9lcmZjPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBf
bnVtdHlwZTE+LAogICAgX2J6X2VyZmM8UF9udW10eXBlMT4gPiA+CmVyZmMoY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZl
Y3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2VyZmM8UF9udW10eXBl
MT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2Us
CiAgICBfYnpfZXJmYzxpbnQ+ID4gPgplcmZjKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfZXJmYzxpbnQ+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAg
IF9iel9lcmZjPFBfbnVtdHlwZTE+ID4gPgplcmZjKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfZXJmYzxQ
X251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4
cHIoZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfYWJzPFBfbnVtdHlwZTE+ID4gPgpmYWJzKGNvbnN0IFZlY3RvcjxQX251
bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJD
b25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfYWJzPFBfbnVtdHlwZTE+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWJzPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlPiA+ID4KZmFicyhfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2Fi
czwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJD
b25zdDxQX251bXR5cGUxPiwKICAgIF9iel9hYnM8UF9udW10eXBlMT4gPiA+CmZhYnMoY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2FiczxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxS
YW5nZSwKICAgIF9iel9hYnM8aW50PiA+ID4KZmFicyhSYW5nZSBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2FiczxpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgIF9iel9hYnM8UF9udW10eXBlMT4gPiA+CmZhYnMoY29uc3QgVGlueVZlY3RvcjxQX251bXR5
cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlu
eVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9hYnM8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5s
aW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfZmxvb3I8UF9udW10eXBlMT4gPiA+CmZsb29yKGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfZmxvb3I8UF9udW10eXBlMT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9mbG9vcjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmZsb29yKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAg
ICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAg
ICBfYnpfZmxvb3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfZmxvb3I8UF9udW10eXBlMT4gPiA+
CmZsb29yKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAg
IF9iel9mbG9vcjxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9mbG9vcjxpbnQ+ID4gPgpmbG9vcihSYW5nZSBk
MSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2Zs
b29yPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2Zsb29yPFBfbnVtdHlwZTE+ID4gPgpmbG9vcihj
b25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVu
Z3RoMT4sCiAgICAgICAgX2J6X2Zsb29yPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCiMgMTI5
MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3VvcHMuY2MiCgoK
IAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfaXNuYW48
UF9udW10eXBlMT4gPiA+CmlzbmFuKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgICAgICBfYnpfaXNuYW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQ
X2V4cHIxPiwKICAgIF9iel9pc25hbjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+
CmlzbmFuKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
VW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfaXNuYW48IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10
eXBlMT4sCiAgICBfYnpfaXNuYW48UF9udW10eXBlMT4gPiA+CmlzbmFuKGNvbnN0IFZlY3RvclBp
Y2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0
b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9pc25hbjxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwK
ICAgIF9iel9pc25hbjxpbnQ+ID4gPgppc25hbihSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2lzbmFuPGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAog
ICAgX2J6X2lzbmFuPFBfbnVtdHlwZTE+ID4gPgppc25hbihjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X2lz
bmFuPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgoKIAoKCgojIDE0MjYgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN1b3BzLmNjIgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2owPFBfbnVtdHlwZTE+ID4gPgpqMChjb25z
dCBWZWN0b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2owPFBfbnVtdHlwZTE+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdp
bigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfajA8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpqMChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAg
ICAgX2J6X2owPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2owPFBfbnVtdHlwZTE+ID4gPgpqMChj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfajA8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8UmFuZ2UsCiAgICBfYnpfajA8aW50PiA+ID4KajAoUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel9qMDxpbnQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgIF9iel9qMDxQX251bXR5cGUxPiA+ID4KajAoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUx
LCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZl
Y3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9qMDxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X2oxPFBfbnVtdHlwZTE+ID4gPgpqMShjb25zdCBWZWN0b3I8UF9udW10eXBl
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2oxPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6
X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfajE8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGU+ID4gPgpqMShfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2oxPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5l
Cl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVt
dHlwZTE+LAogICAgX2J6X2oxPFBfbnVtdHlwZTE+ID4gPgpqMShjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfajE8UF9udW10eXBlMT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsK
fQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpf
ajE8aW50PiA+ID4KajEoUmFuZ2UgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PFJhbmdlLAogICAgICAgIF9iel9qMTxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBp
bnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9qMTxQX251bXR5
cGUxPiA+ID4KajEoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251
bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel9qMTxQX251bXR5cGUxPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoK
CiAKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpf
VmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2xnYW1t
YTxQX251bXR5cGUxPiA+ID4KbGdhbW1hKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUx
PiwKICAgICAgICBfYnpfbGdhbW1hPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4
cHI8UF9leHByMT4sCiAgICBfYnpfbGdhbW1hPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
PiA+ID4KbGdhbW1hKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfbGdhbW1hPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgX2J6X2xnYW1tYTxQX251bXR5cGUxPiA+ID4KbGdhbW1hKGNvbnN0
IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5h
cnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9sZ2FtbWE8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8UmFuZ2UsCiAgICBfYnpfbGdhbW1hPGludD4gPiA+CmxnYW1tYShSYW5nZSBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X2xnYW1tYTxpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiwKICAgIF9iel9sZ2FtbWE8UF9udW10eXBlMT4gPiA+CmxnYW1tYShjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9W
ZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
CiAgICAgICAgX2J6X2xnYW1tYTxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfbG9nPFBfbnVtdHlwZTE+ID4gPgps
b2coY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9sb2c8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9sb2c8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpsb2coX2J6X1ZlY0V4cHI8UF9leHBy
MT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhw
cjE+LAogICAgICAgIF9iel9sb2c8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfbG9nPFBfbnVtdHlw
ZTE+ID4gPgpsb2coY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAg
ICAgICAgX2J6X2xvZzxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4
cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel9sb2c8aW50PiA+ID4KbG9nKFJhbmdlIGQx
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfbG9n
PGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQx
KSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X2xvZzxQX251bXR5cGUxPiA+ID4KbG9nKGNvbnN0IFRp
bnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwK
ICAgICAgICBfYnpfbG9nPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rv
ckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9sb2diPFBfbnVtdHlwZTE+ID4gPgpsb2di
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJV
bmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfbG9nYjxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X2xvZ2I8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpsb2diKF9iel9WZWNFeHByPFBfZXhw
cjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4
cHIxPiwKICAgICAgICBfYnpfbG9nYjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVu
YXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9sb2diPFBfbnVt
dHlwZTE+ID4gPgpsb2diKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0
eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+
LAogICAgICAgIF9iel9sb2diPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6X2xvZ2I8aW50PiA+ID4KbG9nYihS
YW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAg
X2J6X2xvZ2I8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0
PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpfbG9nYjxQX251bXR5cGUxPiA+ID4KbG9n
Yihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4sCiAgICAgICAgX2J6X2xvZ2I8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCgogCgoKCgp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJV
bmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel9sb2cxcDxQX251bXR5
cGUxPiA+ID4KbG9nMXAoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAg
IF9iel9sb2cxcDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8
VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+
LAogICAgX2J6X2xvZzFwPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KbG9nMXAo
X2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9sb2cxcDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgIF9iel9sb2cxcDxQX251bXR5cGUxPiA+ID4KbG9nMXAoY29uc3QgVmVjdG9yUGljazxQX251
bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2xvZzFwPFBfbnVtdHlwZTE+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7
Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgX2J6
X2xvZzFwPGludD4gPiA+CmxvZzFwKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHBy
VW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfbG9nMXA8aW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICBfYnpf
bG9nMXA8UF9udW10eXBlMT4gPiA+CmxvZzFwKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwg
Tl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfbG9nMXA8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X2xvZzEwPFBfbnVtdHlwZTE+ID4gPgpsb2cxMChjb25zdCBWZWN0b3I8UF9u
dW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X2xvZzEwPFBfbnVtdHlwZTE+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVu
YXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfbG9nMTA8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGU+ID4gPgpsb2cxMChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X2xvZzEwPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQ
aWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X2xvZzEwPFBfbnVtdHlwZTE+ID4gPgps
b2cxMChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBf
YnpfbG9nMTA8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfbG9nMTA8aW50PiA+ID4KbG9nMTAoUmFuZ2UgZDEp
CnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel9sb2cx
MDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUK
X2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10
eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9sb2cxMDxQX251bXR5cGUxPiA+ID4KbG9nMTAoY29u
c3QgVGlueVZlY3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0
aDE+LAogICAgICAgIF9iel9sb2cxMDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgojIDE5NTgg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN1b3BzLmNjIgoKCiAK
CgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X3JpbnQ8UF9u
dW10eXBlMT4gPiA+CnJpbnQoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlw
ZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAg
ICAgIF9iel9yaW50PFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHBy
MT4sCiAgICBfYnpfcmludDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnJpbnQo
X2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9w
PF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9yaW50PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihU
X2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAog
ICAgX2J6X3JpbnQ8UF9udW10eXBlMT4gPiA+CnJpbnQoY29uc3QgVmVjdG9yUGljazxQX251bXR5
cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3JpbnQ8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICBfYnpfcmlu
dDxpbnQ+ID4gPgpyaW50KFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxSYW5nZSwKICAgICAgICBfYnpfcmludDxpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
LCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFRp
bnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9iel9yaW50PFBf
bnVtdHlwZTE+ID4gPgpyaW50KGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlMSwgTl9sZW5ndGgx
PiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfcmludDxQX251bXR5cGUxPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4o
KSkpOwp9CgoKCiAKCgoKIyAyMDkyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjdW9wcy5jYyIKCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X3NpbjxQX251bXR5cGUxPiA+ID4Kc2luKGNvbnN0IFZlY3RvcjxQX251bXR5
cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfc2luPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8
X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfc2luPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlPiA+ID4Kc2luKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfc2luPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1Zl
Y0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTE+LAogICAgX2J6X3NpbjxQX251bXR5cGUxPiA+ID4Kc2luKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zaW48UF9udW10eXBl
MT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJl
Z2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2Us
CiAgICBfYnpfc2luPGludD4gPiA+CnNpbihSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3NpbjxpbnQ+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJV
bmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgIF9i
el9zaW48UF9udW10eXBlMT4gPiA+CnNpbihjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5f
bGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X3NpbjxQX251bXR5
cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEu
YmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwK
ICAgIF9iel9zaW5oPFBfbnVtdHlwZTE+ID4gPgpzaW5oKGNvbnN0IFZlY3RvcjxQX251bXR5cGUx
PiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUxPiwKICAgICAgICBfYnpfc2luaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPF9i
el9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X3Npbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gPgpzaW5oKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfc2luaDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9W
ZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+
CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgIF9iel9zaW5oPFBfbnVtdHlwZTE+ID4gPgpzaW5oKGNvbnN0IFZl
Y3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zaW5oPFBfbnVt
dHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihk
MS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFJh
bmdlLAogICAgX2J6X3Npbmg8aW50PiA+ID4Kc2luaChSYW5nZSBkMSkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3Npbmg8aW50PiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9W
ZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4s
CiAgICBfYnpfc2luaDxQX251bXR5cGUxPiA+ID4Kc2luaChjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxU
aW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X3Np
bmg8UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sCiAgICBfYnpfc3FyPFBfbnVtdHlwZTE+ID4gPgpzcXIoY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zcXI8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel9zcXI8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGU+ID4gPgpzcXIoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9z
cXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVy
Q29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfc3FyPFBfbnVtdHlwZTE+ID4gPgpzcXIoY29uc3Qg
VmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3NxcjxQX251
bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIo
ZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxS
YW5nZSwKICAgIF9iel9zcXI8aW50PiA+ID4Kc3FyKFJhbmdlIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfc3FyPGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVj
RXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAog
ICAgX2J6X3NxcjxQX251bXR5cGUxPiA+ID4Kc3FyKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBl
MSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlW
ZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBfYnpfc3FyPFBf
bnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTE+CmlubGlu
ZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlw
ZTE+LAogICAgX2J6X3NxcnQ8UF9udW10eXBlMT4gPiA+CnNxcnQoY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel9zcXJ0PFBfbnVtdHlwZTE+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICBfYnpfc3FydDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZT4gPiA+CnNxcnQoX2J6X1ZlY0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9z
cXJ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRl
ckNvbnN0PFBfbnVtdHlwZTE+LAogICAgX2J6X3NxcnQ8UF9udW10eXBlMT4gPiA+CnNxcnQoY29u
c3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJV
bmFyeU9wPFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3NxcnQ8
UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9l
eHByKGQxLmJlZ2luKCkpKTsKfQoKCmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8UmFuZ2UsCiAgICBfYnpfc3FydDxpbnQ+ID4gPgpzcXJ0KFJhbmdlIGQxKQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwKICAgICAgICBfYnpfc3FydDxpbnQ+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBpbnQgTl9sZW5ndGgxPgppbmxpbmUKX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJVbmFyeU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5n
dGgxPiwKICAgIF9iel9zcXJ0PFBfbnVtdHlwZTE+ID4gPgpzcXJ0KGNvbnN0IFRpbnlWZWN0b3I8
UF9udW10eXBlMSwgTl9sZW5ndGgxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFy
eU9wPFRpbnlWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMSwgTl9sZW5ndGgxPiwKICAgICAgICBf
Ynpfc3FydDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25z
dDxQX251bXR5cGUxPiwKICAgIF9iel90YW48UF9udW10eXBlMT4gPiA+CnRhbihjb25zdCBWZWN0
b3I8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0
b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3RhbjxQX251bXR5cGUxPiA+IFRf
ZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVnaW4oKSkp
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJVbmFyeU9wPF9iel9WZWNFeHByPFBfZXhwcjE+LAogICAgX2J6X3RhbjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnRhbihfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X3RhbjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VmVjdG9yUGlj
a0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgIF9iel90YW48UF9udW10eXBlMT4gPiA+CnRhbihj
b25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfdGFu
PFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcihkMS5iZWdpbigpKSk7Cn0KCgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFy
eU9wPFJhbmdlLAogICAgX2J6X3RhbjxpbnQ+ID4gPgp0YW4oUmFuZ2UgZDEpCnsKICAgIHR5cGVk
ZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel90YW48aW50PiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMSwgaW50IE5fbGVuZ3RoMT4KaW5saW5lCl9iel9WZWNFeHByPF9i
el9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4sCiAgICBfYnpfdGFuPFBfbnVtdHlwZTE+ID4gPgp0YW4oY29uc3QgVGlueVZlY3RvcjxQX251
bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8
VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgICAgIF9iel90
YW48UF9udW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4o
VF9leHByKGQxLmJlZ2luKCkpKTsKfQoKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMT4K
aW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMT4sCiAgICBfYnpfdGFuaDxQX251bXR5cGUxPiA+ID4KdGFuaChjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJ
dGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICAgICAgX2J6X3Rhbmg8UF9udW10eXBlMT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel90YW5oPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlPiA+ID4KdGFuaChfYnpfVmVjRXhwcjxQX2V4cHIxPiBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8X2J6X1ZlY0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X3Rhbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBp
Y2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfdGFuaDxQX251bXR5cGUxPiA+ID4KdGFu
aChjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwclVuYXJ5T3A8VmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpf
dGFuaDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHBy
PihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHBy
VW5hcnlPcDxSYW5nZSwKICAgIF9iel90YW5oPGludD4gPiA+CnRhbmgoUmFuZ2UgZDEpCnsKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFJhbmdlLAogICAgICAgIF9iel90YW5oPGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVj
RXhwcjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBO
X2xlbmd0aDE+LAogICAgX2J6X3Rhbmg8UF9udW10eXBlMT4gPiA+CnRhbmgoY29uc3QgVGlueVZl
Y3RvcjxQX251bXR5cGUxLCBOX2xlbmd0aDE+JiBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAg
ICAgIF9iel90YW5oPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgogCgoKCiMgMjU0OSAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3VvcHMuY2MiCgoKIAoKCgoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlP
cDxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfeTA8UF9udW10eXBlMT4gPiA+
CnkwKGNvbnN0IFZlY3RvcjxQX251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4
cHJVbmFyeU9wPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfeTA8UF9u
dW10eXBlMT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KGQxLmJlZ2luKCkpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNF
eHByPF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel95MDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnkwKF9iel9WZWNFeHByPFBfZXhwcjE+
IGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIx
PiwKICAgICAgICBfYnpfeTA8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxPgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9w
PFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMT4sCiAgICBfYnpfeTA8UF9udW10eXBlMT4g
PiA+CnkwKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9i
el9WZWNFeHByVW5hcnlPcDxWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAg
IF9iel95MDxQX251bXR5cGUxPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9l
eHByPihUX2V4cHIoZDEuYmVnaW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNF
eHByVW5hcnlPcDxSYW5nZSwKICAgIF9iel95MDxpbnQ+ID4gPgp5MChSYW5nZSBkMSkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwclVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3kwPGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhw
cjxfYnpfVmVjRXhwclVuYXJ5T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xl
bmd0aDE+LAogICAgX2J6X3kwPFBfbnVtdHlwZTE+ID4gPgp5MChjb25zdCBUaW55VmVjdG9yPFBf
bnVtdHlwZTEsIE5fbGVuZ3RoMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlP
cDxUaW55VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6
X3kwPFBfbnVtdHlwZTE+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+
KFRfZXhwcihkMS5iZWdpbigpKSk7Cn0KCgoKIAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
MT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMT4sCiAgICBfYnpfeTE8UF9udW10eXBlMT4gPiA+CnkxKGNvbnN0IFZlY3RvcjxQ
X251bXR5cGUxPiYgZDEpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3Rvckl0
ZXJDb25zdDxQX251bXR5cGUxPiwKICAgICAgICBfYnpfeTE8UF9udW10eXBlMT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxLmJlZ2luKCkpKTsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5h
cnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgIF9iel95MTwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZT4gPiA+CnkxKF9iel9WZWNFeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVm
IF9iel9WZWNFeHByVW5hcnlPcDxfYnpfVmVjRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfeTE8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUx
PgppbmxpbmUKX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJVbmFyeU9wPFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMT4sCiAgICBfYnpfeTE8UF9udW10eXBlMT4gPiA+CnkxKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlMT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTE+LAogICAgICAgIF9iel95MTxQX251bXR5cGUx
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoZDEuYmVn
aW4oKSkpOwp9CgoKaW5saW5lCl9iel9WZWNFeHByPF9iel9WZWNFeHByVW5hcnlPcDxSYW5nZSwK
ICAgIF9iel95MTxpbnQ+ID4gPgp5MShSYW5nZSBkMSkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
clVuYXJ5T3A8UmFuZ2UsCiAgICAgICAgX2J6X3kxPGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGludCBOX2xlbmd0aDE+CmlubGluZQpfYnpfVmVjRXhwcjxfYnpfVmVjRXhwclVuYXJ5
T3A8VGlueVZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUxLCBOX2xlbmd0aDE+LAogICAgX2J6X3kx
PFBfbnVtdHlwZTE+ID4gPgp5MShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZTEsIE5fbGVuZ3Ro
MT4mIGQxKQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByVW5hcnlPcDxUaW55VmVjdG9ySXRlckNv
bnN0PFBfbnVtdHlwZTEsIE5fbGVuZ3RoMT4sCiAgICAgICAgX2J6X3kxPFBfbnVtdHlwZTE+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihkMS5iZWdpbigp
KSk7Cn0KCgoKfSAKCgojIDI4OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L3ZlY2V4cHIuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjYmZuLmNjIiAxCgojZGVmaW5lIEJaX1ZFQ0JGTl9ICgoKCgoKbmFtZXNwYWNlICBi
bGl0eiAgeyAKCiAKCn0gCgoKCiMgMjkwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovdmVjZXhwci5oIiAyCgoKCiMgMzkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei92ZWNwaWNrLmNjIiAyCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgog
CgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFz
cyBQX3VwZGF0ZXI+CmlubGluZQp2b2lkIFZlY3RvclBpY2s8UF9udW10eXBlPjo6X2J6X2Fzc2ln
bihQX2V4cHIgZXhwciwgUF91cGRhdGVyKQp7CiAgICAgOwoKICAgICAKICAgICAKICAgICAKICAg
IGlmIChfYnpfaGFzRmFzdEFjY2VzcygpICYmIGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAg
IHsKCiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAg
UF91cGRhdGVyOjp1cGRhdGUodmVjdG9yXyhpbmRleF8oaSkpLCBleHByLl9iel9mYXN0QWNjZXNz
KGkpKTsKIyA4MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3Bp
Y2suY2MiCgogICAgfQogICAgZWxzZSB7CiAgICAgICAgIAogICAgICAgICAKICAgICAgICBmb3Ig
KGludCBpPTA7IGkgPCBsZW5ndGgoKTsgKytpKQogICAgICAgICAgICBQX3VwZGF0ZXI6OnVwZGF0
ZSh2ZWN0b3JfW2luZGV4X1tpXV0sIGV4cHJbaV0pOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcikKewogICAgIDsKCiAgICAgCiAgICAgCiAgICAgCiAgICBpZiAoX2J6X2hhc0Zhc3RB
Y2Nlc3MoKSAmJiBleHByLl9iel9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CgogICAgICAgIGZvciAo
aW50IGk9MDsgaSA8IGxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICgqdGhpcykoaSkgPSBleHBy
Ll9iel9mYXN0QWNjZXNzKGkpOwojIDEyMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3ZlY3BpY2suY2MiCgogICAgfQogICAgZWxzZSB7CiAgICAgICAgIAogICAgICAg
ICAKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGgoKTsgKytpKQogICAgICAgICAgICAo
KnRoaXMpW2ldID0gZXhwcltpXTsKICAgIH0KICAgIHJldHVybiAqdGhpczsKfQoKCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVmVjdG9yUGlj
azxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcis9KF9iel9WZWNF
eHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfcGx1c191cGRhdGU8
UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3Mg
UF9leHByPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5
cGU+OjpvcGVyYXRvci09KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2ln
bihleHByLCBfYnpfbWludXNfdXBkYXRlPFBfbnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgUF9l
eHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IqPShfYnpfVmVjRXhwcjxQX2V4
cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X211bHRpcGx5X3VwZGF0ZTxQX251
bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJldHVy
biAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIApWZWN0b3JQaWNrPFBfbnVtdHlwZT46
Om9wZXJhdG9yLz0oX2J6X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4
cHIsIF9iel9kaXZpZGVfdXBkYXRlPFBfbnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgUF9leHBy
OjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBl
PiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IlPShfYnpfVmVjRXhwcjxQX2V4cHI+
IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X21vZF91cGRhdGU8UF9udW10eXBlLAog
ICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1cm4gKnRoaXM7
Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxp
bmUgVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRv
cl49KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpf
eG9yX3VwZGF0ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBl
PigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIApWZWN0b3JQ
aWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yJj0oX2J6X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAg
ICBfYnpfYXNzaWduKGV4cHIsIF9iel9iaXRhbmRfdXBkYXRlPFBfbnVtdHlwZSwKICAgICAgICB0
eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFZlY3Rv
clBpY2s8UF9udW10eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3J8PShfYnpf
VmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X2JpdG9yX3Vw
ZGF0ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsK
ICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIApWZWN0b3JQaWNrPFBf
bnVtdHlwZT46Om9wZXJhdG9yPj49KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6
X2Fzc2lnbihleHByLCBfYnpfc2hpZnRyX3VwZGF0ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5h
bWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3JQaWNr
PFBfbnVtdHlwZT4mIApWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yPDw9KF9iel9WZWNF
eHByPFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfc2hpZnRsX3VwZGF0
ZTxQX251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAg
IHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBW
ZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KFBf
bnVtdHlwZSB4KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByQ29uc3RhbnQ8UF9udW10eXBlPiBU
X2V4cHI7CiAgICAoKnRoaXMpID0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAg
cmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQ
aWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IrPShQX251bXR5
cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHBy
OwogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8
UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvci09KFBfbnVtdHlwZSB4
KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByQ29uc3RhbnQ8UF9udW10eXBlPiBUX2V4cHI7CiAg
ICAoKnRoaXMpIC09IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAq
dGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251
bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yKj0oUF9udW10eXBlIHgpCnsK
ICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFudDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgq
dGhpcykgKj0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlw
ZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IvPShQX251bXR5cGUgeCkKewogICAg
dHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlz
KSAvPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0K
CnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYg
VmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciU9KFBfbnVtdHlwZSB4KQp7CiAgICB0eXBl
ZGVmIF9iel9WZWNFeHByQ29uc3RhbnQ8UF9udW10eXBlPiBUX2V4cHI7CiAgICAoKnRoaXMpICU9
IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0
b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yXj0oUF9udW10eXBlIHgpCnsKICAgIHR5cGVkZWYg
X2J6X1ZlY0V4cHJDb25zdGFudDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgqdGhpcykgXj0gX2J6
X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBp
Y2s8UF9udW10eXBlPjo6b3BlcmF0b3ImPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAmPSBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQ
X251bXR5cGU+OjpvcGVyYXRvcnw9KFBfbnVtdHlwZSB4KQp7CiAgICB0eXBlZGVmIF9iel9WZWNF
eHByQ29uc3RhbnQ8UF9udW10eXBlPiBUX2V4cHI7CiAgICAoKnRoaXMpIHw9IF9iel9WZWNFeHBy
PFRfZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVt
dHlwZT46Om9wZXJhdG9yPj49KGludCB4KQp7CiAgICB0eXBlZGVmIF9iel9WZWNFeHByQ29uc3Rh
bnQ8aW50PiBUX2V4cHI7CiAgICAoKnRoaXMpID4+PSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5s
aW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRv
cjw8PShpbnQgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4g
VF9leHByOwogICAgKCp0aGlzKSA8PD0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwog
ICAgcmV0dXJuICp0aGlzOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgClZlY3Rv
clBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkK
ewogICAgKCp0aGlzKSA9IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiA+
KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBl
PiYKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcis9KGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgeCkKewogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNr
PFBfbnVtdHlwZT4mClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3ItPShjb25zdCBWZWN0
b3I8UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgLT0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUg
VmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yKj0o
Y29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICo9IF9iel9WZWNFeHBy
PFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYKVmVjdG9yUGljazxQX251bXR5cGU+Ojpv
cGVyYXRvci89KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAvPSBf
YnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAg
cmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mClZlY3RvclBpY2s8UF9u
dW10eXBlPjo6b3BlcmF0b3IlPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIHgpCnsKICAgICgq
dGhpcykgJT0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdp
bigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0
b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yXj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4
KQp7CiAgICAoKnRoaXMpIF49IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUy
PiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciY9KGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAmPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8
UF9udW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQ
aWNrPFBfbnVtdHlwZT4mClZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3J8PShjb25zdCBW
ZWN0b3I8UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgfD0gX2J6X1ZlY0V4cHI8VmVjdG9y
SXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUgVmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9y
PDw9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSA8PD0gX2J6X1Zl
Y0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVy
biAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JgpWZWN0b3JQaWNrPFBfbnVtdHlw
ZT46Om9wZXJhdG9yPj49KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlz
KSA+Pj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigp
KTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cmlu
bGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0
b3I9KFJhbmdlIHIpCnsKICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBp
Y2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcis9KFJhbmdlIHIp
CnsKICAgICgqdGhpcykgKz0gX2J6X1ZlY0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlw
ZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3ItPShSYW5nZSByKQp7CiAgICAoKnRo
aXMpIC09IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQ
aWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yKj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAqPSBfYnpf
VmVjRXhwcjxSYW5nZT4ocik7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQX251bXR5
cGU+OjpvcGVyYXRvci89KFJhbmdlIHIpCnsKICAgICgqdGhpcykgLz0gX2J6X1ZlY0V4cHI8UmFu
Z2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cmlu
bGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0
b3IlPShSYW5nZSByKQp7CiAgICAoKnRoaXMpICU9IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAg
IHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9y
UGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9wZXJhdG9yXj0oUmFuZ2Ug
cikKewogICAgKCp0aGlzKSBePSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10
eXBlPiYgVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciY9KFJhbmdlIHIpCnsKICAgICgq
dGhpcykgJj0gX2J6X1ZlY0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3Rv
clBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3J8PShSYW5nZSByKQp7CiAgICAoKnRoaXMpIHw9IF9i
el9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVt
dHlwZT46Om9wZXJhdG9yPj49KFJhbmdlIHIpCnsKICAgICgqdGhpcykgPj49IF9iel9WZWNFeHBy
PFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
PgppbmxpbmUgVmVjdG9yUGljazxQX251bXR5cGU+JiBWZWN0b3JQaWNrPFBfbnVtdHlwZT46Om9w
ZXJhdG9yPDw9KFJhbmdlIHIpCnsKICAgICgqdGhpcykgPDw9IF9iel9WZWNFeHByPFJhbmdlPihy
KTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZl
Y3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3I9KGNvbnN0IAogICAgVmVjdG9yUGljazxQX251
bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+
IFRfZXhwcjsKICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvclBpY2s8UF9udW10eXBlPiYgVmVjdG9yUGljazxQ
X251bXR5cGU+OjpvcGVyYXRvcis9KGNvbnN0CiAgICBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4
KQp7CiAgICB0eXBlZGVmIFZlY3RvclBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4gVF9leHByOwog
ICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBl
Pjo6b3BlcmF0b3ItPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAg
dHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhp
cykgLT0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+Cmlu
bGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0
b3IqPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgKj0gX2J6
X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0
b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IvPShjb25z
dAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNr
SXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgLz0gX2J6X1ZlY0V4cHI8
VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBf
bnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3IlPShjb25zdAogICAgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0
PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgJT0gX2J6X1ZlY0V4cHI8VF9leHByPih4
LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+
IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4m
IFZlY3RvclBpY2s8UF9udW10eXBlPjo6b3BlcmF0b3JePShjb25zdAogICAgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+IFRfZXhwcjsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkp
OwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBp
Y2s8UF9udW10eXBlPjo6b3BlcmF0b3ImPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUy
PiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhw
cjsKICAgICgqdGhpcykgJj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZTI+CmlubGluZSBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIFZlY3RvclBpY2s8UF9udW10
eXBlPjo6b3BlcmF0b3J8PShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewog
ICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgq
dGhpcykgfD0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlz
Owp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9kaXN0
cmlidXRpb24+ClZlY3RvclBpY2s8UF9udW10eXBlPiYgClZlY3RvclBpY2s8UF9udW10eXBlPjo6
b3BlcmF0b3I9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgPSBf
YnpfVmVjRXhwcjxfYnpfVmVjRXhwclJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4gPiAKICAgICAgICAo
X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhp
czsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1
dGlvbj4KVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVy
YXRvcis9KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgKz0gX2J6
X1ZlY0V4cHI8X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6
X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlv
bj4KVmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRv
ci09KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgLT0gX2J6X1Zl
Y0V4cHI8X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1Zl
Y0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4K
VmVjdG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcio9
KFJhbmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4
cHI8X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4
cHJSYW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVj
dG9yUGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvci89KFJh
bmRvbTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgLz0gX2J6X1ZlY0V4cHI8
X2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJS
YW5kb208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9y
UGljazxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciU9KFJhbmRv
bTxQX2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgJT0gX2J6X1ZlY0V4cHI8X2J6
X1ZlY0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5k
b208UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9yUGlj
azxQX251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcl49KFJhbmRvbTxQ
X2Rpc3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8X2J6X1Zl
Y0V4cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5kb208
UF9kaXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9yUGljazxQ
X251bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvciY9KFJhbmRvbTxQX2Rp
c3RyaWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgJj0gX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4
cHJSYW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5kb208UF9k
aXN0cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9yUGljazxQX251
bXR5cGU+JiAKVmVjdG9yUGljazxQX251bXR5cGU+OjpvcGVyYXRvcnw9KFJhbmRvbTxQX2Rpc3Ry
aWJ1dGlvbj4mIHJhbmQpCnsKICAgICgqdGhpcykgfD0gX2J6X1ZlY0V4cHI8X2J6X1ZlY0V4cHJS
YW5kb208UF9kaXN0cmlidXRpb24+ID4KICAgICAgICAoX2J6X1ZlY0V4cHJSYW5kb208UF9kaXN0
cmlidXRpb24+KHJhbmQpKTsKICAgIHJldHVybiAqdGhpczsKfQoKfSAKCgojIDMyMSAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3BpY2suaCIgMgoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjcGlja2lvLmNjIiAxCiAKCgoK
CgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDUElDS0lPX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3Ry
ZWFtJiBvcywgY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICBWZWN0b3I8UF9u
dW10eXBlPiB5KHgubGVuZ3RoKCkpOwogICAgeSA9IHg7CiAgICBvcyA8PCB5OwogICAgcmV0dXJu
IG9zOwp9Cgp9IAoKCiMgMzIyICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovdmVjcGljay5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9i
bGl0ei92ZWNwaWNraXRlci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ1BJQ0tJVEVSX0gKCgoKCgpuYW1lc3BhY2UgIGJs
aXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpjbGFzcyBWZWN0b3JQaWNrSXRlciB7
CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSAgVF9udW10eXBlOwoKICAgIGV4cGxpY2l0
ICBWZWN0b3JQaWNrSXRlcihWZWN0b3JQaWNrPFRfbnVtdHlwZT4mIHgpCiAgICAgICAgOiBkYXRh
Xyh4LnZlY3RvcigpLmRhdGEoKSksIGluZGV4Xyh4LmluZGV4U2V0KCkuZGF0YSgpKQogICAgewog
ICAgICAgIGRhdGFTdHJpZGVfICA9IHgudmVjdG9yKCkuc3RyaWRlKCk7CiAgICAgICAgaW5kZXhT
dHJpZGVfID0geC5pbmRleFNldCgpLnN0cmlkZSgpOwogICAgICAgIGxlbmd0aF8gPSB4LmluZGV4
U2V0KCkubGVuZ3RoKCk7CiAgICB9CgoKICAgIFZlY3RvclBpY2tJdGVyKGNvbnN0IFZlY3RvclBp
Y2tJdGVyPFRfbnVtdHlwZT4mIHgpCiAgICB7CiAgICAgICAgZGF0YV8gPSB4LmRhdGFfOwogICAg
ICAgIGluZGV4XyA9IHguaW5kZXhfOwogICAgICAgIGRhdGFTdHJpZGVfID0geC5kYXRhU3RyaWRl
XzsKICAgICAgICBpbmRleFN0cmlkZV8gPSB4LmluZGV4U3RyaWRlXzsKICAgICAgICBsZW5ndGhf
ID0geC5sZW5ndGhfOwogICAgfQoKCiAgICBUX251bXR5cGUgb3BlcmF0b3JbXShpbnQgaSkgY29u
c3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBkYXRhX1tkYXRhU3RyaWRlXyAqIGlu
ZGV4X1tpICogaW5kZXhTdHJpZGVfXV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcltd
KGludCBpKQogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGRhdGFfW2RhdGFTdHJpZGVf
ICogaW5kZXhfW2kgKiBpbmRleFN0cmlkZV9dXTsKICAgIH0KCiAgICBpbnQgbGVuZ3RoKGludCkg
Y29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBpbnQgX2J6X3N1Z2dlc3RMZW5ndGgo
KSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoXzsgfQoKICAgIGJvb2wgIGlzVW5pdFN0cmlkZSgp
IGNvbnN0CiAgICB7IHJldHVybiAoZGF0YVN0cmlkZV8gID09IDEpICYmIChpbmRleFN0cmlkZV8g
PT0gMSk7IH0KCiAgICBib29sICBfYnpfaGFzRmFzdEFjY2VzcygpIGNvbnN0CiAgICB7IHJldHVy
biBpc1VuaXRTdHJpZGUoKTsgfQoKICAgIFRfbnVtdHlwZSBfYnpfZmFzdEFjY2VzcyhpbnQgaSkg
Y29uc3QKICAgIHsgICAgCiAgICAgICAgIHJldHVybiBkYXRhX1tpbmRleF9baV1dOwogICAgfQoK
ICAgIFRfbnVtdHlwZSYgIF9iel9mYXN0QWNjZXNzKGludCBpKQogICAgewogICAgICAgICByZXR1
cm4gZGF0YV9baW5kZXhfW2ldXTsKICAgIH0KCiAgICBlbnVtIHsgX2J6X3N0YXRpY0xlbmd0aENv
dW50ID0gMCwKICAgICAgICAgICBfYnpfZHluYW1pY0xlbmd0aENvdW50ID0gMSwKICAgICAgICAg
ICBfYnpfc3RhdGljTGVuZ3RoID0gMCB9OwoKcHJpdmF0ZToKICAgIFRfbnVtdHlwZSAqIF9fcmVz
dHJpY3RfXyAgZGF0YV87CiAgICBpbnQgZGF0YVN0cmlkZV87CiAgICBjb25zdCBpbnQgKiBfX3Jl
c3RyaWN0X18gIGluZGV4XzsKICAgIGludCBpbmRleFN0cmlkZV87CiAgICBpbnQgbGVuZ3RoXzsK
fTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgVmVjdG9yUGlja0l0ZXJDb25zdCB7
CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSAgVF9udW10eXBlOwoKICAgIGV4cGxpY2l0
ICBWZWN0b3JQaWNrSXRlckNvbnN0KGNvbnN0IFZlY3RvclBpY2s8VF9udW10eXBlPiYgeCkKICAg
ICAgICA6IGRhdGFfKHgudmVjdG9yKCkuZGF0YSgpKSwgaW5kZXhfKHguaW5kZXhTZXQoKS5kYXRh
KCkpCiAgICB7CiAgICAgICAgZGF0YVN0cmlkZV8gID0geC52ZWN0b3IoKS5zdHJpZGUoKTsKICAg
ICAgICBpbmRleFN0cmlkZV8gPSB4LmluZGV4U2V0KCkuc3RyaWRlKCk7CiAgICAgICAgbGVuZ3Ro
XyA9IHguaW5kZXhTZXQoKS5sZW5ndGgoKTsKICAgIH0KCgogICAgVmVjdG9yUGlja0l0ZXJDb25z
dChjb25zdCBWZWN0b3JQaWNrSXRlckNvbnN0PFRfbnVtdHlwZT4mIHgpCiAgICB7CiAgICAgICAg
ZGF0YV8gPSB4LmRhdGFfOwogICAgICAgIGluZGV4XyA9IHguaW5kZXhfOwogICAgICAgIGRhdGFT
dHJpZGVfID0geC5kYXRhU3RyaWRlXzsKICAgICAgICBpbmRleFN0cmlkZV8gPSB4LmluZGV4U3Ry
aWRlXzsKICAgICAgICBsZW5ndGhfID0geC5sZW5ndGhfOwogICAgfQoKCiAgICBUX251bXR5cGUg
b3BlcmF0b3JbXShpbnQgaSkgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBk
YXRhX1tkYXRhU3RyaWRlXyAqIGluZGV4X1tpICogaW5kZXhTdHJpZGVfXV07CiAgICB9CgogICAg
aW50IGxlbmd0aChpbnQpIGNvbnN0CiAgICB7IHJldHVybiBsZW5ndGhfOyB9CgogICAgaW50IF9i
el9zdWdnZXN0TGVuZ3RoKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBib29s
ICBpc1VuaXRTdHJpZGUoKSBjb25zdAogICAgeyByZXR1cm4gKGRhdGFTdHJpZGVfICA9PSAxKSAm
JiAoaW5kZXhTdHJpZGVfID09IDEpOyB9CgogICAgYm9vbCAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBj
b25zdAogICAgeyByZXR1cm4gaXNVbml0U3RyaWRlKCk7IH0KCiAgICBUX251bXR5cGUgX2J6X2Zh
c3RBY2Nlc3MoaW50IGkpIGNvbnN0CiAgICB7CiAgICAgICAgIHJldHVybiBkYXRhX1tpbmRleF9b
aV1dOwogICAgfQoKICAgIGVudW0geyBfYnpfc3RhdGljTGVuZ3RoQ291bnQgPSAwLAogICAgICAg
ICAgIF9iel9keW5hbWljTGVuZ3RoQ291bnQgPSAxLAogICAgICAgICAgIF9iel9zdGF0aWNMZW5n
dGggPSAwIH07Cgpwcml2YXRlOgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICBk
YXRhXzsKICAgIGludCBkYXRhU3RyaWRlXzsKICAgIGNvbnN0IGludCAqIF9fcmVzdHJpY3RfXyAg
aW5kZXhfOwogICAgaW50IGluZGV4U3RyaWRlXzsKICAgIGludCBsZW5ndGhfOwp9OwoKfSAKCgoK
IyAzMjMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNwaWNrLmgi
IDIKCgoKIyA0OTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0
b3IuaCIgMgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Zl
Y2dsb2JzLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
I2RlZmluZSBCWl9WRUNHTE9CU19ICgoKCgoKCgoKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9leHRyZW11bS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfRVhUUkVNVU1fSAoKCgoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgogCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBj
bGFzcyBQX2luZGV4PgpjbGFzcyBFeHRyZW11bSB7CnB1YmxpYzoKICAgIHR5cGVkZWYgUF9udW10
eXBlIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgUF9pbmRleCAgIFRfaW5kZXg7CgogICAgRXh0cmVt
dW0oVF9udW10eXBlIHZhbHVlLCBUX2luZGV4IGluZGV4KQogICAgICAgIDogdmFsdWVfKHZhbHVl
KSwgaW5kZXhfKGluZGV4KQogICAgeyB9CgogICAgVF9udW10eXBlIHZhbHVlKCkgY29uc3QKICAg
IHsgcmV0dXJuIHZhbHVlXzsgfQoKICAgIFRfaW5kZXggaW5kZXgoKSBjb25zdAogICAgeyByZXR1
cm4gaW5kZXhfOyB9CgogICAgdm9pZCBzZXRWYWx1ZShUX251bXR5cGUgdmFsdWUpCiAgICB7IHZh
bHVlXyA9IHZhbHVlOyB9CgogICAgdm9pZCBzZXRJbmRleChUX2luZGV4IGluZGV4KQogICAgeyBp
bmRleF8gPSBpbmRleDsgfQoKICAgIG9wZXJhdG9yIFRfbnVtdHlwZSgpIGNvbnN0CiAgICB7IHJl
dHVybiB2YWx1ZV87IH0KCnByb3RlY3RlZDoKICAgIFRfbnVtdHlwZSB2YWx1ZV87CiAgICBUX2lu
ZGV4IGluZGV4XzsKfTsKCn0gCgoKCiMgNjAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei92ZWNnbG9icy5oIiAyCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKfSAKCiMg
MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2dsb2JzLmNjIiAx
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDR0xPQlNfQ0MKCgoKCgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNhY2N1bS5jYyIgMQogCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ0FDQ1VNX0NDCgoKCgoKbmFtZXNwYWNl
ICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFA+CmlubGluZQpWZWN0b3I8IHR5cGVuYW1lICBO
dW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIFA6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgPiBf
YnpfdmVjX2FjY3VtdWxhdGUoUCBleHByKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBOdW1lcmlj
VHlwZVRyYWl0czwgdHlwZW5hbWUgIFA6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgIFRfc3VtdHlw
ZTsKICAgIGludCBsZW5ndGggPSBleHByLl9iel9zdWdnZXN0TGVuZ3RoKCk7CiAgICBWZWN0b3I8
VF9zdW10eXBlPiB6KGxlbmd0aCk7CiAgICBUX3N1bXR5cGUgc3VtID0gMDsKCiAgICBpZiAoZXhw
ci5fYnpfaGFzRmFzdEFjY2VzcygpKQogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgc3VtICs9IGV4cHIuX2J6X2Zhc3RBY2Nl
c3MoaSk7CiAgICAgICAgICAgIHpbaV0gPSBzdW07CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7
CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgewogICAgICAg
ICAgICBzdW0gKz0gZXhwcihpKTsKICAgICAgICAgICAgeltpXSA9IHN1bTsKICAgICAgICB9CiAg
ICB9CgogICAgcmV0dXJuIHo7Cn0KdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpWZWN0b3I8IHR5
cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgUF9udW10eXBlID46OlRfc3VtdHlwZSA+IGFjY3Vt
dWxhdGUoY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX2Fj
Y3VtdWxhdGUoeCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KVmVjdG9yPCB0eXBlbmFtZSAg
TnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSA+OjpUX3N1bXR5
cGUgPgphY2N1bXVsYXRlKF9iel9WZWNFeHByPFBfZXhwcj4geCkKewogICAgcmV0dXJuIF9iel92
ZWNfYWNjdW11bGF0ZSh4KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpWZWN0b3I8IHR5
cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgUF9udW10eXBlID46OlRfc3VtdHlwZSA+IGFjY3Vt
dWxhdGUoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3Zl
Y19hY2N1bXVsYXRlKHgpOwp9Cgp9IAoKCgojIDI3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L3ZlY2RlbHRhLmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiNkZWZpbmUgQlpfVkVDREVMVEFfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxh
dGU8Y2xhc3MgUD4KaW5saW5lClZlY3RvcjwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0
eXBlbmFtZSAgUDo6VF9udW10eXBlID46OlRfZGlmZnR5cGUgPiBfYnpfdmVjX2RlbHRhKFAgZXhw
cikKewogICAgdHlwZWRlZiB0eXBlbmFtZSAgUDo6VF9udW10eXBlICAgVF9udW10eXBlOwogICAg
dHlwZWRlZiB0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFRfbnVtdHlwZSA+OjpUX2RpZmZ0
eXBlICAgICAgIFRfZGlmZnR5cGU7CgogICAgaW50IGxlbmd0aCA9IGV4cHIuX2J6X3N1Z2dlc3RM
ZW5ndGgoKTsKICAgIFZlY3RvcjxUX2RpZmZ0eXBlPiB6KGxlbmd0aCk7CiAgICBUX251bXR5cGUg
Y3VycmVudEVsZW1lbnQgPSAwOwogICAgVF9udW10eXBlIHByZXZpb3VzRWxlbWVudCA9IDA7Cgog
ICAgaWYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBmb3IgKGludCBp
PTA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50
ID0gZXhwci5fYnpfZmFzdEFjY2VzcyhpKTsKICAgICAgICAgICAgeltpXSA9IGN1cnJlbnRFbGVt
ZW50IC0gcHJldmlvdXNFbGVtZW50OwogICAgICAgICAgICBwcmV2aW91c0VsZW1lbnQgPSBjdXJy
ZW50RWxlbWVudDsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBmb3IgKGludCBp
PTE7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIGN1cnJlbnRFbGVtZW50
ID0gZXhwcihpKTsKICAgICAgICAgICAgeltpXSA9IGN1cnJlbnRFbGVtZW50IC0gcHJldmlvdXNF
bGVtZW50OwogICAgICAgICAgICBwcmV2aW91c0VsZW1lbnQgPSBjdXJyZW50RWxlbWVudDsKICAg
ICAgICB9CiAgICB9CgogICAgcmV0dXJuIHo7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4K
VmVjdG9yPCB0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFBfbnVtdHlwZSA+OjpUX2RpZmZ0
eXBlID4gZGVsdGEoY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpf
dmVjX2RlbHRhKHgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KVmVjdG9yPCB0eXBlbmFt
ZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSA+OjpUX2Rp
ZmZ0eXBlID4gZGVsdGEoX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6X3Zl
Y19kZWx0YSh4KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+ClZlY3RvcjwgdHlwZW5h
bWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUgPjo6VF9kaWZmdHlwZSA+IGRlbHRhKGNv
bnN0IFZlY3RvclBpY2s8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfZGVsdGEo
eCk7Cn0KCn0gCgoKCiMgMjggIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0
ei92ZWNnbG9icy5jYyIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjbWluLmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVD
TUlOX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4K
aW5saW5lCkV4dHJlbXVtPCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGUsIGludD4gX2J6X3Zl
Y19taW4oUF9leHByIHZlY3RvcikKewogICAgdHlwZWRlZiB0eXBlbmFtZSAgUF9leHByOjpUX251
bXR5cGUgVF9udW10eXBlOwoKICAgIFRfbnVtdHlwZSBtaW5WYWx1ZSA9IHZlY3RvcigwKTsKICAg
IGludCBtaW5JbmRleCA9IDA7CiAgICBpbnQgbGVuZ3RoID0gdmVjdG9yLl9iel9zdWdnZXN0TGVu
Z3RoKCk7CgogICAgaWYgKHZlY3Rvci5fYnpfaGFzRmFzdEFjY2VzcygpKQogICAgewogICAgICAg
IGZvciAoaW50IGk9MTsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgVF9u
dW10eXBlIHZhbHVlID0gdmVjdG9yLl9iel9mYXN0QWNjZXNzKGkpOwogICAgICAgICAgICBpZiAo
dmFsdWUgPCBtaW5WYWx1ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbWluVmFsdWUg
PSB2YWx1ZTsKICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaTsKICAgICAgICAgICAgfQogICAg
ICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciAoaW50IGk9MTsgaSA8IGxlbmd0aDsg
KytpKQogICAgICAgIHsKICAgICAgICAgICAgVF9udW10eXBlIHZhbHVlID0gdmVjdG9yKGkpOwog
ICAgICAgICAgICBpZiAodmFsdWUgPCBtaW5WYWx1ZSkKICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgbWluVmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaTsKICAg
ICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gRXh0cmVtdW08VF9udW10eXBl
LCBpbnQ+KG1pblZhbHVlLCBtaW5JbmRleCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
PgppbmxpbmUKRXh0cmVtdW08UF9udW10eXBlLGludD4gbWluKGNvbnN0IFZlY3RvcjxQX251bXR5
cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCkV4dHJlbXVtPCB0eXBlbmFtZSAgUF9leHBy
OjpUX251bXR5cGUsaW50PiBtaW4oX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4g
X2J6X3ZlY19taW4oeCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKRXh0
cmVtdW08UF9udW10eXBlLCBpbnQ+IG1pbihjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIHgp
CnsKICAgIHJldHVybiBfYnpfdmVjX21pbih4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+CmlubGluZQpFeHRyZW11bTxQX251bXR5
cGUsIGludD4gbWluKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mIHgpCnsK
ICAgIHJldHVybiBfYnpfdmVjX21pbih4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtaW5JbmRleChjb25zdCBWZWN0b3I8UF9udW10
eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWluKHguX2J6X2FzVmVjRXhwcigpKS5pbmRl
eCgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCmludCAgbWluSW5kZXgoX2J6
X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeCkuaW5kZXgoKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmludCAgbWluSW5kZXgoY29uc3QgVmVjdG9y
UGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeC5fYnpfYXNWZWNF
eHByKCkpLmluZGV4KCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5n
dGg+CmludCBtaW5JbmRleChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JiB4
KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4oeC5fYnpfYXNWZWNFeHByKCkpLmluZGV4KCk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtaW5WYWx1ZShjb25zdCBW
ZWN0b3I8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWluKHguX2J6X2FzVmVj
RXhwcigpKS52YWx1ZSgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCmludCAg
bWluVmFsdWUoX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4o
eCkudmFsdWUoKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmludCAgbWluVmFsdWUo
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19taW4o
eC5fYnpfYXNWZWNFeHByKCkpLnZhbHVlKCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
LCBpbnQgTl9sZW5ndGg+CmludCAgbWluVmFsdWUoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWluKHguX2J6X2FzVmVjRXhwcigp
KS52YWx1ZSgpOwp9Cgp9IAoKCgojIDI5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L3ZlY21heC5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5l
IEJaX1ZFQ01BWF9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHI+CmlubGluZQpFeHRyZW11bTwgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlLCBpbnQ+
IF9iel92ZWNfbWF4KFBfZXhwciB2ZWN0b3IpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFBfZXhw
cjo6VF9udW10eXBlIFRfbnVtdHlwZTsKCiAgICBUX251bXR5cGUgbWF4VmFsdWUgPSB2ZWN0b3Io
MCk7CiAgICBpbnQgbWF4SW5kZXggPSAwOwogICAgaW50IGxlbmd0aCA9IHZlY3Rvci5fYnpfc3Vn
Z2VzdExlbmd0aCgpOwoKICAgIGlmICh2ZWN0b3IuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsK
ICAgICAgICBmb3IgKGludCBpPTE7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAg
ICAgIFRfbnVtdHlwZSB2YWx1ZSA9IHZlY3Rvci5fYnpfZmFzdEFjY2VzcyhpKTsKICAgICAgICAg
ICAgaWYgKHZhbHVlID4gbWF4VmFsdWUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG1h
eFZhbHVlID0gdmFsdWU7CiAgICAgICAgICAgICAgICBtYXhJbmRleCA9IGk7CiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBmb3IgKGludCBpPTE7IGkgPCBs
ZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIFRfbnVtdHlwZSB2YWx1ZSA9IHZlY3Rv
cihpKTsKICAgICAgICAgICAgaWYgKHZhbHVlID4gbWF4VmFsdWUpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgIG1heFZhbHVlID0gdmFsdWU7CiAgICAgICAgICAgICAgICBtYXhJbmRleCA9
IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEV4dHJlbXVtPFRf
bnVtdHlwZSwgaW50PihtYXhWYWx1ZSwgbWF4SW5kZXgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lCkV4dHJlbXVtPFBfbnVtdHlwZSwgaW50PiBtYXgoY29uc3QgVmVjdG9y
PFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX21heCh4Ll9iel9hc1ZlY0V4cHIo
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUKRXh0cmVtdW08IHR5cGVuYW1l
ICBQX2V4cHI6OlRfbnVtdHlwZSxpbnQ+IG1heChfYnpfVmVjRXhwcjxQX2V4cHI+IHgpCnsKICAg
IHJldHVybiBfYnpfdmVjX21heCh4KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cmlu
bGluZQpFeHRyZW11bTxQX251bXR5cGUsIGludD4gbWF4KGNvbnN0IFZlY3RvclBpY2s8UF9udW10
eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2FzVmVjRXhwcigpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lCkV4dHJlbXVt
PFBfbnVtdHlwZSwgaW50PgptYXgoY29uc3QgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3Ro
PiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2FzVmVjRXhwcigpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtYXhJbmRleChjb25zdCBWZWN0
b3I8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHgpLmluZGV4KCk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUKaW50IG1heEluZGV4KF9iel9WZWNFeHBy
PFBfZXhwcj4geCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2FzVmVjRXhwcigpKS5p
bmRleCgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW50ICBtYXhJbmRleChjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX21heCh4Ll9i
el9hc1ZlY0V4cHIoKSkuaW5kZXgoKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGlu
dCBOX2xlbmd0aD4KaW50ICBtYXhJbmRleChjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9s
ZW5ndGg+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19tYXgoeC5fYnpfYXNWZWNFeHByKCkpLmlu
ZGV4KCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKaW50ICBtYXhWYWx1
ZShjb25zdCBWZWN0b3I8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHgu
X2J6X2FzVmVjRXhwcigpKS52YWx1ZSgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5s
aW5lCmludCAgbWF4VmFsdWUoX2J6X1ZlY0V4cHI8UF9leHByPiB4KQp7CiAgICByZXR1cm4gX2J6
X3ZlY19tYXgoeCkudmFsdWUoKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmludCAg
bWF4VmFsdWUoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6
X3ZlY19tYXgoeC5fYnpfYXNWZWNFeHByKCkpLnZhbHVlKCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlLCBpbnQgTl9sZW5ndGg+CmludCAgbWF4VmFsdWUoY29uc3QgVGlueVZlY3RvcjxQ
X251bXR5cGUsIE5fbGVuZ3RoPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbWF4KHguX2J6X2Fz
VmVjRXhwcigpKS52YWx1ZSgpOwp9Cgp9IAoKCgojIDMwICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3N1bS5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgojZGVmaW5lIEJaX1ZFQ1NVTV9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHI+CmlubGluZQp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVu
YW1lICBQX2V4cHI6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgCl9iel92ZWNfc3VtKFBfZXhwciB2
ZWN0b3IpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlIFRfbnVtdHlw
ZTsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBUX251bXR5cGUgPjo6
VF9zdW10eXBlICAgICAgICAgICBUX3N1bXR5cGU7CgogICAgVF9zdW10eXBlIHN1bSA9IDA7CiAg
ICBpbnQgbGVuZ3RoID0gdmVjdG9yLl9iel9zdWdnZXN0TGVuZ3RoKCk7CgogICAgaWYgKHZlY3Rv
ci5fYnpfaGFzRmFzdEFjY2VzcygpKQogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGxl
bmd0aDsgKytpKQogICAgICAgICAgICBzdW0gKz0gdmVjdG9yLl9iel9mYXN0QWNjZXNzKGkpOwog
ICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAg
ICAgICAgICAgIHN1bSArPSB2ZWN0b3IoaSk7CiAgICB9CgogICAgcmV0dXJuIHN1bTsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRz
PCBQX251bXR5cGUgPjo6VF9zdW10eXBlICBzdW0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgp
CnsKICAgIHJldHVybiBfYnpfdmVjX3N1bSh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBl
bmFtZSAgUF9leHByOjpUX251bXR5cGUgPjo6VF9zdW10eXBlIApzdW0oX2J6X1ZlY0V4cHI8UF9l
eHByPiBleHByKQp7CiAgICByZXR1cm4gX2J6X3ZlY19zdW0oZXhwcik7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9udW10eXBlPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251
bXR5cGUgPjo6VF9zdW10eXBlIApzdW0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7
CiAgICByZXR1cm4gX2J6X3ZlY19zdW0oeC5fYnpfYXNWZWNFeHByKCkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlw
ZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zs
b2F0dHlwZSAgbWVhbihjb25zdCBWZWN0b3I8UF9udW10eXBlPiYgeCkKewogICAgIDsKCiAgICB0
eXBlZGVmIHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBl
VHJhaXRzPCBQX251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAgVF9mbG9hdHR5
cGU7CiAgICByZXR1cm4gX2J6X3ZlY19zdW0oeC5fYnpfYXNWZWNFeHByKCkpIC8gKFRfZmxvYXR0
eXBlKSB4Lmxlbmd0aCgpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCnR5cGVu
YW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBl
bmFtZSAgUF9leHByOjpUX251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAKbWVh
bihfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgICA7CgogICAgdHlwZWRlZiB0eXBlbmFt
ZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5h
bWUgIFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAgPjo6VF9mbG9hdHR5cGUgIAogICAg
ICAgIFRfZmxvYXR0eXBlOwogICAgcmV0dXJuIF9iel92ZWNfc3VtKGV4cHIpIC8gKFRfZmxvYXR0
eXBlKSBleHByLl9iel9zdWdnZXN0TGVuZ3RoKCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgTnVtZXJp
Y1R5cGVUcmFpdHM8IFBfbnVtdHlwZSA+OjpUX3N1bXR5cGUgID46OlRfZmxvYXR0eXBlIAptZWFu
KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlPiYgeCkKewogICAgIDsKCiAgICB0eXBlZGVmIHR5
cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQ
X251bXR5cGUgPjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAgVF9mbG9hdHR5cGU7CiAgICBy
ZXR1cm4gX2J6X3ZlY19zdW0oeC5fYnpfYXNWZWNFeHByKCkpIC8gKFRfZmxvYXR0eXBlKSB4Lmxl
bmd0aCgpOwp9Cgp9IAoKCgojIDMxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovdmVjZ2xvYnMuY2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3ZlY2RvdC5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJa
X1ZFQ0RPVF9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQMSwg
Y2xhc3MgUDI+CmlubGluZQp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCB0eXBlbmFtZSAgUDE6OlRfbnVtdHlwZSAsICB0eXBlbmFtZSAgUDI6OlRf
bnVtdHlwZSA+OjpUX3Byb21vdGUgID46OlRfc3VtdHlwZSAKX2J6X2RvdChQMSB2ZWN0b3IxLCBQ
MiB2ZWN0b3IyKQp7CiAgICAgOwoKICAgIHR5cGVkZWYgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJh
aXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgdHlwZW5hbWUgIFAxOjpUX251bXR5cGUgLCAK
ICAgICAgICB0eXBlbmFtZSAgUDI6OlRfbnVtdHlwZSA+OjpUX3Byb21vdGUgID46OlRfc3VtdHlw
ZSAgIFRfc3VtdHlwZTsKCiAgICBUX3N1bXR5cGUgc3VtID0gMDsKICAgIGludCBsZW5ndGggPSB2
ZWN0b3IxLl9iel9zdWdnZXN0TGVuZ3RoKCk7CgogICAgaWYgKHZlY3RvcjEuX2J6X2hhc0Zhc3RB
Y2Nlc3MoKSAmJiB2ZWN0b3IyLl9iel9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CiAgICAgICAgZm9y
IChpbnQgaT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgIHN1bSArPSB2ZWN0b3IxLl9i
el9mYXN0QWNjZXNzKGkpIAogICAgICAgICAgICAgICAgKiB2ZWN0b3IyLl9iel9mYXN0QWNjZXNz
KGkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgIHN1bSArPSB2ZWN0b3IxW2ldICogdmVjdG9yMltpXTsKICAgIH0KCiAg
ICByZXR1cm4gc3VtOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJv
bW90ZV90cmFpdDwgUF9udW10eXBlMSAsIFBfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1
bXR5cGUgCmRvdChjb25zdCBWZWN0b3I8UF9udW10eXBlMT4mIGEsIGNvbnN0IFZlY3RvcjxQX251
bXR5cGUyPiYgYikKewogICAgcmV0dXJuIF9iel9kb3QoYSwgYik7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlwZVRy
YWl0czwgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUgLCAKICAgIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPjo6VF9wcm9tb3RlICA+OjpU
X3N1bXR5cGUgCmRvdChfYnpfVmVjRXhwcjxQX2V4cHIxPiBleHByMSwgX2J6X1ZlY0V4cHI8UF9l
eHByMj4gZXhwcjIpCnsKICAgIHJldHVybiBfYnpfZG90KGV4cHIxLCBleHByMik7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9udW10eXBlMj4KaW5saW5lCnR5cGVuYW1lICBO
dW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUgLCAgUF9udW10eXBlMiA+OjpUX3Byb21vdGUgID46OlRfc3VtdHlwZSAK
ZG90KF9iel9WZWNFeHByPFBfZXhwcjE+IGV4cHIxLCBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4m
IHZlY3RvcjIpCnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjIsIGV4cHIxKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKdHlwZW5hbWUgIE51
bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgUF9udW10eXBlMSAsICB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID46OlRfcHJvbW90ZSAgPjo6VF9zdW10eXBlIApk
b3QoY29uc3QgVmVjdG9yPFBfbnVtdHlwZTE+JiB2ZWN0b3IxLCBfYnpfVmVjRXhwcjxQX2V4cHIy
PiBleHByMikKewogICAgcmV0dXJuIF9iel9kb3QodmVjdG9yMSwgZXhwcjIpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQp0eXBlbmFtZSAg
TnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBQX251bXR5cGUxICwg
IFBfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1bXR5cGUgCmRvdChjb25zdCBWZWN0b3I8
UF9udW10eXBlMT4mIHZlY3RvcjEsIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHZlY3Rv
cjIpCnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjEsIHZlY3RvcjIpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQp0eXBlbmFtZSAgTnVt
ZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBQX251bXR5cGUxICwgIFBf
bnVtdHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1bXR5cGUgCmRvdChjb25zdCBWZWN0b3JQaWNr
PFBfbnVtdHlwZTE+JiB2ZWN0b3IxLCBjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIHZlY3RvcjIp
CnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjEsIHZlY3RvcjIpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZQp0eXBlbmFtZSAgTnVtZXJp
Y1R5cGVUcmFpdHM8IHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBQX251bXR5cGUxICwgIFBfbnVt
dHlwZTIgPjo6VF9wcm9tb3RlICA+OjpUX3N1bXR5cGUgCmRvdChjb25zdCBWZWN0b3JQaWNrPFBf
bnVtdHlwZTE+JiB2ZWN0b3IxLCBjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB2ZWN0b3Iy
KQp7CiAgICByZXR1cm4gX2J6X2RvdCh2ZWN0b3IxLCB2ZWN0b3IyKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxLCBjbGFzcyBQX251bXR5cGUyPgppbmxpbmUKdHlwZW5hbWUgIE51bWVyaWNU
eXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZSAsICBQX251bXR5cGUyID46OlRfcHJvbW90ZSAgPjo6VF9zdW10eXBlIApkb3QoX2J6
X1ZlY0V4cHI8UF9leHByMT4gZXhwcjEsIGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHZl
Y3RvcjIpCnsKICAgIHJldHVybiBfYnpfZG90KGV4cHIxLCB2ZWN0b3IyKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKdHlwZW5hbWUgIE51bWVy
aWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgUF9udW10eXBlMSAsICB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID46OlRfcHJvbW90ZSAgPjo6VF9zdW10eXBlIApkb3Qo
Y29uc3QgVmVjdG9yUGljazxQX251bXR5cGUxPiYgdmVjdG9yMSwgX2J6X1ZlY0V4cHI8UF9leHBy
Mj4gZXhwcjIpCnsKICAgIHJldHVybiBfYnpfZG90KHZlY3RvcjEsIGV4cHIyKTsKfQoKfSAKCgoK
IyAzMiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2dsb2JzLmNj
IiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNub3Jt
LmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDTk9STV9DQwoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZQp0eXBl
bmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlw
ZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAgPjo6VF9mbG9hdHR5cGUgCl9i
el92ZWNfbm9ybShQX2V4cHIgdmVjdG9yKQp7CiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAg
CiAgICB0eXBlZGVmIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSBUX251bXR5cGU7CiAgICB0
eXBlZGVmIHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgVF9udW10eXBlID46OlRfc3VtdHlw
ZSAgICAgICAgICAgVF9zdW10eXBlOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgTnVtZXJpY1R5cGVU
cmFpdHM8IFRfc3VtdHlwZSA+OjpUX2Zsb2F0dHlwZSAgICAgICAgIFRfZmxvYXR0eXBlOwoKICAg
IFRfc3VtdHlwZSBzdW0gPSAwOwogICAgaW50IGxlbmd0aCA9IHZlY3Rvci5fYnpfc3VnZ2VzdExl
bmd0aCgpOwoKICAgIGlmICh2ZWN0b3IuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAg
ICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIFRf
bnVtdHlwZSB2YWx1ZSA9IHZlY3Rvci5fYnpfZmFzdEFjY2VzcyhpKTsKICAgICAgICAgICAgc3Vt
ICs9IHZhbHVlICogVF9zdW10eXBlKHZhbHVlKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsK
ICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICB7CiAgICAgICAg
ICAgIFRfbnVtdHlwZSB2YWx1ZSA9IHZlY3RvcihpKTsKICAgICAgICAgICAgc3VtICs9IHZhbHVl
ICogVF9zdW10eXBlKHZhbHVlKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIF9iel9zcXJ0
PFRfZmxvYXR0eXBlPjo6YXBwbHkoc3VtKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpp
bmxpbmUKdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCB0eXBlbmFtZSAgTnVtZXJpY1R5cGVU
cmFpdHM8IFBfbnVtdHlwZSA+OjpUX3N1bXR5cGUgID46OlRfZmxvYXR0eXBlICBub3JtKGNvbnN0
IFZlY3RvcjxQX251bXR5cGU+JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19ub3JtKHguX2J6X2Fz
VmVjRXhwcigpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZQp0eXBlbmFtZSAg
TnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUg
IFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAgPjo6VF9mbG9hdHR5cGUgCm5vcm0oX2J6
X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAgICByZXR1cm4gX2J6X3ZlY19ub3JtKGV4cHIpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlw
ZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUgPjo6VF9zdW10
eXBlICA+OjpUX2Zsb2F0dHlwZSAKbm9ybShjb25zdCBWZWN0b3JQaWNrPFBfbnVtdHlwZT4mIHgp
CnsKICAgIHJldHVybiBfYnpfdmVjX25vcm0oeC5fYnpfYXNWZWNFeHByKCkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fZGltZW5zaW9ucz4KaW5saW5lCnR5cGVuYW1lICBO
dW1lcmljVHlwZVRyYWl0czwgdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX251bXR5cGUg
Pjo6VF9zdW10eXBlICA+OjpUX2Zsb2F0dHlwZSAKbm9ybShjb25zdCBUaW55VmVjdG9yPFBfbnVt
dHlwZSwgTl9kaW1lbnNpb25zPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbm9ybSh4Ll9iel9h
c1ZlY0V4cHIoKSk7Cn0KCn0gCgoKCiMgMzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei92ZWNnbG9icy5jYyIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2luY2x1ZGUvYmxpdHovdmVjbm9ybTEuY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2Rl
ZmluZSBCWl9WRUNOT1JNMV9DQwoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcj4KaW5saW5lCnR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgdHlwZW5h
bWUgIFBfZXhwcjo6VF9udW10eXBlID46OlRfc3VtdHlwZSAKX2J6X3ZlY19ub3JtMShQX2V4cHIg
dmVjdG9yKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZSBUX251bXR5
cGU7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgVF9udW10eXBlID46
OlRfc3VtdHlwZSAgICAgICAgICAgVF9zdW10eXBlOwoKICAgIFRfc3VtdHlwZSBzdW0gPSAwOwog
ICAgaW50IGxlbmd0aCA9IHZlY3Rvci5fYnpfc3VnZ2VzdExlbmd0aCgpOwoKICAgIGlmICh2ZWN0
b3IuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBs
ZW5ndGg7ICsraSkKICAgICAgICAgICAgc3VtICs9IF9iel9hYnM8VF9udW10eXBlPjo6YXBwbHko
dmVjdG9yLl9iel9mYXN0QWNjZXNzKGkpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciAo
aW50IGk9MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICBzdW0gKz0gX2J6X2FiczxUX251
bXR5cGU+OjphcHBseSh2ZWN0b3IoaSkpOwogICAgfQoKICAgIHJldHVybiBzdW07Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlPgp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFBfbnVt
dHlwZSA+OjpUX3N1bXR5cGUgIG5vcm0xKGNvbnN0IFZlY3RvcjxQX251bXR5cGU+JiB4KQp7CiAg
ICByZXR1cm4gX2J6X3ZlY19ub3JtMSh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByPgp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IHR5cGVuYW1lICBQX2V4
cHI6OlRfbnVtdHlwZSA+OjpUX3N1bXR5cGUgIG5vcm0xKF9iel9WZWNFeHByPFBfZXhwcj4gZXhw
cikKewogICAgcmV0dXJuIF9iel92ZWNfbm9ybTEoZXhwcik7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgp0eXBlbmFtZSAgTnVtZXJpY1R5cGVUcmFpdHM8IFBfbnVtdHlwZSA+OjpUX3N1
bXR5cGUgIG5vcm0xKGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJu
IF9iel92ZWNfbm9ybTEoeC5fYnpfYXNWZWNFeHByKCkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZSwgaW50IE5fZGltZW5zaW9ucz4KdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQ
X251bXR5cGUgPjo6VF9zdW10eXBlICBub3JtMShjb25zdCBUaW55VmVjdG9yPFBfbnVtdHlwZSwg
Tl9kaW1lbnNpb25zPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfbm9ybTEoeC5fYnpfYXNWZWNF
eHByKCkpOwp9CgoKfSAKCgoKIyAzNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L3ZlY2dsb2JzLmNjIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei92ZWNhbnkuY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2RlZmluZSBC
Wl9WRUNBTllfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByPgppbmxpbmUgYm9vbCAgX2J6X3ZlY19hbnkoUF9leHByIHZlY3RvcikKewogICAgaW50IGxl
bmd0aCA9IHZlY3Rvci5fYnpfc3VnZ2VzdExlbmd0aCgpOwoKICAgIGlmICh2ZWN0b3IuX2J6X2hh
c0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGg7ICsr
aSkKICAgICAgICAgICAgaWYgKHZlY3Rvci5fYnpfZmFzdEFjY2VzcyhpKSkKICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlIDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciAoaW50IGk9MDsg
aSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICBpZiAodmVjdG9yW2ldKQogICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWUgOwogICAgfQoKICAgIHJldHVybiBmYWxzZSA7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZT4KaW5saW5lIGJvb2wgIGFueShjb25zdCBWZWN0b3I8UF9udW10eXBlPiYg
eCkKewogICAgcmV0dXJuIF9iel92ZWNfYW55KHguX2J6X2FzVmVjRXhwcigpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgUF9leHByPgppbmxpbmUgYm9vbCAgYW55KF9iel9WZWNFeHByPFBfZXhwcj4gZXhw
cikKewogICAgcmV0dXJuIF9iel92ZWNfYW55KGV4cHIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBib29sICBhbnkoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7
CiAgICByZXR1cm4gX2J6X3ZlY19hbnkoeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUsIGludCBOX2RpbWVuc2lvbnM+CmlubGluZSBib29sICBhbnkoY29uc3Qg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fZGltZW5zaW9ucz4mIHgpCnsKICAgIHJldHVybiBfYnpf
dmVjX2FueSh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCn0gCgoKCiMgMzUgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNnbG9icy5jYyIgMgoKIyAxICIvdWZzL25ld21h
bi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjYWxsLmNjIiAxCiAKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDQUxMX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIGJvb2wgIF9iel92ZWNfYWxsKFBfZXhwciB2
ZWN0b3IpCnsKICAgIGludCBsZW5ndGggPSB2ZWN0b3IuX2J6X3N1Z2dlc3RMZW5ndGgoKTsKCiAg
ICBpZiAodmVjdG9yLl9iel9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CiAgICAgICAgZm9yIChpbnQg
aT0wOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgIGlmICghdmVjdG9yLl9iel9mYXN0QWNj
ZXNzKGkpKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlIDsKICAgIH0KICAgIGVsc2Ugewog
ICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aDsgKytpKQogICAgICAgICAgICBpZiAoIXZl
Y3RvcltpXSkKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZSA7CiAgICB9CgogICAgcmV0dXJu
IHRydWUgOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBib29sICBhbGwoY29u
c3QgVmVjdG9yPFBfbnVtdHlwZT4mIHgpCnsKICAgIHJldHVybiBfYnpfdmVjX2FsbCh4Ll9iel9h
c1ZlY0V4cHIoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIGJvb2wgIGFsbChf
YnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIHJldHVybiBfYnpfdmVjX2FsbChleHByKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgYm9vbCAgYWxsKGNvbnN0IFZlY3Rv
clBpY2s8UF9udW10eXBlPiYgeCkKewogICAgcmV0dXJuIF9iel92ZWNfYWxsKHguX2J6X2FzVmVj
RXhwcigpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9kaW1lbnNpb25zPgpp
bmxpbmUgYm9vbCAgYWxsKGNvbnN0IFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2RpbWVuc2lvbnM+
JiB4KQp7CiAgICByZXR1cm4gX2J6X3ZlY19hbGwoeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgp9IAoK
CgojIDM2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMu
Y2MiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2Nv
dW50LmNjIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDQ09VTlRfQ0MKCgoK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgaW50
IF9iel92ZWNfY291bnQoUF9leHByIHZlY3RvcikKewogICAgaW50IGxlbmd0aCA9IHZlY3Rvci5f
Ynpfc3VnZ2VzdExlbmd0aCgpOwogICAgaW50IGNvdW50ID0gMDsKCiAgICBpZiAodmVjdG9yLl9i
el9oYXNGYXN0QWNjZXNzKCkpCiAgICB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3Ro
OyArK2kpCiAgICAgICAgICAgIGlmICh2ZWN0b3IuX2J6X2Zhc3RBY2Nlc3MoaSkpCiAgICAgICAg
ICAgICAgICArK2NvdW50OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBp
IDwgbGVuZ3RoOyArK2kpCiAgICAgICAgICAgIGlmICh2ZWN0b3JbaV0pCiAgICAgICAgICAgICAg
ICArK2NvdW50OwogICAgfQoKICAgIHJldHVybiBjb3VudDsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlPgppbmxpbmUgaW50IGNvdW50KGNvbnN0IFZlY3RvcjxQX251bXR5cGU+JiB4KQp7CiAg
ICByZXR1cm4gX2J6X3ZlY19jb3VudCh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcj4KaW5saW5lIGludCBjb3VudChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsK
ICAgIHJldHVybiBfYnpfdmVjX2NvdW50KGV4cHIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGU+CmlubGluZSBpbnQgY291bnQoY29uc3QgVmVjdG9yUGljazxQX251bXR5cGU+JiB4KQp7CiAg
ICByZXR1cm4gX2J6X3ZlY19jb3VudCh4Ll9iel9hc1ZlY0V4cHIoKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fZGltZW5zaW9ucz4KaW5saW5lIGludCBjb3VudChjb25zdCBU
aW55VmVjdG9yPFBfbnVtdHlwZSwgTl9kaW1lbnNpb25zPiYgeCkKewogICAgcmV0dXJuIF9iel92
ZWNfY291bnQoeC5fYnpfYXNWZWNFeHByKCkpOwp9Cgp9IAoKCgojIDM3ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjZ2xvYnMuY2MiIDIKCgoKIyA2OCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY2dsb2JzLmgiIDIKCgoKIyA0OTcg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuaCIgMgoKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjdG9yLmNjIiAxCiAK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfVkVDVE9SX0NDCgoKCgoKCgoKCm5hbWVz
cGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+ClZlY3RvcjxQX251bXR5
cGU+IFZlY3RvcjxQX251bXR5cGU+Ojpjb3B5KCkgY29uc3QKewogICAgVmVjdG9yPFBfbnVtdHlw
ZT4gbmV3Q29weShsZW5ndGhfKTsKCiAgICBpZiAoc3RyaWRlXyA9PSAxKQogICAgewogICAgICAg
IG1lbWNweShuZXdDb3B5LmRhdGEoKSwgZGF0YSgpLCBsZW5ndGhfICogc2l6ZW9mKFBfbnVtdHlw
ZSkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsg
KytpKQogICAgICAgIHsKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgbmV3Q29weShpKSA9ICgqdGhpcylbaV07CiAgICAgICAgfQogICAgfQoKICAg
IHJldHVybiBuZXdDb3B5Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CnZvaWQgVmVjdG9y
PFBfbnVtdHlwZT46Om1ha2VVbmlxdWUoKQp7CiAgICBpZiAoKHN0cmlkZV8gIT0gMSkgfHwgKG51
bVJlZmVyZW5jZXMoKSA+IDEpKQogICAgewogICAgICAgIFZlY3RvcjxQX251bXR5cGU+IHRtcCA9
IGNvcHkoKTsKICAgICAgICByZWZlcmVuY2UodG1wKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgp2b2lkIFZlY3RvcjxQX251bXR5cGU+OjpyZWZlcmVuY2UoVmVjdG9yPFBfbnVt
dHlwZT4mIHgpCnsKICAgIE1lbW9yeUJsb2NrUmVmZXJlbmNlPFBfbnVtdHlwZT46OmNoYW5nZUJs
b2NrKHgsIDApOwogICAgbGVuZ3RoXyA9IHgubGVuZ3RoXzsKICAgIHN0cmlkZV8gPSB4LnN0cmlk
ZV87Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4Kdm9pZCBWZWN0b3I8UF9udW10eXBlPjo6
cmVzaXplKGludCBsZW5ndGgpCnsKICAgIGlmIChsZW5ndGggIT0gbGVuZ3RoXykKICAgIHsKICAg
ICAgICBNZW1vcnlCbG9ja1JlZmVyZW5jZTxQX251bXR5cGU+OjpuZXdCbG9jayhsZW5ndGgpOwog
ICAgICAgIGxlbmd0aF8gPSBsZW5ndGg7CiAgICAgICAgc3RyaWRlXyA9IDE7CiAgICB9Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4Kdm9pZCBWZWN0b3I8UF9udW10eXBlPjo6cmVzaXplQW5k
UHJlc2VydmUoaW50IG5ld0xlbmd0aCkKewogICAgVmVjdG9yPFBfbnVtdHlwZT4gbmV3VmVjdG9y
KG5ld0xlbmd0aCk7CgogICAgaWYgKG5ld0xlbmd0aCA+IGxlbmd0aF8pCiAgICAgICAgbmV3VmVj
dG9yKFJhbmdlKDAsbGVuZ3RoXy0xKSkgPSAoKnRoaXMpOwogICAgZWxzZSAKICAgICAgICBuZXdW
ZWN0b3IoUmFuZ2UoMCxuZXdMZW5ndGgtMSkpID0gKCp0aGlzKTsKCiAgICByZWZlcmVuY2UobmV3
VmVjdG9yKTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfZXhwciwgY2xhc3MgUF91cGRhdGVyPgppbmxpbmUKdm9pZCBWZWN0b3I8UF9udW10eXBlPjo6
X2J6X2Fzc2lnbihQX2V4cHIgZXhwciwgUF91cGRhdGVyKQp7CiAgICAgOwoKICAgICAKICAgICAK
ICAgICAKICAgIGlmICgoc3RyaWRlXyA9PSAxKSAmJiAoZXhwci5fYnpfaGFzRmFzdEFjY2Vzcygp
KSkKICAgIHsKCiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKQogICAgICAg
ICAgICBQX3VwZGF0ZXI6OnVwZGF0ZShkYXRhX1tpXSwgZXhwci5fYnpfZmFzdEFjY2VzcyhpKSk7
CiMgMTQ5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjdG9yLmNj
IgoKICAgIH0KICAgIGVsc2UgewogICAgICAgICAKICAgICAgICAgCiAgICAgICAgZm9yIChpbnQg
aT0wOyBpIDwgbGVuZ3RoXzsgKytpKQogICAgICAgICAgICBQX3VwZGF0ZXI6OnVwZGF0ZSgoKnRo
aXMpW2ldLCBleHByW2ldKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVt
dHlwZT46Om9wZXJhdG9yPShfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgICA7CgogICAg
IAogICAgIAogICAgIAogICAgaWYgKChzdHJpZGVfID09IDEpICYmIChleHByLl9iel9oYXNGYXN0
QWNjZXNzKCkpKQogICAgewoKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGhfOyArK2kp
CiAgICAgICAgICAgIGRhdGFfW2ldID0gKFBfbnVtdHlwZSlleHByLl9iel9mYXN0QWNjZXNzKGkp
OwojIDIwMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3Rvci5j
YyIKCiAgICB9CiAgICBlbHNlIHsKICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGZvciAoaW50
IGk9MDsgaSA8IGxlbmd0aF87ICsraSkKICAgICAgICAgICAgKCp0aGlzKVtpXSA9IChQX251bXR5
cGUpZXhwcltpXTsKICAgIH0KICAgIHJldHVybiAqdGhpczsKfQoKIyAyNTYgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoKIyAyOTAgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoKI2RlZmluZSBCWl9W
RUNUT1JfQVNTSUdOKG9wKSB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9w
ZXJhdG9yIG9wIChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIHsgQlpQUkVDT05ESVRJT04oZXhw
ci5sZW5ndGgobGVuZ3RoXykgPT0gbGVuZ3RoXyk7IGlmICgoc3RyaWRlXyA9PSAxKSAmJiAoZXhw
ci5fYnpfaGFzRmFzdEFjY2VzcygpKSkgeyBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGhfOyArK2kp
IGRhdGFfW2ldIG9wIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9
MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSBvcCBleHByW2ldOyB9IHJldHVybiAqdGhp
czsgfSAgICAgICAgICAgICAgICAgCiMgMzA5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdmVjdG9yLmNjIgoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10
eXBlPjo6IG9wZXJhdG9yICArPSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAo
KHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQg
aT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgKz0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3Mo
aSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAg
Kz0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+
IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8
UF9udW10eXBlPjo6IG9wZXJhdG9yICAtPSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAg
OyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9y
IChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgLT0gIGV4cHIuX2J6X2Zhc3RB
Y2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlz
KVtpXSAgLT0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBW
ZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAqPSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhw
cikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkp
IHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgKj0gIGV4cHIuX2J6
X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkg
KCp0aGlzKVtpXSAgKj0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5
cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAvPSAgKF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nl
c3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAgLz0gIGV4
cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxlbmd0aF87
ICsraSkgKCp0aGlzKVtpXSAgLz0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQ
X251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAlPSAgKF9iel9WZWNFeHBy
PFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6X2hhc0Zh
c3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRhX1tpXSAg
JT0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsgaSA8IGxl
bmd0aF87ICsraSkgKCp0aGlzKVtpXSAgJT0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZl
Y3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICBePSAgKF9iel9W
ZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4cHIuX2J6
X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSBkYXRh
X1tpXSAgXj0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50IGk9MDsg
aSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAgXj0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlz
OyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhwcj4gaW5s
aW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9yICAmPSAg
KF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkgJiYgKGV4
cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytp
KSBkYXRhX1tpXSAgJj0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZvciAoaW50
IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAgJj0gIGV4cHJbaV07IH0gcmV0dXJu
ICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfZXhw
cj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9wZXJhdG9y
ICB8PSAgKF9iel9WZWNFeHByPFBfZXhwcj4gZXhwcikgeyAgOyBpZiAoKHN0cmlkZV8gPT0gMSkg
JiYgKGV4cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkpIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3Ro
XzsgKytpKSBkYXRhX1tpXSAgfD0gIGV4cHIuX2J6X2Zhc3RBY2Nlc3MoaSk7IH0gZWxzZSB7IGZv
ciAoaW50IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgKCp0aGlzKVtpXSAgfD0gIGV4cHJbaV07IH0g
cmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6IG9w
ZXJhdG9yICA+Pj0gIChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIHsgIDsgaWYgKChzdHJpZGVf
ID09IDEpICYmIChleHByLl9iel9oYXNGYXN0QWNjZXNzKCkpKSB7IGZvciAoaW50IGk9MDsgaSA8
IGxlbmd0aF87ICsraSkgZGF0YV9baV0gID4+PSAgZXhwci5fYnpfZmFzdEFjY2VzcyhpKTsgfSBl
bHNlIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSAoKnRoaXMpW2ldICA+Pj0gIGV4
cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBs
YXRlPGNsYXNzIFBfZXhwcj4gaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10
eXBlPjo6IG9wZXJhdG9yICA8PD0gIChfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIHsgIDsgaWYg
KChzdHJpZGVfID09IDEpICYmIChleHByLl9iel9oYXNGYXN0QWNjZXNzKCkpKSB7IGZvciAoaW50
IGk9MDsgaSA8IGxlbmd0aF87ICsraSkgZGF0YV9baV0gIDw8PSAgZXhwci5fYnpfZmFzdEFjY2Vz
cyhpKTsgfSBlbHNlIHsgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSAoKnRoaXMpW2ld
ICA8PD0gIGV4cHJbaV07IH0gcmV0dXJuICp0aGlzOyB9IAoKIyA0MDQgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoKIAoKCgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46
OmluaXRpYWxpemUoUF9udW10eXBlIHgpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFu
dDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRf
ZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4K
aW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IrPShQ
X251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4g
VF9leHByOwogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3ItPShQX251bXR5cGUgeCkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAg
KCp0aGlzKSAtPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+
JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IqPShQX251bXR5cGUgeCkKewogICAgdHlwZWRl
ZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAqPSBf
YnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9u
dW10eXBlPjo6b3BlcmF0b3IvPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3Bl
cmF0b3IlPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBf
bnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAlPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhw
cih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5s
aW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3JePShQX251
bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9l
eHByOwogICAgKCp0aGlzKSBePSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQ
X251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3ImPShQX251bXR5cGUgeCkKewog
ICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0
aGlzKSAmPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7
Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBW
ZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3J8PShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBf
YnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSB8PSBfYnpf
VmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10
eXBlPjo6b3BlcmF0b3I+Pj0oaW50IHgpCnsKICAgIHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFu
dDxpbnQ+IFRfZXhwcjsKICAgICgqdGhpcykgPj49IF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHBy
KHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxp
bmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvcjw8PShpbnQg
eCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwog
ICAgKCp0aGlzKSA8PD0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJu
ICp0aGlzOwp9CgogCgoKCiAKIAogCiMgNTE2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdmVjdG9yLmNjIgoKCiAKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgClZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAg
ICAoKnRoaXMpID0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5i
ZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mClZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcis9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewog
ICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBlMj4gPih4
LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+
IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYKVmVj
dG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yLT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7
CiAgICAoKnRoaXMpIC09IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5cGUyPiA+
KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JgpW
ZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IqPShjb25zdCBWZWN0b3I8UF9udW10eXBlMj4mIHgp
CnsKICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVtdHlwZTI+
ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4m
ClZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvci89KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYg
eCkKewogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9udW10eXBl
Mj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBl
PiYKVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yJT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+
JiB4KQp7CiAgICAoKnRoaXMpICU9IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQX251bXR5
cGUyPiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5
cGU+JgpWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3JePShjb25zdCBWZWN0b3I8UF9udW10eXBl
Mj4mIHgpCnsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRlckNvbnN0PFBfbnVt
dHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVjdG9yPFBfbnVt
dHlwZT4mClZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvciY9KGNvbnN0IFZlY3RvcjxQX251bXR5
cGUyPiYgeCkKewogICAgKCp0aGlzKSAmPSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29uc3Q8UF9u
dW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9u
dW10eXBlPiYKVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yfD0oY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIHw9IF9iel9WZWNFeHByPFZlY3Rvckl0ZXJDb25zdDxQ
X251bXR5cGUyPiA+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQ
X251bXR5cGU+JgpWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3I8PD0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIDw8PSBfYnpfVmVjRXhwcjxWZWN0b3JJdGVyQ29u
c3Q8UF9udW10eXBlMj4gPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0
b3I8UF9udW10eXBlPiYKVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yPj49KGNvbnN0IFZlY3Rv
cjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSA+Pj0gX2J6X1ZlY0V4cHI8VmVjdG9ySXRl
ckNvbnN0PFBfbnVtdHlwZTI+ID4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoK
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVj
dG9yPFBfbnVtdHlwZT46Om9wZXJhdG9yPShSYW5nZSByKQp7CiAgICAoKnRoaXMpID0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJh
dG9yKz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3ItPShSYW5nZSByKQp7CiAg
ICAoKnRoaXMpIC09IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcio9KFJhbmdlIHIpCnsKICAgICgqdGhpcykgKj0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJh
dG9yLz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IlPShSYW5nZSByKQp7CiAg
ICAoKnRoaXMpICU9IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcl49KFJhbmdlIHIpCnsKICAgICgqdGhpcykgXj0gX2J6X1Zl
Y0V4cHI8UmFuZ2U+KHIpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGU+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46Om9wZXJh
dG9yJj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAmPSBfYnpfVmVjRXhwcjxSYW5nZT4ocik7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KaW5saW5lIFZlY3Rv
cjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3J8PShSYW5nZSByKQp7CiAg
ICAoKnRoaXMpIHw9IF9iel9WZWNFeHByPFJhbmdlPihyKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3Rv
cjxQX251bXR5cGU+OjpvcGVyYXRvcj4+PShSYW5nZSByKQp7CiAgICAoKnRoaXMpID4+PSBfYnpf
VmVjRXhwcjxSYW5nZT4ocik7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3Bl
cmF0b3I8PD0oUmFuZ2UgcikKewogICAgKCp0aGlzKSA8PD0gX2J6X1ZlY0V4cHI8UmFuZ2U+KHIp
OwogICAgcmV0dXJuICp0aGlzOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8
UF9udW10eXBlPjo6b3BlcmF0b3I9KGNvbnN0IAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
eCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsK
ICAgICgqdGhpcykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0
b3IrPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBW
ZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRfZXhwcjsKICAgICgqdGhpcykgKz0gX2J6
X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9CgoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVmVj
dG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvci09KGNvbnN0CiAgICBW
ZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICB0eXBlZGVmIFZlY3RvclBpY2tJdGVyQ29u
c3Q8UF9udW10eXBlMj4gVF9leHByOwogICAgKCp0aGlzKSAtPSBfYnpfVmVjRXhwcjxUX2V4cHI+
KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5cGU+JiBW
ZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3IqPShjb25zdAogICAgVmVjdG9yUGljazxQX251bXR5
cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlwZTI+IFRf
ZXhwcjsKICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkpOwogICAg
cmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVtdHlwZT46
Om9wZXJhdG9yLz0oY29uc3QKICAgIFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsKICAgIHR5
cGVkZWYgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiBUX2V4cHI7CiAgICAoKnRoaXMp
IC89IF9iel9WZWNFeHByPFRfZXhwcj4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxp
bmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvciU9KGNvbnN0
CiAgICBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICB0eXBlZGVmIFZlY3RvclBpY2tJ
dGVyQ29uc3Q8UF9udW10eXBlMj4gVF9leHByOwogICAgKCp0aGlzKSAlPSBfYnpfVmVjRXhwcjxU
X2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZT4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFZlY3RvcjxQX251bXR5
cGU+JiBWZWN0b3I8UF9udW10eXBlPjo6b3BlcmF0b3JePShjb25zdAogICAgVmVjdG9yUGljazxQ
X251bXR5cGUyPiYgeCkKewogICAgdHlwZWRlZiBWZWN0b3JQaWNrSXRlckNvbnN0PFBfbnVtdHlw
ZTI+IFRfZXhwcjsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8VF9leHByPih4LmJlZ2luKCkp
OwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBWZWN0b3I8UF9udW10eXBlPiYgVmVjdG9yPFBfbnVt
dHlwZT46Om9wZXJhdG9yJj0oY29uc3QKICAgIFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsK
ICAgIHR5cGVkZWYgVmVjdG9yUGlja0l0ZXJDb25zdDxQX251bXR5cGUyPiBUX2V4cHI7CiAgICAo
KnRoaXMpICY9IF9iel9WZWNFeHByPFRfZXhwcj4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhp
czsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUgVmVjdG9yPFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvcnw9
KGNvbnN0CiAgICBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICB0eXBlZGVmIFZlY3Rv
clBpY2tJdGVyQ29uc3Q8UF9udW10eXBlMj4gVF9leHByOwogICAgKCp0aGlzKSB8PSBfYnpfVmVj
RXhwcjxUX2V4cHI+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCiAKCgoKdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlPiB0ZW1wbGF0ZTxjbGFzcyBQX2Rpc3RyaWJ1dGlvbj4KVmVjdG9y
PFBfbnVtdHlwZT4mIFZlY3RvcjxQX251bXR5cGU+OjpvcGVyYXRvcj0oUmFuZG9tPFBfZGlzdHJp
YnV0aW9uPiYgcmFuZCkKewogICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoXzsgKytpKSAKICAg
ICAgICAoKnRoaXMpW2ldID0gcmFuZC5yYW5kb20oKTsKICAgIHJldHVybiAqdGhpczsKfQoKIyA4
NjEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWN0b3IuY2MiCgoK
fSAKCgojIDQ5OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3ZlY3Rv
ci5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei92ZWNp
by5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1ZFQ0lPX0NDCgoKCgoK
bmFtZXNwYWNlICBibGl0eiAgeyAKCiAKIAogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+Cm9z
dHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3MsIGNvbnN0IFZlY3RvcjxQX251bXR5cGU+JiB4
KQp7CiAgICBvcyA8PCAiWyAiOwogICAgZm9yIChpbnQgaT0wOyBpIDwgeC5sZW5ndGgoKTsgKytp
KQogICAgewogICAgICAgIG9zIDw8IHNldHcoMTApIDw8IHhbaV07CiAgICAgICAgaWYgKCEoKGkr
MSklNykpCiAgICAgICAgICAgIG9zIDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KICAgIG9zIDw8ICIg
XSI7CiAgICByZXR1cm4gb3M7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4Kb3N0cmVhbSYgb3Bl
cmF0b3I8PChvc3RyZWFtJiBvcywgX2J6X1ZlY0V4cHI8UF9leHByPiBleHByKQp7CiAgICBWZWN0
b3I8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4gcmVzdWx0KGV4cHIpOwogICAgb3MgPDwg
cmVzdWx0OwogICAgcmV0dXJuIG9zOwp9Cgp9IAoKCiMgNDk5ICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovdmVjdG9yLmgiIDIKCgoKIyA0NDUgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55dmVjLmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWMuY2MiIDEKCiNkZWZpbmUgQlpfVElO
WVZFQ19DQwoKCgoKCgoKCgoKCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L21ldGEvdmVjYXNzaWduLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX01FVEFfVkVDQVNTSUdOX0gKCm5hbWVzcGFjZSAgYmxp
dHogIHsgCgp0ZW1wbGF0ZTxpbnQgTiwgaW50IEk+IApjbGFzcyBfYnpfbWV0YV92ZWNBc3NpZ24g
ewpwdWJsaWM6CiAgICBlbnVtIHsgbG9vcEZsYWcgPSAoSSA8IE4tMSkgPyAxIDogMCB9OwoKICAg
IHRlbXBsYXRlPGNsYXNzIFRfdmVjdG9yLCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlcj4K
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBmYXN0QXNzaWduKFRfdmVjdG9yJiB2ZWMsIFRfZXhwciBl
eHByLCBUX3VwZGF0ZXIgdSkKICAgIHsKICAgICAgICB1LnVwZGF0ZSh2ZWNbSV0sIGV4cHIuX2J6
X2Zhc3RBY2Nlc3MoSSkpOwogICAgICAgIF9iel9tZXRhX3ZlY0Fzc2lnbjxOICogbG9vcEZsYWcs
IChJKzEpICogbG9vcEZsYWc+CiAgICAgICAgICAgOjpmYXN0QXNzaWduKHZlYyxleHByLHUpOwog
ICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfdmVjdG9yLCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRf
dXBkYXRlcj4KICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhc3NpZ24oVF92ZWN0b3ImIHZlYywgVF9l
eHByIGV4cHIsIFRfdXBkYXRlciB1KQogICAgewogICAgICAgIHUudXBkYXRlKHZlY1tJXSwgZXhw
cltJXSk7CiAgICAgICAgX2J6X21ldGFfdmVjQXNzaWduPE4gKiBsb29wRmxhZywgKEkrMSkgKiBs
b29wRmxhZz4KICAgICAgICAgICA6OmFzc2lnbih2ZWMsZXhwcix1KTsKICAgIH0KCiAgICB0ZW1w
bGF0ZTxjbGFzcyBUX3ZlY3RvciwgY2xhc3MgVF9udW10eXBlLCBjbGFzcyBUX3VwZGF0ZXI+CiAg
ICBzdGF0aWMgaW5saW5lIHZvaWQgYXNzaWduV2l0aEFyZ3MoVF92ZWN0b3ImIHZlYywgVF91cGRh
dGVyIHUsCiAgICAgICAgVF9udW10eXBlIHgwLCBUX251bXR5cGUgeDE9MCwgVF9udW10eXBlIHgy
PTAsIFRfbnVtdHlwZSB4Mz0wLAogICAgICAgIFRfbnVtdHlwZSB4ND0wLCBUX251bXR5cGUgeDU9
MCwgVF9udW10eXBlIHg2PTAsIFRfbnVtdHlwZSB4Nz0wLAogICAgICAgIFRfbnVtdHlwZSB4OD0w
LCBUX251bXR5cGUgeDk9MCkKICAgIHsKICAgICAgICB1LnVwZGF0ZSh2ZWNbSV0sIHgwKTsKICAg
ICAgICBfYnpfbWV0YV92ZWNBc3NpZ248TiAqIGxvb3BGbGFnLCAoSSsxKSAqIGxvb3BGbGFnPgog
ICAgICAgICAgICA6OmFzc2lnbldpdGhBcmdzKHZlYywgdSwgeDEsIHgyLCB4MywgeDQsIHg1LCB4
NiwgeDcsIHg4LCB4OSk7CiAgICB9CiAgICAgICAgCn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9t
ZXRhX3ZlY0Fzc2lnbjwwLDA+IHsKcHVibGljOgogICAgdGVtcGxhdGU8Y2xhc3MgVF92ZWN0b3Is
IGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGVyPgogICAgc3RhdGljIGlubGluZSB2b2lkIGZh
c3RBc3NpZ24oVF92ZWN0b3ImIHZlYywgVF9leHByIGV4cHIsIFRfdXBkYXRlciB1KQogICAgeyB9
CgogICAgdGVtcGxhdGU8Y2xhc3MgVF92ZWN0b3IsIGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRh
dGVyPgogICAgc3RhdGljIGlubGluZSB2b2lkIGFzc2lnbihUX3ZlY3RvciYgdmVjLCBUX2V4cHIg
ZXhwciwgVF91cGRhdGVyIHUpCiAgICB7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX3ZlY3Rvciwg
Y2xhc3MgVF9udW10eXBlLCBjbGFzcyBUX3VwZGF0ZXI+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQg
YXNzaWduV2l0aEFyZ3MoVF92ZWN0b3ImIHZlYywgVF91cGRhdGVyIHUsCiAgICAgICAgVF9udW10
eXBlIHgwLCBUX251bXR5cGUgeDE9MCwgVF9udW10eXBlIHgyPTAsIFRfbnVtdHlwZSB4Mz0wLAog
ICAgICAgIFRfbnVtdHlwZSB4ND0wLCBUX251bXR5cGUgeDU9MCwgVF9udW10eXBlIHg2PTAsIFRf
bnVtdHlwZSB4Nz0wLAogICAgICAgIFRfbnVtdHlwZSB4OD0wLCBUX251bXR5cGUgeDk9MCkKICAg
IHsKICAgIH0KfTsKCn0gCgoKIyAyMCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L3Rpbnl2ZWMuY2MiIDIKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xh
c3MgVF9udW10eXBlLCBpbnQgTl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFRfbnVtdHlwZSwg
Tl9sZW5ndGg+OjpUaW55VmVjdG9yKFRfbnVtdHlwZSBpbml0VmFsdWUpCnsKICAgIGZvciAoaW50
IGk9MDsgaSA8IE5fbGVuZ3RoOyArK2kpCiAgICAgICAgZGF0YV9baV0gPSBpbml0VmFsdWU7Cn0K
CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3Rv
cjxUX251bXR5cGUsIE5fbGVuZ3RoPjo6VGlueVZlY3Rvcihjb25zdCAKICAgIFRpbnlWZWN0b3I8
VF9udW10eXBlLCBOX2xlbmd0aD4mIHgpCnsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5fbGVuZ3Ro
OyArK2kpCiAgICAgICAgZGF0YV9baV0gPSB4LmRhdGFfW2ldOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9leHByLCBjbGFzcyBQX3Vw
ZGF0ZXI+CmlubGluZQp2b2lkIFRpbnlWZWN0b3I8VF9udW10eXBlLCBOX2xlbmd0aD46Ol9iel9h
c3NpZ24oUF9leHByIGV4cHIsIFBfdXBkYXRlciB1cCkKewogICAgIDsKCgoKCgogICAgaWYgKGV4
cHIuX2J6X2hhc0Zhc3RBY2Nlc3MoKSkKICAgIHsKICAgICAgICBfYnpfbWV0YV92ZWNBc3NpZ248
Tl9sZW5ndGgsIDA+OjpmYXN0QXNzaWduKCp0aGlzLCBleHByLCB1cCk7CiAgICB9CiAgICBlbHNl
IHsKICAgICAgICBfYnpfbWV0YV92ZWNBc3NpZ248Tl9sZW5ndGgsIDA+Ojphc3NpZ24oKnRoaXMs
IGV4cHIsIHVwKTsKICAgIH0KfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xl
bmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPjo6VGlueVZlY3RvcihfYnpfVmVjRXhwcjxQX2V4cHI+IGV4cHIpIAp7CiAgX2J6
X2Fzc2lnbihleHByLCBfYnpfdXBkYXRlPFBfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjo6VF9u
dW10eXBlPigpKTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0
aD4gdGVtcGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYgClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yPShfYnpf
VmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3VwZGF0ZTxQ
X251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcis9KF9iel9WZWNFeHByPFBfZXhw
cj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfcGx1c191cGRhdGU8UF9udW10eXBl
LCAKICAgICAgICB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8
Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3ItPShfYnpfVmVjRXhwcjxQX2V4
cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X21pbnVzX3VwZGF0ZTxQX251bXR5
cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJldHVybiAq
dGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRl
PGNsYXNzIFBfZXhwcj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yKj0oX2J6X1ZlY0V4cHI8UF9l
eHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4cHIsIF9iel9tdWx0aXBseV91cGRhdGU8UF9u
dW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+
JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvci89KF9iel9WZWNFeHBy
PFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfZGl2aWRlX3VwZGF0ZTxQ
X251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJl
dHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yJT0oX2J6X1ZlY0V4
cHI8UF9leHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4cHIsIF9iel9tb2RfdXBkYXRlPFBf
bnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+KCkpOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVt
cGxhdGU8Y2xhc3MgUF9leHByPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3Ro
PiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShfYnpfVmVjRXhw
cjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3hvcl91cGRhdGU8UF9u
dW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+
JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvciY9KF9iel9WZWNFeHBy
PFBfZXhwcj4gZXhwcikKewogICAgX2J6X2Fzc2lnbihleHByLCBfYnpfYml0YW5kX3VwZGF0ZTxQ
X251bXR5cGUsCiAgICAgICAgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPigpKTsKICAgIHJl
dHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yfD0oX2J6X1ZlY0V4
cHI8UF9leHByPiBleHByKQp7CiAgICBfYnpfYXNzaWduKGV4cHIsIF9iel9iaXRvcl91cGRhdGU8
UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5n
dGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcjw8PShfYnpfVmVj
RXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3NoaWZ0bF91cGRh
dGU8UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3Ro
PiB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9s
ZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj4+PShfYnpf
VmVjRXhwcjxQX2V4cHI+IGV4cHIpCnsKICAgIF9iel9hc3NpZ24oZXhwciwgX2J6X3NoaWZ0cl91
cGRhdGU8UF9udW10eXBlLAogICAgICAgIHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4oKSk7
CiAgICByZXR1cm4gKnRoaXM7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+IAppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZl
Y3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6aW5pdGlhbGl6ZShQX251bXR5cGUgeCkKewoKICAg
IHR5cGVkZWYgX2J6X1ZlY0V4cHJDb25zdGFudDxQX251bXR5cGU+IFRfZXhwcjsKICAgICgqdGhp
cykgPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CgoKCgoKCiAgICByZXR1cm4gKnRo
aXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPjo6b3BlcmF0b3IrPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNv
bnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSArPSBfYnpfVmVjRXhwcjxUX2V4
cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3Ro
PiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3ItPShQX251bXR5cGUg
eCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwog
ICAgKCp0aGlzKSAtPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPjo6b3BlcmF0b3IqPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhw
ckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAqPSBfYnpfVmVjRXhwcjxU
X2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IvPShQX251bXR5
cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHBy
OwogICAgKCp0aGlzKSAvPSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxp
bmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPjo6b3BlcmF0b3IlPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVj
RXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAlPSBfYnpfVmVjRXhw
cjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShQX251
bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9l
eHByOwogICAgKCp0aGlzKSBePSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgpp
bmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5
cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3ImPShQX251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpf
VmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gVF9leHByOwogICAgKCp0aGlzKSAmPSBfYnpfVmVj
RXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3J8PShQ
X251bXR5cGUgeCkKewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PFBfbnVtdHlwZT4g
VF9leHByOwogICAgKCp0aGlzKSB8PSBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcih4KSk7CiAg
ICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3Ro
PgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251
bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I8PD0oaW50IHgpCnsKICAgIHR5cGVkZWYgX2J6X1Zl
Y0V4cHJDb25zdGFudDxpbnQ+IFRfZXhwcjsKICAgICgqdGhpcykgPDw9IF9iel9WZWNFeHByPFRf
ZXhwcj4oVF9leHByKHgpKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9u
dW10eXBlLCBpbnQgTl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5n
dGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj4+PShpbnQgeCkK
ewogICAgdHlwZWRlZiBfYnpfVmVjRXhwckNvbnN0YW50PGludD4gVF9leHByOwogICAgKCp0aGlz
KSA+Pj0gX2J6X1ZlY0V4cHI8VF9leHByPihUX2V4cHIoeCkpOwogICAgcmV0dXJuICp0aGlzOwp9
CgogCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYK
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I9KGNvbnN0IAogICAgVGlu
eVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgPSBfYnpfVmVj
RXhwcjwgdHlwZW5hbWUgIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+
OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQ
X251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IrPShjb25zdAogICAgVGlueVZlY3RvcjxQX251
bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgKz0gX2J6X1ZlY0V4cHI8IHR5cGVu
YW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRl
cmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBf
bnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPjo6b3BlcmF0b3ItPShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xl
bmd0aD4mIHgpCnsKICAgICgqdGhpcykgLT0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAg
IFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVn
aW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50
IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQ
X251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3Bl
cmF0b3IqPShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsK
ICAgICgqdGhpcykgKj0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8
UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IvPShjb25z
dAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykg
Lz0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwg
Tl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7
Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFz
cyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IlPShjb25zdAogICAgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgJT0gX2J6X1ZlY0V4
cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpU
X2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRl
PGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUy
PgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251
bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5
cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgXj0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1l
IAogICAgICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0
b3I+KHguYmVnaW4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPjo6b3BlcmF0b3ImPShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0
aD4mIHgpCnsKICAgICgqdGhpcykgJj0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRp
bnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4o
KSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5f
bGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251
bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0
b3J8PShjb25zdAogICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAg
ICgqdGhpcykgfD0gX2J6X1ZlY0V4cHI8IHR5cGVuYW1lIAogICAgICAgIFRpbnlWZWN0b3I8UF9u
dW10eXBlMiwgTl9sZW5ndGg+OjpUX2NvbnN0SXRlcmF0b3I+KHguYmVnaW4oKSk7CiAgICByZXR1
cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1w
bGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I8PD0oY29uc3QK
ICAgIFRpbnlWZWN0b3I8UF9udW10eXBlMiwgTl9sZW5ndGg+JiB4KQp7CiAgICAoKnRoaXMpIDw8
PSBfYnpfVmVjRXhwcjwgdHlwZW5hbWUgCiAgICAgICAgVGlueVZlY3RvcjxQX251bXR5cGUyLCBO
X2xlbmd0aD46OlRfY29uc3RJdGVyYXRvcj4oeC5iZWdpbigpKTsKICAgIHJldHVybiAqdGhpczsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj4+PShjb25zdAogICAgVGlueVZl
Y3RvcjxQX251bXR5cGUyLCBOX2xlbmd0aD4mIHgpCnsKICAgICgqdGhpcykgPj49IF9iel9WZWNF
eHByPCB0eXBlbmFtZSAKICAgICAgICBUaW55VmVjdG9yPFBfbnVtdHlwZTIsIE5fbGVuZ3RoPjo6
VF9jb25zdEl0ZXJhdG9yPih4LmJlZ2luKCkpOwogICAgcmV0dXJuICp0aGlzOwp9CgogCgoKCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I9KGNvbnN0IFZlY3RvcjxQX251bXR5cGUy
PiYgeCkKewogICAgKCp0aGlzKSA9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlz
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xh
c3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yKz0oY29uc3QgVmVjdG9yPFBf
bnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICs9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0
dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yLT0oY29uc3Qg
VmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIC09IHguX2J6X2FzVmVjRXhwcigp
OwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xl
bmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10
eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9y
Kj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICo9IHguX2J6X2Fz
VmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUs
IGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0
b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46
Om9wZXJhdG9yLz0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIC89
IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQ
X251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5l
IFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBO
X2xlbmd0aD46Om9wZXJhdG9yJT0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAo
KnRoaXMpICU9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
Mj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9u
dW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yXj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4
KQp7CiAgICAoKnRoaXMpIF49IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlW
ZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yJj0oY29uc3QgVmVjdG9yPFBfbnVt
dHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICY9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yfD0oY29uc3QgVmVj
dG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIHw9IHguX2J6X2FzVmVjRXhwcigpOwog
ICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0
aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBl
LCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yPDw9
KGNvbnN0IFZlY3RvcjxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSA8PD0geC5fYnpfYXNW
ZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwg
aW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6
b3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpID4+
PSB4Ll9iel9hc1ZlY0V4cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKIAoKCgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gCmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlw
ZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcj0o
UmFuZ2UgcikKewogICAgKCp0aGlzKSA9IHIuX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lIFRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD46Om9wZXJhdG9yKz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSArPSByLl9iel9hc1ZlY0V4
cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVj
dG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvci09KFJhbmdlIHIpCnsKICAgICgqdGhp
cykgLT0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IqPShS
YW5nZSByKQp7CiAgICAoKnRoaXMpICo9IHIuX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lIFRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD46Om9wZXJhdG9yLz0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAvPSByLl9iel9hc1ZlY0V4
cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVj
dG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvciU9KFJhbmdlIHIpCnsKICAgICgqdGhp
cykgJT0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShS
YW5nZSByKQp7CiAgICAoKnRoaXMpIF49IHIuX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0
aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4KaW5saW5lIFRp
bnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xl
bmd0aD46Om9wZXJhdG9yJj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSAmPSByLl9iel9hc1ZlY0V4
cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQg
Tl9sZW5ndGg+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVj
dG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvcnw9KFJhbmdlIHIpCnsKICAgICgqdGhp
cykgfD0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUs
IE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3I8PD0o
UmFuZ2UgcikKewogICAgKCp0aGlzKSA8PD0gci5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4g
KnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppbmxpbmUg
VGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPjo6b3BlcmF0b3I+Pj0oUmFuZ2UgcikKewogICAgKCp0aGlzKSA+Pj0gci5fYnpfYXNW
ZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5n
dGg+OjpvcGVyYXRvcj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgKCp0
aGlzKSA9IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4K
aW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10
eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yKz0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYg
eCkKewogICAgKCp0aGlzKSArPSB4Ll9iel9hc1ZlY0V4cHIoKTsKICAgIHJldHVybiAqdGhpczsK
fQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZTI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55
VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRvci09KGNvbnN0IFZlY3RvclBpY2s8
UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgLT0geC5fYnpfYXNWZWNFeHByKCk7CiAgICBy
ZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5f
bGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3IqPShjb25z
dCBWZWN0b3JQaWNrPFBfbnVtdHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpICo9IHguX2J6X2FzVmVj
RXhwcigpOwogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGlu
dCBOX2xlbmd0aD4gdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8
UF9udW10eXBlLCBOX2xlbmd0aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9w
ZXJhdG9yLz0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAv
PSB4Ll9iel9hc1ZlY0V4cHIoKTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlLCBpbnQgTl9sZW5ndGg+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGlu
ZSBUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwg
Tl9sZW5ndGg+OjpvcGVyYXRvciU9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsK
ICAgICgqdGhpcykgJT0geC5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251
bXR5cGUyPgppbmxpbmUgVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPjo6b3BlcmF0b3JePShjb25zdCBWZWN0b3JQaWNrPFBfbnVt
dHlwZTI+JiB4KQp7CiAgICAoKnRoaXMpIF49IHguX2J6X2FzVmVjRXhwcigpOwogICAgcmV0dXJu
ICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX2xlbmd0aD4gdGVtcGxh
dGU8Y2xhc3MgUF9udW10eXBlMj4KaW5saW5lIFRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0
aD4mClRpbnlWZWN0b3I8UF9udW10eXBlLCBOX2xlbmd0aD46Om9wZXJhdG9yJj0oY29uc3QgVmVj
dG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAgKCp0aGlzKSAmPSB4Ll9iel9hc1ZlY0V4cHIo
KTsKICAgIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9s
ZW5ndGg+IHRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZTI+CmlubGluZSBUaW55VmVjdG9yPFBfbnVt
dHlwZSwgTl9sZW5ndGg+JgpUaW55VmVjdG9yPFBfbnVtdHlwZSwgTl9sZW5ndGg+OjpvcGVyYXRv
cnw9KGNvbnN0IFZlY3RvclBpY2s8UF9udW10eXBlMj4mIHgpCnsKICAgICgqdGhpcykgfD0geC5f
YnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fbGVuZ3RoPiB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUyPgppbmxpbmUgVGlu
eVZlY3RvcjxQX251bXR5cGUsIE5fbGVuZ3RoPiYKVGlueVZlY3RvcjxQX251bXR5cGUsIE5fbGVu
Z3RoPjo6b3BlcmF0b3I+Pj0oY29uc3QgVmVjdG9yUGljazxQX251bXR5cGUyPiYgeCkKewogICAg
KCp0aGlzKSA8PD0geC5fYnpfYXNWZWNFeHByKCk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCn0gCgoK
IyA0NDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei90aW55dmVjLmgi
IDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rpbnl2ZWNp
by5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1RJTllWRUNJT19DQwoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBO
X2xlbmd0aD4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgY29uc3QgVGlueVZlY3Rv
cjxQX251bXR5cGUsIE5fbGVuZ3RoPiYgeCkKewogICAgb3MgPDwgTl9sZW5ndGggPDwgIiBbICI7
CiAgICBmb3IgKGludCBpPTA7IGkgPCBOX2xlbmd0aDsgKytpKQogICAgewogICAgICAgIG9zIDw8
IHNldHcoMTApIDw8IHhbaV07CiAgICAgICAgaWYgKCEoKGkrMSklNykpCiAgICAgICAgICAgIG9z
IDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KICAgIG9zIDw8ICIgXSI7CiAgICByZXR1cm4gb3M7Cn0K
CiAKdGVtcGxhdGUgPHR5cGVuYW1lIFRfbnVtdHlwZSwgaW50IE5fbGVuZ3RoPgppc3RyZWFtJiBv
cGVyYXRvcj4+KGlzdHJlYW0mIGlzLCBUaW55VmVjdG9yPFRfbnVtdHlwZSwgTl9sZW5ndGg+JiB4
KQp7CiAgICBpbnQgbGVuZ3RoOwogICAgY2hhciBzZXA7CiAgICAgICAgICAgICAKICAgIGlzID4+
IGxlbmd0aDsKICAgIGlzID4+IHNlcDsKICAgICA7CgoKICAgICA7ICAgICAgICAgICAgICAgICAg
ICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTl9sZW5ndGg7ICsraSkKICAgIHsKICAgICAgICAg
OwogICAgICAgIGlzID4+IHgoaSk7CiAgICB9CiAgICBpcyA+PiBzZXA7CiAgICAgOwoKICAgIAog
ICAgcmV0dXJuIGlzOwp9Cgp9IAoKCiMgNDQ3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovdGlueXZlYy5oIiAyCgoKCgojIDY0ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei90cmF2ZXJzYWwuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKIAogCgoKCiNkZWZpbmUgQlpfVFJBVkVSU0FMX0gKCgoKCgoKCgoK
IyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3NldCIg
MSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9TRVQKCgoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3Ry
ZWUuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NH
SV9TVExfSU5URVJOQUxfVFJFRV9ICgogCgoKCgoKCgoKCgoKCgoKCgoKCgojIDEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDEg
MwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5U
RVJOQUxfQUxHT0JBU0VfSAoKCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4v
Li4vLi4vaW5jbHVkZS9nKystMy9zdGxfcGFpci5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfUEFJUl9ICgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CnN0cnVjdCBwYWlyIHsKICB0eXBlZGVmIF9UMSBmaXJz
dF90eXBlOwogIHR5cGVkZWYgX1QyIHNlY29uZF90eXBlOwoKICBfVDEgZmlyc3Q7CiAgX1QyIHNl
Y29uZDsKICBwYWlyKCkgOiBmaXJzdChfVDEoKSksIHNlY29uZChfVDIoKSkge30KICBwYWlyKGNv
bnN0IF9UMSYgX19hLCBjb25zdCBfVDImIF9fYikgOiBmaXJzdChfX2EpLCBzZWNvbmQoX19iKSB7
fQoKCiAgdGVtcGxhdGUgPGNsYXNzIF9VMSwgY2xhc3MgX1UyPgogIHBhaXIoY29uc3QgcGFpcjxf
VTEsIF9VMj4mIF9fcCkgOiBmaXJzdChfX3AuZmlyc3QpLCBzZWNvbmQoX19wLnNlY29uZCkge30K
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkK
eyAKICByZXR1cm4gX194LmZpcnN0ID09IF9feS5maXJzdCAmJiBfX3guc2Vjb25kID09IF9feS5z
ZWNvbmQ7IAp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1QxLCBjbGFzcyBfVDI+CmlubGluZSBib29sIG9w
ZXJhdG9yPChjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYg
X195KQp7IAogIHJldHVybiBfX3guZmlyc3QgPCBfX3kuZmlyc3QgfHwgCiAgICAgICAgICghKF9f
eS5maXJzdCA8IF9feC5maXJzdCkgJiYgX194LnNlY29uZCA8IF9feS5zZWNvbmQpOyAKfQoKdGVt
cGxhdGUgPGNsYXNzIF9UMSwgY2xhc3MgX1QyPgppbmxpbmUgcGFpcjxfVDEsIF9UMj4gbWFrZV9w
YWlyKGNvbnN0IF9UMSYgX194LCBjb25zdCBfVDImIF9feSkKewogIHJldHVybiBwYWlyPF9UMSwg
X1QyPihfX3gsIF9feSk7Cn0KCiAKCgoKIAogCiAKIyA0MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCiMgMSAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy90eXBlX3RyYWl0cy5o
IiAxIDMKIAoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19UWVBFX1RSQUlUU19ICgoKCgoKIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCnN0cnVjdCBfX3RydWVfdHlwZSB7Cn07CgpzdHJ1
Y3QgX19mYWxzZV90eXBlIHsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX3R5cGVf
dHJhaXRzIHsgCiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgIHRoaXNfZHVtbXlfbWVtYmVyX211
c3RfYmVfZmlyc3Q7CiAgICAgICAgICAgICAgICAgICAgCgoKCgoKICAgIAoKCgoKCgoKCiAKCiAg
IHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7
CiAgIHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0
b3I7CiAgIHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAg
IHR5cGVkZWYgX19mYWxzZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKCgogCiAKIAoKCgp0ZW1w
bGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxib29sPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAg
ICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8Y2hh
cj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBz
dHJ1Y3QgX190eXBlX3RyYWl0czxzaWduZWQgY2hhcj4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAg
aXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25l
ZCBjaGFyPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2Nv
bnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1l
bnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCgoKdGVtcGxh
dGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8d2NoYXJfdD4gewogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPHNo
b3J0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRf
b3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4g
IHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIHNob3J0PiB7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3Ry
dWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190
cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGlu
dD4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1
Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29w
ZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7
CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBz
dHJ1Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBpbnQ+IHsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAg
IGlzX1BPRF90eXBlOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZz4g
ewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0
b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3Rv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJh
dG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAg
IHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1
Y3QgX190eXBlX3RyYWl0czx1bnNpZ25lZCBsb25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlw
ZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBl
ICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5
cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBp
c19QT0RfdHlwZTsKfTsKCgoKdGVtcGxhdGU8PiAgc3RydWN0IF9fdHlwZV90cmFpdHM8bG9uZyBs
b25nPiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVsdF9jb25z
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5X2NvbnN0
cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2lnbm1lbnRf
b3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rv
cjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBsYXRlPD4g
IHN0cnVjdCBfX3R5cGVfdHJhaXRzPHVuc2lnbmVkIGxvbmcgbG9uZz4gewogICB0eXBlZGVmIF9f
dHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBsYXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJh
aXRzPGZsb2F0PiB7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVmYXVs
dF9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9jb3B5
X2NvbnN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Fzc2ln
bm1lbnRfb3BlcmF0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfZGVz
dHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBpc19QT0RfdHlwZTsKfTsKCnRlbXBs
YXRlPD4gIHN0cnVjdCBfX3R5cGVfdHJhaXRzPGRvdWJsZT4gewogICB0eXBlZGVmIF9fdHJ1ZV90
eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVl
X3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVf
dHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25tZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUg
ICAgaXNfUE9EX3R5cGU7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX190eXBlX3RyYWl0czxsb25n
IGRvdWJsZT4gewogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2RlZmF1bHRf
Y29uc3RydWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfY29weV9j
b25zdHJ1Y3RvcjsKICAgdHlwZWRlZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9hc3NpZ25t
ZW50X29wZXJhdG9yOwogICB0eXBlZGVmIF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2Rlc3Ry
dWN0b3I7CiAgIHR5cGVkZWYgX190cnVlX3R5cGUgICAgaXNfUE9EX3R5cGU7Cn07CgoKCnRlbXBs
YXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBfX3R5cGVfdHJhaXRzPF9UcCo+IHsKICAgdHlwZWRlZiBf
X3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yOwogICB0eXBlZGVm
IF9fdHJ1ZV90eXBlICAgIGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3I7CiAgIHR5cGVkZWYg
X190cnVlX3R5cGUgICAgaGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcjsKICAgdHlwZWRl
ZiBfX3RydWVfdHlwZSAgICBoYXNfdHJpdmlhbF9kZXN0cnVjdG9yOwogICB0eXBlZGVmIF9fdHJ1
ZV90eXBlICAgIGlzX1BPRF90eXBlOwp9OwoKIyAyOTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvdHlwZV90cmFpdHMuaCIgMwoKCgogCiAKCnRlbXBsYXRl
IDxjbGFzcyBfVHA+IHN0cnVjdCBfSXNfaW50ZWdlciB7CiAgdHlwZWRlZiBfX2ZhbHNlX3R5cGUg
X0ludGVncmFsOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8Ym9vbD4gewog
IHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3Qg
X0lzX2ludGVnZXI8Y2hhcj4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoK
dGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPHNpZ25lZCBjaGFyPiB7CiAgdHlwZWRlZiBf
X3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07Cgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8
dW5zaWduZWQgY2hhcj4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKCgp0
ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8d2NoYXJfdD4gewogIHR5cGVkZWYgX190cnVl
X3R5cGUgX0ludGVncmFsOwp9OwoKCgp0ZW1wbGF0ZTw+ICBzdHJ1Y3QgX0lzX2ludGVnZXI8c2hv
cnQ+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0
cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25lZCBzaG9ydD4gewogIHR5cGVkZWYgX190cnVlX3R5cGUg
X0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPGludD4gewogIHR5
cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19p
bnRlZ2VyPHVuc2lnbmVkIGludD4gewogIHR5cGVkZWYgX190cnVlX3R5cGUgX0ludGVncmFsOwp9
OwoKdGVtcGxhdGU8PiAgc3RydWN0IF9Jc19pbnRlZ2VyPGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1
ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNp
Z25lZCBsb25nPiB7CiAgdHlwZWRlZiBfX3RydWVfdHlwZSBfSW50ZWdyYWw7Cn07CgoKCnRlbXBs
YXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjxsb25nIGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1ZV90
eXBlIF9JbnRlZ3JhbDsKfTsKCnRlbXBsYXRlPD4gIHN0cnVjdCBfSXNfaW50ZWdlcjx1bnNpZ25l
ZCBsb25nIGxvbmc+IHsKICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9JbnRlZ3JhbDsKfTsKCgoKCgog
CiAKIAojIDQ1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L3N0bF9hbGdvYmFzZS5oIiAyIDMKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVk
ZS9saW1pdHMuaCIgMSAzCiAKCgogCgojIDExNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9n
bnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVk
ZS9saW1pdHMuaCIgMwoKCgoKCgoKIyA0OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUv
Z2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4v
Li4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKIyAxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzIuOTUuMy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzNDIgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4z
L2luY2x1ZGUvc3RkZGVmLmgiIDMKCiMgNTEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251
L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4u
Ly4uL2luY2x1ZGUvZysrLTMvc3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251
LzIuOTUuMy9pbmNsdWRlL25ldy5oIiAxIDMKIAoKCiNkZWZpbmUgX19ORVdfSF9fCgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMi45NS4zL2luY2x1ZGUvbmV3IiAxIDMKIAogCgoKI2RlZmluZSBfX05FV19f
CgojcHJhZ21hIGludGVyZmFjZSAibmV3IgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zL2luY2x1
ZGUvc3RkZGVmLmgiIDEgMwojIDM0MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvaW5jbHVkZS9zdGRk
ZWYuaCIgMwoKIyA4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy9pbmNsdWRlL25ldyIgMiAzCgoKCmV4
dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ugc3RkIHsKCiAgY2xhc3MgYmFkX2FsbG9jIDogcHVibGlj
IGV4Y2VwdGlvbiB7CiAgcHVibGljOgogICAgdmlydHVhbCBjb25zdCBjaGFyKiB3aGF0KCkgY29u
c3QgdGhyb3coKSB7IHJldHVybiAiYmFkX2FsbG9jIjsgfQogIH07CgogIHN0cnVjdCBub3Rocm93
X3Qge307CiAgZXh0ZXJuIGNvbnN0IG5vdGhyb3dfdCBub3Rocm93OwogIHR5cGVkZWYgdm9pZCAo
Km5ld19oYW5kbGVyKSgpOwogIG5ld19oYW5kbGVyIHNldF9uZXdfaGFuZGxlciAobmV3X2hhbmRs
ZXIpOwoKfSAgCgogCnZvaWQgKm9wZXJhdG9yIG5ldyAoc2l6ZV90KSB0aHJvdyAoc3RkOjpiYWRf
YWxsb2MpOwp2b2lkICpvcGVyYXRvciBuZXdbXSAoc2l6ZV90KSB0aHJvdyAoc3RkOjpiYWRfYWxs
b2MpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqKSB0aHJvdygpOwp2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdICh2b2lkICopIHRocm93KCk7CnZvaWQgKm9wZXJhdG9yIG5ldyAoc2l6ZV90LCBj
b25zdCBzdGQ6Om5vdGhyb3dfdCYpIHRocm93KCk7CnZvaWQgKm9wZXJhdG9yIG5ld1tdIChzaXpl
X3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKdm9pZCBvcGVyYXRvciBkZWxldGUg
KHZvaWQgKiwgY29uc3Qgc3RkOjpub3Rocm93X3QmKSB0aHJvdygpOwp2b2lkIG9wZXJhdG9yIGRl
bGV0ZVtdICh2b2lkICosIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKTsKCiAKaW5saW5l
IHZvaWQgKm9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQgKnBsYWNlKSB0aHJvdygpIHsgcmV0dXJu
IHBsYWNlOyB9CmlubGluZSB2b2lkICpvcGVyYXRvciBuZXdbXShzaXplX3QsIHZvaWQgKnBsYWNl
KSB0aHJvdygpIHsgcmV0dXJuIHBsYWNlOyB9Cn0gIAoKCiMgNiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1
LjMvaW5jbHVkZS9uZXcuaCIgMiAzCgoKdXNpbmcgc3RkOjpuZXdfaGFuZGxlcjsKdXNpbmcgc3Rk
OjpzZXRfbmV3X2hhbmRsZXI7CgoKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUv
Z2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4v
Li4vaW5jbHVkZS9nKystMy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCgoKCgogCgogCgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMiwgY2xhc3MgX1RwPgpp
bmxpbmUgdm9pZCBfX2l0ZXJfc3dhcChfRm9yd2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVyMiBf
X2IsIF9UcCopIHsKICBfVHAgX190bXAgPSAqX19hOwogICpfX2EgPSAqX19iOwogICpfX2IgPSBf
X3RtcDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRl
cjI+CmlubGluZSB2b2lkIGl0ZXJfc3dhcChfRm9yd2FyZEl0ZXIxIF9fYSwgX0ZvcndhcmRJdGVy
MiBfX2IpIHsKICBfX2l0ZXJfc3dhcChfX2EsIF9fYiwgX192YWx1ZV90eXBlKCBfX2EgKSApOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgdm9pZCBzd2FwKF9UcCYgX19hLCBfVHAmIF9f
YikgewogIF9UcCBfX3RtcCA9IF9fYTsKICBfX2EgPSBfX2I7CiAgX19iID0gX190bXA7Cn0KCiAK
IAoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgY29uc3QgX1RwJiBtaW4oY29uc3Qg
X1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iKSB7CiAgcmV0dXJuIF9fYiA8IF9fYSA/IF9fYiA6IF9f
YTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0IF9UcCYgbWF4KGNvbnN0IF9U
cCYgX19hLCBjb25zdCBfVHAmIF9fYikgewogIHJldHVybiAgX19hIDwgX19iID8gX19iIDogX19h
Owp9CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgY29uc3Qg
X1RwJiBtaW4oY29uc3QgX1RwJiBfX2EsIGNvbnN0IF9UcCYgX19iLCBfQ29tcGFyZSBfX2NvbXAp
IHsKICByZXR1cm4gX19jb21wKF9fYiwgX19hKSA/IF9fYiA6IF9fYTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBjb25zdCBfVHAmIG1heChjb25zdCBfVHAm
IF9fYSwgY29uc3QgX1RwJiBfX2IsIF9Db21wYXJlIF9fY29tcCkgewogIHJldHVybiBfX2NvbXAo
X19hLCBfX2IpID8gX19iIDogX19hOwp9CgogCiAKCiAKIAogCiAKIAogCiAKCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0Rpc3RhbmNlPgppbmxp
bmUgX091dHB1dEl0ZXIgX19jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xh
c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfdGFnLCBfRGlzdGFuY2UqKQp7CiAg
Zm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX3Jlc3VsdCwgKytfX2ZpcnN0KQogICAgKl9f
cmVzdWx0ID0gKl9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+Cmlu
bGluZSBfT3V0cHV0SXRlcgpfX2NvcHkoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIHJhbmRvbV9h
Y2Nlc3NfaXRlcmF0b3JfdGFnLCBfRGlzdGFuY2UqKQp7CiAgZm9yIChfRGlzdGFuY2UgX19uID0g
X19sYXN0IC0gX19maXJzdDsgX19uID4gMDsgLS1fX24pIHsKICAgICpfX3Jlc3VsdCA9ICpfX2Zp
cnN0OwogICAgKytfX2ZpcnN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIF9fcmVzdWx0
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgppbmxpbmUgX1RwKgpfX2NvcHlfdHJpdmlhbChjb25z
dCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgbWVt
bW92ZShfX3Jlc3VsdCwgX19maXJzdCwgc2l6ZW9mKF9UcCkgKiAoX19sYXN0IC0gX19maXJzdCkp
OwogIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9Cb29sVHlwZT4Kc3Ry
dWN0IF9fY29weV9kaXNwYXRjaCB7CiAgc3RhdGljIF9PdXRwdXRJdGVyIGNvcHkoX0lucHV0SXRl
ciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBf
T3V0cHV0SXRlciBfX3Jlc3VsdCkgewogICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp
dHM8X0lucHV0SXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRlZ29yeTsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX0Rp
c3RhbmNlOwogICAgcmV0dXJuIF9fY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfQ2F0
ZWdvcnkoKSwgKF9EaXN0YW5jZSopIDApOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0
cnVjdCBfX2NvcHlfZGlzcGF0Y2g8X1RwKiwgX1RwKiwgX190cnVlX3R5cGU+CnsKICBzdGF0aWMg
X1RwKiBjb3B5KGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1RwKiBfX2xhc3QsIF9UcCogX19y
ZXN1bHQpIHsKICAgIHJldHVybiBfX2NvcHlfdHJpdmlhbChfX2ZpcnN0LCBfX2xhc3QsIF9fcmVz
dWx0KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgX19jb3B5X2Rpc3BhdGNo
PGNvbnN0IF9UcCosIF9UcCosIF9fdHJ1ZV90eXBlPgp7CiAgc3RhdGljIF9UcCogY29weShjb25z
dCBfVHAqIF9fZmlyc3QsIGNvbnN0IF9UcCogX19sYXN0LCBfVHAqIF9fcmVzdWx0KSB7CiAgICBy
ZXR1cm4gX19jb3B5X3RyaXZpYWwoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091
dHB1dEl0ZXIgY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkgewogIHR5cGVkZWYgdHlw
ZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXI+Ojp2YWx1ZV90eXBlIF9UcDsKICB0eXBl
ZGVmIHR5cGVuYW1lIF9fdHlwZV90cmFpdHM8X1RwPjo6aGFzX3RyaXZpYWxfYXNzaWdubWVudF9v
cGVyYXRvcgogICAgICAgICAgX1RyaXZpYWw7CiAgcmV0dXJuIF9fY29weV9kaXNwYXRjaDxfSW5w
dXRJdGVyLCBfT3V0cHV0SXRlciwgX1RyaXZpYWw+CiAgICA6OmNvcHkoX19maXJzdCwgX19sYXN0
LCBfX3Jlc3VsdCk7Cn0KCiMgMjEzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2Mt
Mi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9p
bmNsdWRlL2crKy0zL3N0bF9hbGdvYmFzZS5oIiAzCgoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Jp
ZGlyZWN0aW9uYWxJdGVyMSwgY2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMiwgCiAgICAgICAgICBj
bGFzcyBfRGlzdGFuY2U+CmlubGluZSBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fY29weV9iYWNrd2Fy
ZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX3Jl
c3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZGlyZWN0
aW9uYWxfaXRlcmF0b3JfdGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0Rpc3RhbmNlKikKewogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkKICAgICotLV9f
cmVzdWx0ID0gKi0tX19sYXN0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0
YW5jZT4KaW5saW5lIF9CaWRpcmVjdGlvbmFsSXRlciBfX2NvcHlfYmFja3dhcmQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSopCnsK
ICBmb3IgKF9EaXN0YW5jZSBfX24gPSBfX2xhc3QgLSBfX2ZpcnN0OyBfX24gPiAwOyAtLV9fbikK
ICAgICotLV9fcmVzdWx0ID0gKi0tX19sYXN0OwogIHJldHVybiBfX3Jlc3VsdDsKfQoKCgogCiAK
IAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyMSwgY2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyMiwKICAgICAgICAgIGNsYXNzIF9Cb29sVHlwZT4Kc3RydWN0IF9fY29weV9iYWNr
d2FyZF9kaXNwYXRjaAp7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0JpZGly
ZWN0aW9uYWxJdGVyMT46Oml0ZXJhdG9yX2NhdGVnb3J5IAogICAgICAgICAgX0NhdDsKICB0eXBl
ZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQmlkaXJlY3Rpb25hbEl0ZXIxPjo6ZGlmZmVy
ZW5jZV90eXBlCiAgICAgICAgICBfRGlzdGFuY2U7CgogIHN0YXRpYyBfQmlkaXJlY3Rpb25hbEl0
ZXIyIGNvcHkoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0LCAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19yZXN1bHQpIHsKICAg
IHJldHVybiBfX2NvcHlfYmFja3dhcmQoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX0NhdCgp
LCAoX0Rpc3RhbmNlKikgMCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IF9f
Y29weV9iYWNrd2FyZF9kaXNwYXRjaDxfVHAqLCBfVHAqLCBfX3RydWVfdHlwZT4KewogIHN0YXRp
YyBfVHAqIGNvcHkoY29uc3QgX1RwKiBfX2ZpcnN0LCBjb25zdCBfVHAqIF9fbGFzdCwgX1RwKiBf
X3Jlc3VsdCkgewogICAgY29uc3QgcHRyZGlmZl90IF9OdW0gPSBfX2xhc3QgLSBfX2ZpcnN0Owog
ICAgbWVtbW92ZShfX3Jlc3VsdCAtIF9OdW0sIF9fZmlyc3QsIHNpemVvZihfVHApICogX051bSk7
CiAgICByZXR1cm4gX19yZXN1bHQgLSBfTnVtOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+
CnN0cnVjdCBfX2NvcHlfYmFja3dhcmRfZGlzcGF0Y2g8Y29uc3QgX1RwKiwgX1RwKiwgX190cnVl
X3R5cGU+CnsKICBzdGF0aWMgX1RwKiBjb3B5KGNvbnN0IF9UcCogX19maXJzdCwgY29uc3QgX1Rw
KiBfX2xhc3QsIF9UcCogX19yZXN1bHQpIHsKICAgIHJldHVybiAgX19jb3B5X2JhY2t3YXJkX2Rp
c3BhdGNoPF9UcCosIF9UcCosIF9fdHJ1ZV90eXBlPgogICAgICA6OmNvcHkoX19maXJzdCwgX19s
YXN0LCBfX3Jlc3VsdCk7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9CSTEsIGNsYXNzIF9CSTI+
CmlubGluZSBfQkkyIGNvcHlfYmFja3dhcmQoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJ
MiBfX3Jlc3VsdCkgewogIHR5cGVkZWYgdHlwZW5hbWUgX190eXBlX3RyYWl0czx0eXBlbmFtZSBp
dGVyYXRvcl90cmFpdHM8X0JJMj46OnZhbHVlX3R5cGU+CiAgICAgICAgICAgICAgICAgICAgICAg
IDo6aGFzX3RyaXZpYWxfYXNzaWdubWVudF9vcGVyYXRvcgogICAgICAgICAgX1RyaXZpYWw7CiAg
cmV0dXJuIF9fY29weV9iYWNrd2FyZF9kaXNwYXRjaDxfQkkxLCBfQkkyLCBfVHJpdmlhbD4KICAg
ICAgICAgICAgICA6OmNvcHkoX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7Cn0KCiMgMzAzICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF9hbGdvYmFz
ZS5oIiAzCgoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNs
YXNzIF9PdXRwdXRJdGVyPgpwYWlyPF9JbnB1dEl0ZXIsIF9PdXRwdXRJdGVyPiBfX2NvcHlfbihf
SW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpIHsKICBmb3IgKCA7IF9fY291
bnQgPiAwOyAtLV9fY291bnQpIHsKICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgKytfX2Zp
cnN0OwogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIHBhaXI8X0lucHV0SXRlciwgX091dHB1
dEl0ZXI+KF9fZmlyc3QsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SQUl0ZXIsIGNs
YXNzIF9TaXplLCBjbGFzcyBfT3V0cHV0SXRlcj4KaW5saW5lIHBhaXI8X1JBSXRlciwgX091dHB1
dEl0ZXI+Cl9fY29weV9uKF9SQUl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAg
X091dHB1dEl0ZXIgX19yZXN1bHQsCiAgICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFn
KSB7CiAgX1JBSXRlciBfX2xhc3QgPSBfX2ZpcnN0ICsgX19jb3VudDsKICByZXR1cm4gcGFpcjxf
UkFJdGVyLCBfT3V0cHV0SXRlcj4oX19sYXN0LCBjb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1
bHQpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBf
T3V0cHV0SXRlcj4KaW5saW5lIHBhaXI8X0lucHV0SXRlciwgX091dHB1dEl0ZXI+Cl9fY29weV9u
KF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwgX091dHB1dEl0ZXIgX19yZXN1bHQp
IHsKICByZXR1cm4gX19jb3B5X24oX19maXJzdCwgX19jb3VudCwgX19yZXN1bHQsCiAgICAgICAg
ICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUg
cGFpcjxfSW5wdXRJdGVyLCBfT3V0cHV0SXRlcj4KY29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwg
X1NpemUgX19jb3VudCwgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICByZXR1cm4gX19jb3B5X24o
X19maXJzdCwgX19jb3VudCwgX19yZXN1bHQpOwp9CgogCiAKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyLCBjbGFzcyBfVHA+CnZvaWQgZmlsbChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zv
cndhcmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbHVlKSB7CiAgZm9yICggOyBfX2ZpcnN0
ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgKl9fZmlyc3QgPSBfX3ZhbHVlOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVy
IGZpbGxfbihfT3V0cHV0SXRlciBfX2ZpcnN0LCBfU2l6ZSBfX24sIGNvbnN0IF9UcCYgX192YWx1
ZSkgewogIGZvciAoIDsgX19uID4gMDsgLS1fX24sICsrX19maXJzdCkKICAgICpfX2ZpcnN0ID0g
X192YWx1ZTsKICByZXR1cm4gX19maXJzdDsKfQoKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0
SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgpwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4g
bWlzbWF0Y2goX0lucHV0SXRlcjEgX19maXJzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIpIHsKICB3aGlsZSAoX19maXJz
dDEgIT0gX19sYXN0MSAmJiAqX19maXJzdDEgPT0gKl9fZmlyc3QyKSB7CiAgICArK19fZmlyc3Qx
OwogICAgKytfX2ZpcnN0MjsKICB9CiAgcmV0dXJuIHBhaXI8X0lucHV0SXRlcjEsIF9JbnB1dEl0
ZXIyPihfX2ZpcnN0MSwgX19maXJzdDIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEs
IGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpwYWlyPF9JbnB1dEl0
ZXIxLCBfSW5wdXRJdGVyMj4gbWlzbWF0Y2goX0lucHV0SXRlcjEgX19maXJzdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRl
IF9fYmluYXJ5X3ByZWQpIHsKICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2JpbmFy
eV9wcmVkKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgKytfX2ZpcnN0MTsKICAgICsrX19m
aXJzdDI7CiAgfQogIHJldHVybiBwYWlyPF9JbnB1dEl0ZXIxLCBfSW5wdXRJdGVyMj4oX19maXJz
dDEsIF9fZmlyc3QyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5w
dXRJdGVyMj4KaW5saW5lIGJvb2wgZXF1YWwoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0
ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyKSB7CiAg
Zm9yICggOyBfX2ZpcnN0MSAhPSBfX2xhc3QxOyArK19fZmlyc3QxLCArK19fZmlyc3QyKQogICAg
aWYgKCpfX2ZpcnN0MSAhPSAqX19maXJzdDIpCiAgICAgIHJldHVybiBmYWxzZTsKICByZXR1cm4g
dHJ1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwg
Y2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIGJvb2wgZXF1YWwoX0lucHV0SXRlcjEgX19m
aXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIy
IF9fZmlyc3QyLCBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQpIHsKICBmb3IgKCA7IF9f
Zmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiAgICBpZiAoIV9fYmlu
YXJ5X3ByZWQoKl9fZmlyc3QxLCAqX19maXJzdDIpKQogICAgICByZXR1cm4gZmFsc2U7CiAgcmV0
dXJuIHRydWU7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9J
bnB1dEl0ZXIyPgpib29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlKF9JbnB1dEl0ZXIxIF9fZmly
c3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9J
bnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyKSB7CiAgZm9yICggOyBfX2Zp
cnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIKICAgICAgICA7ICsrX19maXJz
dDEsICsrX19maXJzdDIpIHsKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpCiAgICAgIHJl
dHVybiB0cnVlOwogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgcmV0dXJuIGZh
bHNlOwogIH0KICByZXR1cm4gX19maXJzdDEgPT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xh
c3QyOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBj
bGFzcyBfQ29tcGFyZT4KYm9vbCBsZXhpY29ncmFwaGljYWxfY29tcGFyZShfSW5wdXRJdGVyMSBf
X2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBmb3IgKCA7IF9fZmlyc3QxICE9
IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MgogICAgICAgIDsgKytfX2ZpcnN0MSwgKytf
X2ZpcnN0MikgewogICAgaWYgKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0MikpCiAgICAgIHJl
dHVybiB0cnVlOwogICAgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkpCiAgICAgIHJl
dHVybiBmYWxzZTsKICB9CiAgcmV0dXJuIF9fZmlyc3QxID09IF9fbGFzdDEgJiYgX19maXJzdDIg
IT0gX19sYXN0MjsKfQoKaW5saW5lIGJvb2wgCmxleGljb2dyYXBoaWNhbF9jb21wYXJlKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBfX2ZpcnN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciogX19sYXN0MikKewogIGNvbnN0IHNpemVfdCBfX2xlbjEgPSBfX2xhc3QxIC0gX19m
aXJzdDE7CiAgY29uc3Qgc2l6ZV90IF9fbGVuMiA9IF9fbGFzdDIgLSBfX2ZpcnN0MjsKICBjb25z
dCBpbnQgX19yZXN1bHQgPSBtZW1jbXAoX19maXJzdDEsIF9fZmlyc3QyLCBtaW4oX19sZW4xLCBf
X2xlbjIpKTsKICByZXR1cm4gX19yZXN1bHQgIT0gMCA/IF9fcmVzdWx0IDwgMCA6IF9fbGVuMSA8
IF9fbGVuMjsKfQoKaW5saW5lIGJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUoY29uc3QgY2hh
ciogX19maXJzdDEsIGNvbnN0IGNoYXIqIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIF9fZmlyc3QyLCBjb25zdCBjaGFyKiBfX2xhc3QyKQp7
CgogIHJldHVybiBsZXhpY29ncmFwaGljYWxfY29tcGFyZSgoY29uc3Qgc2lnbmVkIGNoYXIqKSBf
X2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBj
aGFyKikgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHNp
Z25lZCBjaGFyKikgX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj
b25zdCBzaWduZWQgY2hhciopIF9fbGFzdDIpOwoKCgoKCgp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyPgppbnQgX19sZXhpY29ncmFwaGljYWxfY29tcGFy
ZV8zd2F5KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJ
dGVyMiBfX2xhc3QyKQp7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIg
IT0gX19sYXN0MikgewogICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICAgICAgcmV0dXJu
IC0xOwogICAgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkKICAgICAgcmV0dXJuIDE7CiAgICAr
K19fZmlyc3QxOwogICAgKytfX2ZpcnN0MjsKICB9CiAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIp
IHsKICAgIHJldHVybiAhKF9fZmlyc3QxID09IF9fbGFzdDEpOwogIH0KICBlbHNlIHsKICAgIHJl
dHVybiAtMTsKICB9Cn0KCmlubGluZSBpbnQKX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV8zd2F5
KGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9fZmlyc3QyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogX19sYXN0MikKewogIGNvbnN0IHB0
cmRpZmZfdCBfX2xlbjEgPSBfX2xhc3QxIC0gX19maXJzdDE7CiAgY29uc3QgcHRyZGlmZl90IF9f
bGVuMiA9IF9fbGFzdDIgLSBfX2ZpcnN0MjsKICBjb25zdCBpbnQgX19yZXN1bHQgPSBtZW1jbXAo
X19maXJzdDEsIF9fZmlyc3QyLCBtaW4oX19sZW4xLCBfX2xlbjIpKTsKICByZXR1cm4gX19yZXN1
bHQgIT0gMCA/IF9fcmVzdWx0IAogICAgICAgICAgICAgICAgICAgICAgIDogKF9fbGVuMSA9PSBf
X2xlbjIgPyAwIDogKF9fbGVuMSA8IF9fbGVuMiA/IC0xIDogMSkpOwp9CgppbmxpbmUgaW50IApf
X2xleGljb2dyYXBoaWNhbF9jb21wYXJlXzN3YXkoY29uc3QgY2hhciogX19maXJzdDEsIGNvbnN0
IGNoYXIqIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBfX2ZpcnN0MiwgY29uc3QgY2hhciogX19sYXN0MikKewoKICByZXR1cm4gX19sZXhpY29ncmFw
aGljYWxfY29tcGFyZV8zd2F5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25z
dCBzaWduZWQgY2hhciopIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChjb25zdCBzaWduZWQgY2hhciopIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNvbnN0IHNpZ25lZCBjaGFyKikgX19sYXN0Mik7CgoKCgoKCn0KCnRlbXBs
YXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjI+CmludCBsZXhpY29ncmFw
aGljYWxfY29tcGFyZV8zd2F5KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xh
c3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0
MiwgX0lucHV0SXRlcjIgX19sYXN0MikKewogIHJldHVybiBfX2xleGljb2dyYXBoaWNhbF9jb21w
YXJlXzN3YXkoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyKTsKfQoKIAoKCgog
CiAKIAojIDU2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9n
Y2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0z
L3N0bF90cmVlLmgiIDIgMwoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2Nj
LTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4v
aW5jbHVkZS9nKystMy9zdGxfY29uc3RydWN0LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9JTlRFUk5BTF9DT05TVFJVQ1RfSAoKCgogCgog
CiAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSB2b2lkIGRlc3Ryb3koX1RwKiBfX3BvaW50
ZXIpIHsKICBfX3BvaW50ZXItPn5fVHAoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UMSwgY2xhc3Mg
X1QyPgppbmxpbmUgdm9pZCBjb25zdHJ1Y3QoX1QxKiBfX3AsIGNvbnN0IF9UMiYgX192YWx1ZSkg
ewogIG5ldyAoX19wKSBfVDEoX192YWx1ZSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVDE+CmlubGlu
ZSB2b2lkIGNvbnN0cnVjdChfVDEqIF9fcCkgewogIG5ldyAoX19wKSBfVDEoKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3I+CmlubGluZSB2b2lkCl9fZGVzdHJveV9hdXgoX0Zv
cndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwgX19mYWxzZV90
eXBlKQp7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgZGVzdHJv
eSgmKl9fZmlyc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyYXRvcj4KaW5saW5l
IHZvaWQgX19kZXN0cm95X2F1eChfRm9yd2FyZEl0ZXJhdG9yLCBfRm9yd2FyZEl0ZXJhdG9yLCBf
X3RydWVfdHlwZSkge30KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBf
VHA+CmlubGluZSB2b2lkCl9fZGVzdHJveShfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3
YXJkSXRlcmF0b3IgX19sYXN0LCBfVHAqKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJh
aXRzPF9UcD46Omhhc190cml2aWFsX2Rlc3RydWN0b3IKICAgICAgICAgIF9Ucml2aWFsX2Rlc3Ry
dWN0b3I7CiAgX19kZXN0cm95X2F1eChfX2ZpcnN0LCBfX2xhc3QsIF9Ucml2aWFsX2Rlc3RydWN0
b3IoKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXJhdG9yPgppbmxpbmUgdm9pZCBk
ZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3Qp
IHsKICBfX2Rlc3Ryb3koX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAp
Owp9CgppbmxpbmUgdm9pZCBkZXN0cm95KGNoYXIqLCBjaGFyKikge30KaW5saW5lIHZvaWQgZGVz
dHJveSh3Y2hhcl90Kiwgd2NoYXJfdCopIHt9CgogCgoKCiAKIAogCiMgNTggIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIgMiAzCgojIDEg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4
Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2Z1bmN0
aW9uLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKCgojZGVmaW5lIF9fU0dJ
X1NUTF9JTlRFUk5BTF9GVU5DVElPTl9ICgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3Mg
X1Jlc3VsdD4Kc3RydWN0IHVuYXJ5X2Z1bmN0aW9uIHsKICB0eXBlZGVmIF9BcmcgYXJndW1lbnRf
dHlwZTsKICB0eXBlZGVmIF9SZXN1bHQgcmVzdWx0X3R5cGU7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0FyZzEsIGNsYXNzIF9BcmcyLCBjbGFzcyBfUmVzdWx0PgpzdHJ1Y3QgYmluYXJ5X2Z1bmN0aW9u
IHsKICB0eXBlZGVmIF9BcmcxIGZpcnN0X2FyZ3VtZW50X3R5cGU7CiAgdHlwZWRlZiBfQXJnMiBz
ZWNvbmRfYXJndW1lbnRfdHlwZTsKICB0eXBlZGVmIF9SZXN1bHQgcmVzdWx0X3R5cGU7Cn07ICAg
ICAgCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgcGx1cyA6IHB1YmxpYyBiaW5hcnlfZnVu
Y3Rpb248X1RwLF9UcCxfVHA+IHsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29u
c3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCArIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNs
YXNzIF9UcD4Kc3RydWN0IG1pbnVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLF9U
cD4gewogIF9UcCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29u
c3QgeyByZXR1cm4gX194IC0gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3Qg
bXVsdGlwbGllcyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxfVHA+IHsKICBfVHAg
b3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJu
IF9feCAqIF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGRpdmlkZXMgOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsX1RwPiB7CiAgX1RwIG9wZXJhdG9yKCkoY29u
c3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggLyBfX3k7IH0K
fTsKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+IGlubGluZSBfVHAgaWRlbnRpdHlfZWxlbWVudChw
bHVzPF9UcD4pIHsKICByZXR1cm4gX1RwKDApOwp9CnRlbXBsYXRlIDxjbGFzcyBfVHA+IGlubGlu
ZSBfVHAgaWRlbnRpdHlfZWxlbWVudChtdWx0aXBsaWVzPF9UcD4pIHsKICByZXR1cm4gX1RwKDEp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbW9kdWx1cyA6IHB1YmxpYyBiaW5hcnlf
ZnVuY3Rpb248X1RwLF9UcCxfVHA+IAp7CiAgX1RwIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gs
IGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggJSBfX3k7IH0KfTsKCnRlbXBsYXRl
IDxjbGFzcyBfVHA+CnN0cnVjdCBuZWdhdGUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLF9U
cD4gCnsKICBfVHAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCkgY29uc3QgeyByZXR1cm4gLV9f
eDsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGVxdWFsX3RvIDogcHVibGljIGJp
bmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9U
cCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ID09IF9feTsgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IG5vdF9lcXVhbF90byA6IHB1YmxpYyBiaW5hcnlf
ZnVuY3Rpb248X1RwLF9UcCxib29sPiAKewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9f
eCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0dXJuIF9feCAhPSBfX3k7IH0KfTsKCnRlbXBs
YXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBncmVhdGVyIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxf
VHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBf
VHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194ID4gX195OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgpzdHJ1Y3QgbGVzcyA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPiAK
ewogIGJvb2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0
IHsgcmV0dXJuIF9feCA8IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGdy
ZWF0ZXJfZXF1YWwgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfVHAsYm9vbD4KewogIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0IHsgcmV0
dXJuIF9feCA+PSBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBsZXNzX2Vx
dWFsIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+IAp7CiAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194
IDw9IF9feTsgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGxvZ2ljYWxfYW5kIDog
cHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsX1RwLGJvb2w+CnsKICBib29sIG9wZXJhdG9yKCko
Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdCB7IHJldHVybiBfX3ggJiYgX195
OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgbG9naWNhbF9vciA6IHB1YmxpYyBi
aW5hcnlfZnVuY3Rpb248X1RwLF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9U
cCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QgeyByZXR1cm4gX194IHx8IF9feTsgfQp9OwoK
dGVtcGxhdGUgPGNsYXNzIF9UcD4Kc3RydWN0IGxvZ2ljYWxfbm90IDogcHVibGljIHVuYXJ5X2Z1
bmN0aW9uPF9UcCxib29sPgp7CiAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194KSBjb25z
dCB7IHJldHVybiAhX194OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4KY2xhc3Mg
dW5hcnlfbmVnYXRlCiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX1ByZWRpY2F0
ZTo6YXJndW1lbnRfdHlwZSwgYm9vbD4gewpwcm90ZWN0ZWQ6CiAgX1ByZWRpY2F0ZSBfTV9wcmVk
OwpwdWJsaWM6CiAgZXhwbGljaXQgdW5hcnlfbmVnYXRlKGNvbnN0IF9QcmVkaWNhdGUmIF9feCkg
OiBfTV9wcmVkKF9feCkge30KICBib29sIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX1ByZWRp
Y2F0ZTo6YXJndW1lbnRfdHlwZSYgX194KSBjb25zdCB7CiAgICByZXR1cm4gIV9NX3ByZWQoX194
KTsKICB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1ByZWRpY2F0ZT4KaW5saW5lIHVuYXJ5X25lZ2F0
ZTxfUHJlZGljYXRlPiAKbm90MShjb25zdCBfUHJlZGljYXRlJiBfX3ByZWQpCnsKICByZXR1cm4g
dW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+KF9fcHJlZCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUHJl
ZGljYXRlPiAKY2xhc3MgYmluYXJ5X25lZ2F0ZSAKICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248
dHlwZW5hbWUgX1ByZWRpY2F0ZTo6Zmlyc3RfYXJndW1lbnRfdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2w+IHsKcHJvdGVjdGVkOgogIF9QcmVkaWNhdGUg
X01fcHJlZDsKcHVibGljOgogIGV4cGxpY2l0IGJpbmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0
ZSYgX194KSA6IF9NX3ByZWQoX194KSB7fQogIGJvb2wgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFt
ZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gsIAogICAgICAgICAgICAgICAg
ICBjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX195KSBj
b25zdAogIHsKICAgIHJldHVybiAhX01fcHJlZChfX3gsIF9feSk7IAogIH0KfTsKCnRlbXBsYXRl
IDxjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgYmluYXJ5X25lZ2F0ZTxfUHJlZGljYXRlPiAKbm90
Mihjb25zdCBfUHJlZGljYXRlJiBfX3ByZWQpCnsKICByZXR1cm4gYmluYXJ5X25lZ2F0ZTxfUHJl
ZGljYXRlPihfX3ByZWQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX09wZXJhdGlvbj4gCmNsYXNzIGJp
bmRlcjFzdAogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb246OnNl
Y29uZF9hcmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIF9P
cGVyYXRpb246OnJlc3VsdF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9uIG9wOwogIHR5
cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgdmFsdWU7CnB1YmxpYzoKICBi
aW5kZXIxc3QoY29uc3QgX09wZXJhdGlvbiYgX194LAogICAgICAgICAgICBjb25zdCB0eXBlbmFt
ZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3kpCiAgICAgIDogb3AoX194KSwg
dmFsdWUoX195KSB7fQogIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlCiAgb3BlcmF0
b3IoKShjb25zdCB0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSYgX194
KSBjb25zdCB7CiAgICByZXR1cm4gb3AodmFsdWUsIF9feCk7IAogIH0KfTsKCnRlbXBsYXRlIDxj
bGFzcyBfT3BlcmF0aW9uLCBjbGFzcyBfVHA+CmlubGluZSBiaW5kZXIxc3Q8X09wZXJhdGlvbj4g
CmJpbmQxc3QoY29uc3QgX09wZXJhdGlvbiYgX19vcGVyLCBjb25zdCBfVHAmIF9feCkgCnsKICB0
eXBlZGVmIHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUgX0FyZzFfdHlw
ZTsKICByZXR1cm4gYmluZGVyMXN0PF9PcGVyYXRpb24+KF9fb3BlciwgX0FyZzFfdHlwZShfX3gp
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRpb24+IApjbGFzcyBiaW5kZXIybmQKICA6IHB1
YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3Vs
dF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9uIG9wOwogIHR5cGVuYW1lIF9PcGVyYXRp
b246OnNlY29uZF9hcmd1bWVudF90eXBlIHZhbHVlOwpwdWJsaWM6CiAgYmluZGVyMm5kKGNvbnN0
IF9PcGVyYXRpb24mIF9feCwKICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6
c2Vjb25kX2FyZ3VtZW50X3R5cGUmIF9feSkgCiAgICAgIDogb3AoX194KSwgdmFsdWUoX195KSB7
fQogIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBlCiAgb3BlcmF0b3IoKShjb25zdCB0
eXBlbmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gpIGNvbnN0IHsKICAg
IHJldHVybiBvcChfX3gsIHZhbHVlKTsgCiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRp
b24sIGNsYXNzIF9UcD4KaW5saW5lIGJpbmRlcjJuZDxfT3BlcmF0aW9uPiAKYmluZDJuZChjb25z
dCBfT3BlcmF0aW9uJiBfX29wZXIsIGNvbnN0IF9UcCYgX194KSAKewogIHR5cGVkZWYgdHlwZW5h
bWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgX0FyZzJfdHlwZTsKICByZXR1cm4g
YmluZGVyMm5kPF9PcGVyYXRpb24+KF9fb3BlciwgX0FyZzJfdHlwZShfX3gpKTsKfQoKIAoKdGVt
cGxhdGUgPGNsYXNzIF9PcGVyYXRpb24xLCBjbGFzcyBfT3BlcmF0aW9uMj4KY2xhc3MgdW5hcnlf
Y29tcG9zZQogIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb24yOjph
cmd1bWVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIF9PcGVyYXRp
b24xOjpyZXN1bHRfdHlwZT4gCnsKcHJvdGVjdGVkOgogIF9PcGVyYXRpb24xIF9fb3AxOwogIF9P
cGVyYXRpb24yIF9fb3AyOwpwdWJsaWM6CiAgdW5hcnlfY29tcG9zZShjb25zdCBfT3BlcmF0aW9u
MSYgX194LCBjb25zdCBfT3BlcmF0aW9uMiYgX195KSAKICAgIDogX19vcDEoX194KSwgX19vcDIo
X195KSB7fQogIHR5cGVuYW1lIF9PcGVyYXRpb24xOjpyZXN1bHRfdHlwZQogIG9wZXJhdG9yKCko
Y29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjI6OmFyZ3VtZW50X3R5cGUmIF9feCkgY29uc3Qgewog
ICAgcmV0dXJuIF9fb3AxKF9fb3AyKF9feCkpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfT3Bl
cmF0aW9uMSwgY2xhc3MgX09wZXJhdGlvbjI+CmlubGluZSB1bmFyeV9jb21wb3NlPF9PcGVyYXRp
b24xLF9PcGVyYXRpb24yPiAKY29tcG9zZTEoY29uc3QgX09wZXJhdGlvbjEmIF9fb3AxLCBjb25z
dCBfT3BlcmF0aW9uMiYgX19vcDIpCnsKICByZXR1cm4gdW5hcnlfY29tcG9zZTxfT3BlcmF0aW9u
MSxfT3BlcmF0aW9uMj4oX19vcDEsIF9fb3AyKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9PcGVyYXRp
b24xLCBjbGFzcyBfT3BlcmF0aW9uMiwgY2xhc3MgX09wZXJhdGlvbjM+CmNsYXNzIGJpbmFyeV9j
b21wb3NlCiAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgX09wZXJhdGlvbjI6OmFy
Z3VtZW50X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgX09wZXJhdGlv
bjE6OnJlc3VsdF90eXBlPiB7CnByb3RlY3RlZDoKICBfT3BlcmF0aW9uMSBfTV9vcDE7CiAgX09w
ZXJhdGlvbjIgX01fb3AyOwogIF9PcGVyYXRpb24zIF9NX29wMzsKcHVibGljOgogIGJpbmFyeV9j
b21wb3NlKGNvbnN0IF9PcGVyYXRpb24xJiBfX3gsIGNvbnN0IF9PcGVyYXRpb24yJiBfX3ksIAog
ICAgICAgICAgICAgICAgIGNvbnN0IF9PcGVyYXRpb24zJiBfX3opIAogICAgOiBfTV9vcDEoX194
KSwgX01fb3AyKF9feSksIF9NX29wMyhfX3opIHsgfQogIHR5cGVuYW1lIF9PcGVyYXRpb24xOjpy
ZXN1bHRfdHlwZQogIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjI6OmFyZ3Vt
ZW50X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX29wMShfTV9vcDIoX194KSwgX01f
b3AzKF9feCkpOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfT3BlcmF0aW9uMSwgY2xhc3MgX09w
ZXJhdGlvbjIsIGNsYXNzIF9PcGVyYXRpb24zPgppbmxpbmUgYmluYXJ5X2NvbXBvc2U8X09wZXJh
dGlvbjEsIF9PcGVyYXRpb24yLCBfT3BlcmF0aW9uMz4gCmNvbXBvc2UyKGNvbnN0IF9PcGVyYXRp
b24xJiBfX29wMSwgY29uc3QgX09wZXJhdGlvbjImIF9fb3AyLCAKICAgICAgICAgY29uc3QgX09w
ZXJhdGlvbjMmIF9fb3AzKQp7CiAgcmV0dXJuIGJpbmFyeV9jb21wb3NlPF9PcGVyYXRpb24xLF9P
cGVyYXRpb24yLF9PcGVyYXRpb24zPgogICAgKF9fb3AxLCBfX29wMiwgX19vcDMpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0FyZywgY2xhc3MgX1Jlc3VsdD4KY2xhc3MgcG9pbnRlcl90b191bmFyeV9m
dW5jdGlvbiA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfQXJnLCBfUmVzdWx0PiB7CnByb3RlY3Rl
ZDoKICBfUmVzdWx0ICgqX01fcHRyKShfQXJnKTsKcHVibGljOgogIHBvaW50ZXJfdG9fdW5hcnlf
ZnVuY3Rpb24oKSB7fQogIGV4cGxpY2l0IHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24oX1Jlc3Vs
dCAoKl9feCkoX0FyZykpIDogX01fcHRyKF9feCkge30KICBfUmVzdWx0IG9wZXJhdG9yKCkoX0Fy
ZyBfX3gpIGNvbnN0IHsgcmV0dXJuIF9NX3B0cihfX3gpOyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0FyZywgY2xhc3MgX1Jlc3VsdD4KaW5saW5lIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb248X0Fy
ZywgX1Jlc3VsdD4gcHRyX2Z1bihfUmVzdWx0ICgqX194KShfQXJnKSkKewogIHJldHVybiBwb2lu
dGVyX3RvX3VuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+KF9feCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfQXJnMSwgY2xhc3MgX0FyZzIsIGNsYXNzIF9SZXN1bHQ+CmNsYXNzIHBvaW50ZXJfdG9f
YmluYXJ5X2Z1bmN0aW9uIDogCiAgcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixf
UmVzdWx0PiB7CnByb3RlY3RlZDoKICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcxLCBfQXJnMik7
CnB1YmxpYzoKICAgIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uKCkge30KICAgIGV4cGxpY2l0
IHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uKF9SZXN1bHQgKCpfX3gpKF9BcmcxLCBfQXJnMikp
IAogICAgICA6IF9NX3B0cihfX3gpIHt9CiAgICBfUmVzdWx0IG9wZXJhdG9yKCkoX0FyZzEgX194
LCBfQXJnMiBfX3kpIGNvbnN0IHsKICAgICAgcmV0dXJuIF9NX3B0cihfX3gsIF9feSk7CiAgICB9
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0FyZzEsIGNsYXNzIF9BcmcyLCBjbGFzcyBfUmVzdWx0Pgpp
bmxpbmUgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb248X0FyZzEsX0FyZzIsX1Jlc3VsdD4gCnB0
cl9mdW4oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkgewogIHJldHVybiBwb2ludGVyX3Rv
X2JpbmFyeV9mdW5jdGlvbjxfQXJnMSxfQXJnMixfUmVzdWx0PihfX3gpOwp9CgogCnRlbXBsYXRl
IDxjbGFzcyBfVHA+CnN0cnVjdCBfSWRlbnRpdHkgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1Rw
LF9UcD4gewogIGNvbnN0IF9UcCYgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCkgY29uc3QgeyBy
ZXR1cm4gX194OyB9Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwPiBzdHJ1Y3QgaWRlbnRpdHkgOiBw
dWJsaWMgX0lkZW50aXR5PF9UcD4ge307CgogCnRlbXBsYXRlIDxjbGFzcyBfUGFpcj4Kc3RydWN0
IF9TZWxlY3Qxc3QgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1BhaXIsIHR5cGVuYW1lIF9QYWly
OjpmaXJzdF90eXBlPiB7CiAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGUmIG9wZXJh
dG9yKCkoY29uc3QgX1BhaXImIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9feC5maXJzdDsKICB9
Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1BhaXI+CnN0cnVjdCBfU2VsZWN0Mm5kIDogcHVibGljIHVu
YXJ5X2Z1bmN0aW9uPF9QYWlyLCB0eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5cGU+CnsKICBjb25z
dCB0eXBlbmFtZSBfUGFpcjo6c2Vjb25kX3R5cGUmIG9wZXJhdG9yKCkoY29uc3QgX1BhaXImIF9f
eCkgY29uc3QgewogICAgcmV0dXJuIF9feC5zZWNvbmQ7CiAgfQp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9QYWlyPiBzdHJ1Y3Qgc2VsZWN0MXN0IDogcHVibGljIF9TZWxlY3Qxc3Q8X1BhaXI+IHt9Owp0
ZW1wbGF0ZSA8Y2xhc3MgX1BhaXI+IHN0cnVjdCBzZWxlY3QybmQgOiBwdWJsaWMgX1NlbGVjdDJu
ZDxfUGFpcj4ge307CgogCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0FyZzI+CnN0cnVj
dCBfUHJvamVjdDFzdCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X0FyZzEsIF9BcmcyLCBfQXJn
MT4gewogIF9BcmcxIG9wZXJhdG9yKCkoY29uc3QgX0FyZzEmIF9feCwgY29uc3QgX0FyZzImKSBj
b25zdCB7IHJldHVybiBfX3g7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwgY2xhc3MgX0Fy
ZzI+CnN0cnVjdCBfUHJvamVjdDJuZCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X0FyZzEsIF9B
cmcyLCBfQXJnMj4gewogIF9BcmcyIG9wZXJhdG9yKCkoY29uc3QgX0FyZzEmLCBjb25zdCBfQXJn
MiYgX195KSBjb25zdCB7IHJldHVybiBfX3k7IH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfQXJnMSwg
Y2xhc3MgX0FyZzI+IApzdHJ1Y3QgcHJvamVjdDFzdCA6IHB1YmxpYyBfUHJvamVjdDFzdDxfQXJn
MSwgX0FyZzI+IHt9OwoKdGVtcGxhdGUgPGNsYXNzIF9BcmcxLCBjbGFzcyBfQXJnMj4Kc3RydWN0
IHByb2plY3QybmQgOiBwdWJsaWMgX1Byb2plY3QybmQ8X0FyZzEsIF9BcmcyPiB7fTsKCiAKIAog
CnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0PgpzdHJ1Y3QgY29uc3RhbnRfdm9pZF9mdW4KewogIHR5
cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKICByZXN1bHRfdHlwZSBfX3ZhbDsKICBjb25zdGFu
dF92b2lkX2Z1bihjb25zdCByZXN1bHRfdHlwZSYgX192KSA6IF9fdmFsKF9fdikge30KICBjb25z
dCByZXN1bHRfdHlwZSYgb3BlcmF0b3IoKSgpIGNvbnN0IHsgcmV0dXJuIF9fdmFsOyB9Cn07ICAK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jlc3VsdCwgY2xhc3MgX0FyZ3VtZW50ID0gX1Jlc3VsdD4KCgoK
c3RydWN0IGNvbnN0YW50X3VuYXJ5X2Z1biA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfQXJndW1l
bnQsIF9SZXN1bHQ+IHsKICBfUmVzdWx0IF9NX3ZhbDsKICBjb25zdGFudF91bmFyeV9mdW4oY29u
c3QgX1Jlc3VsdCYgX192KSA6IF9NX3ZhbChfX3YpIHt9CiAgY29uc3QgX1Jlc3VsdCYgb3BlcmF0
b3IoKShjb25zdCBfQXJndW1lbnQmKSBjb25zdCB7IHJldHVybiBfTV92YWw7IH0KfTsKCgp0ZW1w
bGF0ZSA8Y2xhc3MgX1Jlc3VsdCwgY2xhc3MgX0FyZzEgPSBfUmVzdWx0LCBjbGFzcyBfQXJnMiA9
IF9BcmcxPgoKCgpzdHJ1Y3QgY29uc3RhbnRfYmluYXJ5X2Z1biA6IHB1YmxpYyBiaW5hcnlfZnVu
Y3Rpb248X0FyZzEsIF9BcmcyLCBfUmVzdWx0PiB7CiAgX1Jlc3VsdCBfTV92YWw7CiAgY29uc3Rh
bnRfYmluYXJ5X2Z1bihjb25zdCBfUmVzdWx0JiBfX3YpIDogX01fdmFsKF9fdikge30KICBjb25z
dCBfUmVzdWx0JiBvcGVyYXRvcigpKGNvbnN0IF9BcmcxJiwgY29uc3QgX0FyZzImKSBjb25zdCB7
CiAgICByZXR1cm4gX01fdmFsOwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmVzdWx0Pgppbmxp
bmUgY29uc3RhbnRfdm9pZF9mdW48X1Jlc3VsdD4gY29uc3RhbnQwKGNvbnN0IF9SZXN1bHQmIF9f
dmFsKQp7CiAgcmV0dXJuIGNvbnN0YW50X3ZvaWRfZnVuPF9SZXN1bHQ+KF9fdmFsKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9SZXN1bHQ+CmlubGluZSBjb25zdGFudF91bmFyeV9mdW48X1Jlc3VsdCxf
UmVzdWx0PiBjb25zdGFudDEoY29uc3QgX1Jlc3VsdCYgX192YWwpCnsKICByZXR1cm4gY29uc3Rh
bnRfdW5hcnlfZnVuPF9SZXN1bHQsX1Jlc3VsdD4oX192YWwpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1Jlc3VsdD4KaW5saW5lIGNvbnN0YW50X2JpbmFyeV9mdW48X1Jlc3VsdCxfUmVzdWx0LF9SZXN1
bHQ+IApjb25zdGFudDIoY29uc3QgX1Jlc3VsdCYgX192YWwpCnsKICByZXR1cm4gY29uc3RhbnRf
YmluYXJ5X2Z1bjxfUmVzdWx0LF9SZXN1bHQsX1Jlc3VsdD4oX192YWwpOwp9CgogCiAKY2xhc3Mg
c3VidHJhY3RpdmVfcm5nIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHVuc2lnbmVkIGludCwgdW5z
aWduZWQgaW50PiB7CnByaXZhdGU6CiAgdW5zaWduZWQgaW50IF9NX3RhYmxlWzU1XTsKICBzaXpl
X3QgX01faW5kZXgxOwogIHNpemVfdCBfTV9pbmRleDI7CnB1YmxpYzoKICB1bnNpZ25lZCBpbnQg
b3BlcmF0b3IoKSh1bnNpZ25lZCBpbnQgX19saW1pdCkgewogICAgX01faW5kZXgxID0gKF9NX2lu
ZGV4MSArIDEpICUgNTU7CiAgICBfTV9pbmRleDIgPSAoX01faW5kZXgyICsgMSkgJSA1NTsKICAg
IF9NX3RhYmxlW19NX2luZGV4MV0gPSBfTV90YWJsZVtfTV9pbmRleDFdIC0gX01fdGFibGVbX01f
aW5kZXgyXTsKICAgIHJldHVybiBfTV90YWJsZVtfTV9pbmRleDFdICUgX19saW1pdDsKICB9Cgog
IHZvaWQgX01faW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgX19zZWVkKQogIHsKICAgIHVuc2lnbmVk
IGludCBfX2sgPSAxOwogICAgX01fdGFibGVbNTRdID0gX19zZWVkOwogICAgc2l6ZV90IF9faTsK
ICAgIGZvciAoX19pID0gMDsgX19pIDwgNTQ7IF9faSsrKSB7CiAgICAgICAgc2l6ZV90IF9faWkg
PSAoMjEgKiAoX19pICsgMSkgJSA1NSkgLSAxOwogICAgICAgIF9NX3RhYmxlW19faWldID0gX19r
OwogICAgICAgIF9fayA9IF9fc2VlZCAtIF9fazsKICAgICAgICBfX3NlZWQgPSBfTV90YWJsZVtf
X2lpXTsKICAgIH0KICAgIGZvciAoaW50IF9fbG9vcCA9IDA7IF9fbG9vcCA8IDQ7IF9fbG9vcCsr
KSB7CiAgICAgICAgZm9yIChfX2kgPSAwOyBfX2kgPCA1NTsgX19pKyspCiAgICAgICAgICAgIF9N
X3RhYmxlW19faV0gPSBfTV90YWJsZVtfX2ldIC0gX01fdGFibGVbKDEgKyBfX2kgKyAzMCkgJSA1
NV07CiAgICB9CiAgICBfTV9pbmRleDEgPSAwOwogICAgX01faW5kZXgyID0gMzE7CiAgfQoKICBz
dWJ0cmFjdGl2ZV9ybmcodW5zaWduZWQgaW50IF9fc2VlZCkgeyBfTV9pbml0aWFsaXplKF9fc2Vl
ZCk7IH0KICBzdWJ0cmFjdGl2ZV9ybmcoKSB7IF9NX2luaXRpYWxpemUoMTYxODAzMzk4dSk7IH0K
fTsKCgogCgogCiAKIAogCiAKIAogCgogCiAKIAogCiAKCiAKIAogCiAKIAoKCnRlbXBsYXRlIDxj
bGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIG1lbV9mdW5fdCA6IHB1YmxpYyB1bmFyeV9mdW5j
dGlvbjxfVHAqLF9SZXQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9mdW5fdChfUmV0IChfVHA6
OipfX3BmKSgpKSA6IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoX1RwKiBfX3ApIGNv
bnN0IHsgcmV0dXJuIChfX3AtPipfTV9mKSgpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01f
ZikoKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21l
bV9mdW5fdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxjb25zdCBfVHAqLF9SZXQ+IHsKcHVibGlj
OgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5fdChfUmV0IChfVHA6OipfX3BmKSgpIGNvbnN0KSA6
IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoY29uc3QgX1RwKiBfX3ApIGNvbnN0IHsg
cmV0dXJuIChfX3AtPipfTV9mKSgpOyB9CnByaXZhdGU6CiAgX1JldCAoX1RwOjoqX01fZikoKSBj
b25zdDsKfTsKCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1RwPgpjbGFzcyBtZW1fZnVu
X3JlZl90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCxfUmV0PiB7CnB1YmxpYzoKICBleHBs
aWNpdCBtZW1fZnVuX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKCkpIDogX01fZihfX3BmKSB7fQog
IF9SZXQgb3BlcmF0b3IoKShfVHAmIF9fcikgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoKTsg
fQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKCk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1RwPgpjbGFzcyBjb25zdF9tZW1fZnVuX3JlZl90IDogcHVibGljIHVuYXJ5X2Z1
bmN0aW9uPF9UcCxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuX3JlZl90
KF9SZXQgKF9UcDo6Kl9fcGYpKCkgY29uc3QpIDogX01fZihfX3BmKSB7fQogIF9SZXQgb3BlcmF0
b3IoKShjb25zdCBfVHAmIF9fcikgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoKTsgfQpwcml2
YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBtZW1fZnVuMV90IDogcHVibGljIGJpbmFy
eV9mdW5jdGlvbjxfVHAqLF9BcmcsX1JldD4gewpwdWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bjFf
dChfUmV0IChfVHA6OipfX3BmKShfQXJnKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRv
cigpKF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKF9feCk7
IH0KcHJpdmF0ZToKICBfUmV0IChfVHA6OipfTV9mKShfQXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFz
cyBfUmV0LCBjbGFzcyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3QgOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBl
eHBsaWNpdCBjb25zdF9tZW1fZnVuMV90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpIGNvbnN0KSA6
IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoY29uc3QgX1RwKiBfX3AsIF9BcmcgX194
KSBjb25zdAogICAgeyByZXR1cm4gKF9fcC0+Kl9NX2YpKF9feCk7IH0KcHJpdmF0ZToKICBfUmV0
IChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIG1lbV9mdW4xX3JlZl90IDogcHVibGljIGJpbmFyeV9m
dW5jdGlvbjxfVHAsX0FyZyxfUmV0PiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuMV9yZWZf
dChfUmV0IChfVHA6OipfX3BmKShfQXJnKSkgOiBfTV9mKF9fcGYpIHt9CiAgX1JldCBvcGVyYXRv
cigpKF9UcCYgX19yLCBfQXJnIF9feCkgY29uc3QgeyByZXR1cm4gKF9fci4qX01fZikoX194KTsg
fQpwcml2YXRlOgogIF9SZXQgKF9UcDo6Kl9NX2YpKF9BcmcpOwp9OwoKdGVtcGxhdGUgPGNsYXNz
IF9SZXQsIGNsYXNzIF9UcCwgY2xhc3MgX0FyZz4KY2xhc3MgY29uc3RfbWVtX2Z1bjFfcmVmX3Qg
OiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCxfQXJnLF9SZXQ+IHsKcHVibGljOgogIGV4cGxp
Y2l0IGNvbnN0X21lbV9mdW4xX3JlZl90KF9SZXQgKF9UcDo6Kl9fcGYpKF9BcmcpIGNvbnN0KSA6
IF9NX2YoX19wZikge30KICBfUmV0IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IsIF9BcmcgX194
KSBjb25zdCB7IHJldHVybiAoX19yLipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgX1JldCAoX1Rw
OjoqX01fZikoX0FyZykgY29uc3Q7Cn07CgoKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNsYXNzIG1l
bV9mdW5fdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCosdm9pZD4gewpw
dWJsaWM6CiAgZXhwbGljaXQgbWVtX2Z1bl90KHZvaWQgKF9UcDo6Kl9fcGYpKCkpIDogX01fZihf
X3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAqIF9fcCkgY29uc3QgeyAoX19wLT4qX01fZiko
KTsgfQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCk7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwPgpjbGFzcyBjb25zdF9tZW1fZnVuX3Q8dm9pZCwgX1RwPiA6IHB1YmxpYyB1bmFyeV9mdW5j
dGlvbjxjb25zdCBfVHAqLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IGNvbnN0X21lbV9mdW5f
dCh2b2lkIChfVHA6OipfX3BmKSgpIGNvbnN0KSA6IF9NX2YoX19wZikge30KICB2b2lkIG9wZXJh
dG9yKCkoY29uc3QgX1RwKiBfX3ApIGNvbnN0IHsgKF9fcC0+Kl9NX2YpKCk7IH0KcHJpdmF0ZToK
ICB2b2lkIChfVHA6OipfTV9mKSgpIGNvbnN0Owp9OwoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KY2xh
c3MgbWVtX2Z1bl9yZWZfdDx2b2lkLCBfVHA+IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCx2
b2lkPiB7CnB1YmxpYzoKICBleHBsaWNpdCBtZW1fZnVuX3JlZl90KHZvaWQgKF9UcDo6Kl9fcGYp
KCkpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShfVHAmIF9fcikgY29uc3QgeyAo
X19yLipfTV9mKSgpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoKTsKfTsKCnRlbXBs
YXRlIDxjbGFzcyBfVHA+CmNsYXNzIGNvbnN0X21lbV9mdW5fcmVmX3Q8dm9pZCwgX1RwPiA6IHB1
YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsdm9pZD4gewpwdWJsaWM6CiAgZXhwbGljaXQgY29uc3Rf
bWVtX2Z1bl9yZWZfdCh2b2lkIChfVHA6OipfX3BmKSgpIGNvbnN0KSA6IF9NX2YoX19wZikge30K
ICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3IpIGNvbnN0IHsgKF9fci4qX01fZikoKTsg
fQpwcml2YXRlOgogIHZvaWQgKF9UcDo6Kl9NX2YpKCkgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xh
c3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBtZW1fZnVuMV90PHZvaWQsIF9UcCwgX0FyZz4gOiBw
dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCosX0FyZyx2b2lkPiB7CnB1YmxpYzoKICBleHBsaWNp
dCBtZW1fZnVuMV90KHZvaWQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICB2
b2lkIG9wZXJhdG9yKCkoX1RwKiBfX3AsIF9BcmcgX194KSBjb25zdCB7IChfX3AtPipfTV9mKShf
X3gpOyB9CnByaXZhdGU6CiAgdm9pZCAoX1RwOjoqX01fZikoX0FyZyk7Cn07Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfQXJnPgpjbGFzcyBjb25zdF9tZW1fZnVuMV90PHZvaWQsIF9UcCwg
X0FyZz4gCiAgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPGNvbnN0IF9UcCosX0FyZyx2b2lkPiB7
CnB1YmxpYzoKICBleHBsaWNpdCBjb25zdF9tZW1fZnVuMV90KHZvaWQgKF9UcDo6Kl9fcGYpKF9B
cmcpIGNvbnN0KSA6IF9NX2YoX19wZikge30KICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgX1RwKiBf
X3AsIF9BcmcgX194KSBjb25zdCB7IChfX3AtPipfTV9mKShfX3gpOyB9CnByaXZhdGU6CiAgdm9p
ZCAoX1RwOjoqX01fZikoX0FyZykgY29uc3Q7Cn07Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFz
cyBfQXJnPgpjbGFzcyBtZW1fZnVuMV9yZWZfdDx2b2lkLCBfVHAsIF9Bcmc+CiAgOiBwdWJsaWMg
YmluYXJ5X2Z1bmN0aW9uPF9UcCxfQXJnLHZvaWQ+IHsKcHVibGljOgogIGV4cGxpY2l0IG1lbV9m
dW4xX3JlZl90KHZvaWQgKF9UcDo6Kl9fcGYpKF9BcmcpKSA6IF9NX2YoX19wZikge30KICB2b2lk
IG9wZXJhdG9yKCkoX1RwJiBfX3IsIF9BcmcgX194KSBjb25zdCB7IChfX3IuKl9NX2YpKF9feCk7
IH0KcHJpdmF0ZToKICB2b2lkIChfVHA6OipfTV9mKShfQXJnKTsKfTsKCnRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmNsYXNzIGNvbnN0X21lbV9mdW4xX3JlZl90PHZvaWQsIF9UcCwg
X0FyZz4KICA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLF9Bcmcsdm9pZD4gewpwdWJsaWM6
CiAgZXhwbGljaXQgY29uc3RfbWVtX2Z1bjFfcmVmX3Qodm9pZCAoX1RwOjoqX19wZikoX0FyZykg
Y29uc3QpIDogX01fZihfX3BmKSB7fQogIHZvaWQgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fciwg
X0FyZyBfX3gpIGNvbnN0IHsgKF9fci4qX01fZikoX194KTsgfQpwcml2YXRlOgogIHZvaWQgKF9U
cDo6Kl9NX2YpKF9BcmcpIGNvbnN0Owp9OwoKCgogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jl
dCwgY2xhc3MgX1RwPgppbmxpbmUgbWVtX2Z1bl90PF9SZXQsX1RwPiBtZW1fZnVuKF9SZXQgKF9U
cDo6Kl9fZikoKSkKICB7IHJldHVybiBtZW1fZnVuX3Q8X1JldCxfVHA+KF9fZik7IH0KCnRlbXBs
YXRlIDxjbGFzcyBfUmV0LCBjbGFzcyBfVHA+CmlubGluZSBjb25zdF9tZW1fZnVuX3Q8X1JldCxf
VHA+IG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpIGNvbnN0KQogIHsgcmV0dXJuIGNvbnN0X21l
bV9mdW5fdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U
cD4KaW5saW5lIG1lbV9mdW5fcmVmX3Q8X1JldCxfVHA+IG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6
Kl9fZikoKSkgCiAgeyByZXR1cm4gbWVtX2Z1bl9yZWZfdDxfUmV0LF9UcD4oX19mKTsgfQoKdGVt
cGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9UcD4KaW5saW5lIGNvbnN0X21lbV9mdW5fcmVmX3Q8
X1JldCxfVHA+IG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoKSBjb25zdCkKICB7IHJldHVy
biBjb25zdF9tZW1fZnVuX3JlZl90PF9SZXQsX1RwPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgbWVtX2Z1bjFfdDxfUmV0LF9UcCxf
QXJnPiBtZW1fZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykpCiAgeyByZXR1cm4gbWVtX2Z1bjFf
dDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1Rw
LCBjbGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfdDxfUmV0LF9UcCxfQXJnPiBtZW1f
ZnVuKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgeyByZXR1cm4gY29uc3RfbWVtX2Z1
bjFfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4gbWVt
X2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSkKICB7IHJldHVybiBtZW1fZnVuMV9yZWZf
dDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3MgX1Rw
LCBjbGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4K
bWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25z
dF9tZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JldCwgY2xhc3MgX1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgbWVtX2Z1bjFfdDxfUmV0LF9UcCxf
QXJnPiBtZW1fZnVuMShfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogIHsgcmV0dXJuIG1lbV9mdW4x
X3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9SZXQsIGNsYXNzIF9U
cCwgY2xhc3MgX0FyZz4KaW5saW5lIGNvbnN0X21lbV9mdW4xX3Q8X1JldCxfVHAsX0FyZz4gbWVt
X2Z1bjEoX1JldCAoX1RwOjoqX19mKShfQXJnKSBjb25zdCkKICB7IHJldHVybiBjb25zdF9tZW1f
ZnVuMV90PF9SZXQsX1RwLF9Bcmc+KF9fZik7IH0KCnRlbXBsYXRlIDxjbGFzcyBfUmV0LCBjbGFz
cyBfVHAsIGNsYXNzIF9Bcmc+CmlubGluZSBtZW1fZnVuMV9yZWZfdDxfUmV0LF9UcCxfQXJnPiBt
ZW1fZnVuMV9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSkKICB7IHJldHVybiBtZW1fZnVuMV9y
ZWZfdDxfUmV0LF9UcCxfQXJnPihfX2YpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JldCwgY2xhc3Mg
X1RwLCBjbGFzcyBfQXJnPgppbmxpbmUgY29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0Fy
Zz4KbWVtX2Z1bjFfcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgeyByZXR1cm4g
Y29uc3RfbWVtX2Z1bjFfcmVmX3Q8X1JldCxfVHAsX0FyZz4oX19mKTsgfQoKIAoKCgogCiAKIAoj
IDU5ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGli
L2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0bF90
cmVlLmgiIDIgMwoKCiAgCgoKCgoKdHlwZWRlZiBib29sIF9SYl90cmVlX0NvbG9yX3R5cGU7CmNv
bnN0IF9SYl90cmVlX0NvbG9yX3R5cGUgX1NfcmJfdHJlZV9yZWQgPSBmYWxzZTsKY29uc3QgX1Ji
X3RyZWVfQ29sb3JfdHlwZSBfU19yYl90cmVlX2JsYWNrID0gdHJ1ZTsKCnN0cnVjdCBfUmJfdHJl
ZV9ub2RlX2Jhc2UKewogIHR5cGVkZWYgX1JiX3RyZWVfQ29sb3JfdHlwZSBfQ29sb3JfdHlwZTsK
ICB0eXBlZGVmIF9SYl90cmVlX25vZGVfYmFzZSogX0Jhc2VfcHRyOwoKICBfQ29sb3JfdHlwZSBf
TV9jb2xvcjsgCiAgX0Jhc2VfcHRyIF9NX3BhcmVudDsKICBfQmFzZV9wdHIgX01fbGVmdDsKICBf
QmFzZV9wdHIgX01fcmlnaHQ7CgogIHN0YXRpYyBfQmFzZV9wdHIgX1NfbWluaW11bShfQmFzZV9w
dHIgX194KQogIHsKICAgIHdoaWxlIChfX3gtPl9NX2xlZnQgIT0gMCkgX194ID0gX194LT5fTV9s
ZWZ0OwogICAgcmV0dXJuIF9feDsKICB9CgogIHN0YXRpYyBfQmFzZV9wdHIgX1NfbWF4aW11bShf
QmFzZV9wdHIgX194KQogIHsKICAgIHdoaWxlIChfX3gtPl9NX3JpZ2h0ICE9IDApIF9feCA9IF9f
eC0+X01fcmlnaHQ7CiAgICByZXR1cm4gX194OwogIH0KfTsKCnRlbXBsYXRlIDxjbGFzcyBfVmFs
dWU+CnN0cnVjdCBfUmJfdHJlZV9ub2RlIDogcHVibGljIF9SYl90cmVlX25vZGVfYmFzZQp7CiAg
dHlwZWRlZiBfUmJfdHJlZV9ub2RlPF9WYWx1ZT4qIF9MaW5rX3R5cGU7CiAgX1ZhbHVlIF9NX3Zh
bHVlX2ZpZWxkOwp9OwoKCnN0cnVjdCBfUmJfdHJlZV9iYXNlX2l0ZXJhdG9yCnsKICB0eXBlZGVm
IF9SYl90cmVlX25vZGVfYmFzZTo6X0Jhc2VfcHRyIF9CYXNlX3B0cjsKICB0eXBlZGVmIGJpZGly
ZWN0aW9uYWxfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgcHRyZGlm
Zl90IGRpZmZlcmVuY2VfdHlwZTsKICBfQmFzZV9wdHIgX01fbm9kZTsKCiAgdm9pZCBfTV9pbmNy
ZW1lbnQoKQogIHsKICAgIGlmIChfTV9ub2RlLT5fTV9yaWdodCAhPSAwKSB7CiAgICAgIF9NX25v
ZGUgPSBfTV9ub2RlLT5fTV9yaWdodDsKICAgICAgd2hpbGUgKF9NX25vZGUtPl9NX2xlZnQgIT0g
MCkKICAgICAgICBfTV9ub2RlID0gX01fbm9kZS0+X01fbGVmdDsKICAgIH0KICAgIGVsc2Ugewog
ICAgICBfQmFzZV9wdHIgX195ID0gX01fbm9kZS0+X01fcGFyZW50OwogICAgICB3aGlsZSAoX01f
bm9kZSA9PSBfX3ktPl9NX3JpZ2h0KSB7CiAgICAgICAgX01fbm9kZSA9IF9feTsKICAgICAgICBf
X3kgPSBfX3ktPl9NX3BhcmVudDsKICAgICAgfQogICAgICBpZiAoX01fbm9kZS0+X01fcmlnaHQg
IT0gX195KQogICAgICAgIF9NX25vZGUgPSBfX3k7CiAgICB9CiAgfQoKICB2b2lkIF9NX2RlY3Jl
bWVudCgpCiAgewogICAgaWYgKF9NX25vZGUtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkICYm
CiAgICAgICAgX01fbm9kZS0+X01fcGFyZW50LT5fTV9wYXJlbnQgPT0gX01fbm9kZSkKICAgICAg
X01fbm9kZSA9IF9NX25vZGUtPl9NX3JpZ2h0OwogICAgZWxzZSBpZiAoX01fbm9kZS0+X01fbGVm
dCAhPSAwKSB7CiAgICAgIF9CYXNlX3B0ciBfX3kgPSBfTV9ub2RlLT5fTV9sZWZ0OwogICAgICB3
aGlsZSAoX195LT5fTV9yaWdodCAhPSAwKQogICAgICAgIF9feSA9IF9feS0+X01fcmlnaHQ7CiAg
ICAgIF9NX25vZGUgPSBfX3k7CiAgICB9CiAgICBlbHNlIHsKICAgICAgX0Jhc2VfcHRyIF9feSA9
IF9NX25vZGUtPl9NX3BhcmVudDsKICAgICAgd2hpbGUgKF9NX25vZGUgPT0gX195LT5fTV9sZWZ0
KSB7CiAgICAgICAgX01fbm9kZSA9IF9feTsKICAgICAgICBfX3kgPSBfX3ktPl9NX3BhcmVudDsK
ICAgICAgfQogICAgICBfTV9ub2RlID0gX195OwogICAgfQogIH0KfTsKCnRlbXBsYXRlIDxjbGFz
cyBfVmFsdWUsIGNsYXNzIF9SZWYsIGNsYXNzIF9QdHI+CnN0cnVjdCBfUmJfdHJlZV9pdGVyYXRv
ciA6IHB1YmxpYyBfUmJfdHJlZV9iYXNlX2l0ZXJhdG9yCnsKICB0eXBlZGVmIF9WYWx1ZSB2YWx1
ZV90eXBlOwogIHR5cGVkZWYgX1JlZiByZWZlcmVuY2U7CiAgdHlwZWRlZiBfUHRyIHBvaW50ZXI7
CiAgdHlwZWRlZiBfUmJfdHJlZV9pdGVyYXRvcjxfVmFsdWUsIF9WYWx1ZSYsIF9WYWx1ZSo+ICAg
ICAgICAgICAgIAogICAgaXRlcmF0b3I7CiAgdHlwZWRlZiBfUmJfdHJlZV9pdGVyYXRvcjxfVmFs
dWUsIGNvbnN0IF9WYWx1ZSYsIGNvbnN0IF9WYWx1ZSo+IAogICAgY29uc3RfaXRlcmF0b3I7CiAg
dHlwZWRlZiBfUmJfdHJlZV9pdGVyYXRvcjxfVmFsdWUsIF9SZWYsIF9QdHI+ICAgICAgICAgICAg
ICAgICAgIAogICAgX1NlbGY7CiAgdHlwZWRlZiBfUmJfdHJlZV9ub2RlPF9WYWx1ZT4qIF9MaW5r
X3R5cGU7CgogIF9SYl90cmVlX2l0ZXJhdG9yKCkge30KICBfUmJfdHJlZV9pdGVyYXRvcihfTGlu
a190eXBlIF9feCkgeyBfTV9ub2RlID0gX194OyB9CiAgX1JiX3RyZWVfaXRlcmF0b3IoY29uc3Qg
aXRlcmF0b3ImIF9faXQpIHsgX01fbm9kZSA9IF9faXQuX01fbm9kZTsgfQoKICByZWZlcmVuY2Ug
b3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gX0xpbmtfdHlwZShfTV9ub2RlKS0+X01fdmFsdWVf
ZmllbGQ7IH0KCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihvcGVyYXRv
ciooKSk7IH0KCgogIF9TZWxmJiBvcGVyYXRvcisrKCkgeyBfTV9pbmNyZW1lbnQoKTsgcmV0dXJu
ICp0aGlzOyB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRo
aXM7CiAgICBfTV9pbmNyZW1lbnQoKTsKICAgIHJldHVybiBfX3RtcDsKICB9CiAgICAKICBfU2Vs
ZiYgb3BlcmF0b3ItLSgpIHsgX01fZGVjcmVtZW50KCk7IHJldHVybiAqdGhpczsgfQogIF9TZWxm
IG9wZXJhdG9yLS0oaW50KSB7CiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgX01fZGVjcmVt
ZW50KCk7CiAgICByZXR1cm4gX190bXA7CiAgfQp9OwoKaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBfUmJfdHJlZV9iYXNlX2l0ZXJhdG9yJiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgX1JiX3RyZWVfYmFzZV9pdGVyYXRvciYgX195KSB7CiAgcmV0dXJuIF9feC5fTV9ub2Rl
ID09IF9feS5fTV9ub2RlOwp9CgppbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IF9SYl90cmVl
X2Jhc2VfaXRlcmF0b3ImIF9feCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfUmJfdHJl
ZV9iYXNlX2l0ZXJhdG9yJiBfX3kpIHsKICByZXR1cm4gX194Ll9NX25vZGUgIT0gX195Ll9NX25v
ZGU7Cn0KCiMgMjE0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xp
Yi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2cr
Ky0zL3N0bF90cmVlLmgiIDMKCgppbmxpbmUgdm9pZCAKX1JiX3RyZWVfcm90YXRlX2xlZnQoX1Ji
X3RyZWVfbm9kZV9iYXNlKiBfX3gsIF9SYl90cmVlX25vZGVfYmFzZSomIF9fcm9vdCkKewogIF9S
Yl90cmVlX25vZGVfYmFzZSogX195ID0gX194LT5fTV9yaWdodDsKICBfX3gtPl9NX3JpZ2h0ID0g
X195LT5fTV9sZWZ0OwogIGlmIChfX3ktPl9NX2xlZnQgIT0wKQogICAgX195LT5fTV9sZWZ0LT5f
TV9wYXJlbnQgPSBfX3g7CiAgX195LT5fTV9wYXJlbnQgPSBfX3gtPl9NX3BhcmVudDsKCiAgaWYg
KF9feCA9PSBfX3Jvb3QpCiAgICBfX3Jvb3QgPSBfX3k7CiAgZWxzZSBpZiAoX194ID09IF9feC0+
X01fcGFyZW50LT5fTV9sZWZ0KQogICAgX194LT5fTV9wYXJlbnQtPl9NX2xlZnQgPSBfX3k7CiAg
ZWxzZQogICAgX194LT5fTV9wYXJlbnQtPl9NX3JpZ2h0ID0gX195OwogIF9feS0+X01fbGVmdCA9
IF9feDsKICBfX3gtPl9NX3BhcmVudCA9IF9feTsKfQoKaW5saW5lIHZvaWQgCl9SYl90cmVlX3Jv
dGF0ZV9yaWdodChfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feCwgX1JiX3RyZWVfbm9kZV9iYXNlKiYg
X19yb290KQp7CiAgX1JiX3RyZWVfbm9kZV9iYXNlKiBfX3kgPSBfX3gtPl9NX2xlZnQ7CiAgX194
LT5fTV9sZWZ0ID0gX195LT5fTV9yaWdodDsKICBpZiAoX195LT5fTV9yaWdodCAhPSAwKQogICAg
X195LT5fTV9yaWdodC0+X01fcGFyZW50ID0gX194OwogIF9feS0+X01fcGFyZW50ID0gX194LT5f
TV9wYXJlbnQ7CgogIGlmIChfX3ggPT0gX19yb290KQogICAgX19yb290ID0gX195OwogIGVsc2Ug
aWYgKF9feCA9PSBfX3gtPl9NX3BhcmVudC0+X01fcmlnaHQpCiAgICBfX3gtPl9NX3BhcmVudC0+
X01fcmlnaHQgPSBfX3k7CiAgZWxzZQogICAgX194LT5fTV9wYXJlbnQtPl9NX2xlZnQgPSBfX3k7
CiAgX195LT5fTV9yaWdodCA9IF9feDsKICBfX3gtPl9NX3BhcmVudCA9IF9feTsKfQoKaW5saW5l
IHZvaWQgCl9SYl90cmVlX3JlYmFsYW5jZShfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feCwgX1JiX3Ry
ZWVfbm9kZV9iYXNlKiYgX19yb290KQp7CiAgX194LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVk
OwogIHdoaWxlIChfX3ggIT0gX19yb290ICYmIF9feC0+X01fcGFyZW50LT5fTV9jb2xvciA9PSBf
U19yYl90cmVlX3JlZCkgewogICAgaWYgKF9feC0+X01fcGFyZW50ID09IF9feC0+X01fcGFyZW50
LT5fTV9wYXJlbnQtPl9NX2xlZnQpIHsKICAgICAgX1JiX3RyZWVfbm9kZV9iYXNlKiBfX3kgPSBf
X3gtPl9NX3BhcmVudC0+X01fcGFyZW50LT5fTV9yaWdodDsKICAgICAgaWYgKF9feSAmJiBfX3kt
Pl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkKSB7CiAgICAgICAgX194LT5fTV9wYXJlbnQtPl9N
X2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKICAgICAgICBfX3ktPl9NX2NvbG9yID0gX1NfcmJf
dHJlZV9ibGFjazsKICAgICAgICBfX3gtPl9NX3BhcmVudC0+X01fcGFyZW50LT5fTV9jb2xvciA9
IF9TX3JiX3RyZWVfcmVkOwogICAgICAgIF9feCA9IF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQ7
CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgaWYgKF9feCA9PSBfX3gtPl9NX3BhcmVudC0+
X01fcmlnaHQpIHsKICAgICAgICAgIF9feCA9IF9feC0+X01fcGFyZW50OwogICAgICAgICAgX1Ji
X3RyZWVfcm90YXRlX2xlZnQoX194LCBfX3Jvb3QpOwogICAgICAgIH0KICAgICAgICBfX3gtPl9N
X3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAgIF9feC0+X01fcGFy
ZW50LT5fTV9wYXJlbnQtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgICAgX1JiX3Ry
ZWVfcm90YXRlX3JpZ2h0KF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQsIF9fcm9vdCk7CiAgICAg
IH0KICAgIH0KICAgIGVsc2UgewogICAgICBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feSA9IF9feC0+
X01fcGFyZW50LT5fTV9wYXJlbnQtPl9NX2xlZnQ7CiAgICAgIGlmIChfX3kgJiYgX195LT5fTV9j
b2xvciA9PSBfU19yYl90cmVlX3JlZCkgewogICAgICAgIF9feC0+X01fcGFyZW50LT5fTV9jb2xv
ciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgX195LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVf
YmxhY2s7CiAgICAgICAgX194LT5fTV9wYXJlbnQtPl9NX3BhcmVudC0+X01fY29sb3IgPSBfU19y
Yl90cmVlX3JlZDsKICAgICAgICBfX3ggPSBfX3gtPl9NX3BhcmVudC0+X01fcGFyZW50OwogICAg
ICB9CiAgICAgIGVsc2UgewogICAgICAgIGlmIChfX3ggPT0gX194LT5fTV9wYXJlbnQtPl9NX2xl
ZnQpIHsKICAgICAgICAgIF9feCA9IF9feC0+X01fcGFyZW50OwogICAgICAgICAgX1JiX3RyZWVf
cm90YXRlX3JpZ2h0KF9feCwgX19yb290KTsKICAgICAgICB9CiAgICAgICAgX194LT5fTV9wYXJl
bnQtPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9ibGFjazsKICAgICAgICBfX3gtPl9NX3BhcmVudC0+
X01fcGFyZW50LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVkOwogICAgICAgIF9SYl90cmVlX3Jv
dGF0ZV9sZWZ0KF9feC0+X01fcGFyZW50LT5fTV9wYXJlbnQsIF9fcm9vdCk7CiAgICAgIH0KICAg
IH0KICB9CiAgX19yb290LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7Cn0KCmlubGluZSBf
UmJfdHJlZV9ub2RlX2Jhc2UqCl9SYl90cmVlX3JlYmFsYW5jZV9mb3JfZXJhc2UoX1JiX3RyZWVf
bm9kZV9iYXNlKiBfX3osCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JiX3RyZWVfbm9k
ZV9iYXNlKiYgX19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYl90cmVlX25v
ZGVfYmFzZSomIF9fbGVmdG1vc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JiX3Ry
ZWVfbm9kZV9iYXNlKiYgX19yaWdodG1vc3QpCnsKICBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feSA9
IF9fejsKICBfUmJfdHJlZV9ub2RlX2Jhc2UqIF9feCA9IDA7CiAgX1JiX3RyZWVfbm9kZV9iYXNl
KiBfX3hfcGFyZW50ID0gMDsKICBpZiAoX195LT5fTV9sZWZ0ID09IDApICAgICAgCiAgICBfX3gg
PSBfX3ktPl9NX3JpZ2h0OyAgICAgIAogIGVsc2UKICAgIGlmIChfX3ktPl9NX3JpZ2h0ID09IDAp
ICAgCiAgICAgIF9feCA9IF9feS0+X01fbGVmdDsgICAgIAogICAgZWxzZSB7ICAgICAgICAgICAg
ICAgICAgICAKICAgICAgX195ID0gX195LT5fTV9yaWdodDsgICAgCiAgICAgIHdoaWxlIChfX3kt
Pl9NX2xlZnQgIT0gMCkKICAgICAgICBfX3kgPSBfX3ktPl9NX2xlZnQ7CiAgICAgIF9feCA9IF9f
eS0+X01fcmlnaHQ7CiAgICB9CiAgaWYgKF9feSAhPSBfX3opIHsgICAgICAgICAgIAogICAgX196
LT5fTV9sZWZ0LT5fTV9wYXJlbnQgPSBfX3k7IAogICAgX195LT5fTV9sZWZ0ID0gX196LT5fTV9s
ZWZ0OwogICAgaWYgKF9feSAhPSBfX3otPl9NX3JpZ2h0KSB7CiAgICAgIF9feF9wYXJlbnQgPSBf
X3ktPl9NX3BhcmVudDsKICAgICAgaWYgKF9feCkgX194LT5fTV9wYXJlbnQgPSBfX3ktPl9NX3Bh
cmVudDsKICAgICAgX195LT5fTV9wYXJlbnQtPl9NX2xlZnQgPSBfX3g7ICAgICAgIAogICAgICBf
X3ktPl9NX3JpZ2h0ID0gX196LT5fTV9yaWdodDsKICAgICAgX196LT5fTV9yaWdodC0+X01fcGFy
ZW50ID0gX195OwogICAgfQogICAgZWxzZQogICAgICBfX3hfcGFyZW50ID0gX195OyAgCiAgICBp
ZiAoX19yb290ID09IF9feikKICAgICAgX19yb290ID0gX195OwogICAgZWxzZSBpZiAoX196LT5f
TV9wYXJlbnQtPl9NX2xlZnQgPT0gX196KQogICAgICBfX3otPl9NX3BhcmVudC0+X01fbGVmdCA9
IF9feTsKICAgIGVsc2UgCiAgICAgIF9fei0+X01fcGFyZW50LT5fTV9yaWdodCA9IF9feTsKICAg
IF9feS0+X01fcGFyZW50ID0gX196LT5fTV9wYXJlbnQ7CiAgICAgOjpzd2FwKF9feS0+X01fY29s
b3IsIF9fei0+X01fY29sb3IpOwogICAgX195ID0gX196OwogICAgIAogIH0KICBlbHNlIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgCiAgICBfX3hfcGFyZW50ID0gX195LT5fTV9wYXJlbnQ7CiAg
ICBpZiAoX194KSBfX3gtPl9NX3BhcmVudCA9IF9feS0+X01fcGFyZW50OyAgIAogICAgaWYgKF9f
cm9vdCA9PSBfX3opCiAgICAgIF9fcm9vdCA9IF9feDsKICAgIGVsc2UgCiAgICAgIGlmIChfX3ot
Pl9NX3BhcmVudC0+X01fbGVmdCA9PSBfX3opCiAgICAgICAgX196LT5fTV9wYXJlbnQtPl9NX2xl
ZnQgPSBfX3g7CiAgICAgIGVsc2UKICAgICAgICBfX3otPl9NX3BhcmVudC0+X01fcmlnaHQgPSBf
X3g7CiAgICBpZiAoX19sZWZ0bW9zdCA9PSBfX3opIAogICAgICBpZiAoX196LT5fTV9yaWdodCA9
PSAwKSAgICAgICAgIAogICAgICAgIF9fbGVmdG1vc3QgPSBfX3otPl9NX3BhcmVudDsKICAgICAK
ICAgICAgZWxzZQogICAgICAgIF9fbGVmdG1vc3QgPSBfUmJfdHJlZV9ub2RlX2Jhc2U6Ol9TX21p
bmltdW0oX194KTsKICAgIGlmIChfX3JpZ2h0bW9zdCA9PSBfX3opICAKICAgICAgaWYgKF9fei0+
X01fbGVmdCA9PSAwKSAgICAgICAgICAKICAgICAgICBfX3JpZ2h0bW9zdCA9IF9fei0+X01fcGFy
ZW50OyAgCiAgICAgCiAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIF9f
cmlnaHRtb3N0ID0gX1JiX3RyZWVfbm9kZV9iYXNlOjpfU19tYXhpbXVtKF9feCk7CiAgfQogIGlm
IChfX3ktPl9NX2NvbG9yICE9IF9TX3JiX3RyZWVfcmVkKSB7IAogICAgd2hpbGUgKF9feCAhPSBf
X3Jvb3QgJiYgKF9feCA9PSAwIHx8IF9feC0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjaykp
CiAgICAgIGlmIChfX3ggPT0gX194X3BhcmVudC0+X01fbGVmdCkgewogICAgICAgIF9SYl90cmVl
X25vZGVfYmFzZSogX193ID0gX194X3BhcmVudC0+X01fcmlnaHQ7CiAgICAgICAgaWYgKF9fdy0+
X01fY29sb3IgPT0gX1NfcmJfdHJlZV9yZWQpIHsKICAgICAgICAgIF9fdy0+X01fY29sb3IgPSBf
U19yYl90cmVlX2JsYWNrOwogICAgICAgICAgX194X3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90
cmVlX3JlZDsKICAgICAgICAgIF9SYl90cmVlX3JvdGF0ZV9sZWZ0KF9feF9wYXJlbnQsIF9fcm9v
dCk7CiAgICAgICAgICBfX3cgPSBfX3hfcGFyZW50LT5fTV9yaWdodDsKICAgICAgICB9CiAgICAg
ICAgaWYgKChfX3ctPl9NX2xlZnQgPT0gMCB8fCAKICAgICAgICAgICAgIF9fdy0+X01fbGVmdC0+
X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjaykgJiYKICAgICAgICAgICAgKF9fdy0+X01fcmln
aHQgPT0gMCB8fCAKICAgICAgICAgICAgIF9fdy0+X01fcmlnaHQtPl9NX2NvbG9yID09IF9TX3Ji
X3RyZWVfYmxhY2spKSB7CiAgICAgICAgICBfX3ctPl9NX2NvbG9yID0gX1NfcmJfdHJlZV9yZWQ7
CiAgICAgICAgICBfX3ggPSBfX3hfcGFyZW50OwogICAgICAgICAgX194X3BhcmVudCA9IF9feF9w
YXJlbnQtPl9NX3BhcmVudDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKF9fdy0+X01f
cmlnaHQgPT0gMCB8fCAKICAgICAgICAgICAgICBfX3ctPl9NX3JpZ2h0LT5fTV9jb2xvciA9PSBf
U19yYl90cmVlX2JsYWNrKSB7CiAgICAgICAgICAgIGlmIChfX3ctPl9NX2xlZnQpIF9fdy0+X01f
bGVmdC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAgICAgICBfX3ctPl9NX2Nv
bG9yID0gX1NfcmJfdHJlZV9yZWQ7CiAgICAgICAgICAgIF9SYl90cmVlX3JvdGF0ZV9yaWdodChf
X3csIF9fcm9vdCk7CiAgICAgICAgICAgIF9fdyA9IF9feF9wYXJlbnQtPl9NX3JpZ2h0OwogICAg
ICAgICAgfQogICAgICAgICAgX193LT5fTV9jb2xvciA9IF9feF9wYXJlbnQtPl9NX2NvbG9yOwog
ICAgICAgICAgX194X3BhcmVudC0+X01fY29sb3IgPSBfU19yYl90cmVlX2JsYWNrOwogICAgICAg
ICAgaWYgKF9fdy0+X01fcmlnaHQpIF9fdy0+X01fcmlnaHQtPl9NX2NvbG9yID0gX1NfcmJfdHJl
ZV9ibGFjazsKICAgICAgICAgIF9SYl90cmVlX3JvdGF0ZV9sZWZ0KF9feF9wYXJlbnQsIF9fcm9v
dCk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7ICAgICAgICAgICAg
ICAgICAgIAogICAgICAgIF9SYl90cmVlX25vZGVfYmFzZSogX193ID0gX194X3BhcmVudC0+X01f
bGVmdDsKICAgICAgICBpZiAoX193LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX3JlZCkgewogICAg
ICAgICAgX193LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgICBfX3hfcGFy
ZW50LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfcmVkOwogICAgICAgICAgX1JiX3RyZWVfcm90YXRl
X3JpZ2h0KF9feF9wYXJlbnQsIF9fcm9vdCk7CiAgICAgICAgICBfX3cgPSBfX3hfcGFyZW50LT5f
TV9sZWZ0OwogICAgICAgIH0KICAgICAgICBpZiAoKF9fdy0+X01fcmlnaHQgPT0gMCB8fCAKICAg
ICAgICAgICAgIF9fdy0+X01fcmlnaHQtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfYmxhY2spICYm
CiAgICAgICAgICAgIChfX3ctPl9NX2xlZnQgPT0gMCB8fCAKICAgICAgICAgICAgIF9fdy0+X01f
bGVmdC0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjaykpIHsKICAgICAgICAgIF9fdy0+X01f
Y29sb3IgPSBfU19yYl90cmVlX3JlZDsKICAgICAgICAgIF9feCA9IF9feF9wYXJlbnQ7CiAgICAg
ICAgICBfX3hfcGFyZW50ID0gX194X3BhcmVudC0+X01fcGFyZW50OwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICBpZiAoX193LT5fTV9sZWZ0ID09IDAgfHwgCiAgICAgICAgICAgICAgX193LT5f
TV9sZWZ0LT5fTV9jb2xvciA9PSBfU19yYl90cmVlX2JsYWNrKSB7CiAgICAgICAgICAgIGlmIChf
X3ctPl9NX3JpZ2h0KSBfX3ctPl9NX3JpZ2h0LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7
CiAgICAgICAgICAgIF9fdy0+X01fY29sb3IgPSBfU19yYl90cmVlX3JlZDsKICAgICAgICAgICAg
X1JiX3RyZWVfcm90YXRlX2xlZnQoX193LCBfX3Jvb3QpOwogICAgICAgICAgICBfX3cgPSBfX3hf
cGFyZW50LT5fTV9sZWZ0OwogICAgICAgICAgfQogICAgICAgICAgX193LT5fTV9jb2xvciA9IF9f
eF9wYXJlbnQtPl9NX2NvbG9yOwogICAgICAgICAgX194X3BhcmVudC0+X01fY29sb3IgPSBfU19y
Yl90cmVlX2JsYWNrOwogICAgICAgICAgaWYgKF9fdy0+X01fbGVmdCkgX193LT5fTV9sZWZ0LT5f
TV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgICAgICAgICBfUmJfdHJlZV9yb3RhdGVfcmln
aHQoX194X3BhcmVudCwgX19yb290KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAg
fQogICAgaWYgKF9feCkgX194LT5fTV9jb2xvciA9IF9TX3JiX3RyZWVfYmxhY2s7CiAgfQogIHJl
dHVybiBfX3k7Cn0KCiAKIAogCiAKCgoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfQWxs
b2MsIGJvb2wgX1NfaW5zdGFuY2VsZXNzPgpjbGFzcyBfUmJfdHJlZV9hbGxvY19iYXNlIHsKcHVi
bGljOgogIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46OmFsbG9j
YXRvcl90eXBlIGFsbG9jYXRvcl90eXBlOwogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3Io
KSBjb25zdCB7IHJldHVybiBfTV9ub2RlX2FsbG9jYXRvcjsgfQoKICBfUmJfdHJlZV9hbGxvY19i
YXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2EpCiAgICA6IF9NX25vZGVfYWxsb2NhdG9yKF9f
YSksIF9NX2hlYWRlcigwKSB7fQoKcHJvdGVjdGVkOgogIHR5cGVuYW1lIF9BbGxvY190cmFpdHM8
X1JiX3RyZWVfbm9kZTxfVHA+LCBfQWxsb2M+OjphbGxvY2F0b3JfdHlwZQogICAgICAgICAgIF9N
X25vZGVfYWxsb2NhdG9yOwogIF9SYl90cmVlX25vZGU8X1RwPiogX01faGVhZGVyOwoKICBfUmJf
dHJlZV9ub2RlPF9UcD4qIF9NX2dldF9ub2RlKCkgCiAgICB7IHJldHVybiBfTV9ub2RlX2FsbG9j
YXRvci5hbGxvY2F0ZSgxKTsgfQogIHZvaWQgX01fcHV0X25vZGUoX1JiX3RyZWVfbm9kZTxfVHA+
KiBfX3ApIAogICAgeyBfTV9ub2RlX2FsbG9jYXRvci5kZWFsbG9jYXRlKF9fcCwgMSk7IH0KfTsK
CiAKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0FsbG9jPgpjbGFzcyBfUmJfdHJlZV9hbGxv
Y19iYXNlPF9UcCwgX0FsbG9jLCB0cnVlPiB7CnB1YmxpYzoKICB0eXBlZGVmIHR5cGVuYW1lIF9B
bGxvY190cmFpdHM8X1RwLCBfQWxsb2M+OjphbGxvY2F0b3JfdHlwZSBhbGxvY2F0b3JfdHlwZTsK
ICBhbGxvY2F0b3JfdHlwZSBnZXRfYWxsb2NhdG9yKCkgY29uc3QgeyByZXR1cm4gYWxsb2NhdG9y
X3R5cGUoKTsgfQoKICBfUmJfdHJlZV9hbGxvY19iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJikg
OiBfTV9oZWFkZXIoMCkge30KCnByb3RlY3RlZDoKICBfUmJfdHJlZV9ub2RlPF9UcD4qIF9NX2hl
YWRlcjsKCiAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzPF9SYl90cmVlX25vZGU8X1Rw
PiwgX0FsbG9jPjo6X0FsbG9jX3R5cGUKICAgICAgICAgIF9BbGxvY190eXBlOwoKICBfUmJfdHJl
ZV9ub2RlPF9UcD4qIF9NX2dldF9ub2RlKCkKICAgIHsgcmV0dXJuIF9BbGxvY190eXBlOjphbGxv
Y2F0ZSgxKTsgfQogIHZvaWQgX01fcHV0X25vZGUoX1JiX3RyZWVfbm9kZTxfVHA+KiBfX3ApCiAg
ICB7IF9BbGxvY190eXBlOjpkZWFsbG9jYXRlKF9fcCwgMSk7IH0KfTsKCnRlbXBsYXRlIDxjbGFz
cyBfVHAsIGNsYXNzIF9BbGxvYz4Kc3RydWN0IF9SYl90cmVlX2Jhc2UKICA6IHB1YmxpYyBfUmJf
dHJlZV9hbGxvY19iYXNlPF9UcCwgX0FsbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46Ol9TX2luc3RhbmNlbGVzcz4KewogIHR5cGVk
ZWYgX1JiX3RyZWVfYWxsb2NfYmFzZTxfVHAsIF9BbGxvYywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0FsbG9jX3RyYWl0czxfVHAsIF9BbGxvYz46Ol9TX2luc3RhbmNlbGVzcz4KICAg
ICAgICAgIF9CYXNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX0Jhc2U6OmFsbG9jYXRvcl90eXBlIGFs
bG9jYXRvcl90eXBlOwoKICBfUmJfdHJlZV9iYXNlKGNvbnN0IGFsbG9jYXRvcl90eXBlJiBfX2Ep
IAogICAgOiBfQmFzZShfX2EpIHsgX01faGVhZGVyID0gX01fZ2V0X25vZGUoKTsgfQogIH5fUmJf
dHJlZV9iYXNlKCkgeyBfTV9wdXRfbm9kZShfTV9oZWFkZXIpOyB9Cgp9OwoKIyA1MTkgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3RyZWUuaCIgMwoK
CnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCBj
bGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjwgX1ZhbHVl
ID4gID4KY2xhc3MgX1JiX3RyZWUgOiBwcm90ZWN0ZWQgX1JiX3RyZWVfYmFzZTxfVmFsdWUsIF9B
bGxvYz4gewogIHR5cGVkZWYgX1JiX3RyZWVfYmFzZTxfVmFsdWUsIF9BbGxvYz4gX0Jhc2U7CnBy
b3RlY3RlZDoKICB0eXBlZGVmIF9SYl90cmVlX25vZGVfYmFzZSogX0Jhc2VfcHRyOwogIHR5cGVk
ZWYgX1JiX3RyZWVfbm9kZTxfVmFsdWU+IF9SYl90cmVlX25vZGU7CiAgdHlwZWRlZiBfUmJfdHJl
ZV9Db2xvcl90eXBlIF9Db2xvcl90eXBlOwpwdWJsaWM6CiAgdHlwZWRlZiBfS2V5IGtleV90eXBl
OwogIHR5cGVkZWYgX1ZhbHVlIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiB2YWx1ZV90eXBlKiBwb2lu
dGVyOwogIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSogY29uc3RfcG9pbnRlcjsKICB0eXBlZGVm
IHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmIGNvbnN0
X3JlZmVyZW5jZTsKICB0eXBlZGVmIF9SYl90cmVlX25vZGUqIF9MaW5rX3R5cGU7CiAgdHlwZWRl
ZiBzaXplX3Qgc2l6ZV90eXBlOwogIHR5cGVkZWYgcHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsK
CiAgdHlwZWRlZiB0eXBlbmFtZSBfQmFzZTo6YWxsb2NhdG9yX3R5cGUgYWxsb2NhdG9yX3R5cGU7
CiAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuIF9CYXNlOjpn
ZXRfYWxsb2NhdG9yKCk7IH0KCnByb3RlY3RlZDoKCgoKCgoKcHJvdGVjdGVkOgoKICBfTGlua190
eXBlIF9NX2NyZWF0ZV9ub2RlKGNvbnN0IHZhbHVlX3R5cGUmIF9feCkKICB7CiAgICBfTGlua190
eXBlIF9fdG1wID0gX01fZ2V0X25vZGUoKTsKICAgIHRyeSAgewogICAgICBjb25zdHJ1Y3QoJl9f
dG1wLT5fTV92YWx1ZV9maWVsZCwgX194KTsKICAgIH0KICAgIGNhdGNoKC4uLikgeyAgX01fcHV0
X25vZGUoX190bXApIDsgdGhyb3c7IH0gOwogICAgcmV0dXJuIF9fdG1wOwogIH0KCiAgX0xpbmtf
dHlwZSBfTV9jbG9uZV9ub2RlKF9MaW5rX3R5cGUgX194KQogIHsKICAgIF9MaW5rX3R5cGUgX190
bXAgPSBfTV9jcmVhdGVfbm9kZShfX3gtPl9NX3ZhbHVlX2ZpZWxkKTsKICAgIF9fdG1wLT5fTV9j
b2xvciA9IF9feC0+X01fY29sb3I7CiAgICBfX3RtcC0+X01fbGVmdCA9IDA7CiAgICBfX3RtcC0+
X01fcmlnaHQgPSAwOwogICAgcmV0dXJuIF9fdG1wOwogIH0KCiAgdm9pZCBkZXN0cm95X25vZGUo
X0xpbmtfdHlwZSBfX3ApCiAgewogICAgZGVzdHJveSgmX19wLT5fTV92YWx1ZV9maWVsZCk7CiAg
ICBfTV9wdXRfbm9kZShfX3ApOwogIH0KCnByb3RlY3RlZDoKICBzaXplX3R5cGUgX01fbm9kZV9j
b3VudDsgIAogIF9Db21wYXJlIF9NX2tleV9jb21wYXJlOwoKICBfTGlua190eXBlJiBfTV9yb290
KCkgY29uc3QgCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSYpIF9NX2hlYWRlci0+X01fcGFyZW50
OyB9CiAgX0xpbmtfdHlwZSYgX01fbGVmdG1vc3QoKSBjb25zdCAKICAgIHsgcmV0dXJuIChfTGlu
a190eXBlJikgX01faGVhZGVyLT5fTV9sZWZ0OyB9CiAgX0xpbmtfdHlwZSYgX01fcmlnaHRtb3N0
KCkgY29uc3QgCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSYpIF9NX2hlYWRlci0+X01fcmlnaHQ7
IH0KCiAgc3RhdGljIF9MaW5rX3R5cGUmIF9TX2xlZnQoX0xpbmtfdHlwZSBfX3gpCiAgICB7IHJl
dHVybiAoX0xpbmtfdHlwZSYpKF9feC0+X01fbGVmdCk7IH0KICBzdGF0aWMgX0xpbmtfdHlwZSYg
X1NfcmlnaHQoX0xpbmtfdHlwZSBfX3gpCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSYpKF9feC0+
X01fcmlnaHQpOyB9CiAgc3RhdGljIF9MaW5rX3R5cGUmIF9TX3BhcmVudChfTGlua190eXBlIF9f
eCkKICAgIHsgcmV0dXJuIChfTGlua190eXBlJikoX194LT5fTV9wYXJlbnQpOyB9CiAgc3RhdGlj
IHJlZmVyZW5jZSBfU192YWx1ZShfTGlua190eXBlIF9feCkKICAgIHsgcmV0dXJuIF9feC0+X01f
dmFsdWVfZmllbGQ7IH0KICBzdGF0aWMgY29uc3QgX0tleSYgX1Nfa2V5KF9MaW5rX3R5cGUgX194
KQogICAgeyByZXR1cm4gX0tleU9mVmFsdWUoKShfU192YWx1ZShfX3gpKTsgfQogIHN0YXRpYyBf
Q29sb3JfdHlwZSYgX1NfY29sb3IoX0xpbmtfdHlwZSBfX3gpCiAgICB7IHJldHVybiAoX0NvbG9y
X3R5cGUmKShfX3gtPl9NX2NvbG9yKTsgfQoKICBzdGF0aWMgX0xpbmtfdHlwZSYgX1NfbGVmdChf
QmFzZV9wdHIgX194KQogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUmKShfX3gtPl9NX2xlZnQpOyB9
CiAgc3RhdGljIF9MaW5rX3R5cGUmIF9TX3JpZ2h0KF9CYXNlX3B0ciBfX3gpCiAgICB7IHJldHVy
biAoX0xpbmtfdHlwZSYpKF9feC0+X01fcmlnaHQpOyB9CiAgc3RhdGljIF9MaW5rX3R5cGUmIF9T
X3BhcmVudChfQmFzZV9wdHIgX194KQogICAgeyByZXR1cm4gKF9MaW5rX3R5cGUmKShfX3gtPl9N
X3BhcmVudCk7IH0KICBzdGF0aWMgcmVmZXJlbmNlIF9TX3ZhbHVlKF9CYXNlX3B0ciBfX3gpCiAg
ICB7IHJldHVybiAoKF9MaW5rX3R5cGUpX194KS0+X01fdmFsdWVfZmllbGQ7IH0KICBzdGF0aWMg
Y29uc3QgX0tleSYgX1Nfa2V5KF9CYXNlX3B0ciBfX3gpCiAgICB7IHJldHVybiBfS2V5T2ZWYWx1
ZSgpKF9TX3ZhbHVlKF9MaW5rX3R5cGUoX194KSkpO30gCiAgc3RhdGljIF9Db2xvcl90eXBlJiBf
U19jb2xvcihfQmFzZV9wdHIgX194KQogICAgeyByZXR1cm4gKF9Db2xvcl90eXBlJikoX0xpbmtf
dHlwZShfX3gpLT5fTV9jb2xvcik7IH0KCiAgc3RhdGljIF9MaW5rX3R5cGUgX1NfbWluaW11bShf
TGlua190eXBlIF9feCkgCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSkgIF9SYl90cmVlX25vZGVf
YmFzZTo6X1NfbWluaW11bShfX3gpOyB9CgogIHN0YXRpYyBfTGlua190eXBlIF9TX21heGltdW0o
X0xpbmtfdHlwZSBfX3gpCiAgICB7IHJldHVybiAoX0xpbmtfdHlwZSkgX1JiX3RyZWVfbm9kZV9i
YXNlOjpfU19tYXhpbXVtKF9feCk7IH0KCnB1YmxpYzoKICB0eXBlZGVmIF9SYl90cmVlX2l0ZXJh
dG9yPHZhbHVlX3R5cGUsIHJlZmVyZW5jZSwgcG9pbnRlcj4gaXRlcmF0b3I7CiAgdHlwZWRlZiBf
UmJfdHJlZV9pdGVyYXRvcjx2YWx1ZV90eXBlLCBjb25zdF9yZWZlcmVuY2UsIGNvbnN0X3BvaW50
ZXI+IAogICAgICAgICAgY29uc3RfaXRlcmF0b3I7CgoKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0
b3I8Y29uc3RfaXRlcmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CiAgdHlwZWRlZiByZXZl
cnNlX2l0ZXJhdG9yPGl0ZXJhdG9yPiByZXZlcnNlX2l0ZXJhdG9yOwoKCgoKCgoKIAoKcHJpdmF0
ZToKICBpdGVyYXRvciBfTV9pbnNlcnQoX0Jhc2VfcHRyIF9feCwgX0Jhc2VfcHRyIF9feSwgY29u
c3QgdmFsdWVfdHlwZSYgX192KTsKICBfTGlua190eXBlIF9NX2NvcHkoX0xpbmtfdHlwZSBfX3gs
IF9MaW5rX3R5cGUgX19wKTsKICB2b2lkIF9NX2VyYXNlKF9MaW5rX3R5cGUgX194KTsKCnB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgX1JiX3RyZWUoKQogICAgOiBf
QmFzZShhbGxvY2F0b3JfdHlwZSgpKSwgX01fbm9kZV9jb3VudCgwKSwgX01fa2V5X2NvbXBhcmUo
KQogICAgeyBfTV9lbXB0eV9pbml0aWFsaXplKCk7IH0KCiAgX1JiX3RyZWUoY29uc3QgX0NvbXBh
cmUmIF9fY29tcCkKICAgIDogX0Jhc2UoYWxsb2NhdG9yX3R5cGUoKSksIF9NX25vZGVfY291bnQo
MCksIF9NX2tleV9jb21wYXJlKF9fY29tcCkgCiAgICB7IF9NX2VtcHR5X2luaXRpYWxpemUoKTsg
fQoKICBfUmJfdHJlZShjb25zdCBfQ29tcGFyZSYgX19jb21wLCBjb25zdCBhbGxvY2F0b3JfdHlw
ZSYgX19hKQogICAgOiBfQmFzZShfX2EpLCBfTV9ub2RlX2NvdW50KDApLCBfTV9rZXlfY29tcGFy
ZShfX2NvbXApIAogICAgeyBfTV9lbXB0eV9pbml0aWFsaXplKCk7IH0KCiAgX1JiX3RyZWUoY29u
c3QgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgX194
KSAKICAgIDogX0Jhc2UoX194LmdldF9hbGxvY2F0b3IoKSksCiAgICAgIF9NX25vZGVfY291bnQo
MCksIF9NX2tleV9jb21wYXJlKF9feC5fTV9rZXlfY29tcGFyZSkKICB7IAogICAgaWYgKF9feC5f
TV9yb290KCkgPT0gMCkKICAgICAgX01fZW1wdHlfaW5pdGlhbGl6ZSgpOwogICAgZWxzZSB7CiAg
ICAgIF9TX2NvbG9yKF9NX2hlYWRlcikgPSBfU19yYl90cmVlX3JlZDsKICAgICAgX01fcm9vdCgp
ID0gX01fY29weShfX3guX01fcm9vdCgpLCBfTV9oZWFkZXIpOwogICAgICBfTV9sZWZ0bW9zdCgp
ID0gX1NfbWluaW11bShfTV9yb290KCkpOwogICAgICBfTV9yaWdodG1vc3QoKSA9IF9TX21heGlt
dW0oX01fcm9vdCgpKTsKICAgIH0KICAgIF9NX25vZGVfY291bnQgPSBfX3guX01fbm9kZV9jb3Vu
dDsKICB9CiAgfl9SYl90cmVlKCkgeyBjbGVhcigpOyB9CiAgX1JiX3RyZWU8X0tleSxfVmFsdWUs
X0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgCiAgb3BlcmF0b3I9KGNvbnN0IF9SYl90cmVl
PF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feCk7Cgpwcml2YXRl
OgogIHZvaWQgX01fZW1wdHlfaW5pdGlhbGl6ZSgpIHsKICAgIF9TX2NvbG9yKF9NX2hlYWRlcikg
PSBfU19yYl90cmVlX3JlZDsgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCiAgICBfTV9yb290KCkgPSAwOwogICAgX01fbGVmdG1vc3QoKSA9IF9NX2hlYWRlcjsK
ICAgIF9NX3JpZ2h0bW9zdCgpID0gX01faGVhZGVyOwogIH0KCnB1YmxpYzogICAgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIAogIF9Db21wYXJlIGtleV9jb21wKCkgY29uc3QgeyBy
ZXR1cm4gX01fa2V5X2NvbXBhcmU7IH0KICBpdGVyYXRvciBiZWdpbigpIHsgcmV0dXJuIF9NX2xl
ZnRtb3N0KCk7IH0KICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIF9NX2xl
ZnRtb3N0KCk7IH0KICBpdGVyYXRvciBlbmQoKSB7IHJldHVybiBfTV9oZWFkZXI7IH0KICBjb25z
dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBfTV9oZWFkZXI7IH0KICByZXZlcnNlX2l0
ZXJhdG9yIHJiZWdpbigpIHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3IoZW5kKCkpOyB9CiAgY29u
c3RfcmV2ZXJzZV9pdGVyYXRvciByYmVnaW4oKSBjb25zdCB7IAogICAgcmV0dXJuIGNvbnN0X3Jl
dmVyc2VfaXRlcmF0b3IoZW5kKCkpOyAKICB9CiAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgeyBy
ZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihiZWdpbigpKTsgfQogIGNvbnN0X3JldmVyc2VfaXRlcmF0
b3IgcmVuZCgpIGNvbnN0IHsgCiAgICByZXR1cm4gY29uc3RfcmV2ZXJzZV9pdGVyYXRvcihiZWdp
bigpKTsKICB9IAogIGJvb2wgZW1wdHkoKSBjb25zdCB7IHJldHVybiBfTV9ub2RlX2NvdW50ID09
IDA7IH0KICBzaXplX3R5cGUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX25vZGVfY291bnQ7IH0K
ICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7IHJldHVybiBzaXplX3R5cGUoLTEpOyB9Cgog
IHZvaWQgc3dhcChfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxs
b2M+JiBfX3QpIHsKICAgICA6OnN3YXAoX01faGVhZGVyLCBfX3QuX01faGVhZGVyKTsKICAgICA6
OnN3YXAoX01fbm9kZV9jb3VudCwgX190Ll9NX25vZGVfY291bnQpOwogICAgIDo6c3dhcChfTV9r
ZXlfY29tcGFyZSwgX190Ll9NX2tleV9jb21wYXJlKTsKICB9CiAgICAKcHVibGljOgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKICBwYWlyPGl0ZXJhdG9yLGJvb2w+IGluc2VydF91
bmlxdWUoY29uc3QgdmFsdWVfdHlwZSYgX194KTsKICBpdGVyYXRvciBpbnNlcnRfZXF1YWwoY29u
c3QgdmFsdWVfdHlwZSYgX194KTsKCiAgaXRlcmF0b3IgaW5zZXJ0X3VuaXF1ZShpdGVyYXRvciBf
X3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpOwogIGl0ZXJhdG9yIGluc2VydF9lcXVh
bChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gpOwoKCiAgdGVtcGxh
dGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgaW5zZXJ0X3VuaXF1ZShfSW5wdXRJdGVy
YXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpOwogIHRlbXBsYXRlIDxjbGFzcyBf
SW5wdXRJdGVyYXRvcj4KICB2b2lkIGluc2VydF9lcXVhbChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpOwoKCgoKCgoKICB2b2lkIGVyYXNlKGl0ZXJhdG9yIF9f
cG9zaXRpb24pOwogIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194KTsKICB2b2lk
IGVyYXNlKGl0ZXJhdG9yIF9fZmlyc3QsIGl0ZXJhdG9yIF9fbGFzdCk7CiAgdm9pZCBlcmFzZShj
b25zdCBrZXlfdHlwZSogX19maXJzdCwgY29uc3Qga2V5X3R5cGUqIF9fbGFzdCk7CiAgdm9pZCBj
bGVhcigpIHsKICAgIGlmIChfTV9ub2RlX2NvdW50ICE9IDApIHsKICAgICAgX01fZXJhc2UoX01f
cm9vdCgpKTsKICAgICAgX01fbGVmdG1vc3QoKSA9IF9NX2hlYWRlcjsKICAgICAgX01fcm9vdCgp
ID0gMDsKICAgICAgX01fcmlnaHRtb3N0KCkgPSBfTV9oZWFkZXI7CiAgICAgIF9NX25vZGVfY291
bnQgPSAwOwogICAgfQogIH0gICAgICAKCnB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgCiAgaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYgX194KTsKICBjb25zdF9p
dGVyYXRvciBmaW5kKGNvbnN0IGtleV90eXBlJiBfX3gpIGNvbnN0OwogIHNpemVfdHlwZSBjb3Vu
dChjb25zdCBrZXlfdHlwZSYgX194KSBjb25zdDsKICBpdGVyYXRvciBsb3dlcl9ib3VuZChjb25z
dCBrZXlfdHlwZSYgX194KTsKICBjb25zdF9pdGVyYXRvciBsb3dlcl9ib3VuZChjb25zdCBrZXlf
dHlwZSYgX194KSBjb25zdDsKICBpdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfdHlwZSYg
X194KTsKICBjb25zdF9pdGVyYXRvciB1cHBlcl9ib3VuZChjb25zdCBrZXlfdHlwZSYgX194KSBj
b25zdDsKICBwYWlyPGl0ZXJhdG9yLGl0ZXJhdG9yPiBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlw
ZSYgX194KTsKICBwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gZXF1YWxfcmFu
Z2UoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3Q7CgpwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIAogIGJvb2wgX19yYl92ZXJpZnkoKSBjb25zdDsKfTsKCnRlbXBsYXRl
IDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAg
IGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSBib29sIApvcGVyYXRvcj09KGNv
bnN0IF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIF9f
eCwgCiAgICAgICAgICAgY29uc3QgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0Nv
bXBhcmUsX0FsbG9jPiYgX195KQp7CiAgcmV0dXJuIF9feC5zaXplKCkgPT0gX195LnNpemUoKSAm
JgogICAgICAgICBlcXVhbChfX3guYmVnaW4oKSwgX194LmVuZCgpLCBfX3kuYmVnaW4oKSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAK
ICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSBib29sIApvcGVy
YXRvcjwoY29uc3QgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0Fs
bG9jPiYgX194LCAKICAgICAgICAgIGNvbnN0IF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZh
bHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feSkKewogIHJldHVybiBsZXhpY29ncmFwaGljYWxfY29t
cGFyZShfX3guYmVnaW4oKSwgX194LmVuZCgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX195LmJlZ2luKCksIF9feS5lbmQoKSk7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9LZXks
IGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBh
cmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIHZvaWQgCnN3YXAoX1JiX3RyZWU8X0tleSxfVmFsdWUs
X0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPiYgX194LCAKICAgICBfUmJfdHJlZTxfS2V5LF9W
YWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+JiBfX3kpCnsKICBfX3guc3dhcChfX3kp
Owp9CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZW
YWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgpfUmJfdHJlZTxf
S2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+JiAKX1JiX3RyZWU8X0tleSxf
VmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6b3BlcmF0b3I9KGNvbnN0IF9S
Yl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4mIF9feCkKewog
IGlmICh0aGlzICE9ICZfX3gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
ICBjbGVhcigpOwogICAgX01fbm9kZV9jb3VudCA9IDA7CiAgICBfTV9rZXlfY29tcGFyZSA9IF9f
eC5fTV9rZXlfY29tcGFyZTsgICAgICAgIAogICAgaWYgKF9feC5fTV9yb290KCkgPT0gMCkgewog
ICAgICBfTV9yb290KCkgPSAwOwogICAgICBfTV9sZWZ0bW9zdCgpID0gX01faGVhZGVyOwogICAg
ICBfTV9yaWdodG1vc3QoKSA9IF9NX2hlYWRlcjsKICAgIH0KICAgIGVsc2UgewogICAgICBfTV9y
b290KCkgPSBfTV9jb3B5KF9feC5fTV9yb290KCksIF9NX2hlYWRlcik7CiAgICAgIF9NX2xlZnRt
b3N0KCkgPSBfU19taW5pbXVtKF9NX3Jvb3QoKSk7CiAgICAgIF9NX3JpZ2h0bW9zdCgpID0gX1Nf
bWF4aW11bShfTV9yb290KCkpOwogICAgICBfTV9ub2RlX2NvdW50ID0gX194Ll9NX25vZGVfY291
bnQ7CiAgICB9CiAgfQogIHJldHVybiAqdGhpczsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNs
YXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUs
IGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUs
X0NvbXBhcmUsX0FsbG9jPjo6aXRlcmF0b3IKX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFs
dWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6X01faW5zZXJ0KF9CYXNlX3B0ciBfX3hfLCBfQmFzZV9w
dHIgX195XywgY29uc3QgX1ZhbHVlJiBfX3YpCnsKICBfTGlua190eXBlIF9feCA9IChfTGlua190
eXBlKSBfX3hfOwogIF9MaW5rX3R5cGUgX195ID0gKF9MaW5rX3R5cGUpIF9feV87CiAgX0xpbmtf
dHlwZSBfX3o7CgogIGlmIChfX3kgPT0gX01faGVhZGVyIHx8IF9feCAhPSAwIHx8IAogICAgICBf
TV9rZXlfY29tcGFyZShfS2V5T2ZWYWx1ZSgpKF9fdiksIF9TX2tleShfX3kpKSkgewogICAgX196
ID0gX01fY3JlYXRlX25vZGUoX192KTsKICAgIF9TX2xlZnQoX195KSA9IF9fejsgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgaWYgKF9f
eSA9PSBfTV9oZWFkZXIpIHsKICAgICAgX01fcm9vdCgpID0gX196OwogICAgICBfTV9yaWdodG1v
c3QoKSA9IF9fejsKICAgIH0KICAgIGVsc2UgaWYgKF9feSA9PSBfTV9sZWZ0bW9zdCgpKQogICAg
ICBfTV9sZWZ0bW9zdCgpID0gX196OyAgICAKICB9CiAgZWxzZSB7CiAgICBfX3ogPSBfTV9jcmVh
dGVfbm9kZShfX3YpOwogICAgX1NfcmlnaHQoX195KSA9IF9fejsKICAgIGlmIChfX3kgPT0gX01f
cmlnaHRtb3N0KCkpCiAgICAgIF9NX3JpZ2h0bW9zdCgpID0gX196OyAgIAogIH0KICBfU19wYXJl
bnQoX196KSA9IF9feTsKICBfU19sZWZ0KF9feikgPSAwOwogIF9TX3JpZ2h0KF9feikgPSAwOwog
IF9SYl90cmVlX3JlYmFsYW5jZShfX3osIF9NX2hlYWRlci0+X01fcGFyZW50KTsKICArK19NX25v
ZGVfY291bnQ7CiAgcmV0dXJuIGl0ZXJhdG9yKF9feik7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5
LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21w
YXJlLCBjbGFzcyBfQWxsb2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZh
bHVlLF9Db21wYXJlLF9BbGxvYz46Oml0ZXJhdG9yCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlP
ZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Omluc2VydF9lcXVhbChjb25zdCBfVmFsdWUmIF9f
dikKewogIF9MaW5rX3R5cGUgX195ID0gX01faGVhZGVyOwogIF9MaW5rX3R5cGUgX194ID0gX01f
cm9vdCgpOwogIHdoaWxlIChfX3ggIT0gMCkgewogICAgX195ID0gX194OwogICAgX194ID0gX01f
a2V5X2NvbXBhcmUoX0tleU9mVmFsdWUoKShfX3YpLCBfU19rZXkoX194KSkgPyAKICAgICAgICAg
ICAgX1NfbGVmdChfX3gpIDogX1NfcmlnaHQoX194KTsKICB9CiAgcmV0dXJuIF9NX2luc2VydChf
X3gsIF9feSwgX192KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNs
YXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+
CnBhaXI8dHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUs
X0FsbG9jPjo6aXRlcmF0b3IsIAogICAgIGJvb2w+Cl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlP
ZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Omluc2VydF91bmlxdWUoY29uc3QgX1ZhbHVlJiBf
X3YpCnsKICBfTGlua190eXBlIF9feSA9IF9NX2hlYWRlcjsKICBfTGlua190eXBlIF9feCA9IF9N
X3Jvb3QoKTsKICBib29sIF9fY29tcCA9IHRydWU7CiAgd2hpbGUgKF9feCAhPSAwKSB7CiAgICBf
X3kgPSBfX3g7CiAgICBfX2NvbXAgPSBfTV9rZXlfY29tcGFyZShfS2V5T2ZWYWx1ZSgpKF9fdiks
IF9TX2tleShfX3gpKTsKICAgIF9feCA9IF9fY29tcCA/IF9TX2xlZnQoX194KSA6IF9TX3JpZ2h0
KF9feCk7CiAgfQogIGl0ZXJhdG9yIF9faiA9IGl0ZXJhdG9yKF9feSk7ICAgCiAgaWYgKF9fY29t
cCkKICAgIGlmIChfX2ogPT0gYmVnaW4oKSkgICAgIAogICAgICByZXR1cm4gcGFpcjxpdGVyYXRv
cixib29sPihfTV9pbnNlcnQoX194LCBfX3ksIF9fdiksIHRydWUpOwogICAgZWxzZQogICAgICAt
LV9fajsKICBpZiAoX01fa2V5X2NvbXBhcmUoX1Nfa2V5KF9fai5fTV9ub2RlKSwgX0tleU9mVmFs
dWUoKShfX3YpKSkKICAgIHJldHVybiBwYWlyPGl0ZXJhdG9yLGJvb2w+KF9NX2luc2VydChfX3gs
IF9feSwgX192KSwgdHJ1ZSk7CiAgcmV0dXJuIHBhaXI8aXRlcmF0b3IsYm9vbD4oX19qLCBmYWxz
ZSk7Cn0KCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbCwgY2xhc3MgX0tleU9mVmFs
dWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1Ji
X3RyZWU8X0tleSwgX1ZhbCwgX0tleU9mVmFsdWUsIF9Db21wYXJlLCBfQWxsb2M+OjppdGVyYXRv
ciAKX1JiX3RyZWU8X0tleSwgX1ZhbCwgX0tleU9mVmFsdWUsIF9Db21wYXJlLCBfQWxsb2M+CiAg
OjppbnNlcnRfdW5pcXVlKGl0ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IF9WYWwmIF9fdikKewog
IGlmIChfX3Bvc2l0aW9uLl9NX25vZGUgPT0gX01faGVhZGVyLT5fTV9sZWZ0KSB7ICAKICAgIGlm
IChzaXplKCkgPiAwICYmIAogICAgICAgIF9NX2tleV9jb21wYXJlKF9LZXlPZlZhbHVlKCkoX192
KSwgX1Nfa2V5KF9fcG9zaXRpb24uX01fbm9kZSkpKQogICAgICByZXR1cm4gX01faW5zZXJ0KF9f
cG9zaXRpb24uX01fbm9kZSwgX19wb3NpdGlvbi5fTV9ub2RlLCBfX3YpOwogICAgIAogICAgZWxz
ZQogICAgICByZXR1cm4gaW5zZXJ0X3VuaXF1ZShfX3YpLmZpcnN0OwogIH0gZWxzZSBpZiAoX19w
b3NpdGlvbi5fTV9ub2RlID09IF9NX2hlYWRlcikgeyAgCiAgICBpZiAoX01fa2V5X2NvbXBhcmUo
X1Nfa2V5KF9NX3JpZ2h0bW9zdCgpKSwgX0tleU9mVmFsdWUoKShfX3YpKSkKICAgICAgcmV0dXJu
IF9NX2luc2VydCgwLCBfTV9yaWdodG1vc3QoKSwgX192KTsKICAgIGVsc2UKICAgICAgcmV0dXJu
IGluc2VydF91bmlxdWUoX192KS5maXJzdDsKICB9IGVsc2UgewogICAgaXRlcmF0b3IgX19iZWZv
cmUgPSBfX3Bvc2l0aW9uOwogICAgLS1fX2JlZm9yZTsKICAgIGlmIChfTV9rZXlfY29tcGFyZShf
U19rZXkoX19iZWZvcmUuX01fbm9kZSksIF9LZXlPZlZhbHVlKCkoX192KSkgCiAgICAgICAgJiYg
X01fa2V5X2NvbXBhcmUoX0tleU9mVmFsdWUoKShfX3YpLCBfU19rZXkoX19wb3NpdGlvbi5fTV9u
b2RlKSkpIHsKICAgICAgaWYgKF9TX3JpZ2h0KF9fYmVmb3JlLl9NX25vZGUpID09IDApCiAgICAg
ICAgcmV0dXJuIF9NX2luc2VydCgwLCBfX2JlZm9yZS5fTV9ub2RlLCBfX3YpOyAKICAgICAgZWxz
ZQogICAgICAgIHJldHVybiBfTV9pbnNlcnQoX19wb3NpdGlvbi5fTV9ub2RlLCBfX3Bvc2l0aW9u
Ll9NX25vZGUsIF9fdik7CiAgICAgCiAgICB9IGVsc2UKICAgICAgcmV0dXJuIGluc2VydF91bmlx
dWUoX192KS5maXJzdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsLCBj
bGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9j
Pgp0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWwsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9j
Pjo6aXRlcmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbCxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxs
b2M+CiAgOjppbnNlcnRfZXF1YWwoaXRlcmF0b3IgX19wb3NpdGlvbiwgY29uc3QgX1ZhbCYgX192
KQp7CiAgaWYgKF9fcG9zaXRpb24uX01fbm9kZSA9PSBfTV9oZWFkZXItPl9NX2xlZnQpIHsgIAog
ICAgaWYgKHNpemUoKSA+IDAgJiYgCiAgICAgICAgX01fa2V5X2NvbXBhcmUoX0tleU9mVmFsdWUo
KShfX3YpLCBfU19rZXkoX19wb3NpdGlvbi5fTV9ub2RlKSkpCiAgICAgIHJldHVybiBfTV9pbnNl
cnQoX19wb3NpdGlvbi5fTV9ub2RlLCBfX3Bvc2l0aW9uLl9NX25vZGUsIF9fdik7CiAgICAgCiAg
ICBlbHNlCiAgICAgIHJldHVybiBpbnNlcnRfZXF1YWwoX192KTsKICB9IGVsc2UgaWYgKF9fcG9z
aXRpb24uX01fbm9kZSA9PSBfTV9oZWFkZXIpIHsgCiAgICBpZiAoIV9NX2tleV9jb21wYXJlKF9L
ZXlPZlZhbHVlKCkoX192KSwgX1Nfa2V5KF9NX3JpZ2h0bW9zdCgpKSkpCiAgICAgIHJldHVybiBf
TV9pbnNlcnQoMCwgX01fcmlnaHRtb3N0KCksIF9fdik7CiAgICBlbHNlCiAgICAgIHJldHVybiBp
bnNlcnRfZXF1YWwoX192KTsKICB9IGVsc2UgewogICAgaXRlcmF0b3IgX19iZWZvcmUgPSBfX3Bv
c2l0aW9uOwogICAgLS1fX2JlZm9yZTsKICAgIGlmICghX01fa2V5X2NvbXBhcmUoX0tleU9mVmFs
dWUoKShfX3YpLCBfU19rZXkoX19iZWZvcmUuX01fbm9kZSkpCiAgICAgICAgJiYgIV9NX2tleV9j
b21wYXJlKF9TX2tleShfX3Bvc2l0aW9uLl9NX25vZGUpLCBfS2V5T2ZWYWx1ZSgpKF9fdikpKSB7
CiAgICAgIGlmIChfU19yaWdodChfX2JlZm9yZS5fTV9ub2RlKSA9PSAwKQogICAgICAgIHJldHVy
biBfTV9pbnNlcnQoMCwgX19iZWZvcmUuX01fbm9kZSwgX192KTsgCiAgICAgIGVsc2UKICAgICAg
ICByZXR1cm4gX01faW5zZXJ0KF9fcG9zaXRpb24uX01fbm9kZSwgX19wb3NpdGlvbi5fTV9ub2Rl
LCBfX3YpOwogICAgIAogICAgfSBlbHNlCiAgICAgIHJldHVybiBpbnNlcnRfZXF1YWwoX192KTsK
ICB9Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWwsIGNsYXNzIF9Lb1YsIGNs
YXNzIF9DbXAsIGNsYXNzIF9BbGxvYz4KICB0ZW1wbGF0ZTxjbGFzcyBfSUk+CnZvaWQgX1JiX3Ry
ZWU8X0tleSxfVmFsLF9Lb1YsX0NtcCxfQWxsb2M+CiAgOjppbnNlcnRfZXF1YWwoX0lJIF9fZmly
c3QsIF9JSSBfX2xhc3QpCnsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3Qp
CiAgICBpbnNlcnRfZXF1YWwoKl9fZmlyc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xh
c3MgX1ZhbCwgY2xhc3MgX0tvViwgY2xhc3MgX0NtcCwgY2xhc3MgX0FsbG9jPiAKICB0ZW1wbGF0
ZTxjbGFzcyBfSUk+CnZvaWQgX1JiX3RyZWU8X0tleSxfVmFsLF9Lb1YsX0NtcCxfQWxsb2M+CiAg
OjppbnNlcnRfdW5pcXVlKF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0KSB7CiAgZm9yICggOyBfX2Zp
cnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgaW5zZXJ0X3VuaXF1ZSgqX19maXJzdCk7Cn0K
CiMgMTAyMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2Nj
LWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9z
dGxfdHJlZS5oIiAzCgogICAgICAgICAKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1
ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9B
bGxvYz4KaW5saW5lIHZvaWQgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBh
cmUsX0FsbG9jPgogIDo6ZXJhc2UoaXRlcmF0b3IgX19wb3NpdGlvbikKewogIF9MaW5rX3R5cGUg
X195ID0gCiAgICAoX0xpbmtfdHlwZSkgX1JiX3RyZWVfcmViYWxhbmNlX2Zvcl9lcmFzZShfX3Bv
c2l0aW9uLl9NX25vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfTV9oZWFkZXItPl9NX3BhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9NX2hlYWRlci0+X01fbGVmdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9NX2hlYWRlci0+X01fcmlnaHQpOwogIGRlc3Ryb3lf
bm9kZShfX3kpOwogIC0tX01fbm9kZV9jb3VudDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNs
YXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUs
IGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUs
X0NvbXBhcmUsX0FsbG9jPjo6c2l6ZV90eXBlIApfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZW
YWx1ZSxfQ29tcGFyZSxfQWxsb2M+OjplcmFzZShjb25zdCBfS2V5JiBfX3gpCnsKICBwYWlyPGl0
ZXJhdG9yLGl0ZXJhdG9yPiBfX3AgPSBlcXVhbF9yYW5nZShfX3gpOwogIHNpemVfdHlwZSBfX24g
PSAwOwogIGRpc3RhbmNlKF9fcC5maXJzdCwgX19wLnNlY29uZCwgX19uKTsKICBlcmFzZShfX3Au
Zmlyc3QsIF9fcC5zZWNvbmQpOwogIHJldHVybiBfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5
LCBjbGFzcyBfVmFsLCBjbGFzcyBfS29WLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgp0
eXBlbmFtZSBfUmJfdHJlZTxfS2V5LCBfVmFsLCBfS29WLCBfQ29tcGFyZSwgX0FsbG9jPjo6X0xp
bmtfdHlwZSAKX1JiX3RyZWU8X0tleSxfVmFsLF9Lb1YsX0NvbXBhcmUsX0FsbG9jPgogIDo6X01f
Y29weShfTGlua190eXBlIF9feCwgX0xpbmtfdHlwZSBfX3ApCnsKICAgICAgICAgICAgICAgICAg
ICAgICAgIAogIF9MaW5rX3R5cGUgX190b3AgPSBfTV9jbG9uZV9ub2RlKF9feCk7CiAgX190b3At
Pl9NX3BhcmVudCA9IF9fcDsKIAogIHRyeSAgewogICAgaWYgKF9feC0+X01fcmlnaHQpCiAgICAg
IF9fdG9wLT5fTV9yaWdodCA9IF9NX2NvcHkoX1NfcmlnaHQoX194KSwgX190b3ApOwogICAgX19w
ID0gX190b3A7CiAgICBfX3ggPSBfU19sZWZ0KF9feCk7CgogICAgd2hpbGUgKF9feCAhPSAwKSB7
CiAgICAgIF9MaW5rX3R5cGUgX195ID0gX01fY2xvbmVfbm9kZShfX3gpOwogICAgICBfX3AtPl9N
X2xlZnQgPSBfX3k7CiAgICAgIF9feS0+X01fcGFyZW50ID0gX19wOwogICAgICBpZiAoX194LT5f
TV9yaWdodCkKICAgICAgICBfX3ktPl9NX3JpZ2h0ID0gX01fY29weShfU19yaWdodChfX3gpLCBf
X3kpOwogICAgICBfX3AgPSBfX3k7CiAgICAgIF9feCA9IF9TX2xlZnQoX194KTsKICAgIH0KICB9
CiAgY2F0Y2goLi4uKSB7ICBfTV9lcmFzZShfX3RvcCkgOyB0aHJvdzsgfSA7CgogIHJldHVybiBf
X3RvcDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9m
VmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4Kdm9pZCBfUmJf
dHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjpfTV9lcmFz
ZShfTGlua190eXBlIF9feCkKewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICB3
aGlsZSAoX194ICE9IDApIHsKICAgIF9NX2VyYXNlKF9TX3JpZ2h0KF9feCkpOwogICAgX0xpbmtf
dHlwZSBfX3kgPSBfU19sZWZ0KF9feCk7CiAgICBkZXN0cm95X25vZGUoX194KTsKICAgIF9feCA9
IF9feTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9L
ZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CnZvaWQg
X1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6ZXJh
c2UoaXRlcmF0b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KQp7CiAgaWYgKF9fZmlyc3QgPT0g
YmVnaW4oKSAmJiBfX2xhc3QgPT0gZW5kKCkpCiAgICBjbGVhcigpOwogIGVsc2UKICAgIHdoaWxl
IChfX2ZpcnN0ICE9IF9fbGFzdCkgZXJhc2UoX19maXJzdCsrKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3Mg
X0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4Kdm9pZCBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZW
YWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjplcmFzZShjb25zdCBfS2V5KiBfX2ZpcnN0LCBjb25z
dCBfS2V5KiBfX2xhc3QpIAp7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSBlcmFzZSgqX19m
aXJzdCsrKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tl
eU9mVmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5h
bWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6aXRl
cmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46
OmZpbmQoY29uc3QgX0tleSYgX19rKQp7CiAgX0xpbmtfdHlwZSBfX3kgPSBfTV9oZWFkZXI7ICAg
ICAgIAogIF9MaW5rX3R5cGUgX194ID0gX01fcm9vdCgpOyAgICAgICAKCiAgd2hpbGUgKF9feCAh
PSAwKSAKICAgIGlmICghX01fa2V5X2NvbXBhcmUoX1Nfa2V5KF9feCksIF9faykpCiAgICAgIF9f
eSA9IF9feCwgX194ID0gX1NfbGVmdChfX3gpOwogICAgZWxzZQogICAgICBfX3ggPSBfU19yaWdo
dChfX3gpOwoKICBpdGVyYXRvciBfX2ogPSBpdGVyYXRvcihfX3kpOyAgIAogIHJldHVybiAoX19q
ID09IGVuZCgpIHx8IF9NX2tleV9jb21wYXJlKF9faywgX1Nfa2V5KF9fai5fTV9ub2RlKSkpID8g
CiAgICAgZW5kKCkgOiBfX2o7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUs
IGNsYXNzIF9LZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxs
b2M+CnR5cGVuYW1lIF9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9B
bGxvYz46OmNvbnN0X2l0ZXJhdG9yIApfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxf
Q29tcGFyZSxfQWxsb2M+OjpmaW5kKGNvbnN0IF9LZXkmIF9faykgY29uc3QKewogIF9MaW5rX3R5
cGUgX195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtfdHlwZSBfX3ggPSBfTV9yb290KCk7ICAKCiAg
d2hpbGUgKF9feCAhPSAwKSB7CiAgICBpZiAoIV9NX2tleV9jb21wYXJlKF9TX2tleShfX3gpLCBf
X2spKQogICAgICBfX3kgPSBfX3gsIF9feCA9IF9TX2xlZnQoX194KTsKICAgIGVsc2UKICAgICAg
X194ID0gX1NfcmlnaHQoX194KTsKICB9CiAgY29uc3RfaXRlcmF0b3IgX19qID0gY29uc3RfaXRl
cmF0b3IoX195KTsgICAKICByZXR1cm4gKF9faiA9PSBlbmQoKSB8fCBfTV9rZXlfY29tcGFyZShf
X2ssIF9TX2tleShfX2ouX01fbm9kZSkpKSA/CiAgICBlbmQoKSA6IF9fajsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAg
Y2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFs
dWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6c2l6ZV90eXBlIApfUmJfdHJlZTxfS2V5
LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+CiAgOjpjb3VudChjb25zdCBfS2V5
JiBfX2spIGNvbnN0CnsKICBwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gX19w
ID0gZXF1YWxfcmFuZ2UoX19rKTsKICBzaXplX3R5cGUgX19uID0gMDsKICBkaXN0YW5jZShfX3Au
Zmlyc3QsIF9fcC5zZWNvbmQsIF9fbik7CiAgcmV0dXJuIF9fbjsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAgICAgY2xhc3Mg
X0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tl
eU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6aXRlcmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbHVl
LF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6Omxvd2VyX2JvdW5kKGNvbnN0IF9LZXkm
IF9faykKewogIF9MaW5rX3R5cGUgX195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtfdHlwZSBfX3gg
PSBfTV9yb290KCk7ICAKCiAgd2hpbGUgKF9feCAhPSAwKSAKICAgIGlmICghX01fa2V5X2NvbXBh
cmUoX1Nfa2V5KF9feCksIF9faykpCiAgICAgIF9feSA9IF9feCwgX194ID0gX1NfbGVmdChfX3gp
OwogICAgZWxzZQogICAgICBfX3ggPSBfU19yaWdodChfX3gpOwoKICByZXR1cm4gaXRlcmF0b3Io
X195KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9m
VmFsdWUsIAogICAgICAgICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUg
X1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6Y29uc3Rf
aXRlcmF0b3IgCl9SYl90cmVlPF9LZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxv
Yz4KICA6Omxvd2VyX2JvdW5kKGNvbnN0IF9LZXkmIF9faykgY29uc3QKewogIF9MaW5rX3R5cGUg
X195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtfdHlwZSBfX3ggPSBfTV9yb290KCk7ICAKCiAgd2hp
bGUgKF9feCAhPSAwKSAKICAgIGlmICghX01fa2V5X2NvbXBhcmUoX1Nfa2V5KF9feCksIF9faykp
CiAgICAgIF9feSA9IF9feCwgX194ID0gX1NfbGVmdChfX3gpOwogICAgZWxzZQogICAgICBfX3gg
PSBfU19yaWdodChfX3gpOwoKICByZXR1cm4gY29uc3RfaXRlcmF0b3IoX195KTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9LZXksIGNsYXNzIF9WYWx1ZSwgY2xhc3MgX0tleU9mVmFsdWUsIAogICAgICAg
ICAgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KdHlwZW5hbWUgX1JiX3RyZWU8X0tleSxf
VmFsdWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPjo6aXRlcmF0b3IgCl9SYl90cmVlPF9L
ZXksX1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz4KICA6OnVwcGVyX2JvdW5kKGNv
bnN0IF9LZXkmIF9faykKewogIF9MaW5rX3R5cGUgX195ID0gX01faGVhZGVyOyAgCiAgX0xpbmtf
dHlwZSBfX3ggPSBfTV9yb290KCk7ICAKCiAgIHdoaWxlIChfX3ggIT0gMCkgCiAgICAgaWYgKF9N
X2tleV9jb21wYXJlKF9faywgX1Nfa2V5KF9feCkpKQogICAgICAgX195ID0gX194LCBfX3ggPSBf
U19sZWZ0KF9feCk7CiAgICAgZWxzZQogICAgICAgX194ID0gX1NfcmlnaHQoX194KTsKCiAgIHJl
dHVybiBpdGVyYXRvcihfX3kpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVl
LCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0Fs
bG9jPgp0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFyZSxf
QWxsb2M+Ojpjb25zdF9pdGVyYXRvciAKX1JiX3RyZWU8X0tleSxfVmFsdWUsX0tleU9mVmFsdWUs
X0NvbXBhcmUsX0FsbG9jPgogIDo6dXBwZXJfYm91bmQoY29uc3QgX0tleSYgX19rKSBjb25zdAp7
CiAgX0xpbmtfdHlwZSBfX3kgPSBfTV9oZWFkZXI7ICAKICBfTGlua190eXBlIF9feCA9IF9NX3Jv
b3QoKTsgIAoKICAgd2hpbGUgKF9feCAhPSAwKSAKICAgICBpZiAoX01fa2V5X2NvbXBhcmUoX19r
LCBfU19rZXkoX194KSkpCiAgICAgICBfX3kgPSBfX3gsIF9feCA9IF9TX2xlZnQoX194KTsKICAg
ICBlbHNlCiAgICAgICBfX3ggPSBfU19yaWdodChfX3gpOwoKICAgcmV0dXJuIGNvbnN0X2l0ZXJh
dG9yKF9feSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9L
ZXlPZlZhbHVlLCAKICAgICAgICAgIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGlu
ZSAKcGFpcjx0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxfS2V5T2ZWYWx1ZSxfQ29tcGFy
ZSxfQWxsb2M+OjppdGVyYXRvciwKICAgICB0eXBlbmFtZSBfUmJfdHJlZTxfS2V5LF9WYWx1ZSxf
S2V5T2ZWYWx1ZSxfQ29tcGFyZSxfQWxsb2M+OjppdGVyYXRvcj4KX1JiX3RyZWU8X0tleSxfVmFs
dWUsX0tleU9mVmFsdWUsX0NvbXBhcmUsX0FsbG9jPgogIDo6ZXF1YWxfcmFuZ2UoY29uc3QgX0tl
eSYgX19rKQp7CiAgcmV0dXJuIHBhaXI8aXRlcmF0b3IsIGl0ZXJhdG9yPihsb3dlcl9ib3VuZChf
X2spLCB1cHBlcl9ib3VuZChfX2spKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9W
YWx1ZSwgY2xhc3MgX0tvViwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIApw
YWlyPHR5cGVuYW1lIF9SYl90cmVlPF9LZXksIF9WYWx1ZSwgX0tvViwgX0NvbXBhcmUsIF9BbGxv
Yz46OmNvbnN0X2l0ZXJhdG9yLAogICAgIHR5cGVuYW1lIF9SYl90cmVlPF9LZXksIF9WYWx1ZSwg
X0tvViwgX0NvbXBhcmUsIF9BbGxvYz46OmNvbnN0X2l0ZXJhdG9yPgpfUmJfdHJlZTxfS2V5LCBf
VmFsdWUsIF9Lb1YsIF9Db21wYXJlLCBfQWxsb2M+CiAgOjplcXVhbF9yYW5nZShjb25zdCBfS2V5
JiBfX2spIGNvbnN0CnsKICByZXR1cm4gcGFpcjxjb25zdF9pdGVyYXRvcixjb25zdF9pdGVyYXRv
cj4obG93ZXJfYm91bmQoX19rKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXBwZXJfYm91bmQoX19rKSk7Cn0KCmlubGluZSBpbnQgCl9fYmxhY2tfY291bnQo
X1JiX3RyZWVfbm9kZV9iYXNlKiBfX25vZGUsIF9SYl90cmVlX25vZGVfYmFzZSogX19yb290KQp7
CiAgaWYgKF9fbm9kZSA9PSAwKQogICAgcmV0dXJuIDA7CiAgZWxzZSB7CiAgICBpbnQgX19iYyA9
IF9fbm9kZS0+X01fY29sb3IgPT0gX1NfcmJfdHJlZV9ibGFjayA/IDEgOiAwOwogICAgaWYgKF9f
bm9kZSA9PSBfX3Jvb3QpCiAgICAgIHJldHVybiBfX2JjOwogICAgZWxzZQogICAgICByZXR1cm4g
X19iYyArIF9fYmxhY2tfY291bnQoX19ub2RlLT5fTV9wYXJlbnQsIF9fcm9vdCk7CiAgfQp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX1ZhbHVlLCBjbGFzcyBfS2V5T2ZWYWx1ZSwgCiAg
ICAgICAgICBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgpib29sIF9SYl90cmVlPF9LZXks
X1ZhbHVlLF9LZXlPZlZhbHVlLF9Db21wYXJlLF9BbGxvYz46Ol9fcmJfdmVyaWZ5KCkgY29uc3QK
ewogIGlmIChfTV9ub2RlX2NvdW50ID09IDAgfHwgYmVnaW4oKSA9PSBlbmQoKSkKICAgIHJldHVy
biBfTV9ub2RlX2NvdW50ID09IDAgJiYgYmVnaW4oKSA9PSBlbmQoKSAmJgogICAgICBfTV9oZWFk
ZXItPl9NX2xlZnQgPT0gX01faGVhZGVyICYmIF9NX2hlYWRlci0+X01fcmlnaHQgPT0gX01faGVh
ZGVyOwogIAogIGludCBfX2xlbiA9IF9fYmxhY2tfY291bnQoX01fbGVmdG1vc3QoKSwgX01fcm9v
dCgpKTsKICBmb3IgKGNvbnN0X2l0ZXJhdG9yIF9faXQgPSBiZWdpbigpOyBfX2l0ICE9IGVuZCgp
OyArK19faXQpIHsKICAgIF9MaW5rX3R5cGUgX194ID0gKF9MaW5rX3R5cGUpIF9faXQuX01fbm9k
ZTsKICAgIF9MaW5rX3R5cGUgX19MID0gX1NfbGVmdChfX3gpOwogICAgX0xpbmtfdHlwZSBfX1Ig
PSBfU19yaWdodChfX3gpOwoKICAgIGlmIChfX3gtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVk
KQogICAgICBpZiAoKF9fTCAmJiBfX0wtPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkKSB8fAog
ICAgICAgICAgKF9fUiAmJiBfX1ItPl9NX2NvbG9yID09IF9TX3JiX3RyZWVfcmVkKSkKICAgICAg
ICByZXR1cm4gZmFsc2U7CgogICAgaWYgKF9fTCAmJiBfTV9rZXlfY29tcGFyZShfU19rZXkoX194
KSwgX1Nfa2V5KF9fTCkpKQogICAgICByZXR1cm4gZmFsc2U7CiAgICBpZiAoX19SICYmIF9NX2tl
eV9jb21wYXJlKF9TX2tleShfX1IpLCBfU19rZXkoX194KSkpCiAgICAgIHJldHVybiBmYWxzZTsK
CiAgICBpZiAoIV9fTCAmJiAhX19SICYmIF9fYmxhY2tfY291bnQoX194LCBfTV9yb290KCkpICE9
IF9fbGVuKQogICAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBpZiAoX01fbGVmdG1vc3QoKSAhPSBf
UmJfdHJlZV9ub2RlX2Jhc2U6Ol9TX21pbmltdW0oX01fcm9vdCgpKSkKICAgIHJldHVybiBmYWxz
ZTsKICBpZiAoX01fcmlnaHRtb3N0KCkgIT0gX1JiX3RyZWVfbm9kZV9iYXNlOjpfU19tYXhpbXVt
KF9NX3Jvb3QoKSkpCiAgICByZXR1cm4gZmFsc2U7CgogIHJldHVybiB0cnVlOwp9CgogCiAKCnRl
bXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfVmFsdWUsIGNsYXNzIF9LZXlPZlZhbHVlLCBjbGFz
cyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9BbGxvYyA9IGFsbG9jYXRvcjwgX1ZhbHVlID4g
ID4Kc3RydWN0IHJiX3RyZWUgOiBwdWJsaWMgX1JiX3RyZWU8X0tleSwgX1ZhbHVlLCBfS2V5T2ZW
YWx1ZSwgX0NvbXBhcmUsIF9BbGxvYz4KewogIHR5cGVkZWYgX1JiX3RyZWU8X0tleSwgX1ZhbHVl
LCBfS2V5T2ZWYWx1ZSwgX0NvbXBhcmUsIF9BbGxvYz4gX0Jhc2U7CiAgdHlwZWRlZiB0eXBlbmFt
ZSBfQmFzZTo6YWxsb2NhdG9yX3R5cGUgYWxsb2NhdG9yX3R5cGU7CgogIHJiX3RyZWUoY29uc3Qg
X0NvbXBhcmUmIF9fY29tcCA9IF9Db21wYXJlKCksCiAgICAgICAgICBjb25zdCBhbGxvY2F0b3Jf
dHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUoKSkKICAgIDogX0Jhc2UoX19jb21wLCBfX2EpIHt9
CiAgCiAgfnJiX3RyZWUoKSB7fQp9OwoKCgoKCiAgCgoKCiAKIAogCiMgMzEgIi91ZnMvbmV3bWFu
L3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1n
bnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc2V0IiAyIDMKCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3NldC5oIiAxIDMK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJO
QUxfU0VUX0gKCiAKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ29tcGFyZSA9
IGxlc3M8X0tleT4sCiAgICAgICAgICBjbGFzcyBfQWxsb2MgPSBhbGxvY2F0b3I8IF9LZXkgPiAg
PgoKCgoKY2xhc3Mgc2V0IHsKcHVibGljOgogICAKCiAgdHlwZWRlZiBfS2V5ICAgICBrZXlfdHlw
ZTsKICB0eXBlZGVmIF9LZXkgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfQ29tcGFyZSBrZXlf
Y29tcGFyZTsKICB0eXBlZGVmIF9Db21wYXJlIHZhbHVlX2NvbXBhcmU7CnByaXZhdGU6CiAgdHlw
ZWRlZiBfUmJfdHJlZTxrZXlfdHlwZSwgdmFsdWVfdHlwZSwgCiAgICAgICAgICAgICAgICAgIF9J
ZGVudGl0eTx2YWx1ZV90eXBlPiwga2V5X2NvbXBhcmUsIF9BbGxvYz4gX1JlcF90eXBlOwogIF9S
ZXBfdHlwZSBfTV90OyAgIApwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OmNv
bnN0X3BvaW50ZXIgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3Rf
cG9pbnRlciBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBl
Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6
Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5
cGU6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmV2ZXJzZV9pdGVyYXRvcjsKICB0eXBlZGVmIHR5
cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBl
OwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5j
ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjphbGxvY2F0b3JfdHlwZSBhbGxv
Y2F0b3JfdHlwZTsKCiAgIAoKICBzZXQoKSA6IF9NX3QoX0NvbXBhcmUoKSwgYWxsb2NhdG9yX3R5
cGUoKSkge30KICBleHBsaWNpdCBzZXQoY29uc3QgX0NvbXBhcmUmIF9fY29tcCwKICAgICAgICAg
ICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6
IF9NX3QoX19jb21wLCBfX2EpIHt9CgoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0b3I+
CiAgc2V0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKICAg
IDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgpKQogICAgeyBfTV90Lmluc2VydF91
bmlxdWUoX19maXJzdCwgX19sYXN0KTsgfQoKICB0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcmF0
b3I+CiAgc2V0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwg
Y29uc3QgX0NvbXBhcmUmIF9fY29tcCwKICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9
IGFsbG9jYXRvcl90eXBlKCkpCiAgICA6IF9NX3QoX19jb21wLCBfX2EpIHsgX01fdC5pbnNlcnRf
dW5pcXVlKF9fZmlyc3QsIF9fbGFzdCk7IH0KIyAxMDcgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4u
Ly4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX3NldC5oIiAzCgoKICBzZXQoY29uc3Qgc2V0PF9L
ZXksX0NvbXBhcmUsX0FsbG9jPiYgX194KSA6IF9NX3QoX194Ll9NX3QpIHt9CiAgc2V0PF9LZXks
X0NvbXBhcmUsX0FsbG9jPiYgb3BlcmF0b3I9KGNvbnN0IHNldDxfS2V5LCBfQ29tcGFyZSwgX0Fs
bG9jPiYgX194KQogIHsgCiAgICBfTV90ID0gX194Ll9NX3Q7IAogICAgcmV0dXJuICp0aGlzOwog
IH0KCiAgIAoKICBrZXlfY29tcGFyZSBrZXlfY29tcCgpIGNvbnN0IHsgcmV0dXJuIF9NX3Qua2V5
X2NvbXAoKTsgfQogIHZhbHVlX2NvbXBhcmUgdmFsdWVfY29tcCgpIGNvbnN0IHsgcmV0dXJuIF9N
X3Qua2V5X2NvbXAoKTsgfQogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCB7
IHJldHVybiBfTV90LmdldF9hbGxvY2F0b3IoKTsgfQoKICBpdGVyYXRvciBiZWdpbigpIGNvbnN0
IHsgcmV0dXJuIF9NX3QuYmVnaW4oKTsgfQogIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJu
IF9NX3QuZW5kKCk7IH0KICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IF9NX3QucmJlZ2luKCk7IH0gCiAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3QgeyByZXR1
cm4gX01fdC5yZW5kKCk7IH0KICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gX01fdC5lbXB0
eSgpOyB9CiAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBfTV90LnNpemUoKTsgfQog
IHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3QubWF4X3NpemUoKTsgfQog
IHZvaWQgc3dhcChzZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gpIHsgX01fdC5zd2FwKF9f
eC5fTV90KTsgfQoKICAgCiAgcGFpcjxpdGVyYXRvcixib29sPiBpbnNlcnQoY29uc3QgdmFsdWVf
dHlwZSYgX194KSB7IAogICAgcGFpcjx0eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9yLCBib29s
PiBfX3AgPSBfTV90Lmluc2VydF91bmlxdWUoX194KTsgCiAgICByZXR1cm4gcGFpcjxpdGVyYXRv
ciwgYm9vbD4oX19wLmZpcnN0LCBfX3Auc2Vjb25kKTsKICB9CiAgaXRlcmF0b3IgaW5zZXJ0KGl0
ZXJhdG9yIF9fcG9zaXRpb24sIGNvbnN0IHZhbHVlX3R5cGUmIF9feCkgewogICAgdHlwZWRlZiB0
eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9yIF9SZXBfaXRlcmF0b3I7CiAgICByZXR1cm4gX01f
dC5pbnNlcnRfdW5pcXVlKChfUmVwX2l0ZXJhdG9yJilfX3Bvc2l0aW9uLCBfX3gpOwogIH0KCiAg
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogIHZvaWQgaW5zZXJ0KF9JbnB1dEl0ZXJh
dG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkgewogICAgX01fdC5pbnNlcnRfdW5p
cXVlKF9fZmlyc3QsIF9fbGFzdCk7CiAgfQoKCgoKCgoKCiAgdm9pZCBlcmFzZShpdGVyYXRvciBf
X3Bvc2l0aW9uKSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9yIF9S
ZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJhdG9yJilfX3Bvc2l0aW9uKTsg
CiAgfQogIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194KSB7IAogICAgcmV0dXJu
IF9NX3QuZXJhc2UoX194KTsgCiAgfQogIHZvaWQgZXJhc2UoaXRlcmF0b3IgX19maXJzdCwgaXRl
cmF0b3IgX19sYXN0KSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6Oml0ZXJhdG9y
IF9SZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJhdG9yJilfX2ZpcnN0LCAo
X1JlcF9pdGVyYXRvciYpX19sYXN0KTsgCiAgfQogIHZvaWQgY2xlYXIoKSB7IF9NX3QuY2xlYXIo
KTsgfQoKICAgCgogIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgeyBy
ZXR1cm4gX01fdC5maW5kKF9feCk7IH0KICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUm
IF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5jb3VudChfX3gpOyB9CiAgaXRlcmF0b3IgbG93ZXJf
Ym91bmQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX3QubG93ZXJf
Ym91bmQoX194KTsKICB9CiAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9f
eCkgY29uc3QgewogICAgcmV0dXJuIF9NX3QudXBwZXJfYm91bmQoX194KTsgCiAgfQogIHBhaXI8
aXRlcmF0b3IsaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0IGtleV90eXBlJiBfX3gpIGNvbnN0
IHsKICAgIHJldHVybiBfTV90LmVxdWFsX3JhbmdlKF9feCk7CiAgfQogIGZyaWVuZCBib29sIG9w
ZXJhdG9yPT0gPD4gIChjb25zdCBzZXQmLCBjb25zdCBzZXQmKTsKICBmcmllbmQgYm9vbCBvcGVy
YXRvcjwgPD4gIChjb25zdCBzZXQmLCBjb25zdCBzZXQmKTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBf
S2V5LCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0FsbG9jPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IHNldDxfS2V5LF9Db21wYXJlLF9BbGxvYz4mIF9feCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc2V0PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX195KSB7CiAgcmV0dXJuIF9f
eC5fTV90ID09IF9feS5fTV90Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NvbXBh
cmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHNldDxfS2V5LF9D
b21wYXJlLF9BbGxvYz4mIF9feCwgCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXQ8X0tl
eSxfQ29tcGFyZSxfQWxsb2M+JiBfX3kpIHsKICByZXR1cm4gX194Ll9NX3QgPCBfX3kuX01fdDsK
fQoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX0tleSwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4K
aW5saW5lIHZvaWQgc3dhcChzZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gsIAogICAgICAg
ICAgICAgICAgIHNldDxfS2V5LF9Db21wYXJlLF9BbGxvYz4mIF9feSkgewogIF9feC5zd2FwKF9f
eSk7Cn0KCgoKCgoKCgogCgoKCiAKIAogCiMgMzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
Z251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4u
Ly4uLy4uL2luY2x1ZGUvZysrLTMvc2V0IiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMv
Li4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdGxfbXVsdGlzZXQuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgX19TR0lfU1RMX0lOVEVSTkFMX01VTFRJU0VU
X0gKCiAKCgoKCgoKCnRlbXBsYXRlIDxjbGFzcyBfS2V5LCBjbGFzcyBfQ29tcGFyZSA9IGxlc3M8
X0tleT4sIAogICAgICAgICAgY2xhc3MgX0FsbG9jID0gYWxsb2NhdG9yPCBfS2V5ID4gID4KCgoK
CmNsYXNzIG11bHRpc2V0IHsKcHVibGljOgogICAKCiAgdHlwZWRlZiBfS2V5ICAgICBrZXlfdHlw
ZTsKICB0eXBlZGVmIF9LZXkgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfQ29tcGFyZSBrZXlf
Y29tcGFyZTsKICB0eXBlZGVmIF9Db21wYXJlIHZhbHVlX2NvbXBhcmU7CnByaXZhdGU6CiAgdHlw
ZWRlZiBfUmJfdHJlZTxrZXlfdHlwZSwgdmFsdWVfdHlwZSwgCiAgICAgICAgICAgICAgICAgIF9J
ZGVudGl0eTx2YWx1ZV90eXBlPiwga2V5X2NvbXBhcmUsIF9BbGxvYz4gX1JlcF90eXBlOwogIF9S
ZXBfdHlwZSBfTV90OyAgIApwdWJsaWM6CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5cGU6OmNv
bnN0X3BvaW50ZXIgcG9pbnRlcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3Rf
cG9pbnRlciBjb25zdF9wb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpjb25z
dF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBl
Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKICB0eXBlZGVmIHR5cGVuYW1lIF9SZXBfdHlwZTo6
Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7CiAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5
cGU6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IgcmV2ZXJzZV9pdGVyYXRvcjsKICB0eXBlZGVmIHR5
cGVuYW1lIF9SZXBfdHlwZTo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBjb25zdF9yZXZlcnNlX2l0
ZXJhdG9yOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpzaXplX3R5cGUgc2l6ZV90eXBl
OwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5j
ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjphbGxvY2F0b3JfdHlwZSBhbGxv
Y2F0b3JfdHlwZTsKCiAgIAoKICBtdWx0aXNldCgpIDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0
b3JfdHlwZSgpKSB7fQogIGV4cGxpY2l0IG11bHRpc2V0KGNvbnN0IF9Db21wYXJlJiBfX2NvbXAs
CiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmIF9fYSA9IGFsbG9jYXRv
cl90eXBlKCkpCiAgICA6IF9NX3QoX19jb21wLCBfX2EpIHt9CgoKCiAgdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXJhdG9yPgogIG11bHRpc2V0KF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1
dEl0ZXJhdG9yIF9fbGFzdCkKICAgIDogX01fdChfQ29tcGFyZSgpLCBhbGxvY2F0b3JfdHlwZSgp
KQogICAgeyBfTV90Lmluc2VydF9lcXVhbChfX2ZpcnN0LCBfX2xhc3QpOyB9CgogIHRlbXBsYXRl
IDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICBtdWx0aXNldChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgY29uc3QgX0NvbXBhcmUmIF9fY29t
cCwKICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgX19hID0gYWxsb2NhdG9yX3R5cGUo
KSkKICAgIDogX01fdChfX2NvbXAsIF9fYSkgeyBfTV90Lmluc2VydF9lcXVhbChfX2ZpcnN0LCBf
X2xhc3QpOyB9CgojIDExMyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfbXVsdGlzZXQuaCIgMwoKCiAgbXVsdGlzZXQoY29uc3QgbXVsdGlzZXQ8X0tl
eSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gpIDogX01fdChfX3guX01fdCkge30KICBtdWx0aXNldDxf
S2V5LF9Db21wYXJlLF9BbGxvYz4mCiAgb3BlcmF0b3I9KGNvbnN0IG11bHRpc2V0PF9LZXksX0Nv
bXBhcmUsX0FsbG9jPiYgX194KSB7CiAgICBfTV90ID0gX194Ll9NX3Q7IAogICAgcmV0dXJuICp0
aGlzOwogIH0KCiAgIAoKICBrZXlfY29tcGFyZSBrZXlfY29tcCgpIGNvbnN0IHsgcmV0dXJuIF9N
X3Qua2V5X2NvbXAoKTsgfQogIHZhbHVlX2NvbXBhcmUgdmFsdWVfY29tcCgpIGNvbnN0IHsgcmV0
dXJuIF9NX3Qua2V5X2NvbXAoKTsgfQogIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBj
b25zdCB7IHJldHVybiBfTV90LmdldF9hbGxvY2F0b3IoKTsgfQoKICBpdGVyYXRvciBiZWdpbigp
IGNvbnN0IHsgcmV0dXJuIF9NX3QuYmVnaW4oKTsgfQogIGl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsg
cmV0dXJuIF9NX3QuZW5kKCk7IH0KICByZXZlcnNlX2l0ZXJhdG9yIHJiZWdpbigpIGNvbnN0IHsg
cmV0dXJuIF9NX3QucmJlZ2luKCk7IH0gCiAgcmV2ZXJzZV9pdGVyYXRvciByZW5kKCkgY29uc3Qg
eyByZXR1cm4gX01fdC5yZW5kKCk7IH0KICBib29sIGVtcHR5KCkgY29uc3QgeyByZXR1cm4gX01f
dC5lbXB0eSgpOyB9CiAgc2l6ZV90eXBlIHNpemUoKSBjb25zdCB7IHJldHVybiBfTV90LnNpemUo
KTsgfQogIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9NX3QubWF4X3NpemUo
KTsgfQogIHZvaWQgc3dhcChtdWx0aXNldDxfS2V5LF9Db21wYXJlLF9BbGxvYz4mIF9feCkgeyBf
TV90LnN3YXAoX194Ll9NX3QpOyB9CgogICAKICBpdGVyYXRvciBpbnNlcnQoY29uc3QgdmFsdWVf
dHlwZSYgX194KSB7IAogICAgcmV0dXJuIF9NX3QuaW5zZXJ0X2VxdWFsKF9feCk7CiAgfQogIGl0
ZXJhdG9yIGluc2VydChpdGVyYXRvciBfX3Bvc2l0aW9uLCBjb25zdCB2YWx1ZV90eXBlJiBfX3gp
IHsKICAgIHR5cGVkZWYgdHlwZW5hbWUgX1JlcF90eXBlOjppdGVyYXRvciBfUmVwX2l0ZXJhdG9y
OwogICAgcmV0dXJuIF9NX3QuaW5zZXJ0X2VxdWFsKChfUmVwX2l0ZXJhdG9yJilfX3Bvc2l0aW9u
LCBfX3gpOwogIH0KCgogIHRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KICB2b2lkIGlu
c2VydChfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICAg
IF9NX3QuaW5zZXJ0X2VxdWFsKF9fZmlyc3QsIF9fbGFzdCk7CiAgfQoKCgoKCgoKCiAgdm9pZCBl
cmFzZShpdGVyYXRvciBfX3Bvc2l0aW9uKSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVwX3R5
cGU6Oml0ZXJhdG9yIF9SZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJhdG9y
JilfX3Bvc2l0aW9uKTsgCiAgfQogIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYgX194
KSB7IAogICAgcmV0dXJuIF9NX3QuZXJhc2UoX194KTsgCiAgfQogIHZvaWQgZXJhc2UoaXRlcmF0
b3IgX19maXJzdCwgaXRlcmF0b3IgX19sYXN0KSB7IAogICAgdHlwZWRlZiB0eXBlbmFtZSBfUmVw
X3R5cGU6Oml0ZXJhdG9yIF9SZXBfaXRlcmF0b3I7CiAgICBfTV90LmVyYXNlKChfUmVwX2l0ZXJh
dG9yJilfX2ZpcnN0LCAoX1JlcF9pdGVyYXRvciYpX19sYXN0KTsgCiAgfQogIHZvaWQgY2xlYXIo
KSB7IF9NX3QuY2xlYXIoKTsgfQoKICAgCgogIGl0ZXJhdG9yIGZpbmQoY29uc3Qga2V5X3R5cGUm
IF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5maW5kKF9feCk7IH0KICBzaXplX3R5cGUgY291bnQo
Y29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgeyByZXR1cm4gX01fdC5jb3VudChfX3gpOyB9CiAg
aXRlcmF0b3IgbG93ZXJfYm91bmQoY29uc3Qga2V5X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0
dXJuIF9NX3QubG93ZXJfYm91bmQoX194KTsKICB9CiAgaXRlcmF0b3IgdXBwZXJfYm91bmQoY29u
c3Qga2V5X3R5cGUmIF9feCkgY29uc3QgewogICAgcmV0dXJuIF9NX3QudXBwZXJfYm91bmQoX194
KTsgCiAgfQogIHBhaXI8aXRlcmF0b3IsaXRlcmF0b3I+IGVxdWFsX3JhbmdlKGNvbnN0IGtleV90
eXBlJiBfX3gpIGNvbnN0IHsKICAgIHJldHVybiBfTV90LmVxdWFsX3JhbmdlKF9feCk7CiAgfQog
IGZyaWVuZCBib29sIG9wZXJhdG9yPT0gPD4gIChjb25zdCBtdWx0aXNldCYsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlzZXQmKTsKICBm
cmllbmQgYm9vbCBvcGVyYXRvcjwgPD4gIChjb25zdCBtdWx0aXNldCYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXNldCYpOwp9OwoKdGVt
cGxhdGUgPGNsYXNzIF9LZXksIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgbXVsdGlzZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gs
IAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpc2V0PF9LZXksX0NvbXBhcmUsX0Fs
bG9jPiYgX195KSB7CiAgcmV0dXJuIF9feC5fTV90ID09IF9feS5fTV90Owp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0tleSwgY2xhc3MgX0NvbXBhcmUsIGNsYXNzIF9BbGxvYz4KaW5saW5lIGJvb2wgb3Bl
cmF0b3I8KGNvbnN0IG11bHRpc2V0PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX194LCAKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpc2V0PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX195
KSB7CiAgcmV0dXJuIF9feC5fTV90IDwgX195Ll9NX3Q7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9L
ZXksIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfQWxsb2M+CmlubGluZSB2b2lkIHN3YXAobXVsdGlz
ZXQ8X0tleSxfQ29tcGFyZSxfQWxsb2M+JiBfX3gsIAogICAgICAgICAgICAgICAgIG11bHRpc2V0
PF9LZXksX0NvbXBhcmUsX0FsbG9jPiYgX195KSB7CiAgX194LnN3YXAoX195KTsKfQoKCgoKCgoK
CiAKCgoKIAogCiAKIyAzNCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zZXQiIDIgMwoKCgoKIAogCiAKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L3RyYXZlcnNhbC5oIiAyCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRl
bXBsYXRlPGludCBOX2RpbWVuc2lvbnM+CmNsYXNzIFRyYXZlcnNhbE9yZGVyIHsKCnB1YmxpYzoK
ICAgIHR5cGVkZWYgVGlueVZlY3RvcjxpbnQsIE5fZGltZW5zaW9ucz4gVF9jb29yZDsKICAgIHR5
cGVkZWYgVmVjdG9yPFRfY29vcmQ+ICAgICAgICAgICAgICAgVF90cmF2ZXJzYWw7CgogICAgVHJh
dmVyc2FsT3JkZXIoKQogICAgewogICAgICAgIHNpemVfID0gMDsKICAgIH0KCiAgICBUcmF2ZXJz
YWxPcmRlcihjb25zdCBUX2Nvb3JkJiBzaXplLCBUX3RyYXZlcnNhbCYgb3JkZXIpCiAgICAgICAg
OiBzaXplXyhzaXplKSwgb3JkZXJfKG9yZGVyKQogICAgeyB9CgogICAgVHJhdmVyc2FsT3JkZXIo
Y29uc3QgVF9jb29yZCYgc2l6ZSkKICAgICAgICA6IHNpemVfKHNpemUpCiAgICB7IH0KCiAgICBU
X2Nvb3JkIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgICB7IHJldHVybiBvcmRlcl9baV07IH0K
CiAgICBUX2Nvb3JkJiBvcGVyYXRvcltdKGludCBpKQogICAgeyByZXR1cm4gb3JkZXJfW2ldOyB9
CgogICAgaW50IGxlbmd0aCgpIGNvbnN0CiAgICB7IHJldHVybiBvcmRlcl8ubGVuZ3RoKCk7IH0K
CiAgICBib29sIG9wZXJhdG9yPChjb25zdCBUcmF2ZXJzYWxPcmRlcjxOX2RpbWVuc2lvbnM+JiB4
KSBjb25zdAogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IE5fZGltZW5zaW9uczsgKytp
KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHNpemVfW2ldIDwgeC5zaXplX1tpXSkKICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICBlbHNlIGlmIChzaXplX1tpXSA+IHgu
c2l6ZV9baV0pCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAg
IHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhdmVyc2Fs
T3JkZXI8Tl9kaW1lbnNpb25zPiYgeCkgY29uc3QKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7
IGkgPCBOX2RpbWVuc2lvbnM7ICsraSkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChzaXplX1tp
XSAhPSB4LnNpemVfW2ldKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0K
CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBUX3RyYXZlcnNhbCBv
cmRlcl87CiAgICBUX2Nvb3JkICAgICBzaXplXzsKfTsKCiAKCgoKdGVtcGxhdGU8PgpjbGFzcyBU
cmF2ZXJzYWxPcmRlcjwwPiB7CnB1YmxpYzoKICAgICBUcmF2ZXJzYWxPcmRlciAoKSB7fSAgCn07
Cgp0ZW1wbGF0ZTxpbnQgTl9kaW1lbnNpb25zPgpjbGFzcyBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rp
b24gewpwdWJsaWM6CiAgICB0eXBlZGVmIFRyYXZlcnNhbE9yZGVyPE5fZGltZW5zaW9ucz4gICAg
ICAgIFRfdHJhdmVyc2FsOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF90cmF2ZXJzYWw6OlRfY29v
cmQgICBUX2Nvb3JkOwogICAgdHlwZWRlZiBzZXQ8VF90cmF2ZXJzYWw+ICAgICAgICAgICAgICAg
ICAgICBUX3NldDsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIHNldDxUX3RyYXZlcnNhbD46OmNvbnN0
X2l0ZXJhdG9yIFRfaXRlcmF0b3I7CgogICAgY29uc3QgVF90cmF2ZXJzYWwqIGZpbmQoY29uc3Qg
VF9jb29yZCYgc2l6ZSkKICAgIHsKICAgICAgICBUX2l0ZXJhdG9yIGl0ZXIgPSB0cmF2ZXJzYWxz
Xy5maW5kKFRfdHJhdmVyc2FsKHNpemUpKTsKICAgICAgICBpZiAoaXRlciAhPSB0cmF2ZXJzYWxz
Xy5lbmQoKSkKICAgICAgICAgICAgcmV0dXJuICYoKml0ZXIpOwogICAgICAgIHJldHVybiAwOwog
ICAgfQoKICAgIHZvaWQgaW5zZXJ0KFRfdHJhdmVyc2FsIHgpCiAgICB7CiAgICAgICAgdHJhdmVy
c2Fsc18uaW5zZXJ0KHgpOwogICAgfQoKcHJvdGVjdGVkOgogICAgc3RhdGljIFRfc2V0IHRyYXZl
cnNhbHNfOwp9OwoKIAoKCgoKdGVtcGxhdGU8PgpjbGFzcyBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rp
b248MD4gewpwdWJsaWM6CiAgICB0eXBlZGVmIGludCBUX3RyYXZlcnNhbDsKICAgIHR5cGVkZWYg
aW50IFRfY29vcmQ7CiAgICB0eXBlZGVmIGludCBUX3NldDsKICAgIHR5cGVkZWYgaW50IFRfaXRl
cmF0b3I7CgogICAgY29uc3QgVF90cmF2ZXJzYWwqIGZpbmQoY29uc3QgVF9jb29yZCYgc2l6ZSkK
ICAgIHsgcmV0dXJuIDA7IH0KfTsKCn0gCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei90cmF2ZXJzYWwuY2MiIDEKCiNkZWZpbmUgQlpfVFJBVkVSU0FMX0NDCgoK
CgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKIAoKCgoKCnRlbXBsYXRlPGludCBOX2RpbWVuc2lv
bnM+CnR5cGVuYW1lICBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rpb248Tl9kaW1lbnNpb25zPjo6VF9z
ZXQKICAgIFRyYXZlcnNhbE9yZGVyQ29sbGVjdGlvbjxOX2RpbWVuc2lvbnM+Ojp0cmF2ZXJzYWxz
XzsKCnRlbXBsYXRlPGludCBOPgp2b2lkIG1ha2VIaWxiZXJ0KFZlY3RvcjxUaW55VmVjdG9yPGlu
dCxOPiA+JiBjb29yZCwgCiAgICBpbnQgeDAsIGludCB5MCwgaW50IHhpcywgaW50IHhqcywKICAg
IGludCB5aXMsIGludCB5anMsIGludCBuLCBpbnQmIGkpCnsKICAgICAKICAgICA7CgogICAgaWYg
KCFuKQogICAgewogICAgICAgIGlmIChpID4gY29vcmQubGVuZ3RoKCkpCiAgICAgICAgewogICAg
ICAgICAgICBjZXJyIDw8ICJtYWtlSGlsYmVydDogdmVjdG9yIG5vdCBsb25nIGVub3VnaCIgPDwg
ZW5kbDsKICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICB9CiAgICAgICAgY29vcmRbaV1bMF0g
PSB4MCArICh4aXMreWlzKS8yOwogICAgICAgIGNvb3JkW2ldWzFdID0geTAgKyAoeGpzK3lqcykv
MjsKICAgICAgICArK2k7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBtYWtlSGlsYmVydChjb29y
ZCx4MCx5MCx5aXMvMiwgeWpzLzIsIHhpcy8yLCB4anMvMiwgbi0xLCBpKTsKICAgICAgICBtYWtl
SGlsYmVydChjb29yZCx4MCt4aXMvMix5MCt4anMvMix4aXMvMix4anMvMix5aXMvMix5anMvMixu
LTEsaSk7CiAgICAgICAgbWFrZUhpbGJlcnQoY29vcmQseDAreGlzLzIreWlzLzIseTAreGpzLzIr
eWpzLzIseGlzLzIseGpzLzIseWlzLzIsCiAgICAgICAgICAgIHlqcy8yLG4tMSxpKTsKICAgICAg
ICBtYWtlSGlsYmVydChjb29yZCx4MCt4aXMvMit5aXMsIHkwK3hqcy8yK3lqcywgLXlpcy8yLC15
anMvMiwteGlzLzIsCiAgICAgICAgICAgIC14anMvMixuLTEsaSk7CiAgICB9Cn0KCnRlbXBsYXRl
PGludCBOX2RpbWVuc2lvbnM+CnZvaWQgTWFrZUhpbGJlcnRUcmF2ZXJzYWwoVmVjdG9yPFRpbnlW
ZWN0b3I8aW50LE5fZGltZW5zaW9ucz4gPiYgY29vcmQsIAogICAgaW50IGxlbmd0aCkKewogICAg
IAogICAgIDsKCiAgICAgCiAgICBpbnQgZCA9IChpbnQpKDo6Y2VpbCg6OmxvZygoZG91YmxlKWxl
bmd0aCkgLyAwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNykpOyAgCgogICAgaW50IE4gPSAxIDw8IGQ7
CiAgICBjb25zdCBpbnQgTnBvaW50cyA9IE4qTjsKICAgIFZlY3RvcjxUaW55VmVjdG9yPGludCwy
PiA+IGNvb3JkMihOcG9pbnRzKTsKCiAgICBpbnQgaT0wOwogICAgbWFrZUhpbGJlcnQoY29vcmQy
LDAsMCwzMjc2OCwwLDAsMzI3NjgsZCxpKTsKCiAgICBpbnQgeHAwID0gY29vcmQyWzBdWzBdOwog
ICAgaW50IHlwMCA9IGNvb3JkMlswXVsxXTsKCiAgICBpbnQgaj0wOwoKICAgIGNvb3JkLnJlc2l6
ZShsZW5ndGggKiBsZW5ndGgpOwoKICAgIGZvciAoaW50IGk9MDsgaSA8IE5wb2ludHM7ICsraSkK
ICAgIHsKICAgICAgICBjb29yZDJbaV1bMF0gPSAoY29vcmQyW2ldWzBdLXhwMCkvKDIqeHAwKTsK
ICAgICAgICBjb29yZDJbaV1bMV0gPSAoY29vcmQyW2ldWzFdLXlwMCkvKDIqeXAwKTsKCiAgICAg
ICAgaWYgKChjb29yZDJbaV1bMF0gPCBsZW5ndGgpICYmIChjb29yZDJbaV1bMV0gPCBsZW5ndGgp
IAogICAgICAgICAgICAmJiAoY29vcmQyW2ldWzBdID49IDApICYmIChjb29yZDJbaV1bMV0gPj0g
MCkpCiAgICAgICAgewogICAgICAgICAgICBjb29yZFtqXVswXSA9IGNvb3JkMltpXVswXTsKICAg
ICAgICAgICAgY29vcmRbal1bMV0gPSBjb29yZDJbaV1bMV07CiAgICAgICAgICAgICsrajsKICAg
ICAgICB9CiAgICB9Cn0KCnRlbXBsYXRlPGludCBOX2RpbWVuc2lvbnM+CnZvaWQgZ2VuZXJhdGVG
YXN0VHJhdmVyc2FsT3JkZXIoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9kaW1lbnNpb25zPiYgc2l6
ZSkKewogICAgIDsKICAgICA7CgogICAgVHJhdmVyc2FsT3JkZXJDb2xsZWN0aW9uPDI+IHRyYXZD
b2w7CiAgICBpZiAodHJhdkNvbC5maW5kKHNpemUpKQogICAgICAgIHJldHVybjsKCiAgICBWZWN0
b3I8VGlueVZlY3RvcjxpbnQsMj4gPiBvcmRlcmluZyhzaXplWzBdKTsKCiAgICBNYWtlSGlsYmVy
dFRyYXZlcnNhbChvcmRlcmluZywgc2l6ZVswXSk7CiAgICB0cmF2Q29sLmluc2VydChUcmF2ZXJz
YWxPcmRlcjwyPihzaXplLCBvcmRlcmluZykpOwp9Cgp9IAoKCiMgMTY3ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdHJhdmVyc2FsLmgiIDIKCgoKCgoKIyA2OCAiL3Vm
cy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCgoKCiAKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovaW5kZXhleHByLmgiIDEK
IAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0lOREVYRVhQ
Ul9ICgoKCgoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2Js
aXR6L2V0YmFzZS5oIiAxCgojZGVmaW5lIEJaX0VUQkFTRV9ICgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgRVRCYXNlIHsgCnB1YmxpYzoKICAgIEVUQmFzZSgp
IAogICAgeyB9CgogICAgRVRCYXNlKGNvbnN0IEVUQmFzZTxUPiYpCiAgICB7IH0KfTsKCn0gCgoK
CiMgNDkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9pbmRleGV4cHIu
aCIgMgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8aW50IE4+CmNsYXNzIEluZGV4
UGxhY2Vob2xkZXIgCgogIDogcHVibGljIEVUQmFzZTxJbmRleFBsYWNlaG9sZGVyPE4+ID4gCgp7
CnB1YmxpYzoKICAgIEluZGV4UGxhY2Vob2xkZXIoKQogICAgeyB9CgogICAgSW5kZXhQbGFjZWhv
bGRlcihjb25zdCBJbmRleFBsYWNlaG9sZGVyPE4+JikKICAgIHsgfQoKICAgIH5JbmRleFBsYWNl
aG9sZGVyKCkKICAgIHsgfQoKICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IEluZGV4UGxhY2Vob2xk
ZXI8Tj4mKQogICAgeyB9CgogICAgdHlwZWRlZiBpbnQgVF9udW10eXBlOwogICAgdHlwZWRlZiBp
bnQgVF9jdG9yQXJnMTsgICAgICAKICAgIHR5cGVkZWYgaW50IFRfY3RvckFyZzI7ICAgICAgCgog
ICAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMgPSAwLCBudW1JbmRleFBsYWNlaG9sZGVycyA9IDEs
CiAgICAgICAgcmFuayA9IE4rMSB9OwoKICAgICAKICAgICAKICAgICAKICAgICAKICAgIGludCBv
cGVyYXRvciooKQogICAgeyAKICAgICAgICAgOyAKICAgICAgICByZXR1cm4gMDsKICAgIH0KCgoK
CgoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25z
dCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGlbTl07IH0KCgogICAg
aW50IGFzY2VuZGluZyhpbnQpIGNvbnN0CiAgICB7IHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkg
OyB9CgogICAgaW50IG9yZGVyaW5nKGludCkgY29uc3QKICAgIHsgcmV0dXJuICgtIDIxNDc0ODM2
NDcgIC0xKSA7IH0KCiAgICBpbnQgbGJvdW5kKGludCkgY29uc3QKICAgIHsgcmV0dXJuICgtIDIx
NDc0ODM2NDcgIC0xKSA7IH0gICAgCgogICAgaW50IHVib3VuZChpbnQpIGNvbnN0CiAgICB7IHJl
dHVybiAyMTQ3NDgzNjQ3ICA7IH0gICAKCiAgICAgCiAgICB2b2lkIHB1c2goaW50KQogICAgeyAK
ICAgICAgICAgOyAKICAgIH0KCiAgICAgCiAgICB2b2lkIHBvcChpbnQpCiAgICB7IAogICAgICAg
ICA7IAogICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7IAogICAgICAgICA7IAog
ICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZShpbnQpCiAgICB7IAogICAgICAgICA7IAogICAg
fQoKICAgICAKICAgIHZvaWQgbG9hZFN0cmlkZShpbnQpCiAgICB7IAogICAgICAgICA7IAogICAg
fQoKICAgIGJvb2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsgCiAgICAgICAg
IDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgdm9pZCBhZHZhbmNlVW5pdFN0cmlk
ZSgpCiAgICB7IAogICAgICAgICA7CiAgICB9CgogICAgYm9vbCAgY2FuQ29sbGFwc2UoaW50LGlu
dCkgY29uc3QKICAgIHsgICAKICAgICAgICAgOyAKICAgICAgICByZXR1cm4gZmFsc2UgOyAKICAg
IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3JbXShpbnQpCiAgICB7CiAgICAgICAgIDsKICAgICAg
ICByZXR1cm4gVF9udW10eXBlKCk7CiAgICB9CgogICAgVF9udW10eXBlIGZhc3RSZWFkKGludCkK
ICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBUX251bXR5cGUoKTsKICAgIH0KCiAgICBp
bnQgc3VnZ2VzdFN0cmlkZShpbnQpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1
cm4gMDsKICAgIH0KCiAgICBib29sICBpc1N0cmlkZShpbnQsaW50KSBjb25zdAogICAgewogICAg
ICAgICA7CiAgICAgICAgcmV0dXJuIHRydWUgOwogICAgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQo
c3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7CiAgICAg
ICAgIAogICAgICAgIHN0ciArPSAiaW5kZXgtZXhwcltORUVEU19XT1JLXSI7CiAgICB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBlQ2hlY2soY29uc3QgVF9zaGFw
ZSYgc2hhcGUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHRydWUgOwogICAgfQp9OwoKdHlw
ZWRlZiBJbmRleFBsYWNlaG9sZGVyPDA+IGZpcnN0SW5kZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhv
bGRlcjwxPiBzZWNvbmRJbmRleDsKdHlwZWRlZiBJbmRleFBsYWNlaG9sZGVyPDI+IHRoaXJkSW5k
ZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhvbGRlcjwzPiBmb3VydGhJbmRleDsKdHlwZWRlZiBJbmRl
eFBsYWNlaG9sZGVyPDQ+IGZpZnRoSW5kZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhvbGRlcjw1PiBz
aXh0aEluZGV4Owp0eXBlZGVmIEluZGV4UGxhY2Vob2xkZXI8Nj4gc2V2ZW50aEluZGV4Owp0eXBl
ZGVmIEluZGV4UGxhY2Vob2xkZXI8Nz4gZWlnaHRoSW5kZXg7CnR5cGVkZWYgSW5kZXhQbGFjZWhv
bGRlcjw4PiBuaW50aEluZGV4Owp0eXBlZGVmIEluZGV4UGxhY2Vob2xkZXI8OT4gdGVudGhJbmRl
eDsKdHlwZWRlZiBJbmRleFBsYWNlaG9sZGVyPDEwPiBlbGV2ZW50aEluZGV4OwoKCgpuYW1lc3Bh
Y2UgIHRlbnNvciAgeyAKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8MD4gaTsK
ICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8MT4gajsKICAgIGV4dGVybiAgYmxp
dHo6OkluZGV4UGxhY2Vob2xkZXI8Mj4gazsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vo
b2xkZXI8Mz4gbDsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8ND4gbTsKICAg
IGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8NT4gbjsKICAgIGV4dGVybiAgYmxpdHo6
OkluZGV4UGxhY2Vob2xkZXI8Nj4gbzsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xk
ZXI8Nz4gcDsKICAgIGV4dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8OD4gcTsKICAgIGV4
dGVybiAgYmxpdHo6OkluZGV4UGxhY2Vob2xkZXI8OT4gcjsKICAgIGV4dGVybiAgYmxpdHo6Oklu
ZGV4UGxhY2Vob2xkZXI8MTA+IHM7CiAgICBleHRlcm4gIGJsaXR6OjpJbmRleFBsYWNlaG9sZGVy
PDExPiB0Owp9ICAgCgoKCn0gCgoKCiMgNzIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9hcnJheS9zbGljZS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9BUlJBWVNMSUNFX0gKCgoKCgpuYW1lc3BhY2UgIGJs
aXR6ICB7IAoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KY2xhc3MgQXJyYXk7CgoKCmNsYXNz
IG5pbEFycmF5U2VjdGlvbiB7IH07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBBcnJheVNlY3Rp
b25JbmZvIHsKcHVibGljOgogICAgZW51bSB7IGlzVmFsaWRUeXBlID0gMCwgcmFuayA9IDAsIGlz
UGljayA9IDAgfTsKfTsKCnRlbXBsYXRlPD4KY2xhc3MgQXJyYXlTZWN0aW9uSW5mbzxSYW5nZT4g
ewpwdWJsaWM6CiAgICBlbnVtIHsgaXNWYWxpZFR5cGUgPSAxLCByYW5rID0gMSwgaXNQaWNrID0g
MCB9Owp9OwoKdGVtcGxhdGU8PgpjbGFzcyBBcnJheVNlY3Rpb25JbmZvPGludD4gewpwdWJsaWM6
CiAgICBlbnVtIHsgaXNWYWxpZFR5cGUgPSAxLCByYW5rID0gMCwgaXNQaWNrID0gMCB9Owp9OwoK
dGVtcGxhdGU8PgpjbGFzcyBBcnJheVNlY3Rpb25JbmZvPG5pbEFycmF5U2VjdGlvbj4gewpwdWJs
aWM6CiAgICBlbnVtIHsgaXNWYWxpZFR5cGUgPSAxLCByYW5rID0gMCwgaXNQaWNrID0gMCB9Owp9
OwoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBjbGFzcyBUMSwgY2xhc3MgVDIgPSBuaWxBcnJh
eVNlY3Rpb24sIAogICAgY2xhc3MgVDMgPSBuaWxBcnJheVNlY3Rpb24sIGNsYXNzIFQ0ID0gbmls
QXJyYXlTZWN0aW9uLCAKICAgIGNsYXNzIFQ1ID0gbmlsQXJyYXlTZWN0aW9uLCBjbGFzcyBUNiA9
IG5pbEFycmF5U2VjdGlvbiwgCiAgICBjbGFzcyBUNyA9IG5pbEFycmF5U2VjdGlvbiwgY2xhc3Mg
VDggPSBuaWxBcnJheVNlY3Rpb24sIAogICAgY2xhc3MgVDkgPSBuaWxBcnJheVNlY3Rpb24sIGNs
YXNzIFQxMCA9IG5pbEFycmF5U2VjdGlvbiwgCiAgICBjbGFzcyBUMTEgPSBuaWxBcnJheVNlY3Rp
b24+CmNsYXNzIFNsaWNlSW5mbyB7CnB1YmxpYzoKICAgIGVudW0geyAKICAgICAgICBudW1WYWxp
ZFR5cGVzID0gQXJyYXlTZWN0aW9uSW5mbzxUMT46OmlzVmFsaWRUeXBlCiAgICAgICAgICAgICAg
ICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDI+Ojppc1ZhbGlkVHlwZQogICAgICAgICAgICAg
ICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQzPjo6aXNWYWxpZFR5cGUKICAgICAgICAgICAg
ICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUND46OmlzVmFsaWRUeXBlCiAgICAgICAgICAg
ICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDU+Ojppc1ZhbGlkVHlwZQogICAgICAgICAg
ICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQ2Pjo6aXNWYWxpZFR5cGUKICAgICAgICAg
ICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUNz46OmlzVmFsaWRUeXBlCiAgICAgICAg
ICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDg+Ojppc1ZhbGlkVHlwZQogICAgICAg
ICAgICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQ5Pjo6aXNWYWxpZFR5cGUKICAgICAg
ICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMTA+Ojppc1ZhbGlkVHlwZQogICAg
ICAgICAgICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQxMT46OmlzVmFsaWRUeXBlLAoK
ICAgICAgICByYW5rICAgICAgICAgID0gQXJyYXlTZWN0aW9uSW5mbzxUMT46OnJhbmsKICAgICAg
ICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMj46OnJhbmsKICAgICAgICAgICAg
ICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMz46OnJhbmsKICAgICAgICAgICAgICAgICAg
ICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUND46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsg
QXJyYXlTZWN0aW9uSW5mbzxUNT46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlT
ZWN0aW9uSW5mbzxUNj46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9u
SW5mbzxUNz46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxU
OD46OnJhbmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUOT46OnJh
bmsKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMTA+OjpyYW5rCiAg
ICAgICAgICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDExPjo6cmFuaywKCiAgICAg
ICAgaXNQaWNrICAgICAgICA9IEFycmF5U2VjdGlvbkluZm88VDE+Ojppc1BpY2sKICAgICAgICAg
ICAgICAgICAgICAgICsgQXJyYXlTZWN0aW9uSW5mbzxUMj46OmlzUGljawogICAgICAgICAgICAg
ICAgICAgICAgKyBBcnJheVNlY3Rpb25JbmZvPFQzPjo6aXNQaWNrCiAgICAgICAgICAgICAgICAg
ICAgICArIEFycmF5U2VjdGlvbkluZm88VDQ+Ojppc1BpY2sKICAgICAgICAgICAgICAgICAgICAg
ICsgQXJyYXlTZWN0aW9uSW5mbzxUNT46OmlzUGljawogICAgICAgICAgICAgICAgICAgICAgKyBB
cnJheVNlY3Rpb25JbmZvPFQ2Pjo6aXNQaWNrCiAgICAgICAgICAgICAgICAgICAgICArIEFycmF5
U2VjdGlvbkluZm88VDc+Ojppc1BpY2sKICAgICAgICAgICAgICAgICAgICAgICsgQXJyYXlTZWN0
aW9uSW5mbzxUOD46OmlzUGljawogICAgICAgICAgICAgICAgICAgICAgKyBBcnJheVNlY3Rpb25J
bmZvPFQ5Pjo6aXNQaWNrCiAgICAgICAgICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88
VDEwPjo6aXNQaWNrCiAgICAgICAgICAgICAgICAgICAgICArIEFycmF5U2VjdGlvbkluZm88VDEx
Pjo6aXNQaWNrCiAgICAgICAgfTsKCiAgICB0eXBlZGVmIEFycmF5PFRfbnVtdHlwZSxudW1WYWxp
ZFR5cGVzPiBUX2FycmF5OwogICAgdHlwZWRlZiBBcnJheTxUX251bXR5cGUscmFuaz4gVF9zbGlj
ZTsKfTsKCn0gCgoKIyA3OSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5L21hcC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoK
CgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfQVJSQVlNQVBfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHog
IHsgCgogCgoKCgp0ZW1wbGF0ZTxpbnQgTl9yYW5rPgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1h
cHBpbmcgewogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAg
IHN0YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYsIAog
ICAgICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwKICAgICAgICBpbnQsIGludCwgaW50LCBpbnQsIGludCkKICAgIHsKICAg
ICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgOwogICAgfQp9OwoKdGVtcGxhdGU8
PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1hcHBpbmc8MT4gewogICAgdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAgIHN0YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0
IEFycmF5PFRfbnVtdHlwZSwgMT4mIGFycmF5LAogICAgICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50
LE5fZGVzdFJhbms+JiBpbmRleCwgaW50IGkwLCBpbnQsIGludCwgaW50LCBpbnQsIAogICAgICAg
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5
KGluZGV4W2kwXSk7CiAgICB9Cn07CgoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRl
eE1hcHBpbmc8Mj4gewogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFu
az4KICAgIHN0YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgMj4mIGFy
cmF5LAogICAgICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiBpbmRleCwgaW50
IGkwLCBpbnQgaTEsIGludCwgCiAgICAgICAgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFd
KTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5nPDM+
IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBzdGF0
aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDM+JiBhcnJheSwKICAgICAg
ICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50IGkx
LCBpbnQgaTIsCiAgICAgICAgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtp
Ml0pOwogICAgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1hcHBpbmc8
ND4gewogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAgIHN0
YXRpYyBUX251bXR5cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgND4mIGFycmF5LAogICAg
ICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiBpbmRleCwgaW50IGkwLCBpbnQg
aTEsIGludCBpMiwKICAgICAgICBpbnQgaTMsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoaW5kZXhbaTBdLCBpbmRleFtpMV0sIGlu
ZGV4W2kyXSwgaW5kZXhbaTNdKTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0Fy
cmF5SW5kZXhNYXBwaW5nPDU+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
ZGVzdFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUs
IDU+JiBhcnJheSwKICAgICAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5k
ZXgsIGludCBpMCwgaW50IGkxLCBpbnQgaTIsCiAgICAgICAgaW50IGkzLCBpbnQgaTQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4
W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtpMl0sIGluZGV4W2kzXSwgaW5kZXhbaTRdKTsKICAgIH0K
fTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5nPDY+IHsKICAgIHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBzdGF0aWMgVF9udW10
eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDY+JiBhcnJheSwKICAgICAgICBjb25zdCBU
aW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50IGkxLCBpbnQgaTIs
CiAgICAgICAgaW50IGkzLCBpbnQgaTQsIGludCBpNSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtp
Ml0sIGluZGV4W2kzXSwgaW5kZXhbaTRdLAogICAgICAgICAgICBpbmRleFtpNV0pOwogICAgfQp9
OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJbmRleE1hcHBpbmc8Nz4gewogICAgdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9kZXN0UmFuaz4KICAgIHN0YXRpYyBUX251bXR5
cGUgbWFwKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgNz4mIGFycmF5LAogICAgICAgIGNvbnN0IFRp
bnlWZWN0b3I8aW50LE5fZGVzdFJhbms+JiBpbmRleCwgaW50IGkwLCBpbnQgaTEsIGludCBpMiwK
ICAgICAgICBpbnQgaTMsIGludCBpNCwgaW50IGk1LCBpbnQgaTYsIGludCwgaW50LCBpbnQsIGlu
dCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoaW5kZXhbaTBdLCBpbmRleFtpMV0sIGluZGV4
W2kyXSwgaW5kZXhbaTNdLCBpbmRleFtpNF0sCiAgICAgICAgICAgIGluZGV4W2k1XSwgaW5kZXhb
aTZdKTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3RydWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5n
PDg+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBz
dGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDg+JiBhcnJheSwKICAg
ICAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rlc3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50
IGkxLCBpbnQgaTIsCiAgICAgICAgaW50IGkzLCBpbnQgaTQsIGludCBpNSwgaW50IGk2LCBpbnQg
aTcsIGludCwgaW50LCBpbnQpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwg
aW5kZXhbaTFdLCBpbmRleFtpMl0sIGluZGV4W2kzXSwgaW5kZXhbaTRdLAogICAgICAgICAgICBp
bmRleFtpNV0sIGluZGV4W2k2XSwgaW5kZXhbaTddKTsKICAgIH0KfTsKCnRlbXBsYXRlPD4Kc3Ry
dWN0IF9iel9kb0FycmF5SW5kZXhNYXBwaW5nPDk+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZSwgaW50IE5fZGVzdFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJh
eTxUX251bXR5cGUsIDk+JiBhcnJheSwKICAgICAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX2Rl
c3RSYW5rPiYgaW5kZXgsIGludCBpMCwgaW50IGkxLCBpbnQgaTIsCiAgICAgICAgaW50IGkzLCBp
bnQgaTQsIGludCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwgaW50LCBpbnQpCiAgICB7CiAg
ICAgICAgcmV0dXJuIGFycmF5KGluZGV4W2kwXSwgaW5kZXhbaTFdLCBpbmRleFtpMl0sIGluZGV4
W2kzXSwgaW5kZXhbaTRdLAogICAgICAgICAgICBpbmRleFtpNV0sIGluZGV4W2k2XSwgaW5kZXhb
aTddLCBpbmRleFtpOF0pOwogICAgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJ
bmRleE1hcHBpbmc8MTA+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVz
dFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDEw
PiYgYXJyYXksCiAgICAgICAgY29uc3QgVGlueVZlY3RvcjxpbnQsTl9kZXN0UmFuaz4mIGluZGV4
LCBpbnQgaTAsIGludCBpMSwgaW50IGkyLAogICAgICAgIGludCBpMywgaW50IGk0LCBpbnQgaTUs
IGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSwgaW50KQogICAgewogICAgICAgIHJldHVy
biBhcnJheShpbmRleFtpMF0sIGluZGV4W2kxXSwgaW5kZXhbaTJdLCBpbmRleFtpM10sIGluZGV4
W2k0XSwKICAgICAgICAgICAgaW5kZXhbaTVdLCBpbmRleFtpNl0sIGluZGV4W2k3XSwgaW5kZXhb
aThdLCBpbmRleFtpOV0pOwogICAgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X2RvQXJyYXlJ
bmRleE1hcHBpbmc8MTE+IHsKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fZGVz
dFJhbms+CiAgICBzdGF0aWMgVF9udW10eXBlIG1hcChjb25zdCBBcnJheTxUX251bXR5cGUsIDEx
PiYgYXJyYXksCiAgICAgICAgY29uc3QgVGlueVZlY3RvcjxpbnQsTl9kZXN0UmFuaz4mIGluZGV4
LCBpbnQgaTAsIGludCBpMSwgaW50IGkyLAogICAgICAgIGludCBpMywgaW50IGk0LCBpbnQgaTUs
IGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSwgaW50IGkxMCkKICAgIHsKICAgICAgICBy
ZXR1cm4gYXJyYXkoaW5kZXhbaTBdLCBpbmRleFtpMV0sIGluZGV4W2kyXSwgaW5kZXhbaTNdLCBp
bmRleFtpNF0sCiAgICAgICAgICAgIGluZGV4W2k1XSwgaW5kZXhbaTZdLCBpbmRleFtpN10sIGlu
ZGV4W2k4XSwgaW5kZXhbaTldLAogICAgICAgICAgICBpbmRleFtpMTBdKTsKICAgIH0KfTsKCnRl
bXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5fbWFwMCwgaW50IE5fbWFw
MT0wLCBpbnQgTl9tYXAyPTAsCiAgICBpbnQgTl9tYXAzPTAsIGludCBOX21hcDQ9MCwgaW50IE5f
bWFwNT0wLCBpbnQgTl9tYXA2PTAsIGludCBOX21hcDc9MCwgCiAgICBpbnQgTl9tYXA4PTAsIGlu
dCBOX21hcDk9MCwgaW50IE5fbWFwMTA9MD4KY2xhc3MgQXJyYXlJbmRleE1hcHBpbmcgewpwdWJs
aWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7CiAgICB0eXBlZGVmIGNvbnN0IEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBUX2N0b3JBcmcxOwogICAgdHlwZWRlZiBpbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVF9jdG9yQXJnMjsgICAgIAoKICAgICAKCgoKCgogICAgZW51
bSB7CiAgICAgICAgbWF4UmFuazEgPSAoTl9tYXAwID4gTl9tYXAxKSA/IE5fbWFwMCA6IE5fbWFw
MSwKICAgICAgICBtYXhSYW5rMiA9IChOX21hcDIgPiBtYXhSYW5rMSkgPyBOX21hcDIgOiBtYXhS
YW5rMSwKICAgICAgICBtYXhSYW5rMyA9IChOX21hcDMgPiBtYXhSYW5rMikgPyBOX21hcDMgOiBt
YXhSYW5rMiwKICAgICAgICBtYXhSYW5rNCA9IChOX21hcDQgPiBtYXhSYW5rMykgPyBOX21hcDQg
OiBtYXhSYW5rMywKICAgICAgICBtYXhSYW5rNSA9IChOX21hcDUgPiBtYXhSYW5rNCkgPyBOX21h
cDUgOiBtYXhSYW5rNCwKICAgICAgICBtYXhSYW5rNiA9IChOX21hcDYgPiBtYXhSYW5rNSkgPyBO
X21hcDYgOiBtYXhSYW5rNSwKICAgICAgICBtYXhSYW5rNyA9IChOX21hcDcgPiBtYXhSYW5rNikg
PyBOX21hcDcgOiBtYXhSYW5rNiwKICAgICAgICBtYXhSYW5rOCA9IChOX21hcDggPiBtYXhSYW5r
NykgPyBOX21hcDggOiBtYXhSYW5rNywKICAgICAgICBtYXhSYW5rOSA9IChOX21hcDkgPiBtYXhS
YW5rOCkgPyBOX21hcDkgOiBtYXhSYW5rOCwKICAgICAgICBtYXhSYW5rMTAgPSAoTl9tYXAxMCA+
IG1heFJhbms5KSA/IE5fbWFwMTAgOiBtYXhSYW5rOQogICAgfTsKCiAgICBlbnVtIHsgbnVtQXJy
YXlPcGVyYW5kcyA9IDEsIG51bUluZGV4UGxhY2Vob2xkZXJzID0gMSwKICAgICAgICByYW5rID0g
bWF4UmFuazEwICsgMSB9OwoKICAgIEFycmF5SW5kZXhNYXBwaW5nKGNvbnN0IEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rPiYgYXJyYXkpCiAgICAgICAgOiBhcnJheV8oYXJyYXkpCiAgICB7IAogICAg
fQoKICAgIEFycmF5SW5kZXhNYXBwaW5nKGNvbnN0IEFycmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlw
ZSxOX3JhbmssTl9tYXAwLAogICAgICAgIE5fbWFwMSxOX21hcDIsTl9tYXAzLE5fbWFwNCxOX21h
cDUsTl9tYXA2LE5fbWFwNyxOX21hcDgsTl9tYXA5LAogICAgICAgIE5fbWFwMTA+JiB6KQogICAg
ICAgIDogYXJyYXlfKHouYXJyYXlfKQogICAgeyAKICAgIH0KCiMgMjYwICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvbWFwLmgiCgogICAgdGVtcGxhdGU8aW50
IE5fZGVzdFJhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25zdCBUaW55VmVjdG9yPGlu
dCwgTl9kZXN0UmFuaz4mIGkpCiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9kb0FycmF5SW5kZXhN
YXBwaW5nPE5fcmFuaz46Om1hcChhcnJheV8sIGksCiAgICAgICAgICAgIE5fbWFwMCwgTl9tYXAx
LCBOX21hcDIsIE5fbWFwMywgTl9tYXA0LCBOX21hcDUsIE5fbWFwNiwKICAgICAgICAgICAgTl9t
YXA3LCBOX21hcDgsIE5fbWFwOSwgTl9tYXAxMCk7CiAgICB9CgoKICAgIGludCBhc2NlbmRpbmco
aW50IHJhbmspCiAgICB7CiAgICAgICAgaWYgKE5fbWFwMCA9PSByYW5rKQogICAgICAgICAgICBy
ZXR1cm4gYXJyYXlfLmFzY2VuZGluZygwKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAxID09IHJh
bmspICYmIChOX3JhbmsgPiAxKSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5hc2NlbmRpbmco
MSk7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwMiA9PSByYW5rKSAmJiAoTl9yYW5rID4gMikpCiAg
ICAgICAgICAgIHJldHVybiBhcnJheV8uYXNjZW5kaW5nKDIpOwogICAgICAgIGVsc2UgaWYgKChO
X21hcDMgPT0gcmFuaykgJiYgKE5fcmFuayA+IDMpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlf
LmFzY2VuZGluZygzKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA0ID09IHJhbmspICYmIChOX3Jh
bmsgPiA0KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5hc2NlbmRpbmcoNCk7CiAgICAgICAg
ZWxzZSBpZiAoKE5fbWFwNSA9PSByYW5rKSAmJiAoTl9yYW5rID4gNSkpCiAgICAgICAgICAgIHJl
dHVybiBhcnJheV8uYXNjZW5kaW5nKDUpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDYgPT0gcmFu
aykgJiYgKE5fcmFuayA+IDYpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmFzY2VuZGluZyg2
KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA3ID09IHJhbmspICYmIChOX3JhbmsgPiA3KSkKICAg
ICAgICAgICAgcmV0dXJuIGFycmF5Xy5hc2NlbmRpbmcoNyk7CiAgICAgICAgZWxzZSBpZiAoKE5f
bWFwOCA9PSByYW5rKSAmJiAoTl9yYW5rID4gOCkpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8u
YXNjZW5kaW5nKDgpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDkgPT0gcmFuaykgJiYgKE5fcmFu
ayA+IDkpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmFzY2VuZGluZyg5KTsKICAgICAgICBl
bHNlIGlmICgoTl9tYXAxMCA9PSByYW5rKSAmJiAoTl9yYW5rID4gMTApKQogICAgICAgICAgICBy
ZXR1cm4gYXJyYXlfLmFzY2VuZGluZygxMCk7CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1
cm4gKC0gMjE0NzQ4MzY0NyAgLTEpIDsgICAgCiAgICB9CgogICAgaW50IG9yZGVyaW5nKGludCBy
YW5rKQogICAgewogICAgICAgIGlmIChOX21hcDAgPT0gcmFuaykKICAgICAgICAgICAgcmV0dXJu
IGFycmF5Xy5vcmRlcmluZygwKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAxID09IHJhbmspICYm
IChOX3JhbmsgPiAxKSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZygxKTsKICAg
ICAgICBlbHNlIGlmICgoTl9tYXAyID09IHJhbmspICYmIChOX3JhbmsgPiAyKSkKICAgICAgICAg
ICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZygyKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAzID09
IHJhbmspICYmIChOX3JhbmsgPiAzKSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmlu
ZygzKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA0ID09IHJhbmspICYmIChOX3JhbmsgPiA0KSkK
ICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg0KTsKICAgICAgICBlbHNlIGlmICgo
Tl9tYXA1ID09IHJhbmspICYmIChOX3JhbmsgPiA1KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5
Xy5vcmRlcmluZyg1KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA2ID09IHJhbmspICYmIChOX3Jh
bmsgPiA2KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg2KTsKICAgICAgICBl
bHNlIGlmICgoTl9tYXA3ID09IHJhbmspICYmIChOX3JhbmsgPiA3KSkKICAgICAgICAgICAgcmV0
dXJuIGFycmF5Xy5vcmRlcmluZyg3KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA4ID09IHJhbmsp
ICYmIChOX3JhbmsgPiA4KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg4KTsK
ICAgICAgICBlbHNlIGlmICgoTl9tYXA5ID09IHJhbmspICYmIChOX3JhbmsgPiA5KSkKICAgICAg
ICAgICAgcmV0dXJuIGFycmF5Xy5vcmRlcmluZyg5KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAx
MCA9PSByYW5rKSAmJiAoTl9yYW5rID4gMTApKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLm9y
ZGVyaW5nKDEwKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAoLSAyMTQ3NDgzNjQ3
ICAtMSkgOyAgICAKICAgIH0KCiAgICBpbnQgbGJvdW5kKGludCByYW5rKQogICAgeyAKICAgICAg
ICBpZiAoTl9tYXAwID09IHJhbmspICAgIAogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmxib3Vu
ZCgwKTsKICAgICAgICBlbHNlIGlmICgoTl9tYXAxID09IHJhbmspICYmIChOX3JhbmsgPiAxKSkK
ICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5sYm91bmQoMSk7CiAgICAgICAgZWxzZSBpZiAoKE5f
bWFwMiA9PSByYW5rKSAmJiAoTl9yYW5rID4gMikpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8u
bGJvdW5kKDIpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDMgPT0gcmFuaykgJiYgKE5fcmFuayA+
IDMpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmxib3VuZCgzKTsKICAgICAgICBlbHNlIGlm
ICgoTl9tYXA0ID09IHJhbmspICYmIChOX3JhbmsgPiA0KSkKICAgICAgICAgICAgcmV0dXJuIGFy
cmF5Xy5sYm91bmQoNCk7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwNSA9PSByYW5rKSAmJiAoTl9y
YW5rID4gNSkpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8ubGJvdW5kKDUpOwogICAgICAgIGVs
c2UgaWYgKChOX21hcDYgPT0gcmFuaykgJiYgKE5fcmFuayA+IDYpKQogICAgICAgICAgICByZXR1
cm4gYXJyYXlfLmxib3VuZCg2KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA3ID09IHJhbmspICYm
IChOX3JhbmsgPiA3KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy5sYm91bmQoNyk7CiAgICAg
ICAgZWxzZSBpZiAoKE5fbWFwOCA9PSByYW5rKSAmJiAoTl9yYW5rID4gOCkpCiAgICAgICAgICAg
IHJldHVybiBhcnJheV8ubGJvdW5kKDgpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDkgPT0gcmFu
aykgJiYgKE5fcmFuayA+IDkpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmxib3VuZCg5KTsK
ICAgICAgICBlbHNlIGlmICgoTl9tYXAxMCA9PSByYW5rKSAmJiAoTl9yYW5rID4gMTApKQogICAg
ICAgICAgICByZXR1cm4gYXJyYXlfLmxib3VuZCgxMCk7CiAgICAgICAgZWxzZQogICAgICAgICAg
ICByZXR1cm4gKC0gMjE0NzQ4MzY0NyAgLTEpIDsgICAgCiAgICB9CgogICAgaW50IHVib3VuZChp
bnQgcmFuaykKICAgIHsgICAKICAgICAgICBpZiAoTl9tYXAwID09IHJhbmspCiAgICAgICAgICAg
IHJldHVybiBhcnJheV8udWJvdW5kKDApOwogICAgICAgIGVsc2UgaWYgKChOX21hcDEgPT0gcmFu
aykgJiYgKE5fcmFuayA+IDEpKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLnVib3VuZCgxKTsK
ICAgICAgICBlbHNlIGlmICgoTl9tYXAyID09IHJhbmspICYmIChOX3JhbmsgPiAyKSkKICAgICAg
ICAgICAgcmV0dXJuIGFycmF5Xy51Ym91bmQoMik7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwMyA9
PSByYW5rKSAmJiAoTl9yYW5rID4gMykpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8udWJvdW5k
KDMpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDQgPT0gcmFuaykgJiYgKE5fcmFuayA+IDQpKQog
ICAgICAgICAgICByZXR1cm4gYXJyYXlfLnVib3VuZCg0KTsKICAgICAgICBlbHNlIGlmICgoTl9t
YXA1ID09IHJhbmspICYmIChOX3JhbmsgPiA1KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy51
Ym91bmQoNSk7CiAgICAgICAgZWxzZSBpZiAoKE5fbWFwNiA9PSByYW5rKSAmJiAoTl9yYW5rID4g
NikpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8udWJvdW5kKDYpOwogICAgICAgIGVsc2UgaWYg
KChOX21hcDcgPT0gcmFuaykgJiYgKE5fcmFuayA+IDcpKQogICAgICAgICAgICByZXR1cm4gYXJy
YXlfLnVib3VuZCg3KTsKICAgICAgICBlbHNlIGlmICgoTl9tYXA4ID09IHJhbmspICYmIChOX3Jh
bmsgPiA4KSkKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy51Ym91bmQoOCk7CiAgICAgICAgZWxz
ZSBpZiAoKE5fbWFwOSA9PSByYW5rKSAmJiAoTl9yYW5rID4gOSkpCiAgICAgICAgICAgIHJldHVy
biBhcnJheV8udWJvdW5kKDkpOwogICAgICAgIGVsc2UgaWYgKChOX21hcDEwID09IHJhbmspICYm
IChOX3JhbmsgPiAxMCkpCiAgICAgICAgICAgIHJldHVybiBhcnJheV8udWJvdW5kKDEwKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAyMTQ3NDgzNjQ3ICA7ICAgIAogICAgfQoKICAg
ICAKICAgICAKICAgICAKICAgICAKICAgIGludCBvcGVyYXRvciooKQogICAgewogICAgICAgICA7
CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgIAogICAgdm9pZCBwdXNoKGludCkKICAgIHsK
ICAgICAgICAgOwogICAgfQoKICAgICAKICAgIHZvaWQgcG9wKGludCkKICAgIHsKICAgICAgICAg
OwogICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7CiAgICAgICAgIDsKICAgIH0K
CiAgICAgCiAgICB2b2lkIGFkdmFuY2UoaW50KQogICAgewogICAgICAgICA7CiAgICB9CgogICAg
IAogICAgdm9pZCBsb2FkU3RyaWRlKGludCkKICAgIHsKICAgICAgICAgOwogICAgfQoKICAgIGJv
b2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAg
IHJldHVybiBmYWxzZTsKICAgIH0KCiAgICB2b2lkIGFkdmFuY2VVbml0U3RyaWRlKCkKICAgIHsK
ICAgICAgICAgOwogICAgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCxpbnQpIGNvbnN0CiAg
ICB7ICAgIDsgIHJldHVybiBmYWxzZSA7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3JbXShpbnQp
CiAgICB7ICAgCiAgICAgICAgIDsKICAgICAgICByZXR1cm4gVF9udW10eXBlKCk7CiAgICB9Cgog
ICAgVF9udW10eXBlIGZhc3RSZWFkKGludCkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVy
biBUX251bXR5cGUoKTsKICAgIH0KCiAgICBpbnQgc3VnZ2VzdFN0cmlkZShpbnQpIGNvbnN0CiAg
ICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBib29sICBpc1N0cmlk
ZShpbnQsaW50KSBjb25zdAogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIHRydWUgOwog
ICAgfQoKICAgIHRlbXBsYXRlPGludCBOX3JhbmsyPgogICAgdm9pZCBtb3ZlVG8oY29uc3QgVGlu
eVZlY3RvcjxpbnQsTl9yYW5rMj4mIGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4g
OwogICAgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7CiAgICAgICAgIAogICAgICAgIHN0ciArPSAibWFwW05F
RURTX1dPUktdIjsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX3NoYXBlPgogICAgYm9vbCAg
c2hhcGVDaGVjayhjb25zdCBUX3NoYXBlJiBzaGFwZSkgY29uc3QKICAgIHsgCiAgICAgICAgIAog
ICAgICAgIHJldHVybiB0cnVlIDsgCiAgICB9Cgpwcml2YXRlOgogICAgQXJyYXlJbmRleE1hcHBp
bmcoKSB7IH0KCiAgICBjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5XzsKfTsK
Cn0gCgoKCiMgODAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJh
eS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJh
eS9tdWx0aS5oIiAxCiAKCgojZGVmaW5lIEJaX0FSUkFZTVVMVElfSAoKCgoKCm5hbWVzcGFjZSAg
YmxpdHogIHsgCgogCgoKCgoKCgoKCgogCnRlbXBsYXRlPGNsYXNzIFRfY29tcG9uZW50PgpzdHJ1
Y3QgbXVsdGljb21wb25lbnRfdHJhaXRzIHsKICAgIHR5cGVkZWYgVF9jb21wb25lbnQgVF9lbGVt
ZW50OwogICAgZW51bSB7IG51bUNvbXBvbmVudHMgPSAwIH07Cn07CgogCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kc3RydWN0IG11bHRpY29tcG9uZW50X3RyYWl0czxUaW55
VmVjdG9yPFRfbnVtdHlwZSxOX3Jhbms+ID4gewogICAgdHlwZWRlZiBUX251bXR5cGUgVF9lbGVt
ZW50OwogICAgZW51bSB7IG51bUNvbXBvbmVudHMgPSBOX3JhbmsgfTsKfTsKCgoKCgoKCgoKCiAK
IAoKI2RlZmluZSBCWl9ERUNMQVJFX01VTFRJQ09NUE9ORU5UX1RZUEUoVF90dXBsZSxULE4pIEJa
X05BTUVTUEFDRShibGl0eikgdGVtcGxhdGU8PiBzdHJ1Y3QgbXVsdGljb21wb25lbnRfdHJhaXRz
PFRfdHVwbGUgPiB7IHR5cGVkZWYgVCBUX2VsZW1lbnQ7IGVudW0geyBudW1Db21wb25lbnRzID0g
TiB9OyB9OyBCWl9OQU1FU1BBQ0VfRU5ECgoKCgoKCgoKfSAKCgojIDgxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZG9tYWluLmgiIDEKCiNkZWZpbmUgQlpf
RE9NQUlOX0gKCgoKCgoKCgoKIAoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGlu
dCBOX3Jhbms+CmNsYXNzIFJlY3REb21haW4gewoKcHVibGljOgogICAgUmVjdERvbWFpbihjb25z
dCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBsYm91bmQsCiAgICAgICAgY29uc3QgVGlueVZlY3Rv
cjxpbnQsTl9yYW5rPiYgdWJvdW5kKQogICAgICA6IGxib3VuZF8obGJvdW5kKSwgdWJvdW5kXyh1
Ym91bmQpCiAgICB7IH0KCiAgICAgCiAgICAgCiAgICAgCgogICAgY29uc3QgVGlueVZlY3Rvcjxp
bnQsTl9yYW5rPiYgbGJvdW5kKCkgY29uc3QKICAgIHsgcmV0dXJuIGxib3VuZF87IH0KCiAgICBp
bnQgbGJvdW5kKGludCBpKSBjb25zdAogICAgeyByZXR1cm4gbGJvdW5kXyhpKTsgfQoKICAgIGNv
bnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHVib3VuZCgpIGNvbnN0CiAgICB7IHJldHVybiB1
Ym91bmRfOyB9CgogICAgaW50IHVib3VuZChpbnQgaSkgY29uc3QKICAgIHsgcmV0dXJuIHVib3Vu
ZF8oaSk7IH0KCiAgICBSYW5nZSBvcGVyYXRvcltdKGludCByYW5rKSBjb25zdAogICAgeyByZXR1
cm4gUmFuZ2UobGJvdW5kXyhyYW5rKSwgdWJvdW5kXyhyYW5rKSk7IH0KCiAgICB2b2lkIHNocmlu
ayhpbnQgYW1vdW50KQogICAgewogICAgICAgIGxib3VuZF8gKz0gYW1vdW50OwogICAgICAgIHVi
b3VuZF8gLT0gYW1vdW50OwogICAgfQoKICAgIHZvaWQgc2hyaW5rKGludCBkaW0sIGludCBhbW91
bnQpCiAgICB7CiAgICAgICAgbGJvdW5kXyhkaW0pICs9IGFtb3VudDsKICAgICAgICB1Ym91bmRf
KGRpbSkgLT0gYW1vdW50OwogICAgfQoKICAgIHZvaWQgZXhwYW5kKGludCBhbW91bnQpCiAgICB7
CiAgICAgICAgbGJvdW5kXyAtPSBhbW91bnQ7CiAgICAgICAgdWJvdW5kXyArPSBhbW91bnQ7CiAg
ICB9CgogICAgdm9pZCBleHBhbmQoaW50IGRpbSwgaW50IGFtb3VudCkKICAgIHsKICAgICAgICBs
Ym91bmRfKGRpbSkgLT0gYW1vdW50OwogICAgICAgIHVib3VuZF8oZGltKSArPSBhbW91bnQ7CiAg
ICB9Cgpwcml2YXRlOgogICAgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiBsYm91bmRfLCB1Ym91bmRf
Owp9OwoKdGVtcGxhdGU8aW50IE5fcmFuaz4KaW5saW5lIFJlY3REb21haW48Tl9yYW5rPiBzdHJp
cChjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzdGFydFBvc2l0aW9uLAogICAgaW50IHN0
cmlwRGltZW5zaW9uLCBpbnQgdWJvdW5kKQp7CiAgICAgOwogICAgIDsKCiAgICBUaW55VmVjdG9y
PGludCxOX3Jhbms+IGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbjsKICAgIGVuZFBvc2l0aW9u
KHN0cmlwRGltZW5zaW9uKSA9IHVib3VuZDsKICAgIHJldHVybiBSZWN0RG9tYWluPE5fcmFuaz4o
c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwp9Cgp9IAoKCiMgODIgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9zdG9yYWdlLmgiIDEKCiNkZWZpbmUgQlpf
QVJSQVlfU1RPUkFHRV9ICgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCnRlbXBsYXRlPGludCBOX3Jhbms+CmNsYXNzIEdlbmVyYWxBcnJheVN0b3JhZ2UgewpwdWJs
aWM6CiAgICBjbGFzcyBub0luaXRpYWxpemVGbGFnIHsgfTsKCiAgICBHZW5lcmFsQXJyYXlTdG9y
YWdlKG5vSW5pdGlhbGl6ZUZsYWcpCiAgICB7IH0KCiAgICBHZW5lcmFsQXJyYXlTdG9yYWdlKCkK
ICAgIHsKICAgICAgICBvcmRlcmluZ18gPSBSYW5nZShOX3JhbmsgLSAxLCAwLCAtMSk7CiAgICAg
ICAgYXNjZW5kaW5nRmxhZ18gPSAxOwogICAgICAgIGJhc2VfID0gMDsKICAgIH0KCiAgICBHZW5l
cmFsQXJyYXlTdG9yYWdlKGNvbnN0IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiYgeCkKICAg
ICAgICA6IG9yZGVyaW5nXyh4Lm9yZGVyaW5nXyksIGFzY2VuZGluZ0ZsYWdfKHguYXNjZW5kaW5n
RmxhZ18pLAogICAgICAgICAgYmFzZV8oeC5iYXNlXykKICAgIHsgCiAgICB9CgogICAgR2VuZXJh
bEFycmF5U3RvcmFnZShUaW55VmVjdG9yPGludCxOX3Jhbms+IG9yZGVyaW5nLAogICAgICAgIFRp
bnlWZWN0b3I8Ym9vbCxOX3Jhbms+IGFzY2VuZGluZ0ZsYWcpCiAgICAgIDogb3JkZXJpbmdfKG9y
ZGVyaW5nKSwgYXNjZW5kaW5nRmxhZ18oYXNjZW5kaW5nRmxhZykKICAgIHsKICAgICAgICBiYXNl
XyA9IDA7CiAgICB9CgogICAgfkdlbmVyYWxBcnJheVN0b3JhZ2UoKQogICAgeyB9CgogICAgVGlu
eVZlY3RvcjxpbnQsIE5fcmFuaz4mIG9yZGVyaW5nKCkKICAgIHsgcmV0dXJuIG9yZGVyaW5nXzsg
fQoKICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiBvcmRlcmluZygpIGNvbnN0CiAg
ICB7IHJldHVybiBvcmRlcmluZ187IH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IGkpIGNvbnN0CiAg
ICB7IHJldHVybiBvcmRlcmluZ19baV07IH0KCiAgICB2b2lkIHNldE9yZGVyaW5nKGludCBpLCBp
bnQgb3JkZXIpIAogICAgeyBvcmRlcmluZ19baV0gPSBvcmRlcjsgfQoKICAgIGJvb2wgIGFsbFJh
bmtzU3RvcmVkQXNjZW5kaW5nKCkgY29uc3QKICAgIHsKICAgICAgICBib29sICByZXN1bHQgPSB0
cnVlIDsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3Jhbms7ICsraSkKICAgICAgICAgICAg
cmVzdWx0ICY9IGFzY2VuZGluZ0ZsYWdfW2ldOwogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9
CgogICAgYm9vbCAgaXNSYW5rU3RvcmVkQXNjZW5kaW5nKGludCBpKSBjb25zdAogICAgeyByZXR1
cm4gYXNjZW5kaW5nRmxhZ19baV07IH0KCiAgICBUaW55VmVjdG9yPGJvb2wsIE5fcmFuaz4mIGFz
Y2VuZGluZ0ZsYWcoKSAKICAgIHsgcmV0dXJuIGFzY2VuZGluZ0ZsYWdfOyB9CgogICAgY29uc3Qg
VGlueVZlY3Rvcjxib29sLCBOX3Jhbms+JiBhc2NlbmRpbmdGbGFnKCkgY29uc3QKICAgIHsgcmV0
dXJuIGFzY2VuZGluZ0ZsYWdfOyB9CgogICAgdm9pZCBzZXRBc2NlbmRpbmdGbGFnKGludCBpLCBp
bnQgYXNjZW5kaW5nRmxhZykgCiAgICB7IGFzY2VuZGluZ0ZsYWdfW2ldID0gYXNjZW5kaW5nRmxh
ZzsgfQoKICAgIFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiBiYXNlKCkKICAgIHsgcmV0dXJuIGJh
c2VfOyB9CgogICAgY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mIGJhc2UoKSBjb25zdAog
ICAgeyByZXR1cm4gYmFzZV87IH0KCiAgICBpbnQgYmFzZShpbnQgaSkgY29uc3QKICAgIHsgcmV0
dXJuIGJhc2VfW2ldOyB9CgogICAgdm9pZCBzZXRCYXNlKGludCBpLCBpbnQgYmFzZSkKICAgIHsg
YmFzZV9baV0gPSBiYXNlOyB9CgogICAgdm9pZCBzZXRCYXNlKGNvbnN0IFRpbnlWZWN0b3I8aW50
LCBOX3Jhbms+JiBiYXNlKQogICAgeyBiYXNlXyA9IGJhc2U7IH0KCnByb3RlY3RlZDoKICAgICAK
CgoKCgoKCgoKCgoKCgoKCgoKCgogICAgVGlueVZlY3RvcjxpbnQsICBOX3Jhbms+IG9yZGVyaW5n
XzsKICAgIFRpbnlWZWN0b3I8Ym9vbCwgTl9yYW5rPiBhc2NlbmRpbmdGbGFnXzsKICAgIFRpbnlW
ZWN0b3I8aW50LCAgTl9yYW5rPiBiYXNlXzsKfTsKCiAKCgoKCgoKdGVtcGxhdGU8aW50IE5fcmFu
az4KY2xhc3MgRm9ydHJhbkFycmF5IDogcHVibGljIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5r
PiB7CnB1YmxpYzoKICAgIEZvcnRyYW5BcnJheSgpCiAgICAgICAgOiBHZW5lcmFsQXJyYXlTdG9y
YWdlPE5fcmFuaz4obm9Jbml0aWFsaXplRmxhZygpKQogICAgewogICAgICAgIG9yZGVyaW5nXyA9
IFJhbmdlKDAsIE5fcmFuayAtIDEpOwogICAgICAgIGFzY2VuZGluZ0ZsYWdfID0gMTsKICAgICAg
ICBiYXNlXyA9IDE7CiAgICB9Cn07CgoKIAogCiAKIAogCiAKCmNsYXNzIF9iel9mb3J0cmFuVGFn
IHsKcHVibGljOgogICAgb3BlcmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTwxPigpCiAgICB7IHJl
dHVybiBGb3J0cmFuQXJyYXk8MT4oKTsgfQoKICAgIG9wZXJhdG9yIEdlbmVyYWxBcnJheVN0b3Jh
Z2U8Mj4oKQogICAgeyByZXR1cm4gRm9ydHJhbkFycmF5PDI+KCk7IH0KCiAgICBvcGVyYXRvciBH
ZW5lcmFsQXJyYXlTdG9yYWdlPDM+KCkKICAgIHsgcmV0dXJuIEZvcnRyYW5BcnJheTwzPigpOyB9
CgogICAgb3BlcmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTw0PigpCiAgICB7IHJldHVybiBGb3J0
cmFuQXJyYXk8ND4oKTsgfQoKICAgIG9wZXJhdG9yIEdlbmVyYWxBcnJheVN0b3JhZ2U8NT4oKQog
ICAgeyByZXR1cm4gRm9ydHJhbkFycmF5PDU+KCk7IH0KCiAgICBvcGVyYXRvciBHZW5lcmFsQXJy
YXlTdG9yYWdlPDY+KCkKICAgIHsgcmV0dXJuIEZvcnRyYW5BcnJheTw2PigpOyB9CgogICAgb3Bl
cmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTw3PigpCiAgICB7IHJldHVybiBGb3J0cmFuQXJyYXk8
Nz4oKTsgfQoKICAgIG9wZXJhdG9yIEdlbmVyYWxBcnJheVN0b3JhZ2U8OD4oKQogICAgeyByZXR1
cm4gRm9ydHJhbkFycmF5PDg+KCk7IH0KCiAgICBvcGVyYXRvciBHZW5lcmFsQXJyYXlTdG9yYWdl
PDk+KCkKICAgIHsgcmV0dXJuIEZvcnRyYW5BcnJheTw5PigpOyB9CgogICAgb3BlcmF0b3IgR2Vu
ZXJhbEFycmF5U3RvcmFnZTwxMD4oKQogICAgeyByZXR1cm4gRm9ydHJhbkFycmF5PDEwPigpOyB9
CgogICAgb3BlcmF0b3IgR2VuZXJhbEFycmF5U3RvcmFnZTwxMT4oKQogICAgeyByZXR1cm4gRm9y
dHJhbkFycmF5PDExPigpOyB9Cn07CgogCiAKCmV4dGVybiAgX2J6X2ZvcnRyYW5UYWcgZm9ydHJh
bkFycmF5OwoKCiAKCgoKCnRlbXBsYXRlPGludCBOX3Jhbms+CmNsYXNzIENvbHVtbk1ham9yQXJy
YXkgOiBwdWJsaWMgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHsKcHVibGljOgogICAgQ29s
dW1uTWFqb3JBcnJheSgpCiAgICAgICAgOiBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4obm9J
bml0aWFsaXplRmxhZygpKQogICAgewogICAgICAgIG9yZGVyaW5nXyA9IFJhbmdlKDAsIE5fcmFu
ayAtIDEpOwogICAgICAgIGFzY2VuZGluZ0ZsYWdfID0gMTsKICAgICAgICBiYXNlXyA9IDA7CiAg
ICB9Cn07Cgp9IAoKCgojIDgzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovYXJyYXkuaCIgMgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAoKCgp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUsIGludCBOX3Jhbms+CmNsYXNzIEFycmF5SXRlcmF0b3I7Cgp0ZW1wbGF0ZTxj
bGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CmNsYXNzIENvbnN0QXJyYXlJdGVyYXRvcjsKCnRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KY2xhc3MgRmFzdEFycmF5SXRlcmF0
b3I7Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHI+CmNsYXNzIF9iel9BcnJheUV4cHI7Cgp0ZW1wbGF0
ZTxjbGFzcyBUX2FycmF5LCBjbGFzcyBUX2luZGV4PgpjbGFzcyBJbmRpcmVjdEFycmF5OwoKY2xh
c3MgX2J6X2VuZFRhZzsKCgoKIAoKCgogCiAKIAoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBp
bnQgTl9yYW5rPgpjbGFzcyBBcnJheSA6IHB1YmxpYyBNZW1vcnlCbG9ja1JlZmVyZW5jZTxQX251
bXR5cGU+IAoKICAgICwgcHVibGljIEVUQmFzZTxBcnJheTxQX251bXR5cGUsTl9yYW5rPiA+Cgp7
CgpwdWJsaWM6CiAgICAgCiAgICAgCiAgICAgCgogICAgIAoKCgoKCgoKCgoKICAgIHR5cGVkZWYg
UF9udW10eXBlICAgICAgICAgICAgICAgIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgVGlueVZlY3Rv
cjxpbnQsIE5fcmFuaz4gIFRfaW5kZXg7CiAgICB0eXBlZGVmIEFycmF5PFRfbnVtdHlwZSwgTl9y
YW5rPiBUX2FycmF5OwogICAgdHlwZWRlZiBGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsIE5f
cmFuaz4gVF9pdGVyYXRvcjsKCiAgICB0eXBlZGVmIEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5f
cmFuaz4gaXRlcmF0b3I7CiAgICB0eXBlZGVmIENvbnN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUs
Tl9yYW5rPiBjb25zdF9pdGVyYXRvcjsKCiAgICBlbnVtIHsgX2J6X3JhbmsgPSBOX3JhbmsgfTsK
CiAgICAgCiAgICAgCiAgICAgCgogICAgCiAgICAgCgoKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4
cHI+CiAgICBleHBsaWNpdCAgQXJyYXkoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpOwoKICAg
ICAKCgoKCgoKICAgIEFycmF5KEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0g
R2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdl
KQogICAgewogICAgICAgIGxlbmd0aF8gPSAwOwogICAgICAgIHN0cmlkZV8gPSAwOwogICAgICAg
IHplcm9PZmZzZXRfID0gMDsKICAgIH0KCiAgICBleHBsaWNpdCAgQXJyYXkoaW50IGxlbmd0aDAs
IAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFy
cmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewog
ICAgICAgIGxlbmd0aF9bMF0gPSBsZW5ndGgwOwogICAgICAgIHNldHVwU3RvcmFnZSgwKTsKICAg
IH0KCiAgICBBcnJheShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsCiAgICAgICAgR2VuZXJhbEFy
cmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4o
KSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKICAgICAgICAg
OwoKICAgICAgICAgOwoKICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5n
dGhfWzFdID0gbGVuZ3RoMTsKICAgICAgICBzZXR1cFN0b3JhZ2UoMSk7CiAgICB9CgogICAgQXJy
YXkoaW50IGxlbmd0aDAsIGludCBsZW5ndGgxLCBpbnQgbGVuZ3RoMiwKICAgICAgICBHZW5lcmFs
QXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5r
PigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAgIHsKICAgICAgICAgOwogICAgICAg
IGxlbmd0aF9bMF0gPSBsZW5ndGgwOwogICAgICAgIGxlbmd0aF9bMV0gPSBsZW5ndGgxOwogICAg
ICAgIGxlbmd0aF9bMl0gPSBsZW5ndGgyOwogICAgICAgIHNldHVwU3RvcmFnZSgyKTsKICAgIH0K
CiAgICBBcnJheShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsIGludCBsZW5ndGgyLCBpbnQgbGVu
Z3RoMywKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVy
YWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAg
IHsKICAgICAgICAgOwogICAgICAgIGxlbmd0aF9bMF0gPSBsZW5ndGgwOwogICAgICAgIGxlbmd0
aF9bMV0gPSBsZW5ndGgxOwogICAgICAgIGxlbmd0aF9bMl0gPSBsZW5ndGgyOwogICAgICAgIGxl
bmd0aF9bM10gPSBsZW5ndGgzOwogICAgICAgIHNldHVwU3RvcmFnZSgzKTsKICAgIH0KCiAgICBB
cnJheShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsIGludCBsZW5ndGgyLCBpbnQgbGVuZ3RoMywg
aW50IGxlbmd0aDQsCiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2Ug
PSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3Jh
Z2UpCiAgICB7CiAgICAgICAgIDsKICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAg
ICBsZW5ndGhfWzFdID0gbGVuZ3RoMTsKICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAg
ICAgICBsZW5ndGhfWzNdID0gbGVuZ3RoMzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsK
ICAgICAgICBzZXR1cFN0b3JhZ2UoNCk7CiAgICB9CgogICAgQXJyYXkoaW50IGxlbmd0aDAsIGlu
dCBsZW5ndGgxLCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0LAogICAgICAg
IGludCBsZW5ndGg1LAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdl
ID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9y
YWdlKQogICAgewogICAgICAgICA7CiAgICAgICAgbGVuZ3RoX1swXSA9IGxlbmd0aDA7CiAgICAg
ICAgbGVuZ3RoX1sxXSA9IGxlbmd0aDE7CiAgICAgICAgbGVuZ3RoX1syXSA9IGxlbmd0aDI7CiAg
ICAgICAgbGVuZ3RoX1szXSA9IGxlbmd0aDM7CiAgICAgICAgbGVuZ3RoX1s0XSA9IGxlbmd0aDQ7
CiAgICAgICAgbGVuZ3RoX1s1XSA9IGxlbmd0aDU7CiAgICAgICAgc2V0dXBTdG9yYWdlKDUpOwog
ICAgfQoKICAgIEFycmF5KGludCBsZW5ndGgwLCBpbnQgbGVuZ3RoMSwgaW50IGxlbmd0aDIsIGlu
dCBsZW5ndGgzLCBpbnQgbGVuZ3RoNCwKICAgICAgICBpbnQgbGVuZ3RoNSwgaW50IGxlbmd0aDYs
CiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAg
ICAgICAgIDsKICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFd
ID0gbGVuZ3RoMTsKICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhf
WzNdID0gbGVuZ3RoMzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5n
dGhfWzVdID0gbGVuZ3RoNTsKICAgICAgICBsZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBz
ZXR1cFN0b3JhZ2UoNik7CiAgICB9CgogICAgQXJyYXkoaW50IGxlbmd0aDAsIGludCBsZW5ndGgx
LCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0LAogICAgICAgIGludCBsZW5n
dGg1LCBpbnQgbGVuZ3RoNiwgaW50IGxlbmd0aDcsCiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFn
ZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAg
ICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKICAgICAgICBsZW5ndGhfWzBd
ID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFdID0gbGVuZ3RoMTsKICAgICAgICBsZW5ndGhf
WzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhfWzNdID0gbGVuZ3RoMzsKICAgICAgICBsZW5n
dGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5ndGhfWzVdID0gbGVuZ3RoNTsKICAgICAgICBs
ZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBsZW5ndGhfWzddID0gbGVuZ3RoNzsKICAgICAg
ICBzZXR1cFN0b3JhZ2UoNyk7CiAgICB9CgogICAgQXJyYXkoaW50IGxlbmd0aDAsIGludCBsZW5n
dGgxLCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0LAogICAgICAgIGludCBs
ZW5ndGg1LCBpbnQgbGVuZ3RoNiwgaW50IGxlbmd0aDcsIGludCBsZW5ndGg4LAogICAgICAgIEdl
bmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxO
X3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CiAg
ICAgICAgbGVuZ3RoX1swXSA9IGxlbmd0aDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGxlbmd0aDE7
CiAgICAgICAgbGVuZ3RoX1syXSA9IGxlbmd0aDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGxlbmd0
aDM7CiAgICAgICAgbGVuZ3RoX1s0XSA9IGxlbmd0aDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGxl
bmd0aDU7CiAgICAgICAgbGVuZ3RoX1s2XSA9IGxlbmd0aDY7CiAgICAgICAgbGVuZ3RoX1s3XSA9
IGxlbmd0aDc7CiAgICAgICAgbGVuZ3RoX1s4XSA9IGxlbmd0aDg7CiAgICAgICAgc2V0dXBTdG9y
YWdlKDgpOwogICAgfQoKICAgIEFycmF5KGludCBsZW5ndGgwLCBpbnQgbGVuZ3RoMSwgaW50IGxl
bmd0aDIsIGludCBsZW5ndGgzLCBpbnQgbGVuZ3RoNCwKICAgICAgICBpbnQgbGVuZ3RoNSwgaW50
IGxlbmd0aDYsIGludCBsZW5ndGg3LCBpbnQgbGVuZ3RoOCwgaW50IGxlbmd0aDksCiAgICAgICAg
R2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdl
PE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsK
ICAgICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFdID0gbGVuZ3Ro
MTsKICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhfWzNdID0gbGVu
Z3RoMzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5ndGhfWzVdID0g
bGVuZ3RoNTsKICAgICAgICBsZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBsZW5ndGhfWzdd
ID0gbGVuZ3RoNzsKICAgICAgICBsZW5ndGhfWzhdID0gbGVuZ3RoODsKICAgICAgICBsZW5ndGhf
WzldID0gbGVuZ3RoOTsKICAgICAgICBzZXR1cFN0b3JhZ2UoOSk7CiAgICB9CgogICAgQXJyYXko
aW50IGxlbmd0aDAsIGludCBsZW5ndGgxLCBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBs
ZW5ndGg0LAogICAgICAgIGludCBsZW5ndGg1LCBpbnQgbGVuZ3RoNiwgaW50IGxlbmd0aDcsIGlu
dCBsZW5ndGg4LCBpbnQgbGVuZ3RoOSwKICAgICAgICBpbnQgbGVuZ3RoMTAsCiAgICAgICAgR2Vu
ZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5f
cmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKICAg
ICAgICBsZW5ndGhfWzBdID0gbGVuZ3RoMDsKICAgICAgICBsZW5ndGhfWzFdID0gbGVuZ3RoMTsK
ICAgICAgICBsZW5ndGhfWzJdID0gbGVuZ3RoMjsKICAgICAgICBsZW5ndGhfWzNdID0gbGVuZ3Ro
MzsKICAgICAgICBsZW5ndGhfWzRdID0gbGVuZ3RoNDsKICAgICAgICBsZW5ndGhfWzVdID0gbGVu
Z3RoNTsKICAgICAgICBsZW5ndGhfWzZdID0gbGVuZ3RoNjsKICAgICAgICBsZW5ndGhfWzddID0g
bGVuZ3RoNzsKICAgICAgICBsZW5ndGhfWzhdID0gbGVuZ3RoODsKICAgICAgICBsZW5ndGhfWzld
ID0gbGVuZ3RoOTsKICAgICAgICBsZW5ndGhfWzEwXSA9IGxlbmd0aDEwOwogICAgICAgIHNldHVw
U3RvcmFnZSgxMCk7CiAgICB9CgogICAgIAoKCgogICAgQXJyYXkoVF9udW10eXBlKiBfX3Jlc3Ry
aWN0X18gIGRhdGFGaXJzdCwgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4gc2hhcGUsCiAgICAgICAg
R2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdl
PE5fcmFuaz4oKSkKICAgICAgOiBNZW1vcnlCbG9ja1JlZmVyZW5jZTxUX251bXR5cGU+KHByb2R1
Y3Qoc2hhcGUpLCBkYXRhRmlyc3QsIAogICAgICAgICAgbmV2ZXJEZWxldGVEYXRhKSwKICAgICAg
ICBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgogICAgICAgIGxlbmd0aF8gPSBz
aGFwZTsKICAgICAgICBjb21wdXRlU3RyaWRlcygpOwogICAgICAgIGRhdGFfICs9IHplcm9PZmZz
ZXRfOwogICAgfQoKICAgICAKCgoKCiAgICBBcnJheShUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAg
ZGF0YUZpcnN0LCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiBzaGFwZSwKICAgICAgICBUaW55VmVj
dG9yPGludCwgTl9yYW5rPiBzdHJpZGUsIAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9y
YW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgIDogTWVt
b3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPihwcm9kdWN0KHNoYXBlKSwgZGF0YUZpcnN0LCAK
ICAgICAgICAgIG5ldmVyRGVsZXRlRGF0YSksCiAgICAgICAgc3RvcmFnZV8oc3RvcmFnZSkKICAg
IHsKICAgICAgICAgOwoKICAgICAgICBsZW5ndGhfID0gc2hhcGU7CiAgICAgICAgc3RyaWRlXyA9
IHN0cmlkZTsKICAgICAgICBjYWxjdWxhdGVaZXJvT2Zmc2V0KCk7CiAgICAgICAgZGF0YV8gKz0g
emVyb09mZnNldF87CiAgICB9CgogICAgIAoKCiAgICBBcnJheShUX251bXR5cGUqIF9fcmVzdHJp
Y3RfXyAgZGF0YUZpcnN0LCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiBzaGFwZSwKICAgICAgICBw
cmVleGlzdGluZ01lbW9yeVBvbGljeSBkZWxldGlvblBvbGljeSwKICAgICAgICBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigp
KQogICAgICA6IE1lbW9yeUJsb2NrUmVmZXJlbmNlPFRfbnVtdHlwZT4ocHJvZHVjdChzaGFwZSks
IGRhdGFGaXJzdCwgCiAgICAgICAgICAgIGRlbGV0aW9uUG9saWN5KSwKICAgICAgICBzdG9yYWdl
XyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgogICAgICAgIGxlbmd0aF8gPSBzaGFwZTsKICAg
ICAgICBjb21wdXRlU3RyaWRlcygpOwogICAgICAgIGRhdGFfICs9IHplcm9PZmZzZXRfOwoKICAg
ICAgICBpZiAoZGVsZXRpb25Qb2xpY3kgPT0gZHVwbGljYXRlRGF0YSkKICAgICAgICAgICAgcmVm
ZXJlbmNlKGNvcHkoKSk7CiAgICB9CgogICAgIAoKCgogICAgQXJyYXkoVF9udW10eXBlKiBfX3Jl
c3RyaWN0X18gIGRhdGFGaXJzdCwgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4gc2hhcGUsCiAgICAg
ICAgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4gc3RyaWRlLAogICAgICAgIHByZWV4aXN0aW5nTWVt
b3J5UG9saWN5IGRlbGV0aW9uUG9saWN5LAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9y
YW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgIDogTWVt
b3J5QmxvY2tSZWZlcmVuY2U8VF9udW10eXBlPihwcm9kdWN0KHNoYXBlKSwgZGF0YUZpcnN0LCAK
ICAgICAgICAgIGRlbGV0aW9uUG9saWN5KSwKICAgICAgICBzdG9yYWdlXyhzdG9yYWdlKQogICAg
ewogICAgICAgICA7CgogICAgICAgIGxlbmd0aF8gPSBzaGFwZTsKICAgICAgICBzdHJpZGVfID0g
c3RyaWRlOwogICAgICAgIGNhbGN1bGF0ZVplcm9PZmZzZXQoKTsKICAgICAgICBkYXRhXyArPSB6
ZXJvT2Zmc2V0XzsKCiAgICAgICAgaWYgKGRlbGV0aW9uUG9saWN5ID09IGR1cGxpY2F0ZURhdGEp
CiAgICAgICAgICAgIHJlZmVyZW5jZShjb3B5KCkpOwogICAgfQoKICAgICAKCgoKICAgIEFycmF5
KGNvbnN0IFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiBleHRlbnQsIAogICAgICAgIEdlbmVyYWxB
cnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+
KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgIGxlbmd0aF8gPSBl
eHRlbnQ7CiAgICAgICAgc2V0dXBTdG9yYWdlKE5fcmFuayAtIDEpOwogICAgfQoKICAgICAKCgoK
CiAgICBBcnJheShjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgbGJvdW5kcywKICAgICAg
ICBjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgZXh0ZW50LAogICAgICAgIGNvbnN0IEdl
bmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiYgc3RvcmFnZSAKICAgICAgICAgICA9IEdlbmVyYWxB
cnJheVN0b3JhZ2U8Tl9yYW5rPigpKTsKCiAgICAgCgoKCgogICAgQXJyYXkoUmFuZ2UgcjAsIAog
ICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5
U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAg
ICAgICA7CgogICAgICAgIGxlbmd0aF9bMF0gPSByMC5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdl
Xy5zZXRCYXNlKDAsIHIwLmZpcnN0KCkpOwogICAgICAgIHNldHVwU3RvcmFnZSgwKTsKICAgIH0K
CiAgICBBcnJheShSYW5nZSByMCwgUmFuZ2UgcjEsCiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFn
ZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAg
ICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAgICAgICAgIDsKCgogICAgICAgIGxlbmd0aF9b
MF0gPSByMC5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDAsIHIwLmZpcnN0KCkp
OwogICAgICAgIGxlbmd0aF9bMV0gPSByMS5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRC
YXNlKDEsIHIxLmZpcnN0KCkpOwoKICAgICAgICBzZXR1cFN0b3JhZ2UoMSk7CiAgICB9CgogICAg
QXJyYXkoUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBHZW5lcmFsQXJyYXlT
dG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQog
ICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAgIHsKICAgICAgICAgOwoKCiAgICAgICAgbGVu
Z3RoX1swXSA9IHIwLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMCwgcjAuZmly
c3QoKSk7CiAgICAgICAgbGVuZ3RoX1sxXSA9IHIxLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2Vf
LnNldEJhc2UoMSwgcjEuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1syXSA9IHIyLmxlbmd0aCgp
OwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMiwgcjIuZmlyc3QoKSk7CgogICAgICAgIHNldHVw
U3RvcmFnZSgyKTsKICAgIH0KCiAgICBBcnJheShSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIy
LCBSYW5nZSByMywKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9
IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFn
ZSkKICAgIHsKICAgICAgICAgOwoKCgogICAgICAgIGxlbmd0aF9bMF0gPSByMC5sZW5ndGgoKTsK
ICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDAsIHIwLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9b
MV0gPSByMS5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDEsIHIxLmZpcnN0KCkp
OwogICAgICAgIGxlbmd0aF9bMl0gPSByMi5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRC
YXNlKDIsIHIyLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bM10gPSByMy5sZW5ndGgoKTsKICAg
ICAgICBzdG9yYWdlXy5zZXRCYXNlKDMsIHIzLmZpcnN0KCkpOwoKICAgICAgICBzZXR1cFN0b3Jh
Z2UoMyk7CiAgICB9CgogICAgQXJyYXkoUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwgUmFu
Z2UgcjMsIFJhbmdlIHI0LAogICAgICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9y
YWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhz
dG9yYWdlKQogICAgewogICAgICAgICA7CgoKCiAgICAgICAgbGVuZ3RoX1swXSA9IHIwLmxlbmd0
aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMCwgcjAuZmlyc3QoKSk7CiAgICAgICAgbGVu
Z3RoX1sxXSA9IHIxLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMSwgcjEuZmly
c3QoKSk7CiAgICAgICAgbGVuZ3RoX1syXSA9IHIyLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2Vf
LnNldEJhc2UoMiwgcjIuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1szXSA9IHIzLmxlbmd0aCgp
OwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMywgcjMuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3Ro
X1s0XSA9IHI0Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNCwgcjQuZmlyc3Qo
KSk7CgogICAgICAgIHNldHVwU3RvcmFnZSg0KTsKICAgIH0KCiAgICBBcnJheShSYW5nZSByMCwg
UmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdlIHI1LAogICAgICAg
IEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFn
ZTxOX3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7
CgoKCgogICAgICAgIGxlbmd0aF9bMF0gPSByMC5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5z
ZXRCYXNlKDAsIHIwLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bMV0gPSByMS5sZW5ndGgoKTsK
ICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDEsIHIxLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9b
Ml0gPSByMi5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDIsIHIyLmZpcnN0KCkp
OwogICAgICAgIGxlbmd0aF9bM10gPSByMy5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRC
YXNlKDMsIHIzLmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bNF0gPSByNC5sZW5ndGgoKTsKICAg
ICAgICBzdG9yYWdlXy5zZXRCYXNlKDQsIHI0LmZpcnN0KCkpOwogICAgICAgIGxlbmd0aF9bNV0g
PSByNS5sZW5ndGgoKTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDUsIHI1LmZpcnN0KCkpOwoK
ICAgICAgICBzZXR1cFN0b3JhZ2UoNSk7CiAgICB9CgogICAgQXJyYXkoUmFuZ2UgcjAsIFJhbmdl
IHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwKICAgICAgICBSYW5n
ZSByNiwKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVy
YWxBcnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAg
IHsKICAgICAgICAgOwoKCgoKICAgICAgICBsZW5ndGhfWzBdID0gcjAubGVuZ3RoKCk7CiAgICAg
ICAgc3RvcmFnZV8uc2V0QmFzZSgwLCByMC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzFdID0g
cjEubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgxLCByMS5maXJzdCgpKTsKICAg
ICAgICBsZW5ndGhfWzJdID0gcjIubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgy
LCByMi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzNdID0gcjMubGVuZ3RoKCk7CiAgICAgICAg
c3RvcmFnZV8uc2V0QmFzZSgzLCByMy5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzRdID0gcjQu
bGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg0LCByNC5maXJzdCgpKTsKICAgICAg
ICBsZW5ndGhfWzVdID0gcjUubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg1LCBy
NS5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzZdID0gcjYubGVuZ3RoKCk7CiAgICAgICAgc3Rv
cmFnZV8uc2V0QmFzZSg2LCByNi5maXJzdCgpKTsKCiAgICAgICAgc2V0dXBTdG9yYWdlKDYpOwog
ICAgfQoKICAgIEFycmF5KFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBS
YW5nZSByNCwgUmFuZ2UgcjUsCiAgICAgICAgUmFuZ2UgcjYsIFJhbmdlIHI3LAogICAgICAgIEdl
bmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxO
X3Jhbms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgoK
CgoKICAgICAgICBsZW5ndGhfWzBdID0gcjAubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0
QmFzZSgwLCByMC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzFdID0gcjEubGVuZ3RoKCk7CiAg
ICAgICAgc3RvcmFnZV8uc2V0QmFzZSgxLCByMS5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzJd
ID0gcjIubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgyLCByMi5maXJzdCgpKTsK
ICAgICAgICBsZW5ndGhfWzNdID0gcjMubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFz
ZSgzLCByMy5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzRdID0gcjQubGVuZ3RoKCk7CiAgICAg
ICAgc3RvcmFnZV8uc2V0QmFzZSg0LCByNC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzVdID0g
cjUubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg1LCByNS5maXJzdCgpKTsKICAg
ICAgICBsZW5ndGhfWzZdID0gcjYubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg2
LCByNi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzddID0gcjcubGVuZ3RoKCk7CiAgICAgICAg
c3RvcmFnZV8uc2V0QmFzZSg3LCByNy5maXJzdCgpKTsKCiAgICAgICAgc2V0dXBTdG9yYWdlKDcp
OwogICAgfQoKICAgIEFycmF5KFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIz
LCBSYW5nZSByNCwgUmFuZ2UgcjUsCiAgICAgICAgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSBy
OCwKICAgICAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4gc3RvcmFnZSA9IEdlbmVyYWxB
cnJheVN0b3JhZ2U8Tl9yYW5rPigpKQogICAgICAgIDogc3RvcmFnZV8oc3RvcmFnZSkKICAgIHsK
ICAgICAgICAgOwoKCgoKCiAgICAgICAgbGVuZ3RoX1swXSA9IHIwLmxlbmd0aCgpOwogICAgICAg
IHN0b3JhZ2VfLnNldEJhc2UoMCwgcjAuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1sxXSA9IHIx
Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMSwgcjEuZmlyc3QoKSk7CiAgICAg
ICAgbGVuZ3RoX1syXSA9IHIyLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMiwg
cjIuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1szXSA9IHIzLmxlbmd0aCgpOwogICAgICAgIHN0
b3JhZ2VfLnNldEJhc2UoMywgcjMuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s0XSA9IHI0Lmxl
bmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNCwgcjQuZmlyc3QoKSk7CiAgICAgICAg
bGVuZ3RoX1s1XSA9IHI1Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNSwgcjUu
Zmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s2XSA9IHI2Lmxlbmd0aCgpOwogICAgICAgIHN0b3Jh
Z2VfLnNldEJhc2UoNiwgcjYuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s3XSA9IHI3Lmxlbmd0
aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNywgcjcuZmlyc3QoKSk7CiAgICAgICAgbGVu
Z3RoX1s4XSA9IHI4Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoOCwgcjguZmly
c3QoKSk7CgogICAgICAgIHNldHVwU3RvcmFnZSg4KTsKICAgIH0KCiAgICBBcnJheShSYW5nZSBy
MCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdlIHI1LAogICAg
ICAgIFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LAogICAgICAgIEdlbmVy
YWxBcnJheVN0b3JhZ2U8Tl9yYW5rPiBzdG9yYWdlID0gR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jh
bms+KCkpCiAgICAgICAgOiBzdG9yYWdlXyhzdG9yYWdlKQogICAgewogICAgICAgICA7CgoKCgoK
CiAgICAgICAgbGVuZ3RoX1swXSA9IHIwLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJh
c2UoMCwgcjAuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1sxXSA9IHIxLmxlbmd0aCgpOwogICAg
ICAgIHN0b3JhZ2VfLnNldEJhc2UoMSwgcjEuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1syXSA9
IHIyLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoMiwgcjIuZmlyc3QoKSk7CiAg
ICAgICAgbGVuZ3RoX1szXSA9IHIzLmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2Uo
MywgcjMuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s0XSA9IHI0Lmxlbmd0aCgpOwogICAgICAg
IHN0b3JhZ2VfLnNldEJhc2UoNCwgcjQuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s1XSA9IHI1
Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNSwgcjUuZmlyc3QoKSk7CiAgICAg
ICAgbGVuZ3RoX1s2XSA9IHI2Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoNiwg
cjYuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s3XSA9IHI3Lmxlbmd0aCgpOwogICAgICAgIHN0
b3JhZ2VfLnNldEJhc2UoNywgcjcuZmlyc3QoKSk7CiAgICAgICAgbGVuZ3RoX1s4XSA9IHI4Lmxl
bmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoOCwgcjguZmlyc3QoKSk7CiAgICAgICAg
bGVuZ3RoX1s5XSA9IHI5Lmxlbmd0aCgpOwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoOSwgcjku
Zmlyc3QoKSk7CgogICAgICAgIHNldHVwU3RvcmFnZSg5KTsKICAgIH0KCiAgICBBcnJheShSYW5n
ZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdlIHI1LAog
ICAgICAgIFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LCBSYW5nZSByMTAs
CiAgICAgICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+IHN0b3JhZ2UgPSBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaz4oKSkKICAgICAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCiAgICB7CiAg
ICAgICAgIDsKCgoKCgoKICAgICAgICBsZW5ndGhfWzBdID0gcjAubGVuZ3RoKCk7CiAgICAgICAg
c3RvcmFnZV8uc2V0QmFzZSgwLCByMC5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzFdID0gcjEu
bGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgxLCByMS5maXJzdCgpKTsKICAgICAg
ICBsZW5ndGhfWzJdID0gcjIubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgyLCBy
Mi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzNdID0gcjMubGVuZ3RoKCk7CiAgICAgICAgc3Rv
cmFnZV8uc2V0QmFzZSgzLCByMy5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzRdID0gcjQubGVu
Z3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg0LCByNC5maXJzdCgpKTsKICAgICAgICBs
ZW5ndGhfWzVdID0gcjUubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg1LCByNS5m
aXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzZdID0gcjYubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFn
ZV8uc2V0QmFzZSg2LCByNi5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzddID0gcjcubGVuZ3Ro
KCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg3LCByNy5maXJzdCgpKTsKICAgICAgICBsZW5n
dGhfWzhdID0gcjgubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSg4LCByOC5maXJz
dCgpKTsKICAgICAgICBsZW5ndGhfWzldID0gcjkubGVuZ3RoKCk7CiAgICAgICAgc3RvcmFnZV8u
c2V0QmFzZSg5LCByOS5maXJzdCgpKTsKICAgICAgICBsZW5ndGhfWzEwXSA9IHIxMC5sZW5ndGgo
KTsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKDEwLCByMTAuZmlyc3QoKSk7CgogICAgICAgIHNl
dHVwU3RvcmFnZSgxMCk7CiAgICB9CgogICAgIAoKCiAgICBBcnJheShjb25zdCBBcnJheTxUX251
bXR5cGUsIE5fcmFuaz4mIGFycmF5KQogICAgewogICAgICAgICAKICAgICAgICByZWZlcmVuY2Uo
Y29uc3RfY2FzdDxUX2FycmF5Jj4oYXJyYXkpKTsKICAgIH0KCiAgICAgCgoKCiAgICBBcnJheShj
b25zdCBUaW55VmVjdG9yPGludCxOX3JhbmstMT4mIHNoYXBlLAogICAgICAgIGludCBsYXN0RXh0
ZW50LCBjb25zdCBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4mIHN0b3JhZ2UpOwogICAgIAog
ICAgIAoKICAgICAKCgoKCgoKCgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBh
cnJheSwgUmFuZ2UgcjApCiAgICB7CiAgICAgICAgY29uc3RydWN0U3ViYXJyYXkoYXJyYXksIHIw
KTsKICAgIH0KCiAgICBBcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5n
ZSByMCwgUmFuZ2UgcjEpCiAgICB7CiAgICAgICAgY29uc3RydWN0U3ViYXJyYXkoYXJyYXksIHIw
LCByMSk7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwg
UmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMikKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJh
cnJheShhcnJheSwgcjAsIHIxLCByMik7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBl
LCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBS
YW5nZSByMykKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCBy
MiwgcjMpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXks
IFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAgICAgUmFuZ2UgcjMsIFJhbmdlIHI0
KQogICAgewogICAgICAgIGNvbnN0cnVjdFN1YmFycmF5KGFycmF5LCByMCwgcjEsIHIyLCByMywg
cjQpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJh
bmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAgICAgUmFuZ2UgcjMsIFJhbmdlIHI0LCBS
YW5nZSByNSkKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCBy
MiwgcjMsIHI0LCByNSk7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+
JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBSYW5nZSByMywg
UmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNikKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJh
cnJheShhcnJheSwgcjAsIHIxLCByMiwgcjMsIHI0LCByNSwgcjYpOwogICAgfQoKICAgIEFycmF5
KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwgUmFu
Z2UgcjIsCiAgICAgICAgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJh
bmdlIHI3KQogICAgewogICAgICAgIGNvbnN0cnVjdFN1YmFycmF5KGFycmF5LCByMCwgcjEsIHIy
LCByMywgcjQsIHI1LCByNiwgcjcpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSwg
Tl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAgICAgUmFu
Z2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCkK
ICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCByMiwgcjMsIHI0
LCByNSwgcjYsIHI3LCByOCk7CiAgICB9CgogICAgQXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jh
bms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwKICAgICAgICBSYW5nZSBy
MywgUmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNiwgUmFuZ2UgcjcsIFJhbmdlIHI4LCBSYW5n
ZSByOSkKICAgIHsKICAgICAgICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgcjAsIHIxLCByMiwg
cjMsIHI0LCByNSwgcjYsIHI3LCByOCwgcjkpOwogICAgfQoKICAgIEFycmF5KEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsCiAgICAg
ICAgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5n
ZSByOCwgUmFuZ2UgcjksCiAgICAgICAgUmFuZ2UgcjEwKQogICAgewogICAgICAgIGNvbnN0cnVj
dFN1YmFycmF5KGFycmF5LCByMCwgcjEsIHIyLCByMywgcjQsIHI1LCByNiwgcjcsIHI4LCByOSwg
cjEwKTsKICAgIH0KCiAgICBBcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCAK
ICAgICAgICBjb25zdCBSZWN0RG9tYWluPE5fcmFuaz4mIHN1YmRvbWFpbikKICAgIHsKICAgICAg
ICBjb25zdHJ1Y3RTdWJhcnJheShhcnJheSwgc3ViZG9tYWluKTsKICAgIH0KCiAgICAgCgoKCgog
ICAgdGVtcGxhdGU8aW50IE5fcmFuazIsIGNsYXNzIFIwLCBjbGFzcyBSMSwgY2xhc3MgUjIsIGNs
YXNzIFIzLCBjbGFzcyBSNCwKICAgICAgICBjbGFzcyBSNSwgY2xhc3MgUjYsIGNsYXNzIFI3LCBj
bGFzcyBSOCwgY2xhc3MgUjksIGNsYXNzIFIxMD4KICAgIEFycmF5KEFycmF5PFRfbnVtdHlwZSxO
X3JhbmsyPiYgYXJyYXksIFIwIHIwLCBSMSByMSwgUjIgcjIsCiAgICAgICAgUjMgcjMsIFI0IHI0
LCBSNSByNSwgUjYgcjYsIFI3IHI3LCBSOCByOCwgUjkgcjksIFIxMCByMTApCiAgICB7CiAgICAg
ICAgY29uc3RydWN0U2xpY2UoYXJyYXksIHIwLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywg
cjgsIHI5LCByMTApOwogICAgfQoKICAgICAKICAgICAKICAgICAKCiAgICBjb25zdCBUaW55VmVj
dG9yPGludCwgTl9yYW5rPiYgICAgYmFzZSgpIGNvbnN0CiAgICB7IHJldHVybiBzdG9yYWdlXy5i
YXNlKCk7IH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZShpbnQg
cmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLmJhc2UocmFuayk7IH0KCiAgICBpdGVy
YXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4oKSAKICAgIHsgcmV0dXJuIGl0ZXJh
dG9yKCp0aGlzKTsgfQoKICAgIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICBiZWdp
bigpIGNvbnN0CiAgICB7IHJldHVybiBjb25zdF9pdGVyYXRvcigqdGhpcyk7IH0KCiAgICBUX2l0
ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5GYXN0KCkgY29uc3QKICAgIHsgcmV0
dXJuIFRfaXRlcmF0b3IoKnRoaXMpOyB9CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlMj4KICAgIEFycmF5PFRfbnVtdHlwZTIsTl9yYW5rPiAgICAgICAgICBjaG9wQ29tcG9uZW50
KFRfbnVtdHlwZTIgYSwgaW50IGNvbXBOdW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBudW1Db21wb25lbnRzKSBjb25zdAogICAgeyByZXR1cm4gZXh0cmFj
dENvbXBvbmVudChhLCBjb21wTnVtLCBudW1Db21wb25lbnRzKTsgfQoKICAgIGludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb2xzKCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF9b
MV07IH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucygpIGNv
bnN0CiAgICB7IHJldHVybiBsZW5ndGhfWzFdOyB9CgogICAgVF9hcnJheSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvcHkoKSBjb25zdDsKCiAgICAgCiAgICAgCiAgICAgCiAgICAgCiAgICAg
CgogICAgY29uc3QgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gICAgICBkYXRhKCkgY29uc3QKICAg
IHsgcmV0dXJuIGRhdGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKSwgc3RyaWRlXyk7IH0KCiAgICBU
X251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgICAgICAgIGRhdGEoKSAKICAgIHsgcmV0dXJuIGRh
dGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKSwgc3RyaWRlXyk7IH0KCiAgICAgCiAgICAgCiAgICAK
ICAgIGNvbnN0IFRfbnVtdHlwZSogX19yZXN0cmljdF9fICAgICAgZGF0YVplcm8oKSBjb25zdAog
ICAgeyByZXR1cm4gZGF0YV87IH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgICAg
ICAgIGRhdGFaZXJvKCkKICAgIHsgcmV0dXJuIGRhdGFfOyB9CgogICAgIAogICAgIAogICAgCiAg
ICBjb25zdCBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgIGRhdGFGaXJzdCgpIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIGRhdGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKSAKICAgICAgICAg
ICAgKyAoMSAtIHN0b3JhZ2VfLmFzY2VuZGluZ0ZsYWcoKSkgKiAobGVuZ3RoXyAtIDEpLCBzdHJp
ZGVfKTsKICAgIH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgICAgICAgICAgIGRhdGFG
aXJzdCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGRhdGFfICsgZG90KHN0b3JhZ2VfLmJhc2UoKQog
ICAgICAgICAgICArICgxIC0gc3RvcmFnZV8uYXNjZW5kaW5nRmxhZygpKSAqIChsZW5ndGhfIC0g
MSksIHN0cmlkZV8pOwogICAgfQoKICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXB0aCgpIGNvbnN0CiAgICB7IHJldHVybiBsZW5ndGhfWzJdOyB9CgogICAgaW50ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnMoKSBjb25zdAogICAgeyByZXR1cm4g
Tl9yYW5rOyB9CgogICAgUmVjdERvbWFpbjxOX3Jhbms+ICAgICAgICAgICAgICAgIGRvbWFpbigp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFJlY3REb21haW48Tl9yYW5rPihsYm91bmQoKSwg
dWJvdW5kKCkpOwogICAgfQoKICAgIHZvaWQgZHVtcFN0cnVjdHVyZUluZm9ybWF0aW9uKG9zdHJl
YW0mIG9zID0gY291dCkgY29uc3Q7CgogICAgaXRlcmF0b3IgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBfYnpfZW5kVGFn
KCkpOwogICAgfQoKICAgIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICBlbmQoKSBj
b25zdAogICAgewogICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigqdGhpcywgX2J6X2VuZFRh
ZygpKTsKICAgIH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW50
KGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoX1tyYW5rXTsgfQoKICAgIGNvbnN0
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mICAgICBleHRlbnQoKSBjb25zdAogICAgeyByZXR1cm4g
bGVuZ3RoXzsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTI+CiAgICBBcnJheTxUX251
bXR5cGUyLE5fcmFuaz4gICAgICAgICAgZXh0cmFjdENvbXBvbmVudChUX251bXR5cGUyLCBpbnQg
Y29tcE51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51
bUNvbXBvbmVudHMpIGNvbnN0OwoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmcmVlKCkgCiAgICB7CiAgICAgICAgY2hhbmdlVG9OdWxsQmxvY2soKTsKICAgICAgICBsZW5n
dGhfID0gMDsKICAgIH0KIAogICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTWFq
b3JSYW5rKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gc3RvcmFnZV8ub3JkZXJpbmcocmFu
aykgPT0gMDsgfQoKICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICBpc01pbm9yUmFu
ayhpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLm9yZGVyaW5nKHJhbmspICE9
IDA7IH0KCiAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNSYW5rU3RvcmVkQXNj
ZW5kaW5nKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gc3RvcmFnZV8uaXNSYW5rU3RvcmVk
QXNjZW5kaW5nKHJhbmspOyB9CgogICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgIGlz
U3RvcmFnZUNvbnRpZ3VvdXMoKSBjb25zdDsKCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGJvdW5kKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gYmFzZShyYW5rKTsg
fQoKICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuaz4gICAgICAgICAgICBsYm91bmQoKSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiBiYXNlKCk7CiAgICB9CgogICAgaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxlbmd0aChpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0
aF9bcmFua107IH0KCiAgICBjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgICAgbGVuZ3Ro
KCkgY29uc3QKICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICB2b2lkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFrZVVuaXF1ZSgpOwoKICAgIGludCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1FbGVtZW50cygpIGNvbnN0CiAgICB7IHJldHVybiBwcm9kdWN0KGxlbmd0
aF8pOyB9CgogICAgIAogICAgIAoKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgIGlu
dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcmluZyhpbnQgc3RvcmFnZVJhbmtJ
bmRleCkgY29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLm9yZGVyaW5nKHN0b3JhZ2VSYW5rSW5k
ZXgpOyB9CgogICAgY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mICAgIG9yZGVyaW5nKCkg
Y29uc3QKICAgIHsgcmV0dXJuIHN0b3JhZ2VfLm9yZGVyaW5nKCk7IH0KCiAgICB2b2lkICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlU2VsZihpbnQgcjAsIGludCByMSwgaW50
IHIyPTAsIAogICAgICAgIGludCByMz0wLCBpbnQgcjQ9MCwgaW50IHI1PTAsIGludCByNj0wLCBp
bnQgcjc9MCwgaW50IHI4PTAsIGludCAKICAgICAgICByOT0wLCBpbnQgcjEwPTApOwogICAgVF9h
cnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9zZShpbnQgcjAsIGludCByMSwg
aW50IHIyPTAsCiAgICAgICAgaW50IHIzPTAsIGludCByND0wLCBpbnQgcjU9MCwgaW50IHI2PTAs
IGludCByNz0wLCBpbnQgcjg9MCwgaW50CiAgICAgICAgcjk9MCwgaW50IHIxMD0wKTsKCiAgICB2
b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlU2VsZihjb25zdCAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW55VmVjdG9yPGludCwgTl9y
YW5rPiYgKTsKICAgIFRfYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2Uo
Y29uc3QgCgkJCQkJIFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+JiApOwoKICAgIGludCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByYW5rKCkgY29uc3QKICAgIHsgcmV0dXJuIE5fcmFuazsg
fQoKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2UoY29uc3Qg
VF9hcnJheSYpOwoKICAgICAKICAgIFRfYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZWluZGV4KGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mKTsKICAgIHZvaWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWluZGV4U2VsZihjb25zdCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYpOwoK
ICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemUoaW50IGV4dGVudCk7
CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplKGludCBleHRlbnQx
LCBpbnQgZXh0ZW50Mik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
aXplKGludCBleHRlbnQxLCBpbnQgZXh0ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBleHRlbnQzKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXNpemUoaW50IGV4dGVudDEsIGludCBleHRlbnQyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDMsIGludCBleHRlbnQ0KTsKICAgIHZv
aWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemUoaW50IGV4dGVudDEsIGludCBl
eHRlbnQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVu
dDMsIGludCBleHRlbnQ0LCBpbnQgZXh0ZW50NSk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzaXplKGludCBleHRlbnQxLCBpbnQgZXh0ZW50MiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50
IGV4dGVudDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0
ZW50Nik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplKGludCBl
eHRlbnQxLCBpbnQgZXh0ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcpOwogICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShpbnQgZXh0ZW50MSwgaW50
IGV4dGVudDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0
ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGV4dGVudDYsIGludCBleHRlbnQ3LCBpbnQgZXh0ZW50OCk7CiAg
ICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplKGludCBleHRlbnQxLCBp
bnQgZXh0ZW50MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBl
eHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsIGludCBleHRlbnQ4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDkpOwogICAg
dm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShpbnQgZXh0ZW50MSwgaW50
IGV4dGVudDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0
ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGV4dGVudDYsIGludCBleHRlbnQ3LCBpbnQgZXh0ZW50OCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQ5LCBpbnQgZXh0
ZW50MTApOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShpbnQg
ZXh0ZW50MSwgaW50IGV4dGVudDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZXh0ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDYsIGludCBleHRlbnQ3LCBpbnQg
ZXh0ZW50OCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQ5LCBpbnQgZXh0ZW50MTAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGV4dGVudDExKTsKCgogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc2l6ZShSYW5nZSByMSk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzaXplKFJhbmdlIHIxLCBSYW5nZSByMik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzaXplKFJhbmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMpOwogICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwgUmFuZ2UgcjIsIFJh
bmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgcjQp
OwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwg
UmFuZ2UgcjIsIFJhbmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmFuZ2UgcjQsIFJhbmdlIHI1KTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNpemUoUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYpOwog
ICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwgUmFu
Z2UgcjIsIFJhbmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJhbmdlIHI3KTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXNpemUoUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSByNywgUmFuZ2Ugcjgp
OwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwg
UmFuZ2UgcjIsIFJhbmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmFuZ2UgcjQsIFJhbmdlIHI1LCBSYW5nZSByNiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjkpOwogICAgdm9pZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZShSYW5nZSByMSwgUmFuZ2UgcjIsIFJh
bmdlIHIzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgcjQs
IFJhbmdlIHI1LCBSYW5nZSByNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjksIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmFuZ2UgcjEwKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXNpemUoUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2Ug
cjYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZSByNywgUmFu
Z2UgcjgsIFJhbmdlIHI5LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJhbmdlIHIxMCwgUmFuZ2UgcjExKTsKCiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzaXplKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mKTsKIAoKICAgIHZvaWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2ZShpbnQgZXh0ZW50
KTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2
ZShpbnQgZXh0ZW50MSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZXh0ZW50Mik7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXpl
QW5kUHJlc2VydmUoaW50IGV4dGVudDEsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzKTsKICAgIHZvaWQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2ZShpbnQgZXh0ZW50MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQyLCBpbnQgZXh0ZW50Mywg
aW50IGV4dGVudDQpOwogICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6
ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQ1KTsKICAgIHZvaWQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXNpemVBbmRQcmVzZXJ2ZShpbnQgZXh0ZW50MSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQyLCBpbnQg
ZXh0ZW50MywgaW50IGV4dGVudDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZXh0ZW50NSwgaW50IGV4dGVudDYpOwogICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc2l6ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQg
ZXh0ZW50NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQ1LCBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcpOwogICAgdm9pZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc2l6ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQg
ZXh0ZW50NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQ1LCBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZXh0ZW50OCk7CiAgICB2b2lkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzaXplQW5kUHJlc2VydmUoaW50IGV4dGVudDEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMsIGludCBleHRl
bnQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDUs
IGludCBleHRlbnQ2LCBpbnQgZXh0ZW50NywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSk7CiAgICB2b2lkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzaXplQW5kUHJlc2VydmUoaW50IGV4dGVudDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMs
IGludCBleHRlbnQ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGV4dGVudDUsIGludCBleHRlbnQ2LCBpbnQgZXh0ZW50NywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50MTApOwogICAgdm9pZCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2l6ZUFuZFByZXNlcnZlKGludCBleHRlbnQxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVudDIsIGludCBl
eHRlbnQzLCBpbnQgZXh0ZW50NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBleHRlbnQ1LCBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW50OCwgaW50IGV4dGVudDksIGludCBl
eHRlbnQxMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHRl
bnQxMSk7CgogICAgIAogICAgIAogICAgIAoKICAgIFRfYXJyYXkgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXZlcnNlKGludCByYW5rKTsKICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXZlcnNlU2VsZihpbnQgcmFuayk7CgogICAgaW50ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJvd3MoKSBjb25zdAogICAgeyByZXR1cm4gbGVuZ3RoX1swXTsgfQoKICAg
IHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZShpbnQgcmFuaywgUmFuZ2Ug
cik7CgogICAgY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mICAgIHNoYXBlKCkgY29uc3QK
ICAgIHsgcmV0dXJuIGxlbmd0aF87IH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSgpIGNvbnN0CiAgICB7IHJldHVybiBudW1FbGVtZW50cygpOyB9CgogICAgY29u
c3QgVGlueVZlY3RvcjxpbnQsIE5fcmFuaz4mICAgIHN0cmlkZSgpIGNvbnN0CiAgICB7IHJldHVy
biBzdHJpZGVfOyB9CgogICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlk
ZShpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHN0cmlkZV9bcmFua107IH0KCiAgICBpbnQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWJvdW5kKGludCByYW5rKSBjb25zdAogICAg
eyByZXR1cm4gYmFzZShyYW5rKSArIGxlbmd0aF8ocmFuaykgLSAxOyB9CgogICAgVGlueVZlY3Rv
cjxpbnQsIE5fcmFuaz4gICAgICAgICAgIHVib3VuZCgpIGNvbnN0CiAgICB7IAogICAgICAgIFRp
bnlWZWN0b3I8aW50LCBOX3Jhbms+IHViOwogICAgICAgIHViID0gYmFzZSgpICsgZXh0ZW50KCkg
LSAxOwogICAgICAgIHJldHVybiB1YjsKICAgIH0KCiAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgemVyb09mZnNldCgpIGNvbnN0CiAgICB7IHJldHVybiB6ZXJvT2Zmc2V0Xzsg
fQoKICAgICAKICAgICAKICAgICAKCiAgICBib29sICBpc0luUmFuZ2VGb3JEaW0oaW50IGksIGlu
dCBkKSBjb25zdAogICAgewogICAgICAgIHJldHVybiB1bnNpZ25lZChpIC0gYmFzZShkKSkgPCBs
ZW5ndGhfW2RdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShpbnQgaTApIGNvbnN0CiAgICB7
CiAgICAgICAgcmV0dXJuIHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5ndGhfWzBdOwogICAg
fQoKICAgIGJvb2wgIGlzSW5SYW5nZShpbnQgaTAsIGludCBpMSkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gdW5zaWduZWQoaTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAg
JiYgdW5zaWduZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0aF9bMV07CiAgICB9CgogICAgYm9vbCAg
aXNJblJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0
dXJuIHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5ndGhfWzBdCiAgICAgICAgICAgICYmIHVu
c2lnbmVkKGkxIC0gYmFzZSgxKSkgPCBsZW5ndGhfWzFdCiAgICAgICAgICAgICYmIHVuc2lnbmVk
KGkyIC0gYmFzZSgyKSkgPCBsZW5ndGhfWzJdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShp
bnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5ndGhfWzBdCiAgICAgICAgICAgICYmIHVuc2ln
bmVkKGkxIC0gYmFzZSgxKSkgPCBsZW5ndGhfWzFdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGky
IC0gYmFzZSgyKSkgPCBsZW5ndGhfWzJdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkzIC0gYmFz
ZSgzKSkgPCBsZW5ndGhfWzNdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShpbnQgaTAsIGlu
dCBpMSwgaW50IGkyLCBpbnQgaTMsIGludCBpNCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
dW5zaWduZWQoaTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAgJiYgdW5zaWdu
ZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0aF9bMV0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTIg
LSBiYXNlKDIpKSA8IGxlbmd0aF9bMl0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTMgLSBiYXNl
KDMpKSA8IGxlbmd0aF9bM10KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTQgLSBiYXNlKDQpKSA8
IGxlbmd0aF9bNF07CiAgICB9CgogICAgYm9vbCAgaXNJblJhbmdlKGludCBpMCwgaW50IGkxLCBp
bnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gdW5zaWduZWQoaTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAg
JiYgdW5zaWduZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0aF9bMV0KICAgICAgICAgICAgJiYgdW5z
aWduZWQoaTIgLSBiYXNlKDIpKSA8IGxlbmd0aF9bMl0KICAgICAgICAgICAgJiYgdW5zaWduZWQo
aTMgLSBiYXNlKDMpKSA8IGxlbmd0aF9bM10KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTQgLSBi
YXNlKDQpKSA8IGxlbmd0aF9bNF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTUgLSBiYXNlKDUp
KSA8IGxlbmd0aF9bNV07CiAgICB9CgogICAgYm9vbCAgaXNJblJhbmdlKGludCBpMCwgaW50IGkx
LCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50IGk2KSBjb25zdAog
ICAgewogICAgICAgIHJldHVybiB1bnNpZ25lZChpMCAtIGJhc2UoMCkpIDwgbGVuZ3RoX1swXQog
ICAgICAgICAgICAmJiB1bnNpZ25lZChpMSAtIGJhc2UoMSkpIDwgbGVuZ3RoX1sxXQogICAgICAg
ICAgICAmJiB1bnNpZ25lZChpMiAtIGJhc2UoMikpIDwgbGVuZ3RoX1syXQogICAgICAgICAgICAm
JiB1bnNpZ25lZChpMyAtIGJhc2UoMykpIDwgbGVuZ3RoX1szXQogICAgICAgICAgICAmJiB1bnNp
Z25lZChpNCAtIGJhc2UoNCkpIDwgbGVuZ3RoX1s0XQogICAgICAgICAgICAmJiB1bnNpZ25lZChp
NSAtIGJhc2UoNSkpIDwgbGVuZ3RoX1s1XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNiAtIGJh
c2UoNikpIDwgbGVuZ3RoX1s2XTsKICAgIH0KCiAgICBib29sICBpc0luUmFuZ2UoaW50IGkwLCBp
bnQgaTEsIGludCBpMiwgaW50IGkzLCBpbnQgaTQsCiAgICAgICAgaW50IGk1LCBpbnQgaTYsIGlu
dCBpNykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdW5zaWduZWQoaTAgLSBiYXNlKDApKSA8
IGxlbmd0aF9bMF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTEgLSBiYXNlKDEpKSA8IGxlbmd0
aF9bMV0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTIgLSBiYXNlKDIpKSA8IGxlbmd0aF9bMl0K
ICAgICAgICAgICAgJiYgdW5zaWduZWQoaTMgLSBiYXNlKDMpKSA8IGxlbmd0aF9bM10KICAgICAg
ICAgICAgJiYgdW5zaWduZWQoaTQgLSBiYXNlKDQpKSA8IGxlbmd0aF9bNF0KICAgICAgICAgICAg
JiYgdW5zaWduZWQoaTUgLSBiYXNlKDUpKSA8IGxlbmd0aF9bNV0KICAgICAgICAgICAgJiYgdW5z
aWduZWQoaTYgLSBiYXNlKDYpKSA8IGxlbmd0aF9bNl0KICAgICAgICAgICAgJiYgdW5zaWduZWQo
aTcgLSBiYXNlKDcpKSA8IGxlbmd0aF9bN107CiAgICB9CgogICAgYm9vbCAgaXNJblJhbmdlKGlu
dCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50
IGk2LCBpbnQgaTcsIGludCBpOCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdW5zaWduZWQo
aTAgLSBiYXNlKDApKSA8IGxlbmd0aF9bMF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTEgLSBi
YXNlKDEpKSA8IGxlbmd0aF9bMV0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTIgLSBiYXNlKDIp
KSA8IGxlbmd0aF9bMl0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTMgLSBiYXNlKDMpKSA8IGxl
bmd0aF9bM10KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTQgLSBiYXNlKDQpKSA8IGxlbmd0aF9b
NF0KICAgICAgICAgICAgJiYgdW5zaWduZWQoaTUgLSBiYXNlKDUpKSA8IGxlbmd0aF9bNV0KICAg
ICAgICAgICAgJiYgdW5zaWduZWQoaTYgLSBiYXNlKDYpKSA8IGxlbmd0aF9bNl0KICAgICAgICAg
ICAgJiYgdW5zaWduZWQoaTcgLSBiYXNlKDcpKSA8IGxlbmd0aF9bN10KICAgICAgICAgICAgJiYg
dW5zaWduZWQoaTggLSBiYXNlKDgpKSA8IGxlbmd0aF9bOF07CiAgICB9CgogICAgYm9vbCAgaXNJ
blJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGlu
dCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwgaW50IGk5KSBjb25zdAogICAgewogICAgICAg
IHJldHVybiB1bnNpZ25lZChpMCAtIGJhc2UoMCkpIDwgbGVuZ3RoX1swXQogICAgICAgICAgICAm
JiB1bnNpZ25lZChpMSAtIGJhc2UoMSkpIDwgbGVuZ3RoX1sxXQogICAgICAgICAgICAmJiB1bnNp
Z25lZChpMiAtIGJhc2UoMikpIDwgbGVuZ3RoX1syXQogICAgICAgICAgICAmJiB1bnNpZ25lZChp
MyAtIGJhc2UoMykpIDwgbGVuZ3RoX1szXQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNCAtIGJh
c2UoNCkpIDwgbGVuZ3RoX1s0XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNSAtIGJhc2UoNSkp
IDwgbGVuZ3RoX1s1XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNiAtIGJhc2UoNikpIDwgbGVu
Z3RoX1s2XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpNyAtIGJhc2UoNykpIDwgbGVuZ3RoX1s3
XQogICAgICAgICAgICAmJiB1bnNpZ25lZChpOCAtIGJhc2UoOCkpIDwgbGVuZ3RoX1s4XQogICAg
ICAgICAgICAmJiB1bnNpZ25lZChpOSAtIGJhc2UoOSkpIDwgbGVuZ3RoX1s5XTsKICAgIH0KCiAg
ICBib29sICBpc0luUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMiwgaW50IGkzLCBpbnQgaTQs
CiAgICAgICAgaW50IGk1LCBpbnQgaTYsIGludCBpNywgaW50IGk4LCBpbnQgaTksIGludCBpMTAp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHVuc2lnbmVkKGkwIC0gYmFzZSgwKSkgPCBsZW5n
dGhfWzBdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkxIC0gYmFzZSgxKSkgPCBsZW5ndGhfWzFd
CiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkyIC0gYmFzZSgyKSkgPCBsZW5ndGhfWzJdCiAgICAg
ICAgICAgICYmIHVuc2lnbmVkKGkzIC0gYmFzZSgzKSkgPCBsZW5ndGhfWzNdCiAgICAgICAgICAg
ICYmIHVuc2lnbmVkKGk0IC0gYmFzZSg0KSkgPCBsZW5ndGhfWzRdCiAgICAgICAgICAgICYmIHVu
c2lnbmVkKGk1IC0gYmFzZSg1KSkgPCBsZW5ndGhfWzVdCiAgICAgICAgICAgICYmIHVuc2lnbmVk
KGk2IC0gYmFzZSg2KSkgPCBsZW5ndGhfWzZdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGk3IC0g
YmFzZSg3KSkgPCBsZW5ndGhfWzddCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGk4IC0gYmFzZSg4
KSkgPCBsZW5ndGhfWzhdCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGk5IC0gYmFzZSg5KSkgPCBs
ZW5ndGhfWzldCiAgICAgICAgICAgICYmIHVuc2lnbmVkKGkxMCAtIGJhc2UoMTApKSA8IGxlbmd0
aF9bMTBdOwogICAgfQoKICAgIGJvb2wgIGlzSW5SYW5nZShjb25zdCBUX2luZGV4JiBpbmRleCkg
Y29uc3QKICAgIHsKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3Jhbms7ICsraSkKICAgICAg
ICAgICAgaWYgKHVuc2lnbmVkKGluZGV4W2ldIC0gYmFzZShpKSkgPj0gbGVuZ3RoX1tpXSkKICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZSA7CgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0K
CiAgICBib29sICBhc3NlcnRJblJhbmdlKGNvbnN0IFRfaW5kZXgmIGluZGV4KSBjb25zdAogICAg
ewogCiAgICAgICAKICAgICAgICBCWlNPRlRQUkVDSEVDSyhpc0luUmFuZ2UoaW5kZXgpLCAiQXJy
YXkgaW5kZXggb3V0IG9mIHJhbmdlOiAiIDw8IGluZGV4CiAgICAgICAgICAgIDw8IGVuZGwgPDwg
Ikxvd2VyIGJvdW5kczogIiA8PCBzdG9yYWdlXy5iYXNlKCkgPDwgZW5kbAogICAgICAgICAgICA8
PCAiVXBwZXIgYm91bmRzOiAiIDw8IChzdG9yYWdlXy5iYXNlKCkgKyBsZW5ndGhfIC0gMSkgPDwg
ZW5kbCk7CiAKICAgICAgICByZXR1cm4gdHJ1ZSA7CiAgICB9CgogICAgYm9vbCAgYXNzZXJ0SW5S
YW5nZShpbnQgaTApIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgogICAgICAgIHJldHVybiB0cnVl
IDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdlKGludCBpMCwgaW50IGkxKSBjb25zdAog
ICAgewogICAgICAgICA7CgoKCiAgICAgICAgcmV0dXJuIHRydWUgOwogICAgfQoKICAgIGJvb2wg
IGFzc2VydEluUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMikgY29uc3QKICAgIHsKICAgICAg
ICAgOwoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJh
bmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMykgY29uc3QKICAgIHsKICAgICAgICAg
OwoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdl
KGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0KSBjb25zdAogICAgewogICAg
ICAgICA7CgoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJ
blJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LCAKICAgICAgICBp
bnQgaTUpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgoKCiAgICAgICAgcmV0dXJuIHRydWUgOwog
ICAgfQoKICAgIGJvb2wgIGFzc2VydEluUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMiwgaW50
IGkzLCBpbnQgaTQsCiAgICAgICAgaW50IGk1LCBpbnQgaTYpIGNvbnN0CiAgICB7CiAgICAgICAg
IDsKCgoKCgogICAgICAgIHJldHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJh
bmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBp
NSwgaW50IGk2LCBpbnQgaTcpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgoKCgogICAgICAgIHJl
dHVybiB0cnVlIDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdlKGludCBpMCwgaW50IGkx
LCBpbnQgaTIsIGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50IGk2LCBpbnQgaTcs
IGludCBpOCkgY29uc3QKICAgIHsKICAgICAgICAgOwoKCgoKCgogICAgICAgIHJldHVybiB0cnVl
IDsKICAgIH0KCiAgICBib29sICBhc3NlcnRJblJhbmdlKGludCBpMCwgaW50IGkxLCBpbnQgaTIs
IGludCBpMywgaW50IGk0LAogICAgICAgIGludCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwg
aW50IGk5KSBjb25zdAogICAgewogICAgICAgICA7CgoKCgoKCiAgICAgICAgcmV0dXJuIHRydWUg
OwogICAgfQoKICAgIGJvb2wgIGFzc2VydEluUmFuZ2UoaW50IGkwLCBpbnQgaTEsIGludCBpMiwg
aW50IGkzLCBpbnQgaTQsCiAgICAgICAgaW50IGk1LCBpbnQgaTYsIGludCBpNywgaW50IGk4LCBp
bnQgaTksIGludCBpMTApIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCgoKCgoKICAgICAgICByZXR1
cm4gdHJ1ZSA7CiAgICB9CgogICAgIAogICAgIAogICAgIAoKICAgIHRlbXBsYXRlPGludCBOX3Jh
bmsyPgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5r
Mj4mIGluZGV4KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXgpOwogICAg
ICAgIHJldHVybiBkYXRhX1tkb3QoaW5kZXgsIHN0cmlkZV8pXTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTxpbnQgTl9yYW5rMj4KICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKGNv
bnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuazI+JiBpbmRleCkgCiAgICB7CiAgICAgICAgYXNzZXJ0
SW5SYW5nZShpbmRleCk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2RvdChpbmRleCwgc3RyaWRlXyld
OwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKFRpbnlWZWN0b3I8aW50LDE+IGluZGV4
KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0pOwogICAgICAgIHJl
dHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYg
b3BlcmF0b3IoKShUaW55VmVjdG9yPGludCwxPiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJ
blJhbmdlKGluZGV4WzBdKTsKICAgICAgICByZXR1cm4gZGF0YV9baW5kZXhbMF0gKiBzdHJpZGVf
WzBdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShUaW55VmVjdG9yPGludCwyPiBp
bmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsx
XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFd
ICogc3RyaWRlX1sxXV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKFRpbnlWZWN0
b3I8aW50LDI+IGluZGV4KQogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGlu
ZGV4WzFdKTsKICAgICAgICByZXR1cm4gZGF0YV9baW5kZXhbMF0gKiBzdHJpZGVfWzBdICsgaW5k
ZXhbMV0gKiBzdHJpZGVfWzFdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShUaW55
VmVjdG9yPGludCwzPiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGlu
ZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFsw
XSAqIHN0cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRl
eFsyXSAqIHN0cmlkZV9bMl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgb3BlcmF0b3IoKShUaW55
VmVjdG9yPGludCwzPiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBd
LCBpbmRleFsxXSwgaW5kZXhbMl0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0
cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAq
IHN0cmlkZV9bMl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGNvbnN0IFRpbnlW
ZWN0b3I8aW50LDQ+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGlu
ZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdKTsKICAgICAgICByZXR1cm4gZGF0
YV9baW5kZXhbMF0gKiBzdHJpZGVfWzBdICsgaW5kZXhbMV0gKiBzdHJpZGVfWzFdCiAgICAgICAg
ICAgICsgaW5kZXhbMl0gKiBzdHJpZGVfWzJdICsgaW5kZXhbM10gKiBzdHJpZGVfWzNdXTsKICAg
IH0KCiAgICBUX251bXR5cGUmIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsND4mIGlu
ZGV4KQogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFdLCBpbmRl
eFsyXSwgaW5kZXhbM10pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9b
MF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlk
ZV9bMl0gKyBpbmRleFszXSAqIHN0cmlkZV9bM11dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVy
YXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDU+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAg
ICBhc3NlcnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAog
ICAgICAgICAgICBpbmRleFs0XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3Ry
aWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAgICArIGluZGV4WzJdICog
c3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRd
ICogc3RyaWRlX1s0XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0IFRp
bnlWZWN0b3I8aW50LDU+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4
WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0XSk7
CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICog
c3RyaWRlX1sxXQogICAgICAgICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNd
ICogc3RyaWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XV07CiAgICB9
CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsNj4mIGluZGV4
KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFdLCBp
bmRleFsyXSwgaW5kZXhbM10sCiAgICAgICAgICAgIGluZGV4WzRdLCBpbmRleFs1XSk7CiAgICAg
ICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRl
X1sxXQogICAgICAgICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3Ry
aWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICog
c3RyaWRlX1s1XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0IFRpbnlW
ZWN0b3I8aW50LDY+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBd
LCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0XSwgaW5k
ZXhbNV0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF0gKyBpbmRl
eFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlkZV9bMl0gKyBp
bmRleFszXSAqIHN0cmlkZV9bM10KICAgICAgICAgICAgKyBpbmRleFs0XSAqIHN0cmlkZV9bNF0g
KyBpbmRleFs1XSAqIHN0cmlkZV9bNV1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigp
KGNvbnN0IFRpbnlWZWN0b3I8aW50LDc+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3Nl
cnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAg
ICAgICBpbmRleFs0XSwgaW5kZXhbNV0sIGluZGV4WzZdKTsKICAgICAgICByZXR1cm4gZGF0YV9b
aW5kZXhbMF0gKiBzdHJpZGVfWzBdICsgaW5kZXhbMV0gKiBzdHJpZGVfWzFdCiAgICAgICAgICAg
ICsgaW5kZXhbMl0gKiBzdHJpZGVfWzJdICsgaW5kZXhbM10gKiBzdHJpZGVfWzNdCiAgICAgICAg
ICAgICsgaW5kZXhbNF0gKiBzdHJpZGVfWzRdICsgaW5kZXhbNV0gKiBzdHJpZGVfWzVdCiAgICAg
ICAgICAgICsgaW5kZXhbNl0gKiBzdHJpZGVfWzZdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIG9w
ZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsNz4mIGluZGV4KQogICAgewogICAgICAgIGFz
c2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFdLCBpbmRleFsyXSwgaW5kZXhbM10sCiAgICAg
ICAgICAgIGluZGV4WzRdLCBpbmRleFs1XSwgaW5kZXhbNl0pOwogICAgICAgIHJldHVybiBkYXRh
X1tpbmRleFswXSAqIHN0cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAg
ICAgKyBpbmRleFsyXSAqIHN0cmlkZV9bMl0gKyBpbmRleFszXSAqIHN0cmlkZV9bM10KICAgICAg
ICAgICAgKyBpbmRleFs0XSAqIHN0cmlkZV9bNF0gKyBpbmRleFs1XSAqIHN0cmlkZV9bNV0KICAg
ICAgICAgICAgKyBpbmRleFs2XSAqIHN0cmlkZV9bNl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBv
cGVyYXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDg+JiBpbmRleCkgY29uc3QKICAgIHsKICAg
ICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNd
LAogICAgICAgICAgICBpbmRleFs0XSwgaW5kZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSk7CiAg
ICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3Ry
aWRlX1sxXQogICAgICAgICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICog
c3RyaWRlX1szXQogICAgICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVd
ICogc3RyaWRlX1s1XQogICAgICAgICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4
WzddICogc3RyaWRlX1s3XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0
IFRpbnlWZWN0b3I8aW50LDg+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGlu
ZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0
XSwgaW5kZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2lu
ZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAgICAr
IGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAgICAg
ICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQogICAgICAg
ICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3XV07CiAg
ICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsOT4mIGlu
ZGV4KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaW5kZXhbMF0sIGluZGV4WzFd
LCBpbmRleFsyXSwgaW5kZXhbM10sCiAgICAgICAgICAgIGluZGV4WzRdLCBpbmRleFs1XSwgaW5k
ZXhbNl0sIGluZGV4WzddLCBpbmRleFs4XSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2luZGV4WzBd
ICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAgICArIGluZGV4
WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAgICAgICArIGlu
ZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQogICAgICAgICAgICAr
IGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3XQogICAgICAgICAg
ICArIGluZGV4WzhdICogc3RyaWRlX1s4XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRv
cigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDk+JiBpbmRleCkKICAgIHsKICAgICAgICBhc3NlcnRJ
blJhbmdlKGluZGV4WzBdLCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAg
ICBpbmRleFs0XSwgaW5kZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSwgaW5kZXhbOF0pOwogICAg
ICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF0gKyBpbmRleFsxXSAqIHN0cmlk
ZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlkZV9bMl0gKyBpbmRleFszXSAqIHN0
cmlkZV9bM10KICAgICAgICAgICAgKyBpbmRleFs0XSAqIHN0cmlkZV9bNF0gKyBpbmRleFs1XSAq
IHN0cmlkZV9bNV0KICAgICAgICAgICAgKyBpbmRleFs2XSAqIHN0cmlkZV9bNl0gKyBpbmRleFs3
XSAqIHN0cmlkZV9bN10KICAgICAgICAgICAgKyBpbmRleFs4XSAqIHN0cmlkZV9bOF1dOwogICAg
fQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50LDEwPiYgaW5k
ZXgpIGNvbnN0CiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpbmRleFswXSwgaW5kZXhbMV0s
IGluZGV4WzJdLCBpbmRleFszXSwKICAgICAgICAgICAgaW5kZXhbNF0sIGluZGV4WzVdLCBpbmRl
eFs2XSwgaW5kZXhbN10sIGluZGV4WzhdLCBpbmRleFs5XSk7CiAgICAgICAgcmV0dXJuIGRhdGFf
W2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAgICAg
ICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAgICAg
ICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQogICAg
ICAgICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3XQog
ICAgICAgICAgICArIGluZGV4WzhdICogc3RyaWRlX1s4XSArIGluZGV4WzldICogc3RyaWRlX1s5
XV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0IFRpbnlWZWN0b3I8aW50
LDEwPiYgaW5kZXgpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpbmRleFswXSwgaW5kZXhb
MV0sIGluZGV4WzJdLCBpbmRleFszXSwKICAgICAgICAgICAgaW5kZXhbNF0sIGluZGV4WzVdLCBp
bmRleFs2XSwgaW5kZXhbN10sIGluZGV4WzhdLCBpbmRleFs5XSk7CiAgICAgICAgcmV0dXJuIGRh
dGFfW2luZGV4WzBdICogc3RyaWRlX1swXSArIGluZGV4WzFdICogc3RyaWRlX1sxXQogICAgICAg
ICAgICArIGluZGV4WzJdICogc3RyaWRlX1syXSArIGluZGV4WzNdICogc3RyaWRlX1szXQogICAg
ICAgICAgICArIGluZGV4WzRdICogc3RyaWRlX1s0XSArIGluZGV4WzVdICogc3RyaWRlX1s1XQog
ICAgICAgICAgICArIGluZGV4WzZdICogc3RyaWRlX1s2XSArIGluZGV4WzddICogc3RyaWRlX1s3
XQogICAgICAgICAgICArIGluZGV4WzhdICogc3RyaWRlX1s4XSArIGluZGV4WzldICogc3RyaWRl
X1s5XV07CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3Rvcjxp
bnQsMTE+JiBpbmRleCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGluZGV4WzBd
LCBpbmRleFsxXSwgaW5kZXhbMl0sIGluZGV4WzNdLAogICAgICAgICAgICBpbmRleFs0XSwgaW5k
ZXhbNV0sIGluZGV4WzZdLCBpbmRleFs3XSwgaW5kZXhbOF0sIGluZGV4WzldLAogICAgICAgICAg
ICBpbmRleFsxMF0pOwogICAgICAgIHJldHVybiBkYXRhX1tpbmRleFswXSAqIHN0cmlkZV9bMF0g
KyBpbmRleFsxXSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpbmRleFsyXSAqIHN0cmlkZV9b
Ml0gKyBpbmRleFszXSAqIHN0cmlkZV9bM10KICAgICAgICAgICAgKyBpbmRleFs0XSAqIHN0cmlk
ZV9bNF0gKyBpbmRleFs1XSAqIHN0cmlkZV9bNV0KICAgICAgICAgICAgKyBpbmRleFs2XSAqIHN0
cmlkZV9bNl0gKyBpbmRleFs3XSAqIHN0cmlkZV9bN10KICAgICAgICAgICAgKyBpbmRleFs4XSAq
IHN0cmlkZV9bOF0gKyBpbmRleFs5XSAqIHN0cmlkZV9bOV0KICAgICAgICAgICAgKyBpbmRleFsx
MF0gKiBzdHJpZGVfWzEwXV07CiAgICB9CgogICAgVF9udW10eXBlJiBvcGVyYXRvcigpKGNvbnN0
IFRpbnlWZWN0b3I8aW50LDExPiYgaW5kZXgpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShp
bmRleFswXSwgaW5kZXhbMV0sIGluZGV4WzJdLCBpbmRleFszXSwKICAgICAgICAgICAgaW5kZXhb
NF0sIGluZGV4WzVdLCBpbmRleFs2XSwgaW5kZXhbN10sIGluZGV4WzhdLCBpbmRleFs5XSwKICAg
ICAgICAgICAgaW5kZXhbMTBdKTsKICAgICAgICByZXR1cm4gZGF0YV9baW5kZXhbMF0gKiBzdHJp
ZGVfWzBdICsgaW5kZXhbMV0gKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaW5kZXhbMl0gKiBz
dHJpZGVfWzJdICsgaW5kZXhbM10gKiBzdHJpZGVfWzNdCiAgICAgICAgICAgICsgaW5kZXhbNF0g
KiBzdHJpZGVfWzRdICsgaW5kZXhbNV0gKiBzdHJpZGVfWzVdCiAgICAgICAgICAgICsgaW5kZXhb
Nl0gKiBzdHJpZGVfWzZdICsgaW5kZXhbN10gKiBzdHJpZGVfWzddCiAgICAgICAgICAgICsgaW5k
ZXhbOF0gKiBzdHJpZGVfWzhdICsgaW5kZXhbOV0gKiBzdHJpZGVfWzldCiAgICAgICAgICAgICsg
aW5kZXhbMTBdICogc3RyaWRlX1sxMF1dOwogICAgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigp
KGludCBpMCkgY29uc3QKICAgIHsgCiAgICAgICAgYXNzZXJ0SW5SYW5nZShpMCk7CiAgICAgICAg
cmV0dXJuIGRhdGFfW2kwICogc3RyaWRlX1swXV07IAogICAgfQoKICAgIFRfbnVtdHlwZSYgX19y
ZXN0cmljdF9fICBvcGVyYXRvcigpKGludCBpMCkgCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5n
ZShpMCk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kwICogc3RyaWRlX1swXV07CiAgICB9CgogICAg
VF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGkwLCBpbnQgaTEpIGNvbnN0CiAgICB7IAogICAgICAg
IGFzc2VydEluUmFuZ2UoaTAsIGkxKTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVf
WzBdICsgaTEgKiBzdHJpZGVfWzFdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3Rf
XyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdl
KGkwLCBpMSk7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kwICogc3RyaWRlX1swXSArIGkxICogc3Ry
aWRlX1sxXV07CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGkwLCBpbnQgaTEs
IGludCBpMikgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIpOwog
ICAgICAgIHJldHVybiBkYXRhX1tpMCAqIHN0cmlkZV9bMF0gKyBpMSAqIHN0cmlkZV9bMV0KICAg
ICAgICAgICAgKyBpMiAqIHN0cmlkZV9bMl1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0
cmljdF9fICBvcGVyYXRvcigpKGludCBpMCwgaW50IGkxLCBpbnQgaTIpIAogICAgewogICAgICAg
IGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMik7CiAgICAgICAgcmV0dXJuIGRhdGFfW2kwICogc3Ry
aWRlX1swXSArIGkxICogc3RyaWRlX1sxXQogICAgICAgICAgICArIGkyICogc3RyaWRlX1syXV07
CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGkwLCBpbnQgaTEsIGludCBpMiwg
aW50IGkzKSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMp
OwogICAgICAgIHJldHVybiBkYXRhX1tpMCAqIHN0cmlkZV9bMF0gKyBpMSAqIHN0cmlkZV9bMV0K
ICAgICAgICAgICAgKyBpMiAqIHN0cmlkZV9bMl0gKyBpMyAqIHN0cmlkZV9bM11dOwogICAgfQoK
ICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVyYXRvcigpKGludCBpMCwgaW50IGkxLCBp
bnQgaTIsIGludCBpMykKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIsIGkz
KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFd
CiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdXTsKICAgIH0K
CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMs
CiAgICAgICAgaW50IGk0KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkx
LCBpMiwgaTMsIGk0KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEg
KiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVf
WzNdICsgaTQgKiBzdHJpZGVfWzRdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3Rf
XyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50
IGk0KQogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMsIGk0KTsKICAg
ICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAg
ICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVf
WzRdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50
IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUpIGNvbnN0CiAgICB7CiAgICAgICAg
YXNzZXJ0SW5SYW5nZShpMCwgaTEsIGkyLCBpMywgaTQsIGk1KTsKICAgICAgICByZXR1cm4gZGF0
YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBz
dHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAg
ICsgaTUgKiBzdHJpZGVfWzVdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAg
b3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0
LCBpbnQgaTUpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpMCwgaTEsIGkyLCBpMywgaTQs
IGk1KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVf
WzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQg
KiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBzdHJpZGVfWzVdXTsKICAgIH0KCiAgICBU
X251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAg
ICAgaW50IGk0LCBpbnQgaTUsIGludCBpNikgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJh
bmdlKGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAg
KiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVf
WzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUg
KiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9f
cmVzdHJpY3RfXyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAg
ICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNikKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdl
KGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBz
dHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJd
ICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBz
dHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0
b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQg
aTUsIGludCBpNiwgaW50IGk3KSBjb25zdAogICAgewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAs
IGkxLCBpMiwgaTMsIGk0LCBpNSwgaTYsIGk3KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBz
dHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJd
ICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBz
dHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzddXTsKICAgIH0KCiAg
ICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50
IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNiwgaW50IGk3KQogICAg
ewogICAgICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMsIGk0LCBpNSwgaTYsIGk3KTsK
ICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAg
ICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJp
ZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsg
aTcgKiBzdHJpZGVfWzddXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAs
IGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNiwg
aW50IGk3LCBpbnQgaTgpIGNvbnN0CiAgICB7CiAgICAgICAgYXNzZXJ0SW5SYW5nZShpMCwgaTEs
IGkyLCBpMywgaTQsIGk1LCBpNiwgaTcsIGk4KTsKICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBz
dHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJd
ICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBz
dHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzddCiAgICAgICAgICAg
ICsgaTggKiBzdHJpZGVfWzhdXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAg
b3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0
LCBpbnQgaTUsIGludCBpNiwgaW50IGk3LCBpbnQgaTgpCiAgICB7CiAgICAgICAgYXNzZXJ0SW5S
YW5nZShpMCwgaTEsIGkyLCBpMywgaTQsIGk1LCBpNiwgaTcsIGk4KTsKICAgICAgICByZXR1cm4g
ZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIg
KiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAg
ICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzdd
CiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdXTsKICAgIH0KCiAgICBUX251bXR5cGUgb3Bl
cmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBp
bnQgaTUsIGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSkgY29uc3QKICAgIHsKICAgICAg
ICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2LCBpNywgaTgsIGk5KTsK
ICAgICAgICByZXR1cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAg
ICAgICAgICAgICsgaTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJp
ZGVfWzRdCiAgICAgICAgICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsg
aTcgKiBzdHJpZGVfWzddCiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdICsgaTkgKiBzdHJp
ZGVfWzldXTsKICAgIH0KCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAgb3BlcmF0b3IoKShp
bnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMsCiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGlu
dCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSkKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdl
KGkwLCBpMSwgaTIsIGkzLCBpNCwgaTUsIGk2LCBpNywgaTgsIGk5KTsKICAgICAgICByZXR1cm4g
ZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsgaTIg
KiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAgICAg
ICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVfWzdd
CiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdICsgaTkgKiBzdHJpZGVfWzldXTsKICAgIH0K
CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaTAsIGludCBpMSwgaW50IGkyLCBpbnQgaTMs
CiAgICAgICAgaW50IGk0LCBpbnQgaTUsIGludCBpNiwgaW50IGk3LCBpbnQgaTgsIGludCBpOSwg
aW50IGkxMCkgY29uc3QKICAgIHsKICAgICAgICBhc3NlcnRJblJhbmdlKGkwLCBpMSwgaTIsIGkz
LCBpNCwgaTUsIGk2LCBpNywgaTgsIAogICAgICAgICAgICBpOSwgaTEwKTsKICAgICAgICByZXR1
cm4gZGF0YV9baTAgKiBzdHJpZGVfWzBdICsgaTEgKiBzdHJpZGVfWzFdCiAgICAgICAgICAgICsg
aTIgKiBzdHJpZGVfWzJdICsgaTMgKiBzdHJpZGVfWzNdICsgaTQgKiBzdHJpZGVfWzRdCiAgICAg
ICAgICAgICsgaTUgKiBzdHJpZGVfWzVdICsgaTYgKiBzdHJpZGVfWzZdICsgaTcgKiBzdHJpZGVf
WzddCiAgICAgICAgICAgICsgaTggKiBzdHJpZGVfWzhdICsgaTkgKiBzdHJpZGVfWzldICsgaTEw
ICogc3RyaWRlX1sxMF1dOwogICAgfQoKICAgIFRfbnVtdHlwZSYgX19yZXN0cmljdF9fICBvcGVy
YXRvcigpKGludCBpMCwgaW50IGkxLCBpbnQgaTIsIGludCBpMywKICAgICAgICBpbnQgaTQsIGlu
dCBpNSwgaW50IGk2LCBpbnQgaTcsIGludCBpOCwgaW50IGk5LCBpbnQgaTEwKQogICAgewogICAg
ICAgIGFzc2VydEluUmFuZ2UoaTAsIGkxLCBpMiwgaTMsIGk0LCBpNSwgaTYsIGk3LCBpOCwgCiAg
ICAgICAgICAgIGk5LCBpMTApOwogICAgICAgIHJldHVybiBkYXRhX1tpMCAqIHN0cmlkZV9bMF0g
KyBpMSAqIHN0cmlkZV9bMV0KICAgICAgICAgICAgKyBpMiAqIHN0cmlkZV9bMl0gKyBpMyAqIHN0
cmlkZV9bM10gKyBpNCAqIHN0cmlkZV9bNF0KICAgICAgICAgICAgKyBpNSAqIHN0cmlkZV9bNV0g
KyBpNiAqIHN0cmlkZV9bNl0gKyBpNyAqIHN0cmlkZV9bN10KICAgICAgICAgICAgKyBpOCAqIHN0
cmlkZV9bOF0gKyBpOSAqIHN0cmlkZV9bOV0gKyBpMTAgKiBzdHJpZGVfWzEwXV07CiAgICB9Cgog
ICAgIAoKCgoKICAgIFRfYXJyYXkmIG5vQ29uc3QoKSBjb25zdAogICAgeyByZXR1cm4gY29uc3Rf
Y2FzdDxUX2FycmF5Jj4oKnRoaXMpOyB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKGNvbnN0IFJl
Y3REb21haW48Tl9yYW5rPiYgc3ViZG9tYWluKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBU
X2FycmF5KG5vQ29uc3QoKSwgc3ViZG9tYWluKTsKICAgIH0KCiAgICBUX2FycmF5IG9wZXJhdG9y
KCkoUmFuZ2UgcjApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25zdCgp
LCByMCk7CiAgICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSk7CiAg
ICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIp
IGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25zdCgpLCByMCwgcjEsIHIy
KTsKICAgIH0KCiAgICBUX2FycmF5IG9wZXJhdG9yKCkoUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5n
ZSByMiwgUmFuZ2UgcjMpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25z
dCgpLCByMCwgcjEsIHIyLCByMyk7CiAgICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdl
IHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSwgcjIsIHIzLCByNCk7CiAg
ICB9CgogICAgVF9hcnJheSBvcGVyYXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIs
IFJhbmdlIHIzLCBSYW5nZSByNCwKICAgICAgICBSYW5nZSByNSkgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSwgcjIsIHIzLCByNCwgcjUpOwogICAg
fQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBS
YW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUsIFJhbmdlIHI2KSBjb25zdAogICAg
ewogICAgICAgIHJldHVybiBUX2FycmF5KG5vQ29uc3QoKSwgcjAsIHIxLCByMiwgcjMsIHI0LCBy
NSwgcjYpOwogICAgfQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwgUmFuZ2UgcjEs
IFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUsIFJhbmdlIHI2
LCBSYW5nZSByNykgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCks
IHIwLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNyk7CiAgICB9CgogICAgVF9hcnJheSBvcGVy
YXRvcigpKFJhbmdlIHIwLCBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCwK
ICAgICAgICBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCkgY29uc3QKICAg
IHsKICAgICAgICByZXR1cm4gVF9hcnJheShub0NvbnN0KCksIHIwLCByMSwgcjIsIHIzLCByNCwg
cjUsIHI2LCByNywgcjgpOwogICAgfQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwg
UmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUs
IFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5KSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBUX2FycmF5KG5vQ29uc3QoKSwgcjAsIHIxLCByMiwgcjMsIHI0LCByNSwgcjYs
IHI3LCByOCwgcjkpOwogICAgfQoKICAgIFRfYXJyYXkgb3BlcmF0b3IoKShSYW5nZSByMCwgUmFu
Z2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsCiAgICAgICAgUmFuZ2UgcjUsIFJh
bmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LCBSYW5nZSByMTApIGNvbnN0CiAg
ICB7CiAgICAgICAgcmV0dXJuIFRfYXJyYXkobm9Db25zdCgpLCByMCwgcjEsIHIyLCByMywgcjQs
IHI1LCByNiwgcjcsIHI4LCByOSwgcjEwKTsKICAgIH0KCiAgICAgCiAgICAgCgogICAgIAoKCgoK
CgoKCgoKCgoKCgoKCgoKCgogICAgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgogICAgdHlw
ZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDI+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigp
KFQxIHIxLCBUMiByMikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZvPFRfbnVt
dHlwZSxUMSxUMj46OlRfc2xpY2Uobm9Db25zdCgpLCByMSwgcjIsCiAgICAgICAgICAgIG5pbEFy
cmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCksCiAgICAg
ICAgICAgIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0
aW9uKCksCiAgICAgICAgICAgIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwg
bmlsQXJyYXlTZWN0aW9uKCkpOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
MiwgY2xhc3MgVDM+CiAgICB0eXBlbmFtZSAgU2xpY2VJbmZvPFRfbnVtdHlwZSxUMSxUMixUMz46
OlRfc2xpY2UgCiAgICBvcGVyYXRvcigpKFQxIHIxLCBUMiByMiwgVDMgcjMpIGNvbnN0CiAgICB7
CiAgICAgICAgcmV0dXJuIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDIsVDM+OjpUX3NsaWNlKG5v
Q29uc3QoKSwgcjEsIHIyLCByMywKICAgICAgICAgICAgbmlsQXJyYXlTZWN0aW9uKCksIG5pbEFy
cmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwKICAgICAgICAgICAgbmlsQXJyYXlTZWN0
aW9uKCksIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwKICAgICAgICAgICAg
bmlsQXJyYXlTZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUND4KICAgIHR5cGVuYW1lICBT
bGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0Pjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShU
MSByMSwgVDIgcjIsIFQzIHIzLCBUNCByNCkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xp
Y2VJbmZvPFRfbnVtdHlwZSxUMSxUMixUMyxUND46OlRfc2xpY2Uobm9Db25zdCgpLCByMSwgcjIs
IHIzLAogICAgICAgICAgICByNCwgbmlsQXJyYXlTZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigp
LAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCksIG5pbEFy
cmF5U2VjdGlvbigpLAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0
aW9uKCkpOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMs
IGNsYXNzIFQ0LCBjbGFzcyBUNT4KICAgIHR5cGVuYW1lICBTbGljZUluZm88VF9udW10eXBlLFQx
LFQyLFQzLFQ0LFQ1Pjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShUMSByMSwgVDIgcjIsIFQzIHIz
LCBUNCByNCwgVDUgcjUpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFNsaWNlSW5mbzxUX251
bXR5cGUsVDEsVDIsVDMsVDQsVDU+OjpUX3NsaWNlKG5vQ29uc3QoKSwgcjEsIHIyLCAKICAgICAg
ICAgICAgcjMsIHI0LCByNSwgbmlsQXJyYXlTZWN0aW9uKCksCiAgICAgICAgICAgIG5pbEFycmF5
U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCksCiAgICAgICAg
ICAgIG5pbEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSk7CiAgICB9CgogICAgdGVt
cGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBj
bGFzcyBUNj4KICAgIHR5cGVuYW1lICBTbGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0LFQ1
LFQ2Pjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShUMSByMSwgVDIgcjIsIFQzIHIzLCBUNCByNCwg
VDUgcjUsIFQ2IHI2KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBTbGljZUluZm88VF9udW10
eXBlLFQxLFQyLFQzLFQ0LFQ1LFQ2Pjo6VF9zbGljZShub0NvbnN0KCksIHIxLCAKICAgICAgICAg
ICAgcjIsIHIzLCByNCwgcjUsIHI2LCAKICAgICAgICAgICAgbmlsQXJyYXlTZWN0aW9uKCksIG5p
bEFycmF5U2VjdGlvbigpLCBuaWxBcnJheVNlY3Rpb24oKSwKICAgICAgICAgICAgbmlsQXJyYXlT
ZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAogICAg
ICAgIGNsYXNzIFQ3PgogICAgdHlwZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDIsVDMs
VDQsVDUsVDYsVDc+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigpKFQxIHIxLCBUMiByMiwgVDMgcjMs
IFQ0IHI0LCBUNSByNSwgVDYgcjYsIFQ3IHI3KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBT
bGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3Pjo6VF9zbGljZShub0NvbnN0
KCksIAogICAgICAgICAgICByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywKICAgICAgICAgICAg
bmlsQXJyYXlTZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpLAogICAgICAgICAgICBuaWxBcnJh
eVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCkpOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCiAg
ICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4PgogICAgdHlwZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5
cGUsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDg+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigpKFQxIHIx
LCBUMiByMiwgVDMgcjMsIFQ0IHI0LCBUNSByNSwgVDYgcjYsIFQ3IHI3LCBUOCByOCkgY29uc3QK
ICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZvPFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxU
NixUNyxUOD46OlRfc2xpY2Uobm9Db25zdCgpLCAKICAgICAgICAgICAgcjEsIHIyLCByMywgcjQs
IHI1LCByNiwgcjcsIHI4LAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlT
ZWN0aW9uKCksIG5pbEFycmF5U2VjdGlvbigpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAogICAg
ICAgIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+CiAgICB0eXBlbmFtZSAgU2xpY2VJbmZv
PFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOT46OlRfc2xpY2UKICAgIG9wZXJh
dG9yKCkoVDEgcjEsIFQyIHIyLCBUMyByMywgVDQgcjQsIFQ1IHI1LCBUNiByNiwgVDcgcjcsIFQ4
IHI4LCAKICAgICAgICBUOSByOSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZv
PFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOT4KICAgICAgICAgICAgOjpUX3Ns
aWNlKG5vQ29uc3QoKSwgCiAgICAgICAgICAgIHIxLCByMiwgcjMsIHI0LCByNSwgcjYsIHI3LCBy
OCwgcjksIAogICAgICAgICAgICBuaWxBcnJheVNlY3Rpb24oKSwgbmlsQXJyYXlTZWN0aW9uKCkp
OwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNz
IFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCiAgICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFz
cyBUOSwgY2xhc3MgVDEwPgogICAgdHlwZW5hbWUgIFNsaWNlSW5mbzxUX251bXR5cGUsVDEsVDIs
VDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwPjo6VF9zbGljZQogICAgb3BlcmF0b3IoKShUMSByMSwg
VDIgcjIsIFQzIHIzLCBUNCByNCwgVDUgcjUsIFQ2IHI2LCBUNyByNywgVDggcjgsCiAgICAgICAg
VDkgcjksIFQxMCByMTApIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIFNsaWNlSW5mbzxUX251
bXR5cGUsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksCiAgICAgICAgICAgIFQxMD46OlRfc2xp
Y2Uobm9Db25zdCgpLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywgcjgsIAogICAgICAgICAg
ICByOSwgcjEwLCBuaWxBcnJheVNlY3Rpb24oKSk7CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3Mg
VDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKICAg
ICAgICBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4K
ICAgIHR5cGVuYW1lICBTbGljZUluZm88VF9udW10eXBlLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4
LFQ5LFQxMCwKICAgICAgICBUMTE+OjpUX3NsaWNlCiAgICBvcGVyYXRvcigpKFQxIHIxLCBUMiBy
MiwgVDMgcjMsIFQ0IHI0LCBUNSByNSwgVDYgcjYsIFQ3IHI3LCBUOCByOCwKICAgICAgICBUOSBy
OSwgVDEwIHIxMCwgVDExIHIxMSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gU2xpY2VJbmZv
PFRfbnVtdHlwZSxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsCiAgICAgICAgICAgIFQx
MT46OlRfc2xpY2Uobm9Db25zdCgpLCByMSwgcjIsIHIzLCByNCwgcjUsIHI2LCByNywgcjgsIHI5
LCAKICAgICAgICAgICAgcjEwLCByMTEpOwogICAgfQoKCgogICAgIAoKCgoKCgoKCgoKICAgIHRl
bXBsYXRlPGludCBOMD4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJbmRleE1hcHBpbmc8VF9udW10
eXBlLCBOX3JhbmssIE4wPiA+CiAgICBvcGVyYXRvcigpKEluZGV4UGxhY2Vob2xkZXI8TjA+KSBj
b25zdAogICAgeyAKICAgICAgICByZXR1cm4gX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGlu
ZzxUX251bXR5cGUsIE5fcmFuaywgTjA+ID4KICAgICAgICAgICAgKG5vQ29uc3QoKSk7CiAgICB9
CgogICAgdGVtcGxhdGU8aW50IE4wLCBpbnQgTjE+CiAgICBfYnpfQXJyYXlFeHByPEFycmF5SW5k
ZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwgTjE+ID4KICAgIG9wZXJhdG9yKCkoSW5k
ZXhQbGFjZWhvbGRlcjxOMD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+KSBjb25zdAogICAgewogICAg
ICAgIHJldHVybiBfYnpfQXJyYXlFeHByPEFycmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9y
YW5rLCBOMCwKICAgICAgICAgICAgTjE+ID4obm9Db25zdCgpKTsKICAgIH0gCgogICAgdGVtcGxh
dGU8aW50IE4wLCBpbnQgTjEsIGludCBOMj4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJbmRleE1h
cHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjI+ID4KICAgIG9wZXJhdG9yKCkoSW5k
ZXhQbGFjZWhvbGRlcjxOMD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxh
Y2Vob2xkZXI8TjI+KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBfYnpfQXJyYXlFeHByPEFy
cmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwKICAgICAgICAgICAgTjEsIE4y
PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE4wLCBpbnQgTjEsIGludCBO
MiwgaW50IE4zPgogICAgX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUs
IE5fcmFuaywgTjAsIE4xLCBOMiwgTjM+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRl
cjxOMD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+
LCBJbmRleFBsYWNlaG9sZGVyPE4zPikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAgICAgICAg
ICAgIE4xLCBOMiwgTjM+ID4obm9Db25zdCgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxpbnQgTjAs
IGludCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBOND4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJ
bmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjIsIE4zLCBOND4gPgogICAg
b3BlcmF0b3IoKShJbmRleFBsYWNlaG9sZGVyPE4wPiwgSW5kZXhQbGFjZWhvbGRlcjxOMT4sCiAg
ICAgICAgSW5kZXhQbGFjZWhvbGRlcjxOMj4sIEluZGV4UGxhY2Vob2xkZXI8TjM+LCAKICAgICAg
ICBJbmRleFBsYWNlaG9sZGVyPE40PikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAgICAgICAg
ICAgIE4xLCBOMiwgTjMsIE40PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50
IE4wLCBpbnQgTjEsIGludCBOMiwgaW50IE4zLCBpbnQgTjQsIGludCBONT4KICAgIF9iel9BcnJh
eUV4cHI8QXJyYXlJbmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjIsIE4z
LCAKICAgICAgICBONCwgTjU+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxOMD4s
IEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJbmRl
eFBsYWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQbGFj
ZWhvbGRlcjxONT4pIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9BcnJheUV4cHI8QXJy
YXlJbmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLAogICAgICAgICAgICBOMSwgTjIs
IE4zLCBONCwgTjU+ID4obm9Db25zdCgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxpbnQgTjAsIGlu
dCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBONCwgaW50IE41LCBpbnQgTjY+CiAgICBfYnpfQXJy
YXlFeHByPEFycmF5SW5kZXhNYXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwgTjEsIE4yLCBO
MywKICAgICAgICBONCwgTjUsIE42PiA+CiAgICBvcGVyYXRvcigpKEluZGV4UGxhY2Vob2xkZXI8
TjA+LCBJbmRleFBsYWNlaG9sZGVyPE4xPiwKICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE4yPiwg
SW5kZXhQbGFjZWhvbGRlcjxOMz4sIEluZGV4UGxhY2Vob2xkZXI8TjQ+LAogICAgICAgIEluZGV4
UGxhY2Vob2xkZXI8TjU+LCBJbmRleFBsYWNlaG9sZGVyPE42PikgY29uc3QKICAgIHsKICAgICAg
ICByZXR1cm4gX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFu
aywgTjAsCiAgICAgICAgICAgIE4xLCBOMiwgTjMsIE40LCBONSwgTjY+ID4obm9Db25zdCgpKTsK
ICAgIH0KCiAgICB0ZW1wbGF0ZTxpbnQgTjAsIGludCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBO
NCwgaW50IE41LCBpbnQgTjYsCiAgICAgICAgaW50IE43PgogICAgX2J6X0FycmF5RXhwcjxBcnJh
eUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsIE4xLCBOMiwgTjMsCiAgICAgICAg
TjQsIE41LCBONiwgTjc+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxOMD4sIElu
ZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJbmRleFBs
YWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQbGFjZWhv
bGRlcjxONT4sIEluZGV4UGxhY2Vob2xkZXI8TjY+LCAKICAgICAgICBJbmRleFBsYWNlaG9sZGVy
PE43PikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X0FycmF5RXhwcjxBcnJheUluZGV4
TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAgICAgICAgICAgIE4xLCBOMiwgTjMsIE40
LCBONSwgTjYsIE43PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE4wLCBp
bnQgTjEsIGludCBOMiwgaW50IE4zLCBpbnQgTjQsIGludCBONSwgaW50IE42LAogICAgICAgIGlu
dCBONywgaW50IE44PgogICAgX2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5
cGUsIE5fcmFuaywgTjAsIE4xLCBOMiwgTjMsCiAgICAgICAgTjQsIE41LCBONiwgTjcsIE44PiA+
CiAgICBvcGVyYXRvcigpKEluZGV4UGxhY2Vob2xkZXI8TjA+LCBJbmRleFBsYWNlaG9sZGVyPE4x
PiwKICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE4yPiwgSW5kZXhQbGFjZWhvbGRlcjxOMz4sIElu
ZGV4UGxhY2Vob2xkZXI8TjQ+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjU+LCBJbmRleFBs
YWNlaG9sZGVyPE42PiwgSW5kZXhQbGFjZWhvbGRlcjxONz4sCiAgICAgICAgSW5kZXhQbGFjZWhv
bGRlcjxOOD4pIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9BcnJheUV4cHI8QXJyYXlJ
bmRleE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLAogICAgICAgICAgICBOMSwgTjIsIE4z
LCBONCwgTjUsIE42LCBONywgTjg+ID4obm9Db25zdCgpKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxp
bnQgTjAsIGludCBOMSwgaW50IE4yLCBpbnQgTjMsIGludCBONCwgaW50IE41LCBpbnQgTjYsCiAg
ICAgICAgaW50IE43LCBpbnQgTjgsIGludCBOOT4KICAgIF9iel9BcnJheUV4cHI8QXJyYXlJbmRl
eE1hcHBpbmc8VF9udW10eXBlLCBOX3JhbmssIE4wLCBOMSwgTjIsIE4zLAogICAgICAgIE40LCBO
NSwgTjYsIE43LCBOOCwgTjk+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxOMD4s
IEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJbmRl
eFBsYWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQbGFj
ZWhvbGRlcjxONT4sIEluZGV4UGxhY2Vob2xkZXI8TjY+LCBJbmRleFBsYWNlaG9sZGVyPE43PiwK
ICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE44PiwgSW5kZXhQbGFjZWhvbGRlcjxOOT4pIGNvbnN0
CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9BcnJheUV4cHI8QXJyYXlJbmRleE1hcHBpbmc8VF9u
dW10eXBlLCBOX3JhbmssIE4wLAogICAgICAgICAgICBOMSwgTjIsIE4zLCBONCwgTjUsIE42LCBO
NywgTjgsIE45PiA+KG5vQ29uc3QoKSk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE4wLCBpbnQg
TjEsIGludCBOMiwgaW50IE4zLCBpbnQgTjQsIGludCBONSwgaW50IE42LAogICAgICAgIGludCBO
NywgaW50IE44LCBpbnQgTjksIGludCBOMTA+CiAgICBfYnpfQXJyYXlFeHByPEFycmF5SW5kZXhN
YXBwaW5nPFRfbnVtdHlwZSwgTl9yYW5rLCBOMCwgTjEsIE4yLCBOMywKICAgICAgICBONCwgTjUs
IE42LCBONywgTjgsIE45LCBOMTA+ID4KICAgIG9wZXJhdG9yKCkoSW5kZXhQbGFjZWhvbGRlcjxO
MD4sIEluZGV4UGxhY2Vob2xkZXI8TjE+LAogICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjI+LCBJ
bmRleFBsYWNlaG9sZGVyPE4zPiwgSW5kZXhQbGFjZWhvbGRlcjxOND4sCiAgICAgICAgSW5kZXhQ
bGFjZWhvbGRlcjxONT4sIEluZGV4UGxhY2Vob2xkZXI8TjY+LCBJbmRleFBsYWNlaG9sZGVyPE43
PiwKICAgICAgICBJbmRleFBsYWNlaG9sZGVyPE44PiwgSW5kZXhQbGFjZWhvbGRlcjxOOT4sIAog
ICAgICAgIEluZGV4UGxhY2Vob2xkZXI8TjEwPikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4g
X2J6X0FycmF5RXhwcjxBcnJheUluZGV4TWFwcGluZzxUX251bXR5cGUsIE5fcmFuaywgTjAsCiAg
ICAgICAgICAgIE4xLCBOMiwgTjMsIE40LCBONSwgTjYsIE43LCBOOCwgTjksIE4xMD4gPihub0Nv
bnN0KCkpOwogICAgfQoKICAgICAKICAgICAKICAgICAKCiAgICAgCgoKCgogICAgIAogICAgQXJy
YXk8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8VF9udW10eXBlPjo6VF9lbGVtZW50
LE5fcmFuaz4KICAgIG9wZXJhdG9yW10oaW50IGNvbXBvbmVudCkKICAgIHsKICAgICAgICB0eXBl
ZGVmIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8VF9udW10eXBlPjo6VF9lbGVtZW50
IAogICAgICAgICAgICBUX2NvbXBUeXBlOwoKICAgICAgICByZXR1cm4gZXh0cmFjdENvbXBvbmVu
dChUX2NvbXBUeXBlKCksIAogICAgICAgICAgICBjb21wb25lbnQsIG11bHRpY29tcG9uZW50X3Ry
YWl0czxUX251bXR5cGU+OjpudW1Db21wb25lbnRzKTsKICAgIH0KCiAgICAgCiAgICAgCiAgICAg
CiAKICAgIHRlbXBsYXRlPGNsYXNzIFRfaW5kZXhDb250YWluZXI+CiAgICBJbmRpcmVjdEFycmF5
PFRfYXJyYXksIFRfaW5kZXhDb250YWluZXI+CiAgICBvcGVyYXRvcltdKGNvbnN0IFRfaW5kZXhD
b250YWluZXImIGluZGV4KQogICAgewogICAgICAgIHJldHVybiBJbmRpcmVjdEFycmF5PFRfYXJy
YXksIFRfaW5kZXhDb250YWluZXI+KCp0aGlzLAogICAgICAgICAgICBjb25zdF9jYXN0PFRfaW5k
ZXhDb250YWluZXImPihpbmRleCkpOwogICAgfQogCiAgICAgCiAgICAgCiAgICAgCgogICAgIAog
ICAgIAogICAgIAogICAgTGlzdEluaXRpYWxpemF0aW9uU3dpdGNoPFRfYXJyYXk+IG9wZXJhdG9y
PShUX251bXR5cGUgeCkKICAgIHsKICAgICAgICByZXR1cm4gTGlzdEluaXRpYWxpemF0aW9uU3dp
dGNoPFRfYXJyYXk+KCp0aGlzLCB4KTsKICAgIH0KCiAgICBUX2FycmF5JiBpbml0aWFsaXplKFRf
bnVtdHlwZSk7CgogICAgIAogICAgIAoKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+CiAgICBU
X2FycmF5JiBvcGVyYXRvcj0oY29uc3QgRVRCYXNlPFRfZXhwcj4mKTsKICAgIFRfYXJyYXkmIG9w
ZXJhdG9yPShjb25zdCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYpOwoKICAgIHRlbXBsYXRlPGNs
YXNzIFQ+IFRfYXJyYXkmIG9wZXJhdG9yKz0oY29uc3QgVCYpOwogICAgdGVtcGxhdGU8Y2xhc3Mg
VD4gVF9hcnJheSYgb3BlcmF0b3ItPShjb25zdCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBU
X2FycmF5JiBvcGVyYXRvcio9KGNvbnN0IFQmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFRfYXJy
YXkmIG9wZXJhdG9yLz0oY29uc3QgVCYpOwogICAgdGVtcGxhdGU8Y2xhc3MgVD4gVF9hcnJheSYg
b3BlcmF0b3IlPShjb25zdCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUX2FycmF5JiBvcGVy
YXRvcl49KGNvbnN0IFQmKTsKICAgIHRlbXBsYXRlPGNsYXNzIFQ+IFRfYXJyYXkmIG9wZXJhdG9y
Jj0oY29uc3QgVCYpOwogICAgdGVtcGxhdGU8Y2xhc3MgVD4gVF9hcnJheSYgb3BlcmF0b3J8PShj
b25zdCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUX2FycmF5JiBvcGVyYXRvcj4+PShjb25z
dCBUJik7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBUX2FycmF5JiBvcGVyYXRvcjw8PShjb25zdCBU
Jik7CgojIDIyNzUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJh
eS5oIgoKCnB1YmxpYzoKICAgICAKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGNsYXNzIFRf
dXBkYXRlPgogICAgaW5saW5lIFRfYXJyYXkmIGV2YWx1YXRlKFRfZXhwciBleHByLCBUX3VwZGF0
ZSk7CgoKICAgIHRlbXBsYXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGU+CiAgICBpbmxp
bmUgVF9hcnJheSYgZXZhbHVhdGVXaXRoRmFzdFRyYXZlcnNhbCgKICAgICAgICBjb25zdCBUcmF2
ZXJzYWxPcmRlcjxOX3JhbmsgLSAxPiYgb3JkZXIsIAogICAgICAgIFRfZXhwciBleHByLCBUX3Vw
ZGF0ZSk7CgoKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlPgogICAg
aW5saW5lIFRfYXJyYXkmIGV2YWx1YXRlV2l0aFRpbGVkMkRUcmF2ZXJzYWwoCiAgICAgICAgVF9l
eHByIGV4cHIsIFRfdXBkYXRlKTsKCgogICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBU
X3VwZGF0ZT4KICAgIGlubGluZSBUX2FycmF5JiBldmFsdWF0ZVdpdGhJbmRleFRyYXZlcnNhbDEo
CiAgICAgICAgVF9leHByIGV4cHIsIFRfdXBkYXRlKTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4
cHIsIGNsYXNzIFRfdXBkYXRlPgogICAgaW5saW5lIFRfYXJyYXkmIGV2YWx1YXRlV2l0aEluZGV4
VHJhdmVyc2FsTigKICAgICAgICBUX2V4cHIgZXhwciwgVF91cGRhdGUpOwoKICAgIHRlbXBsYXRl
PGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGU+CiAgICBpbmxpbmUgVF9hcnJheSYgZXZhbHVh
dGVXaXRoU3RhY2tUcmF2ZXJzYWwxKAogICAgICAgIFRfZXhwciBleHByLCBUX3VwZGF0ZSk7Cgog
ICAgdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KICAgIGlubGluZSBUX2Fy
cmF5JiBldmFsdWF0ZVdpdGhTdGFja1RyYXZlcnNhbE4oCiAgICAgICAgVF9leHByIGV4cHIsIFRf
dXBkYXRlKTsKCgogICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGdldEluaXRpYWxpemF0aW9u
SXRlcmF0b3IoKQogICAgeyByZXR1cm4gZGF0YUZpcnN0KCk7IH0KCiAgICBib29sICBjYW5Db2xs
YXBzZShpbnQgb3V0ZXJSYW5rLCBpbnQgaW5uZXJSYW5rKSBjb25zdAogICAgeyAKCgoKCgogICAg
ICAgIHJldHVybiAoc3RyaWRlKGlubmVyUmFuaykgKiBleHRlbnQoaW5uZXJSYW5rKSA9PSBzdHJp
ZGUob3V0ZXJSYW5rKSk7IAogICAgfQoKcHJvdGVjdGVkOgogICAgIAogICAgIAogICAgIAoKICAg
IGlubGluZSAgdm9pZCBjb21wdXRlU3RyaWRlcygpOwogICAgaW5saW5lICB2b2lkIHNldHVwU3Rv
cmFnZShpbnQgcmFuayk7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPiYgYXJyYXksIAogICAgICAgIGNvbnN0IFJlY3REb21haW48Tl9yYW5rPiYpOwog
ICAgdm9pZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5
LCBSYW5nZSByMCk7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRfbnVtdHlwZSwg
Tl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSk7CiAgICB2b2lkIGNvbnN0cnVjdFN1
YmFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAg
IFJhbmdlIHIxLCBSYW5nZSByMik7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAgIFJhbmdlIHIxLCBSYW5n
ZSByMiwgUmFuZ2UgcjMpOwogICAgdm9pZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5
cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwKICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIs
IFJhbmdlIHIzLCBSYW5nZSByNCk7CiAgICB2b2lkIGNvbnN0cnVjdFN1YmFycmF5KEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAgIFJhbmdlIHIxLCBSYW5n
ZSByMiwgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSk7CiAgICB2b2lkIGNvbnN0cnVjdFN1
YmFycmF5KEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLAogICAgICAg
IFJhbmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMsIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2Ug
cjYpOwogICAgdm9pZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4m
IGFycmF5LCBSYW5nZSByMCwKICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBS
YW5nZSByNCwgUmFuZ2UgcjUsIFJhbmdlIHI2LAogICAgICAgIFJhbmdlIHI3KTsKICAgIHZvaWQg
Y29uc3RydWN0U3ViYXJyYXkoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2Ug
cjAsCiAgICAgICAgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywgUmFuZ2UgcjQsIFJhbmdl
IHI1LCBSYW5nZSByNiwKICAgICAgICBSYW5nZSByNywgUmFuZ2UgcjgpOwogICAgdm9pZCBjb25z
dHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwK
ICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCwgUmFuZ2UgcjUs
IFJhbmdlIHI2LAogICAgICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjkpOwogICAgdm9p
ZCBjb25zdHJ1Y3RTdWJhcnJheShBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5n
ZSByMCwKICAgICAgICBSYW5nZSByMSwgUmFuZ2UgcjIsIFJhbmdlIHIzLCBSYW5nZSByNCwgUmFu
Z2UgcjUsIFJhbmdlIHI2LAogICAgICAgIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFuZ2UgcjksIFJh
bmdlIHIxMCk7CgogICAgdm9pZCBjYWxjdWxhdGVaZXJvT2Zmc2V0KCk7CgogICAgdGVtcGxhdGU8
aW50IE5fcmFuazIsIGNsYXNzIFIwLCBjbGFzcyBSMSwgY2xhc3MgUjIsIGNsYXNzIFIzLCBjbGFz
cyBSNCwgCiAgICAgICAgY2xhc3MgUjUsIGNsYXNzIFI2LCBjbGFzcyBSNywgY2xhc3MgUjgsIGNs
YXNzIFI5LCBjbGFzcyBSMTA+CiAgICB2b2lkIGNvbnN0cnVjdFNsaWNlKEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rMj4mIGFycmF5LCBSMCByMCwgUjEgcjEsIFIyIHIyLCAKICAgICAgICBSMyByMywg
UjQgcjQsIFI1IHI1LCBSNiByNiwgUjcgcjcsIFI4IHI4LCBSOSByOSwgUjEwIHIxMCk7CgogICAg
dGVtcGxhdGU8aW50IE5fcmFuazI+CiAgICB2b2lkIHNsaWNlKGludCYgc2V0UmFuaywgUmFuZ2Ug
ciwgQXJyYXk8VF9udW10eXBlLE5fcmFuazI+JiBhcnJheSwKICAgICAgICBUaW55VmVjdG9yPGlu
dCxOX3JhbmsyPiYgcmFua01hcCwgaW50IHNvdXJjZVJhbmspOwoKICAgIHRlbXBsYXRlPGludCBO
X3JhbmsyPgogICAgdm9pZCBzbGljZShpbnQmIHNldFJhbmssIGludCBpLCBBcnJheTxUX251bXR5
cGUsTl9yYW5rMj4mIGFycmF5LAogICAgICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuazI+JiByYW5r
TWFwLCBpbnQgc291cmNlUmFuayk7CgogICAgdGVtcGxhdGU8aW50IE5fcmFuazI+CiAgICB2b2lk
IHNsaWNlKGludCYgc2V0UmFuaywgbmlsQXJyYXlTZWN0aW9uLCBBcnJheTxUX251bXR5cGUsTl9y
YW5rMj4mIGFycmF5LAogICAgICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuazI+JiByYW5rTWFwLCBp
bnQgc291cmNlUmFuaykKICAgIHsgfQoKICAgIHZvaWQgZG9UcmFuc3Bvc2UoaW50IGRlc3RSYW5r
LCBpbnQgc291cmNlUmFuaywgVF9hcnJheSYgYXJyYXkpOwoKcHJvdGVjdGVkOgogICAgIAogICAg
IAogICAgIAoKICAgICAKCiAgICAgCgoKCgoKCgoKCgoKCgoKICAgIEdlbmVyYWxBcnJheVN0b3Jh
Z2U8Tl9yYW5rPiBzdG9yYWdlXzsKICAgIFRpbnlWZWN0b3I8aW50LCBOX3Jhbms+IGxlbmd0aF87
CiAgICBUaW55VmVjdG9yPGludCwgTl9yYW5rPiBzdHJpZGVfOwogICAgaW50IHplcm9PZmZzZXRf
Owp9OwoKIAoKCgoKCgoKCgoKCmNvbnN0IGludCBmaXJzdFJhbmsgICAgPSAwOwpjb25zdCBpbnQg
c2Vjb25kUmFuayAgID0gMTsKY29uc3QgaW50IHRoaXJkUmFuayAgICA9IDI7CmNvbnN0IGludCBm
b3VydGhSYW5rICAgPSAzOwpjb25zdCBpbnQgZmlmdGhSYW5rICAgID0gNDsKY29uc3QgaW50IHNp
eHRoUmFuayAgICA9IDU7CmNvbnN0IGludCBzZXZlbnRoUmFuayAgPSA2Owpjb25zdCBpbnQgZWln
aHRoUmFuayAgID0gNzsKY29uc3QgaW50IG5pbnRoUmFuayAgICA9IDg7CmNvbnN0IGludCB0ZW50
aFJhbmsgICAgPSA5Owpjb25zdCBpbnQgZWxldmVudGhSYW5rID0gMTA7Cgpjb25zdCBpbnQgZmly
c3REaW0gICAgPSAwOwpjb25zdCBpbnQgc2Vjb25kRGltICAgPSAxOwpjb25zdCBpbnQgdGhpcmRE
aW0gICAgPSAyOwpjb25zdCBpbnQgZm91cnRoRGltICAgPSAzOwpjb25zdCBpbnQgZmlmdGhEaW0g
ICAgPSA0Owpjb25zdCBpbnQgc2l4dGhEaW0gICAgPSA1Owpjb25zdCBpbnQgc2V2ZW50aERpbSAg
PSA2Owpjb25zdCBpbnQgZWlnaHRoRGltICAgPSA3Owpjb25zdCBpbnQgbmludGhEaW0gICAgPSA4
Owpjb25zdCBpbnQgdGVudGhEaW0gICAgPSA5Owpjb25zdCBpbnQgZWxldmVudGhEaW0gPSAxMDsK
CiAKCgoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgpvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJl
YW0mLCBjb25zdCBBcnJheTxUX251bXR5cGUsMT4mKTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZT4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgY29uc3QgQXJyYXk8VF9udW10eXBlLDI+
Jik7Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+Cm9zdHJlYW0mIG9wZXJh
dG9yPDwob3N0cmVhbSYsIGNvbnN0IEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+Jik7Cgp0ZW1wbGF0
ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CmlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVh
bSYgaXMsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiB4KTsKCn0gCgogCgoKCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9pdGVyLmgiIDEKCgoKCgoj
ZGVmaW5lIEJaX0FSUkFZX0lURVJfSAoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnN0cnVjdCBfYnpf
ZW5kVGFnIHsgfTsKCgp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KY2xhc3MgQ29uc3RBcnJheUl0
ZXJhdG9yIHsKCnB1YmxpYzoKICAgIENvbnN0QXJyYXlJdGVyYXRvcihjb25zdCBBcnJheTxULE4+
JiBhcnJheSkKICAgIHsKICAgICAgICAgCiAgICAgICAgIAogICAgICAgIHN0cmlkZXNfID0gYXJy
YXkuc3RyaWRlKCk7CiAgICAgICAgbGJvdW5kXyA9IGFycmF5Lmxib3VuZCgpOwogICAgICAgIGV4
dGVudF8gPSBhcnJheS5leHRlbnQoKTsKICAgICAgICBvcmRlcl8gPSBhcnJheS5vcmRlcmluZygp
OwogICAgICAgIGZpcnN0XyA9IGNvbnN0X2Nhc3Q8VCo+KGFycmF5LmRhdGFGaXJzdCgpKTsKICAg
ICAgICBkYXRhXyA9IGZpcnN0XzsKCiAgICAgICAgbWF4UmFua18gPSBvcmRlcl8oMCk7CiAgICAg
ICAgc3RyaWRlXyA9IHN0cmlkZXNfKG1heFJhbmtfKTsKCiAgICAgICAgZm9yIChpbnQgaT0wOyBp
IDwgTjsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgc3RhY2tfW2ldID0gZGF0YV87CiAgICAg
ICAgICAgIGxhc3RfW2ldID0gZGF0YV8gKyBhcnJheS5leHRlbnQob3JkZXJfKGkpKSAgCiAgICAg
ICAgICAgICAgICAqIHN0cmlkZXNfKG9yZGVyXyhpKSk7CiAgICAgICAgfQoKICAgICAgICBwb3Nf
ID0gbGJvdW5kXzsKICAgIH0KCiAgICBDb25zdEFycmF5SXRlcmF0b3IoY29uc3QgQXJyYXk8VCxO
PiYgYXJyYXksIF9iel9lbmRUYWcpCiAgICB7CiAgICAgICAgIAogICAgICAgICAKICAgICAgICAg
CgogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGRhdGFfID0gMDsKICAgIH0K
CiAgICBUIG9wZXJhdG9yKigpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKCiAgICAgICAgcmV0dXJu
ICpkYXRhXzsKICAgIH0KCiAgICBjb25zdCBUKiBfX3Jlc3RyaWN0X18gIG9wZXJhdG9yLT4oKSBj
b25zdAogICAgewogICAgICAgICA7CgogICAgICAgIHJldHVybiBkYXRhXzsKICAgIH0KCiAgICBD
b25zdEFycmF5SXRlcmF0b3I8VCxOPiYgb3BlcmF0b3IrKygpOwoKICAgICAKICAgICAKICAgICAK
ICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgICAKICAgIHZvaWQgb3BlcmF0
b3IrKyhpbnQpCiAgICB7ICsrKCp0aGlzKTsgfQoKICAgIGNvbnN0IFRpbnlWZWN0b3I8aW50LE4+
JiBwb3NpdGlvbigpIGNvbnN0CiAgICB7IAogICAgICAgICA7CgogICAgICAgIHJldHVybiBwb3Nf
OyAKICAgIH0KICAgCiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29uc3RBcnJheUl0ZXJhdG9y
PFQsTj4mIHgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGRhdGFfID09IHguZGF0YV87CiAg
ICB9CgogICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IENvbnN0QXJyYXlJdGVyYXRvcjxULE4+JiB4
KSBjb25zdAogICAgewogICAgICAgIHJldHVybiBkYXRhXyAhPSB4LmRhdGFfOwogICAgfQogCnBy
aXZhdGU6CiAgICBDb25zdEFycmF5SXRlcmF0b3IoKSB7IH0KCnByaXZhdGU6CiAgICBUaW55VmVj
dG9yPGludCxOPiBzdHJpZGVzXywgbGJvdW5kXywgZXh0ZW50Xywgb3JkZXJfOwogICAgVCAqIHN0
YWNrX1tOXTsKICAgIFQgKiBsYXN0X1tOXTsKICAgIGludCBzdHJpZGVfOwogICAgaW50IG1heFJh
bmtfOwoKcHJvdGVjdGVkOgogICAgVGlueVZlY3RvcjxpbnQsTj4gcG9zXzsKICAgIFQgKiBfX3Jl
c3RyaWN0X18gIGRhdGFfOwogICAgVCAqIF9fcmVzdHJpY3RfXyAgZmlyc3RfOwp9OwoKCgp0ZW1w
bGF0ZTxjbGFzcyBULCBpbnQgTj4KY2xhc3MgQXJyYXlJdGVyYXRvciA6IHB1YmxpYyBDb25zdEFy
cmF5SXRlcmF0b3I8VCxOPiB7CiAgcHVibGljOgogICAgQXJyYXlJdGVyYXRvcihBcnJheTxULE4+
JiB4KQogICAgICA6IENvbnN0QXJyYXlJdGVyYXRvcjxULE4+KHgpCiAgICB7IH0KCiAgICBBcnJh
eUl0ZXJhdG9yKEFycmF5PFQsTj4mIHgsIF9iel9lbmRUYWcgeSkKICAgICAgOiBDb25zdEFycmF5
SXRlcmF0b3I8VCxOPih4LHkpCiAgICB7IH0KCiAgICBBcnJheUl0ZXJhdG9yPFQsTj4mIG9wZXJh
dG9yKysoKQogICAgewogICAgICAgIENvbnN0QXJyYXlJdGVyYXRvcjxULE4+OjpvcGVyYXRvcisr
KCk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIFQmIG9wZXJhdG9yKigpCiAgICB7
CiAgICAgICAgcmV0dXJuICpkYXRhXzsKICAgIH0KCiAgICBUKiBfX3Jlc3RyaWN0X18gIG9wZXJh
dG9yLT4oKSAKICAgIHsKICAgICAgICByZXR1cm4gZGF0YV87CiAgICB9Cn07CgoKCnRlbXBsYXRl
PGNsYXNzIFQsIGludCBOPgpDb25zdEFycmF5SXRlcmF0b3I8VCxOPiYgQ29uc3RBcnJheUl0ZXJh
dG9yPFQsTj46Om9wZXJhdG9yKysoKQp7CiAgICAgOwoKICAgIGRhdGFfICs9IHN0cmlkZV87Cgog
ICAgaWYgKGRhdGFfICE9IGxhc3RfWzBdKQogICAgewogICAgICAgICAKICAgICAgICArK3Bvc19b
bWF4UmFua19dOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgICAgCiAgICAgCgogICAg
aW50IGogPSAxOwogICAgZm9yICg7IGogPCBOOyArK2opCiAgICB7CiAgICAgICAgaW50IHIgPSBv
cmRlcl8oaik7CiAgICAgICAgZGF0YV8gPSBzdGFja19bal07CiAgICAgICAgZGF0YV8gKz0gc3Ry
aWRlc19bcl07CiAgICAgICAgKytwb3NfKHIpOwoKICAgICAgICBpZiAoZGF0YV8gIT0gbGFzdF9b
al0pCiAgICAgICAgICAgIGJyZWFrOwogICAgfQoKICAgICAKICAgIGlmIChqID09IE4pCiAgICB7
CiAgICAgICAgIAogICAgICAgICAKICAgICAgICBkYXRhXyA9IDA7CiAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgfQoKICAgIHN0YWNrX1tqXSA9IGRhdGFfOwoKICAgICAKICAgIGZvciAoLS1qOyBq
ID49IDA7IC0taikKICAgIHsKICAgICAgICBpbnQgcjIgPSBvcmRlcl8oaik7CiAgICAgICAgc3Rh
Y2tfW2pdID0gZGF0YV87CiAgICAgICAgbGFzdF9bal0gPSBkYXRhXyArIGV4dGVudF8ocjIpICog
c3RyaWRlc18ocjIpOwogICAgICAgIHBvc18ocjIpID0gbGJvdW5kXyhyMik7CiAgICB9CgogICAg
cmV0dXJuICp0aGlzOwp9Cgp9IAoKCgojIDI0NjkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2sv
aW5jbHVkZS9ibGl0ei9hcnJheS9mYXN0aXRlci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKI2RlZmluZSBCWl9BUlJBWV9GQVNUSVRFUl9ICgoKIAojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Ryc3RyZWFtIiAxIDMK
IAogCgoKI2RlZmluZSBfX1NUUlNUUkVBTV9fCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4v
Li4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJzdHJlYW0uaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgogCgoKI2RlZmluZSBfX1NUUlNUUkVBTV9ICgojcHJhZ21hIGludGVyZmFjZQoKCiMg
MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9nKystMy9zdHJmaWxl
LmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgp0eXBlZGVmIHZv
aWQgKigqX0lPX2FsbG9jX3R5cGUpICAoc2l6ZV90ICApICA7CnR5cGVkZWYgdm9pZCAoKl9JT19m
cmVlX3R5cGUpICAodm9pZCopICA7CgpzdHJ1Y3QgX0lPX3N0cl9maWVsZHMKewogIF9JT19hbGxv
Y190eXBlIF9hbGxvY2F0ZV9idWZmZXI7CiAgX0lPX2ZyZWVfdHlwZSBfZnJlZV9idWZmZXI7Cn07
CgogCgoKCgpzdHJ1Y3QgX0lPX3N0cmVhbWJ1Zgp7CiAgc3RydWN0IF9JT19GSUxFIF9mOwogIGNv
bnN0IHZvaWQgKl92dGFibGU7Cn07Cgp0eXBlZGVmIHN0cnVjdCBfSU9fc3RyZmlsZV8KewogIHN0
cnVjdCBfSU9fc3RyZWFtYnVmIF9zYmY7CiAgc3RydWN0IF9JT19zdHJfZmllbGRzIF9zOwp9IF9J
T19zdHJmaWxlOwoKIAoKI2RlZmluZSBfSU9fU1RSX0RZTkFNSUMoRlApICgoRlApLT5fcy5fYWxs
b2NhdGVfYnVmZmVyICE9IChfSU9fYWxsb2NfdHlwZSkwKQoKIAoKI2RlZmluZSBfSU9fU1RSX0ZS
T1pFTihGUCkgKChGUCktPl9mLl9JT19maWxlX2ZsYWdzICYgX0lPX1VTRVJfQlVGKQojIDMzICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL3N0cnN0cmVhbS5o
IiAyIDMKCgpleHRlcm4gIkMrKyIgewpjbGFzcyBzdHJzdHJlYW1idWYgOiBwdWJsaWMgc3RyZWFt
YnVmCnsKICBzdHJ1Y3QgX0lPX3N0cl9maWVsZHMgX3M7CiAgZnJpZW5kIGNsYXNzIGlzdHJzdHJl
YW07CgogICAgdm9pZCBpbml0X2R5bmFtaWMoX0lPX2FsbG9jX3R5cGUgYWxsb2MsIF9JT19mcmVl
X3R5cGUgZnJlZSwKCQkgICAgICBpbnQgaW5pdGlhbF9zaXplID0gMCk7CiAgICB2b2lkIGluaXRf
c3RhdGljKGNoYXIgKnB0ciwgaW50IHNpemUsIGNoYXIgKnBzdGFydCk7CiAgICB2b2lkIGluaXRf
cmVhZG9ubHkoY29uc3QgY2hhciAqcHRyLCBpbnQgc2l6ZSk7CiAgcHJvdGVjdGVkOgogICAgdmly
dHVhbCBpbnQgb3ZlcmZsb3coaW50ID0gKC0xKSApOwogICAgdmlydHVhbCBpbnQgdW5kZXJmbG93
KCk7CiAgICB2aXJ0dWFsIGludCBwYmFja2ZhaWwoaW50IGMpOwogIHB1YmxpYzoKICAgIHZpcnR1
YWwgfnN0cnN0cmVhbWJ1ZigpOwogICAgc3Ryc3RyZWFtYnVmKCkgeyBpbml0X2R5bmFtaWMoMCwg
MCk7IH0KICAgIHN0cnN0cmVhbWJ1ZihpbnQgaW5pdGlhbF9zaXplKSB7IGluaXRfZHluYW1pYygw
LCAwLCBpbml0aWFsX3NpemUpOyB9CiAgICBzdHJzdHJlYW1idWYodm9pZCAqKCpfX2FsbG9jKShz
aXplX3QgICksIHZvaWQgKCpfX2ZyZWUpKHZvaWQqKSkKCXsgaW5pdF9keW5hbWljKF9fYWxsb2Ms
IF9fZnJlZSk7IH0KICAgIHN0cnN0cmVhbWJ1ZihjaGFyICpwdHIsIGludCBzaXplLCBjaGFyICpw
c3RhcnQgPSBfX251bGwgKQoJeyBpbml0X3N0YXRpYyhwdHIsIHNpemUsIHBzdGFydCk7IH0KICAg
IHN0cnN0cmVhbWJ1Zih1bnNpZ25lZCBjaGFyICpwdHIsIGludCBzaXplLCB1bnNpZ25lZCBjaGFy
ICpwc3RhcnQgPSBfX251bGwgKQoJeyBpbml0X3N0YXRpYygoY2hhciopcHRyLCBzaXplLCAoY2hh
ciopcHN0YXJ0KTsgfQogICAgc3Ryc3RyZWFtYnVmKGNvbnN0IGNoYXIgKnB0ciwgaW50IHNpemUp
Cgl7IGluaXRfcmVhZG9ubHkocHRyLCBzaXplKTsgfQogICAgc3Ryc3RyZWFtYnVmKGNvbnN0IHVu
c2lnbmVkIGNoYXIgKnB0ciwgaW50IHNpemUpCgl7IGluaXRfcmVhZG9ubHkoKGNvbnN0IGNoYXIq
KXB0ciwgc2l6ZSk7IH0KICAgIHN0cnN0cmVhbWJ1ZihzaWduZWQgY2hhciAqcHRyLCBpbnQgc2l6
ZSwgc2lnbmVkIGNoYXIgKnBzdGFydCA9IF9fbnVsbCApCgl7IGluaXRfc3RhdGljKChjaGFyKilw
dHIsIHNpemUsIChjaGFyKilwc3RhcnQpOyB9CiAgICBzdHJzdHJlYW1idWYoY29uc3Qgc2lnbmVk
IGNoYXIgKnB0ciwgaW50IHNpemUpCgl7IGluaXRfcmVhZG9ubHkoKGNvbnN0IGNoYXIqKXB0ciwg
c2l6ZSk7IH0KICAgICAKICAgIGludCBmcm96ZW4oKSB7IHJldHVybiBfZmxhZ3MgJiAxICA/IDEg
OiAwOyB9CiAgICB2b2lkIGZyZWV6ZShpbnQgbj0xKQoJeyBpZiAoKCggdGhpcyApLT5fcy5fYWxs
b2NhdGVfYnVmZmVyICE9IChfSU9fYWxsb2NfdHlwZSkwKSApCgkgICAgeyBpZiAobikgX2ZsYWdz
IHw9IDEgOyBlbHNlIF9mbGFncyAmPSB+MSA7IH0gfQogICAgX19zc2l6ZV90ICAgcGNvdW50KCk7
CiAgICBjaGFyICpzdHIoKTsKICAgIHZpcnR1YWwgc3RyZWFtcG9zIHNlZWtvZmYoc3RyZWFtb2Zm
LCBfc2Vla19kaXIsIGludCBtb2RlPWlvczo6aW58aW9zOjpvdXQpOwp9OwoKY2xhc3Mgc3Ryc3Ry
ZWFtYmFzZSA6IHZpcnR1YWwgcHVibGljIGlvcyB7CiAgcHJvdGVjdGVkOgogICAgc3Ryc3RyZWFt
YnVmIF9fbXlfc2I7CiAgcHVibGljOgogICAgc3Ryc3RyZWFtYnVmKiByZGJ1ZigpIHsgcmV0dXJu
ICZfX215X3NiOyB9CiAgcHJvdGVjdGVkOgogICAgc3Ryc3RyZWFtYmFzZSgpIHsgaW5pdCAoJl9f
bXlfc2IpOyB9CiAgICBzdHJzdHJlYW1iYXNlKGNoYXIgKmNwLCBpbnQgbiwgaW50IG1vZGU9aW9z
OjpvdXQpOwp9OwoKY2xhc3MgaXN0cnN0cmVhbSA6IHB1YmxpYyBzdHJzdHJlYW1iYXNlLCBwdWJs
aWMgaXN0cmVhbSB7CiAgcHVibGljOgogICAgaXN0cnN0cmVhbShjb25zdCBjaGFyKiwgaW50PTAp
Owp9OwoKY2xhc3Mgb3N0cnN0cmVhbSA6IHB1YmxpYyBzdHJzdHJlYW1iYXNlLCBwdWJsaWMgb3N0
cmVhbSB7CiAgcHVibGljOgogICAgb3N0cnN0cmVhbSgpIHsgfQogICAgb3N0cnN0cmVhbShjaGFy
ICpjcCwgaW50IG4sIGludCBtb2RlPWlvczo6b3V0KSA6c3Ryc3RyZWFtYmFzZShjcCxuLG1vZGUp
e30KICAgIF9fc3NpemVfdCAgIHBjb3VudCgpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3Ry
YnVmKS0+cGNvdW50KCk7IH0KICAgIGNoYXIgKnN0cigpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVm
Kilfc3RyYnVmKS0+c3RyKCk7IH0KICAgIHZvaWQgZnJlZXplKGludCBuID0gMSkgeyAoKHN0cnN0
cmVhbWJ1ZiopX3N0cmJ1ZiktPmZyZWV6ZShuKTsgfQogICAgaW50IGZyb3plbigpIHsgcmV0dXJu
ICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVmKS0+ZnJvemVuKCk7IH0KfTsKCmNsYXNzIHN0cnN0cmVh
bSA6IHB1YmxpYyBzdHJzdHJlYW1iYXNlLCBwdWJsaWMgaW9zdHJlYW0gewogIHB1YmxpYzoKICBz
dHJzdHJlYW0oKSB7IH0KICAgIHN0cnN0cmVhbShjaGFyICpjcCwgaW50IG4sIGludCBtb2RlPWlv
czo6b3V0KSA6c3Ryc3RyZWFtYmFzZShjcCxuLG1vZGUpe30KICAgIF9fc3NpemVfdCAgIHBjb3Vu
dCgpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVmKS0+cGNvdW50KCk7IH0KICAgIGNo
YXIgKnN0cigpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVmKS0+c3RyKCk7IH0KICAg
IHZvaWQgZnJlZXplKGludCBuID0gMSkgeyAoKHN0cnN0cmVhbWJ1ZiopX3N0cmJ1ZiktPmZyZWV6
ZShuKTsgfQogICAgaW50IGZyb3plbigpIHsgcmV0dXJuICgoc3Ryc3RyZWFtYnVmKilfc3RyYnVm
KS0+ZnJvemVuKCk7IH0KfTsKfSAgCgoKIyA2ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2du
dS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8u
Li8uLi9pbmNsdWRlL2crKy0zL3N0cnN0cmVhbSIgMiAzCgoKIyA0MSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2Zhc3RpdGVyLmgiIDIKCgoKCgpuYW1lc3Bh
Y2UgIGJsaXR6ICB7IAoKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4K
Y2xhc3MgRmFzdEFycmF5SXRlcmF0b3IgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlwZSAg
ICAgICAgICAgICAgICBUX251bXR5cGU7CiAgICB0eXBlZGVmIEFycmF5PFRfbnVtdHlwZSwgTl9y
YW5rPiBUX2FycmF5OwogICAgdHlwZWRlZiBGYXN0QXJyYXlJdGVyYXRvcjxQX251bXR5cGUsIE5f
cmFuaz4gVF9pdGVyYXRvcjsKICAgIHR5cGVkZWYgY29uc3QgVF9hcnJheSYgVF9jdG9yQXJnMTsK
ICAgIHR5cGVkZWYgaW50ICAgICAgICAgICAgVF9jdG9yQXJnMjsgICAgIAoKICAgIGVudW0geyBu
dW1BcnJheU9wZXJhbmRzID0gMSwgbnVtSW5kZXhQbGFjZWhvbGRlcnMgPSAwLAogICAgICAgIHJh
bmsgPSBOX3JhbmsgfTsKCiAgICAgCiAgICAgCiAgICBGYXN0QXJyYXlJdGVyYXRvcihjb25zdCBG
YXN0QXJyYXlJdGVyYXRvcjxQX251bXR5cGUsIE5fcmFuaz4mIHgpCiAgICAgICAgOiBkYXRhXyh4
LmRhdGFfKSwgYXJyYXlfKHguYXJyYXlfKQogICAgeyB9CgogICAgdm9pZCBvcGVyYXRvcj0oY29u
c3QgRmFzdEFycmF5SXRlcmF0b3I8UF9udW10eXBlLCBOX3Jhbms+JiB4KQogICAgewogICAgICAg
IGFycmF5XyA9IHguYXJyYXlfOwogICAgICAgIGRhdGFfID0geC5kYXRhXzsKICAgICAgICBzdGFj
a18gPSB4LnN0YWNrXzsKICAgICAgICBzdHJpZGVfID0geC5zdHJpZGVfOwogICAgfQoKICAgIEZh
c3RBcnJheUl0ZXJhdG9yKGNvbnN0IFRfYXJyYXkmIGFycmF5KQogICAgICAgIDogYXJyYXlfKGFy
cmF5KQogICAgewogICAgICAgIGRhdGFfICAgPSBhcnJheS5kYXRhKCk7CiAgICB9CgogICAgfkZh
c3RBcnJheUl0ZXJhdG9yKCkKICAgIHsgfQoKCgoKCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShj
b25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGFycmF5XyhpKTsg
fQoKCiAgICBpbnQgYXNjZW5kaW5nKGludCByYW5rKQogICAgewogICAgICAgIGlmIChyYW5rIDwg
Tl9yYW5rKQogICAgICAgICAgICByZXR1cm4gYXJyYXlfLmlzUmFua1N0b3JlZEFzY2VuZGluZyhy
YW5rKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkg
OyAgICAKICAgIH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7CiAgICAgICAgaWYg
KHJhbmsgPCBOX3JhbmspCiAgICAgICAgICAgIHJldHVybiBhcnJheV8ub3JkZXJpbmcocmFuayk7
CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gKC0gMjE0NzQ4MzY0NyAgLTEpIDsgICAg
CiAgICB9CgogICAgaW50IGxib3VuZChpbnQgcmFuaykKICAgIHsgCiAgICAgICAgaWYgKHJhbmsg
PCBOX3JhbmspCiAgICAgICAgICAgIHJldHVybiBhcnJheV8ubGJvdW5kKHJhbmspOyAKICAgICAg
ICBlbHNlCiAgICAgICAgICAgIHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkgOyAgICAKICAgIH0K
CiAgICBpbnQgdWJvdW5kKGludCByYW5rKQogICAgeyAKICAgICAgICBpZiAocmFuayA8IE5fcmFu
aykKICAgICAgICAgICAgcmV0dXJuIGFycmF5Xy51Ym91bmQocmFuayk7IAogICAgICAgIGVsc2UK
ICAgICAgICAgICAgcmV0dXJuIDIxNDc0ODM2NDcgIDsgICAgCiAgICB9CgogICAgVF9udW10eXBl
IG9wZXJhdG9yKigpCiAgICB7IHJldHVybiAqZGF0YV87IH0KCiAgICBUX251bXR5cGUgb3BlcmF0
b3JbXShpbnQgaSkKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBzdHJpZGVfXTsgfQoKICAgIFRfbnVt
dHlwZSBmYXN0UmVhZChpbnQgaSkKICAgIHsgcmV0dXJuIGRhdGFfW2ldOyB9CgogICAgaW50IHN1
Z2dlc3RTdHJpZGUoaW50IHJhbmspIGNvbnN0CiAgICB7IHJldHVybiBhcnJheV8uc3RyaWRlKHJh
bmspOyB9CgogICAgYm9vbCAgaXNTdHJpZGUoaW50IHJhbmssIGludCBzdHJpZGUpIGNvbnN0CiAg
ICB7IHJldHVybiBhcnJheV8uc3RyaWRlKHJhbmspID09IHN0cmlkZTsgfQoKICAgIHZvaWQgcHVz
aChpbnQgcG9zaXRpb24pCiAgICB7CiAgICAgICAgc3RhY2tfW3Bvc2l0aW9uXSA9IGRhdGFfOwog
ICAgfQogIAogICAgdm9pZCBwb3AoaW50IHBvc2l0aW9uKQogICAgeyAKICAgICAgICBkYXRhXyA9
IHN0YWNrX1twb3NpdGlvbl07CiAgICB9CgogICAgdm9pZCBhZHZhbmNlKCkKICAgIHsKICAgICAg
ICBkYXRhXyArPSBzdHJpZGVfOwogICAgfQoKICAgIHZvaWQgYWR2YW5jZShpbnQgbikKICAgIHsK
ICAgICAgICBkYXRhXyArPSBuICogc3RyaWRlXzsKICAgIH0KCiAgICB2b2lkIGxvYWRTdHJpZGUo
aW50IHJhbmspCiAgICB7CiAgICAgICAgc3RyaWRlXyA9IGFycmF5Xy5zdHJpZGUocmFuayk7CiAg
ICB9CgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICBkYXRhKCkgY29uc3QKICAg
IHsgcmV0dXJuIGRhdGFfOyB9CgogICAgdm9pZCBfYnpfc2V0RGF0YShjb25zdCBUX251bXR5cGUq
IHB0cikKICAgIHsgZGF0YV8gPSBwdHI7IH0KCiAgICBpbnQgc3RyaWRlKCkgY29uc3QKICAgIHsg
cmV0dXJuIHN0cmlkZV87IH0KCiAgICBib29sICBpc1VuaXRTdHJpZGUoaW50IHJhbmspIGNvbnN0
CiAgICB7IHJldHVybiBhcnJheV8uc3RyaWRlKHJhbmspID09IDE7IH0KCiAgICB2b2lkIGFkdmFu
Y2VVbml0U3RyaWRlKCkKICAgIHsgKytkYXRhXzsgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGlu
dCBvdXRlckxvb3BSYW5rLCBpbnQgaW5uZXJMb29wUmFuaykgY29uc3QKICAgIHsgcmV0dXJuIGFy
cmF5Xy5jYW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsgfQoKICAgIHZv
aWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNv
bnN0CiAgICB7CiAgICAgICAgaWYgKGZvcm1hdC50ZXJzZVByaW50aW5nU2VsZWN0ZWQoKSkKICAg
ICAgICAgICAgc3RyICs9IGZvcm1hdC5uZXh0QXJyYXlPcGVyYW5kU3ltYm9sKCk7CiAgICAgICAg
ZWxzZSBpZiAoZm9ybWF0LmR1bXBBcnJheVNoYXBlc01vZGUoKSkKICAgICAgICB7CiAgICAgICAg
ICAgIG9zdHJzdHJlYW0gb3N0cjsKICAgICAgICAgICAgb3N0ciA8PCBhcnJheV8uc2hhcGUoKTsK
ICAgICAgICAgICAgc3RyICs9IG9zdHIuc3RyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2Ugewog
ICAgICAgICAgICBzdHIgKz0gIkFycmF5PCI7CiAgICAgICAgICAgIHN0ciArPSB0eXBlaWQoIFRf
bnVtdHlwZSApLm5hbWUoKSA7CiAgICAgICAgICAgIHN0ciArPSAiLCI7CgogICAgICAgICAgICBj
aGFyIHRtcEJ1ZlsxMF07CiAgICAgICAgICAgIHNwcmludGYodG1wQnVmLCAiJWQiLCBOX3Jhbmsp
OwoKICAgICAgICAgICAgc3RyICs9IHRtcEJ1ZjsKICAgICAgICAgICAgc3RyICs9ICI+IjsKICAg
ICAgICB9CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBl
Q2hlY2soY29uc3QgVF9zaGFwZSYgc2hhcGUpCiAgICB7IHJldHVybiBhcmVTaGFwZXNDb25mb3Jt
YWJsZShzaGFwZSwgYXJyYXlfLmxlbmd0aCgpKTsgfQoKCiAgICAgCiAgICBUX251bXR5cGUmIG9w
ZXJhdG9yKCkoaW50IGkpCiAgICB7CiAgICAgICAgcmV0dXJuIChUX251bXR5cGUmKWRhdGFfW2kq
YXJyYXlfLnN0cmlkZSgwKV07CiAgICB9CgogICAgIAogICAgVF9udW10eXBlJiBvcGVyYXRvcigp
KGludCBpLCBpbnQgaikKICAgIHsKICAgICAgICByZXR1cm4gKFRfbnVtdHlwZSYpZGF0YV9baSph
cnJheV8uc3RyaWRlKDApICsgaiphcnJheV8uc3RyaWRlKDEpXTsKICAgIH0KCiAgICAgCiAgICBU
X251bXR5cGUmIG9wZXJhdG9yKCkoaW50IGksIGludCBqLCBpbnQgaykKICAgIHsKICAgICAgICBy
ZXR1cm4gKFRfbnVtdHlwZSYpZGF0YV9baSphcnJheV8uc3RyaWRlKDApICsgaiphcnJheV8uc3Ry
aWRlKDEpCiAgICAgICAgICArIGsqYXJyYXlfLnN0cmlkZSgyKV07CiAgICB9CgogICAgIAoKICAg
IHZvaWQgbW92ZVRvKGludCBpLCBpbnQgaikKICAgIHsKICAgICAgICBkYXRhXyA9ICZjb25zdF9j
YXN0PFRfYXJyYXkmPihhcnJheV8pKGksaik7CiAgICB9CgogICAgdm9pZCBtb3ZlVG8oaW50IGks
IGludCBqLCBpbnQgaykKICAgIHsKICAgICAgICBkYXRhXyA9ICZjb25zdF9jYXN0PFRfYXJyYXkm
PihhcnJheV8pKGksaixrKTsKICAgIH0KCiAgICB2b2lkIG1vdmVUbyhjb25zdCBUaW55VmVjdG9y
PGludCxOX3Jhbms+JiBpKQogICAgewogICAgICAgIGRhdGFfID0gJmNvbnN0X2Nhc3Q8VF9hcnJh
eSY+KGFycmF5XykoaSk7CiAgICB9CgogICAgIAogICAgdm9pZCBvcGVyYXRvcj0oVF9udW10eXBl
IHgpCiAgeyAgICpjb25zdF9jYXN0PFRfbnVtdHlwZSogID4oZGF0YV8pID0geDsgfQoKICAgICAK
ICAgIHRlbXBsYXRlPGNsYXNzIFRfdmFsdWU+CiAgICB2b2lkIG9wZXJhdG9yPShUX3ZhbHVlIHgp
CiAgeyAgICpjb25zdF9jYXN0PFRfbnVtdHlwZSogID4oZGF0YV8pID0geDsgfQoKICAgICAKICAg
IHRlbXBsYXRlPGNsYXNzIFRfdmFsdWU+CiAgICB2b2lkIG9wZXJhdG9yKz0oVF92YWx1ZSB4KQog
IHsgKmNvbnN0X2Nhc3Q8VF9udW10eXBlKiAgPihkYXRhXykgKz0geDsgfQoKICAgICAKCiAgICAg
CiAgICBvcGVyYXRvciBUX251bXR5cGUoKSBjb25zdAogICAgeyByZXR1cm4gKmRhdGFfOyB9Cgog
ICAgIAogICAgVF9udW10eXBlIHNoaWZ0KGludCBvZmZzZXQsIGludCBkaW0pCiAgICB7CiAgICAg
ICAgcmV0dXJuIGRhdGFfW29mZnNldCphcnJheV8uc3RyaWRlKGRpbSldOwogICAgfQoKICAgICAK
ICAgIFRfbnVtdHlwZSBzaGlmdChpbnQgb2Zmc2V0MSwgaW50IGRpbTEsIGludCBvZmZzZXQyLCBp
bnQgZGltMikKICAgIHsKICAgICAgICByZXR1cm4gZGF0YV9bb2Zmc2V0MSphcnJheV8uc3RyaWRl
KGRpbTEpIAogICAgICAgICAgICArIG9mZnNldDIqYXJyYXlfLnN0cmlkZShkaW0yKV07CiAgICB9
Cgpwcml2YXRlOgogICAgY29uc3QgVF9udW10eXBlICogX19yZXN0cmljdF9fICAgICAgICAgICBk
YXRhXzsKICAgIGNvbnN0IFRfYXJyYXkmICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV87
CiAgICBjb25zdCBUX251bXR5cGUgKiAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tfW05fcmFu
a107CiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlXzsK
fTsKCn0gCgoKIyAyNDcwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
YXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
YXJyYXkvZXhwci5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2Rl
ZmluZSBCWl9BUlJBWUVYUFJfSAoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L29wcy5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKI2RlZmluZSBCWl9PUFNfSAoKCgoKCgoKCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfREVGSU5FX09QKG5h
bWUsb3Asc3ltYm9sKSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX251bXR5cGUy
PiBzdHJ1Y3QgbmFtZSB7IHR5cGVkZWYgQlpfUFJPTU9URShUX251bXR5cGUxLCBUX251bXR5cGUy
KSBUX251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwg
VF9udW10eXBlMiBiKSB7IHJldHVybiBhIG9wIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNz
IFQyPiBzdGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVBy
aW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAi
KCI7IHQxLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9IHN5bWJvbDsgdDIucHJldHR5
UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0KIyAxMDcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9vcHMuaCIKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgQWRkICB7IHR5cGVkZWYgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgIFRfbnVt
dHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5
cGUyIGIpIHsgcmV0dXJuIGEgICsgIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBz
dGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQx
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAiKyIgOyB0Mi5wcmV0dHlQcmludChz
dHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEs
IGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgU3VidHJhY3QgIHsgdHlwZWRlZiB0eXBlbmFtZSAg
cHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsICBUX251bXR5cGUyID46OlRfcHJvbW90ZSAgVF9u
dW10eXBlOyBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIGEsIFRfbnVt
dHlwZTIgYikgeyByZXR1cm4gYSAgLSAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+
IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRG
b3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsg
dDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gICItIiA7IHQyLnByZXR0eVByaW50
KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9IDsKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBl
MSwgY2xhc3MgVF9udW10eXBlMj4gc3RydWN0ICBNdWx0aXBseSAgeyB0eXBlZGVmIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBU
X251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9u
dW10eXBlMiBiKSB7IHJldHVybiBhICAqICBiOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigi
OyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAgIioiIDsgdDIucHJldHR5UHJp
bnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUxLCBjbGFzcyBUX251bXR5cGUyPiBzdHJ1Y3QgIERpdmlkZSAgeyB0eXBlZGVmIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBU
X251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9u
dW10eXBlMiBiKSB7IHJldHVybiBhICAvICBiOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigi
OyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAgIi8iIDsgdDIucHJldHR5UHJp
bnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUxLCBjbGFzcyBUX251bXR5cGUyPiBzdHJ1Y3QgIE1vZHVsbyAgeyB0eXBlZGVmIHR5cGVuYW1l
ICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBU
X251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9u
dW10eXBlMiBiKSB7IHJldHVybiBhICAlICBiOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigi
OyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAgIiUiIDsgdDIucHJldHR5UHJp
bnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0gOwp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUxLCBjbGFzcyBUX251bXR5cGUyPiBzdHJ1Y3QgIEJpdHdpc2VYb3IgIHsgdHlwZWRlZiB0eXBl
bmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsICBUX251bXR5cGUyID46OlRfcHJvbW90
ZSAgVF9udW10eXBlOyBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIGEs
IFRfbnVtdHlwZTIgYikgeyByZXR1cm4gYSAgXiAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5
UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9
ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gICJeIiA7IHQyLnByZXR0
eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9IDsKdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlMSwgY2xhc3MgVF9udW10eXBlMj4gc3RydWN0ICBCaXR3aXNlQW5kICB7IHR5cGVkZWYg
dHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3By
b21vdGUgIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBl
MSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgICYgIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEs
IGNsYXNzIFQyPiBzdGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHBy
ZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0
ciArPSAiKCI7IHQxLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAiJiIgOyB0Mi5w
cmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgQml0d2lzZU9yICB7IHR5cGVk
ZWYgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpU
X3Byb21vdGUgIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10
eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgIHwgIGI7IH0gdGVtcGxhdGU8Y2xhc3Mg
VDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIs
IHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7
IHN0ciArPSAiKCI7IHQxLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAifCIgOyB0
Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgU2hpZnRSaWdodCAgeyB0
eXBlZGVmIHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIg
Pjo6VF9wcm9tb3RlICBUX251bXR5cGU7IHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFRf
bnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICA+PiAgYjsgfSB0ZW1wbGF0ZTxj
bGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcm
IHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYg
dDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBzdHIgKz0gICI+
PiIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBs
YXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgU2hpZnRMZWZ0
ICB7IHR5cGVkZWYgdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10
eXBlMiA+OjpUX3Byb21vdGUgIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBUX251bXR5cGUgYXBw
bHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgIDw8ICBiOyB9IHRlbXBs
YXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVByaW50KHN0
cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEsIGNvbnN0
IFQyJiB0MikgeyBzdHIgKz0gIigiOyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciAr
PSAgIjw8IiA7IHQyLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9IDsK
CiNkZWZpbmUgQlpfREVGSU5FX0JPT0xfT1AobmFtZSxvcCxzeW1ib2wpIHRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVjdCBuYW1lIHsgdHlwZWRlZiBib29s
IFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10
eXBlMiBiKSB7IHJldHVybiBhIG9wIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBz
dGF0aWMgaW5saW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9y
bWF0JiBmb3JtYXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQx
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9IHN5bWJvbDsgdDIucHJldHR5UHJpbnQo
c3RyLCBmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH0KIyAxMzkgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9vcHMuaCIKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNs
YXNzIFRfbnVtdHlwZTI+IHN0cnVjdCAgR3JlYXRlciAgeyB0eXBlZGVmIGJvb2wgVF9udW10eXBl
OyBzdGF0aWMgaW5saW5lIGJvb2wgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsg
cmV0dXJuIGEgID4gIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5s
aW5lIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3Jt
YXQsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQxLnByZXR0eVBy
aW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICAiPiIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1h
dCk7IHN0ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRf
bnVtdHlwZTI+IHN0cnVjdCAgTGVzcyAgeyB0eXBlZGVmIGJvb2wgVF9udW10eXBlOyBzdGF0aWMg
aW5saW5lIGJvb2wgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEg
IDwgIGI7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5saW5lIHZvaWQg
cHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsIGNvbnN0
IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7IHN0ciArPSAiKCI7IHQxLnByZXR0eVByaW50KHN0ciwg
Zm9ybWF0KTsgc3RyICs9ICAiPCIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciAr
PSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+
IHN0cnVjdCAgR3JlYXRlck9yRXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGlj
IGlubGluZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBh
ICA+PSAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9p
ZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29u
c3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3Ry
LCBmb3JtYXQpOyBzdHIgKz0gICI+PSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0
ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlw
ZTI+IHN0cnVjdCAgTGVzc09yRXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGlj
IGlubGluZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBh
ICA8PSAgYjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9p
ZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29u
c3QgVDEmIHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3Ry
LCBmb3JtYXQpOyBzdHIgKz0gICI8PSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0
ciArPSAiKSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlw
ZTI+IHN0cnVjdCAgRXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGljIGlubGlu
ZSBib29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICA9PSAg
YjsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0
dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEm
IHQxLCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3Jt
YXQpOyBzdHIgKz0gICI9PSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAi
KSI7IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0
cnVjdCAgTm90RXF1YWwgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBi
b29sIGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICAhPSAgYjsg
fSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQ
cmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQx
LCBjb25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQp
OyBzdHIgKz0gICIhPSIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7
IH0gfSA7CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTI+IHN0cnVj
dCAgTG9naWNhbEFuZCAgeyB0eXBlZGVmIGJvb2wgVF9udW10eXBlOyBzdGF0aWMgaW5saW5lIGJv
b2wgYXBwbHkoVF9udW10eXBlMSBhLCBUX251bXR5cGUyIGIpIHsgcmV0dXJuIGEgICYmICBiOyB9
IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gc3RhdGljIGlubGluZSB2b2lkIHByZXR0eVBy
aW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgdDEs
IGNvbnN0IFQyJiB0MikgeyBzdHIgKz0gIigiOyB0MS5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7
IHN0ciArPSAgIiYmIiA7IHQyLnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsgc3RyICs9ICIpIjsg
fSB9IDsKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgY2xhc3MgVF9udW10eXBlMj4gc3RydWN0
ICBMb2dpY2FsT3IgIHsgdHlwZWRlZiBib29sIFRfbnVtdHlwZTsgc3RhdGljIGlubGluZSBib29s
IGFwcGx5KFRfbnVtdHlwZTEgYSwgVF9udW10eXBlMiBiKSB7IHJldHVybiBhICB8fCAgYjsgfSB0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmlu
dChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIHQxLCBj
b25zdCBUMiYgdDIpIHsgc3RyICs9ICIoIjsgdDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOyBz
dHIgKz0gICJ8fCIgOyB0Mi5wcmV0dHlQcmludChzdHIsIGZvcm1hdCk7IHN0ciArPSAiKSI7IH0g
fSA7Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX2Nhc3Q+CnN0cnVjdCBDYXN0
IHsKICAgIHR5cGVkZWYgVF9jYXN0IFRfbnVtdHlwZTsKICAgIHN0YXRpYyBpbmxpbmUgVF9jYXN0
IGFwcGx5KFRfbnVtdHlwZTEgYSkKICAgIHsgcmV0dXJuIGE7IH0KCiAgICB0ZW1wbGF0ZTxjbGFz
cyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmlu
dEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQogICAgewogICAgICAgIHN0ciAr
PSB0eXBlaWQoIFRfY2FzdCApLm5hbWUoKSA7CiAgICAgICAgc3RyICs9ICIoIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQp9OwoK
dGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMT4Kc3RydWN0IExvZ2ljYWxOb3QgewogICAgdHlwZWRl
ZiBib29sIFRfbnVtdHlwZTsKICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBseShUX251bXR5cGUx
IGEpCiAgICB7IHJldHVybiAhYTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGlj
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQs
CiAgICAgICAgY29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICIhIjsKICAgICAgICBh
LnByZXR0eVByaW50KHN0ciwgZm9ybWF0KTsKICAgIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZTE+CnN0cnVjdCBCaXR3aXNlTm90IHsKICAgIHR5cGVkZWYgVF9udW10eXBlMSBUX251bXR5
cGU7CiAgICBzdGF0aWMgaW5saW5lIFRfbnVtdHlwZSBhcHBseShUX251bXR5cGUxIGEpCiAgICB7
IHJldHVybiB+YTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxPgogICAgc3RhdGljIHZvaWQgcHJl
dHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQsCiAgICAgICAg
Y29uc3QgVDEmIGEpCiAgICB7CiAgICAgICAgc3RyICs9ICJ+IjsKICAgICAgICBhLnByZXR0eVBy
aW50KHN0cixmb3JtYXQpOwogICAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMT4Kc3Ry
dWN0IE5lZ2F0ZSB7CiAgICB0eXBlZGVmIFRfbnVtdHlwZTEgVF9udW10eXBlOwogICAgc3RhdGlj
IGlubGluZSBUX251bXR5cGUgYXBwbHkoVF9udW10eXBlMSBhKQogICAgeyByZXR1cm4gLWE7IH0K
CiAgICB0ZW1wbGF0ZTxjbGFzcyBUMT4KICAgIHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmlu
ZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LAogICAgICAgIGNvbnN0IFQxJiBhKQog
ICAgewogICAgICAgIHN0ciArPSAiLSI7CiAgICAgICAgYS5wcmV0dHlQcmludChzdHIsIGZvcm1h
dCk7CiAgICB9Cn07Cn0gCgoKCgojIDQ1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1
ZGUvYmxpdHovYXJyYXkvZXhwci5oIiAyCgoKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9zaGFwZWNoZWNrLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1NIQVBFQ0hFQ0tfSAoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCiAKCgoKCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUX3NoYXBlMSwgY2xhc3MgVF9zaGFwZTI+
CmlubGluZSBib29sICBhcmVTaGFwZXNDb25mb3JtYWJsZShjb25zdCBUX3NoYXBlMSYsIGNvbnN0
IFRfc2hhcGUyJikKewogICAgIAogICAgIAogICAgIAogICAgIAogICAgcmV0dXJuIGZhbHNlIDsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KaW5saW5lIGJvb2wgIGFyZVNoYXBlc0NvbmZvcm1h
YmxlKGNvbnN0IFRfc2hhcGUmIGEsIGNvbnN0IFRfc2hhcGUmIGIpCnsKICAgICAKCiAgICAgCiAg
ICAgCiAgICAgCgogICAgZm9yICh1bnNpZ25lZCBpPTA7IGkgPCBhLmxlbmd0aCgpOyArK2kpCiAg
ICB7CiAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkKICAgICAgICB7CiAgICAgICAgICAgICA7Cgog
ICAgICAgICAgICByZXR1cm4gZmFsc2UgOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdHJ1
ZSA7Cn0KCn0gCgoKIyA1MyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5L2V4cHIuaCIgMgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9udW1pbnF1aXJlLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiAKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfTlVNSU5RVUlSRV9ICgoKICAKIyAxICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbGltaXRzLWhhY2suaCIgMQog
CgoKCiAKCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgpuYW1lc3BhY2UgIHN0ZCAgeyAKCmVudW0gZmxv
YXRfcm91bmRfc3R5bGUgewogIHJvdW5kX2luZGV0ZXJtaW5hdGUgICAgICAgPSAtMSwKICByb3Vu
ZF90b3dhcmRfemVybyAgICAgICAgID0gIDAsCiAgcm91bmRfdG9fbmVhcmVzdCAgICAgICAgICA9
ICAxLAogIHJvdW5kX3Rvd2FyZF9pbmZpbml0eSAgICAgPSAgMiwKICByb3VuZF90b3dhcmRfbmVn
X2luZmluaXR5ID0gIDMKfTsKCmVudW0gZmxvYXRfZGVub3JtX3N0eWxlIHsKICBkZW5vcm1faW5k
ZXRlcm1pbmF0ZSA9IC0xLAogIGRlbm9ybV9hYnNlbnQgICAgICAgID0gIDAsCiAgZGVub3JtX3By
ZXNlbnQgICAgICAgPSAgMQp9OwoKIAoKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPgpjbGFzcyBf
TnVtZXJpY19saW1pdHNfYmFzZSB7CnB1YmxpYzoKICBzdGF0aWMgY29uc3QgYm9vbCBpc19zcGVj
aWFsaXplZCA9IGZhbHNlOwoKICBzdGF0aWMgX19udW1iZXIgbWluKCkgIHsgcmV0dXJuIF9fbnVt
YmVyKCk7IH0KICBzdGF0aWMgX19udW1iZXIgbWF4KCkgIHsgcmV0dXJuIF9fbnVtYmVyKCk7IH0K
CiAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMgICA9IDA7CiAgc3RhdGljIGNvbnN0IGludCBkaWdp
dHMxMCA9IDA7CgogIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCAgPSBmYWxzZTsKICBzdGF0
aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gZmFsc2U7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNf
ZXhhY3QgICA9IGZhbHNlOwoKICBzdGF0aWMgY29uc3QgaW50IHJhZGl4ID0gMDsKCiAgc3RhdGlj
IF9fbnVtYmVyIGVwc2lsb24oKSAgICAgIHsgcmV0dXJuIF9fbnVtYmVyKCk7IH0KICBzdGF0aWMg
X19udW1iZXIgcm91bmRfZXJyb3IoKSAgeyByZXR1cm4gX19udW1iZXIoKTsgfQoKICBzdGF0aWMg
Y29uc3QgaW50IG1pbl9leHBvbmVudCAgID0gMDsKICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBv
bmVudDEwID0gMDsKICBzdGF0aWMgY29uc3QgaW50IG1heF9leHBvbmVudCAgID0gMDsKICBzdGF0
aWMgY29uc3QgaW50IG1heF9leHBvbmVudDEwID0gMDsKCiAgc3RhdGljIGNvbnN0IGJvb2wgaGFz
X2luZmluaXR5ICAgICAgPSBmYWxzZTsKICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfcXVpZXRfTmFO
ICAgICA9IGZhbHNlOwogIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gZmFs
c2U7CiAgc3RhdGljIGNvbnN0IGZsb2F0X2Rlbm9ybV9zdHlsZSBoYXNfZGVub3JtID0gZGVub3Jt
X2Fic2VudDsKICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVub3JtX2xvc3MgICA9IGZhbHNlOwoK
ICBzdGF0aWMgX19udW1iZXIgaW5maW5pdHkoKSAgICAgICB7IHJldHVybiBfX251bWJlcigpOyB9
CiAgc3RhdGljIF9fbnVtYmVyIHF1aWV0X05hTigpICAgICAgeyByZXR1cm4gX19udW1iZXIoKTsg
fQogIHN0YXRpYyBfX251bWJlciBzaWduYWxpbmdfTmFOKCkgIHsgcmV0dXJuIF9fbnVtYmVyKCk7
IH0KICBzdGF0aWMgX19udW1iZXIgZGVub3JtX21pbigpICAgICB7IHJldHVybiBfX251bWJlcigp
OyB9CgogIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSAgPSBmYWxzZTsKICBzdGF0aWMgY29u
c3QgYm9vbCBpc19ib3VuZGVkID0gZmFsc2U7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxv
ICA9IGZhbHNlOwoKICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyAgICAgICAgICAgPSBmYWxzZTsK
ICBzdGF0aWMgY29uc3QgYm9vbCB0aW55bmVzc19iZWZvcmUgPSBmYWxzZTsKICBzdGF0aWMgY29u
c3QgZmxvYXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPSByb3VuZF90b3dhcmRfemVybzsKfTsK
CiNkZWZpbmUgX19kZWNsYXJlX251bWVyaWNfYmFzZV9tZW1iZXIoX190eXBlLCBfX21lbSkgdGVt
cGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCBfX3R5cGUgX051bWVyaWNfbGltaXRzX2Jhc2U8
X19udW1iZXI+OjogX19tZW0KCgoKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9v
bCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBpc19zcGVjaWFsaXplZCAgOwp0
ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNvbnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNl
PF9fbnVtYmVyPjo6ICAgZGlnaXRzICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3Qg
IGludCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBkaWdpdHMxMCAgOwp0ZW1w
bGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNvbnN0ICBib29sICBfTnVtZXJpY19saW1pdHNfYmFzZTxf
X251bWJlcj46OiAgIGlzX3NpZ25lZCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNvbnN0
ICBib29sICBfTnVtZXJpY19saW1pdHNfYmFzZTxfX251bWJlcj46OiAgIGlzX2ludGVnZXIgIDsK
dGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jh
c2U8X19udW1iZXI+OjogICBpc19leGFjdCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNv
bnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgcmFkaXggIDsKdGVt
cGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgaW50ICBfTnVtZXJpY19saW1pdHNfYmFzZTxf
X251bWJlcj46OiAgIG1pbl9leHBvbmVudCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXI+IGNv
bnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgbWF4X2V4cG9uZW50
ICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3QgIGludCAgX051bWVyaWNfbGltaXRz
X2Jhc2U8X19udW1iZXI+OjogICBtaW5fZXhwb25lbnQxMCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19u
dW1iZXI+IGNvbnN0ICBpbnQgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgbWF4
X2V4cG9uZW50MTAgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051
bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBoYXNfaW5maW5pdHkgIDsKdGVtcGxhdGUg
PGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1i
ZXI+OjogICBoYXNfcXVpZXRfTmFOICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3Qg
IGJvb2wgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgaGFzX3NpZ25hbGluZ19O
YU4gIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgZmxvYXRfZGVub3JtX3N0eWxl
ICBfTnVtZXJpY19saW1pdHNfYmFzZTxfX251bWJlcj46OiAgIGhhc19kZW5vcm0gIDsKdGVtcGxh
dGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19u
dW1iZXI+OjogICBoYXNfZGVub3JtX2xvc3MgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBj
b25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICBpc19pZWM1NTkg
IDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRz
X2Jhc2U8X19udW1iZXI+OjogICBpc19ib3VuZGVkICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJl
cj4gY29uc3QgIGJvb2wgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgaXNfbW9k
dWxvICA7CnRlbXBsYXRlIDxjbGFzcyBfX251bWJlcj4gY29uc3QgIGJvb2wgIF9OdW1lcmljX2xp
bWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgdHJhcHMgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVy
PiBjb25zdCAgYm9vbCAgX051bWVyaWNfbGltaXRzX2Jhc2U8X19udW1iZXI+OjogICB0aW55bmVz
c19iZWZvcmUgIDsKdGVtcGxhdGUgPGNsYXNzIF9fbnVtYmVyPiBjb25zdCAgZmxvYXRfcm91bmRf
c3R5bGUgIF9OdW1lcmljX2xpbWl0c19iYXNlPF9fbnVtYmVyPjo6ICAgcm91bmRfc3R5bGUgIDsK
CiN1bmRlZiBfX2RlY2xhcmVfbnVtZXJpY19iYXNlX21lbWJlcgoKIAoKdGVtcGxhdGUgPGNsYXNz
IF9JbnQsCiAgICAgICAgICBfSW50IF9faW1pbiwKICAgICAgICAgIF9JbnQgX19pbWF4LAogICAg
ICAgICAgaW50IF9faWRpZ2l0cyA9IC0xPgpjbGFzcyBfSW50ZWdlcl9saW1pdHMgOiBwdWJsaWMg
X051bWVyaWNfbGltaXRzX2Jhc2U8X0ludD4gCnsKcHVibGljOgogIHN0YXRpYyBjb25zdCBib29s
IGlzX3NwZWNpYWxpemVkID0gdHJ1ZTsKCiAgc3RhdGljIF9JbnQgbWluKCkgIHsgcmV0dXJuIF9f
aW1pbjsgfQogIHN0YXRpYyBfSW50IG1heCgpICB7IHJldHVybiBfX2ltYXg7IH0KCiAgc3RhdGlj
IGNvbnN0IGludCBkaWdpdHMgPSAKICAgIChfX2lkaWdpdHMgPCAwKSA/IHNpemVvZihfSW50KSAq
IDggIC0gKF9faW1pbiA9PSAwID8gMCA6IDEpIAogICAgICAgICAgICAgICAgICAgIDogX19pZGln
aXRzOwogIHN0YXRpYyBjb25zdCBpbnQgZGlnaXRzMTAgPSAoZGlnaXRzICogMzAxKSAvIDEwMDA7
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgc3RhdGljIGNvbnN0IGJvb2wg
aXNfc2lnbmVkID0gX19pbWluICE9IDA7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9
IHRydWU7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfZXhhY3QgPSB0cnVlOwogIHN0YXRpYyBjb25z
dCBpbnQgcmFkaXggPSAyOwoKCiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCA9IHRydWU7
CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfbW9kdWxvID0gdHJ1ZTsKfTsKCiNkZWZpbmUgX19kZWNs
YXJlX2ludGVnZXJfbGltaXRzX21lbWJlcihfX3R5cGUsIF9fbWVtKSB0ZW1wbGF0ZSA8Y2xhc3Mg
X0ludCwgX0ludCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19pZGlnaXRzPiBjb25zdCBfX3R5
cGUgX0ludGVnZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogX19t
ZW0KCgoKdGVtcGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50
IF9faWRpZ2l0cz4gY29uc3QgIGJvb2wgIF9JbnRlZ2VyX2xpbWl0czxfSW50LCBfX2ltaW4sIF9f
aW1heCwgX19pZGlnaXRzPjo6ICAgaXNfc3BlY2lhbGl6ZWQgIDsKdGVtcGxhdGUgPGNsYXNzIF9J
bnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50IF9faWRpZ2l0cz4gY29uc3QgIGludCAg
X0ludGVnZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogICBkaWdp
dHMgIDsKdGVtcGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50
IF9faWRpZ2l0cz4gY29uc3QgIGludCAgX0ludGVnZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19p
bWF4LCBfX2lkaWdpdHM+OjogICBkaWdpdHMxMCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ludCwgX0lu
dCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19pZGlnaXRzPiBjb25zdCAgYm9vbCAgX0ludGVn
ZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogICBpc19zaWduZWQg
IDsKdGVtcGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50IF9f
aWRpZ2l0cz4gY29uc3QgIGJvb2wgIF9JbnRlZ2VyX2xpbWl0czxfSW50LCBfX2ltaW4sIF9faW1h
eCwgX19pZGlnaXRzPjo6ICAgaXNfaW50ZWdlciAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX0ludCwgX0lu
dCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19pZGlnaXRzPiBjb25zdCAgYm9vbCAgX0ludGVn
ZXJfbGltaXRzPF9JbnQsIF9faW1pbiwgX19pbWF4LCBfX2lkaWdpdHM+OjogICBpc19leGFjdCAg
Owp0ZW1wbGF0ZSA8Y2xhc3MgX0ludCwgX0ludCBfX2ltaW4sIF9JbnQgX19pbWF4LCBpbnQgX19p
ZGlnaXRzPiBjb25zdCAgaW50ICBfSW50ZWdlcl9saW1pdHM8X0ludCwgX19pbWluLCBfX2ltYXgs
IF9faWRpZ2l0cz46OiAgIHJhZGl4ICA7CnRlbXBsYXRlIDxjbGFzcyBfSW50LCBfSW50IF9faW1p
biwgX0ludCBfX2ltYXgsIGludCBfX2lkaWdpdHM+IGNvbnN0ICBib29sICBfSW50ZWdlcl9saW1p
dHM8X0ludCwgX19pbWluLCBfX2ltYXgsIF9faWRpZ2l0cz46OiAgIGlzX2JvdW5kZWQgIDsKdGVt
cGxhdGUgPGNsYXNzIF9JbnQsIF9JbnQgX19pbWluLCBfSW50IF9faW1heCwgaW50IF9faWRpZ2l0
cz4gY29uc3QgIGJvb2wgIF9JbnRlZ2VyX2xpbWl0czxfSW50LCBfX2ltaW4sIF9faW1heCwgX19p
ZGlnaXRzPjo6ICAgaXNfbW9kdWxvICA7CgojdW5kZWYgX19kZWNsYXJlX2ludGVnZXJfbGltaXRz
X21lbWJlcgoKIAp0ZW1wbGF0ZSA8Y2xhc3MgX19udW1iZXIsCiAgICAgICAgIGludCBfX0RpZ2l0
cywgaW50IF9fRGlnaXRzMTAsCiAgICAgICAgIGludCBfX01pbkV4cCwgaW50IF9fTWF4RXhwLAog
ICAgICAgICBpbnQgX19NaW5FeHAxMCwgaW50IF9fTWF4RXhwMTAsCiAgICAgICAgIHVuc2lnbmVk
IGludCBfX0luZmluaXR5V29yZCwKICAgICAgICAgdW5zaWduZWQgaW50IF9fUU5hTldvcmQsIHVu
c2lnbmVkIGludCBfX1NOYU5Xb3JkLAogICAgICAgICBib29sIF9fSXNJRUM1NTksCiAgICAgICAg
IGZsb2F0X3JvdW5kX3N0eWxlIF9fUm91bmRTdHlsZT4KY2xhc3MgX0Zsb2F0aW5nX2xpbWl0cyA6
IHB1YmxpYyBfTnVtZXJpY19saW1pdHNfYmFzZTxfX251bWJlcj4KewpwdWJsaWM6CiAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlOwoKICBzdGF0aWMgY29uc3QgaW50IGRp
Z2l0cyAgID0gX19EaWdpdHM7CiAgc3RhdGljIGNvbnN0IGludCBkaWdpdHMxMCA9IF9fRGlnaXRz
MTA7CgogIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IHRydWU7CgogIHN0YXRpYyBjb25z
dCBpbnQgcmFkaXggPSAyOwoKICBzdGF0aWMgY29uc3QgaW50IG1pbl9leHBvbmVudCAgID0gX19N
aW5FeHA7CiAgc3RhdGljIGNvbnN0IGludCBtYXhfZXhwb25lbnQgICA9IF9fTWF4RXhwOwogIHN0
YXRpYyBjb25zdCBpbnQgbWluX2V4cG9uZW50MTAgPSBfX01pbkV4cDEwOwogIHN0YXRpYyBjb25z
dCBpbnQgbWF4X2V4cG9uZW50MTAgPSBfX01heEV4cDEwOwoKICBzdGF0aWMgY29uc3QgYm9vbCBo
YXNfaW5maW5pdHkgICAgICA9IHRydWU7CiAgc3RhdGljIGNvbnN0IGJvb2wgaGFzX3F1aWV0X05h
TiAgICAgPSB0cnVlOwogIHN0YXRpYyBjb25zdCBib29sIGhhc19zaWduYWxpbmdfTmFOID0gdHJ1
ZTsKICBzdGF0aWMgY29uc3QgZmxvYXRfZGVub3JtX3N0eWxlIGhhc19kZW5vcm0gPSBkZW5vcm1f
aW5kZXRlcm1pbmF0ZTsKICBzdGF0aWMgY29uc3QgYm9vbCBoYXNfZGVub3JtX2xvc3MgICA9IGZh
bHNlOwoKICBzdGF0aWMgX19udW1iZXIgaW5maW5pdHkoKSAgewogICAgc3RhdGljIHVuc2lnbmVk
IGludCBfU19pbmZbc2l6ZW9mKF9fbnVtYmVyKSAvIHNpemVvZihpbnQpXSA9IAogICAgICB7IF9f
SW5maW5pdHlXb3JkIH07CiAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8X19udW1iZXIqPigm
X1NfaW5mKTsKICB9CiAgc3RhdGljIF9fbnVtYmVyIHF1aWV0X05hTigpICB7CiAgICBzdGF0aWMg
dW5zaWduZWQgaW50IF9TX25hbltzaXplb2YoX19udW1iZXIpIC8gc2l6ZW9mKGludCldID0gCiAg
ICAgIHsgX19RTmFOV29yZCB9OwogICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PF9fbnVtYmVy
Kj4oJl9TX25hbik7CiAgfQogIHN0YXRpYyBfX251bWJlciBzaWduYWxpbmdfTmFOKCkgIHsKICAg
IHN0YXRpYyB1bnNpZ25lZCBpbnQgX1NfbmFuW3NpemVvZihfX251bWJlcikgLyBzaXplb2YoaW50
KV0gPSAKICAgICAgeyBfX1NOYU5Xb3JkIH07CiAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
X19udW1iZXIqPigmX1NfbmFuKTsKICB9CgogIHN0YXRpYyBjb25zdCBib29sIGlzX2llYzU1OSAg
ICAgICA9IF9fSXNJRUM1NTk7CiAgc3RhdGljIGNvbnN0IGJvb2wgaXNfYm91bmRlZCAgICAgID0g
dHJ1ZTsKICBzdGF0aWMgY29uc3QgYm9vbCB0cmFwcyAgICAgICAgICAgPSB0cnVlOwogIHN0YXRp
YyBjb25zdCBib29sIHRpbnluZXNzX2JlZm9yZSA9IGZhbHNlOwoKICBzdGF0aWMgY29uc3QgZmxv
YXRfcm91bmRfc3R5bGUgcm91bmRfc3R5bGUgPSBfX1JvdW5kU3R5bGU7Cn07CgojZGVmaW5lIF9f
ZGVjbGFyZV9mbG9hdF9saW1pdHNfbWVtYmVyKF9fdHlwZSwgX19tZW0pIHRlbXBsYXRlIDxjbGFz
cyBfX051bSwgaW50IF9fRGlnLCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGlu
dCBfX01uWDEwLCBpbnQgX19NeFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQg
X19RTmFOLCB1bnNpZ25lZCBpbnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9z
dHlsZSBfX1N0eT4gY29uc3QgX190eXBlIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBf
X0RpZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9f
U05hTixfX0lzSUVFRSwgX19TdHk+OjogX19tZW0KCgoKCgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgX19O
dW0sIGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19N
blgxMCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5h
TiwgdW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUg
X19TdHk+IGNvbnN0ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcx
MCwgX19NblgsIF9fTXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4s
X19Jc0lFRUUsIF9fU3R5Pjo6ICAgaXNfc3BlY2lhbGl6ZWQgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3Mg
X19OdW0sIGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQg
X19NblgxMCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9f
UU5hTiwgdW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5
bGUgX19TdHk+IGNvbnN0ICBpbnQgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0Rp
ZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05h
TixfX0lzSUVFRSwgX19TdHk+OjogICBkaWdpdHMgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0s
IGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19Nblgx
MCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwg
dW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19T
dHk+IGNvbnN0ICBpbnQgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBf
X01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lz
SUVFRSwgX19TdHk+OjogICBkaWdpdHMxMCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50
IF9fRGlnLCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBp
bnQgX19NeFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNp
Z25lZCBpbnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4g
Y29uc3QgIGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01u
WCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVF
RSwgX19TdHk+OjogICBpc19zaWduZWQgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBf
X0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50
IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWdu
ZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNv
bnN0ICBpbnQgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01uWCwg
X19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVFRSwg
X19TdHk+OjogICByYWRpeCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGlnLCBp
bnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19NeFgx
MCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBpbnQg
X19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3QgIGlu
dCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBfX014WCwg
X19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBfX1N0eT46
OiAgIG1pbl9leHBvbmVudCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGlnLCBp
bnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19NeFgx
MCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBpbnQg
X19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3QgIGlu
dCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBfX014WCwg
X19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBfX1N0eT46
OiAgIG1heF9leHBvbmVudCAgOyAgCnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGlnLCBp
bnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19NeFgx
MCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBpbnQg
X19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3QgIGlu
dCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBfX014WCwg
X19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBfX1N0eT46
OiAgIG1pbl9leHBvbmVudDEwICA7ICAKdGVtcGxhdGUgPGNsYXNzIF9fTnVtLCBpbnQgX19EaWcs
IGludCBfX0RpZzEwLCBpbnQgX19NblgsIGludCBfX014WCwgaW50IF9fTW5YMTAsIGludCBfX014
WDEwLCB1bnNpZ25lZCBpbnQgX19JbmYsIHVuc2lnbmVkIGludCBfX1FOYU4sIHVuc2lnbmVkIGlu
dCBfX1NOYU4sIGJvb2wgX19Jc0lFRUUsIGZsb2F0X3JvdW5kX3N0eWxlIF9fU3R5PiBjb25zdCAg
aW50ICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcxMCwgX19NblgsIF9fTXhY
LCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4sX19Jc0lFRUUsIF9fU3R5
Pjo6ICAgbWF4X2V4cG9uZW50MTAgIDsgIAp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBfX0Rp
ZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50IF9f
TXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWduZWQg
aW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNvbnN0
ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcxMCwgX19NblgsIF9f
TXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4sX19Jc0lFRUUsIF9f
U3R5Pjo6ICAgaGFzX2luZmluaXR5ICA7CnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGln
LCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19N
eFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBp
bnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3Qg
IGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01uWCwgX19N
eFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVFRSwgX19T
dHk+OjogICBoYXNfcXVpZXRfTmFOICA7CnRlbXBsYXRlIDxjbGFzcyBfX051bSwgaW50IF9fRGln
LCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBfX01uWDEwLCBpbnQgX19N
eFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19RTmFOLCB1bnNpZ25lZCBp
bnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHlsZSBfX1N0eT4gY29uc3Qg
IGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0RpZzEwLCBfX01uWCwgX19N
eFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05hTixfX0lzSUVFRSwgX19T
dHk+OjogICBoYXNfc2lnbmFsaW5nX05hTiAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBf
X0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50
IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWdu
ZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNv
bnN0ICBmbG9hdF9kZW5vcm1fc3R5bGUgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBf
X0RpZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9f
U05hTixfX0lzSUVFRSwgX19TdHk+OjogICBoYXNfZGVub3JtICA7CnRlbXBsYXRlIDxjbGFzcyBf
X051bSwgaW50IF9fRGlnLCBpbnQgX19EaWcxMCwgaW50IF9fTW5YLCBpbnQgX19NeFgsIGludCBf
X01uWDEwLCBpbnQgX19NeFgxMCwgdW5zaWduZWQgaW50IF9fSW5mLCB1bnNpZ25lZCBpbnQgX19R
TmFOLCB1bnNpZ25lZCBpbnQgX19TTmFOLCBib29sIF9fSXNJRUVFLCBmbG9hdF9yb3VuZF9zdHls
ZSBfX1N0eT4gY29uc3QgIGJvb2wgIF9GbG9hdGluZ19saW1pdHM8X19OdW0sIF9fRGlnLCBfX0Rp
ZzEwLCBfX01uWCwgX19NeFgsIF9fTW5YMTAsIF9fTXhYMTAsIF9fSW5mLCBfX1FOYU4sIF9fU05h
TixfX0lzSUVFRSwgX19TdHk+OjogICBoYXNfZGVub3JtX2xvc3MgIDsKdGVtcGxhdGUgPGNsYXNz
IF9fTnVtLCBpbnQgX19EaWcsIGludCBfX0RpZzEwLCBpbnQgX19NblgsIGludCBfX014WCwgaW50
IF9fTW5YMTAsIGludCBfX014WDEwLCB1bnNpZ25lZCBpbnQgX19JbmYsIHVuc2lnbmVkIGludCBf
X1FOYU4sIHVuc2lnbmVkIGludCBfX1NOYU4sIGJvb2wgX19Jc0lFRUUsIGZsb2F0X3JvdW5kX3N0
eWxlIF9fU3R5PiBjb25zdCAgYm9vbCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9f
RGlnMTAsIF9fTW5YLCBfX014WCwgX19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19T
TmFOLF9fSXNJRUVFLCBfX1N0eT46OiAgIGlzX2llYzU1OSAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19O
dW0sIGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19N
blgxMCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5h
TiwgdW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUg
X19TdHk+IGNvbnN0ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcx
MCwgX19NblgsIF9fTXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4s
X19Jc0lFRUUsIF9fU3R5Pjo6ICAgaXNfYm91bmRlZCAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0s
IGludCBfX0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19Nblgx
MCwgaW50IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwg
dW5zaWduZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19T
dHk+IGNvbnN0ICBib29sICBfRmxvYXRpbmdfbGltaXRzPF9fTnVtLCBfX0RpZywgX19EaWcxMCwg
X19NblgsIF9fTXhYLCBfX01uWDEwLCBfX014WDEwLCBfX0luZiwgX19RTmFOLCBfX1NOYU4sX19J
c0lFRUUsIF9fU3R5Pjo6ICAgdHJhcHMgIDsKdGVtcGxhdGUgPGNsYXNzIF9fTnVtLCBpbnQgX19E
aWcsIGludCBfX0RpZzEwLCBpbnQgX19NblgsIGludCBfX014WCwgaW50IF9fTW5YMTAsIGludCBf
X014WDEwLCB1bnNpZ25lZCBpbnQgX19JbmYsIHVuc2lnbmVkIGludCBfX1FOYU4sIHVuc2lnbmVk
IGludCBfX1NOYU4sIGJvb2wgX19Jc0lFRUUsIGZsb2F0X3JvdW5kX3N0eWxlIF9fU3R5PiBjb25z
dCAgYm9vbCAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9fRGlnMTAsIF9fTW5YLCBf
X014WCwgX19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19TTmFOLF9fSXNJRUVFLCBf
X1N0eT46OiAgIHRpbnluZXNzX2JlZm9yZSAgOwp0ZW1wbGF0ZSA8Y2xhc3MgX19OdW0sIGludCBf
X0RpZywgaW50IF9fRGlnMTAsIGludCBfX01uWCwgaW50IF9fTXhYLCBpbnQgX19NblgxMCwgaW50
IF9fTXhYMTAsIHVuc2lnbmVkIGludCBfX0luZiwgdW5zaWduZWQgaW50IF9fUU5hTiwgdW5zaWdu
ZWQgaW50IF9fU05hTiwgYm9vbCBfX0lzSUVFRSwgZmxvYXRfcm91bmRfc3R5bGUgX19TdHk+IGNv
bnN0ICBmbG9hdF9yb3VuZF9zdHlsZSAgX0Zsb2F0aW5nX2xpbWl0czxfX051bSwgX19EaWcsIF9f
RGlnMTAsIF9fTW5YLCBfX014WCwgX19NblgxMCwgX19NeFgxMCwgX19JbmYsIF9fUU5hTiwgX19T
TmFOLF9fSXNJRUVFLCBfX1N0eT46OiAgIHJvdW5kX3N0eWxlICA7CgojdW5kZWYgX19kZWNsYXJl
X2Zsb2F0X2xpbWl0c19tZW1iZXIKCiAKCiAKCnRlbXBsYXRlPGNsYXNzIFQ+IApjbGFzcyBudW1l
cmljX2xpbWl0cyA6IHB1YmxpYyBfTnVtZXJpY19saW1pdHNfYmFzZTxUPiB7fTsKCiAKCgoKdGVt
cGxhdGU8PgpjbGFzcyBudW1lcmljX2xpbWl0czxib29sPgogIDogcHVibGljIF9JbnRlZ2VyX2xp
bWl0czxib29sLCBmYWxzZSwgdHJ1ZSwgMD4Ke307CgoKCnRlbXBsYXRlPD4KY2xhc3MgbnVtZXJp
Y19saW1pdHM8Y2hhcj4KICA6IHB1YmxpYyBfSW50ZWdlcl9saW1pdHM8Y2hhciwgKC0xMjgpICwg
MTI3ID4Ke307Cgp0ZW1wbGF0ZTw+CmNsYXNzIG51bWVyaWNfbGltaXRzPHNpZ25lZCBjaGFyPgog
IDogcHVibGljIF9JbnRlZ2VyX2xpbWl0czxzaWduZWQgY2hhciwgKC0xMjgpICwgMTI3ID4Ke307
Cgp0ZW1wbGF0ZTw+CmNsYXNzIG51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGNoYXI+CiAgOiBwdWJs
aWMgX0ludGVnZXJfbGltaXRzPHVuc2lnbmVkIGNoYXIsIDAsIDI1NSA+Cnt9OwoKCgp0ZW1wbGF0
ZTw+CmNsYXNzIG51bWVyaWNfbGltaXRzPHdjaGFyX3Q+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGlt
aXRzPHdjaGFyX3QsICgtIDIxNDc0ODM2NDcgIC0xKSAsIDIxNDc0ODM2NDcgID4Ke307CgoKCnRl
bXBsYXRlPD4KY2xhc3MgbnVtZXJpY19saW1pdHM8c2hvcnQ+CiAgOiBwdWJsaWMgX0ludGVnZXJf
bGltaXRzPHNob3J0LCAoLTMyNzY3LTEpICwgMzI3NjcgPgp7fTsKCnRlbXBsYXRlPD4KY2xhc3Mg
bnVtZXJpY19saW1pdHM8dW5zaWduZWQgc2hvcnQ+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGltaXRz
PHVuc2lnbmVkIHNob3J0LCAwLCA2NTUzNSA+Cnt9OwoKdGVtcGxhdGU8PgpjbGFzcyBudW1lcmlj
X2xpbWl0czxpbnQ+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGltaXRzPGludCwgKC0gMjE0NzQ4MzY0
NyAgLTEpICwgMjE0NzQ4MzY0NyAgPgp7fTsKCnRlbXBsYXRlPD4KY2xhc3MgbnVtZXJpY19saW1p
dHM8dW5zaWduZWQgaW50PgogIDogcHVibGljIF9JbnRlZ2VyX2xpbWl0czx1bnNpZ25lZCBpbnQs
IDAsICgyMTQ3NDgzNjQ3ICAgKiAyVSArIDEpID4Ke307Cgp0ZW1wbGF0ZTw+CmNsYXNzIG51bWVy
aWNfbGltaXRzPGxvbmc+CiAgOiBwdWJsaWMgX0ludGVnZXJfbGltaXRzPGxvbmcsICgtIDIxNDc0
ODM2NDdMICAtMSkgLCAyMTQ3NDgzNjQ3TCAgPgp7fTsKCnRlbXBsYXRlPD4KY2xhc3MgbnVtZXJp
Y19saW1pdHM8dW5zaWduZWQgbG9uZz4KICA6IHB1YmxpYyBfSW50ZWdlcl9saW1pdHM8dW5zaWdu
ZWQgbG9uZywgMCwgKDIxNDc0ODM2NDdMICAgKiAyVUwgKyAxKSA+Cnt9OwoKCiMgMzQyICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbGltaXRzLWhhY2suaCIKCgoKIAoK
dGVtcGxhdGU8PiBjbGFzcyBudW1lcmljX2xpbWl0czxmbG9hdD4KICA6IHB1YmxpYyBfRmxvYXRp
bmdfbGltaXRzPGZsb2F0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0ICwgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA2ICwgICAgICAgICAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgtMTI1KSAsICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyOCAs
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMzcpICwgIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzggLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDdmODAw
MDAwdSwgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZjgxMDAwMHUsICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2ZjMTAwMDB1LCAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cnVlLCAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcm91bmRfdG9fbmVhcmVzdD4KewpwdWJsaWM6CiAgc3RhdGljIGZsb2F0IG1pbigpICB7
IHJldHVybiAxLjE3NTQ5NDM1ZS0zOEYgOyB9CiAgc3RhdGljIGZsb2F0IGRlbm9ybV9taW4oKSAg
eyByZXR1cm4gMS4xNzU0OTQzNWUtMzhGIDsgfQogIHN0YXRpYyBmbG9hdCBtYXgoKSAgeyByZXR1
cm4gMy40MDI4MjM0N2UrMzhGIDsgfQogIHN0YXRpYyBmbG9hdCBlcHNpbG9uKCkgIHsgcmV0dXJu
IDEuMTkyMDkyOTBlLTA3RiA7IH0KICBzdGF0aWMgZmxvYXQgcm91bmRfZXJyb3IoKSAgeyByZXR1
cm4gMC41ZjsgfSAgCn07Cgp0ZW1wbGF0ZTw+IGNsYXNzIG51bWVyaWNfbGltaXRzPGRvdWJsZT4K
ICA6IHB1YmxpYyBfRmxvYXRpbmdfbGltaXRzPGRvdWJsZSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA1MyAsICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgLCAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0xMDIxKSAsICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEwMjQgLCAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
LTMwNykgLCAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMDggLCAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDdmZjAwMDAwdSwgICAgIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg3ZmYxMDAwMHUsICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4N2Zm
OTAwMDB1LCAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRfdG9fbmVhcmVzdD4KewpwdWJsaWM6
CiAgc3RhdGljIGRvdWJsZSBtaW4oKSAgeyByZXR1cm4gMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDgg
OyB9CiAgc3RhdGljIGRvdWJsZSBkZW5vcm1fbWluKCkgIHsgcmV0dXJuIDIuMjI1MDczODU4NTA3
MjAxNGUtMzA4IDsgfQogIHN0YXRpYyBkb3VibGUgbWF4KCkgIHsgcmV0dXJuIDEuNzk3NjkzMTM0
ODYyMzE1N2UrMzA4IDsgfQogIHN0YXRpYyBkb3VibGUgZXBzaWxvbigpICB7IHJldHVybiAyLjIy
MDQ0NjA0OTI1MDMxMzFlLTE2IDsgfQogIHN0YXRpYyBkb3VibGUgcm91bmRfZXJyb3IoKSAgeyBy
ZXR1cm4gMC41OyB9ICAKfTsKCnRlbXBsYXRlPD4gY2xhc3MgbnVtZXJpY19saW1pdHM8bG9uZyBk
b3VibGU+CiAgOiBwdWJsaWMgX0Zsb2F0aW5nX2xpbWl0czxsb25nIGRvdWJsZSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA2NCAsICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
OCAsICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMTYzODEpICwgICAgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxNjM4NCAsICAgIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKC00OTMxKSAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgNDkzMiAsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg3ZmYwMDAwMHUsICAgICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4N2ZmMTAwMDB1LCAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDdmZjkwMDAwdSwgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2Us
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kX3RvX25lYXJlc3Q+
CnsKcHVibGljOgogIHN0YXRpYyBsb25nIGRvdWJsZSBtaW4oKSAgeyByZXR1cm4gKF9fZXh0ZW5z
aW9uX18gKCh1bmlvbiBfX2NvbnZlcnRfbG9uZ19kb3VibGUpIHtfX2NvbnZlcnRfbG9uZ19kb3Vi
bGVfaTogezB4MCwgMHg4MDAwMDAwMCwgMHgxLCAweDB9fSkuX19jb252ZXJ0X2xvbmdfZG91Ymxl
X2QpIDsgfQogIHN0YXRpYyBsb25nIGRvdWJsZSBkZW5vcm1fbWluKCkgIHsgcmV0dXJuIChfX2V4
dGVuc2lvbl9fICgodW5pb24gX19jb252ZXJ0X2xvbmdfZG91YmxlKSB7X19jb252ZXJ0X2xvbmdf
ZG91YmxlX2k6IHsweDAsIDB4ODAwMDAwMDAsIDB4MSwgMHgwfX0pLl9fY29udmVydF9sb25nX2Rv
dWJsZV9kKSA7IH0KICBzdGF0aWMgbG9uZyBkb3VibGUgbWF4KCkgIHsgcmV0dXJuIChfX2V4dGVu
c2lvbl9fICgodW5pb24gX19jb252ZXJ0X2xvbmdfZG91YmxlKSB7X19jb252ZXJ0X2xvbmdfZG91
YmxlX2k6IHsweGZmZmZmZmZmLCAweGZmZmZmZmZmLCAweDEwN2ZmZSwgMHgwfX0pLl9fY29udmVy
dF9sb25nX2RvdWJsZV9kKSA7IH0KICBzdGF0aWMgbG9uZyBkb3VibGUgZXBzaWxvbigpICB7IHJl
dHVybiAoX19leHRlbnNpb25fXyAoKHVuaW9uIF9fY29udmVydF9sb25nX2RvdWJsZSkge19fY29u
dmVydF9sb25nX2RvdWJsZV9pOiB7MHgwLCAweDgwMDAwMDAwLCAweDNmYzAsIDB4MH19KS5fX2Nv
bnZlcnRfbG9uZ19kb3VibGVfZCkgOyB9CiAgc3RhdGljIGxvbmcgZG91YmxlIHJvdW5kX2Vycm9y
KCkgIHsgcmV0dXJuIDQ7IH0gIAp9OwoKfSAKCiMgNTQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9udW1pbnF1aXJlLmgiIDIKCgoKCgoKCgoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCiAKCgoKCgoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgpzdHJ1Y3QgX2J6X09uZVpl
cm9UcmFpdHMgewogICAgc3RhdGljIGlubGluZSBUX251bXR5cGUgemVybygpIHsgcmV0dXJuIDA7
IH0KICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIG9uZSgpICB7IHJldHVybiAxOyB9Cn07CgoK
CnRlbXBsYXRlPD4Kc3RydWN0IF9iel9PbmVaZXJvVHJhaXRzPGNvbXBsZXg8ZmxvYXQ+ID4gewog
ICAgc3RhdGljIGlubGluZSBjb21wbGV4PGZsb2F0PiB6ZXJvKCkgeyByZXR1cm4gY29tcGxleDxm
bG9hdD4oMC4wZiwwLjBmKTsgfQogICAgc3RhdGljIGlubGluZSBjb21wbGV4PGZsb2F0PiBvbmUo
KSAgeyByZXR1cm4gY29tcGxleDxmbG9hdD4oMS4wZiwwLjBmKTsgfQp9OwoKdGVtcGxhdGU8Pgpz
dHJ1Y3QgX2J6X09uZVplcm9UcmFpdHM8Y29tcGxleDxkb3VibGU+ID4gewogICAgc3RhdGljIGlu
bGluZSBjb21wbGV4PGRvdWJsZT4gemVybygpIHsgcmV0dXJuIGNvbXBsZXg8ZG91YmxlPigwLjAs
MC4wKTsgfQogICAgc3RhdGljIGlubGluZSBjb21wbGV4PGRvdWJsZT4gb25lKCkgIHsgcmV0dXJu
IGNvbXBsZXg8ZG91YmxlPigxLjAsMC4wKTsgfQp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgX2J6X09u
ZVplcm9UcmFpdHM8Y29tcGxleDxsb25nIGRvdWJsZT4gPiB7CiAgICBzdGF0aWMgaW5saW5lIGNv
bXBsZXg8bG9uZyBkb3VibGU+IHplcm8oKSAKICAgIHsgcmV0dXJuIGNvbXBsZXg8bG9uZyBkb3Vi
bGU+KDAuMCwwLjApOyB9CgogICAgc3RhdGljIGlubGluZSBjb21wbGV4PGxvbmcgZG91YmxlPiBv
bmUoKSAgCiAgICB7IHJldHVybiBjb21wbGV4PGxvbmcgZG91YmxlPigxLjAsMC4wKTsgfQp9OwoK
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCB6ZXJvKFQpCnsKICAgIHJldHVybiBfYnpfT25l
WmVyb1RyYWl0czxUPjo6emVybygpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBvbmUo
VCkKewogICAgcmV0dXJuIF9iel9PbmVaZXJvVHJhaXRzPFQ+OjpvbmUoKTsKfQoKdGVtcGxhdGU8
Y2xhc3MgVD4KaW5saW5lIGludCBkaWdpdHMoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRz
PFQ+OjpkaWdpdHM7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBpbnQgZGlnaXRzMTAoVCkK
ewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMDsKfQoKdGVtcGxhdGU8Y2xh
c3MgVD4KaW5saW5lIFQgZXBzaWxvbihUKSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxU
Pjo6ZXBzaWxvbigpOwp9CgogCiAKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgbmVnaHVnZShU
KSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlciA/ICAgIG51bWVy
aWNfbGltaXRzPFQ+OjptaW4oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogLSBudW1lcmljX2xpbWl0czxUPjo6bWF4KCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+Cmlu
bGluZSBUIGh1Z2UoVCkgIAp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46Om1heCgpOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCB0aW55KFQpICAKewogICAgcmV0dXJuIG51bWVy
aWNfbGltaXRzPFQ+OjptaW4oKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGludCBtYXhf
ZXhwb25lbnQoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjptYXhfZXhwb25lbnQ7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBpbnQgbWluX2V4cG9uZW50KFQpCnsKICAgIHJl
dHVybiBudW1lcmljX2xpbWl0czxUPjo6bWluX2V4cG9uZW50Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
PgppbmxpbmUgaW50IG1pbl9leHBvbmVudDEwKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0
czxUPjo6bWluX2V4cG9uZW50MTA7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBpbnQgbWF4
X2V4cG9uZW50MTAoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjptYXhfZXhwb25l
bnQxMDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGludCBwcmVjaXNpb24oVCkKewogICAg
cmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4K
aW5saW5lIGludCByYWRpeChUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OnJhZGl4
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgUmFuZ2UgcmFuZ2UoVCkKewogICAgcmV0dXJu
IFJhbmdlKG51bWVyaWNfbGltaXRzPFQ+OjptaW5fZXhwb25lbnQxMCwgCiAgICAgICAgbnVtZXJp
Y19saW1pdHM8VD46Om1heF9leHBvbmVudDEwKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5l
IGJvb2wgaXNfc2lnbmVkKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aXNfc2ln
bmVkOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYm9vbCBpc19pbnRlZ2VyKFQpCnsKICAg
IHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aXNfaW50ZWdlcjsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4KaW5saW5lIGJvb2wgaXNfZXhhY3QoVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+
Ojppc19leGFjdDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgcm91bmRfZXJyb3IoVCkg
IAp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OnJvdW5kX2Vycm9yKCk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFQ+CmlubGluZSBib29sIGhhc19pbmZpbml0eShUKSAKewogICAgcmV0dXJuIG51
bWVyaWNfbGltaXRzPFQ+OjpoYXNfaW5maW5pdHk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSBib29sIGhhc19xdWlldF9OYU4oVCkKewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+Ojpo
YXNfcXVpZXRfTmFOOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYm9vbCBoYXNfc2lnbmFs
aW5nX05hTihUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46Omhhc19zaWduYWxpbmdf
TmFOOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBib29sIGhhc19zaWduYWxsaW5nX05h
TihUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46Omhhc19zaWduYWxpbmdfTmFOOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYm9vbCBoYXNfZGVub3JtKFQpCnsKICAgIHJldHVy
biBudW1lcmljX2xpbWl0czxUPjo6aGFzX2Rlbm9ybTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5s
aW5lIGJvb2wgaGFzX2Rlbm9ybV9sb3NzKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxU
Pjo6aGFzX2Rlbm9ybV9sb3NzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBpbmZpbml0
eShUKSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6aW5maW5pdHkoKTsKfQoKdGVt
cGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgcXVpZXRfTmFOKFQpICAKewogICAgcmV0dXJuIG51bWVy
aWNfbGltaXRzPFQ+OjpxdWlldF9OYU4oKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQg
c2lnbmFsaW5nX05hTihUKSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6c2lnbmFs
aW5nX05hTigpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBzaWduYWxsaW5nX05hTihU
KSAgCnsKICAgIHJldHVybiBudW1lcmljX2xpbWl0czxUPjo6c2lnbmFsaW5nX05hTigpOwp9Cgp0
ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVCBkZW5vcm1fbWluKFQpICAKewogICAgcmV0dXJuIG51
bWVyaWNfbGltaXRzPFQ+OjpkZW5vcm1fbWluKCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSBib29sIGlzX2llYzU1OShUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OmlzX2ll
YzU1OTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGJvb2wgaXNfYm91bmRlZChUKQp7CiAg
ICByZXR1cm4gbnVtZXJpY19saW1pdHM8VD46OmlzX2JvdW5kZWQ7Cn0KCnRlbXBsYXRlPGNsYXNz
IFQ+CmlubGluZSBib29sIGlzX21vZHVsbyhUKQp7CiAgICByZXR1cm4gbnVtZXJpY19saW1pdHM8
VD46OmlzX21vZHVsbzsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGJvb2wgdHJhcHMoVCkK
ewogICAgcmV0dXJuIG51bWVyaWNfbGltaXRzPFQ+Ojp0cmFwczsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4KaW5saW5lIGJvb2wgdGlueW5lc3NfYmVmb3JlKFQpCnsKICAgIHJldHVybiBudW1lcmljX2xp
bWl0czxUPjo6dGlueW5lc3NfYmVmb3JlOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgc3Rk
OjogZmxvYXRfcm91bmRfc3R5bGUgICByb3VuZF9zdHlsZShUKQp7CiAgICByZXR1cm4gbnVtZXJp
Y19saW1pdHM8VD46OnJvdW5kX3N0eWxlOwp9Cgp9IAoKCgojIDU3ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXhwci5oIiAyCgoKCiAKCgoKCgoKCgoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CmNsYXNz
IF9iel9FeHByUGFpciB7CnB1YmxpYzoKICAgIF9iel9FeHByUGFpcihjb25zdCBUMSYgYSwgY29u
c3QgVDImIGIpCiAgICAgICAgOiBmaXJzdF8oYSksIHNlY29uZF8oYikKICAgIHsgfQoKICAgIGNv
bnN0IFQxJiBmaXJzdCgpIGNvbnN0CiAgICB7IHJldHVybiBmaXJzdF87IH0KCiAgICBjb25zdCBU
MiYgc2Vjb25kKCkgY29uc3QKICAgIHsgcmV0dXJuIHNlY29uZF87IH0KCnByb3RlY3RlZDoKICAg
IFQxIGZpcnN0XzsKICAgIFQyIHNlY29uZF87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3Mg
VDI+CmlubGluZSBfYnpfRXhwclBhaXI8VDEsVDI+IG1ha2VFeHByUGFpcihjb25zdCBUMSYgYSwg
Y29uc3QgVDImIGIpCnsKICAgIHJldHVybiBfYnpfRXhwclBhaXI8VDEsVDI+KGEsYik7Cn0KCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcj4KY2xhc3MgX2J6X0FycmF5RXhwciAKCiAgICA6IHB1YmxpYyBF
VEJhc2U8X2J6X0FycmF5RXhwcjxQX2V4cHI+ID4KCnsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9l
eHByIFRfZXhwcjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlIFRfbnVt
dHlwZTsKICAgIHR5cGVkZWYgVF9leHByIFRfY3RvckFyZzE7CiAgICB0eXBlZGVmIGludCAgICBU
X2N0b3JBcmcyOyAgICAgCgogICAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMgPSAoaW50KSBQX2V4
cHI6Om51bUFycmF5T3BlcmFuZHMgICwKICAgICAgICBudW1JbmRleFBsYWNlaG9sZGVycyA9IChp
bnQpIFBfZXhwcjo6bnVtSW5kZXhQbGFjZWhvbGRlcnMgICwKICAgICAgICByYW5rID0gKGludCkg
UF9leHByOjpyYW5rICAgfTsKCiAgICBfYnpfQXJyYXlFeHByKGNvbnN0IF9iel9BcnJheUV4cHI8
UF9leHByPiYgYSkKICAgICAgICA6IGl0ZXJfKGEuaXRlcl8pCiAgICB7IH0KCgogICAgdGVtcGxh
dGU8Y2xhc3MgVD4KICAgIF9iel9BcnJheUV4cHIoY29uc3QgVCYgYSkKICAgICAgICA6IGl0ZXJf
KGEpCiAgICB7IH0KIyAxMzUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0
ei9hcnJheS9leHByLmgiCgoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KICAgIF9i
el9BcnJheUV4cHIoY29uc3QgIFQxICYgIGEsIGNvbnN0ICBUMiAmICBiKQogICAgICAgIDogaXRl
cl8oYSwgYikKICAgIHsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3Mg
VDM+CiAgICBfYnpfQXJyYXlFeHByKGNvbnN0ICBUMSAmICBhLCBjb25zdCAgVDIgJiAgYiwgY29u
c3QgIFQzICYgIGMpCiAgICAgICAgOiBpdGVyXyhhLCBiLCBjKQogICAgeyB9CgogICAgdGVtcGxh
dGU8Y2xhc3MgVDEsIGNsYXNzIFQyPgogICAgX2J6X0FycmF5RXhwcihjb25zdCBfYnpfRXhwclBh
aXI8VDEsVDI+JiBwYWlyKQogICAgICAgIDogaXRlcl8ocGFpci5maXJzdCgpLCBwYWlyLnNlY29u
ZCgpKQogICAgeyB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKigpCiAgICB7IHJldHVybiAqaXRl
cl87IH0KCgoKCgoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5cGUgb3BlcmF0
b3IoKShjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGl0ZXJf
KGkpOyB9CgoKICAgIGludCBhc2NlbmRpbmcoaW50IHJhbmspCiAgICB7IHJldHVybiBpdGVyXy5h
c2NlbmRpbmcocmFuayk7IH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7IHJldHVy
biBpdGVyXy5vcmRlcmluZyhyYW5rKTsgfQoKICAgIGludCBsYm91bmQoaW50IHJhbmspCiAgICB7
IHJldHVybiBpdGVyXy5sYm91bmQocmFuayk7IH0KCiAgICBpbnQgdWJvdW5kKGludCByYW5rKQog
ICAgeyByZXR1cm4gaXRlcl8udWJvdW5kKHJhbmspOyB9CgogICAgdm9pZCBwdXNoKGludCBwb3Np
dGlvbikKICAgIHsgaXRlcl8ucHVzaChwb3NpdGlvbik7IH0KCiAgICB2b2lkIHBvcChpbnQgcG9z
aXRpb24pCiAgICB7IGl0ZXJfLnBvcChwb3NpdGlvbik7IH0KCiAgICB2b2lkIGFkdmFuY2UoKQog
ICAgeyBpdGVyXy5hZHZhbmNlKCk7IH0KCiAgICB2b2lkIGFkdmFuY2UoaW50IG4pCiAgICB7IGl0
ZXJfLmFkdmFuY2Uobik7IH0KCiAgICB2b2lkIGxvYWRTdHJpZGUoaW50IHJhbmspCiAgICB7IGl0
ZXJfLmxvYWRTdHJpZGUocmFuayk7IH0KCiAgICBib29sICBpc1VuaXRTdHJpZGUoaW50IHJhbmsp
IGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5pc1VuaXRTdHJpZGUocmFuayk7IH0KCiAgICB2b2lk
IGFkdmFuY2VVbml0U3RyaWRlKCkKICAgIHsgaXRlcl8uYWR2YW5jZVVuaXRTdHJpZGUoKTsgfQoK
ICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCBvdXRlckxvb3BSYW5rLCBpbnQgaW5uZXJMb29wUmFu
aykgY29uc3QKICAgIHsgCiAgICAgICAgIAogICAgICAgIHJldHVybiBpdGVyXy5jYW5Db2xsYXBz
ZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsgCiAgICB9CgogICAgVF9udW10eXBlIG9w
ZXJhdG9yW10oaW50IGkpCiAgICB7IHJldHVybiBpdGVyX1tpXTsgfQoKICAgIFRfbnVtdHlwZSBm
YXN0UmVhZChpbnQgaSkKICAgIHsgcmV0dXJuIGl0ZXJfLmZhc3RSZWFkKGkpOyB9CgogICAgaW50
IHN1Z2dlc3RTdHJpZGUoaW50IHJhbmspIGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5zdWdnZXN0
U3RyaWRlKHJhbmspOyB9CgogICAgYm9vbCAgaXNTdHJpZGUoaW50IHJhbmssIGludCBzdHJpZGUp
IGNvbnN0CiAgICB7IHJldHVybiBpdGVyXy5pc1N0cmlkZShyYW5rLHN0cmlkZSk7IH0KCiAgICB2
b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyKSBjb25zdAogICAgewogICAgICAgIHByZXR0eVBy
aW50Rm9ybWF0IGZvcm1hdCh0cnVlICk7ICAgCiAgICAgICAgaXRlcl8ucHJldHR5UHJpbnQoc3Ry
LCBmb3JtYXQpOwogICAgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0
eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7IGl0ZXJfLnByZXR0eVByaW50KHN0ciwg
Zm9ybWF0KTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgICBib29sICBzaGFwZUNo
ZWNrKGNvbnN0IFRfc2hhcGUmIHNoYXBlKQogICAgeyByZXR1cm4gaXRlcl8uc2hhcGVDaGVjayhz
aGFwZSk7IH0KCiAgICB0ZW1wbGF0ZTxpbnQgTl9yYW5rPgogICAgdm9pZCBtb3ZlVG8oY29uc3Qg
VGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgaSkKICAgIHsKICAgICAgICBpdGVyXy5tb3ZlVG8oaSk7
CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBfYnpfQXJyYXlFeHByKCkgeyB9CgogICAgVF9leHByIGl0
ZXJfOwp9OwoKc3RydWN0IGJvdW5kcyB7CiAgICBzdGF0aWMgaW50IGNvbXB1dGVfYXNjZW5kaW5n
KGludCByYW5rLCBpbnQgYXNjZW5kaW5nMSwgaW50IGFzY2VuZGluZzIpCiAgICB7CiAgICAgICAg
IAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAoKICAgICAgICBpZiAoYXNjZW5kaW5nMSA9
PSBhc2NlbmRpbmcyKQogICAgICAgICAgICByZXR1cm4gYXNjZW5kaW5nMTsKICAgICAgICBlbHNl
IGlmIChhc2NlbmRpbmcxID09ICgtIDIxNDc0ODM2NDcgIC0xKSApCiAgICAgICAgICAgIHJldHVy
biBhc2NlbmRpbmcyOwogICAgICAgIGVsc2UgaWYgKGFzY2VuZGluZzIgPT0gKC0gMjE0NzQ4MzY0
NyAgLTEpICkKICAgICAgICAgICAgcmV0dXJuIGFzY2VuZGluZzE7CgogICAgICAgICA7CgoKCiAg
ICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBzdGF0aWMgaW50IGNvbXB1dGVf
b3JkZXJpbmcoaW50IHJhbmssIGludCBvcmRlcjEsIGludCBvcmRlcjIpCiAgICB7CiAgICAgICAg
IAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAoKICAgICAgICBpZiAob3JkZXIxID09IG9y
ZGVyMikKICAgICAgICAgICAgcmV0dXJuIG9yZGVyMTsKICAgICAgICBlbHNlIGlmIChvcmRlcjEg
PT0gKC0gMjE0NzQ4MzY0NyAgLTEpICkKICAgICAgICAgICAgcmV0dXJuIG9yZGVyMjsKICAgICAg
ICBlbHNlIGlmIChvcmRlcjIgPT0gKC0gMjE0NzQ4MzY0NyAgLTEpICkKICAgICAgICAgICAgcmV0
dXJuIG9yZGVyMTsKCiAgICAgICAgIDsKCgogICAgICAgICA7CiAgICAgICAgcmV0dXJuIDA7CiAg
ICB9CgogICAgc3RhdGljIGludCBjb21wdXRlX2xib3VuZChpbnQgcmFuaywgaW50IGxib3VuZDEs
IGludCBsYm91bmQyKQogICAgewogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAogICAgICAg
ICAKCiAgICAgICAgaWYgKGxib3VuZDEgPT0gbGJvdW5kMikKICAgICAgICAgICAgcmV0dXJuIGxi
b3VuZDE7CiAgICAgICAgZWxzZSBpZiAobGJvdW5kMSA9PSAoLSAyMTQ3NDgzNjQ3ICAtMSkgKQog
ICAgICAgICAgICByZXR1cm4gbGJvdW5kMjsKICAgICAgICBlbHNlIGlmIChsYm91bmQyID09ICgt
IDIxNDc0ODM2NDcgIC0xKSApCiAgICAgICAgICAgIHJldHVybiBsYm91bmQxOwoKICAgICAgICAg
OwoKCiAgICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICBzdGF0aWMgaW50IGNv
bXB1dGVfdWJvdW5kKGludCByYW5rLCBpbnQgdWJvdW5kMSwgaW50IHVib3VuZDIpCiAgICB7CiAg
ICAgICAgIAogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAoKICAgICAgICBpZiAodWJvdW5k
MSA9PSB1Ym91bmQyKQogICAgICAgICAgICByZXR1cm4gdWJvdW5kMTsKICAgICAgICBlbHNlIGlm
ICh1Ym91bmQxID09IDIxNDc0ODM2NDcgICkKICAgICAgICAgICAgcmV0dXJuIHVib3VuZDI7CiAg
ICAgICAgZWxzZSBpZiAodWJvdW5kMiA9PSAyMTQ3NDgzNjQ3ICApCiAgICAgICAgICAgIHJldHVy
biB1Ym91bmQxOwoKICAgICAgICAgOwoKCiAgICAgICAgIDsKICAgICAgICByZXR1cm4gMDsKICAg
IH0KCn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBjbGFzcyBQX29w
PgpjbGFzcyBfYnpfQXJyYXlFeHByT3AgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwcjEgVF9l
eHByMTsKICAgIHR5cGVkZWYgUF9leHByMiBUX2V4cHIyOwogICAgdHlwZWRlZiB0eXBlbmFtZSAg
VF9leHByMTo6VF9udW10eXBlIFRfbnVtdHlwZTE7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4
cHIyOjpUX251bXR5cGUgVF9udW10eXBlMjsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFBfb3A6OlRf
bnVtdHlwZSBUX251bXR5cGU7CiAgICB0eXBlZGVmIFBfb3AgVF9vcDsKICAgIHR5cGVkZWYgVF9l
eHByMSBUX2N0b3JBcmcxOwogICAgdHlwZWRlZiBUX2V4cHIyIFRfY3RvckFyZzI7CgogICAgZW51
bSB7IG51bUFycmF5T3BlcmFuZHMgPSAoaW50KSBQX2V4cHIxOjpudW1BcnJheU9wZXJhbmRzICAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGludCkgUF9leHByMjo6bnVtQXJyYXlPcGVy
YW5kcyAgLAogICAgICAgICAgIG51bUluZGV4UGxhY2Vob2xkZXJzID0gKGludCkgUF9leHByMTo6
bnVtSW5kZXhQbGFjZWhvbGRlcnMgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoaW50
KSBQX2V4cHIyOjpudW1JbmRleFBsYWNlaG9sZGVycyAgLAogICAgICAgICAgIHJhbmsgPSAoKGlu
dCkgUF9leHByMTo6cmFuayAgID4gKGludCkgUF9leHByMjo6cmFuayAgKSAKICAgICAgICAgICAg
ICAgID8gKGludCkgUF9leHByMTo6cmFuayAgIDogKGludCkgUF9leHByMjo6cmFuayAgCiAgICB9
OwoKICAgIF9iel9BcnJheUV4cHJPcChjb25zdCBfYnpfQXJyYXlFeHByT3A8UF9leHByMSwgUF9l
eHByMiwgUF9vcD4mIGEpCiAgICAgICAgOiBpdGVyMV8oYS5pdGVyMV8pLCBpdGVyMl8oYS5pdGVy
Ml8pCiAgICB7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CiAgICBfYnpfQXJy
YXlFeHByT3AoY29uc3QgIFQxICYgIGEsIGNvbnN0ICBUMiAmICBiKQogICAgICAgIDogaXRlcjFf
KGEpLCBpdGVyMl8oYikKICAgIHsgfQoKIAogCiAKCiAgICBUX251bXR5cGUgb3BlcmF0b3IqKCkK
ICAgIHsgcmV0dXJuIFRfb3A6OmFwcGx5KCppdGVyMV8sICppdGVyMl8pOyB9CgoKCgoKCiAgICB0
ZW1wbGF0ZTxpbnQgTl9yYW5rPgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZl
Y3RvcjxpbnQsIE5fcmFuaz4mIGkpCiAgICB7IHJldHVybiBUX29wOjphcHBseShpdGVyMV8oaSks
IGl0ZXIyXyhpKSk7IH0KCgogICAgaW50IGFzY2VuZGluZyhpbnQgcmFuaykKICAgIHsKICAgICAg
ICByZXR1cm4gYm91bmRzOjpjb21wdXRlX2FzY2VuZGluZyhyYW5rLCBpdGVyMV8uYXNjZW5kaW5n
KHJhbmspLAogICAgICAgICAgICBpdGVyMl8uYXNjZW5kaW5nKHJhbmspKTsKICAgIH0KCiAgICBp
bnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7CiAgICAgICAgcmV0dXJuIGJvdW5kczo6Y29tcHV0
ZV9vcmRlcmluZyhyYW5rLCBpdGVyMV8ub3JkZXJpbmcocmFuayksCiAgICAgICAgICAgIGl0ZXIy
Xy5vcmRlcmluZyhyYW5rKSk7CiAgICB9CgogICAgaW50IGxib3VuZChpbnQgcmFuaykKICAgIHsg
CiAgICAgICAgcmV0dXJuIGJvdW5kczo6Y29tcHV0ZV9sYm91bmQocmFuaywgaXRlcjFfLmxib3Vu
ZChyYW5rKSwKICAgICAgICAgICAgaXRlcjJfLmxib3VuZChyYW5rKSk7CiAgICB9CgogICAgaW50
IHVib3VuZChpbnQgcmFuaykKICAgIHsKICAgICAgICByZXR1cm4gYm91bmRzOjpjb21wdXRlX3Vi
b3VuZChyYW5rLCBpdGVyMV8udWJvdW5kKHJhbmspLAogICAgICAgICAgICBpdGVyMl8udWJvdW5k
KHJhbmspKTsKICAgIH0KCiAgICB2b2lkIHB1c2goaW50IHBvc2l0aW9uKQogICAgeyAKICAgICAg
ICBpdGVyMV8ucHVzaChwb3NpdGlvbik7IAogICAgICAgIGl0ZXIyXy5wdXNoKHBvc2l0aW9uKTsK
ICAgIH0KCiAgICB2b2lkIHBvcChpbnQgcG9zaXRpb24pCiAgICB7IAogICAgICAgIGl0ZXIxXy5w
b3AocG9zaXRpb24pOyAKICAgICAgICBpdGVyMl8ucG9wKHBvc2l0aW9uKTsKICAgIH0KCiAgICB2
b2lkIGFkdmFuY2UoKQogICAgeyAKICAgICAgICBpdGVyMV8uYWR2YW5jZSgpOyAKICAgICAgICBp
dGVyMl8uYWR2YW5jZSgpOwogICAgfQoKICAgIHZvaWQgYWR2YW5jZShpbnQgbikKICAgIHsKICAg
ICAgICBpdGVyMV8uYWR2YW5jZShuKTsKICAgICAgICBpdGVyMl8uYWR2YW5jZShuKTsKICAgIH0K
CiAgICB2b2lkIGxvYWRTdHJpZGUoaW50IHJhbmspCiAgICB7IAogICAgICAgIGl0ZXIxXy5sb2Fk
U3RyaWRlKHJhbmspOyAKICAgICAgICBpdGVyMl8ubG9hZFN0cmlkZShyYW5rKTsKICAgIH0KICAg
IAogICAgYm9vbCAgaXNVbml0U3RyaWRlKGludCByYW5rKSBjb25zdAogICAgeyByZXR1cm4gaXRl
cjFfLmlzVW5pdFN0cmlkZShyYW5rKSAmJiBpdGVyMl8uaXNVbml0U3RyaWRlKHJhbmspOyB9Cgog
ICAgdm9pZCBhZHZhbmNlVW5pdFN0cmlkZSgpCiAgICB7IAogICAgICAgIGl0ZXIxXy5hZHZhbmNl
VW5pdFN0cmlkZSgpOyAKICAgICAgICBpdGVyMl8uYWR2YW5jZVVuaXRTdHJpZGUoKTsKICAgIH0K
CiAgICBib29sICBjYW5Db2xsYXBzZShpbnQgb3V0ZXJMb29wUmFuaywgaW50IGlubmVyTG9vcFJh
bmspIGNvbnN0CiAgICB7IAogICAgICAgICAKICAgICAgICByZXR1cm4gaXRlcjFfLmNhbkNvbGxh
cHNlKG91dGVyTG9vcFJhbmssIGlubmVyTG9vcFJhbmspCiAgICAgICAgICAgICYmIGl0ZXIyXy5j
YW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsKICAgIH0gCgogICAgVF9u
dW10eXBlIG9wZXJhdG9yW10oaW50IGkpCiAgICB7IHJldHVybiBUX29wOjphcHBseShpdGVyMV9b
aV0sIGl0ZXIyX1tpXSk7IH0KCiAgICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgICB7IHJl
dHVybiBUX29wOjphcHBseShpdGVyMV8uZmFzdFJlYWQoaSksIGl0ZXIyXy5mYXN0UmVhZChpKSk7
IH0KCiAgICBpbnQgc3VnZ2VzdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICBp
bnQgc3RyaWRlMSA9IGl0ZXIxXy5zdWdnZXN0U3RyaWRlKHJhbmspOwogICAgICAgIGludCBzdHJp
ZGUyID0gaXRlcjJfLnN1Z2dlc3RTdHJpZGUocmFuayk7CiAgICAgICAgcmV0dXJuIChzdHJpZGUx
ID4gc3RyaWRlMikgPyBzdHJpZGUxIDogc3RyaWRlMjsKICAgIH0KCiAgICBib29sICBpc1N0cmlk
ZShpbnQgcmFuaywgaW50IHN0cmlkZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXRlcjFf
LmlzU3RyaWRlKHJhbmssc3RyaWRlKSAmJiBpdGVyMl8uaXNTdHJpZGUocmFuayxzdHJpZGUpOwog
ICAgfQoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICB2b2lkIG1vdmVUbyhjb25zdCBUaW55
VmVjdG9yPGludCxOX3Jhbms+JiBpKQogICAgewogICAgICAgIGl0ZXIxXy5tb3ZlVG8oaSk7CiAg
ICAgICAgaXRlcjJfLm1vdmVUbyhpKTsKICAgIH0KCiAgICB2b2lkIHByZXR0eVByaW50KHN0cmlu
ZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0KSBjb25zdAogICAgewogICAgICAgIFRf
b3A6OnByZXR0eVByaW50KHN0ciwgZm9ybWF0LCBpdGVyMV8sIGl0ZXIyXyk7CiAgICB9CgogICAg
dGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBlQ2hlY2soY29uc3QgVF9zaGFw
ZSYgc2hhcGUpCiAgICB7IHJldHVybiBpdGVyMV8uc2hhcGVDaGVjayhzaGFwZSkgJiYgaXRlcjJf
LnNoYXBlQ2hlY2soc2hhcGUpOyB9Cgpwcm90ZWN0ZWQ6CiAgICBfYnpfQXJyYXlFeHByT3AoKSB7
IH0KCiAgICBUX2V4cHIxIGl0ZXIxXzsKICAgIFRfZXhwcjIgaXRlcjJfOyAKfTsKCnRlbXBsYXRl
PGNsYXNzIFBfZXhwciwgY2xhc3MgUF9vcD4KY2xhc3MgX2J6X0FycmF5RXhwclVuYXJ5T3Agewpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwciBUX2V4cHI7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBQ
X2V4cHI6OlRfbnVtdHlwZSBUX251bXR5cGUxOwogICAgdHlwZWRlZiB0eXBlbmFtZSAgUF9vcDo6
VF9udW10eXBlIFRfbnVtdHlwZTsKICAgIHR5cGVkZWYgUF9vcCBUX29wOwogICAgdHlwZWRlZiBU
X2V4cHIgVF9jdG9yQXJnMTsKICAgIHR5cGVkZWYgaW50ICAgIFRfY3RvckFyZzI7ICAgICAKCiAg
ICBlbnVtIHsgbnVtQXJyYXlPcGVyYW5kcyA9IChpbnQpIFRfZXhwcjo6bnVtQXJyYXlPcGVyYW5k
cyAgLAogICAgICAgIG51bUluZGV4UGxhY2Vob2xkZXJzID0gKGludCkgVF9leHByOjpudW1JbmRl
eFBsYWNlaG9sZGVycyAgLAogICAgICAgIHJhbmsgPSAoaW50KSBUX2V4cHI6OnJhbmsgICB9OwoK
ICAgIF9iel9BcnJheUV4cHJVbmFyeU9wKGNvbnN0IF9iel9BcnJheUV4cHJVbmFyeU9wPFRfZXhw
ciwgUF9vcD4mIGEpCiAgICAgICAgOiBpdGVyXyhhLml0ZXJfKQogICAgeyB9CgogICAgX2J6X0Fy
cmF5RXhwclVuYXJ5T3AoY29uc3QgIFRfZXhwciAmICBhKQogICAgICAgIDogaXRlcl8oYSkKICAg
IHsgfQoKICAgIF9iel9BcnJheUV4cHJVbmFyeU9wKHR5cGVuYW1lICBUX2V4cHI6OlRfY3RvckFy
ZzEgYSkKICAgICAgICA6IGl0ZXJfKGEpCiAgICB7IH0KCgoKCgoKCgogICAgaW50IGFzY2VuZGlu
ZyhpbnQgcmFuaykKICAgIHsgcmV0dXJuIGl0ZXJfLmFzY2VuZGluZyhyYW5rKTsgfQoKICAgIGlu
dCBvcmRlcmluZyhpbnQgcmFuaykKICAgIHsgcmV0dXJuIGl0ZXJfLm9yZGVyaW5nKHJhbmspOyB9
CgogICAgaW50IGxib3VuZChpbnQgcmFuaykKICAgIHsgcmV0dXJuIGl0ZXJfLmxib3VuZChyYW5r
KTsgfQoKICAgIGludCB1Ym91bmQoaW50IHJhbmspCiAgICB7IHJldHVybiBpdGVyXy51Ym91bmQo
cmFuayk7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IqKCkKICAgIHsgcmV0dXJuIFRfb3A6OmFw
cGx5KCppdGVyXyk7IH0KCgoKCgoKICAgIHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5
cGUgb3BlcmF0b3IoKShjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0
dXJuIFRfb3A6OmFwcGx5KGl0ZXJfKGkpKTsgfQoKCiAgICB2b2lkIHB1c2goaW50IHBvc2l0aW9u
KQogICAgewogICAgICAgIGl0ZXJfLnB1c2gocG9zaXRpb24pOwogICAgfQoKICAgIHZvaWQgcG9w
KGludCBwb3NpdGlvbikKICAgIHsKICAgICAgICBpdGVyXy5wb3AocG9zaXRpb24pOwogICAgfQoK
ICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7CiAgICAgICAgaXRlcl8uYWR2YW5jZSgpOwogICAgfQoK
ICAgIHZvaWQgYWR2YW5jZShpbnQgbikKICAgIHsKICAgICAgICBpdGVyXy5hZHZhbmNlKG4pOwog
ICAgfQoKICAgIHZvaWQgbG9hZFN0cmlkZShpbnQgcmFuaykKICAgIHsKICAgICAgICBpdGVyXy5s
b2FkU3RyaWRlKHJhbmspOwogICAgfQoKICAgIGJvb2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykg
Y29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLmlzVW5pdFN0cmlkZShyYW5rKTsgfQoKICAgIHZvaWQg
YWR2YW5jZVVuaXRTdHJpZGUoKQogICAgewogICAgICAgIGl0ZXJfLmFkdmFuY2VVbml0U3RyaWRl
KCk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE5fcmFuaz4KICAgIHZvaWQgbW92ZVRvKGNvbnN0
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIGkpCiAgICB7CiAgICAgICAgaXRlcl8ubW92ZVRvKGkp
OwogICAgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCBvdXRlckxvb3BSYW5rLCBpbnQgaW5u
ZXJMb29wUmFuaykgY29uc3QKICAgIHsgCiAgICAgICAgIAogICAgICAgIHJldHVybiBpdGVyXy5j
YW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLCBpbm5lckxvb3BSYW5rKTsgCiAgICB9CgogICAgVF9u
dW10eXBlIG9wZXJhdG9yW10oaW50IGkpCiAgICB7IHJldHVybiBUX29wOjphcHBseShpdGVyX1tp
XSk7IH0KCiAgICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgICB7IHJldHVybiBUX29wOjph
cHBseShpdGVyXy5mYXN0UmVhZChpKSk7IH0KCiAgICBpbnQgc3VnZ2VzdFN0cmlkZShpbnQgcmFu
aykgY29uc3QKICAgIHsgcmV0dXJuIGl0ZXJfLnN1Z2dlc3RTdHJpZGUocmFuayk7IH0KCiAgICBi
b29sICBpc1N0cmlkZShpbnQgcmFuaywgaW50IHN0cmlkZSkgY29uc3QKICAgIHsgcmV0dXJuIGl0
ZXJfLmlzU3RyaWRlKHJhbmssc3RyaWRlKTsgfQoKICAgIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5n
JiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQpIGNvbnN0CiAgICB7IFRfb3A6OnByZXR0
eVByaW50KHN0ciwgZm9ybWF0LCBpdGVyXyk7IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX3NoYXBl
PgogICAgYm9vbCAgc2hhcGVDaGVjayhjb25zdCBUX3NoYXBlJiBzaGFwZSkKICAgIHsgcmV0dXJu
IGl0ZXJfLnNoYXBlQ2hlY2soc2hhcGUpOyB9Cgpwcm90ZWN0ZWQ6CiAgICBfYnpfQXJyYXlFeHBy
VW5hcnlPcCgpIHsgfQoKICAgIFRfZXhwciBpdGVyXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZT4KY2xhc3MgX2J6X0FycmF5RXhwckNvbnN0YW50IHsKcHVibGljOgogICAgdHlwZWRlZiBQ
X251bXR5cGUgVF9udW10eXBlOwogICAgdHlwZWRlZiBUX251bXR5cGUgVF9jdG9yQXJnMTsKICAg
IHR5cGVkZWYgaW50ICAgICAgIFRfY3RvckFyZzI7ICAgICAKCiAgICBlbnVtIHsgbnVtQXJyYXlP
cGVyYW5kcyA9IDAsIG51bUluZGV4UGxhY2Vob2xkZXJzID0gMCwgcmFuayA9IDAgfTsKCiAgICBf
YnpfQXJyYXlFeHByQ29uc3RhbnQoY29uc3QgX2J6X0FycmF5RXhwckNvbnN0YW50PFRfbnVtdHlw
ZT4mIGEpCiAgICAgICAgOiB2YWx1ZV8oYS52YWx1ZV8pCiAgICB7IH0KCiAgICBfYnpfQXJyYXlF
eHByQ29uc3RhbnQoVF9udW10eXBlIHZhbHVlKQogICAgICAgIDogdmFsdWVfKCB2YWx1ZSAgKQog
ICAgeyAKICAgIH0KCiAgICAgCiAgICAgCiAgICAgCiAgICAgCgogICAgaW50IGFzY2VuZGluZyhp
bnQpCiAgICB7IHJldHVybiAoLSAyMTQ3NDgzNjQ3ICAtMSkgOyB9CgogICAgaW50IG9yZGVyaW5n
KGludCkKICAgIHsgcmV0dXJuICgtIDIxNDc0ODM2NDcgIC0xKSA7IH0KCiAgICBpbnQgbGJvdW5k
KGludCkKICAgIHsgcmV0dXJuICgtIDIxNDc0ODM2NDcgIC0xKSA7IH0KCiAgICBpbnQgdWJvdW5k
KGludCkKICAgIHsgcmV0dXJuIDIxNDc0ODM2NDcgIDsgfQogICAgIAogICAgIAoKICAgIFRfbnVt
dHlwZSBvcGVyYXRvciooKQogICAgeyByZXR1cm4gdmFsdWVfOyB9CgoKCgoKCiAgICB0ZW1wbGF0
ZTxpbnQgTl9yYW5rPgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3Rvcjxp
bnQsTl9yYW5rPiYpCiAgICB7IHJldHVybiB2YWx1ZV87IH0KCgogICAgdm9pZCBwdXNoKGludCkg
eyB9CiAgICB2b2lkIHBvcChpbnQpIHsgfQogICAgdm9pZCBhZHZhbmNlKCkgeyB9CiAgICB2b2lk
IGFkdmFuY2UoaW50KSB7IH0KICAgIHZvaWQgbG9hZFN0cmlkZShpbnQpIHsgfQoKICAgIGJvb2wg
IGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsgcmV0dXJuIHRydWUgOyB9CgogICAg
dm9pZCBhZHZhbmNlVW5pdFN0cmlkZSgpCiAgICB7IH0KCiAgICBib29sICBjYW5Db2xsYXBzZShp
bnQsaW50KSBjb25zdCAKICAgIHsgcmV0dXJuIHRydWUgOyB9CgogICAgVF9udW10eXBlIG9wZXJh
dG9yW10oaW50KQogICAgeyByZXR1cm4gdmFsdWVfOyB9CgogICAgVF9udW10eXBlIGZhc3RSZWFk
KGludCkKICAgIHsgcmV0dXJuIHZhbHVlXzsgfQoKICAgIGludCBzdWdnZXN0U3RyaWRlKGludCkg
Y29uc3QKICAgIHsgcmV0dXJuIDE7IH0KCiAgICBib29sICBpc1N0cmlkZShpbnQsaW50KSBjb25z
dAogICAgeyByZXR1cm4gdHJ1ZSA7IH0KCiAgICB0ZW1wbGF0ZTxpbnQgTl9yYW5rPgogICAgdm9p
ZCBtb3ZlVG8oY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgaSkKICAgIHsKICAgIH0KCiAg
ICB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0
KSBjb25zdAogICAgewogICAgICAgIGlmIChmb3JtYXQudGVyc2VQcmludGluZ1NlbGVjdGVkKCkp
CiAgICAgICAgICAgIHN0ciArPSBmb3JtYXQubmV4dFNjYWxhck9wZXJhbmRTeW1ib2woKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHN0ciArPSB0eXBlaWQoIFRfbnVtdHlwZSApLm5hbWUoKSA7
CiAgICB9CgogICAgdGVtcGxhdGU8Y2xhc3MgVF9zaGFwZT4KICAgIGJvb2wgIHNoYXBlQ2hlY2so
Y29uc3QgVF9zaGFwZSYpCiAgICB7IHJldHVybiB0cnVlIDsgfQoKcHJvdGVjdGVkOgogICAgX2J6
X0FycmF5RXhwckNvbnN0YW50KCkgeyB9CgogICAgVF9udW10eXBlIHZhbHVlXzsKfTsKCn0gCgoj
IDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9hc2V4cHIu
aCIgMQoKI2RlZmluZSBCWl9BUlJBWUFTRVhQUl9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CiAKIAoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgpzdHJ1Y3QgYXNFeHByIHsKICAgIHR5cGVkZWYgX2J6
X0FycmF5RXhwckNvbnN0YW50PFQ+IFRfZXhwcjsKfTsKCiAKdGVtcGxhdGU8Y2xhc3MgVD4Kc3Ry
dWN0IGFzRXhwcjxfYnpfQXJyYXlFeHByPFQ+ID4gewogICAgdHlwZWRlZiBfYnpfQXJyYXlFeHBy
PFQ+IFRfZXhwcjsKfTsKCiAKdGVtcGxhdGU8Y2xhc3MgVCwgaW50IE4+CnN0cnVjdCBhc0V4cHI8
QXJyYXk8VCxOPiA+IHsKICAgIHR5cGVkZWYgRmFzdEFycmF5SXRlcmF0b3I8VCxOPiBUX2V4cHI7
Cn07CgogCnRlbXBsYXRlPGludCBOPgpzdHJ1Y3QgYXNFeHByPEluZGV4UGxhY2Vob2xkZXI8Tj4g
PiB7CiAgICB0eXBlZGVmIEluZGV4UGxhY2Vob2xkZXI8Tj4gVF9leHByOwp9OwoKfSAKCgojIDcx
NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V4cHIuaCIg
MgoKCgoKIyAyNDcxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkvbWV0aG9kcy5jYyIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0FSUkFZTUVU
SE9EU19DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFRfZXhwcj4KQXJyYXk8UF9udW10eXBlLE5f
cmFuaz46OkFycmF5KF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKQp7CiAgICAgCgogICAgVGlu
eVZlY3RvcjxpbnQsTl9yYW5rPiBsYm91bmQsIGV4dGVudCwgb3JkZXJpbmc7CiAgICBUaW55VmVj
dG9yPGJvb2wsTl9yYW5rPiBhc2NlbmRpbmdGbGFnOwoKICAgIGZvciAoaW50IGk9MDsgaSA8IE5f
cmFuazsgKytpKQogICAgewogICAgICAgIGxib3VuZChpKSA9IGV4cHIubGJvdW5kKGkpOwogICAg
ICAgIGludCB1Ym91bmQgPSBleHByLnVib3VuZChpKTsKICAgICAgICBleHRlbnQoaSkgPSB1Ym91
bmQgLSBsYm91bmQoaSkgKyAxOwogICAgICAgIG9yZGVyaW5nKGkpID0gZXhwci5vcmRlcmluZyhp
KTsKICAgICAgICBpbnQgYXNjZW5kaW5nID0gZXhwci5hc2NlbmRpbmcoaSk7CiAgICAgICAgYXNj
ZW5kaW5nRmxhZyhpKSA9IChhc2NlbmRpbmcgPT0gMSk7CgojIDU3ICIvdWZzL25ld21hbi91c2Vy
cy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvbWV0aG9kcy5jYyIKCiAgICB9CgogICAgQXJy
YXk8UF9udW10eXBlLE5fcmFuaz4gQShsYm91bmQsZXh0ZW50LAogICAgICAgIEdlbmVyYWxBcnJh
eVN0b3JhZ2U8Tl9yYW5rPihvcmRlcmluZyxhc2NlbmRpbmdGbGFnKSk7CiAgICBBID0gZXhwcjsK
ICAgIHJlZmVyZW5jZShBKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5r
PgpBcnJheTxUX251bXR5cGUsTl9yYW5rPjo6QXJyYXkoY29uc3QgVGlueVZlY3RvcjxpbnQsIE5f
cmFuaz4mIGxib3VuZHMsCiAgICBjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgZXh0ZW50
LAogICAgY29uc3QgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbms+JiBzdG9yYWdlKQogICAgOiBz
dG9yYWdlXyhzdG9yYWdlKQp7CiAgICBsZW5ndGhfID0gZXh0ZW50OwogICAgc3RvcmFnZV8uc2V0
QmFzZShsYm91bmRzKTsKICAgIHNldHVwU3RvcmFnZShOX3JhbmsgLSAxKTsKfQoKCiAKCgoKCgp0
ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX3Jhbms+CmlubGluZSAgdm9pZCBBcnJheTxQ
X251bXR5cGUsIE5fcmFuaz46OmNvbXB1dGVTdHJpZGVzKCkKewogICAgaWYgKE5fcmFuayA+IDEp
CiAgICB7CiAgICAgIGludCBzdHJpZGUgPSAxOwoKICAgICAgIAogICAgICAgCiAgICAgIGJvb2wg
IGFsbEFzY2VuZGluZyA9IHN0b3JhZ2VfLmFsbFJhbmtzU3RvcmVkQXNjZW5kaW5nKCk7CgogICAg
ICAgCiAgICAgIGludCBuOwogICAgICBmb3IgKG49MDsgbiA8IE5fcmFuazsgKytuKQogICAgICB7
CiAgICAgICAgICBpbnQgc3RyaWRlU2lnbiA9ICsxOwoKICAgICAgICAgICAKICAgICAgICAgICAK
ICAgICAgICAgIGlmICghYWxsQXNjZW5kaW5nKQogICAgICAgICAgewogICAgICAgICAgICBpZiAo
IWlzUmFua1N0b3JlZEFzY2VuZGluZyhvcmRlcmluZyhuKSkpCiAgICAgICAgICAgICAgICBzdHJp
ZGVTaWduID0gLTE7CiAgICAgICAgICB9CgogICAgICAgICAgIAogICAgICAgICAgIAogICAgICAg
ICAgc3RyaWRlX1tvcmRlcmluZyhuKV0gPSBzdHJpZGUgKiBzdHJpZGVTaWduOwoKICAgICAgICAg
IHN0cmlkZSAqPSBsZW5ndGhfW29yZGVyaW5nKG4pXTsKICAgICAgfQogICAgfQogICAgZWxzZSB7
CiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgCgogICAgICAgIGlmIChpc1JhbmtTdG9yZWRB
c2NlbmRpbmcoMCkpCiAgICAgICAgICAgIHN0cmlkZV9bMF0gPSAxOwogICAgICAgIGVsc2UKICAg
ICAgICAgICAgc3RyaWRlX1swXSA9IC0xOwogICAgfQoKICAgIGNhbGN1bGF0ZVplcm9PZmZzZXQo
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPjo6Y2FsY3VsYXRlWmVyb09mZnNldCgpCnsKICAgICAKICAgIHplcm9P
ZmZzZXRfID0gMDsKCiAgICAgCiAgICAgCiAgICBmb3IgKGludCBuPTA7IG4gPCBOX3Jhbms7ICsr
bikKICAgIHsKICAgICAgICBpZiAoIWlzUmFua1N0b3JlZEFzY2VuZGluZyhuKSkKICAgICAgICAg
ICAgemVyb09mZnNldF8gLT0gKGxlbmd0aF9bbl0gLSAxICsgYmFzZShuKSkgKiBzdHJpZGVfW25d
OwogICAgICAgIGVsc2UKICAgICAgICAgICAgemVyb09mZnNldF8gLT0gc3RyaWRlX1tuXSAqIGJh
c2Uobik7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KYm9v
bCAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojppc1N0b3JhZ2VDb250aWd1b3VzKCkgY29uc3QK
ewogICAgIAogICAgIAogICAgIAogICAgIAoKICAgICAKICAgICAKCiAgICBpbnQgbnVtU3RyaWRl
c01pc3NpbmcgPSAwOwogICAgYm9vbCBoYXZlVW5pdFN0cmlkZSA9IGZhbHNlIDsKCiAgICBmb3Ig
KGludCBpPTA7IGkgPCBOX3Jhbms7ICsraSkKICAgIHsKICAgICAgICBpbnQgc3RyaWRlID0gc3Rk
OjogYWJzICAoc3RyaWRlX1tpXSk7CiAgICAgICAgaWYgKHN0cmlkZSA9PSAxKQogICAgICAgICAg
ICBoYXZlVW5pdFN0cmlkZSA9IHRydWUgOwoKICAgICAgICBpbnQgdmkgPSBzdHJpZGUgKiBsZW5n
dGhfW2ldOwoKICAgICAgICBpbnQgaiA9IDA7CiAgICAgICAgZm9yIChqPTA7IGogPCBOX3Jhbms7
ICsraikKICAgICAgICAgICAgaWYgKHN0ZDo6IGFicyAgKHN0cmlkZV9bal0pID09IHZpKQogICAg
ICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGlmIChqID09IE5fcmFuaykKICAgICAgICB7CiAg
ICAgICAgICAgICsrbnVtU3RyaWRlc01pc3Npbmc7CiAgICAgICAgICAgIGlmIChudW1TdHJpZGVz
TWlzc2luZyA9PSAyKQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlIDsKICAgICAgICB9CiAg
ICB9CgogICAgcmV0dXJuIGhhdmVVbml0U3RyaWRlOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8UF9udW10eXBlLCBOX3Jhbms+OjpkdW1wU3RydWN0
dXJlSW5mb3JtYXRpb24ob3N0cmVhbSYgb3MpIGNvbnN0CnsKICAgIG9zIDw8ICJEdW1wIG9mIEFy
cmF5PCIgPDwgdHlwZWlkKCBQX251bXR5cGUgKS5uYW1lKCkgIAogICAgICAgPDwgIiwgIiA8PCBO
X3JhbmsgPDwgIj46IiA8PCBlbmRsCiAgICAgICA8PCAib3JkZXJpbmdfICAgICAgPSAiIDw8IHN0
b3JhZ2VfLm9yZGVyaW5nKCkgPDwgZW5kbAogICAgICAgPDwgImFzY2VuZGluZ0ZsYWdfID0gIiA8
PCBzdG9yYWdlXy5hc2NlbmRpbmdGbGFnKCkgPDwgZW5kbAogICAgICAgPDwgImJhc2VfICAgICAg
ICAgID0gIiA8PCBzdG9yYWdlXy5iYXNlKCkgPDwgZW5kbAogICAgICAgPDwgImxlbmd0aF8gICAg
ICAgID0gIiA8PCBsZW5ndGhfIDw8IGVuZGwKICAgICAgIDw8ICJzdHJpZGVfICAgICAgICA9ICIg
PDwgc3RyaWRlXyA8PCBlbmRsCiAgICAgICA8PCAiemVyb09mZnNldF8gICAgPSAiIDw8IHplcm9P
ZmZzZXRfIDw8IGVuZGwKICAgICAgIDw8ICJudW1FbGVtZW50cygpICA9ICIgPDwgbnVtRWxlbWVu
dHMoKSA8PCBlbmRsCiAgICAgICA8PCAiaXNTdG9yYWdlQ29udGlndW91cygpID0gIiA8PCBpc1N0
b3JhZ2VDb250aWd1b3VzKCkgPDwgZW5kbDsKfQoKIAoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OnJlZmVyZW5jZShj
b25zdCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KQp7CiAgICBzdG9yYWdlXyA9IGFy
cmF5LnN0b3JhZ2VfOwogICAgbGVuZ3RoXyA9IGFycmF5Lmxlbmd0aF87CiAgICBzdHJpZGVfID0g
YXJyYXkuc3RyaWRlXzsKICAgIHplcm9PZmZzZXRfID0gYXJyYXkuemVyb09mZnNldF87CgogICAg
TWVtb3J5QmxvY2tSZWZlcmVuY2U8UF9udW10eXBlPjo6Y2hhbmdlQmxvY2soYXJyYXkubm9Db25z
dCgpLAogICAgICAgIGFycmF5Lnplcm9PZmZzZXRfKTsKCiAgICBkYXRhXyA9IGNvbnN0X2Nhc3Q8
UF9udW10eXBlKj4oYXJyYXkuZGF0YV8pOwp9CgogCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBl
LCBpbnQgTl9yYW5rPgppbmxpbmUgIHZvaWQgQXJyYXk8UF9udW10eXBlLCBOX3Jhbms+OjpzZXR1
cFN0b3JhZ2UoaW50IGxhc3RSYW5rSW5pdGlhbGl6ZWQpCnsKICAgICA7CgogICAgIDsKCiAgICAg
CgoKCgoKICAgIGZvciAoaW50IGk9bGFzdFJhbmtJbml0aWFsaXplZCArIDE7IGkgPCBOX3Jhbms7
ICsraSkKICAgIHsKICAgICAgICBzdG9yYWdlXy5zZXRCYXNlKGksIHN0b3JhZ2VfLmJhc2UobGFz
dFJhbmtJbml0aWFsaXplZCkpOwogICAgICAgIGxlbmd0aF9baV0gPSBsZW5ndGhfW2xhc3RSYW5r
SW5pdGlhbGl6ZWRdOwogICAgfQoKICAgICAKICAgIGNvbXB1dGVTdHJpZGVzKCk7CgogICAgIAog
ICAgTWVtb3J5QmxvY2tSZWZlcmVuY2U8UF9udW10eXBlPjo6bmV3QmxvY2sobnVtRWxlbWVudHMo
KSk7CgogICAgIAogICAgIAogICAgZGF0YV8gKz0gemVyb09mZnNldF87Cn0KCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IEFycmF5
PFRfbnVtdHlwZSwgTl9yYW5rPjo6Y29weSgpIGNvbnN0CnsKICAgIGlmIChudW1FbGVtZW50cygp
KQogICAgewogICAgICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiB6KGxlbmd0aF8sIHN0b3Jh
Z2VfKTsKICAgICAgICB6ID0gKnRoaXM7CiAgICAgICAgcmV0dXJuIHo7CiAgICB9CiAgICBlbHNl
IHsKICAgICAgICAgCiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojpt
YWtlVW5pcXVlKCkKewogICAgaWYgKG51bVJlZmVyZW5jZXMoKSA+IDEpCiAgICB7CiAgICAgICAg
VF9hcnJheSB0bXAgPSBjb3B5KCk7CiAgICAgICAgcmVmZXJlbmNlKHRtcCk7CiAgICB9Cn0KCnRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KQXJyYXk8VF9udW10eXBlLCBOX3Jh
bms+IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6dHJhbnNwb3NlKGludCByMCwgaW50IHIxLCAK
ICAgIGludCByMiwgaW50IHIzLCBpbnQgcjQsIGludCByNSwgaW50IHI2LCBpbnQgcjcsIGludCBy
OCwgaW50IHI5LCBpbnQgcjEwKQp7CiAgICBUX2FycmF5IEIoKnRoaXMpOwogICAgQi50cmFuc3Bv
c2VTZWxmKHIwLHIxLHIyLHIzLHI0LHI1LHI2LHI3LHI4LHI5LHIxMCk7CiAgICByZXR1cm4gQjsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgpBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4gQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojp0cmFuc3Bvc2UoCiAgY29uc3QgVGlu
eVZlY3RvcjxpbnQsIE5fcmFuaz4mIHIpCnsKICAgIFRfYXJyYXkgQigqdGhpcyk7CiAgICBCLnRy
YW5zcG9zZVNlbGYocik7CiAgICByZXR1cm4gQjsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBl
LCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6dHJhbnNwb3NlU2Vs
ZihpbnQgcjAsIGludCByMSwgaW50IHIyLCBpbnQgcjMsCiAgICBpbnQgcjQsIGludCByNSwgaW50
IHI2LCBpbnQgcjcsIGludCByOCwgaW50IHI5LCBpbnQgcjEwKQp7CiAgICAgOwoKCgoKICAgICAK
ICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiB4KCp0aGlzKTsKCiAgICAgCiAgICBkb1RyYW5z
cG9zZSgwLCByMCwgeCk7CiAgICBkb1RyYW5zcG9zZSgxLCByMSwgeCk7CiAgICBkb1RyYW5zcG9z
ZSgyLCByMiwgeCk7CiAgICBkb1RyYW5zcG9zZSgzLCByMywgeCk7CiAgICBkb1RyYW5zcG9zZSg0
LCByNCwgeCk7CiAgICBkb1RyYW5zcG9zZSg1LCByNSwgeCk7CiAgICBkb1RyYW5zcG9zZSg2LCBy
NiwgeCk7CiAgICBkb1RyYW5zcG9zZSg3LCByNywgeCk7CiAgICBkb1RyYW5zcG9zZSg4LCByOCwg
eCk7CiAgICBkb1RyYW5zcG9zZSg5LCByOSwgeCk7CiAgICBkb1RyYW5zcG9zZSgxMCwgcjEwLCB4
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPjo6dHJhbnNwb3NlU2VsZihjb25zdCBUaW55VmVjdG9yPGludCwgTl9y
YW5rPiYgcikKewogICAgIAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IHgoKnRoaXMpOwoK
ICAgICAKICAgIGZvcihpbnQgaT0wOyBpPE5fcmFuazsgKytpKSB7CiAgICAgIGRvVHJhbnNwb3Nl
KGksIHJbaV0sIHgpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jh
bms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+Ojpkb1RyYW5zcG9zZShpbnQgZGVzdFJh
bmssIGludCBzb3VyY2VSYW5rLAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSkK
ewogICAgIAoKICAgIGlmIChkZXN0UmFuayA+PSBOX3JhbmspCiAgICAgICAgcmV0dXJuOwoKICAg
IGxlbmd0aF9bZGVzdFJhbmtdID0gYXJyYXkubGVuZ3RoX1tzb3VyY2VSYW5rXTsKICAgIHN0cmlk
ZV9bZGVzdFJhbmtdID0gYXJyYXkuc3RyaWRlX1tzb3VyY2VSYW5rXTsKICAgIHN0b3JhZ2VfLnNl
dEFzY2VuZGluZ0ZsYWcoZGVzdFJhbmssIAogICAgICAgIGFycmF5LmlzUmFua1N0b3JlZEFzY2Vu
ZGluZyhzb3VyY2VSYW5rKSk7CiAgICBzdG9yYWdlXy5zZXRCYXNlKGRlc3RSYW5rLCBhcnJheS5i
YXNlKHNvdXJjZVJhbmspKTsKCiAgICAgCiAgICAgCiAgICAgCgogICAgIAogICAgaW50IGk9MDsK
ICAgIGZvciAoOyBpIDwgTl9yYW5rOyArK2kpCiAgICAgICAgaWYgKGFycmF5LnN0b3JhZ2VfLm9y
ZGVyaW5nKGkpID09IHNvdXJjZVJhbmspCiAgICAgICAgICAgIGJyZWFrOwoKICAgIHN0b3JhZ2Vf
LnNldE9yZGVyaW5nKGksIGRlc3RSYW5rKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBp
bnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6cmV2ZXJzZVNlbGYoaW50
IHJhbmspCnsKICAgICA7CgogICAgc3RvcmFnZV8uc2V0QXNjZW5kaW5nRmxhZyhyYW5rLCAhaXNS
YW5rU3RvcmVkQXNjZW5kaW5nKHJhbmspKTsKCiAgICBpbnQgYWRqdXN0bWVudCA9IHN0cmlkZV9b
cmFua10gKiAobGJvdW5kKHJhbmspICsgdWJvdW5kKHJhbmspKTsKICAgIHplcm9PZmZzZXRfICs9
IGFkanVzdG1lbnQ7CiAgICBkYXRhXyArPSBhZGp1c3RtZW50OwogICAgc3RyaWRlX1tyYW5rXSAq
PSAtMTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgpBcnJheTxUX251
bXR5cGUsIE5fcmFuaz4gQXJyYXk8VF9udW10eXBlLE5fcmFuaz46OnJldmVyc2UoaW50IHJhbmsp
CnsKICAgIFRfYXJyYXkgQigqdGhpcyk7CiAgICBCLnJldmVyc2VTZWxmKHJhbmspOwogICAgcmV0
dXJuIEI7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8
Y2xhc3MgVF9udW10eXBlMj4KQXJyYXk8VF9udW10eXBlMixOX3Jhbms+IEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+OjpleHRyYWN0Q29tcG9uZW50KFRfbnVtdHlwZTIsIAogICAgaW50IGNvbXBvbmVu
dE51bWJlciwgaW50IG51bUNvbXBvbmVudHMpIGNvbnN0CnsKICAgICA7CgoKICAgIFRpbnlWZWN0
b3I8aW50LE5fcmFuaz4gc3RyaWRlMjsKICAgIHN0cmlkZTIgPSBzdHJpZGVfICogbnVtQ29tcG9u
ZW50czsKICAgIGNvbnN0IFRfbnVtdHlwZTIqIGRhdGFGaXJzdDIgPSAKICAgICAgICAoKGNvbnN0
IFRfbnVtdHlwZTIqKWRhdGFGaXJzdCgpKSArIGNvbXBvbmVudE51bWJlcjsKICAgIHJldHVybiBB
cnJheTxUX251bXR5cGUyLE5fcmFuaz4oY29uc3RfY2FzdDxUX251bXR5cGUyKj4oZGF0YUZpcnN0
MiksIAogICAgICAgIGxlbmd0aF8sIHN0cmlkZTIsIHN0b3JhZ2VfKTsKfQoKIAoKCgoKCnRlbXBs
YXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lICB2b2lkIEFycmF5PFBfbnVt
dHlwZSwgTl9yYW5rPjo6cmVpbmRleFNlbGYoY29uc3QgCiAgICBUaW55VmVjdG9yPGludCwgTl9y
YW5rPiYgbmV3QmFzZSkgCnsKICAgIGRhdGFfICs9IGRvdChiYXNlKCkgLSBuZXdCYXNlLCBzdHJp
ZGVfKTsKICAgIHN0b3JhZ2VfLnNldEJhc2UobmV3QmFzZSk7CiAgICBjYWxjdWxhdGVaZXJvT2Zm
c2V0KCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lICBB
cnJheTxQX251bXR5cGUsIE5fcmFuaz4gCkFycmF5PFBfbnVtdHlwZSwgTl9yYW5rPjo6cmVpbmRl
eChjb25zdCBUaW55VmVjdG9yPGludCwgTl9yYW5rPiYgbmV3QmFzZSkgCnsKICAgIFRfYXJyYXkg
QigqdGhpcyk7CiAgICBCLnJlaW5kZXhTZWxmKG5ld0Jhc2UpOwogICAgcmV0dXJuIEI7Cn0KCn0g
CgoKCiMgMjQ3MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5
LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5
L2V2YWwuY2MiIDEKIAoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0FSUkFZRVZBTF9DQwoKCgoK
Cm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogCgoKdGVt
cGxhdGU8IGJvb2wgIGNhblRyeUZhc3RUcmF2ZXJzYWw+CnN0cnVjdCBfYnpfdHJ5RmFzdFRyYXZl
cnNhbCB7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGNsYXNzIFRf
ZXhwciwgY2xhc3MgVF91cGRhdGU+CiAgICBzdGF0aWMgYm9vbCAgdHJ5RmFzdChBcnJheTxUX251
bXR5cGUsTl9yYW5rPiYgYXJyYXksIAogICAgICAgIGNvbnN0ICBUX2V4cHIgJiAgZXhwciwgVF91
cGRhdGUpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlIDsKICAgIH0KfTsKCnRlbXBsYXRlPD4K
c3RydWN0IF9iel90cnlGYXN0VHJhdmVyc2FsPCB0cnVlID4gewogICAgdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlPgogICAg
c3RhdGljIGJvb2wgIHRyeUZhc3QoQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGFycmF5LCAKICAg
ICAgICBjb25zdCAgVF9leHByICYgIGV4cHIsIFRfdXBkYXRlKQogICAgewogICAgICAgICAKICAg
ICAgICAgCiAgICAgICAgIAogICAgICAgICAKICAgICAgICBUcmF2ZXJzYWxPcmRlckNvbGxlY3Rp
b248Tl9yYW5rLTE+IHRyYXZlcnNhbHM7CiAgICAgICAgVGlueVZlY3RvcjxpbnQsIE5fcmFuayAt
IDE+IHRyYXZlcnNhbEdyaWRTaXplOwoKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3Jhbmsg
LSAxOyArK2kpCiAgICAgICAgICAgIHRyYXZlcnNhbEdyaWRTaXplW2ldID0gYXJyYXkubGVuZ3Ro
KGFycmF5Lm9yZGVyaW5nKGkrMSkpOwoKCgoKCgogICAgICAgIGNvbnN0IFRyYXZlcnNhbE9yZGVy
PE5fcmFuay0xPiogb3JkZXIgPQogICAgICAgICAgICB0cmF2ZXJzYWxzLmZpbmQodHJhdmVyc2Fs
R3JpZFNpemUpOwoKICAgICAgICBpZiAob3JkZXIpCiAgICAgICAgewoKCgoKICAgICAgICAgICAg
IAogICAgICAgICAgICBhcnJheS5ldmFsdWF0ZVdpdGhGYXN0VHJhdmVyc2FsKCpvcmRlciwgZXhw
ciwgVF91cGRhdGUoKSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlIDsKICAgICAgICB9CgogICAg
ICAgIHJldHVybiBmYWxzZSA7CiAgICB9Cn07CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwg
aW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5l
IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgCkFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6ZXZh
bHVhdGUoVF9leHByIGV4cHIsIAogICAgVF91cGRhdGUpCnsKICAgICAKIyAxMzUgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldmFsLmNjIgoKCiAgICAgOwoK
CiAgICAgOwoKCgogICAgIAoKCgoKCgogICAgaWYgKG51bUVsZW1lbnRzKCkgPT0gMCkKICAgICAg
ICByZXR1cm4gKnRoaXM7CgoKCgoKCiAgICAgCiAgICAgCiAgICAgCgojIDE3NCAiL3Vmcy9uZXdt
YW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V2YWwuY2MiCgoKICAgICAKICAg
IGlmIChUX2V4cHI6Om51bUluZGV4UGxhY2Vob2xkZXJzID4gMCkKICAgIHsKICAgICAgICAgCiAg
ICAgICAgIAoKICAgICAgICBpZiAoTl9yYW5rID09IDEpCiAgICAgICAgICAgIHJldHVybiBldmFs
dWF0ZVdpdGhJbmRleFRyYXZlcnNhbDEoZXhwciwgVF91cGRhdGUoKSk7CiAgICAgICAgZWxzZQog
ICAgICAgICAgICByZXR1cm4gZXZhbHVhdGVXaXRoSW5kZXhUcmF2ZXJzYWxOKGV4cHIsIFRfdXBk
YXRlKCkpOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICAKICAgICAgICAgCiAgICAgICAgIAog
ICAgICAgICAKCgoKICAgICAgICBlbnVtIHsgaXNTdGVuY2lsID0gKE5fcmFuayA+PSAzKSAmJiAo
VF9leHByOjpudW1BcnJheU9wZXJhbmRzID4gNikKICAgICAgICAgICAgJiYgKFRfZXhwcjo6bnVt
SW5kZXhQbGFjZWhvbGRlcnMgPT0gMCkgfTsKCiAgICAgICAgaWYgKF9iel90cnlGYXN0VHJhdmVy
c2FsPGlzU3RlbmNpbD46OnRyeUZhc3QoKnRoaXMsIGV4cHIsIFRfdXBkYXRlKCkpKQogICAgICAg
ICAgICByZXR1cm4gKnRoaXM7CgoKCgogICAgICAgICAKICAgICAgICAgCgogICAgICAgIGlmICgo
Tl9yYW5rID09IDIpICYmIChUX2V4cHI6Om51bUFycmF5T3BlcmFuZHMgPj0gNSkpCiAgICAgICAg
ewogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICAg
CiAgICAgICAgICAgICAKCiAgICAgICAgICAgICAKICAgICAgICAgICAgIAogICAgICAgICAgICAg
CiAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGludCBjYWNoZU5lZWRlZCA9
IDMgKiAzICogc2l6ZW9mKFRfbnVtdHlwZSkgKiBsZW5ndGgob3JkZXJpbmcoMCkpOwogICAgICAg
ICAgICBpZiAoY2FjaGVOZWVkZWQgPiA4MTkyICkKICAgICAgICAgICAgICAgIHJldHVybiBldmFs
dWF0ZVdpdGhUaWxlZDJEVHJhdmVyc2FsKGV4cHIsIFRfdXBkYXRlKCkpOwogICAgICAgIH0KCgoK
ICAgICAgICAgCiAgICAgICAgIAogICAgICAgIGlmIChOX3JhbmsgPT0gMSkKICAgICAgICAgICAg
cmV0dXJuIGV2YWx1YXRlV2l0aFN0YWNrVHJhdmVyc2FsMShleHByLCBUX3VwZGF0ZSgpKTsKICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiBldmFsdWF0ZVdpdGhTdGFja1RyYXZlcnNhbE4o
ZXhwciwgVF91cGRhdGUoKSk7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50
IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5lIEFy
cmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpldmFsdWF0
ZVdpdGhTdGFja1RyYXZlcnNhbDEoCiAgICBUX2V4cHIgZXhwciwgVF91cGRhdGUpCnsKCgoKCiAg
ICBGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsIE5fcmFuaz4gaXRlcigqdGhpcyk7CiAgICBp
dGVyLmxvYWRTdHJpZGUoZmlyc3RSYW5rKTsKICAgIGV4cHIubG9hZFN0cmlkZShmaXJzdFJhbmsp
OwoKICAgIGJvb2wgIHVzZVVuaXRTdHJpZGUgPSBpdGVyLmlzVW5pdFN0cmlkZShmaXJzdFJhbmsp
CiAgICAgICAgICAmJiBleHByLmlzVW5pdFN0cmlkZShmaXJzdFJhbmspOwoKCiAgICBpbnQgY29t
bW9uU3RyaWRlID0gZXhwci5zdWdnZXN0U3RyaWRlKGZpcnN0UmFuayk7CiAgICBpZiAoaXRlci5z
dWdnZXN0U3RyaWRlKGZpcnN0UmFuaykgPiBjb21tb25TdHJpZGUpCiAgICAgICAgY29tbW9uU3Ry
aWRlID0gaXRlci5zdWdnZXN0U3RyaWRlKGZpcnN0UmFuayk7CiAgICBib29sIHVzZUNvbW1vblN0
cmlkZSA9IGl0ZXIuaXNTdHJpZGUoZmlyc3RSYW5rLGNvbW1vblN0cmlkZSkKICAgICAgICAmJiBl
eHByLmlzU3RyaWRlKGZpcnN0UmFuayxjb21tb25TdHJpZGUpOwoKIAoKCgoKCgoKCgogICAgY29u
c3QgVF9udW10eXBlICogbGFzdCA9IGl0ZXIuZGF0YSgpICsgbGVuZ3RoKGZpcnN0UmFuaykgCiAg
ICAgICAgKiBzdHJpZGUoZmlyc3RSYW5rKTsKCiAgICBpZiAodXNlVW5pdFN0cmlkZSB8fCB1c2VD
b21tb25TdHJpZGUpCiAgICB7CgoKCgoKICAgICAgICBpbnQgdWJvdW5kID0gbGVuZ3RoKGZpcnN0
UmFuaykgKiBjb21tb25TdHJpZGU7CiAgICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGRh
dGEgPSBjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGl0ZXIuZGF0YSgpKTsKCiAgICAgICAgaWYgKGNv
bW1vblN0cmlkZSA9PSAxKQogICAgICAgIHsKIAogICAgICAgICAgICBmb3IgKGludCBpPTA7IGkg
PCB1Ym91bmQ7ICsraSkKICAgICAgICAgICAgICAgIFRfdXBkYXRlOjp1cGRhdGUoZGF0YVtpXSwg
ZXhwci5mYXN0UmVhZChpKSk7CiAKIyAzMTkgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS9ldmFsLmNjIgoKCiAgICAgICAgfQogCiAgICAgICAgZWxzZSB7Cgog
IAogICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB1Ym91bmQ7IGkgKz0gY29tbW9uU3RyaWRl
KQogICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZShkYXRhW2ldLCBleHByLmZhc3RSZWFk
KGkpKTsKICAKIyAzNDYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9h
cnJheS9ldmFsLmNjIgoKICAgICAgICB9CiAKCiMgMzYxICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXZhbC5jYyIKCiAgICB9CiAgICBlbHNlIHsKICAgICAg
ICB3aGlsZSAoaXRlci5kYXRhKCkgIT0gbGFzdCkKICAgICAgICB7CiAgICAgICAgICAgIFRfdXBk
YXRlOjp1cGRhdGUoKmNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5kYXRhKCkpLCAqZXhwcik7
CiAgICAgICAgICAgIGl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBleHByLmFkdmFuY2UoKTsK
ICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICp0aGlzOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251
bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF91cGRhdGU+
CmlubGluZSBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mCkFycmF5PFRfbnVtdHlwZSwgTl9yYW5r
Pjo6ZXZhbHVhdGVXaXRoU3RhY2tUcmF2ZXJzYWxOKAogICAgVF9leHByIGV4cHIsIFRfdXBkYXRl
KQp7CiAgICAgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgogICAgIAoKCgoKCgoKCgoKCgogICAgY29u
c3QgaW50IG1heFJhbmsgPSBvcmRlcmluZygwKTsKICAgICAKCiAgICAgCiAgICBGYXN0QXJyYXlJ
dGVyYXRvcjxUX251bXR5cGUsIE5fcmFuaz4gaXRlcigqdGhpcyk7CgogICAgIAogICAgIAoKICAg
IGludCBpOwogICAgZm9yIChpPTE7IGkgPCBOX3Jhbms7ICsraSkKICAgIHsKICAgICAgICBpdGVy
LnB1c2goaSk7CiAgICAgICAgZXhwci5wdXNoKGkpOwogICAgfQoKICAgICAKICAgIGl0ZXIubG9h
ZFN0cmlkZShtYXhSYW5rKTsKICAgIGV4cHIubG9hZFN0cmlkZShtYXhSYW5rKTsKCiAgICAgCgoK
CgogICAgYm9vbCAgdXNlVW5pdFN0cmlkZSA9IGl0ZXIuaXNVbml0U3RyaWRlKG1heFJhbmspCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgJiYgZXhwci5pc1VuaXRTdHJpZGUobWF4UmFuayk7Cgog
ICAgIAoKCgoKCiAgICBpbnQgY29tbW9uU3RyaWRlID0gZXhwci5zdWdnZXN0U3RyaWRlKG1heFJh
bmspOwogICAgaWYgKGl0ZXIuc3VnZ2VzdFN0cmlkZShtYXhSYW5rKSA+IGNvbW1vblN0cmlkZSkK
ICAgICAgICBjb21tb25TdHJpZGUgPSBpdGVyLnN1Z2dlc3RTdHJpZGUobWF4UmFuayk7CiAgICBi
b29sIHVzZUNvbW1vblN0cmlkZSA9IGl0ZXIuaXNTdHJpZGUobWF4UmFuayxjb21tb25TdHJpZGUp
CiAgICAgICAgJiYgZXhwci5pc1N0cmlkZShtYXhSYW5rLGNvbW1vblN0cmlkZSk7CgoKCgoKCgoK
CgoKCiAgICAgCgoKCiAgICBjb25zdCBUX251bXR5cGUqIGxhc3RbTl9yYW5rXTsKCiAgICAgCiAg
ICBmb3IgKGk9MTsgaSA8IE5fcmFuazsgKytpKQogICAgICAgIGxhc3RbaV0gPSBpdGVyLmRhdGEo
KSArIGxlbmd0aChvcmRlcmluZyhpKSkgKiBzdHJpZGUob3JkZXJpbmcoaSkpOwoKICAgIGludCBs
YXN0TGVuZ3RoID0gbGVuZ3RoKG1heFJhbmspOwogICAgaW50IGZpcnN0Tm9uY29sbGFwc2VkTG9v
cCA9IDE7CgoKCiAgICAgCgoKCgoKCgoKCgogICAgIAogICAgZm9yIChpPTE7IGkgPCBOX3Jhbms7
ICsraSkKICAgIHsKICAgICAgICAgCiAgICAgICAgaW50IG91dGVyTG9vcFJhbmsgPSBvcmRlcmlu
ZyhpKTsKICAgICAgICBpbnQgaW5uZXJMb29wUmFuayA9IG9yZGVyaW5nKGktMSk7CgogICAgICAg
ICAKCgoKCgogICAgICAgIGlmIChjYW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLGlubmVyTG9vcFJh
bmspIAogICAgICAgICAgJiYgZXhwci5jYW5Db2xsYXBzZShvdXRlckxvb3BSYW5rLGlubmVyTG9v
cFJhbmspKQogICAgICAgIHsKCgoKCiAgICAgICAgICAgIGxhc3RMZW5ndGggKj0gbGVuZ3RoKG91
dGVyTG9vcFJhbmspOwogICAgICAgICAgICBmaXJzdE5vbmNvbGxhcHNlZExvb3AgPSBpKzE7CiAg
ICAgICAgfQogICAgICAgIGVsc2UgIAogICAgICAgICAgICBicmVhazsKICAgIH0KCgoKICAgICAK
CgoKCgoKCiAgICB3aGlsZSAodHJ1ZSkgewoKICAgICAgICAgCgoKCgoKICAgICAgICBpZiAoKHVz
ZVVuaXRTdHJpZGUpIHx8ICh1c2VDb21tb25TdHJpZGUpKQogICAgICAgIHsKCgogICAgICAgICAg
ICAgCgoKCgoKCiAgICAgICAgICAgICAKICAgICAgICAgICAgaW50IHVib3VuZCA9IGxhc3RMZW5n
dGggKiBjb21tb25TdHJpZGU7CgogICAgICAgICAgICAgCgoKCgoKCgogICAgICAgICAgICBUX251
bXR5cGUqIF9fcmVzdHJpY3RfXyAgZGF0YSA9IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5k
YXRhKCkpOwoKICAgICAgICAgICAgIAoKCiAgICAgICAgICAgIGlmIChjb21tb25TdHJpZGUgPT0g
MSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgdWJvdW5k
OyArK2kpCiAgICAgICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZShkYXRhW2ldLCBleHBy
LmZhc3RSZWFkKGkpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB1Ym91bmQ7IGkgKz0gY29tbW9uU3RyaWRlKQogICAg
ICAgICAgICAgICAgICAgIFRfdXBkYXRlOjp1cGRhdGUoZGF0YVtpXSwgZXhwci5mYXN0UmVhZChp
KSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAKCgoKCiAgICAgICAgICAgIGl0ZXIuYWR2
YW5jZShsYXN0TGVuZ3RoICogY29tbW9uU3RyaWRlKTsKICAgICAgICAgICAgZXhwci5hZHZhbmNl
KGxhc3RMZW5ndGggKiBjb21tb25TdHJpZGUpOwojIDU5NyAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V2YWwuY2MiCgogICAgICAgIH0KICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIAoKCgoKICAgICAgICAgICAgVF9udW10eXBlICogX19yZXN0cmljdF9f
ICBlbmQgPSBjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGl0ZXIuZGF0YSgpKQogICAgICAgICAgICAg
ICAgKyBsYXN0TGVuZ3RoICogc3RyaWRlKG1heFJhbmspOwoKICAgICAgICAgICAgd2hpbGUgKGl0
ZXIuZGF0YSgpICE9IGVuZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVF91cGRhdGU6
OnVwZGF0ZSgqY29uc3RfY2FzdDxUX251bXR5cGUqPihpdGVyLmRhdGEoKSksICpleHByKTsKICAg
ICAgICAgICAgICAgIGl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICAgICAgZXhwci5hZHZhbmNl
KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICAgCgoKIAogICAgICAgIGludCBq
ID0gZmlyc3ROb25jb2xsYXBzZWRMb29wOwogICAgICAgIGZvciAoOyBqIDwgTl9yYW5rOyArK2op
CiAgICAgICAgewogICAgICAgICAgICAgCiAgICAgICAgICAgIGludCByID0gb3JkZXJpbmcoaik7
CgogICAgICAgICAgICAgCiAgICAgICAgICAgICAKICAgICAgICAgICAgaXRlci5wb3Aoaik7CiAg
ICAgICAgICAgIGV4cHIucG9wKGopOwoKICAgICAgICAgICAgIAogICAgICAgICAgICAgCiAgICAg
ICAgICAgIGl0ZXIubG9hZFN0cmlkZShyKTsKICAgICAgICAgICAgZXhwci5sb2FkU3RyaWRlKHIp
OwogICAgICAgICAgICBpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgZXhwci5hZHZhbmNlKCk7
CgogICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChpdGVyLmRhdGEoKSAhPSBsYXN0W2pdKQog
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAgCiAgICAgICAgaWYgKGog
PT0gTl9yYW5rKQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgIAogICAgICAgIGZvciAoOyBq
ID49IGZpcnN0Tm9uY29sbGFwc2VkTG9vcDsgLS1qKQogICAgICAgIHsKICAgICAgICAgICAgaW50
IHIyID0gb3JkZXJpbmcoai0xKTsKICAgICAgICAgICAgaXRlci5wdXNoKGopOwogICAgICAgICAg
ICBleHByLnB1c2goaik7CiAgICAgICAgICAgIGxhc3Rbai0xXSA9IGl0ZXIuZGF0YSgpICsgbGVu
Z3RoKHIyKSAqIHN0cmlkZShyMik7CiAgICAgICAgfQoKICAgICAgICAgCiAgICAgICAgaXRlci5s
b2FkU3RyaWRlKG1heFJhbmspOwogICAgICAgIGV4cHIubG9hZFN0cmlkZShtYXhSYW5rKTsKICAg
IH0KCiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5lIEFycmF5
PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpldmFsdWF0ZVdp
dGhJbmRleFRyYXZlcnNhbDEoCiAgICBUX2V4cHIgZXhwciwgVF91cGRhdGUpCnsKICAgIFRpbnlW
ZWN0b3I8aW50LE5fcmFuaz4gaW5kZXg7CgogICAgaWYgKHN0cmlkZShmaXJzdFJhbmspID09IDEp
CiAgICB7CiAgICAgICAgVF9udW10eXBlICogX19yZXN0cmljdF9fICBpdGVyID0gZGF0YV87CiAg
ICAgICAgaW50IGxhc3QgPSB1Ym91bmQoZmlyc3RSYW5rKTsKCiAgICAgICAgZm9yIChpbmRleFsw
XSA9IGxib3VuZChmaXJzdFJhbmspOyBpbmRleFswXSA8PSBsYXN0OwogICAgICAgICAgICArK2lu
ZGV4WzBdKQogICAgICAgIHsKICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZShpdGVyW2luZGV4
WzBdXSwgVF9udW10eXBlKGV4cHIoaW5kZXgpKSk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7
CiAgICAgICAgRmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLCBOX3Jhbms+IGl0ZXIoKnRoaXMp
OwogICAgICAgIGl0ZXIubG9hZFN0cmlkZSgwKTsKICAgICAgICBpbnQgbGFzdCA9IHVib3VuZChm
aXJzdFJhbmspOwoKICAgICAgICBmb3IgKGluZGV4WzBdID0gbGJvdW5kKGZpcnN0UmFuayk7IGlu
ZGV4WzBdIDw9IGxhc3Q7CiAgICAgICAgICAgICsraW5kZXhbMF0pCiAgICAgICAgewogICAgICAg
ICAgICBUX3VwZGF0ZTo6dXBkYXRlKCpjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGl0ZXIuZGF0YSgp
KSwgCiAgICAgICAgICAgICAgICBleHByKGluZGV4KSk7CiAgICAgICAgICAgIGl0ZXIuYWR2YW5j
ZSgpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3Vw
ZGF0ZT4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBO
X3Jhbms+OjpldmFsdWF0ZVdpdGhJbmRleFRyYXZlcnNhbE4oCiAgICBUX2V4cHIgZXhwciwgVF91
cGRhdGUpCnsKICAgICAKICAgICAKICAgCiAgICBjb25zdCBpbnQgbWF4UmFuayA9IG9yZGVyaW5n
KDApOwoKCgoKCgoKCgoKICAgIEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSwgTl9yYW5rPiBp
dGVyKCp0aGlzKTsKICAgIGZvciAoaW50IGk9MTsgaSA8IE5fcmFuazsgKytpKQogICAgICAgIGl0
ZXIucHVzaChvcmRlcmluZyhpKSk7CgogICAgaXRlci5sb2FkU3RyaWRlKG1heFJhbmspOwoKICAg
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4gaW5kZXgsIGxhc3Q7CgogICAgaW5kZXggPSBzdG9yYWdl
Xy5iYXNlKCk7CiAgICBsYXN0ID0gc3RvcmFnZV8uYmFzZSgpICsgbGVuZ3RoXzsKCiAgICAgCgog
ICAgd2hpbGUgKHRydWUpIHsKCiAgICAgICAgZm9yIChpbmRleFttYXhSYW5rXSA9IGJhc2UobWF4
UmFuayk7IAogICAgICAgICAgICAgaW5kZXhbbWF4UmFua10gPCBsYXN0W21heFJhbmtdOyAKICAg
ICAgICAgICAgICsraW5kZXhbbWF4UmFua10pCiAgICAgICAgewoKCgoKCgoKICAgICAgICAgICAg
VF91cGRhdGU6OnVwZGF0ZSgqY29uc3RfY2FzdDxUX251bXR5cGUqPihpdGVyLmRhdGEoKSksIGV4
cHIoaW5kZXgpKTsKICAgICAgICAgICAgaXRlci5hZHZhbmNlKCk7CiAgICAgICAgfQoKICAgICAg
ICBpbnQgaiA9IDE7CiAgICAgICAgZm9yICg7IGogPCBOX3Jhbms7ICsraikKICAgICAgICB7CiAg
ICAgICAgICAgIGl0ZXIucG9wKG9yZGVyaW5nKGopKTsKICAgICAgICAgICAgaXRlci5sb2FkU3Ry
aWRlKG9yZGVyaW5nKGopKTsKICAgICAgICAgICAgaXRlci5hZHZhbmNlKCk7CgogICAgICAgICAg
ICBpbmRleFtvcmRlcmluZyhqLTEpXSA9IGJhc2Uob3JkZXJpbmcoai0xKSk7CiAgICAgICAgICAg
ICsraW5kZXhbb3JkZXJpbmcoaildOwogICAgICAgICAgICBpZiAoaW5kZXhbb3JkZXJpbmcoaild
ICE9IGxhc3Rbb3JkZXJpbmcoaildKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoK
ICAgICAgICBpZiAoaiA9PSBOX3JhbmspCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBmb3Ig
KDsgaiA+IDA7IC0taikKICAgICAgICB7CiAgICAgICAgICAgIGl0ZXIucHVzaChvcmRlcmluZyhq
KSk7CiAgICAgICAgfQogICAgICAgIGl0ZXIubG9hZFN0cmlkZShtYXhSYW5rKTsKICAgIH0KCiAg
ICByZXR1cm4gKnRoaXM7IAp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3VwZGF0ZT4KaW5saW5lIEFycmF5
PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpldmFsdWF0ZVdp
dGhGYXN0VHJhdmVyc2FsKAogICAgY29uc3QgVHJhdmVyc2FsT3JkZXI8Tl9yYW5rIC0gMT4mIG9y
ZGVyLCAKICAgIFRfZXhwciBleHByLAogICAgVF91cGRhdGUpCnsKICAgIGNvbnN0IGludCBtYXhS
YW5rID0gb3JkZXJpbmcoMCk7CgoKCgoKCgoKICAgIEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlw
ZSwgTl9yYW5rPiBpdGVyKCp0aGlzKTsKICAgIGl0ZXIucHVzaCgwKTsKICAgIGV4cHIucHVzaCgw
KTsKCiAgICBib29sICB1c2VVbml0U3RyaWRlID0gaXRlci5pc1VuaXRTdHJpZGUobWF4UmFuaykg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgZXhwci5pc1VuaXRTdHJpZGUobWF4UmFuayk7
CgoKICAgIGludCBjb21tb25TdHJpZGUgPSBleHByLnN1Z2dlc3RTdHJpZGUobWF4UmFuayk7CiAg
ICBpZiAoaXRlci5zdWdnZXN0U3RyaWRlKG1heFJhbmspID4gY29tbW9uU3RyaWRlKQogICAgICAg
IGNvbW1vblN0cmlkZSA9IGl0ZXIuc3VnZ2VzdFN0cmlkZShtYXhSYW5rKTsKICAgIGJvb2wgdXNl
Q29tbW9uU3RyaWRlID0gaXRlci5pc1N0cmlkZShtYXhSYW5rLGNvbW1vblN0cmlkZSkKICAgICAg
ICAmJiBleHByLmlzU3RyaWRlKG1heFJhbmssY29tbW9uU3RyaWRlKTsKCgoKCgogICAgaW50IGxh
c3RMZW5ndGggPSBsZW5ndGgobWF4UmFuayk7CgogICAgZm9yIChpbnQgaT0wOyBpIDwgb3JkZXIu
bGVuZ3RoKCk7ICsraSkKICAgIHsKICAgICAgICBpdGVyLnBvcCgwKTsKICAgICAgICBleHByLnBv
cCgwKTsKCgoKCiAgICAgICAgIAogICAgICAgIGZvciAoaW50IGo9MTsgaiA8IE5fcmFuazsgKytq
KQogICAgICAgIHsKICAgICAgICAgICAgaXRlci5sb2FkU3RyaWRlKG9yZGVyaW5nKGopKTsKICAg
ICAgICAgICAgZXhwci5sb2FkU3RyaWRlKG9yZGVyaW5nKGopKTsKCiAgICAgICAgICAgIGludCBv
ZmZzZXQgPSBvcmRlcltpXVtqLTFdOwogICAgICAgICAgICBpdGVyLmFkdmFuY2Uob2Zmc2V0KTsK
ICAgICAgICAgICAgZXhwci5hZHZhbmNlKG9mZnNldCk7CiAgICAgICAgfQoKICAgICAgICBpdGVy
LmxvYWRTdHJpZGUobWF4UmFuayk7CiAgICAgICAgZXhwci5sb2FkU3RyaWRlKG1heFJhbmspOwoK
ICAgICAgICAgCgogICAgICAgIGlmICgodXNlVW5pdFN0cmlkZSkgfHwgKHVzZUNvbW1vblN0cmlk
ZSkpCiAgICAgICAgewogICAgICAgICAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgbGFzdCA9
IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5kYXRhKCkpIAogICAgICAgICAgICAgICAgKyBs
YXN0TGVuZ3RoICogY29tbW9uU3RyaWRlOwoKCiAgICAgICAgICAgIGludCB1Ym91bmQgPSBsYXN0
TGVuZ3RoICogY29tbW9uU3RyaWRlOwogICAgICAgICAgICBUX251bXR5cGUqIF9fcmVzdHJpY3Rf
XyAgZGF0YSA9IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4oaXRlci5kYXRhKCkpOwoKICAgICAgICAg
ICAgaWYgKGNvbW1vblN0cmlkZSA9PSAxKQogICAgICAgICAgICB7ICAgICAgICAgICAgCiAKICAg
ICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHVib3VuZDsgKytpKQogICAgICAgICAgICAg
ICAgICAgIFRfdXBkYXRlOjp1cGRhdGUoZGF0YVtpXSwgZXhwci5mYXN0UmVhZChpKSk7CiAKIyA4
NjYgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldmFsLmNj
IgoKICAgICAgICAgICAgfQogCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZm9y
IChpbnQgaT0wOyBpIDwgdWJvdW5kOyBpICs9IGNvbW1vblN0cmlkZSkKICAgICAgICAgICAgICAg
ICAgICBUX3VwZGF0ZTo6dXBkYXRlKGRhdGFbaV0sIGV4cHIuZmFzdFJlYWQoaSkpOwogICAgICAg
ICAgICB9CiAKCiAgICAgICAgICAgIGl0ZXIuYWR2YW5jZShsYXN0TGVuZ3RoICogY29tbW9uU3Ry
aWRlKTsKICAgICAgICAgICAgZXhwci5hZHZhbmNlKGxhc3RMZW5ndGggKiBjb21tb25TdHJpZGUp
OwoKCgoKCgoKCgogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIAoKICAgICAg
ICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGxhc3QgPSBjb25zdF9jYXN0PFRfbnVtdHlw
ZSo+KGl0ZXIuZGF0YSgpKSAKICAgICAgICAgICAgICAgICsgbGFzdExlbmd0aCAqIHN0cmlkZSht
YXhSYW5rKTsKCiAgICAgICAgICAgIHdoaWxlIChpdGVyLmRhdGEoKSAhPSBsYXN0KQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICBUX3VwZGF0ZTo6dXBkYXRlKCpjb25zdF9jYXN0PFRfbnVt
dHlwZSo+KGl0ZXIuZGF0YSgpKSwgKmV4cHIpOwogICAgICAgICAgICAgICAgaXRlci5hZHZhbmNl
KCk7CiAgICAgICAgICAgICAgICBleHByLmFkdmFuY2UoKTsKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgIH0KCiAgICByZXR1cm4gKnRoaXM7Cn0KCgojIDExMDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldmFsLmNjIgoKCgoKCgoKCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBU
X3VwZGF0ZT4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgCkFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPjo6ZXZhbHVhdGVXaXRoVGlsZWQyRFRyYXZlcnNhbCgKICAgIFRfZXhwciBleHBy
LCBUX3VwZGF0ZSkKewogICAgY29uc3QgaW50IG1pbm9yUmFuayA9IG9yZGVyaW5nKDApOwogICAg
Y29uc3QgaW50IG1ham9yUmFuayA9IG9yZGVyaW5nKDEpOwoKICAgIGNvbnN0IGludCBibG9ja1Np
emUgPSAxNjsKICAgIAogICAgRmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLCBOX3Jhbms+IGl0
ZXIoKnRoaXMpOwogICAgaXRlci5wdXNoKDApOwogICAgZXhwci5wdXNoKDApOwoKICAgIGJvb2wg
IHVzZVVuaXRTdHJpZGUgPSBpdGVyLmlzVW5pdFN0cmlkZShtaW5vclJhbmspCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgJiYgZXhwci5pc1VuaXRTdHJpZGUobWlub3JSYW5rKTsKCgogICAgaW50
IGNvbW1vblN0cmlkZSA9IGV4cHIuc3VnZ2VzdFN0cmlkZShtaW5vclJhbmspOwogICAgaWYgKGl0
ZXIuc3VnZ2VzdFN0cmlkZShtaW5vclJhbmspID4gY29tbW9uU3RyaWRlKQogICAgICAgIGNvbW1v
blN0cmlkZSA9IGl0ZXIuc3VnZ2VzdFN0cmlkZShtaW5vclJhbmspOwogICAgYm9vbCB1c2VDb21t
b25TdHJpZGUgPSBpdGVyLmlzU3RyaWRlKG1pbm9yUmFuayxjb21tb25TdHJpZGUpCiAgICAgICAg
JiYgZXhwci5pc1N0cmlkZShtaW5vclJhbmssY29tbW9uU3RyaWRlKTsKCgoKCgogICAgaW50IG1h
eGkgPSBsZW5ndGgobWFqb3JSYW5rKTsKICAgIGludCBtYXhqID0gbGVuZ3RoKG1pbm9yUmFuayk7
CgogICAgaW50IGJpLCBiajsKICAgIGZvciAoYmk9MDsgYmkgPCBtYXhpOyBiaSArPSBibG9ja1Np
emUpCiAgICB7CiAgICAgICAgaW50IG5pID0gYmkgKyBibG9ja1NpemU7CiAgICAgICAgaWYgKG5p
ID4gbWF4aSkKICAgICAgICAgICAgbmkgPSBtYXhpOwoKICAgICAgICBmb3IgKGJqPTA7IGJqIDwg
bWF4ajsgYmogKz0gYmxvY2tTaXplKQogICAgICAgIHsKICAgICAgICAgICAgaW50IG5qID0gYmog
KyBibG9ja1NpemU7CiAgICAgICAgICAgIGlmIChuaiA+IG1heGopCiAgICAgICAgICAgICAgICBu
aiA9IG1heGo7CgogICAgICAgICAgICAgCiAgICAgICAgICAgIGl0ZXIucG9wKDApOwogICAgICAg
ICAgICBleHByLnBvcCgwKTsKCiAgICAgICAgICAgICAKICAgICAgICAgICAgaXRlci5sb2FkU3Ry
aWRlKG1ham9yUmFuayk7CiAgICAgICAgICAgIGl0ZXIuYWR2YW5jZShiaSk7CiAgICAgICAgICAg
IGl0ZXIubG9hZFN0cmlkZShtaW5vclJhbmspOwogICAgICAgICAgICBpdGVyLmFkdmFuY2UoYmop
OwoKICAgICAgICAgICAgZXhwci5sb2FkU3RyaWRlKG1ham9yUmFuayk7CiAgICAgICAgICAgIGV4
cHIuYWR2YW5jZShiaSk7CiAgICAgICAgICAgIGV4cHIubG9hZFN0cmlkZShtaW5vclJhbmspOwog
ICAgICAgICAgICBleHByLmFkdmFuY2UoYmopOwoKICAgICAgICAgICAgIAogICAgICAgICAgICBm
b3IgKGludCBpPWJpOyBpIDwgbmk7ICsraSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgaXRlci5wdXNoKDEpOwogICAgICAgICAgICAgICAgZXhwci5wdXNo
KDEpOwoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGl0ZXIubG9hZFN0cmlkZSht
aW5vclJhbmspOwogICAgICAgICAgICAgICAgZXhwci5sb2FkU3RyaWRlKG1pbm9yUmFuayk7Cgog
ICAgICAgICAgICAgICAgaWYgKHVzZVVuaXRTdHJpZGUpCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18gIGRhdGEgPSBjb25zdF9jYXN0
PFRfbnVtdHlwZSo+CiAgICAgICAgICAgICAgICAgICAgICAgIChpdGVyLmRhdGEoKSk7CgogICAg
ICAgICAgICAgICAgICAgIGludCB1Ym91bmQgPSAobmotYmopOwogICAgICAgICAgICAgICAgICAg
IGZvciAoaW50IGo9MDsgaiA8IHVib3VuZDsgKytqKQogICAgICAgICAgICAgICAgICAgICAgICBU
X3VwZGF0ZTo6dXBkYXRlKGRhdGFbal0sIGV4cHIuZmFzdFJlYWQoaikpOwogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKHVzZUNvbW1vblN0cmlkZSkKICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnQgdWJvdW5kID0gKG5qLWJqKSAqIGNvbW1v
blN0cmlkZTsKICAgICAgICAgICAgICAgICAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgZGF0
YSA9IGNvbnN0X2Nhc3Q8VF9udW10eXBlKj4KICAgICAgICAgICAgICAgICAgICAgICAgKGl0ZXIu
ZGF0YSgpKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqIDwgdWJvdW5kOyBq
ICs9IGNvbW1vblN0cmlkZSkKICAgICAgICAgICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0
ZShkYXRhW2pdLCBleHByLmZhc3RSZWFkKGopKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPWJqOyBqIDwgbmo7
ICsraikKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgVF91cGRhdGU6OnVwZGF0ZSgqY29uc3RfY2FzdDxUX251bXR5
cGUqPihpdGVyLmRhdGEoKSksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV4cHIpOwog
ICAgICAgICAgICAgICAgICAgICAgICBpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgZXhwci5hZHZhbmNlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
IGl0ZXIucG9wKDEpOwogICAgICAgICAgICAgICAgaXRlci5sb2FkU3RyaWRlKG1ham9yUmFuayk7
CiAgICAgICAgICAgICAgICBpdGVyLmFkdmFuY2UoMSk7CgogICAgICAgICAgICAgICAgZXhwci5w
b3AoMSk7CiAgICAgICAgICAgICAgICBleHByLmxvYWRTdHJpZGUobWFqb3JSYW5rKTsKICAgICAg
ICAgICAgICAgIGV4cHIuYWR2YW5jZSgxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0K
CiAgICByZXR1cm4gKnRoaXM7Cn0KCgoKfSAKCgoKIyAyNDczICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9k
ZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvb3BzLmNjIiAxCgojZGVmaW5lIEJaX0FSUkFZT1BT
X0NDCgoKCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCnRlbXBsYXRlPGNsYXNzIFRf
bnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgQXJy
YXk8VF9udW10eXBlLE5fcmFuaz46OmluaXRpYWxpemUoCiAgICBUX251bXR5cGUgeCkKewogICAg
KCp0aGlzKSA9IF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwckNvbnN0YW50PFRfbnVtdHlwZT4g
Pih4KTsKICAgIHJldHVybiAqdGhpczsKfQoKCgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGlu
dCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFRfZXhwcj4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSxO
X3Jhbms+JgpBcnJheTxUX251bXR5cGUsTl9yYW5rPjo6b3BlcmF0b3I9KGNvbnN0IEVUQmFzZTxU
X2V4cHI+JiBleHByKQp7CiAgICBldmFsdWF0ZShzdGF0aWNfY2FzdDxjb25zdCBUX2V4cHImPihl
eHByKSwgCiAgICAgICAgX2J6X3VwZGF0ZTxUX251bXR5cGUsIHR5cGVuYW1lICBUX2V4cHI6OlRf
bnVtdHlwZT4oKSk7CiAgICByZXR1cm4gKnRoaXM7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZSwgaW50IE5fcmFuaz4KaW5saW5lIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYKQXJyYXk8VF9u
dW10eXBlLCBOX3Jhbms+OjpvcGVyYXRvcj0oY29uc3QgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4m
IHgpCnsKICAgICgqdGhpcykgPSBfYnpfQXJyYXlFeHByPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVt
dHlwZSwgTl9yYW5rPiA+CiAgICAgICAgKHguYmVnaW5GYXN0KCkpOwogICAgcmV0dXJuICp0aGlz
Owp9CgojZGVmaW5lIEJaX0FSUkFZX1VQREFURShvcCxuYW1lKSB0ZW1wbGF0ZTxjbGFzcyBUX251
bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10eXBlLE5fcmFuaz46Om9wZXJhdG9yIG9wKGNvbnN0IFQm
IGV4cHIpIHsgZXZhbHVhdGUoX2J6X3R5cGVuYW1lIGFzRXhwcjxUPjo6VF9leHByKGV4cHIpLCBu
YW1lPFRfbnVtdHlwZSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGU+
KCkpOyByZXR1cm4gKnRoaXM7IH0KIyA1NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L2FycmF5L29wcy5jYyIKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBB
cnJheTxUX251bXR5cGUsTl9yYW5rPjo6b3BlcmF0b3IgICs9IChjb25zdCBUJiBleHByKSB7IGV2
YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHByKSwgICBfYnpfcGx1c191cGRh
dGUgPFRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGU+KCkp
OyByZXR1cm4gKnRoaXM7IH0gCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4g
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBBcnJheTxU
X251bXR5cGUsTl9yYW5rPjo6b3BlcmF0b3IgIC09IChjb25zdCBUJiBleHByKSB7IGV2YWx1YXRl
KHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHByKSwgICBfYnpfbWludXNfdXBkYXRlIDxU
X251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcjo6VF9udW10eXBlPigpKTsgcmV0
dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IHRlbXBs
YXRlPGNsYXNzIFQ+IGlubGluZSBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz46Om9wZXJhdG9yICAqPSAoY29uc3QgVCYgZXhwcikgeyBldmFsdWF0ZSh0eXBl
bmFtZSAgYXNFeHByPFQ+OjpUX2V4cHIoZXhwciksICAgX2J6X211bHRpcGx5X3VwZGF0ZSA8VF9u
dW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+OjpUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVy
biAqdGhpczsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+OjpvcGVyYXRvciAgLz0gKGNvbnN0IFQmIGV4cHIpIHsgZXZhbHVhdGUodHlwZW5h
bWUgIGFzRXhwcjxUPjo6VF9leHByKGV4cHIpLCAgIF9iel9kaXZpZGVfdXBkYXRlIDxUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcjo6VF9udW10eXBlPigpKTsgcmV0dXJuICp0
aGlzOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10eXBlLE5f
cmFuaz46Om9wZXJhdG9yICAlPSAoY29uc3QgVCYgZXhwcikgeyBldmFsdWF0ZSh0eXBlbmFtZSAg
YXNFeHByPFQ+OjpUX2V4cHIoZXhwciksICAgX2J6X21vZF91cGRhdGUgPFRfbnVtdHlwZSwgdHlw
ZW5hbWUgIGFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGU+KCkpOyByZXR1cm4gKnRoaXM7IH0g
CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8Y2xhc3MgVD4g
aW5saW5lIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBBcnJheTxUX251bXR5cGUsTl9yYW5rPjo6
b3BlcmF0b3IgIF49IChjb25zdCBUJiBleHByKSB7IGV2YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8
VD46OlRfZXhwcihleHByKSwgICBfYnpfeG9yX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAg
YXNFeHByPFQ+OjpUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+OjpvcGVyYXRv
ciAgJj0gKGNvbnN0IFQmIGV4cHIpIHsgZXZhbHVhdGUodHlwZW5hbWUgIGFzRXhwcjxUPjo6VF9l
eHByKGV4cHIpLCAgIF9iel9iaXRhbmRfdXBkYXRlIDxUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4
cHI8VD46OlRfZXhwcjo6VF9udW10eXBlPigpKTsgcmV0dXJuICp0aGlzOyB9IAp0ZW1wbGF0ZTxj
bGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgQXJyYXk8VF9udW10eXBlLE5fcmFuaz46Om9wZXJhdG9yICB8
PSAoY29uc3QgVCYgZXhwcikgeyBldmFsdWF0ZSh0eXBlbmFtZSAgYXNFeHByPFQ+OjpUX2V4cHIo
ZXhwciksICAgX2J6X2JpdG9yX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+
OjpUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+OjpvcGVyYXRvciAgPDw9IChj
b25zdCBUJiBleHByKSB7IGV2YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHBy
KSwgICBfYnpfc2hpZnRsX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+OjpU
X2V4cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz4mIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+OjpvcGVyYXRvciAgPj49IChjb25z
dCBUJiBleHByKSB7IGV2YWx1YXRlKHR5cGVuYW1lICBhc0V4cHI8VD46OlRfZXhwcihleHByKSwg
ICBfYnpfc2hpZnRyX3VwZGF0ZSA8VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQ+OjpUX2V4
cHI6OlRfbnVtdHlwZT4oKSk7IHJldHVybiAqdGhpczsgfSAKCiMgMzUxICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvb3BzLmNjIgoKCn0gCgoKIyAyNDc0ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvaW8uY2MiIDEKCgoK
CgojZGVmaW5lIEJaX0FSUkFZSU9fQ0MKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxj
bGFzcyBUX251bXR5cGU+Cm9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYgb3MsIGNvbnN0IEFy
cmF5PFRfbnVtdHlwZSwxPiYgeCkKewogICAgb3MgPDwgeC5leHRlbnQoZmlyc3RSYW5rKSA8PCBl
bmRsOwogICAgb3MgPDwgIiBbICI7CiAgICBmb3IgKGludCBpPXgubGJvdW5kKGZpcnN0UmFuayk7
IGkgPD0geC51Ym91bmQoZmlyc3RSYW5rKTsgKytpKQogICAgewogICAgICAgIG9zIDw8IHNldHco
OSkgPDwgeChpKSA8PCAiICI7CiAgICAgICAgaWYgKCEoKGkrMS14Lmxib3VuZChmaXJzdFJhbmsp
KSU3KSkKICAgICAgICAgICAgb3MgPDwgZW5kbCA8PCAiICAiOwogICAgfQogICAgb3MgPDwgIiBd
IjsKICAgIHJldHVybiBvczsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgpvc3RyZWFtJiBv
cGVyYXRvcjw8KG9zdHJlYW0mIG9zLCBjb25zdCBBcnJheTxUX251bXR5cGUsMj4mIHgpCnsKICAg
IG9zIDw8IHgucm93cygpIDw8ICIgeCAiIDw8IHguY29sdW1ucygpIDw8IGVuZGw7CiAgICBvcyA8
PCAiWyAiOwogICAgZm9yIChpbnQgaT14Lmxib3VuZChmaXJzdFJhbmspOyBpIDw9IHgudWJvdW5k
KGZpcnN0UmFuayk7ICsraSkKICAgIHsKICAgICAgICBmb3IgKGludCBqPXgubGJvdW5kKHNlY29u
ZFJhbmspOyBqIDw9IHgudWJvdW5kKHNlY29uZFJhbmspOyArK2opCiAgICAgICAgewogICAgICAg
ICAgICBvcyA8PCBzZXR3KDkpIDw8IHgoaSxqKSA8PCAiICI7CiAgICAgICAgICAgIGlmICghKChq
KzEteC5sYm91bmQoc2Vjb25kUmFuaykpICUgNykpCiAgICAgICAgICAgICAgICBvcyA8PCBlbmRs
IDw8ICIgICI7CiAgICAgICAgfQoKICAgICAgICBpZiAoaSAhPSB4LnVib3VuZChmaXJzdFJhbmsp
KQogICAgICAgICAgIG9zIDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KCiAgICBvcyA8PCAiXSIgPDwg
ZW5kbDsKCiAgICByZXR1cm4gb3M7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4Kb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiBvcywgY29uc3QgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz4mIHgpCnsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5fcmFuazsgKytpKQogICAg
ewogICAgICAgIG9zIDw8IHguZXh0ZW50KGkpOwogICAgICAgIGlmIChpICE9IE5fcmFuayAtIDEp
CiAgICAgICAgICAgIG9zIDw8ICIgeCAiOwogICAgfQoKICAgIG9zIDw8IGVuZGwgPDwgIlsgIjsK
ICAgCiAgICB0eXBlZGVmIHR5cGVuYW1lICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OmNvbnN0
X2l0ZXJhdG9yIAogICAgICAgICBBcnJheUNvbnN0SXRlcmF0b3I7CiAgICBBcnJheUNvbnN0SXRl
cmF0b3IgaXRlciA9IHguYmVnaW4oKSwgZW5kID0geC5lbmQoKTsKICAgIGludCBwID0gMDsKCiAg
ICB3aGlsZSAoaXRlciAhPSBlbmQpIHsKICAgICAgICBvcyA8PCBzZXR3KDkpIDw8ICgqaXRlcikg
PDwgIiAiOwogICAgICAgICsraXRlcjsKCiAgICAgICAgIAogICAgICAgICsrcDsKICAgICAgICBp
ZiAoIShwICUgNykpCiAgICAgICAgICAgIG9zIDw8IGVuZGwgPDwgIiAgIjsKICAgIH0KCiAgICBv
cyA8PCAiXSIgPDwgZW5kbDsKICAgIHJldHVybiBvczsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3Jhbms+CmlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYgaXMsIEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiB4KQp7CiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+IGV4
dGVudDsKICAgIGNoYXIgc2VwOwogCiAgICAgCiAgICAgCgogICAgZm9yIChpbnQgaT0wOyBpIDwg
Tl9yYW5rOyArK2kpCiAgICB7CiAgICAgICAgaXMgPj4gZXh0ZW50KGkpOwoKICAgICAgICAgOwoK
ICAgICAgICBpZiAoaSAhPSBOX3JhbmsgLSAxKQogICAgICAgIHsKICAgICAgICAgICAgaXMgPj4g
c2VwOwogICAgICAgICAgICAgOwoKICAgICAgICB9CiAgICB9CgogICAgaXMgPj4gc2VwOwogICAg
IDsKCgogICAgeC5yZXNpemUoZXh0ZW50KTsKCiAgICB0eXBlZGVmIHR5cGVuYW1lICBBcnJheTxU
X251bXR5cGUsTl9yYW5rPjo6aXRlcmF0b3IKICAgICAgICAgQXJyYXlJdGVyYXRvcjsKICAgIEFy
cmF5SXRlcmF0b3IgaXRlciA9IHguYmVnaW4oKSwgZW5kID0geC5lbmQoKTsKCiAgICB3aGlsZSAo
aXRlciAhPSBlbmQpIHsKICAgICAgICAgOwoKICAgICAgICBpcyA+PiAoKml0ZXIpOwogICAgICAg
ICsraXRlcjsKICAgIH0KCiAgICBpcyA+PiBzZXA7CiAgICAgOwoKCiAgICByZXR1cm4gaXM7Cn0K
Cn0gCgoKIyAyNDc1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkuaCIgMgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6
L2FycmF5L2V0LmgiIDEKCiNkZWZpbmUgQlpfQVJSQVlfRVRfSAoKCgoKCgoKCgoKCgoKCgpuYW1l
c3BhY2UgIGJsaXR6ICB7IAoKIAoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfQVJSQVlfRVQobmFt
ZSwgYXBwbGljKSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3Mg
VF9vdGhlcj4gX2J6X2lubGluZV9ldCBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0
QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgX2J6X3R5cGVuYW1lIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCBhcHBsaWM8VF9udW10eXBlMSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxU
X290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiBuYW1lIChjb25zdCBBcnJheTxUX251bXR5
cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+
LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsIGFwcGxpYzxUX251bXR5cGUx
LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChk
MS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhl
cj4gX2J6X2lubGluZV9ldCBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlF
eHByPFRfZXhwcjE+LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsIGFwcGxp
YzxfYnpfdHlwZW5hbWUgVF9leHByMTo6VF9udW10eXBlLCBfYnpfdHlwZW5hbWUgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IG5hbWUoY29uc3QgX2J6X0FycmF5RXhwcjxU
X2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCBfYnpfdHlwZW5hbWUgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsIGFwcGxpYzxfYnpfdHlwZW5hbWUgVF9leHByMTo6VF9udW10eXBl
LCBfYnpfdHlwZW5hbWUgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQx
LGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IF9iel9pbmxpbmVfZXQgX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwciwg
X2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46OlRfZXhwciwgYXBwbGljPF9iel90eXBlbmFtZSBhc0V4
cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gbmFtZShjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29uc3QgVDImIGQy
KSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfdHlwZW5hbWUgYXNF
eHByPFQxPjo6VF9leHByLCBfYnpfdHlwZW5hbWUgYXNFeHByPFQyPjo6VF9leHByLCBhcHBsaWM8
X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCBfYnpfdHlwZW5hbWUg
YXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEm
PihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IF9iel9pbmxpbmVfZXQg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRf
ZXhwciwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46OlRfZXhwciwgYXBwbGljPF9iel90eXBlbmFt
ZSBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMj46
OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gbmFtZShjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxU
Mj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfdHlwZW5h
bWUgYXNFeHByPFQxPjo6VF9leHByLCBfYnpfdHlwZW5hbWUgYXNFeHByPFQyPjo6VF9leHByLCBh
cHBsaWM8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCBfYnpfdHlw
ZW5hbWUgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEsIHN0YXRpY19jYXN0
PGNvbnN0IFQyJj4oZDIpKTsgfSB0ZW1wbGF0ZTxpbnQgTjEsIGNsYXNzIFRfb3RoZXI+IF9iel9p
bmxpbmVfZXQgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxO
MT4sIF9iel90eXBlbmFtZSBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgYXBwbGljPGludCwgX2J6
X3R5cGVuYW1lIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiBuYW1lKElu
ZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4sIF9iel90eXBlbmFt
ZSBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgYXBwbGljPGludCwgX2J6X3R5cGVuYW1lIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCiMgMTA4ICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIKCiAKIAogCgp0
ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUx
LCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBBZGQgPFRf
bnVtdHlwZTEsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gIG9wZXJhdG9yKyAgKGNvbnN0IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25z
dCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwciwgICAgQWRkIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3Ro
ZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxh
dGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJh
eUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yKyAoY29u
c3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVy
biBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBUX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10
eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQWRkIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAgb3BlcmF0b3IrIChjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29uc3QgVDImIGQyKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQWRkIDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsg
fSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9y
KyAoY29uc3QgVDEmIGQxLCBjb25zdCBFVEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIEFkZCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4x
LCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxh
Y2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEFkZCA8
aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvcisgKEluZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyBy
ZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4s
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQWRkIDxpbnQsIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1w
bGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBO
X3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8
VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAgb3BlcmF0b3ItICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNv
bnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxG
YXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9
IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9w
ZXJhdG9yLSAoY29uc3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXIm
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHBy
PFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIFN1YnRyYWN0
IDwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNs
YXNzIFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhw
cjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yLSAoY29uc3QgRVRCYXNlPFQx
PiYgZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpU
X2V4cHIsICAgIFN1YnRyYWN0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGlj
X2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIFN1YnRyYWN0IDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3ItIChjb25zdCBUMSYgZDEsIGNvbnN0IEVU
QmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwg
ICAgU3VidHJhY3QgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nh
c3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBTdWJ0cmFjdCA8aW50LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci0gKEluZGV4
UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4sIHR5cGVuYW1lICBhc0V4
cHI8VF9vdGhlcj46OlRfZXhwciwgICAgU3VidHJhY3QgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIE11bHRpcGx5IDxUX251bXR5cGUx
LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVy
YXRvciogIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0
ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgIE11bHRpcGx5IDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8
Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgIE11bHRpcGx5IDwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IqIChj
b25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0
dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4s
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgTXVsdGlwbHkgPCB0eXBlbmFt
ZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIE11bHRpcGx5IDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IqIChjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29u
c3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAg
TXVsdGlwbHkgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25z
dCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgTXVsdGlwbHkgPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBvcGVyYXRvciogKGNvbnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQyPiYg
ZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNF
eHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBNdWx0aXBs
eSA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFz
RXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBU
MiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsICAgIE11bHRpcGx5IDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yKiAoSW5kZXhQbGFjZWhvbGRl
cjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9B
cnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgICBNdWx0aXBseSA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBl
MSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgRGl2aWRlIDxUX251bXR5cGUxLCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci8gIChjb25z
dCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0
dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVt
dHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIERp
dmlkZSA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEs
IGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5
RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBEaXZp
ZGUgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3Ro
ZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci8gKGNvbnN0IF9iel9BcnJheUV4
cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgICBEaXZpZGUgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQx
LGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpf
QXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4
cHI8VDI+OjpUX2V4cHIsICAgIERpdmlkZSA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
IG9wZXJhdG9yLyAoY29uc3QgRVRCYXNlPFQxPiYgZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4g
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIERpdmlkZSA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVt
cGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9w
PCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9l
eHByLCAgICBEaXZpZGUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvci8g
KGNvbnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBEaXZpZGUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChkMSwgc3RhdGljX2Nhc3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBO
MSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBs
YWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBEaXZp
ZGUgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4g
PiAgb3BlcmF0b3IvIChJbmRleFBsYWNlaG9sZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIp
IHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8
TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIERpdmlkZSA8aW50LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsg
fSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10
eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgTW9k
dWxvIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVt
dHlwZT4gPiA+ICBvcGVyYXRvciUgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBk
MSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIE1vZHVsbyA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIp
OyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgICBNb2R1bG8gPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvciUgKGNvbnN0IF9iel9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVy
JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhw
cjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBNb2R1bG8g
PCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIE1vZHVsbyA8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxU
Mj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJSAoY29uc3QgRVRCYXNlPFQxPiYg
ZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgIE1vZHVsbyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0
PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBNb2R1bG8gPCB0eXBlbmFtZSAgYXNF
eHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciUgKGNvbnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQy
PiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAg
YXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBNb2R1
bG8gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBh
c0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgICBNb2R1bG8gPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290
aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IlIChJbmRleFBsYWNlaG9sZGVy
PE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+
OjpUX2V4cHIsICAgIE1vZHVsbyA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwg
aW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
T3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4
cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQml0d2lzZVhvciA8VF9udW10eXBlMSwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3JeICAoY29u
c3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBC
aXR3aXNlWG9yIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9l
eHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpf
QXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAg
IEJpdHdpc2VYb3IgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcl4gKGNvbnN0IF9i
el9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlWG9yIDwgdHlwZW5hbWUgIFRf
ZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0
eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBCaXR3aXNlWG9yIDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHBy
OjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3JeIChjb25zdCBFVEJhc2U8VDE+JiBkMSwgY29uc3Qg
VDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0
d2lzZVhvciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0
IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBl
bmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBCaXR3aXNlWG9yIDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgb3BlcmF0b3JeIChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxUMj4m
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lz
ZVhvciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25z
dCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VYb3IgPGludCwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3JeIChJbmRleFBsYWNl
aG9sZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VYb3IgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290
aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNsYXNzIFRf
bnVtdHlwZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBl
bmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VBbmQgPFRfbnVtdHlwZTEs
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJh
dG9yJiAgKGNvbnN0IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25zdCBUX290aGVy
JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRl
cmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRf
ZXhwciwgICAgQml0d2lzZUFuZCA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRl
PGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByLCAgICBCaXR3aXNlQW5kIDwgdHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3Im
IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsg
cmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHBy
MT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQml0d2lzZUFuZCA8IHR5
cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRf
ZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lzZUFuZCA8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxU
Mj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiAoY29uc3QgRVRCYXNlPFQxPiYg
ZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgIEJpdHdpc2VBbmQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNf
Y2FzdDxjb25zdCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lzZUFuZCA8IHR5cGVu
YW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiAoY29uc3QgVDEmIGQxLCBjb25zdCBF
VEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIs
ICAgIEJpdHdpc2VBbmQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlQW5kIDxpbnQsIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiAo
SW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlQW5kIDxpbnQsIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0
ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3Jh
bmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBCaXR3aXNlT3IgPFRf
bnVtdHlwZTEsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gIG9wZXJhdG9yfCAgKGNvbnN0IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25z
dCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwciwgICAgQml0d2lzZU9yIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0g
dGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VPciA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9w
ZXJhdG9yfCAoY29uc3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNvbnN0IFRfb3RoZXIm
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHBy
PFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VP
ciA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgQml0d2lzZU9y
IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNF
eHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3J8IChjb25zdCBFVEJhc2U8
VDE+JiBkMSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwciwgICAgQml0d2lzZU9yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9u
dW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3Rh
dGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3Mg
VDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIEJpdHdpc2VPciA8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxU
Mj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yfCAoY29uc3QgVDEmIGQxLCBjb25z
dCBFVEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgIEJpdHdpc2VPciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0
aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVy
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEJpdHdpc2VPciA8aW50LCB0eXBl
bmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnwg
KEluZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRlcjxOMT4sIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgQml0d2lzZU9yIDxpbnQsIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAogCiAKdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwg
Tl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgR3JlYXRlciA8
VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAgb3BlcmF0b3I+ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNv
bnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxG
YXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByLCAgICBHcmVhdGVyIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0g
dGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgIEdyZWF0ZXIgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBl
LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVy
YXRvcj4gKGNvbnN0IF9iel9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBk
MikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxU
X2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBHcmVhdGVyIDwg
dHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNz
IFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBHcmVhdGVyIDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+IChjb25zdCBFVEJhc2U8VDE+JiBk
MSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
ciwgICAgR3JlYXRlciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0
PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICBHcmVhdGVyIDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHBy
OjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxU
Mj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgR3Jl
YXRlciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25z
dCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIEdyZWF0ZXIgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxU
X290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+IChJbmRleFBsYWNlaG9s
ZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3Ro
ZXI+OjpUX2V4cHIsICAgIEdyZWF0ZXIgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5
RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgIExlc3MgPFRfbnVtdHlwZTEsIHR5cGVuYW1lICBh
c0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPCAgKGNvbnN0
IEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikgeyByZXR1
cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10
eXBlMSwgTl9yYW5rMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgTGVz
cyA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcjEsIGNs
YXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhw
cjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBMZXNzIDwg
dHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I8IChjb25zdCBfYnpfQXJyYXlFeHByPFRf
ZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwciwgICAgTGVzcyA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9
IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwciwgICAgTGVzcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9y
PCAoY29uc3QgRVRCYXNlPFQxPiYgZDEsIGNvbnN0IFQyJiBkMikgeyByZXR1cm4gX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgIExlc3MgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNz
IFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgTGVz
cyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFz
RXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPCAoY29uc3QgVDEmIGQx
LCBjb25zdCBFVEJhc2U8VDI+JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHIsICAgIExlc3MgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhl
cj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwg
dHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICBMZXNzIDxpbnQsIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPCAoSW5k
ZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByLCAgICBMZXNzIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIEdyZWF0ZXJPckVxdWFsIDxUX251bXR5
cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvcj49ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRf
b3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJy
YXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgIEdyZWF0ZXJPckVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0g
dGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRf
b3RoZXI+OjpUX2V4cHIsICAgR3JlYXRlck9yRXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9u
dW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+
ICBvcGVyYXRvcj49IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9v
dGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJh
eUV4cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBHcmVh
dGVyT3JFcXVhbCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4
cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNs
YXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBH
cmVhdGVyT3JFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPj0g
KGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIEdyZWF0ZXJPckVxdWFsIDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIs
ICAgR3JlYXRlck9yRXF1YWwgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRv
cj49IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBHcmVhdGVyT3JFcXVhbCA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVt
cGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHIsICAgR3JlYXRlck9yRXF1YWwgPGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I+PSAoSW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEs
IGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJP
cDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHBy
LCAgIEdyZWF0ZXJPckVxdWFsIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBp
bnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJP
cDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIExlc3NPckVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcjw9ICAoY29u
c3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExl
c3NPckVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9l
eHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxfYnpf
QXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAg
TGVzc09yRXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcjw9IChjb25zdCBf
YnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBMZXNzT3JFcXVhbCA8IHR5cGVuYW1lICBU
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9u
dW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwg
dHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMZXNzT3JFcXVhbCA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
cjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yPD0gKGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25z
dCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFt
ZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIExl
c3NPckVxdWFsIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBl
bmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29u
c3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5
cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgTGVzc09yRXF1YWwgPCB0eXBlbmFtZSAgYXNF
eHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcjw9IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxU
Mj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMZXNz
T3JFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5h
bWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxj
b25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgTGVzc09yRXF1YWwgPGludCwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3I8PSAoSW5kZXhQ
bGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIExlc3NPckVxdWFsIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8
VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwg
dHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIEVxdWFsIDxUX251bXR5cGUxLCB0
eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRv
cj09ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRfb3RoZXIm
IGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVy
YXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9l
eHByLCAgIEVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7IH0gdGVtcGxhdGU8Y2xhc3Mg
VF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxf
YnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIs
ICAgRXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcj09IChjb25zdCBfYnpf
QXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVuYW1l
ICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBFcXVhbCA8IHR5cGVuYW1lICBUX2V4cHIxOjpU
X251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwciwgICBFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gIG9wZXJhdG9yPT0gKGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0
dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIEVxdWFsIDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpU
X2V4cHIsICAgRXF1YWwgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcj09
IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5h
bWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKGQxLCBzdGF0aWNfY2FzdDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4x
LCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxh
Y2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgRXF1YWwg
PGludCwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAg
b3BlcmF0b3I9PSAoSW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4x
PiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIEVxdWFsIDxpbnQsIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0
ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUx
LCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIE5vdEVxdWFs
IDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+ICBvcGVyYXRvciE9ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEs
IGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJP
cDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIE5vdEVxdWFsIDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMS5iZWdpbkZhc3QoKSxkMik7
IH0gdGVtcGxhdGU8Y2xhc3MgVF9leHByMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJPcDxfYnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsICAgTm90RXF1YWwgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvciE9IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4
cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBOb3RFcXVh
bCA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBOb3RFcXVhbCA8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhw
cjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yIT0gKGNvbnN0IEVUQmFzZTxU
MT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByLCAgIE5vdEVxdWFsIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGlj
X2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpU
X2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgTm90RXF1YWwgPCB0eXBlbmFt
ZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpU
X2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciE9IChjb25zdCBUMSYgZDEsIGNvbnN0IEVU
QmFzZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwg
ICBOb3RFcXVhbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlw
ZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLCBzdGF0aWNfY2Fz
dDxjb25zdCBUMiY+KGQyKSk7IH0gdGVtcGxhdGU8aW50IE4xLCBjbGFzcyBUX290aGVyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFt
ZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgTm90RXF1YWwgPGludCwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3IhPSAoSW5kZXhQ
bGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByLCAgIE5vdEVxdWFsIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlw
ZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPFRfbnVtdHlwZTEs
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJh
dG9yJiYgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0
ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgTG9naWNhbEFuZCA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBsYXRl
PGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6
VF9leHByLCAgIExvZ2ljYWxBbmQgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBl
bmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciYm
IChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsg
cmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHBy
MT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICBMb2dpY2FsQW5kIDwgdHlw
ZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9l
eHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQy
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6
VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPCB0eXBl
bmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvciYmIChjb25zdCBFVEJhc2U8VDE+JiBk
MSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
ciwgICBMb2dpY2FsQW5kIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
LCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nh
c3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIsICAgTG9naWNhbEFuZCA8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRf
ZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yJiYgKGNvbnN0IFQxJiBkMSwgY29uc3QgRVRC
YXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBl
bmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAg
IExvZ2ljYWxBbmQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nh
c3Q8Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5h
bWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPGludCwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgb3BlcmF0b3ImJiAoSW5k
ZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUgIGFz
RXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxBbmQgPGludCwgdHlwZW5hbWUgIGFzRXhw
cjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihkMSxkMik7IH0gCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZTEsIGludCBOX3JhbmsxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+
LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgTG9naWNhbE9yIDxUX251bXR5
cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBv
cGVyYXRvcnx8ICAoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3JhbmsxPiYgZDEsIGNvbnN0IFRf
b3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJy
YXlJdGVyYXRvcjxUX251bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgIExvZ2ljYWxPciA8VF9udW10eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290
aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoZDEuYmVnaW5GYXN0KCksZDIpOyB9IHRlbXBs
YXRlPGNsYXNzIFRfZXhwcjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJy
YXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVy
Pjo6VF9leHByLCAgIExvZ2ljYWxPciA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9y
fHwgKGNvbnN0IF9iel9BcnJheUV4cHI8VF9leHByMT4mIGQxLCBjb25zdCBUX290aGVyJiBkMikg
eyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8X2J6X0FycmF5RXhwcjxUX2V4
cHIxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxPciA8IHR5
cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRf
ZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBU
Mj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMb2dpY2FsT3IgPCB0eXBl
bmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnx8IChjb25zdCBFVEJhc2U8VDE+JiBk
MSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhw
ciwgICBMb2dpY2FsT3IgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUs
IHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2Fz
dDxjb25zdCBUMSY+KGQxKSwgZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4gICBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBMb2dpY2FsT3IgPCB0eXBlbmFtZSAg
YXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnx8IChjb25zdCBUMSYgZDEsIGNvbnN0IEVUQmFz
ZTxUMj4mIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICBM
b2dpY2FsT3IgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsIHR5cGVu
YW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChkMSwgc3RhdGljX2Nhc3Q8
Y29uc3QgVDImPihkMikpOyB9IHRlbXBsYXRlPGludCBOMSwgY2xhc3MgVF9vdGhlcj4gICBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwgdHlwZW5hbWUg
IGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgIExvZ2ljYWxPciA8aW50LCB0eXBlbmFtZSAgYXNF
eHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcnx8IChJbmRleFBs
YWNlaG9sZGVyPE4xPiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPEluZGV4UGxhY2Vob2xkZXI8TjE+LCB0eXBlbmFtZSAgYXNFeHBy
PFRfb3RoZXI+OjpUX2V4cHIsICAgTG9naWNhbE9yIDxpbnQsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IAoKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlMSwgaW50IE5fcmFuazEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByT3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlMSwgTl9yYW5rMT4sIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgIF9iel9hdGFuMiA8VF9udW10
eXBlMSwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAg
YXRhbjIgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+JiBkMSwgY29uc3QgVF9vdGhl
ciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPEZhc3RBcnJheUl0
ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpU
X2V4cHIsICAgICAgICBfYnpfYXRhbjIgPFRfbnVtdHlwZTEsIHR5cGVuYW1lICBhc0V4cHI8VF9v
dGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLmJlZ2luRmFzdCgpLGQyKTsgfSB0ZW1w
bGF0ZTxjbGFzcyBUX2V4cHIxLCBjbGFzcyBUX290aGVyPiAgIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwciwgICAgICAgIF9iel9hdGFuMiA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGF0
YW4yIChjb25zdCBfYnpfQXJyYXlFeHByPFRfZXhwcjE+JiBkMSwgY29uc3QgVF9vdGhlciYgZDIp
IHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9l
eHByMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgIF9iel9hdGFu
MiA8IHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhl
cj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIpOyB9IHRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgICAgICAgIF9iel9h
dGFuMiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwgdHlwZW5hbWUg
IGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGF0YW4yIChjb25zdCBFVEJhc2U8
VDE+JiBkMSwgY29uc3QgVDImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgdHlwZW5hbWUgIGFzRXhwcjxUMj46
OlRfZXhwciwgICAgICAgIF9iel9hdGFuMiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZSwgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
KHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpLCBkMik7IH0gdGVtcGxhdGU8Y2xhc3MgVDEsIGNs
YXNzIFQyPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICAgICAgX2J6X2F0
YW4yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAg
YXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgYXRhbjIgKGNvbnN0IFQxJiBkMSwg
Y29uc3QgRVRCYXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
ck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6
VF9leHByLCAgICAgICAgX2J6X2F0YW4yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6
VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAo
ZDEsIHN0YXRpY19jYXN0PGNvbnN0IFQyJj4oZDIpKTsgfSB0ZW1wbGF0ZTxpbnQgTjEsIGNsYXNz
IFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhvbGRl
cjxOMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgIF9iel9hdGFu
MiA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+
ICBhdGFuMiAoSW5kZXhQbGFjZWhvbGRlcjxOMT4gZDEsIGNvbnN0IFRfb3RoZXImIGQyKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxJbmRleFBsYWNlaG9sZGVyPE4xPiwg
dHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICAgICAgX2J6X2F0YW4yIDxpbnQs
IHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4oZDEsZDIp
OyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rMSwgY2xhc3MgVF9vdGhl
cj4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUxLCBOX3JhbmsxPiwgdHlwZW5hbWUgIGFzRXhwcjxUX290aGVyPjo6VF9leHByLCAgICAg
ICAgICBfYnpfcG93IDxUX251bXR5cGUxLCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+ICBwb3cgIChjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuazE+
JiBkMSwgY29uc3QgVF9vdGhlciYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5
RXhwck9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZTEsIE5fcmFuazE+LCB0eXBlbmFtZSAg
YXNFeHByPFRfb3RoZXI+OjpUX2V4cHIsICAgICAgICAgIF9iel9wb3cgPFRfbnVtdHlwZTEsIHR5
cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKGQxLmJlZ2lu
RmFzdCgpLGQyKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIxLCBjbGFzcyBUX290aGVyPiAgIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwck9wPF9iel9BcnJheUV4cHI8VF9leHByMT4sIHR5cGVu
YW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgICAgX2J6X3BvdyA8IHR5cGVuYW1l
ICBUX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwcjo6
VF9udW10eXBlPiA+ID4gIHBvdyAoY29uc3QgX2J6X0FycmF5RXhwcjxUX2V4cHIxPiYgZDEsIGNv
bnN0IFRfb3RoZXImIGQyKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJPcDxf
YnpfQXJyYXlFeHByPFRfZXhwcjE+LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHIs
ICAgICAgICAgIF9iel9wb3cgPCB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFt
ZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+KGQxLGQyKTsgfSB0ZW1w
bGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4
cHIsICAgICAgICAgIF9iel9wb3cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251
bXR5cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBwb3cg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxLCBjb25zdCBUMiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4
cHI8X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByLCAgICAgICAgICBfYnpfcG93IDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSksIGQyKTsgfSB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHIs
ICAgICAgICAgIF9iel9wb3cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGUsIHR5cGVuYW1lICBhc0V4cHI8VDI+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBwb3cgKGNv
bnN0IFQxJiBkMSwgY29uc3QgRVRCYXNlPFQyPiYgZDIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCB0eXBlbmFtZSAg
YXNFeHByPFQyPjo6VF9leHByLCAgICAgICAgICBfYnpfcG93IDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwcjo6VF9udW10eXBlLCB0eXBlbmFtZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPiAoZDEsIHN0YXRpY19jYXN0PGNvbnN0IFQyJj4oZDIpKTsgfSB0ZW1wbGF0ZTxp
bnQgTjEsIGNsYXNzIFRfb3RoZXI+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5k
ZXhQbGFjZWhvbGRlcjxOMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAg
ICAgICAgX2J6X3BvdyA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBwb3cgKEluZGV4UGxhY2Vob2xkZXI8TjE+IGQxLCBjb25zdCBUX290aGVy
JiBkMikgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8SW5kZXhQbGFjZWhv
bGRlcjxOMT4sIHR5cGVuYW1lICBhc0V4cHI8VF9vdGhlcj46OlRfZXhwciwgICAgICAgICAgX2J6
X3BvdyA8aW50LCB0eXBlbmFtZSAgYXNFeHByPFRfb3RoZXI+OjpUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+KGQxLGQyKTsgfSAKCgoKCgojIDE0OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L2FycmF5L2V0LmgiCgoKIAoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfQVJSQVlfRVRf
VU9QKG5hbWUsIGZ1bmN0b3IpIHRlbXBsYXRlPGNsYXNzIFQxPiBfYnpfaW5saW5lX2V0IF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IF9iel90eXBlbmFtZSBhc0V4cHI8VDE+OjpU
X2V4cHIsIGZ1bmN0b3I8X2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gbmFtZShjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByVW5hcnlPcDwgX2J6X3R5cGVuYW1lIGFzRXhwcjxUMT46OlRfZXhwciwgZnVu
Y3RvcjxfYnpfdHlwZW5hbWUgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3Rh
dGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9CiMgMTY3ICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIKCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgX2J6X25lZ2F0ZSA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+ICBvcGVyYXRvci0gKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgIF9iel9uZWdhdGUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAoKIAoKdGVtcGxhdGU8Y2xhc3Mg
VDE+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhw
cjxUMT46OlRfZXhwciwgICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
OjpUX251bXR5cGU+ID4gPiAgYWJzIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfYWNvcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBhY29zIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2Fjb3MgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfYXNpbiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBhc2luIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2FzaW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfYXRhbiA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBhdGFuIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2F0YW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfY2VpbCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBjZWlsIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2NlaWwgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICBfYnpfY2V4cCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBjZXhwIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgX2J6X2NleHAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICAgX2J6X2NvcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBjb3MgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLCAgICAgX2J6X2NvcyA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQx
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsICAgIF9iel9jb3NoIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6
VF9udW10eXBlPiA+ID4gIGNvc2ggKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLCAgICBfYnpfY29zaCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQx
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsICAgX2J6X2NzcXJ0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6
VF9udW10eXBlPiA+ID4gIGNzcXJ0IChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICBfYnpfY3NxcnQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5
cGU+ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
MT4gICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHBy
PFQxPjo6VF9leHByLCAgICAgX2J6X2V4cCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6
OlRfbnVtdHlwZT4gPiA+ICBleHAgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLCAgICAgX2J6X2V4cCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQx
PiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHIsICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgZmFicyAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9hYnMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgIF9iel9mbG9vciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBmbG9vciAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgX2J6X2Zsb29yIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgIF9iel9sb2cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgbG9nIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgICAgIF9iel9sb2cgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgIF9iel9sb2cxMCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBsb2cxMCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgX2J6X2xvZzEwIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzIgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93MiAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3cyIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzMgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93MyAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3czIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzUgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NSAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c1IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzYgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NiAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c2IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzcgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93NyAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c3IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgX2J6X3BvdzggPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgcG93OCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsICAgIF9iel9wb3c4IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBl
PiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+
ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxU
MT46OlRfZXhwciwgICAgIF9iel9zaW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpU
X251bXR5cGU+ID4gPiAgc2luIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgICAgIF9iel9zaW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgICBfYnpfc2luaCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBzaW5oIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhw
ciwgICAgX2J6X3NpbmggPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAoc3RhdGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4g
ICBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQx
Pjo6VF9leHByLCAgICAgX2J6X3NxciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRf
bnVtdHlwZT4gPiA+ICBzcXIgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgICAgX2J6X3NxciA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAg
IF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHIsICAgIF9iel9zcXJ0IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9u
dW10eXBlPiA+ID4gIHNxcnQgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgICBfYnpfc3FydCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAg
IF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHIsICAgICBfYnpfdGFuIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9u
dW10eXBlPiA+ID4gIHRhbiAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIs
ICAgICBfYnpfdGFuIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46
OlRfZXhwciwgICAgX2J6X3RhbmggPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251
bXR5cGU+ID4gPiAgdGFuaCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJh
eUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIs
ICAgIF9iel90YW5oIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+
ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKCgoKCgoKCgoKCgoKCgoKCgogCnRl
bXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hY29zaCA8IHR5cGVuYW1lICBhc0V4
cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBhY29zaCAoY29uc3QgRVRCYXNlPFQxPiYg
ZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hY29zaCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+
OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0g
CnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hc2luaCA8IHR5cGVuYW1lICBh
c0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBhc2luaCAoY29uc3QgRVRCYXNlPFQx
PiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVu
YW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hc2luaCA8IHR5cGVuYW1lICBhc0V4cHI8
VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7
IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hdGFuaCA8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBhdGFuaCAoY29uc3QgRVRCYXNl
PFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5
cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgIF9iel9hdGFuaCA8IHR5cGVuYW1lICBhc0V4
cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBUMSY+KGQx
KSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVu
YXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICBfYnpfY2JydCA8IHR5cGVu
YW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBjYnJ0IChjb25zdCBFVEJh
c2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgIF9iel9jYnJ0IDwgdHlwZW5hbWUgIGFz
RXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQxJj4o
ZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHBy
VW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgX2J6X2V4cG0xIDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGV4cG0xIChjb25zdCBF
VEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlP
cDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgX2J6X2V4cG0xIDwgdHlwZW5hbWUg
IGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0IFQx
Jj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlF
eHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgICBfYnpfZXJmIDwg
dHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGVyZiAoY29uc3Qg
RVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5
T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICAgX2J6X2VyZiA8IHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChzdGF0aWNfY2FzdDxjb25zdCBU
MSY+KGQxKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFQxPiAgIF9iel9BcnJheUV4cHI8X2J6X0FycmF5
RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICBfYnpfZXJmYyA8
IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBlcmZjIChjb25z
dCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5h
cnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAgIF9iel9lcmZjIDwgdHlwZW5h
bWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNvbnN0
IFQxJj4oZDEpKTsgfSAKIAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9iel9B
cnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBfYnpfaXNu
YW4gPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgaXNuYW4g
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBfYnpfaXNuYW4gPCB0
eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8
Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBf
YnpfajAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgajAg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBfYnpfajAgPCB0
eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8
Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBf
YnpfajEgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgajEg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgICBfYnpfajEgPCB0
eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGljX2Nhc3Q8
Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgIF9iel9s
Z2FtbWEgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAgbGdh
bW1hIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhwcjxfYnpfQXJy
YXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICBfYnpfbGdhbW1h
IDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19j
YXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAg
IF9iel9sb2diIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
IGxvZ2IgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9B
cnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICAgX2J6X2xv
Z2IgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3RhdGlj
X2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAg
ICBfYnpfbG9nMXAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4g
PiAgbG9nMXAgKGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBfYnpf
bG9nMXAgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+ID4gPiAoc3Rh
dGljX2Nhc3Q8Y29uc3QgVDEmPihkMSkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJy
YXlFeHByPF9iel9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHBy
LCAgICAgX2J6X3JpbnQgPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGU+
ID4gPiAgcmludCAoY29uc3QgRVRCYXNlPFQxPiYgZDEpIHsgcmV0dXJuIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwclVuYXJ5T3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsICAgICBf
YnpfcmludCA8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IChz
dGF0aWNfY2FzdDxjb25zdCBUMSY+KGQxKSk7IH0gCiAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgICAgX2J6X3kwIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlPiA+ID4gIHkwIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAg
ICAgX2J6X3kwIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
KHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVDE+ICAgX2J6
X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRf
ZXhwciwgICAgICAgX2J6X3kxIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10
eXBlPiA+ID4gIHkxIChjb25zdCBFVEJhc2U8VDE+JiBkMSkgeyByZXR1cm4gX2J6X0FycmF5RXhw
cjxfYnpfQXJyYXlFeHByVW5hcnlPcDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwciwgICAg
ICAgX2J6X3kxIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4g
KHN0YXRpY19jYXN0PGNvbnN0IFQxJj4oZDEpKTsgfSAKCgoKIAoKCgojZGVmaW5lIEJaX0RFQ0xB
UkVfRlVOQ1RJT04obmFtZSkgdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiBzdHJ1Y3QgbmFtZSAj
IyBfaW1wbCB7IHR5cGVkZWYgUF9udW10eXBlIFRfbnVtdHlwZTsgdGVtcGxhdGU8Y2xhc3MgVD4g
c3RhdGljIGlubGluZSBUIGFwcGx5KFQgeCkgeyByZXR1cm4gbmFtZSh4KTsgfSB0ZW1wbGF0ZTxj
bGFzcyBUMT4gc3RhdGljIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50
Rm9ybWF0JiBmb3JtYXQsIGNvbnN0IFQxJiBhKSB7IHN0ciArPSAjbmFtZTsgc3RyICs9ICIoIjsg
YS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9OyBCWl9ERUNMQVJFX0FS
UkFZX0VUX1VPUChuYW1lLCBuYW1lICMjIF9pbXBsKQojIDI2MiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2V0LmgiCgojZGVmaW5lIEJaX0RFQ0xBUkVfRlVO
Q1RJT05fUkVUKG5hbWUsIHJldHVybl90eXBlKSB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGU+IHN0
cnVjdCBuYW1lICMjIF9pbXBsIHsgdHlwZWRlZiByZXR1cm5fdHlwZSBUX251bXR5cGU7IHRlbXBs
YXRlPGNsYXNzIFQ+IHN0YXRpYyBpbmxpbmUgcmV0dXJuX3R5cGUgYXBwbHkoVCB4KSB7IHJldHVy
biBuYW1lKHgpOyB9IHRlbXBsYXRlPGNsYXNzIFQxPiBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChz
dHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIGEpIHsgc3Ry
ICs9ICNuYW1lOyBzdHIgKz0gIigiOyBhLnByZXR0eVByaW50KHN0cixmb3JtYXQpOyBzdHIgKz0g
IikiOyB9IH07IEJaX0RFQ0xBUkVfQVJSQVlfRVRfVU9QKG5hbWUsIG5hbWUgIyMgX2ltcGwpCiMg
MjgzICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIK
CgojZGVmaW5lIEJaX0RFQ0xBUkVfRlVOQ1RJT04yKG5hbWUpIHRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZTEsIGNsYXNzIFBfbnVtdHlwZTI+IHN0cnVjdCBuYW1lICMjIF9pbXBsIHsgdHlwZWRlZiBf
YnpfdHlwZW5hbWUgcHJvbW90ZV90cmFpdDxQX251bXR5cGUxLCBQX251bXR5cGUyPjo6VF9wcm9t
b3RlIFRfbnVtdHlwZTsgdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgaW5saW5l
IFRfbnVtdHlwZSBhcHBseShUMSB4LCBUMiB5KSB7IHJldHVybiBuYW1lKHgseSk7IH0gdGVtcGxh
dGU8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdGF0aWMgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0
ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1hdCwgY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKSB7
IHN0ciArPSAjbmFtZTsgc3RyICs9ICIoIjsgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsgc3Ry
ICs9ICIsIjsgYi5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsgc3RyICs9ICIpIjsgfSB9OyBCWl9E
RUNMQVJFX0FSUkFZX0VUKG5hbWUsIG5hbWUgIyMgX2ltcGwpCiMgMzA4ICIvdWZzL25ld21hbi91
c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvZXQuaCIKCiNkZWZpbmUgQlpfREVDTEFS
RV9GVU5DVElPTjJfUkVUKG5hbWUsIHJldHVybl90eXBlKSB0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGUxLCBjbGFzcyBQX251bXR5cGUyPiBzdHJ1Y3QgbmFtZSAjIyBfaW1wbCB7IHR5cGVkZWYgcmV0
dXJuX3R5cGUgVF9udW10eXBlOyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyBp
bmxpbmUgVF9udW10eXBlIGFwcGx5KFQxIHgsIFQyIHkpIHsgcmV0dXJuIG5hbWUoeCx5KTsgfSB0
ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0YXRpYyB2b2lkIHByZXR0eVByaW50KHN0cmlu
ZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUMSYgYSwgY29uc3QgVDIm
IGIpIHsgc3RyICs9ICNuYW1lOyBzdHIgKz0gIigiOyBhLnByZXR0eVByaW50KHN0cixmb3JtYXQp
OyBzdHIgKz0gIiwiOyBiLnByZXR0eVByaW50KHN0cixmb3JtYXQpOyBzdHIgKz0gIikiOyB9IH07
IEJaX0RFQ0xBUkVfQVJSQVlfRVQobmFtZSwgbmFtZSAjIyBfaW1wbCkKIyAzMzEgIi91ZnMvbmV3
bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9ldC5oIgoKfSAKCgojIDI0Nzgg
Ii91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgoKCgoK
CiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L21pc2Mu
Y2MiIDEKCiNkZWZpbmUgQlpfQVJSQVlNSVNDX0NDCgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAK
CiNkZWZpbmUgQlpfQVJSQVlfREVDTEFSRV9VT1AoZm4sIGZub2JqKSB0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJV
bmFyeU9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBmbm9iajxUX251bXR5
cGU+ID4gPiBmbihjb25zdCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYXJyYXkpIHsgcmV0dXJu
IF9iel9BcnJheUV4cHJVbmFyeU9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+
LCBmbm9iajxUX251bXR5cGU+ID4oYXJyYXkuYmVnaW5GYXN0KCkpOyB9IHRlbXBsYXRlPGNsYXNz
IFRfZXhwcj4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0Fy
cmF5RXhwcjxUX2V4cHI+LCBmbm9iajxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+ID4g
PiBmbihCWl9FVFBBUk0oX2J6X0FycmF5RXhwcjxUX2V4cHI+KSBleHByKSB7IHJldHVybiBfYnpf
QXJyYXlFeHByVW5hcnlPcDxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIGZub2JqPF9iel90eXBlbmFt
ZSBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHByKTsgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIyAzMCAiL3Vmcy9u
ZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L21pc2MuY2MiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIF9iel9B
cnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBl
LE5fcmFuaz4sICAgTG9naWNhbE5vdCA8VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yISAoY29uc3Qg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByVW5h
cnlPcDxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgICBMb2dpY2FsTm90IDxU
X251bXR5cGU+ID4oYXJyYXkuYmVnaW5GYXN0KCkpOyB9IHRlbXBsYXRlPGNsYXNzIFRfZXhwcj4g
aW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0FycmF5RXhwcjxU
X2V4cHI+LCAgIExvZ2ljYWxOb3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4gPiAg
b3BlcmF0b3IhIChjb25zdCAgX2J6X0FycmF5RXhwcjxUX2V4cHI+ICYgIGV4cHIpIHsgcmV0dXJu
IF9iel9BcnJheUV4cHJVbmFyeU9wPF9iel9BcnJheUV4cHI8VF9leHByPiwgICBMb2dpY2FsTm90
IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCAgIEJpdHdpc2VO
b3QgPFRfbnVtdHlwZT4gPiA+ICBvcGVyYXRvcn4gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0
b3I8VF9udW10eXBlLE5fcmFuaz4sICAgQml0d2lzZU5vdCA8VF9udW10eXBlPiA+KGFycmF5LmJl
Z2luRmFzdCgpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+IGlubGluZSBfYnpfQXJyYXlFeHBy
PF9iel9BcnJheUV4cHJVbmFyeU9wPF9iel9BcnJheUV4cHI8VF9leHByPiwgICBCaXR3aXNlTm90
IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG9wZXJhdG9yfiAoY29uc3QgIF9i
el9BcnJheUV4cHI8VF9leHByPiAmICBleHByKSB7IHJldHVybiBfYnpfQXJyYXlFeHByVW5hcnlP
cDxfYnpfQXJyYXlFeHByPFRfZXhwcj4sICAgQml0d2lzZU5vdCA8IHR5cGVuYW1lICBUX2V4cHI6
OlRfbnVtdHlwZT4gPihleHByKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rPiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByVW5hcnlPcDxGYXN0QXJyYXlJ
dGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgICBOZWdhdGUgPFRfbnVtdHlwZT4gPiA+ICBvcGVy
YXRvci0gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6
X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sICAg
TmVnYXRlIDxUX251bXR5cGU+ID4oYXJyYXkuYmVnaW5GYXN0KCkpOyB9IHRlbXBsYXRlPGNsYXNz
IFRfZXhwcj4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0Fy
cmF5RXhwcjxUX2V4cHI+LCAgIE5lZ2F0ZSA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4g
PiA+ICBvcGVyYXRvci0gKGNvbnN0ICBfYnpfQXJyYXlFeHByPFRfZXhwcj4gJiAgZXhwcikgeyBy
ZXR1cm4gX2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCAgIE5lZ2F0
ZSA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHByKTsgfSAKCiAKCgoKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2Nhc3Q+CmlubGluZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCl9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8RmFzdEFycmF5SXRlcmF0b3I8
VF9udW10eXBlLE5fcmFuaz4sICAgCiAgICBDYXN0PFRfbnVtdHlwZSwgVF9jYXN0PiA+ID4KY2Fz
dChjb25zdCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYXJyYXksIFRfY2FzdCkKeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgIHJldHVybiBfYnpfQXJyYXlFeHByVW5hcnlPcDxGYXN0QXJyYXlJdGVyYXRvcjxU
X251bXR5cGUsTl9yYW5rPiwgICAgICAKICAgICAgICBDYXN0PFRfbnVtdHlwZSxUX2Nhc3Q+ID4o
YXJyYXkuYmVnaW5GYXN0KCkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX2Nhc3Q+
CmlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCl9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclVuYXJ5T3A8X2J6X0Fy
cmF5RXhwcjxUX2V4cHI+LCAgICAgICAgICAgICAgCiAgICBDYXN0PCB0eXBlbmFtZSAgVF9leHBy
OjpUX251bXR5cGUsVF9jYXN0PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgIApjYXN0KGNv
bnN0ICBfYnpfQXJyYXlFeHByPFRfZXhwcj4gJiAgZXhwciwgVF9jYXN0KQp7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgcmV0dXJuIF9iel9BcnJheUV4cHJVbmFyeU9wPF9iel9BcnJheUV4cHI8VF9leHByPiwg
ICAgICAgICAgICAgICAgIAogICAgICAgIENhc3Q8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlw
ZSxUX2Nhc3Q+ID4oZXhwcik7ICAgICAgICAgICAgICAgICAKfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAKfSAKCgoKIyAyNDg0ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovYXJyYXkvcmVkdWNlLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCiNkZWZpbmUgQlpfQVJSQVlSRURVQ0VfSAoKCgoKCgogCiMgMSAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3JlZHVjZS5oIiAxCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfUkVEVUNFX0gKCgoKCgoKCgoKCgoKCm5h
bWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxjbGFzcyBQX3NvdXJjZXR5cGUsIGNsYXNzIFBf
cmVzdWx0dHlwZSA9IHR5cGVuYW1lICBOdW1lcmljVHlwZVRyYWl0czwgUF9zb3VyY2V0eXBlID46
OlRfc3VtdHlwZSA+CmNsYXNzIFJlZHVjZVN1bSB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfc291
cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVmIFBfcmVzdWx0dHlwZSBUX3Jlc3VsdHR5
cGU7CiAgICB0eXBlZGVmIFRfcmVzdWx0dHlwZSBUX251bXR5cGU7CgogICAgZW51bSB7IG5lZWRJ
bmRleCA9IDAsIGNhblByb3ZpZGVJbml0aWFsVmFsdWUgPSAxIH07CgogICAgUmVkdWNlU3VtKCkK
ICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZVN1bShUX3Jlc3VsdHR5cGUgaW5pdGlhbFZhbHVl
KQogICAgeyBzdW1fID0gaW5pdGlhbFZhbHVlOyB9CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291
cmNldHlwZSB4KQogICAgeyAKICAgICAgICBzdW1fICs9IHg7IAogICAgICAgIHJldHVybiB0cnVl
OwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQogICAgeyAK
ICAgICAgICBzdW1fICs9IHg7IAogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVz
dWx0dHlwZSByZXN1bHQoaW50KQogICAgeyByZXR1cm4gc3VtXzsgfQoKICAgIHZvaWQgcmVzZXQo
KQogICAgeyBzdW1fID0gemVybyhUX3Jlc3VsdHR5cGUoKSk7IH0KCiAgICB2b2lkIHJlc2V0KFRf
cmVzdWx0dHlwZSBpbml0aWFsVmFsdWUpCiAgICB7IHN1bV8gPSBpbml0aWFsVmFsdWU7IH0KIAog
ICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gInN1bSI7IH0KIApwcm90
ZWN0ZWQ6CiAgICBUX3Jlc3VsdHR5cGUgc3VtXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNl
dHlwZSwgY2xhc3MgUF9yZXN1bHR0eXBlID0gdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQ
X3NvdXJjZXR5cGUgPjo6VF9mbG9hdHR5cGUgPgpjbGFzcyBSZWR1Y2VNZWFuIHsKCnB1YmxpYzoK
ICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291cmNldHlwZTsKICAgIHR5cGVkZWYgUF9yZXN1
bHR0eXBlIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYgVF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsK
CiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMCwgY2FuUHJvdmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsK
CiAgICBSZWR1Y2VNZWFuKCkKICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZU1lYW4oVF9yZXN1
bHR0eXBlKQogICAgeyAKICAgICAgICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9CgogICAgYm9v
bCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgeyAKICAgICAgICBzdW1fICs9IHg7IAog
ICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUgeCwgaW50KQogICAgeyAKICAgICAgICBzdW1fICs9IHg7IAogICAgICAgIHJldHVybiB0cnVl
OwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50IGNvdW50KQogICAgeyByZXR1cm4g
c3VtXyAvIGNvdW50OyB9CgogICAgdm9pZCByZXNldCgpCiAgICB7IHN1bV8gPSB6ZXJvKFRfcmVz
dWx0dHlwZSgpKTsgfQoKICAgIHZvaWQgcmVzZXQoVF9yZXN1bHR0eXBlKQogICAgeyAKICAgICAg
ICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9CgogICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUo
KSAKICAgIHsgcmV0dXJuICJtZWFuIjsgfQoKcHJvdGVjdGVkOgogICAgVF9yZXN1bHR0eXBlIHN1
bV87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX3NvdXJjZXR5cGU+CmNsYXNzIFJlZHVjZU1pbiB7Cgpw
dWJsaWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVm
IFBfc291cmNldHlwZSBUX3Jlc3VsdHR5cGU7CiAgICB0eXBlZGVmIFRfcmVzdWx0dHlwZSBUX251
bXR5cGU7CgogICAgZW51bSB7IG5lZWRJbmRleCA9IDAsIGNhblByb3ZpZGVJbml0aWFsVmFsdWUg
PSAxIH07CgogICAgUmVkdWNlTWluKCkKICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZU1pbihU
X3Jlc3VsdHR5cGUgbWluKQogICAgewogICAgICAgIG1pbl8gPSBtaW47CiAgICB9CgogICAgYm9v
bCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgeyAKICAgICAgICBpZiAoeCA8IG1pbl8p
CiAgICAgICAgICAgIG1pbl8gPSB4OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJv
b2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQogICAgewogICAgICAgIGlmICh4IDwg
bWluXykKICAgICAgICAgICAgbWluXyA9IHg7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Cgog
ICAgVF9yZXN1bHR0eXBlIHJlc3VsdChpbnQpCiAgICB7IHJldHVybiBtaW5fOyB9CgogICAgdm9p
ZCByZXNldCgpCiAgICB7IG1pbl8gPSBodWdlKFBfc291cmNldHlwZSgpKTsgfQoKICAgIHZvaWQg
cmVzZXQoVF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsgbWluXyA9IGluaXRpYWxWYWx1
ZTsgfQoKICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lKCkKICAgIHsgcmV0dXJuICJtaW4iOyB9
Cgpwcm90ZWN0ZWQ6CiAgICBUX3Jlc3VsdHR5cGUgbWluXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBf
c291cmNldHlwZT4KY2xhc3MgUmVkdWNlTWF4IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3Vy
Y2V0eXBlIFRfc291cmNldHlwZTsKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfcmVzdWx0dHlw
ZTsKICAgIHR5cGVkZWYgVF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZElu
ZGV4ID0gMCwgY2FuUHJvdmlkZUluaXRpYWxWYWx1ZSA9IDEgfTsKCiAgICBSZWR1Y2VNYXgoKQog
ICAgeyByZXNldCgpOyB9CgogICAgUmVkdWNlTWF4KFRfcmVzdWx0dHlwZSBtYXgpCiAgICB7CiAg
ICAgICAgbWF4XyA9IG1heDsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBl
IHgpCiAgICB7CiAgICAgICAgaWYgKHggPiBtYXhfKQogICAgICAgICAgICBtYXhfID0geDsKICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBl
IHgsIGludCkKICAgIHsKICAgICAgICBpZiAoeCA+IG1heF8pCiAgICAgICAgICAgIG1heF8gPSB4
OwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50
KQogICAgeyByZXR1cm4gbWF4XzsgfQoKICAgIHZvaWQgcmVzZXQoKQogICAgeyBtYXhfID0gbmVn
aHVnZShQX3NvdXJjZXR5cGUoKSk7IH0KCiAgICB2b2lkIHJlc2V0KFRfcmVzdWx0dHlwZSBpbml0
aWFsVmFsdWUpCiAgICB7IG1heF8gPSBpbml0aWFsVmFsdWU7IH0KCiAgICBzdGF0aWMgY29uc3Qg
Y2hhciogbmFtZSgpCiAgICB7IHJldHVybiAibWF4IjsgfQoKcHJvdGVjdGVkOgogICAgVF9yZXN1
bHR0eXBlIG1heF87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX3NvdXJjZXR5cGU+CmNsYXNzIFJlZHVj
ZU1pbkluZGV4IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291cmNldHlw
ZTsKICAgIHR5cGVkZWYgaW50ICAgICAgICAgIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYgVF9y
ZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMSwgY2FuUHJvdmlk
ZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBSZWR1Y2VNaW5JbmRleCgpCiAgICB7IHJlc2V0KCk7
IH0KCiAgICBSZWR1Y2VNaW5JbmRleChUX3Jlc3VsdHR5cGUgbWluKQogICAgewogICAgICAgIHJl
c2V0KG1pbik7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAg
ewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0
b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50IGluZGV4KQogICAgewogICAgICAgIGlmICh4IDwgbWlu
XykKICAgICAgICB7CiAgICAgICAgICAgIG1pbl8gPSB4OwogICAgICAgICAgICBpbmRleF8gPSBp
bmRleDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgVF9yZXN1bHR0
eXBlIHJlc3VsdChpbnQpCiAgICB7IHJldHVybiBpbmRleF87IH0KCiAgICB2b2lkIHJlc2V0KCkK
ICAgIHsgCiAgICAgICAgbWluXyA9IGh1Z2UoVF9zb3VyY2V0eXBlKCkpOwogICAgICAgIGluZGV4
XyA9IHRpbnkoaW50KCkpOyAgICAgICAgCiAgICB9CgogICAgdm9pZCByZXNldChUX3Jlc3VsdHR5
cGUpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgcmVzZXQoKTsKICAgIH0KCiAgICBzdGF0aWMg
Y29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAibWluSW5kZXgiOyB9Cgpwcm90ZWN0ZWQ6
CiAgICBUX3NvdXJjZXR5cGUgbWluXzsKICAgIGludCBpbmRleF87Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBQX3NvdXJjZXR5cGUsIGludCBOPgpjbGFzcyBSZWR1Y2VNaW5JbmRleFZlY3RvciB7CgpwdWJs
aWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVmIFRp
bnlWZWN0b3I8aW50LE4+IFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYgVF9yZXN1bHR0eXBlIFRf
bnVtdHlwZTsKCiAgICBlbnVtIHsgY2FuUHJvdmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBS
ZWR1Y2VNaW5JbmRleFZlY3RvcigpCiAgICB7IHJlc2V0KCk7IH0KCiAgICBSZWR1Y2VNaW5JbmRl
eFZlY3RvcihUX3Jlc3VsdHR5cGUgbWluKQogICAgewogICAgICAgIHJlc2V0KG1pbik7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUsIGludCkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAg
CiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgsIGNvbnN0IFRpbnlWZWN0b3I8aW50
LE4+JiBpbmRleCkKICAgIHsKICAgICAgICBpZiAoeCA8IG1pbl8pCiAgICAgICAgewogICAgICAg
ICAgICBtaW5fID0geDsKICAgICAgICAgICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgfQogICAg
ICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50KQogICAg
eyByZXR1cm4gaW5kZXhfOyB9CgogICAgdm9pZCByZXNldCgpCiAgICB7CiAgICAgICAgbWluXyA9
IGh1Z2UoVF9zb3VyY2V0eXBlKCkpOwogICAgICAgIGluZGV4XyA9IHRpbnkoaW50KCkpOwogICAg
fQoKICAgIHZvaWQgcmVzZXQoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICAgICAg
cmVzZXQoKTsKICAgIH0KCiAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVy
biAibWluSW5kZXgiOyB9Cgpwcm90ZWN0ZWQ6CiAgICBUX3NvdXJjZXR5cGUgbWluXzsKICAgIFRp
bnlWZWN0b3I8aW50LE4+IGluZGV4XzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNldHlwZT4K
Y2xhc3MgUmVkdWNlTWF4SW5kZXggewoKcHVibGljOgogICAgdHlwZWRlZiBQX3NvdXJjZXR5cGUg
VF9zb3VyY2V0eXBlOwogICAgdHlwZWRlZiBpbnQgICAgICAgICAgVF9yZXN1bHR0eXBlOwogICAg
dHlwZWRlZiBUX3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0geyBuZWVkSW5kZXggPSAx
LCBjYW5Qcm92aWRlSW5pdGlhbFZhbHVlID0gMCB9OwoKICAgIFJlZHVjZU1heEluZGV4KCkKICAg
IHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZU1heEluZGV4KFRfcmVzdWx0dHlwZSBtYXgpCiAgICB7
CiAgICAgICAgcmVzZXQobWF4KTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0
eXBlIHgpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAg
Ym9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4LCBpbnQgaW5kZXgpCiAgICB7CiAgICAgICAg
aWYgKHggPiBtYXhfKQogICAgICAgIHsKICAgICAgICAgICAgbWF4XyA9IHg7CiAgICAgICAgICAg
IGluZGV4XyA9IGluZGV4OwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAg
ICBUX3Jlc3VsdHR5cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGluZGV4XzsgfQoKICAgIHZv
aWQgcmVzZXQoKQogICAgewogICAgICAgIG1heF8gPSBuZWdodWdlKFRfc291cmNldHlwZSgpKTsK
ICAgICAgICBpbmRleF8gPSB0aW55KGludCgpKTsKICAgIH0KCiAgICB2b2lkIHJlc2V0KFRfcmVz
dWx0dHlwZSkKICAgIHsKICAgICAgICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9CgogICAgc3Rh
dGljIGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gIm1heEluZGV4IjsgfQoKcHJvdGVj
dGVkOgogICAgVF9zb3VyY2V0eXBlIG1heF87CiAgICBpbnQgaW5kZXhfOwp9OwoKdGVtcGxhdGU8
Y2xhc3MgUF9zb3VyY2V0eXBlLCBpbnQgTl9yYW5rPgpjbGFzcyBSZWR1Y2VNYXhJbmRleFZlY3Rv
ciB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0
eXBlZGVmIFRpbnlWZWN0b3I8aW50LE5fcmFuaz4gVF9yZXN1bHR0eXBlOwogICAgdHlwZWRlZiBU
X3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0geyBjYW5Qcm92aWRlSW5pdGlhbFZhbHVl
ID0gMCB9OwoKICAgIFJlZHVjZU1heEluZGV4VmVjdG9yKCkKICAgIHsgcmVzZXQoKTsgfQoKICAg
IFJlZHVjZU1heEluZGV4VmVjdG9yKFRfcmVzdWx0dHlwZSBtYXgpCiAgICB7CiAgICAgICAgcmVz
ZXQobWF4KTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgpCiAgICB7
CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgYm9vbCBvcGVyYXRv
cigpKFRfc291cmNldHlwZSB4LCBjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBpbmRleCkK
ICAgIHsKICAgICAgICBpZiAoeCA+IG1heF8pCiAgICAgICAgewogICAgICAgICAgICBtYXhfID0g
eDsKICAgICAgICAgICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0
cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlwZSByZXN1bHQoaW50KQogICAgeyByZXR1cm4gaW5k
ZXhfOyB9CgogICAgdm9pZCByZXNldCgpCiAgICB7CiAgICAgICAgbWF4XyA9IG5lZ2h1Z2UoVF9z
b3VyY2V0eXBlKCkpOwogICAgICAgIGluZGV4XyA9IHRpbnkoaW50KCkpOwogICAgfQoKICAgIHZv
aWQgcmVzZXQoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICAgICAgcmVzZXQoKTsK
ICAgIH0KCiAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAibWF4SW5k
ZXgiOyB9Cgpwcm90ZWN0ZWQ6CiAgICBUX3NvdXJjZXR5cGUgbWF4XzsKICAgIFRpbnlWZWN0b3I8
aW50LE5fcmFuaz4gaW5kZXhfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9zb3VyY2V0eXBlPgpjbGFz
cyBSZWR1Y2VGaXJzdCB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfc291cmNldHlwZSBUX3NvdXJj
ZXR5cGU7CiAgICB0eXBlZGVmIGludCAgICAgICAgICBUX3Jlc3VsdHR5cGU7CiAgICB0eXBlZGVm
IFRfcmVzdWx0dHlwZSBUX251bXR5cGU7CgogICAgZW51bSB7IG5lZWRJbmRleCA9IDEsIGNhblBy
b3ZpZGVJbml0aWFsVmFsdWUgPSAwIH07CgogICAgUmVkdWNlRmlyc3QoKQogICAgeyByZXNldCgp
OyB9CgogICAgUmVkdWNlRmlyc3QoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUgeCwgaW50IGluZGV4KQogICAgewogICAgICAgIGlmICh4KQogICAgICAgIHsKICAgICAgICAg
ICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAg
ICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBUX3Jlc3VsdHR5
cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGluZGV4XzsgfQoKICAgIHZvaWQgcmVzZXQoKQog
ICAgewogICAgICAgIGluZGV4XyA9IHRpbnkoaW50KCkpOwogICAgfQoKICAgIHZvaWQgcmVzZXQo
VF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICAgICAgcmVzZXQoKTsKICAgIH0KCiAg
ICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAiZmlyc3QiOyB9Cgpwcm90
ZWN0ZWQ6CiAgICBpbnQgaW5kZXhfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9zb3VyY2V0eXBlPgpj
bGFzcyBSZWR1Y2VMYXN0IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291
cmNldHlwZTsKICAgIHR5cGVkZWYgaW50ICAgICAgICAgIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVk
ZWYgVF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMSwgY2Fu
UHJvdmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBSZWR1Y2VMYXN0KCkKICAgIHsgcmVzZXQo
KTsgfQoKICAgIFJlZHVjZUxhc3QoVF9yZXN1bHR0eXBlKQogICAgewogICAgICAgICA7CiAgICB9
CgogICAgYm9vbCBvcGVyYXRvcigpKFRfc291cmNldHlwZSB4KQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5
cGUgeCwgaW50IGluZGV4KQogICAgewogICAgICAgIGlmICh4KQogICAgICAgIHsKICAgICAgICAg
ICAgaW5kZXhfID0gaW5kZXg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAg
ICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIFRfcmVzdWx0dHlw
ZSByZXN1bHQoaW50KQogICAgeyByZXR1cm4gaW5kZXhfOyB9CgogICAgdm9pZCByZXNldCgpCiAg
ICB7CiAgICAgICAgaW5kZXhfID0gaHVnZShpbnQoKSk7CiAgICB9CgogICAgdm9pZCByZXNldChU
X3Jlc3VsdHR5cGUpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXNldCgpOwogICAgfQoKICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lKCkKICAgIHsgcmV0dXJuICJsYXN0IjsgfQoKcHJvdGVj
dGVkOgogICAgaW50IGluZGV4XzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNldHlwZSwgY2xh
c3MgUF9yZXN1bHR0eXBlID0gdHlwZW5hbWUgIE51bWVyaWNUeXBlVHJhaXRzPCBQX3NvdXJjZXR5
cGUgPjo6VF9zdW10eXBlID4KY2xhc3MgUmVkdWNlUHJvZHVjdCB7CgpwdWJsaWM6CiAgICB0eXBl
ZGVmIFBfc291cmNldHlwZSBUX3NvdXJjZXR5cGU7CiAgICB0eXBlZGVmIFBfcmVzdWx0dHlwZSBU
X3Jlc3VsdHR5cGU7CiAgICB0eXBlZGVmIFRfcmVzdWx0dHlwZSBUX251bXR5cGU7CgogICAgZW51
bSB7IG5lZWRJbmRleCA9IDAsIGNhblByb3ZpZGVJbml0aWFsVmFsdWUgPSAxIH07CgogICAgUmVk
dWNlUHJvZHVjdCgpCiAgICB7IHByb2R1Y3RfID0gb25lKFRfcmVzdWx0dHlwZSgpKTsgfQoKICAg
IFJlZHVjZVByb2R1Y3QoVF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsgcHJvZHVjdF8g
PSBpbml0aWFsVmFsdWU7IH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgpCiAg
ICB7IAogICAgICAgIHByb2R1Y3RfICo9IHg7IAogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoK
ICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQogICAgeyAKICAgICAgICBw
cm9kdWN0XyAqPSB4OyAKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBUX3Jlc3VsdHR5
cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIHByb2R1Y3RfOyB9CgogICAgdm9pZCByZXNldCgp
CiAgICB7IHByb2R1Y3RfID0gb25lKFRfcmVzdWx0dHlwZSgpKTsgfQoKICAgIHZvaWQgcmVzZXQo
VF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsgcHJvZHVjdF8gPSBpbml0aWFsVmFsdWU7
IH0KCiAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZSgpCiAgICB7IHJldHVybiAicHJvZHVjdCI7
IH0KCnByb3RlY3RlZDoKICAgIFRfcmVzdWx0dHlwZSBwcm9kdWN0XzsKfTsKCnRlbXBsYXRlPGNs
YXNzIFBfc291cmNldHlwZT4KY2xhc3MgUmVkdWNlQ291bnQgewoKcHVibGljOgogICAgdHlwZWRl
ZiBQX3NvdXJjZXR5cGUgVF9zb3VyY2V0eXBlOwogICAgdHlwZWRlZiBpbnQgICAgICAgICAgVF9y
ZXN1bHR0eXBlOwogICAgdHlwZWRlZiBUX3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0g
eyBuZWVkSW5kZXggPSAwLCBjYW5Qcm92aWRlSW5pdGlhbFZhbHVlID0gMSB9OwoKICAgIFJlZHVj
ZUNvdW50KCkKICAgIHsgcmVzZXQoKTsgfQoKICAgIFJlZHVjZUNvdW50KFRfcmVzdWx0dHlwZSBj
b3VudCkKICAgIHsKICAgICAgICBjb3VudF8gPSBjb3VudDsKICAgIH0KCiAgICBib29sIG9wZXJh
dG9yKCkoVF9zb3VyY2V0eXBlIHgpCiAgICB7CiAgICAgICAgaWYgKHgpCiAgICAgICAgICAgICsr
Y291bnRfOwogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShU
X3NvdXJjZXR5cGUgeCwgaW50KQogICAgewogICAgICAgIGlmICh4KQogICAgICAgICAgICArK2Nv
dW50XzsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBUX3Jlc3VsdHR5cGUgcmVzdWx0
KGludCkKICAgIHsgcmV0dXJuIGNvdW50XzsgfQoKICAgIHZvaWQgcmVzZXQoKQogICAgeyBjb3Vu
dF8gPSB6ZXJvKFRfcmVzdWx0dHlwZSgpKTsgfQoKICAgIHZvaWQgcmVzZXQoVF9yZXN1bHR0eXBl
IGluaXRpYWxWYWx1ZSkKICAgIHsgY291bnRfID0gaW5pdGlhbFZhbHVlOyB9CgogICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gImNvdW50IjsgfQoKcHJvdGVjdGVkOgog
ICAgVF9yZXN1bHR0eXBlIGNvdW50XzsKfTsKCnRlbXBsYXRlPGNsYXNzIFBfc291cmNldHlwZT4K
Y2xhc3MgUmVkdWNlQW55IHsKCnB1YmxpYzoKICAgIHR5cGVkZWYgUF9zb3VyY2V0eXBlIFRfc291
cmNldHlwZTsKICAgIHR5cGVkZWYgYm9vbCAgICAgIFRfcmVzdWx0dHlwZTsKICAgIHR5cGVkZWYg
VF9yZXN1bHR0eXBlIFRfbnVtdHlwZTsKCiAgICBlbnVtIHsgbmVlZEluZGV4ID0gMCwgY2FuUHJv
dmlkZUluaXRpYWxWYWx1ZSA9IDAgfTsKCiAgICBSZWR1Y2VBbnkoKQogICAgeyByZXNldCgpOyB9
CgogICAgUmVkdWNlQW55KFRfcmVzdWx0dHlwZSBpbml0aWFsVmFsdWUpCiAgICB7CiAgICAgICAg
cmVzZXQoaW5pdGlhbFZhbHVlKTsKICAgIH0KCiAgICBib29sIG9wZXJhdG9yKCkoVF9zb3VyY2V0
eXBlIHgpCiAgICB7CiAgICAgICAgaWYgKHgpCiAgICAgICAgewogICAgICAgICAgICBhbnlfID0g
dHJ1ZSA7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVy
biB0cnVlOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3NvdXJjZXR5cGUgeCwgaW50KQog
ICAgewogICAgICAgIGlmICh4KQogICAgICAgIHsKICAgICAgICAgICAgYW55XyA9IHRydWUgOwog
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgIH0KCiAgICBUX3Jlc3VsdHR5cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGFueV87IH0K
CiAgICB2b2lkIHJlc2V0KCkKICAgIHsgYW55XyA9IGZhbHNlIDsgfQoKICAgIHZvaWQgcmVzZXQo
VF9yZXN1bHR0eXBlKQogICAgeyAKICAgICAgICAgOwogICAgICAgIHJlc2V0KCk7CiAgICB9Cgog
ICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWUoKQogICAgeyByZXR1cm4gImFueSI7IH0KCnByb3Rl
Y3RlZDoKICAgIFRfcmVzdWx0dHlwZSBhbnlfOwp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9zb3VyY2V0
eXBlPgpjbGFzcyBSZWR1Y2VBbGwgewoKcHVibGljOgogICAgdHlwZWRlZiBQX3NvdXJjZXR5cGUg
VF9zb3VyY2V0eXBlOwogICAgdHlwZWRlZiBib29sICAgICAgVF9yZXN1bHR0eXBlOwogICAgdHlw
ZWRlZiBUX3Jlc3VsdHR5cGUgVF9udW10eXBlOwoKICAgIGVudW0geyBuZWVkSW5kZXggPSAwLCBj
YW5Qcm92aWRlSW5pdGlhbFZhbHVlID0gMCB9OwoKICAgIFJlZHVjZUFsbCgpCiAgICB7IHJlc2V0
KCk7IH0KCiAgICBSZWR1Y2VBbGwoVF9yZXN1bHR0eXBlIGluaXRpYWxWYWx1ZSkKICAgIHsKICAg
ICAgICByZXNldChpbml0aWFsVmFsdWUpOwogICAgfQoKICAgIGJvb2wgb3BlcmF0b3IoKShUX3Nv
dXJjZXR5cGUgeCkKICAgIHsKICAgICAgICBpZiAoISBib29sICh4KSkKICAgICAgICB7CiAgICAg
ICAgICAgIGFsbF8gPSBmYWxzZSA7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9
CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBib29sIG9w
ZXJhdG9yKCkoVF9zb3VyY2V0eXBlIHgsIGludCkKICAgIHsKICAgICAgICBpZiAoISBib29sICh4
KSkKICAgICAgICB7CiAgICAgICAgICAgIGFsbF8gPSBmYWxzZSA7CiAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgIH0KCiAgICBUX3Jlc3VsdHR5cGUgcmVzdWx0KGludCkKICAgIHsgcmV0dXJuIGFsbF87IH0K
CiAgICB2b2lkIHJlc2V0KCkKICAgIHsgYWxsXyA9IHRydWUgOyB9CgogICAgdm9pZCByZXNldChU
X3Jlc3VsdHR5cGUpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXNldCgpOwogICAgfQoKICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lKCkKICAgIHsgcmV0dXJuICJhbGwiOyB9Cgpwcm90ZWN0
ZWQ6CiAgICBUX3Jlc3VsdHR5cGUgYWxsXzsKfTsgCgp9IAoKCiMgNDcgIi91ZnMvbmV3bWFuL3Vz
ZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZWR1Y2UuaCIgMgoKCgpuYW1lc3BhY2Ug
IGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleCwgY2xhc3MgVF9y
ZWR1Y3Rpb24+CmNsYXNzIF9iel9BcnJheUV4cHJSZWR1Y2UgewoKcHVibGljOiAgIAogICAgdHlw
ZWRlZiB0eXBlbmFtZSAgVF9yZWR1Y3Rpb246OlRfbnVtdHlwZSBUX251bXR5cGU7CiAgICB0eXBl
ZGVmIFRfZXhwciAgICAgIFRfY3RvckFyZzE7CiAgICB0eXBlZGVmIFRfcmVkdWN0aW9uIFRfY3Rv
ckFyZzI7CgogICAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMgPSAoaW50KSBUX2V4cHI6Om51bUFy
cmF5T3BlcmFuZHMgICwKICAgICAgICBudW1JbmRleFBsYWNlaG9sZGVycyA9IChpbnQpIFRfZXhw
cjo6bnVtSW5kZXhQbGFjZWhvbGRlcnMgICArIDEsCiAgICAgICAgcmFuayA9IChpbnQpIFRfZXhw
cjo6cmFuayAgIC0gMSB9OwoKICAgIF9iel9BcnJheUV4cHJSZWR1Y2UoY29uc3QgX2J6X0FycmF5
RXhwclJlZHVjZTxUX2V4cHIsTl9pbmRleCxUX3JlZHVjdGlvbj4mCiAgICAgICAgcmVkdWNlKQog
ICAgICAgIDogcmVkdWNlXyhyZWR1Y2UucmVkdWNlXyksIGl0ZXJfKHJlZHVjZS5pdGVyXykKICAg
IHsKICAgIH0KCiAgICBfYnpfQXJyYXlFeHByUmVkdWNlKFRfZXhwciBleHByKQogICAgICAgIDog
aXRlcl8oZXhwcikKICAgIHsgfQoKICAgIF9iel9BcnJheUV4cHJSZWR1Y2UoVF9leHByIGV4cHIs
IFRfcmVkdWN0aW9uIHJlZHVjZSkKICAgICAgICA6IGl0ZXJfKGV4cHIpLCByZWR1Y2VfKHJlZHVj
ZSkKICAgIHsgfQoKICAgIGludCBhc2NlbmRpbmcoaW50IHJhbmspCiAgICB7IHJldHVybiBpdGVy
Xy5hc2NlbmRpbmcocmFuayk7IH0KCiAgICBpbnQgb3JkZXJpbmcoaW50IHJhbmspCiAgICB7IHJl
dHVybiBpdGVyXy5vcmRlcmluZyhyYW5rKTsgfQoKICAgIGludCBsYm91bmQoaW50IHJhbmspCiAg
ICB7IHJldHVybiBpdGVyXy5sYm91bmQocmFuayk7IH0KCiAgICBpbnQgdWJvdW5kKGludCByYW5r
KQogICAgeyByZXR1cm4gaXRlcl8udWJvdW5kKHJhbmspOyB9CgogICAgdGVtcGxhdGU8aW50IE5f
ZGVzdFJhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25zdCBUaW55VmVjdG9yPGludCwg
Tl9kZXN0UmFuaz4mIGRlc3RJbmRleCkKICAgIHsKICAgICAgICAgOwoKCgoKICAgICAgICBUaW55
VmVjdG9yPGludCwgTl9kZXN0UmFuayArIDE+IGluZGV4OwoKICAgICAgICAgCiAgICAgICAgX2J6
X21ldGFfdmVjQXNzaWduPE5faW5kZXgsIDA+Ojphc3NpZ24oaW5kZXgsIGRlc3RJbmRleCwgCiAg
ICAgICAgICAgIF9iel91cGRhdGU8aW50LGludD4oKSk7CgogICAgICAgIGludCBsYm91bmQgPSBp
dGVyXy5sYm91bmQoTl9pbmRleCk7CiAgICAgICAgaW50IHVib3VuZCA9IGl0ZXJfLnVib3VuZChO
X2luZGV4KTsKCiAgICAgICAgIAogICAgICAgICAKICAgICAgICAgOwoKCgoKCiAgICAgICAgcmVk
dWNlXy5yZXNldCgpOwoKICAgICAgICBmb3IgKGluZGV4W05faW5kZXhdID0gaXRlcl8ubGJvdW5k
KE5faW5kZXgpOwogICAgICAgICAgICBpbmRleFtOX2luZGV4XSA8PSB1Ym91bmQ7ICsraW5kZXhb
Tl9pbmRleF0pCiAgICAgICAgewogICAgICAgICAgICBpZiAoIXJlZHVjZV8oaXRlcl8oaW5kZXgp
LCBpbmRleFtOX2luZGV4XSkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAg
ICAgIHJldHVybiByZWR1Y2VfLnJlc3VsdCh1Ym91bmQtbGJvdW5kKzEpOwogICAgfQoKICAgICAK
ICAgICAKICAgICAKICAgICAKICAgIGludCBvcGVyYXRvciooKQogICAgewogICAgICAgICA7CiAg
ICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgIAogICAgdm9pZCBwdXNoKGludCkKICAgIHsKICAg
ICAgICAgOwogICAgfQoKICAgICAKICAgIHZvaWQgcG9wKGludCkKICAgIHsKICAgICAgICAgOwog
ICAgfQoKICAgICAKICAgIHZvaWQgYWR2YW5jZSgpCiAgICB7CiAgICAgICAgIDsKICAgIH0KCiAg
ICAgCiAgICB2b2lkIGFkdmFuY2UoaW50KQogICAgewogICAgICAgICA7CiAgICB9CgogICAgIAog
ICAgdm9pZCBsb2FkU3RyaWRlKGludCkKICAgIHsKICAgICAgICAgOwogICAgfQoKICAgIGJvb2wg
IGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICAgOwogICAgICAgIHJl
dHVybiBmYWxzZTsKICAgIH0KCiAgICB2b2lkIGFkdmFuY2VVbml0U3RyaWRlKCkKICAgIHsKICAg
ICAgICAgOwogICAgfQoKICAgIGJvb2wgIGNhbkNvbGxhcHNlKGludCxpbnQpIGNvbnN0CiAgICB7
ICAgIDsgcmV0dXJuIGZhbHNlIDsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcltdKGludCkKICAg
IHsKICAgICAgICAgOwogICAgICAgIHJldHVybiBUX251bXR5cGUoKTsKICAgIH0KCiAgICBUX251
bXR5cGUgZmFzdFJlYWQoaW50KQogICAgewogICAgICAgICA7CiAgICAgICAgcmV0dXJuIFRfbnVt
dHlwZSgpOwogICAgfQoKICAgIGludCBzdWdnZXN0U3RyaWRlKGludCkgY29uc3QKICAgIHsKICAg
ICAgICAgOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGJvb2wgIGlzU3RyaWRlKGludCxp
bnQpIGNvbnN0CiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm4gdHJ1ZSA7CiAgICB9Cgog
ICAgdGVtcGxhdGU8aW50IE5fcmFuaz4KICAgIHZvaWQgbW92ZVRvKGNvbnN0IFRpbnlWZWN0b3I8
aW50LE5fcmFuaz4mIGkpCiAgICB7CiAgICAgICAgIDsKICAgICAgICByZXR1cm47CiAgICB9Cgog
ICAgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwgcHJldHR5UHJpbnRGb3JtYXQmIGZvcm1h
dCkgY29uc3QKICAgIHsKICAgICAgICAgCiAgICAgICAgc3RyICs9ICJyZWR1Y2VbTkVFRFNfV09S
S10oIjsKICAgICAgICBpdGVyXy5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIg
Kz0gIikiOwogICAgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgICBib29sICBzaGFw
ZUNoZWNrKGNvbnN0IFRfc2hhcGUmIHNoYXBlKSBjb25zdAogICAgeyAKICAgICAgICAgCiAgICAg
ICAgcmV0dXJuIHRydWUgOyAKICAgIH0KCnByaXZhdGU6IAogICAgX2J6X0FycmF5RXhwclJlZHVj
ZSgpIHsgfQoKICAgIFRfcmVkdWN0aW9uIHJlZHVjZV87CiAgICBUX2V4cHIgaXRlcl87Cn07Cgoj
ZGVmaW5lIEJaX0RFQ0xfQVJSQVlfUEFSVElBTF9SRURVQ0UoZm4scmVkdWN0aW9uKSB0ZW1wbGF0
ZTxjbGFzcyBUX2V4cHIsIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJy
YXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwgcmVkdWN0aW9uPF9i
el90eXBlbmFtZSBUX2V4cHI6OlRfbnVtdHlwZT4gPiA+IGZuKF9iel9BcnJheUV4cHI8VF9leHBy
PiBleHByLCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsIHJlZHVjdGlvbjxf
YnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwg
Tl9pbmRleCwgcmVkdWN0aW9uPFRfbnVtdHlwZT4gPiA+IGZuKGNvbnN0IEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPiYgYXJyYXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jh
bms+LCBOX2luZGV4LCByZWR1Y3Rpb248VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7
IH0gICAgICAgICAgICAgICAgICAgICAgICAKIyAyNTUgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJp
Y2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZWR1Y2UuaCIKCnRlbXBsYXRlPGNsYXNzIFRfZXhwciwg
aW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6
X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgICAgUmVkdWNlU3VtIDwgdHlwZW5hbWUg
IFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIHN1bSAoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIs
IGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJldHVybiBfYnpfQXJyYXlFeHBy
UmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwgICAgICAgIFJlZHVjZVN1bSA8
IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHByKTsgfSB0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3JhbmssIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxf
YnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBO
X2luZGV4LCAgICAgICAgUmVkdWNlU3VtIDxUX251bXR5cGU+ID4gPiAgc3VtIChjb25zdCBBcnJh
eTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5k
ZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251
bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgICAgIFJlZHVjZVN1bSA8VF9udW10eXBlPiA+IChh
cnJheS5iZWdpbkZhc3QoKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhwciwgaW50IE5faW5kZXg+
IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxU
X2V4cHI+LCBOX2luZGV4LCAgICAgICBSZWR1Y2VNZWFuIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9u
dW10eXBlPiA+ID4gIG1lYW4gKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25zdCBJbmRl
eFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxfYnpf
QXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgIFJlZHVjZU1lYW4gPCB0eXBlbmFtZSAg
VF9leHByOjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBp
bnQgTl9yYW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhw
clJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAg
ICAgUmVkdWNlTWVhbiA8VF9udW10eXBlPiA+ID4gIG1lYW4gKGNvbnN0IEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPiYgYXJyYXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJl
dHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jh
bms+LCBOX2luZGV4LCAgICAgICBSZWR1Y2VNZWFuIDxUX251bXR5cGU+ID4gKGFycmF5LmJlZ2lu
RmFzdCgpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleD4gaW5saW5lIF9i
el9BcnJheUV4cHI8X2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5f
aW5kZXgsICAgICAgICBSZWR1Y2VNaW4gPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4g
PiAgbWluIChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRl
cjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxU
X2V4cHI+LCBOX2luZGV4LCAgICAgICAgUmVkdWNlTWluIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9u
dW10eXBlPiA+KGV4cHIpOyB9IHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywg
aW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VN
aW4gPFRfbnVtdHlwZT4gPiA+ICBtaW4gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYg
YXJyYXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJldHVybiBfYnpfQXJy
YXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4
LCAgICAgICAgUmVkdWNlTWluIDxUX251bXR5cGU+ID4gKGFycmF5LmJlZ2luRmFzdCgpKTsgfSAK
dGVtcGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8
X2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgUmVk
dWNlTWluSW5kZXggPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4gPiAgbWluSW5kZXgg
KF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5k
ZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4s
IE5faW5kZXgsICAgUmVkdWNlTWluSW5kZXggPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+
ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rLCBpbnQgTl9p
bmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJ
dGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICBSZWR1Y2VNaW5JbmRleCA8VF9u
dW10eXBlPiA+ID4gIG1pbkluZGV4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFy
cmF5LCBjb25zdCBJbmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5
RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwg
ICBSZWR1Y2VNaW5JbmRleCA8VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7IH0gCnRl
bXBsYXRlPGNsYXNzIFRfZXhwciwgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgICAg
UmVkdWNlTWF4IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG1heCAoX2J6X0Fy
cmF5RXhwcjxUX2V4cHI+IGV4cHIsIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRl
eCwgICAgICAgIFJlZHVjZU1heCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHBy
KTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGludCBOX2luZGV4PiBp
bmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9y
PFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAgICAgICAgUmVkdWNlTWF4IDxUX251bXR5cGU+
ID4gPiAgbWF4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBJ
bmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxG
YXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgICAgIFJlZHVj
ZU1heCA8VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7IH0gCnRlbXBsYXRlPGNsYXNz
IFRfZXhwciwgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJS
ZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgIFJlZHVjZU1heEluZGV4IDwg
dHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIG1heEluZGV4IChfYnpfQXJyYXlFeHBy
PFRfZXhwcj4gZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJu
IF9iel9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgIFJl
ZHVjZU1heEluZGV4IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5faW5kZXg+IGlubGluZSBf
YnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10
eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgUmVkdWNlTWF4SW5kZXggPFRfbnVtdHlwZT4gPiA+ICBt
YXhJbmRleCAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3QgSW5k
ZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8RmFz
dEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgUmVkdWNlTWF4SW5k
ZXggPFRfbnVtdHlwZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBU
X2V4cHIsIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVk
dWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwgICAgUmVkdWNlUHJvZHVjdCA8IHR5
cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBwcm9kdWN0IChfYnpfQXJyYXlFeHByPFRf
ZXhwcj4gZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICBSZWR1
Y2VQcm9kdWN0IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IHRlbXBs
YXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5faW5kZXg+IGlubGluZSBfYnpf
QXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBl
LE5fcmFuaz4sIE5faW5kZXgsICAgIFJlZHVjZVByb2R1Y3QgPFRfbnVtdHlwZT4gPiA+ICBwcm9k
dWN0IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBJbmRleFBs
YWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxGYXN0QXJy
YXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgUmVkdWNlUHJvZHVjdCA8
VF9udW10eXBlPiA+IChhcnJheS5iZWdpbkZhc3QoKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhw
ciwgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4cHJSZWR1Y2U8
X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgIFJlZHVjZUNvdW50IDwgdHlwZW5h
bWUgIFRfZXhwcjo6VF9udW10eXBlPiA+ID4gIGNvdW50IChfYnpfQXJyYXlFeHByPFRfZXhwcj4g
ZXhwciwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJh
eUV4cHJSZWR1Y2U8X2J6X0FycmF5RXhwcjxUX2V4cHI+LCBOX2luZGV4LCAgICAgIFJlZHVjZUNv
dW50IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPiA+KGV4cHIpOyB9IHRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaywgaW50IE5faW5kZXg+IGlubGluZSBfYnpfQXJyYXlF
eHByPF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFu
az4sIE5faW5kZXgsICAgICAgUmVkdWNlQ291bnQgPFRfbnVtdHlwZT4gPiA+ICBjb3VudCAoY29u
c3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3QgSW5kZXhQbGFjZWhvbGRl
cjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0
b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgICAgUmVkdWNlQ291bnQgPFRfbnVtdHlw
ZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGludCBO
X2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJh
eUV4cHI8VF9leHByPiwgTl9pbmRleCwgICAgICAgIFJlZHVjZUFueSA8IHR5cGVuYW1lICBUX2V4
cHI6OlRfbnVtdHlwZT4gPiA+ICBhbnkgKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25z
dCBJbmRleFBsYWNlaG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVj
ZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VBbnkgPCB0eXBl
bmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlLCBpbnQgTl9yYW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwclJlZHVjZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRl
eCwgICAgICAgIFJlZHVjZUFueSA8VF9udW10eXBlPiA+ID4gIGFueSAoY29uc3QgQXJyYXk8VF9u
dW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYp
IHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBl
LE5fcmFuaz4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VBbnkgPFRfbnVtdHlwZT4gPiAoYXJyYXku
YmVnaW5GYXN0KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGludCBOX2luZGV4PiBpbmxp
bmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHBy
PiwgTl9pbmRleCwgICAgICAgIFJlZHVjZUFsbCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlw
ZT4gPiA+ICBhbGwgKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByLCBjb25zdCBJbmRleFBsYWNl
aG9sZGVyPE5faW5kZXg+JikgeyByZXR1cm4gX2J6X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlF
eHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgICBSZWR1Y2VBbGwgPCB0eXBlbmFtZSAgVF9leHBy
OjpUX251bXR5cGU+ID4oZXhwcik7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6X0FycmF5RXhwclJlZHVj
ZTxGYXN0QXJyYXlJdGVyYXRvcjxUX251bXR5cGUsTl9yYW5rPiwgTl9pbmRleCwgICAgICAgIFJl
ZHVjZUFsbCA8VF9udW10eXBlPiA+ID4gIGFsbCAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jh
bms+JiBhcnJheSwgY29uc3QgSW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHJSZWR1Y2U8RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5f
aW5kZXgsICAgICAgICBSZWR1Y2VBbGwgPFRfbnVtdHlwZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkp
OyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGludCBOX2luZGV4PiBpbmxpbmUgX2J6X0FycmF5
RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRleCwg
ICAgICBSZWR1Y2VGaXJzdCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPiA+ICBmaXJz
dCAoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIsIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9p
bmRleD4mKSB7IHJldHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHBy
PiwgTl9pbmRleCwgICAgICBSZWR1Y2VGaXJzdCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlw
ZT4gPihleHByKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGludCBO
X2luZGV4PiBpbmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJh
eUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAgICAgIFJlZHVjZUZpcnN0IDxU
X251bXR5cGU+ID4gPiAgZmlyc3QgKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJy
YXksIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAg
ICAgIFJlZHVjZUZpcnN0IDxUX251bXR5cGU+ID4gKGFycmF5LmJlZ2luRmFzdCgpKTsgfSAKdGVt
cGxhdGU8Y2xhc3MgVF9leHByLCBpbnQgTl9pbmRleD4gaW5saW5lIF9iel9BcnJheUV4cHI8X2J6
X0FycmF5RXhwclJlZHVjZTxfYnpfQXJyYXlFeHByPFRfZXhwcj4sIE5faW5kZXgsICAgICAgIFJl
ZHVjZUxhc3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+ID4gPiAgbGFzdCAoX2J6X0Fy
cmF5RXhwcjxUX2V4cHI+IGV4cHIsIGNvbnN0IEluZGV4UGxhY2Vob2xkZXI8Tl9pbmRleD4mKSB7
IHJldHVybiBfYnpfQXJyYXlFeHByUmVkdWNlPF9iel9BcnJheUV4cHI8VF9leHByPiwgTl9pbmRl
eCwgICAgICAgUmVkdWNlTGFzdCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4gPihleHBy
KTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3JhbmssIGludCBOX2luZGV4PiBp
bmxpbmUgX2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByUmVkdWNlPEZhc3RBcnJheUl0ZXJhdG9y
PFRfbnVtdHlwZSxOX3Jhbms+LCBOX2luZGV4LCAgICAgICBSZWR1Y2VMYXN0IDxUX251bXR5cGU+
ID4gPiAgbGFzdCAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgY29uc3Qg
SW5kZXhQbGFjZWhvbGRlcjxOX2luZGV4PiYpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJSZWR1Y2U8
RmFzdEFycmF5SXRlcmF0b3I8VF9udW10eXBlLE5fcmFuaz4sIE5faW5kZXgsICAgICAgIFJlZHVj
ZUxhc3QgPFRfbnVtdHlwZT4gPiAoYXJyYXkuYmVnaW5GYXN0KCkpOyB9IAoKIAoKCgogCnRlbXBs
YXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF9yZWR1Y3Rpb24+CnR5cGVuYW1lICBUX3JlZHVjdGlv
bjo6VF9yZXN1bHR0eXBlCl9iel9BcnJheUV4cHJGdWxsUmVkdWNlKFRfZXhwciBleHByLCBUX3Jl
ZHVjdGlvbiByZWR1Y3Rpb24pOwoKI2RlZmluZSBCWl9ERUNMX0FSUkFZX0ZVTExfUkVEVUNFKGZu
LHJlZHVjdGlvbikgdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgX2J6X3R5cGVuYW1lIHJl
ZHVjdGlvbjxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgZm4o
X2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVk
dWNlKGV4cHIsIHJlZHVjdGlvbjxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGU+KCkpOyB9
IHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIF9iel90eXBlbmFt
ZSByZWR1Y3Rpb248VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlIGZuKGNvbnN0IEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rPiYgYXJyYXkpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGFy
cmF5LmJlZ2luRmFzdCgpLCByZWR1Y3Rpb248VF9udW10eXBlPigpKTsgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoj
IDI5NiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3JlZHVj
ZS5oIgoKdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1
Y2VTdW0gPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIHN1bSAo
X2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVk
dWNlKGV4cHIsICAgICAgICBSZWR1Y2VTdW0gPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+
KCkpOyB9IHRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIHR5cGVu
YW1lICAgICAgICAgUmVkdWNlU3VtIDxUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIHN1bSAoY29u
c3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0FycmF5RXhw
ckZ1bGxSZWR1Y2UoYXJyYXkuYmVnaW5GYXN0KCksICAgICAgICBSZWR1Y2VTdW0gPFRfbnVtdHlw
ZT4oKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhwcj4gaW5saW5lIHR5cGVuYW1lICAgICAgICBS
ZWR1Y2VNZWFuIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlICBt
ZWFuIChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwcikgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1
bGxSZWR1Y2UoZXhwciwgICAgICAgUmVkdWNlTWVhbiA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVt
dHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUg
dHlwZW5hbWUgICAgICAgIFJlZHVjZU1lYW4gPFRfbnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgbWVh
biAoY29uc3QgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwckZ1bGxSZWR1Y2UoYXJyYXkuYmVnaW5GYXN0KCksICAgICAgIFJlZHVjZU1lYW4gPFRf
bnVtdHlwZT4oKSk7IH0gCnRlbXBsYXRlPGNsYXNzIFRfZXhwcj4gaW5saW5lIHR5cGVuYW1lICAg
ICAgICAgUmVkdWNlTWluIDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPjo6VF9yZXN1bHR0
eXBlICBtaW4gKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVybiBfYnpfQXJyYXlF
eHByRnVsbFJlZHVjZShleHByLCAgICAgICAgUmVkdWNlTWluIDwgdHlwZW5hbWUgIFRfZXhwcjo6
VF9udW10eXBlPigpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlu
bGluZSB0eXBlbmFtZSAgICAgICAgIFJlZHVjZU1pbiA8VF9udW10eXBlPjo6VF9yZXN1bHR0eXBl
ICBtaW4gKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXkpIHsgcmV0dXJuIF9i
el9BcnJheUV4cHJGdWxsUmVkdWNlKGFycmF5LmJlZ2luRmFzdCgpLCAgICAgICAgUmVkdWNlTWlu
IDxUX251bXR5cGU+KCkpOyB9IAp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+IGlubGluZSB0eXBlbmFt
ZSAgICAgICAgIFJlZHVjZU1heCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT46OlRfcmVz
dWx0dHlwZSAgbWF4IChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwcikgeyByZXR1cm4gX2J6X0Fy
cmF5RXhwckZ1bGxSZWR1Y2UoZXhwciwgICAgICAgIFJlZHVjZU1heCA8IHR5cGVuYW1lICBUX2V4
cHI6OlRfbnVtdHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5r
PiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1Y2VNYXggPFRfbnVtdHlwZT46OlRfcmVzdWx0
dHlwZSAgbWF4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVy
biBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShhcnJheS5iZWdpbkZhc3QoKSwgICAgICAgIFJlZHVj
ZU1heCA8VF9udW10eXBlPigpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlw
ZW5hbWUgICAgIFJlZHVjZVByb2R1Y3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+OjpU
X3Jlc3VsdHR5cGUgIHByb2R1Y3QgKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVy
biBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShleHByLCAgICBSZWR1Y2VQcm9kdWN0IDwgdHlwZW5h
bWUgIFRfZXhwcjo6VF9udW10eXBlPigpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGlu
dCBOX3Jhbms+IGlubGluZSB0eXBlbmFtZSAgICAgUmVkdWNlUHJvZHVjdCA8VF9udW10eXBlPjo6
VF9yZXN1bHR0eXBlICBwcm9kdWN0IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFy
cmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShhcnJheS5iZWdpbkZhc3QoKSwg
ICAgUmVkdWNlUHJvZHVjdCA8VF9udW10eXBlPigpKTsgfSAKdGVtcGxhdGU8Y2xhc3MgVF9leHBy
PiBpbmxpbmUgdHlwZW5hbWUgICAgICAgUmVkdWNlQ291bnQgPCB0eXBlbmFtZSAgVF9leHByOjpU
X251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGNvdW50IChfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhw
cikgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1bGxSZWR1Y2UoZXhwciwgICAgICBSZWR1Y2VDb3Vu
dCA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgUmVkdWNlQ291bnQgPFRf
bnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgY291bnQgKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9y
YW5rPiYgYXJyYXkpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGFycmF5LmJlZ2lu
RmFzdCgpLCAgICAgIFJlZHVjZUNvdW50IDxUX251bXR5cGU+KCkpOyB9IAp0ZW1wbGF0ZTxjbGFz
cyBUX2V4cHI+IGlubGluZSB0eXBlbmFtZSAgICAgICAgIFJlZHVjZUFueSA8IHR5cGVuYW1lICBU
X2V4cHI6OlRfbnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgYW55IChfYnpfQXJyYXlFeHByPFRfZXhw
cj4gZXhwcikgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1bGxSZWR1Y2UoZXhwciwgICAgICAgIFJl
ZHVjZUFueSA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZT4oKSk7IH0gdGVtcGxhdGU8Y2xh
c3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1Y2VB
bnkgPFRfbnVtdHlwZT46OlRfcmVzdWx0dHlwZSAgYW55IChjb25zdCBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJlZHVjZShhcnJheS5i
ZWdpbkZhc3QoKSwgICAgICAgIFJlZHVjZUFueSA8VF9udW10eXBlPigpKTsgfSAKdGVtcGxhdGU8
Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgICBSZWR1Y2VBbGwgPCB0eXBlbmFt
ZSAgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGFsbCAoX2J6X0FycmF5RXhwcjxU
X2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGV4cHIsICAgICAg
ICBSZWR1Y2VBbGwgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+KCkpOyB9IHRlbXBsYXRl
PGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIHR5cGVuYW1lICAgICAgICAgUmVk
dWNlQWxsIDxUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGFsbCAoY29uc3QgQXJyYXk8VF9udW10
eXBlLCBOX3Jhbms+JiBhcnJheSkgeyByZXR1cm4gX2J6X0FycmF5RXhwckZ1bGxSZWR1Y2UoYXJy
YXkuYmVnaW5GYXN0KCksICAgICAgICBSZWR1Y2VBbGwgPFRfbnVtdHlwZT4oKSk7IH0gCnRlbXBs
YXRlPGNsYXNzIFRfZXhwcj4gaW5saW5lIHR5cGVuYW1lICAgICAgIFJlZHVjZUZpcnN0IDwgdHlw
ZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlICBmaXJzdCAoX2J6X0FycmF5
RXhwcjxUX2V4cHI+IGV4cHIpIHsgcmV0dXJuIF9iel9BcnJheUV4cHJGdWxsUmVkdWNlKGV4cHIs
ICAgICAgUmVkdWNlRmlyc3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+KCkpOyB9IHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIHR5cGVuYW1lICAgICAg
IFJlZHVjZUZpcnN0IDxUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGZpcnN0IChjb25zdCBBcnJh
eTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJl
ZHVjZShhcnJheS5iZWdpbkZhc3QoKSwgICAgICBSZWR1Y2VGaXJzdCA8VF9udW10eXBlPigpKTsg
fSAKdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgICAgIFJlZHVjZUxh
c3QgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGU+OjpUX3Jlc3VsdHR5cGUgIGxhc3QgKF9i
el9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVybiBfYnpfQXJyYXlFeHByRnVsbFJlZHVj
ZShleHByLCAgICAgICBSZWR1Y2VMYXN0IDwgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlPigp
KTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSB0eXBlbmFt
ZSAgICAgICAgUmVkdWNlTGFzdCA8VF9udW10eXBlPjo6VF9yZXN1bHR0eXBlICBsYXN0IChjb25z
dCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfQXJyYXlFeHBy
RnVsbFJlZHVjZShhcnJheS5iZWdpbkZhc3QoKSwgICAgICAgUmVkdWNlTGFzdCA8VF9udW10eXBl
PigpKTsgfSAKCiAKIAoKI2RlZmluZSBCWl9ERUNMX0FSUkFZX0ZVTExfUkVEVUNFX0lOREVYVkVD
VE9SKGZuLHJlZHVjdGlvbikgdGVtcGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgX2J6X3R5cGVu
YW1lIHJlZHVjdGlvbjxfYnpfdHlwZW5hbWUgVF9leHByOjpUX251bXR5cGUsIFRfZXhwcjo6cmFu
az46OlRfcmVzdWx0dHlwZSBmbihfYnpfQXJyYXlFeHByPFRfZXhwcj4gZXhwcikgeyByZXR1cm4g
X2J6X3JlZHVjZVdpdGhJbmRleFZlY3RvclRyYXZlcnNhbChleHByLCByZWR1Y3Rpb248X2J6X3R5
cGVuYW1lIFRfZXhwcjo6VF9udW10eXBlLCBUX2V4cHI6OnJhbms+KCkpOyB9IHRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gaW5saW5lIF9iel90eXBlbmFtZSByZWR1Y3Rpb248
VF9udW10eXBlLE5fcmFuaz46OlRfcmVzdWx0dHlwZSBmbihjb25zdCBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpfcmVkdWNlV2l0aEluZGV4VmVjdG9yVHJhdmVy
c2FsKCBhcnJheS5iZWdpbkZhc3QoKSwgcmVkdWN0aW9uPFRfbnVtdHlwZSxOX3Jhbms+KCkpOyB9
CiMgMzMwICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvcmVk
dWNlLmgiCgp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+IGlubGluZSB0eXBlbmFtZSAgICBSZWR1Y2VN
aW5JbmRleFZlY3RvciA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZSwgVF9leHByOjpyYW5r
Pjo6VF9yZXN1bHR0eXBlICBtaW5JbmRleCAoX2J6X0FycmF5RXhwcjxUX2V4cHI+IGV4cHIpIHsg
cmV0dXJuIF9iel9yZWR1Y2VXaXRoSW5kZXhWZWN0b3JUcmF2ZXJzYWwoZXhwciwgICBSZWR1Y2VN
aW5JbmRleFZlY3RvciA8IHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZSwgVF9leHByOjpyYW5r
PigpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+IGlubGluZSB0eXBl
bmFtZSAgICBSZWR1Y2VNaW5JbmRleFZlY3RvciA8VF9udW10eXBlLE5fcmFuaz46OlRfcmVzdWx0
dHlwZSAgbWluSW5kZXggKGNvbnN0IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXkpIHsg
cmV0dXJuIF9iel9yZWR1Y2VXaXRoSW5kZXhWZWN0b3JUcmF2ZXJzYWwoIGFycmF5LmJlZ2luRmFz
dCgpLCAgIFJlZHVjZU1pbkluZGV4VmVjdG9yIDxUX251bXR5cGUsTl9yYW5rPigpKTsgfSAKdGVt
cGxhdGU8Y2xhc3MgVF9leHByPiBpbmxpbmUgdHlwZW5hbWUgICAgUmVkdWNlTWF4SW5kZXhWZWN0
b3IgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGUsIFRfZXhwcjo6cmFuaz46OlRfcmVzdWx0
dHlwZSAgbWF4SW5kZXggKF9iel9BcnJheUV4cHI8VF9leHByPiBleHByKSB7IHJldHVybiBfYnpf
cmVkdWNlV2l0aEluZGV4VmVjdG9yVHJhdmVyc2FsKGV4cHIsICAgUmVkdWNlTWF4SW5kZXhWZWN0
b3IgPCB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGUsIFRfZXhwcjo6cmFuaz4oKSk7IH0gdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPiBpbmxpbmUgdHlwZW5hbWUgICAgUmVk
dWNlTWF4SW5kZXhWZWN0b3IgPFRfbnVtdHlwZSxOX3Jhbms+OjpUX3Jlc3VsdHR5cGUgIG1heElu
ZGV4IChjb25zdCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5KSB7IHJldHVybiBfYnpf
cmVkdWNlV2l0aEluZGV4VmVjdG9yVHJhdmVyc2FsKCBhcnJheS5iZWdpbkZhc3QoKSwgICBSZWR1
Y2VNYXhJbmRleFZlY3RvciA8VF9udW10eXBlLE5fcmFuaz4oKSk7IH0gCgp9IAoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvcmVkdWNlLmNjIiAxCgoK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3Jl
ZHVjdGlvbj4KdHlwZW5hbWUgIFRfcmVkdWN0aW9uOjpUX3Jlc3VsdHR5cGUKX2J6X3JlZHVjZVdp
dGhJbmRleFRyYXZlcnNhbChUX2V4cHIgZXhwciwgVF9yZWR1Y3Rpb24gcmVkdWN0aW9uKTsKCnRl
bXBsYXRlPGNsYXNzIFRfZXhwciwgY2xhc3MgVF9yZWR1Y3Rpb24+CnR5cGVuYW1lICBUX3JlZHVj
dGlvbjo6VF9yZXN1bHR0eXBlCl9iel9yZWR1Y2VXaXRoU3RhY2tUcmF2ZXJzYWwoVF9leHByIGV4
cHIsIFRfcmVkdWN0aW9uIHJlZHVjdGlvbik7Cgp0ZW1wbGF0ZTxjbGFzcyBUX2V4cHIsIGNsYXNz
IFRfcmVkdWN0aW9uPgp0eXBlbmFtZSAgVF9yZWR1Y3Rpb246OlRfcmVzdWx0dHlwZQpfYnpfQXJy
YXlFeHByRnVsbFJlZHVjZShUX2V4cHIgZXhwciwgVF9yZWR1Y3Rpb24gcmVkdWN0aW9uKQp7CiMg
MzIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZWR1Y2Uu
Y2MiCgoKICAgIHJldHVybiBfYnpfcmVkdWNlV2l0aEluZGV4VHJhdmVyc2FsKGV4cHIsIHJlZHVj
dGlvbik7CgojIDQ3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkvcmVkdWNlLmNjIgoKfQoKdGVtcGxhdGU8Y2xhc3MgVF9leHByLCBjbGFzcyBUX3JlZHVjdGlv
bj4KdHlwZW5hbWUgIFRfcmVkdWN0aW9uOjpUX3Jlc3VsdHR5cGUKX2J6X3JlZHVjZVdpdGhJbmRl
eFRyYXZlcnNhbChUX2V4cHIgZXhwciwgVF9yZWR1Y3Rpb24gcmVkdWN0aW9uKQp7CiAgICAgCgog
ICAgcmVkdWN0aW9uLnJlc2V0KCk7CgogICAgY29uc3QgaW50IHJhbmsgPSBUX2V4cHI6OnJhbms7
CgogICAgVGlueVZlY3RvcjxpbnQscmFuaz4gaW5kZXgsIGZpcnN0LCBsYXN0OwoKICAgIHVuc2ln
bmVkIGxvbmcgY291bnQgPSAxOwoKICAgIGZvciAoaW50IGk9MDsgaSA8IHJhbms7ICsraSkKICAg
IHsKICAgICAgICBpbmRleChpKSA9IGV4cHIubGJvdW5kKGkpOwogICAgICAgIGZpcnN0KGkpID0g
aW5kZXgoaSk7CiAgICAgICAgbGFzdChpKSA9IGV4cHIudWJvdW5kKGkpICsgMTsKICAgICAgICBj
b3VudCAqPSBsYXN0KGkpIC0gZmlyc3QoaSk7CiAgICB9CgogICAgY29uc3QgaW50IG1heFJhbmsg
PSByYW5rIC0gMTsKICAgIGludCBsYXN0bGJvdW5kID0gZXhwci5sYm91bmQobWF4UmFuayk7CiAg
ICBpbnQgbGFzdHVib3VuZCA9IGV4cHIudWJvdW5kKG1heFJhbmspOwoKICAgIGludCBsYXN0SW5k
ZXggPSBsYXN0dWJvdW5kICsgMTsKCiAgICBib29sICBsb29wRmxhZyA9IHRydWUgOwoKICAgIHdo
aWxlKGxvb3BGbGFnKSB7CiAgICAgICAgZm9yIChpbmRleFttYXhSYW5rXSA9IGxhc3RsYm91bmQ7
IGluZGV4W21heFJhbmtdIDwgbGFzdEluZGV4OwogICAgICAgICAgICArK2luZGV4W21heFJhbmtd
KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCFyZWR1Y3Rpb24oZXhwcihpbmRleCksIGluZGV4
W21heFJhbmtdKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbG9vcEZsYWcgPSBmYWxz
ZSA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgaW50IGogPSByYW5rLTI7CiAgICAgICAgZm9yICg7IGogPj0gMDsgLS1qKQogICAgICAgIHsK
ICAgICAgICAgICAgaW5kZXgoaisxKSA9IGZpcnN0KGorMSk7CiAgICAgICAgICAgICsraW5kZXgo
aik7CiAgICAgICAgICAgIGlmIChpbmRleChqKSAhPSBsYXN0KGopKQogICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoaiA8IDApCiAgICAgICAgICAgIGJyZWFrOwog
ICAgfQoKICAgIHJldHVybiByZWR1Y3Rpb24ucmVzdWx0KGNvdW50KTsKfQoKCnRlbXBsYXRlPGNs
YXNzIFRfZXhwciwgY2xhc3MgVF9yZWR1Y3Rpb24+CnR5cGVuYW1lICBUX3JlZHVjdGlvbjo6VF9y
ZXN1bHR0eXBlCl9iel9yZWR1Y2VXaXRoSW5kZXhWZWN0b3JUcmF2ZXJzYWwoVF9leHByIGV4cHIs
IFRfcmVkdWN0aW9uIHJlZHVjdGlvbikKewogICAgIAogICAgIAoKICAgIHJlZHVjdGlvbi5yZXNl
dCgpOwoKICAgIGNvbnN0IGludCByYW5rID0gVF9leHByOjpyYW5rOwoKICAgIFRpbnlWZWN0b3I8
aW50LHJhbms+IGluZGV4LCBmaXJzdCwgbGFzdDsKCiAgICB1bnNpZ25lZCBsb25nIGNvdW50ID0g
MTsKCiAgICBmb3IgKGludCBpPTA7IGkgPCByYW5rOyArK2kpCiAgICB7CiAgICAgICAgaW5kZXgo
aSkgPSBleHByLmxib3VuZChpKTsKICAgICAgICBmaXJzdChpKSA9IGluZGV4KGkpOwogICAgICAg
IGxhc3QoaSkgPSBleHByLnVib3VuZChpKSArIDE7CiAgICAgICAgY291bnQgKj0gbGFzdChpKSAt
IGZpcnN0KGkpOwogICAgfQoKICAgIGNvbnN0IGludCBtYXhSYW5rID0gcmFuayAtIDE7CiAgICBp
bnQgbGFzdGxib3VuZCA9IGV4cHIubGJvdW5kKG1heFJhbmspOwogICAgaW50IGxhc3R1Ym91bmQg
PSBleHByLnVib3VuZChtYXhSYW5rKTsKCiAgICBpbnQgbGFzdEluZGV4ID0gbGFzdHVib3VuZCAr
IDE7CgogICAgYm9vbCAgbG9vcEZsYWcgPSB0cnVlIDsKCiAgICB3aGlsZShsb29wRmxhZykgewog
ICAgICAgIGZvciAoaW5kZXhbbWF4UmFua10gPSBsYXN0bGJvdW5kOyBpbmRleFttYXhSYW5rXSA8
IGxhc3RJbmRleDsKICAgICAgICAgICAgKytpbmRleFttYXhSYW5rXSkKICAgICAgICB7CiAgICAg
ICAgICAgIGlmICghcmVkdWN0aW9uKGV4cHIoaW5kZXgpLCBpbmRleCkpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgIGxvb3BGbGFnID0gZmFsc2UgOwogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGludCBqID0gcmFuay0yOwogICAgICAg
IGZvciAoOyBqID49IDA7IC0taikKICAgICAgICB7CiAgICAgICAgICAgIGluZGV4KGorMSkgPSBm
aXJzdChqKzEpOwogICAgICAgICAgICArK2luZGV4KGopOwogICAgICAgICAgICBpZiAoaW5kZXgo
aikgIT0gbGFzdChqKSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAg
aWYgKGogPCAwKQogICAgICAgICAgICBicmVhazsKICAgIH0KCiAgICByZXR1cm4gcmVkdWN0aW9u
LnJlc3VsdChjb3VudCk7Cn0KCn0gCgojIDMzNiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FycmF5L3JlZHVjZS5oIiAyCgoKCiMgMjQ4NSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2ludGVybGFjZS5jYyIgMQogCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX0FSUkFZSU5URVJMQUNFX0NDCgoKCgoK
CiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvc2hh
cGUuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgQlpfQVJS
QVlTSEFQRV9ICgoKCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCiAKCgoKCgoKCgoKCmlubGluZSBU
aW55VmVjdG9yPGludCwxPiBzaGFwZShpbnQgbjEpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDE+
KG4xKTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8aW50LDI+IHNoYXBlKGludCBuMSwgaW50IG4yKQp7
IHJldHVybiBUaW55VmVjdG9yPGludCwyPihuMSxuMik7IH0KCmlubGluZSBUaW55VmVjdG9yPGlu
dCwzPiBzaGFwZShpbnQgbjEsIGludCBuMiwgaW50IG4zKQp7IHJldHVybiBUaW55VmVjdG9yPGlu
dCwzPihuMSxuMixuMyk7IH0KCmlubGluZSBUaW55VmVjdG9yPGludCw0PiBzaGFwZShpbnQgbjEs
IGludCBuMiwgaW50IG4zLCBpbnQgbjQpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDQ+KG4xLG4y
LG4zLG40KTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8aW50LDU+IHNoYXBlKGludCBuMSwgaW50IG4y
LCBpbnQgbjMsIGludCBuNCwKICAgIGludCBuNSkKeyByZXR1cm4gVGlueVZlY3RvcjxpbnQsNT4o
bjEsbjIsbjMsbjQsbjUpOyB9CgppbmxpbmUgVGlueVZlY3RvcjxpbnQsNj4gc2hhcGUoaW50IG4x
LCBpbnQgbjIsIGludCBuMywgaW50IG40LAogICAgaW50IG41LCBpbnQgbjYpCnsgcmV0dXJuIFRp
bnlWZWN0b3I8aW50LDY+KG4xLG4yLG4zLG40LG41LG42KTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8
aW50LDc+IHNoYXBlKGludCBuMSwgaW50IG4yLCBpbnQgbjMsIGludCBuNCwKICAgIGludCBuNSwg
aW50IG42LCBpbnQgbjcpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDc+KG4xLG4yLG4zLG40LG41
LG42LG43KTsgfQoKaW5saW5lIFRpbnlWZWN0b3I8aW50LDg+IHNoYXBlKGludCBuMSwgaW50IG4y
LCBpbnQgbjMsIGludCBuNCwKICAgIGludCBuNSwgaW50IG42LCBpbnQgbjcsIGludCBuOCkKeyBy
ZXR1cm4gVGlueVZlY3RvcjxpbnQsOD4objEsbjIsbjMsbjQsbjUsbjYsbjcsbjgpOyB9Cgppbmxp
bmUgVGlueVZlY3RvcjxpbnQsOT4gc2hhcGUoaW50IG4xLCBpbnQgbjIsIGludCBuMywgaW50IG40
LAogICAgaW50IG41LCBpbnQgbjYsIGludCBuNywgaW50IG44LCBpbnQgbjkpCnsgcmV0dXJuIFRp
bnlWZWN0b3I8aW50LDk+KG4xLG4yLG4zLG40LG41LG42LG43LG44LG45KTsgfQoKaW5saW5lIFRp
bnlWZWN0b3I8aW50LDEwPiBzaGFwZShpbnQgbjEsIGludCBuMiwgaW50IG4zLCBpbnQgbjQsCiAg
ICBpbnQgbjUsIGludCBuNiwgaW50IG43LCBpbnQgbjgsIGludCBuOSwgaW50IG4xMCkKeyByZXR1
cm4gVGlueVZlY3RvcjxpbnQsMTA+KG4xLG4yLG4zLG40LG41LG42LG43LG44LG45LG4xMCk7IH0K
CmlubGluZSBUaW55VmVjdG9yPGludCwxMT4gc2hhcGUoaW50IG4xLCBpbnQgbjIsIGludCBuMywg
aW50IG40LAogICAgaW50IG41LCBpbnQgbjYsIGludCBuNywgaW50IG44LCBpbnQgbjksIGludCBu
MTAsIGludCBuMTEpCnsgcmV0dXJuIFRpbnlWZWN0b3I8aW50LDExPihuMSxuMixuMyxuNCxuNSxu
NixuNyxuOCxuOSxuMTAsbjExKTsgfQoKfSAKCgoKIyA0MCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L2FycmF5L2ludGVybGFjZS5jYyIgMgoKCgpuYW1lc3BhY2UgIGJs
aXR6ICB7IAoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCiAKIAogCgogCiAKIAogCiAKCnRlbXBsYXRl
PGNsYXNzIFRfbnVtdHlwZT4Kdm9pZCBtYWtlSW50ZXJsYWNlZEFycmF5KEFycmF5PFRfbnVtdHlw
ZSwyPiYgbWFpbkFycmF5LAogICAgQXJyYXk8VF9udW10eXBlLDE+JiBzdWJhcnJheSwgaW50IHNs
aWNlKQp7CiAgICBBcnJheTxUX251bXR5cGUsMT4gdG1wID0gbWFpbkFycmF5KFJhbmdlOjphbGwo
KSwgc2xpY2UpOwogICAgc3ViYXJyYXkucmVmZXJlbmNlKHRtcCk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZT4Kdm9pZCBtYWtlSW50ZXJsYWNlZEFycmF5KEFycmF5PFRfbnVtdHlwZSwzPiYg
bWFpbkFycmF5LAogICAgQXJyYXk8VF9udW10eXBlLDI+JiBzdWJhcnJheSwgaW50IHNsaWNlKQp7
CiAgICBBcnJheTxUX251bXR5cGUsMj4gdG1wID0gbWFpbkFycmF5KFJhbmdlOjphbGwoKSwgUmFu
Z2U6OmFsbCgpLCAKICAgICAgICBzbGljZSk7CiAgICBzdWJhcnJheS5yZWZlcmVuY2UodG1wKTsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgp2b2lkIG1ha2VJbnRlcmxhY2VkQXJyYXkoQXJy
YXk8VF9udW10eXBlLDQ+JiBtYWluQXJyYXksCiAgICBBcnJheTxUX251bXR5cGUsMz4mIHN1YmFy
cmF5LCBpbnQgc2xpY2UpCnsKICAgIEFycmF5PFRfbnVtdHlwZSwzPiB0bXAgPSBtYWluQXJyYXko
UmFuZ2U6OmFsbCgpLCBSYW5nZTo6YWxsKCksIAogICAgICAgIFJhbmdlOjphbGwoKSwgc2xpY2Up
OwogICAgc3ViYXJyYXkucmVmZXJlbmNlKHRtcCk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFycmF5cyhjb25zdCBUaW55VmVjdG9yPGlu
dCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEyKQp7CiAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaysx
PiBzdG9yYWdlOwogICAgQXJyYXk8VF9udW10eXBlLCBOX3JhbmsrMT4gYXJyYXkoc2hhcGUsIDIs
IHN0b3JhZ2UpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTEsIDApOwogICAgbWFr
ZUludGVybGFjZWRBcnJheShhcnJheSwgYTIsIDEpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5
cGUsIGludCBOX3Jhbms+CnZvaWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50
LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxU
X251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMpCnsK
ICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rKzE+IHN0b3JhZ2U7CiAgICBBcnJheTxUX251
bXR5cGUsIE5fcmFuaysxPiBhcnJheShzaGFwZSwgMywgc3RvcmFnZSk7CiAgICBtYWtlSW50ZXJs
YWNlZEFycmF5KGFycmF5LCBhMSwgMCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBh
MiwgMSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMywgMik7Cn0KCnRlbXBsYXRl
PGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBpbnRlcmxhY2VBcnJheXMoY29uc3Qg
VGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgc2hhcGUsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5r
PiYgYTEsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMiwKICAgIEFycmF5PFRfbnVtdHlwZSxO
X3Jhbms+JiBhMywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE0KQp7CiAgICBHZW5lcmFsQXJy
YXlTdG9yYWdlPE5fcmFuaysxPiBzdG9yYWdlOwogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbmsr
MT4gYXJyYXkoc2hhcGUsIDQsIHN0b3JhZ2UpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJh
eSwgYTEsIDApOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTIsIDEpOwogICAgbWFr
ZUludGVybGFjZWRBcnJheShhcnJheSwgYTMsIDIpOwogICAgbWFrZUludGVybGFjZWRBcnJheShh
cnJheSwgYTQsIDMpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZv
aWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAog
ICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYg
YTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSkKewogICAgR2VuZXJhbEFy
cmF5U3RvcmFnZTxOX3JhbmsrMT4gc3RvcmFnZTsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5r
KzE+IGFycmF5KHNoYXBlLCA1LCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJy
YXksIGExLCAwKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEyLCAxKTsKICAgIG1h
a2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXko
YXJyYXksIGE0LCAzKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE1LCA0KTsKfQoK
dGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFycmF5
cyhjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNikKewog
ICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3JhbmsrMT4gc3RvcmFnZTsKICAgIEFycmF5PFRfbnVt
dHlwZSwgTl9yYW5rKzE+IGFycmF5KHNoYXBlLCA2LCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxh
Y2VkQXJyYXkoYXJyYXksIGExLCAwKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEy
LCAxKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRl
cmxhY2VkQXJyYXkoYXJyYXksIGE0LCAzKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXks
IGE1LCA0KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE2LCA1KTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFycmF5cyhjb25z
dCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBl
LE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJheTxUX251
bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwKICAgIEFycmF5
PFRfbnVtdHlwZSxOX3Jhbms+JiBhNykKewogICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3Jhbmsr
MT4gc3RvcmFnZTsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rKzE+IGFycmF5KHNoYXBlLCA3
LCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGExLCAwKTsKICAgIG1h
a2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEyLCAxKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXko
YXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE0LCAzKTsKICAg
IG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE1LCA0KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJy
YXkoYXJyYXksIGE2LCA1KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE3LCA2KTsK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGludGVybGFjZUFy
cmF5cyhjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVt
dHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwK
ICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4m
IGE4KQp7CiAgICBHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaysxPiBzdG9yYWdlOwogICAgQXJy
YXk8VF9udW10eXBlLCBOX3JhbmsrMT4gYXJyYXkoc2hhcGUsIDgsIHN0b3JhZ2UpOwogICAgbWFr
ZUludGVybGFjZWRBcnJheShhcnJheSwgYTEsIDApOwogICAgbWFrZUludGVybGFjZWRBcnJheShh
cnJheSwgYTIsIDEpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTMsIDIpOwogICAg
bWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTQsIDMpOwogICAgbWFrZUludGVybGFjZWRBcnJh
eShhcnJheSwgYTUsIDQpOwogICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTYsIDUpOwog
ICAgbWFrZUludGVybGFjZWRBcnJheShhcnJheSwgYTcsIDYpOwogICAgbWFrZUludGVybGFjZWRB
cnJheShhcnJheSwgYTgsIDcpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jh
bms+CnZvaWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNo
YXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9y
YW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE3LCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTgsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTkp
CnsKICAgIEdlbmVyYWxBcnJheVN0b3JhZ2U8Tl9yYW5rKzE+IHN0b3JhZ2U7CiAgICBBcnJheTxU
X251bXR5cGUsIE5fcmFuaysxPiBhcnJheShzaGFwZSwgOSwgc3RvcmFnZSk7CiAgICBtYWtlSW50
ZXJsYWNlZEFycmF5KGFycmF5LCBhMSwgMCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5
LCBhMiwgMSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMywgMik7CiAgICBtYWtl
SW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNCwgMyk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFy
cmF5LCBhNSwgNCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNiwgNSk7CiAgICBt
YWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNywgNik7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5
KGFycmF5LCBhOCwgNyk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhOSwgOCk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBpbnRlcmxhY2VBcnJh
eXMoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgc2hhcGUsCiAgICBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgYTEsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMiwKICAgIEFycmF5PFRf
bnVtdHlwZSxOX3Jhbms+JiBhMywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE0LAogICAgQXJy
YXk8VF9udW10eXBlLE5fcmFuaz4mIGE1LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTYsCiAg
ICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTcsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBh
OCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhOSwgQXJyYXk8VF9udW10eXBlLE5fcmFu
az4mIGExMCkKewogICAgR2VuZXJhbEFycmF5U3RvcmFnZTxOX3JhbmsrMT4gc3RvcmFnZTsKICAg
IEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rKzE+IGFycmF5KHNoYXBlLCAxMCwgc3RvcmFnZSk7CiAg
ICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMSwgMCk7CiAgICBtYWtlSW50ZXJsYWNlZEFy
cmF5KGFycmF5LCBhMiwgMSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMywgMik7
CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNCwgMyk7CiAgICBtYWtlSW50ZXJsYWNl
ZEFycmF5KGFycmF5LCBhNSwgNCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNiwg
NSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhNywgNik7CiAgICBtYWtlSW50ZXJs
YWNlZEFycmF5KGFycmF5LCBhOCwgNyk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBh
OSwgOCk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMTAsIDkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgaW50ZXJsYWNlQXJyYXlzKGNvbnN0
IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFu
az4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUs
Tl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVt
dHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGE3LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTgsCiAgICBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTksIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMTAs
CiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTExKQp7CiAgICBHZW5lcmFsQXJyYXlTdG9y
YWdlPE5fcmFuaysxPiBzdG9yYWdlOwogICAgQXJyYXk8VF9udW10eXBlLCBOX3JhbmsrMT4gYXJy
YXkoc2hhcGUsIDExLCBzdG9yYWdlKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEx
LCAwKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGEyLCAxKTsKICAgIG1ha2VJbnRl
cmxhY2VkQXJyYXkoYXJyYXksIGEzLCAyKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXks
IGE0LCAzKTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE1LCA0KTsKICAgIG1ha2VJ
bnRlcmxhY2VkQXJyYXkoYXJyYXksIGE2LCA1KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJy
YXksIGE3LCA2KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE4LCA3KTsKICAgIG1h
a2VJbnRlcmxhY2VkQXJyYXkoYXJyYXksIGE5LCA4KTsKICAgIG1ha2VJbnRlcmxhY2VkQXJyYXko
YXJyYXksIGExMCwgOSk7CiAgICBtYWtlSW50ZXJsYWNlZEFycmF5KGFycmF5LCBhMTEsIDEwKTsK
fQoKIAogCiAKCiAKIAoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lk
IGFsbG9jYXRlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIp
CnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBhMi5yZXNpemUoc2hhcGUpOwoKfQoKdGVt
cGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGFsbG9jYXRlQXJyYXlzKGNv
bnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5f
cmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgYTMpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBhMi5yZXNpemUo
c2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKCn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFycmF5cyhjb25zdCBUaW55VmVjdG9yPGludCxO
X3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEzLCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTQpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBh
Mi5yZXNpemUoc2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKICAgIGE0LnJlc2l6ZShzaGFw
ZSk7Cgp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgYWxsb2Nh
dGVBcnJheXMoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgc2hhcGUsCiAgICBBcnJheTxU
X251bXR5cGUsTl9yYW5rPiYgYTEsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMiwKICAgIEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE0LAog
ICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE1KQp7CgoKCiAgICBhMS5yZXNpemUoc2hhcGUp
OwogICAgYTIucmVzaXplKHNoYXBlKTsKICAgIGEzLnJlc2l6ZShzaGFwZSk7CiAgICBhNC5yZXNp
emUoc2hhcGUpOwogICAgYTUucmVzaXplKHNoYXBlKTsKCn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFycmF5cyhjb25zdCBUaW55VmVjdG9yPGlu
dCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEzLCBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYg
YTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNikKewoKCgogICAgYTEucmVzaXplKHNoYXBl
KTsKICAgIGEyLnJlc2l6ZShzaGFwZSk7CiAgICBhMy5yZXNpemUoc2hhcGUpOwogICAgYTQucmVz
aXplKHNoYXBlKTsKICAgIGE1LnJlc2l6ZShzaGFwZSk7CiAgICBhNi5yZXNpemUoc2hhcGUpOwoK
fQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGFsbG9jYXRlQXJy
YXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10
eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxU
X251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNCwKICAgIEFy
cmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE2LAog
ICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE3KQp7CgoKCiAgICBhMS5yZXNpemUoc2hhcGUp
OwogICAgYTIucmVzaXplKHNoYXBlKTsKICAgIGEzLnJlc2l6ZShzaGFwZSk7CiAgICBhNC5yZXNp
emUoc2hhcGUpOwogICAgYTUucmVzaXplKHNoYXBlKTsKICAgIGE2LnJlc2l6ZShzaGFwZSk7CiAg
ICBhNy5yZXNpemUoc2hhcGUpOwoKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rPgp2b2lkIGFsbG9jYXRlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIHNo
YXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJheTxUX251bXR5cGUsTl9y
YW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMsIEFycmF5PFRfbnVtdHlw
ZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNSwgQXJyYXk8VF9u
dW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE3LCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTgpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBh
Mi5yZXNpemUoc2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKICAgIGE0LnJlc2l6ZShzaGFw
ZSk7CiAgICBhNS5yZXNpemUoc2hhcGUpOwogICAgYTYucmVzaXplKHNoYXBlKTsKICAgIGE3LnJl
c2l6ZShzaGFwZSk7CiAgICBhOC5yZXNpemUoc2hhcGUpOwoKfQoKdGVtcGxhdGU8Y2xhc3MgVF9u
dW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIGFsbG9jYXRlQXJyYXlzKGNvbnN0IFRpbnlWZWN0b3I8
aW50LE5fcmFuaz4mIHNoYXBlLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExLCBBcnJh
eTxUX251bXR5cGUsTl9yYW5rPiYgYTIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTMs
IEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNCwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+
JiBhNSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE2LAogICAgQXJyYXk8VF9udW10eXBlLE5f
cmFuaz4mIGE3LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTgsCiAgICBBcnJheTxUX251bXR5
cGUsTl9yYW5rPiYgYTkpCnsKCgoKICAgIGExLnJlc2l6ZShzaGFwZSk7CiAgICBhMi5yZXNpemUo
c2hhcGUpOwogICAgYTMucmVzaXplKHNoYXBlKTsKICAgIGE0LnJlc2l6ZShzaGFwZSk7CiAgICBh
NS5yZXNpemUoc2hhcGUpOwogICAgYTYucmVzaXplKHNoYXBlKTsKICAgIGE3LnJlc2l6ZShzaGFw
ZSk7CiAgICBhOC5yZXNpemUoc2hhcGUpOwogICAgYTkucmVzaXplKHNoYXBlKTsKCn0KCnRlbXBs
YXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFycmF5cyhjb25z
dCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8VF9udW10eXBl
LE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBBcnJheTxUX251
bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwKICAgIEFycmF5
PFRfbnVtdHlwZSxOX3Jhbms+JiBhNywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE4LAogICAg
QXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE5LCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTEw
KQp7CgoKCiAgICBhMS5yZXNpemUoc2hhcGUpOwogICAgYTIucmVzaXplKHNoYXBlKTsKICAgIGEz
LnJlc2l6ZShzaGFwZSk7CiAgICBhNC5yZXNpemUoc2hhcGUpOwogICAgYTUucmVzaXplKHNoYXBl
KTsKICAgIGE2LnJlc2l6ZShzaGFwZSk7CiAgICBhNy5yZXNpemUoc2hhcGUpOwogICAgYTgucmVz
aXplKHNoYXBlKTsKICAgIGE5LnJlc2l6ZShzaGFwZSk7CiAgICBhMTAucmVzaXplKHNoYXBlKTsK
Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBhbGxvY2F0ZUFy
cmF5cyhjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBzaGFwZSwKICAgIEFycmF5PFRfbnVt
dHlwZSxOX3Jhbms+JiBhMSwgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGEyLAogICAgQXJyYXk8
VF9udW10eXBlLE5fcmFuaz4mIGEzLCBBcnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTQsCiAgICBB
cnJheTxUX251bXR5cGUsTl9yYW5rPiYgYTUsIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNiwK
ICAgIEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+JiBhNywgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4m
IGE4LAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGE5LCBBcnJheTxUX251bXR5cGUsTl9y
YW5rPiYgYTEwLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuaz4mIGExMSkKewoKCgogICAgYTEu
cmVzaXplKHNoYXBlKTsKICAgIGEyLnJlc2l6ZShzaGFwZSk7CiAgICBhMy5yZXNpemUoc2hhcGUp
OwogICAgYTQucmVzaXplKHNoYXBlKTsKICAgIGE1LnJlc2l6ZShzaGFwZSk7CiAgICBhNi5yZXNp
emUoc2hhcGUpOwogICAgYTcucmVzaXplKHNoYXBlKTsKICAgIGE4LnJlc2l6ZShzaGFwZSk7CiAg
ICBhOS5yZXNpemUoc2hhcGUpOwogICAgYTEwLnJlc2l6ZShzaGFwZSk7CiAgICBhMTEucmVzaXpl
KHNoYXBlKTsKCn0KCiAKCiAKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgpB
cnJheTxUX251bXR5cGUsTl9yYW5rPjo6QXJyYXkoY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5r
LTE+JiBzaGFwZSwKICAgIGludCBsYXN0RXh0ZW50LCBjb25zdCBHZW5lcmFsQXJyYXlTdG9yYWdl
PE5fcmFuaz4mIHN0b3JhZ2UpCiAgICA6IHN0b3JhZ2VfKHN0b3JhZ2UpCnsKICAgICAKICAgICAK
ICAgICAKCiAgICBpZiAob3JkZXJpbmcoMCkgPT0gMCkKICAgIHsKICAgICAgICAgCiAgICAgICAg
bGVuZ3RoX1swXSA9IGxhc3RFeHRlbnQ7CiAgICAgICAgc3RvcmFnZV8uc2V0QmFzZSgwLDApOwog
ICAgICAgIGZvciAoaW50IGk9MTsgaSA8IE5fcmFuazsgKytpKQogICAgICAgICAgICBsZW5ndGhf
W2ldID0gc2hhcGVbaS0xXTsKICAgIH0KICAgIGVsc2UgaWYgKG9yZGVyaW5nKDApID09IE5fcmFu
ay0xKQogICAgewogICAgICAgICAKICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBOX3JhbmstMTsg
KytpKQogICAgICAgICAgICBsZW5ndGhfW2ldID0gc2hhcGVbaV07CiAgICAgICAgbGVuZ3RoX1tO
X3JhbmstMV0gPSBsYXN0RXh0ZW50OwogICAgICAgIHN0b3JhZ2VfLnNldEJhc2UoTl9yYW5rLTEs
IDApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgIDsKICAgIH0KCiAgICBzZXR1cFN0b3JhZ2Uo
Tl9yYW5rLTEpOwp9CgogCiMgNTQ3ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUv
YmxpdHovYXJyYXkvaW50ZXJsYWNlLmNjIgoKCn0gCgoKCiMgMjQ4NiAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNl
cnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3Jlc2l6ZS5jYyIgMQoKI2RlZmluZSBCWl9B
UlJBWVJFU0laRV9DQwoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L21pbm1heC5oIiAxCgojZGVmaW5lIEJaX01JTk1BWF9ICgoKCm5hbWVzcGFjZSAgYmxp
dHogIHsgCgogCgoKCgpuYW1lc3BhY2UgIG1pbm1heCAgeyAKCnRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMj4KdHlwZW5hbWUgIHByb21vdGVfdHJhaXQ8IFQxICwgVDIgPjo6VF9wcm9tb3RlICBt
aW4oY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKQp7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBwcm9t
b3RlX3RyYWl0PCBUMSAsIFQyID46OlRfcHJvbW90ZSAgVF9wcm9tb3RlOwoKICAgIGlmIChhIDw9
IGIpCiAgICAgICAgcmV0dXJuIFRfcHJvbW90ZShhKTsKICAgIGVsc2UKICAgICAgICByZXR1cm4g
VF9wcm9tb3RlKGIpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+CnR5cGVuYW1lICBw
cm9tb3RlX3RyYWl0PCBUMSAsIFQyID46OlRfcHJvbW90ZSAgbWF4KGNvbnN0IFQxJiBhLCBjb25z
dCBUMiYgYikKewogICAgdHlwZWRlZiB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgVDEgLCBUMiA+
OjpUX3Byb21vdGUgIFRfcHJvbW90ZTsKCiAgICBpZiAoYSA+PSBiKQogICAgICAgIHJldHVybiBU
X3Byb21vdGUoYSk7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIFRfcHJvbW90ZShiKTsKfQoKfSAK
Cn0gCgoKIyA4ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkv
cmVzaXplLmNjIiAyCgoKbmFtZXNwYWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFRfbnVt
dHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OnJlc2l6ZShp
bnQgbGVuZ3RoMCkKewogICAgIDsKICAgICA7CgogICAgaWYgKGxlbmd0aDAgIT0gbGVuZ3RoX1tm
aXJzdFJhbmtdKQogICAgewogICAgICAgIGxlbmd0aF9bZmlyc3RSYW5rXSA9IGxlbmd0aDA7CiAg
ICAgICAgc2V0dXBTdG9yYWdlKDApOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4
dGVudDAsIGludCBleHRlbnQxKQp7CiAgICAgOwogICAgIDsKCiAgICBpZiAoKGV4dGVudDAgIT0g
bGVuZ3RoX1swXSkgfHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkpCiAgICB7CiAgICAgICAgbGVu
Z3RoX1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAgICAg
c2V0dXBTdG9yYWdlKDEpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBO
X3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVudDAs
IGludCBleHRlbnQxLAogICAgaW50IGV4dGVudDIpCnsKICAgICA7CiAgICAgOwoKICAgIGlmICgo
ZXh0ZW50MCAhPSBsZW5ndGhfWzBdKSB8fCAoZXh0ZW50MSAhPSBsZW5ndGhfWzFdKQogICAgICAg
IHx8IChleHRlbnQyICE9IGxlbmd0aF9bMl0pKQogICAgewogICAgICAgIGxlbmd0aF9bMF0gPSBl
eHRlbnQwOwogICAgICAgIGxlbmd0aF9bMV0gPSBleHRlbnQxOwogICAgICAgIGxlbmd0aF9bMl0g
PSBleHRlbnQyOwogICAgICAgIHNldHVwU3RvcmFnZSgyKTsKICAgIH0KfQoKCnRlbXBsYXRlPGNs
YXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46
OnJlc2l6ZShpbnQgZXh0ZW50MCwgaW50IGV4dGVudDEsCiAgICBpbnQgZXh0ZW50MiwgaW50IGV4
dGVudDMpCnsKICAgICA7CgogICAgIDsKCiAgICBpZiAoKGV4dGVudDAgIT0gbGVuZ3RoX1swXSkg
fHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkKICAgICAgICB8fCAoZXh0ZW50MiAhPSBsZW5ndGhf
WzJdKSB8fCAoZXh0ZW50MyAhPSBsZW5ndGhfWzNdKSkKICAgIHsKICAgICAgICBsZW5ndGhfWzBd
ID0gZXh0ZW50MDsKICAgICAgICBsZW5ndGhfWzFdID0gZXh0ZW50MTsKICAgICAgICBsZW5ndGhf
WzJdID0gZXh0ZW50MjsKICAgICAgICBsZW5ndGhfWzNdID0gZXh0ZW50MzsKICAgICAgICBzZXR1
cFN0b3JhZ2UoMyk7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFu
az4Kdm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OnJlc2l6ZShpbnQgZXh0ZW50MCwgaW50
IGV4dGVudDEsCiAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMsIGludCBleHRlbnQ0KQp7CiAg
ICAgOwoKICAgICA7CgogICAgaWYgKChleHRlbnQwICE9IGxlbmd0aF9bMF0pIHx8IChleHRlbnQx
ICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwgKGV4dGVudDIgIT0gbGVuZ3RoX1syXSkgfHwgKGV4
dGVudDMgIT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhfWzRdKSkK
ICAgIHsKICAgICAgICBsZW5ndGhfWzBdID0gZXh0ZW50MDsKICAgICAgICBsZW5ndGhfWzFdID0g
ZXh0ZW50MTsKICAgICAgICBsZW5ndGhfWzJdID0gZXh0ZW50MjsKICAgICAgICBsZW5ndGhfWzNd
ID0gZXh0ZW50MzsKICAgICAgICBsZW5ndGhfWzRdID0gZXh0ZW50NDsKICAgICAgICBzZXR1cFN0
b3JhZ2UoNCk7CiAgICB9Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4K
dm9pZCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz46OnJlc2l6ZShpbnQgZXh0ZW50MCwgaW50IGV4
dGVudDEsCiAgICBpbnQgZXh0ZW50MiwgaW50IGV4dGVudDMsIGludCBleHRlbnQ0LCBpbnQgZXh0
ZW50NSkKewogICAgIDsKCiAgICAgOwoKICAgIGlmICgoZXh0ZW50MCAhPSBsZW5ndGhfWzBdKSB8
fCAoZXh0ZW50MSAhPSBsZW5ndGhfWzFdKQogICAgICAgIHx8IChleHRlbnQyICE9IGxlbmd0aF9b
Ml0pIHx8IChleHRlbnQzICE9IGxlbmd0aF9bM10pCiAgICAgICAgfHwgKGV4dGVudDQgIT0gbGVu
Z3RoX1s0XSkgfHwgKGV4dGVudDUgIT0gbGVuZ3RoX1s1XSkpCiAgICB7CiAgICAgICAgbGVuZ3Ro
X1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAgICAgbGVu
Z3RoX1syXSA9IGV4dGVudDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGV4dGVudDM7CiAgICAgICAg
bGVuZ3RoX1s0XSA9IGV4dGVudDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGV4dGVudDU7CiAgICAg
ICAgc2V0dXBTdG9yYWdlKDUpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGlu
dCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVu
dDAsIGludCBleHRlbnQxLAogICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50
NCwgaW50IGV4dGVudDUsCiAgICBpbnQgZXh0ZW50NikKewogICAgIDsKCgogICAgIDsKCiAgICBp
ZiAoKGV4dGVudDAgIT0gbGVuZ3RoX1swXSkgfHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkKICAg
ICAgICB8fCAoZXh0ZW50MiAhPSBsZW5ndGhfWzJdKSB8fCAoZXh0ZW50MyAhPSBsZW5ndGhfWzNd
KQogICAgICAgIHx8IChleHRlbnQ0ICE9IGxlbmd0aF9bNF0pIHx8IChleHRlbnQ1ICE9IGxlbmd0
aF9bNV0pCiAgICAgICAgfHwgKGV4dGVudDYgIT0gbGVuZ3RoX1s2XSkpCiAgICB7CiAgICAgICAg
bGVuZ3RoX1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAg
ICAgbGVuZ3RoX1syXSA9IGV4dGVudDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGV4dGVudDM7CiAg
ICAgICAgbGVuZ3RoX1s0XSA9IGV4dGVudDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGV4dGVudDU7
CiAgICAgICAgbGVuZ3RoX1s2XSA9IGV4dGVudDY7CiAgICAgICAgc2V0dXBTdG9yYWdlKDYpOwog
ICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVudDAsIGludCBleHRlbnQxLAogICAg
aW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICBp
bnQgZXh0ZW50NiwgaW50IGV4dGVudDcpCnsKICAgICA7CgoKICAgICA7CgogICAgaWYgKChleHRl
bnQwICE9IGxlbmd0aF9bMF0pIHx8IChleHRlbnQxICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwg
KGV4dGVudDIgIT0gbGVuZ3RoX1syXSkgfHwgKGV4dGVudDMgIT0gbGVuZ3RoX1szXSkKICAgICAg
ICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhfWzRdKSB8fCAoZXh0ZW50NSAhPSBsZW5ndGhfWzVdKQog
ICAgICAgIHx8IChleHRlbnQ2ICE9IGxlbmd0aF9bNl0pIHx8IChleHRlbnQ3ICE9IGxlbmd0aF9b
N10pKQogICAgewogICAgICAgIGxlbmd0aF9bMF0gPSBleHRlbnQwOwogICAgICAgIGxlbmd0aF9b
MV0gPSBleHRlbnQxOwogICAgICAgIGxlbmd0aF9bMl0gPSBleHRlbnQyOwogICAgICAgIGxlbmd0
aF9bM10gPSBleHRlbnQzOwogICAgICAgIGxlbmd0aF9bNF0gPSBleHRlbnQ0OwogICAgICAgIGxl
bmd0aF9bNV0gPSBleHRlbnQ1OwogICAgICAgIGxlbmd0aF9bNl0gPSBleHRlbnQ2OwogICAgICAg
IGxlbmd0aF9bN10gPSBleHRlbnQ3OwogICAgICAgIHNldHVwU3RvcmFnZSg3KTsKICAgIH0KfQoK
dGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlw
ZSwgTl9yYW5rPjo6cmVzaXplKGludCBleHRlbnQwLCBpbnQgZXh0ZW50MSwKICAgIGludCBleHRl
bnQyLCBpbnQgZXh0ZW50MywgaW50IGV4dGVudDQsIGludCBleHRlbnQ1LAogICAgaW50IGV4dGVu
dDYsIGludCBleHRlbnQ3LCBpbnQgZXh0ZW50OCkKewogICAgIDsKCgogICAgIDsKCiAgICBpZiAo
KGV4dGVudDAgIT0gbGVuZ3RoX1swXSkgfHwgKGV4dGVudDEgIT0gbGVuZ3RoX1sxXSkKICAgICAg
ICB8fCAoZXh0ZW50MiAhPSBsZW5ndGhfWzJdKSB8fCAoZXh0ZW50MyAhPSBsZW5ndGhfWzNdKQog
ICAgICAgIHx8IChleHRlbnQ0ICE9IGxlbmd0aF9bNF0pIHx8IChleHRlbnQ1ICE9IGxlbmd0aF9b
NV0pCiAgICAgICAgfHwgKGV4dGVudDYgIT0gbGVuZ3RoX1s2XSkgfHwgKGV4dGVudDcgIT0gbGVu
Z3RoX1s3XSkKICAgICAgICB8fCAoZXh0ZW50OCAhPSBsZW5ndGhfWzhdKSkKICAgIHsKICAgICAg
ICBsZW5ndGhfWzBdID0gZXh0ZW50MDsKICAgICAgICBsZW5ndGhfWzFdID0gZXh0ZW50MTsKICAg
ICAgICBsZW5ndGhfWzJdID0gZXh0ZW50MjsKICAgICAgICBsZW5ndGhfWzNdID0gZXh0ZW50MzsK
ICAgICAgICBsZW5ndGhfWzRdID0gZXh0ZW50NDsKICAgICAgICBsZW5ndGhfWzVdID0gZXh0ZW50
NTsKICAgICAgICBsZW5ndGhfWzZdID0gZXh0ZW50NjsKICAgICAgICBsZW5ndGhfWzddID0gZXh0
ZW50NzsKICAgICAgICBsZW5ndGhfWzhdID0gZXh0ZW50ODsKICAgICAgICBzZXR1cFN0b3JhZ2Uo
OCk7CiAgICB9Cn0KCgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQg
QXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoaW50IGV4dGVudDAsIGludCBleHRlbnQx
LAogICAgaW50IGV4dGVudDIsIGludCBleHRlbnQzLCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUs
CiAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcsIGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSkK
ewogICAgIDsKCgoKICAgICA7CgogICAgaWYgKChleHRlbnQwICE9IGxlbmd0aF9bMF0pIHx8IChl
eHRlbnQxICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwgKGV4dGVudDIgIT0gbGVuZ3RoX1syXSkg
fHwgKGV4dGVudDMgIT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhf
WzRdKSB8fCAoZXh0ZW50NSAhPSBsZW5ndGhfWzVdKQogICAgICAgIHx8IChleHRlbnQ2ICE9IGxl
bmd0aF9bNl0pIHx8IChleHRlbnQ3ICE9IGxlbmd0aF9bN10pCiAgICAgICAgfHwgKGV4dGVudDgg
IT0gbGVuZ3RoX1s4XSkgfHwgKGV4dGVudDkgIT0gbGVuZ3RoX1s5XSkpCiAgICB7CiAgICAgICAg
bGVuZ3RoX1swXSA9IGV4dGVudDA7CiAgICAgICAgbGVuZ3RoX1sxXSA9IGV4dGVudDE7CiAgICAg
ICAgbGVuZ3RoX1syXSA9IGV4dGVudDI7CiAgICAgICAgbGVuZ3RoX1szXSA9IGV4dGVudDM7CiAg
ICAgICAgbGVuZ3RoX1s0XSA9IGV4dGVudDQ7CiAgICAgICAgbGVuZ3RoX1s1XSA9IGV4dGVudDU7
CiAgICAgICAgbGVuZ3RoX1s2XSA9IGV4dGVudDY7CiAgICAgICAgbGVuZ3RoX1s3XSA9IGV4dGVu
dDc7CiAgICAgICAgbGVuZ3RoX1s4XSA9IGV4dGVudDg7CiAgICAgICAgbGVuZ3RoX1s5XSA9IGV4
dGVudDk7CiAgICAgICAgc2V0dXBTdG9yYWdlKDkpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBU
X251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNp
emUoaW50IGV4dGVudDAsIGludCBleHRlbnQxLAogICAgaW50IGV4dGVudDIsIGludCBleHRlbnQz
LCBpbnQgZXh0ZW50NCwgaW50IGV4dGVudDUsCiAgICBpbnQgZXh0ZW50NiwgaW50IGV4dGVudDcs
IGludCBleHRlbnQ4LCBpbnQgZXh0ZW50OSwKICAgIGludCBleHRlbnQxMCkKewogICAgIDsKCgoK
ICAgICA7CgogICAgaWYgKChleHRlbnQwICE9IGxlbmd0aF9bMF0pIHx8IChleHRlbnQxICE9IGxl
bmd0aF9bMV0pCiAgICAgICAgfHwgKGV4dGVudDIgIT0gbGVuZ3RoX1syXSkgfHwgKGV4dGVudDMg
IT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAoZXh0ZW50NCAhPSBsZW5ndGhfWzRdKSB8fCAoZXh0
ZW50NSAhPSBsZW5ndGhfWzVdKQogICAgICAgIHx8IChleHRlbnQ2ICE9IGxlbmd0aF9bNl0pIHx8
IChleHRlbnQ3ICE9IGxlbmd0aF9bN10pCiAgICAgICAgfHwgKGV4dGVudDggIT0gbGVuZ3RoX1s4
XSkgfHwgKGV4dGVudDkgIT0gbGVuZ3RoX1s5XSkKICAgICAgICB8fCAoZXh0ZW50MTAgIT0gbGVu
Z3RoX1sxMF0pKQogICAgewogICAgICAgIGxlbmd0aF9bMF0gPSBleHRlbnQwOwogICAgICAgIGxl
bmd0aF9bMV0gPSBleHRlbnQxOwogICAgICAgIGxlbmd0aF9bMl0gPSBleHRlbnQyOwogICAgICAg
IGxlbmd0aF9bM10gPSBleHRlbnQzOwogICAgICAgIGxlbmd0aF9bNF0gPSBleHRlbnQ0OwogICAg
ICAgIGxlbmd0aF9bNV0gPSBleHRlbnQ1OwogICAgICAgIGxlbmd0aF9bNl0gPSBleHRlbnQ2Owog
ICAgICAgIGxlbmd0aF9bN10gPSBleHRlbnQ3OwogICAgICAgIGxlbmd0aF9bOF0gPSBleHRlbnQ4
OwogICAgICAgIGxlbmd0aF9bOV0gPSBleHRlbnQ5OwogICAgICAgIGxlbmd0aF9bMTBdID0gZXh0
ZW50MTA7CiAgICAgICAgc2V0dXBTdG9yYWdlKDEwKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6cmVz
aXplQW5kUHJlc2VydmUoaW50IGxlbmd0aDApCnsKICAgICA7CiAgICAgOwoKICAgIGlmIChsZW5n
dGgwICE9IGxlbmd0aF9bZmlyc3RSYW5rXSkKICAgIHsKIyAyOTEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9yZXNpemUuY2MiCgogICAgICAgIFRfYXJyYXkg
QihiYXNlKCksIGJsaXR6Ojogc2hhcGUgIChsZW5ndGgwKSwgc3RvcmFnZV8pOyAgIAoKICAgICAg
ICBpZiAobnVtRWxlbWVudHMoKSkKICAgICAgICB7CiAgICAgICAgICAgIFJhbmdlIG92ZXJsYXAw
ID0gUmFuZ2UoZnJvbVN0YXJ0LCBtaW5tYXg6Om1pbihCLnVib3VuZCgwKSwgCiAgICAgICAgICAg
ICAgdWJvdW5kKDApKSk7CiAgICAgICAgICAgIEIob3ZlcmxhcDApID0gKCp0aGlzKShvdmVybGFw
MCk7CiAgICAgICAgfQogICAgICAgIHJlZmVyZW5jZShCKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xh
c3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6
cmVzaXplQW5kUHJlc2VydmUoaW50IGxlbmd0aDAsIGludCBsZW5ndGgxKQp7CiAgICAgOwogICAg
IDsKCiAgICBpZiAoKGxlbmd0aDAgIT0gbGVuZ3RoX1swXSkgfHwgKGxlbmd0aDEgIT0gbGVuZ3Ro
X1sxXSkpCiAgICB7CiAgICAgICAgVF9hcnJheSBCKGJhc2UoKSwgYmxpdHo6OiBzaGFwZSAgKGxl
bmd0aDAsIGxlbmd0aDEpLCBzdG9yYWdlXyk7CgogICAgICAgIGlmIChudW1FbGVtZW50cygpKQog
ICAgICAgIHsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDAgPSBSYW5nZShmcm9tU3RhcnQsIG1p
bm1heDo6bWluKEIudWJvdW5kKDApLCAKICAgICAgICAgICAgICAgIHVib3VuZCgwKSkpOwogICAg
ICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51
Ym91bmQoMSksIAogICAgICAgICAgICAgICAgdWJvdW5kKDEpKSk7CiAgICAgICAgICAgIEIob3Zl
cmxhcDAsIG92ZXJsYXAxKSA9ICgqdGhpcykob3ZlcmxhcDAsIG92ZXJsYXAxKTsKICAgICAgICB9
CiAgICAgICAgcmVmZXJlbmNlKEIpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemVBbmRQcmVz
ZXJ2ZShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEsCiAgICBpbnQgbGVuZ3RoMikKewogICAgIDsK
ICAgICA7CgogICAgaWYgKChsZW5ndGgwICE9IGxlbmd0aF9bMF0pIHx8IChsZW5ndGgxICE9IGxl
bmd0aF9bMV0pCiAgICAgICAgfHwgKGxlbmd0aDIgIT0gbGVuZ3RoX1syXSkpCiAgICB7CiAgICAg
ICAgVF9hcnJheSBCKGJhc2UoKSwgYmxpdHo6OiBzaGFwZSAgKGxlbmd0aDAsIGxlbmd0aDEsIGxl
bmd0aDIpLCAKICAgICAgICAgICAgc3RvcmFnZV8pOwogICAgICAgIGlmIChudW1FbGVtZW50cygp
KQogICAgICAgIHsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDAgPSBSYW5nZShmcm9tU3RhcnQs
IG1pbm1heDo6bWluKEIudWJvdW5kKDApLCAKICAgICAgICAgICAgICAgIHVib3VuZCgwKSkpOwog
ICAgICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4o
Qi51Ym91bmQoMSksIAogICAgICAgICAgICAgICAgdWJvdW5kKDEpKSk7CiAgICAgICAgICAgIFJh
bmdlIG92ZXJsYXAyID0gUmFuZ2UoZnJvbVN0YXJ0LCBtaW5tYXg6Om1pbihCLnVib3VuZCgyKSwg
CiAgICAgICAgICAgICAgICB1Ym91bmQoMikpKTsKICAgICAgICAgICAgQihvdmVybGFwMCwgb3Zl
cmxhcDEsIG92ZXJsYXAyKSA9ICgqdGhpcykob3ZlcmxhcDAsIG92ZXJsYXAxLCAKICAgICAgICAg
ICAgICAgIG92ZXJsYXAyKTsKICAgICAgICB9CiAgICAgICAgcmVmZXJlbmNlKEIpOwogICAgfQp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10
eXBlLCBOX3Jhbms+OjpyZXNpemVBbmRQcmVzZXJ2ZShpbnQgbGVuZ3RoMCwgaW50IGxlbmd0aDEs
CiAgICBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMpCnsKICAgICA7CgogICAgIDsKCiAgICBpZiAo
KGxlbmd0aDAgIT0gbGVuZ3RoX1swXSkgfHwgKGxlbmd0aDEgIT0gbGVuZ3RoX1sxXSkKICAgICAg
ICB8fCAobGVuZ3RoMiAhPSBsZW5ndGhfWzJdKSB8fCAobGVuZ3RoMyAhPSBsZW5ndGhfWzNdKSkK
ICAgIHsKICAgICAgICBUX2FycmF5IEIoYmFzZSgpLCBibGl0ejo6IHNoYXBlICAobGVuZ3RoMCwg
bGVuZ3RoMSwKICAgICAgICAgICAgbGVuZ3RoMiwgbGVuZ3RoMyksIHN0b3JhZ2VfKTsKCiAgICAg
ICAgaWYgKG51bUVsZW1lbnRzKCkpCiAgICAgICAgewogICAgICAgICAgICBSYW5nZSBvdmVybGFw
MCA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMCksIHVib3VuZCgwKSkp
OwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4Ojpt
aW4oQi51Ym91bmQoMSksIHVib3VuZCgxKSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMiA9
IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMiksIHVib3VuZCgyKSkpOwog
ICAgICAgICAgICBSYW5nZSBvdmVybGFwMyA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4o
Qi51Ym91bmQoMyksIHVib3VuZCgzKSkpOwogICAgICAgICAgICBCKG92ZXJsYXAwLCBvdmVybGFw
MSwgb3ZlcmxhcDIsIG92ZXJsYXAzKSA9ICgqdGhpcykob3ZlcmxhcDAsCiAgICAgICAgICAgICAg
ICBvdmVybGFwMSwgb3ZlcmxhcDIsIG92ZXJsYXAzKTsKICAgICAgICB9CiAgICAgICAgcmVmZXJl
bmNlKEIpOwogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZv
aWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemVBbmRQcmVzZXJ2ZShpbnQgbGVuZ3Ro
MCwgaW50IGxlbmd0aDEsCiAgICBpbnQgbGVuZ3RoMiwgaW50IGxlbmd0aDMsIGludCBsZW5ndGg0
KQp7CiAgICAgOwoKICAgICA7CgogICAgaWYgKChsZW5ndGgwICE9IGxlbmd0aF9bMF0pIHx8IChs
ZW5ndGgxICE9IGxlbmd0aF9bMV0pCiAgICAgICAgfHwgKGxlbmd0aDIgIT0gbGVuZ3RoX1syXSkg
fHwgKGxlbmd0aDMgIT0gbGVuZ3RoX1szXSkKICAgICAgICB8fCAobGVuZ3RoNCAhPSBsZW5ndGhf
WzRdKSkKICAgIHsKICAgICAgICBUX2FycmF5IEIoYmFzZSgpLCBibGl0ejo6IHNoYXBlICAobGVu
Z3RoMCwgbGVuZ3RoMSwgCiAgICAgICAgICAgIGxlbmd0aDIsIGxlbmd0aDMsIGxlbmd0aDQpLCBz
dG9yYWdlXyk7CgogICAgICAgIGlmIChudW1FbGVtZW50cygpKQogICAgICAgIHsKICAgICAgICAg
ICAgUmFuZ2Ugb3ZlcmxhcDAgPSBSYW5nZShmcm9tU3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5k
KDApLCB1Ym91bmQoMCkpKTsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDEgPSBSYW5nZShmcm9t
U3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDEpLCB1Ym91bmQoMSkpKTsKICAgICAgICAgICAg
UmFuZ2Ugb3ZlcmxhcDIgPSBSYW5nZShmcm9tU3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDIp
LCB1Ym91bmQoMikpKTsKICAgICAgICAgICAgUmFuZ2Ugb3ZlcmxhcDMgPSBSYW5nZShmcm9tU3Rh
cnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDMpLCB1Ym91bmQoMykpKTsKICAgICAgICAgICAgUmFu
Z2Ugb3ZlcmxhcDQgPSBSYW5nZShmcm9tU3RhcnQsIG1pbm1heDo6bWluKEIudWJvdW5kKDQpLCB1
Ym91bmQoNCkpKTsKICAgICAgICAgICAgQihvdmVybGFwMCwgb3ZlcmxhcDEsIG92ZXJsYXAyLCBv
dmVybGFwMywgb3ZlcmxhcDQpID0gKCp0aGlzKQogICAgICAgICAgICAgICAgKG92ZXJsYXAwLCBv
dmVybGFwMSwgb3ZlcmxhcDIsIG92ZXJsYXAzLCBvdmVybGFwNCk7CiAgICAgICAgfQogICAgICAg
IHJlZmVyZW5jZShCKTsKICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9y
YW5rPgp2b2lkIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPjo6cmVzaXplQW5kUHJlc2VydmUoaW50
IGxlbmd0aDAsIGludCBsZW5ndGgxLAogICAgaW50IGxlbmd0aDIsIGludCBsZW5ndGgzLCBpbnQg
bGVuZ3RoNCwgaW50IGxlbmd0aDUpCnsKICAgICA7CgogICAgIDsKCiAgICBpZiAoKGxlbmd0aDAg
IT0gbGVuZ3RoX1swXSkgfHwgKGxlbmd0aDEgIT0gbGVuZ3RoX1sxXSkKICAgICAgICB8fCAobGVu
Z3RoMiAhPSBsZW5ndGhfWzJdKSB8fCAobGVuZ3RoMyAhPSBsZW5ndGhfWzNdKQogICAgICAgIHx8
IChsZW5ndGg0ICE9IGxlbmd0aF9bNF0pIHx8IChsZW5ndGg1ICE9IGxlbmd0aF9bNV0pKQogICAg
ewogICAgICAgIFRfYXJyYXkgQihiYXNlKCksIGJsaXR6Ojogc2hhcGUgIChsZW5ndGgwLCBsZW5n
dGgxLCBsZW5ndGgyLCAKICAgICAgICAgICAgbGVuZ3RoMywgbGVuZ3RoNCwgbGVuZ3RoNSksIHN0
b3JhZ2VfKTsKCiAgICAgICAgaWYgKG51bUVsZW1lbnRzKCkpCiAgICAgICAgewogICAgICAgICAg
ICBSYW5nZSBvdmVybGFwMCA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQo
MCksIHVib3VuZCgwKSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMSA9IFJhbmdlKGZyb21T
dGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMSksIHVib3VuZCgxKSkpOwogICAgICAgICAgICBS
YW5nZSBvdmVybGFwMiA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoMiks
IHVib3VuZCgyKSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwMyA9IFJhbmdlKGZyb21TdGFy
dCwgbWlubWF4OjptaW4oQi51Ym91bmQoMyksIHVib3VuZCgzKSkpOwogICAgICAgICAgICBSYW5n
ZSBvdmVybGFwNCA9IFJhbmdlKGZyb21TdGFydCwgbWlubWF4OjptaW4oQi51Ym91bmQoNCksIHVi
b3VuZCg0KSkpOwogICAgICAgICAgICBSYW5nZSBvdmVybGFwNSA9IFJhbmdlKGZyb21TdGFydCwg
bWlubWF4OjptaW4oQi51Ym91bmQoNSksIHVib3VuZCg1KSkpOwogICAgICAgICAgICBCKG92ZXJs
YXAwLCBvdmVybGFwMSwgb3ZlcmxhcDIsIG92ZXJsYXAzLCBvdmVybGFwNCwgb3ZlcmxhcDUpCiAg
ICAgICAgICAgICAgICA9ICgqdGhpcykob3ZlcmxhcDAsIG92ZXJsYXAxLCBvdmVybGFwMiwgb3Zl
cmxhcDMsIG92ZXJsYXA0LAogICAgICAgICAgICAgICAgb3ZlcmxhcDUpOwogICAgICAgIH0KICAg
ICAgICByZWZlcmVuY2UoQik7CiAgICB9Cn0KCgogCgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpyZXNpemUoY29uc3Qg
VGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgZXh0ZW50KQp7CiAKIAogCiAKICAgICAgICBsZW5ndGhf
ID0gZXh0ZW50OwogICAgICAgIHNldHVwU3RvcmFnZShOX3JhbmspOwogCn0KCn0gCgoKIyAyNDg3
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAx
ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvc2xpY2luZy5j
YyIgMQoKI2RlZmluZSBCWl9BUlJBWVNMSUNJTkdfQ0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7
IAoKIAoKCgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5
PFBfbnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5
cGUsIE5fcmFuaz4mIGFycmF5LCBjb25zdCBSZWN0RG9tYWluPE5fcmFuaz4mIHN1YmRvbWFpbikK
ewogICAgcmVmZXJlbmNlKGFycmF5KTsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5fcmFuazsgKytp
KQogICAgICAgIHNsaWNlKGksIHN1YmRvbWFpbltpXSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVt
dHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVj
dFN1YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAp
CnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46
OmNvbnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwg
UmFuZ2UgcjAsIFJhbmdlIHIxKQp7CiAgICByZWZlcmVuY2UoYXJyYXkpOwogICAgc2xpY2UoMCwg
cjApOwogICAgc2xpY2UoMSwgcjEpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBO
X3Jhbms+CnZvaWQgQXJyYXk8UF9udW10eXBlLCBOX3Jhbms+Ojpjb25zdHJ1Y3RTdWJhcnJheSgK
ICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYXJyYXksIFJhbmdlIHIwLCBSYW5nZSByMSwg
UmFuZ2UgcjIpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7CiAgICBz
bGljZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVjdFN1
YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJh
bmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBz
bGljZSgwLCByMCk7CiAgICBzbGljZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7CiAgICBzbGlj
ZSgzLCByMyk7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBB
cnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8VF9u
dW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwgUmFu
Z2UgcjMsCiAgICBSYW5nZSByNCkKewogICAgcmVmZXJlbmNlKGFycmF5KTsKICAgIHNsaWNlKDAs
IHIwKTsKICAgIHNsaWNlKDEsIHIxKTsKICAgIHNsaWNlKDIsIHIyKTsKICAgIHNsaWNlKDMsIHIz
KTsKICAgIHNsaWNlKDQsIHI0KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9y
YW5rPgp2b2lkIEFycmF5PFBfbnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAg
ICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJh
bmdlIHIyLCBSYW5nZSByMywKICAgIFJhbmdlIHI0LCBSYW5nZSByNSkKewogICAgcmVmZXJlbmNl
KGFycmF5KTsKICAgIHNsaWNlKDAsIHIwKTsKICAgIHNsaWNlKDEsIHIxKTsKICAgIHNsaWNlKDIs
IHIyKTsKICAgIHNsaWNlKDMsIHIzKTsKICAgIHNsaWNlKDQsIHI0KTsKICAgIHNsaWNlKDUsIHI1
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFBf
bnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywK
ICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7
CiAgICBzbGljZSgwLCByMCk7CiAgICBzbGljZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7CiAg
ICBzbGljZSgzLCByMyk7CiAgICBzbGljZSg0LCByNCk7CiAgICBzbGljZSg1LCByNSk7CiAgICBz
bGljZSg2LCByNik7Cn0KCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9p
ZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNvbnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFuZ2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwg
UmFuZ2UgcjMsCiAgICBSYW5nZSByNCwgUmFuZ2UgcjUsIFJhbmdlIHI2LCBSYW5nZSByNykKewog
ICAgcmVmZXJlbmNlKGFycmF5KTsKICAgIHNsaWNlKDAsIHIwKTsKICAgIHNsaWNlKDEsIHIxKTsK
ICAgIHNsaWNlKDIsIHIyKTsKICAgIHNsaWNlKDMsIHIzKTsKICAgIHNsaWNlKDQsIHI0KTsKICAg
IHNsaWNlKDUsIHI1KTsKICAgIHNsaWNlKDYsIHI2KTsKICAgIHNsaWNlKDcsIHI3KTsKfQoKdGVt
cGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFBfbnVtdHlwZSwg
Tl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4m
IGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywKICAgIFJhbmdl
IHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCkKewogICAgcmVmZXJl
bmNlKGFycmF5KTsKICAgIHNsaWNlKDAsIHIwKTsKICAgIHNsaWNlKDEsIHIxKTsKICAgIHNsaWNl
KDIsIHIyKTsKICAgIHNsaWNlKDMsIHIzKTsKICAgIHNsaWNlKDQsIHI0KTsKICAgIHNsaWNlKDUs
IHI1KTsKICAgIHNsaWNlKDYsIHI2KTsKICAgIHNsaWNlKDcsIHI3KTsKICAgIHNsaWNlKDgsIHI4
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPgp2b2lkIEFycmF5PFBf
bnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U3ViYXJyYXkoCiAgICBBcnJheTxUX251bXR5cGUs
IE5fcmFuaz4mIGFycmF5LCBSYW5nZSByMCwgUmFuZ2UgcjEsIFJhbmdlIHIyLCBSYW5nZSByMywK
ICAgIFJhbmdlIHI0LCBSYW5nZSByNSwgUmFuZ2UgcjYsIFJhbmdlIHI3LCBSYW5nZSByOCwgUmFu
Z2UgcjkpCnsKICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7CiAgICBzbGlj
ZSgxLCByMSk7CiAgICBzbGljZSgyLCByMik7CiAgICBzbGljZSgzLCByMyk7CiAgICBzbGljZSg0
LCByNCk7CiAgICBzbGljZSg1LCByNSk7CiAgICBzbGljZSg2LCByNik7CiAgICBzbGljZSg3LCBy
Nyk7CiAgICBzbGljZSg4LCByOCk7CiAgICBzbGljZSg5LCByOSk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFBfbnVtdHlwZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OmNv
bnN0cnVjdFN1YmFycmF5KAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhcnJheSwgUmFu
Z2UgcjAsIFJhbmdlIHIxLCBSYW5nZSByMiwgUmFuZ2UgcjMsCiAgICBSYW5nZSByNCwgUmFuZ2Ug
cjUsIFJhbmdlIHI2LCBSYW5nZSByNywgUmFuZ2UgcjgsIFJhbmdlIHI5LCBSYW5nZSByMTApCnsK
ICAgIHJlZmVyZW5jZShhcnJheSk7CiAgICBzbGljZSgwLCByMCk7CiAgICBzbGljZSgxLCByMSk7
CiAgICBzbGljZSgyLCByMik7CiAgICBzbGljZSgzLCByMyk7CiAgICBzbGljZSg0LCByNCk7CiAg
ICBzbGljZSg1LCByNSk7CiAgICBzbGljZSg2LCByNik7CiAgICBzbGljZSg3LCByNyk7CiAgICBz
bGljZSg4LCByOCk7CiAgICBzbGljZSg5LCByOSk7CiAgICBzbGljZSgxMCwgcjEwKTsKfQoKIAoK
CgoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlLCBpbnQgTl9yYW5rPiB0ZW1wbGF0ZTxpbnQgTl9y
YW5rMiwgY2xhc3MgUjAsCiAgICBjbGFzcyBSMSwgY2xhc3MgUjIsIGNsYXNzIFIzLCBjbGFzcyBS
NCwgY2xhc3MgUjUsIGNsYXNzIFI2LCBjbGFzcyBSNywKICAgIGNsYXNzIFI4LCBjbGFzcyBSOSwg
Y2xhc3MgUjEwPgp2b2lkIEFycmF5PFBfbnVtdHlwZSwgTl9yYW5rPjo6Y29uc3RydWN0U2xpY2Uo
QXJyYXk8VF9udW10eXBlLCBOX3JhbmsyPiYgYXJyYXksCiAgICBSMCByMCwgUjEgcjEsIFIyIHIy
LCBSMyByMywgUjQgcjQsIFI1IHI1LCBSNiByNiwgUjcgcjcsIFI4IHI4LCBSOSByOSwKICAgIFIx
MCByMTApCnsKICAgIE1lbW9yeUJsb2NrUmVmZXJlbmNlPFBfbnVtdHlwZT46OmNoYW5nZUJsb2Nr
KGFycmF5LCBhcnJheS56ZXJvT2Zmc2V0KCkpOwogICAgZGF0YV8gPSBhcnJheS5kYXRhWmVybygp
OwoKICAgIGludCBzZXRSYW5rID0gMDsKCiAgICBUaW55VmVjdG9yPGludCwgTl9yYW5rMj4gcmFu
a01hcDsKCiAgICBzbGljZShzZXRSYW5rLCByMCwgYXJyYXksIHJhbmtNYXAsIDApOwogICAgc2xp
Y2Uoc2V0UmFuaywgcjEsIGFycmF5LCByYW5rTWFwLCAxKTsKICAgIHNsaWNlKHNldFJhbmssIHIy
LCBhcnJheSwgcmFua01hcCwgMik7CiAgICBzbGljZShzZXRSYW5rLCByMywgYXJyYXksIHJhbmtN
YXAsIDMpOwogICAgc2xpY2Uoc2V0UmFuaywgcjQsIGFycmF5LCByYW5rTWFwLCA0KTsKICAgIHNs
aWNlKHNldFJhbmssIHI1LCBhcnJheSwgcmFua01hcCwgNSk7CiAgICBzbGljZShzZXRSYW5rLCBy
NiwgYXJyYXksIHJhbmtNYXAsIDYpOwogICAgc2xpY2Uoc2V0UmFuaywgcjcsIGFycmF5LCByYW5r
TWFwLCA3KTsKICAgIHNsaWNlKHNldFJhbmssIHI4LCBhcnJheSwgcmFua01hcCwgOCk7CiAgICBz
bGljZShzZXRSYW5rLCByOSwgYXJyYXksIHJhbmtNYXAsIDkpOwogICAgc2xpY2Uoc2V0UmFuaywg
cjEwLCBhcnJheSwgcmFua01hcCwgMTApOwoKICAgICAKICAgICAKICAgIGludCBqID0gMDsKICAg
IGZvciAoaW50IGk9MDsgaSA8IE5fcmFuazI7ICsraSkKICAgIHsKICAgICAgICBpZiAocmFua01h
cFthcnJheS5vcmRlcmluZyhpKV0gIT0gLTEpCiAgICAgICAgICAgIHN0b3JhZ2VfLnNldE9yZGVy
aW5nKGorKywgcmFua01hcFthcnJheS5vcmRlcmluZyhpKV0pOwogICAgfQoKICAgIGNhbGN1bGF0
ZVplcm9PZmZzZXQoKTsKfQoKIAoKCgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5f
cmFuaz4gdGVtcGxhdGU8aW50IE5fcmFuazI+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+
OjpzbGljZShpbnQmIHNldFJhbmssIFJhbmdlIHIsCiAgICBBcnJheTxUX251bXR5cGUsTl9yYW5r
Mj4mIGFycmF5LCBUaW55VmVjdG9yPGludCxOX3JhbmsyPiYgcmFua01hcCwKICAgIGludCBzb3Vy
Y2VSYW5rKQp7CiAgICAgCiAgICAgCgoKCgoKCgogICAgcmFua01hcFtzb3VyY2VSYW5rXSA9IHNl
dFJhbms7CiAgICBsZW5ndGhfW3NldFJhbmtdID0gYXJyYXkubGVuZ3RoKHNvdXJjZVJhbmspOwog
ICAgc3RyaWRlX1tzZXRSYW5rXSA9IGFycmF5LnN0cmlkZShzb3VyY2VSYW5rKTsKICAgIHN0b3Jh
Z2VfLnNldEFzY2VuZGluZ0ZsYWcoc2V0UmFuaywgYXJyYXkuaXNSYW5rU3RvcmVkQXNjZW5kaW5n
KHNvdXJjZVJhbmspKTsKICAgIHN0b3JhZ2VfLnNldEJhc2Uoc2V0UmFuaywgYXJyYXkuYmFzZShz
b3VyY2VSYW5rKSk7CiAgICBzbGljZShzZXRSYW5rLCByKTsKICAgICsrc2V0UmFuazsKfQoKIAoK
CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4gdGVtcGxhdGU8aW50IE5f
cmFuazI+CnZvaWQgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+OjpzbGljZShpbnQmIHNldFJhbmss
IGludCBpLAogICAgQXJyYXk8VF9udW10eXBlLE5fcmFuazI+JiBhcnJheSwgVGlueVZlY3Rvcjxp
bnQsTl9yYW5rMj4mIHJhbmtNYXAsCiAgICBpbnQgc291cmNlUmFuaykKewoKCgoKCgogICAgIDsK
CgoKCiAgICByYW5rTWFwW3NvdXJjZVJhbmtdID0gLTE7CiAgICBkYXRhXyArPSBpICogYXJyYXku
c3RyaWRlKHNvdXJjZVJhbmspOwoKCgp9CgogCgoKCgoKCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlw
ZSwgaW50IE5fcmFuaz4Kdm9pZCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz46OnNsaWNlKGludCBy
YW5rLCBSYW5nZSByKQp7CiAgICAgOwoKICAgIGludCBmaXJzdCA9IHIuZmlyc3QobGJvdW5kKHJh
bmspKTsKICAgIGludCBsYXN0ICA9IHIubGFzdCh1Ym91bmQocmFuaykpOwogICAgaW50IHN0cmlk
ZSA9IHIuc3RyaWRlKCk7CgoKCgoKCgogICAgIDsKCgoKCgoKCgogICAgIAogICAgIAogICAgIAog
ICAgIAoKICAgIGxlbmd0aF9bcmFua10gPSAobGFzdCAtIGZpcnN0KSAvIHN0cmlkZSArIDE7Cgog
ICAgIAogICAgaW50IG9mZnNldCA9IC1iYXNlKHJhbmspICogc3RyaWRlX1tyYW5rXSAqIHN0cmlk
ZQogICAgICAgICAgICAgICAgICsgZmlyc3QgKiBzdHJpZGVfW3JhbmtdOwogICAgIAogICAgZGF0
YV8gKz0gb2Zmc2V0OwogICAgemVyb09mZnNldF8gLT0gb2Zmc2V0OwoKICAgIHN0cmlkZV9bcmFu
a10gKj0gc3RyaWRlOwp9Cgp9IAoKCiMgMjQ4OCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FycmF5LmgiIDIKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9p
bmNsdWRlL2JsaXR6L2FycmF5L2N5Y2xlLmNjIiAxCgojZGVmaW5lIEJaX0FSUkFZQ1lDTEVfQ0MK
CgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQg
Tl9yYW5rPgp2b2lkIGN5Y2xlQXJyYXlzKEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYSwgQXJy
YXk8VF9udW10eXBlLCBOX3Jhbms+JiBiKQp7CiAgICBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4g
dG1wKGEpOwogICAgYS5yZWZlcmVuY2UoYik7CiAgICBiLnJlZmVyZW5jZSh0bXApOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jhbms+CnZvaWQgY3ljbGVBcnJheXMoQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+JiBhLCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGIsCiAgICBB
cnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGMpCnsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5r
PiB0bXAoYSk7CiAgICBhLnJlZmVyZW5jZShiKTsKICAgIGIucmVmZXJlbmNlKGMpOwogICAgYy5y
ZWZlcmVuY2UodG1wKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgp2
b2lkIGN5Y2xlQXJyYXlzKEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgYSwgQXJyYXk8VF9udW10
eXBlLCBOX3Jhbms+JiBiLAogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBjLCBBcnJheTxU
X251bXR5cGUsIE5fcmFuaz4mIGQpCnsKICAgIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiB0bXAo
YSk7CiAgICBhLnJlZmVyZW5jZShiKTsKICAgIGIucmVmZXJlbmNlKGMpOwogICAgYy5yZWZlcmVu
Y2UoZCk7CiAgICBkLnJlZmVyZW5jZSh0bXApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUs
IGludCBOX3Jhbms+CnZvaWQgY3ljbGVBcnJheXMoQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBh
LCBBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGIsCiAgICBBcnJheTxUX251bXR5cGUsIE5fcmFu
az4mIGMsIEFycmF5PFRfbnVtdHlwZSwgTl9yYW5rPiYgZCwKICAgIEFycmF5PFRfbnVtdHlwZSwg
Tl9yYW5rPiYgZSkKewogICAgQXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IHRtcChhKTsKICAgIGEu
cmVmZXJlbmNlKGIpOwogICAgYi5yZWZlcmVuY2UoYyk7CiAgICBjLnJlZmVyZW5jZShkKTsKICAg
IGQucmVmZXJlbmNlKGUpOwogICAgZS5yZWZlcmVuY2UodG1wKTsKfQoKfSAKCgojIDI0ODkgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91
ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9jb21wbGV4LmNjIiAx
CiAKCgojZGVmaW5lIEJaX0FSUkFZQ09NUExFWF9DQwoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsg
CgoKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5lIEFycmF5PFRf
bnVtdHlwZSwgTl9yYW5rPiByZWFsKGNvbnN0IEFycmF5PGNvbXBsZXg8VF9udW10eXBlPixOX3Jh
bms+JiBBKQp7CiAgICByZXR1cm4gQS5leHRyYWN0Q29tcG9uZW50KFRfbnVtdHlwZSgpLCAwLCAy
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlLCBpbnQgTl9yYW5rPgppbmxpbmUgQXJyYXk8
VF9udW10eXBlLCBOX3Jhbms+IGltYWcoY29uc3QgQXJyYXk8Y29tcGxleDxUX251bXR5cGU+LE5f
cmFuaz4mIEEpCnsKICAgIHJldHVybiBBLmV4dHJhY3RDb21wb25lbnQoVF9udW10eXBlKCksIDEs
IDIpOwp9CgoKCgp9IAoKCgojIDI0OTAgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVk
ZS9ibGl0ei9hcnJheS96aXAuaCIgMQoKI2RlZmluZSBCWl9BUlJBWVpJUF9ICgoKCgoKbmFtZXNw
YWNlICBibGl0eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFBfY29tcG9uZW50LCBjbGFzcyBUMSwgY2xh
c3MgVDI+CnN0cnVjdCBaaXAyIHsKICAgIHR5cGVkZWYgUF9jb21wb25lbnQgVF9udW10eXBlOwoK
ICAgIHN0YXRpYyBpbmxpbmUgVF9udW10eXBlIGFwcGx5KFQxIGEsIFQyIGIpCiAgICB7IHJldHVy
biBUX251bXR5cGUoYSxiKTsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFRfbGVmdCwgY2xhc3MgVF9y
aWdodD4KICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBwcmV0dHlQcmludChzdHJpbmcmIHN0ciwKICAg
ICAgICBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBUX2xlZnQmIHQxLAogICAgICAg
IGNvbnN0IFRfcmlnaHQmIHQyKQogICAgewogICAgICAgIHN0ciArPSAiemlwKCI7CiAgICAgICAg
dDEucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOwogICAgICAgIHN0ciArPSAiLCI7CiAgICAgICAg
dDIucHJldHR5UHJpbnQoc3RyLCBmb3JtYXQpOwogICAgICAgIHN0ciArPSAiKSI7CiAgICB9Cn07
Cgp0ZW1wbGF0ZTxjbGFzcyBUX2NvbXBvbmVudCwgY2xhc3MgVDEsIGNsYXNzIFQyPgppbmxpbmUg
X2J6X0FycmF5RXhwcjxfYnpfQXJyYXlFeHByT3A8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4
cHIsIAogICAgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgWmlwMjxUX2NvbXBvbmVudCwg
CiAgICB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByOjpUX251bXR5cGUsCiAgICB0eXBlbmFt
ZSAgYXNFeHByPFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPgp6aXAoY29uc3QgVDEmIGEsIGNv
bnN0IFQyJiBiLCBUX2NvbXBvbmVudCkKewogICAgcmV0dXJuIF9iel9BcnJheUV4cHI8X2J6X0Fy
cmF5RXhwck9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLAogICAgICAgIHR5cGVuYW1l
ICBhc0V4cHI8VDI+OjpUX2V4cHIsIFppcDI8VF9jb21wb25lbnQsIAogICAgICAgIHR5cGVuYW1l
ICBhc0V4cHI8VDE+OjpUX2V4cHI6OlRfbnVtdHlwZSwKICAgICAgICB0eXBlbmFtZSAgYXNFeHBy
PFQyPjo6VF9leHByOjpUX251bXR5cGU+ID4gPihhLGIpOwp9Cgp9IAoKCgojIDI0OTEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS5oIiAyCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS93aGVyZS5oIiAxCgojZGVm
aW5lIEJaX0FSUkFZV0hFUkVfSAoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBjbGFzcyBQX2V4cHIzPgpjbGFzcyBfYnpfQXJy
YXlXaGVyZSB7CgpwdWJsaWM6CiAgICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICAgIHR5cGVk
ZWYgUF9leHByMiBUX2V4cHIyOwogICAgdHlwZWRlZiBQX2V4cHIzIFRfZXhwcjM7CiAgICB0eXBl
ZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9udW10eXBlMjsKICAgIHR5cGVkZWYg
dHlwZW5hbWUgIFRfZXhwcjM6OlRfbnVtdHlwZSBUX251bXR5cGUzOwogICAgdHlwZWRlZiB0eXBl
bmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMiAsICBUX251bXR5cGUzID46OlRfcHJvbW90
ZSAgVF9udW10eXBlOwogICAgdHlwZWRlZiBUX2V4cHIxIFRfY3RvckFyZzE7CiAgICB0eXBlZGVm
IFRfZXhwcjIgVF9jdG9yQXJnMjsKICAgIHR5cGVkZWYgVF9leHByMyBUX2N0b3JBcmczOwoKICAg
IGVudW0geyBudW1BcnJheU9wZXJhbmRzID0gKGludCkgUF9leHByMTo6bnVtQXJyYXlPcGVyYW5k
cyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChpbnQpIFBfZXhwcjI6Om51bUFycmF5
T3BlcmFuZHMgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoaW50KSBQX2V4cHIzOjpu
dW1BcnJheU9wZXJhbmRzICAsCiAgICAgICAgICAgbnVtSW5kZXhQbGFjZWhvbGRlcnMgPSAoaW50
KSBQX2V4cHIxOjpudW1JbmRleFBsYWNlaG9sZGVycyAgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICArIChpbnQpIFBfZXhwcjI6Om51bUluZGV4UGxhY2Vob2xkZXJzICAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICsgKGludCkgUF9leHByMzo6bnVtSW5kZXhQbGFjZWhvbGRlcnMgICwK
ICAgICAgICAgICByYW5rID0gX2J6X21ldGFfbWF4PF9iel9tZXRhX21heDxQX2V4cHIxOjpyYW5r
LFBfZXhwcjI6OnJhbms+OjptYXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQX2V4cHIz
OjpyYW5rPjo6bWF4CiAgICB9OwoKICAgIF9iel9BcnJheVdoZXJlKGNvbnN0IF9iel9BcnJheVdo
ZXJlPFRfZXhwcjEsVF9leHByMixUX2V4cHIzPiYgYSkKICAgICAgOiBpdGVyMV8oYS5pdGVyMV8p
LCBpdGVyMl8oYS5pdGVyMl8pLCBpdGVyM18oYS5pdGVyM18pCiAgICB7IH0KCiAgICB0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgogICAgX2J6X0FycmF5V2hlcmUoY29uc3Qg
IFQxICYgIGEsIGNvbnN0ICBUMiAmICBiLCBjb25zdCAgVDMgJiAgYykKICAgICAgOiBpdGVyMV8o
YSksIGl0ZXIyXyhiKSwgaXRlcjNfKGMpCiAgICB7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3Iq
KCkKICAgIHsgcmV0dXJuICgqaXRlcjFfKSA/ICgqaXRlcjJfKSA6ICgqaXRlcjNfKTsgfQoKICAg
IHRlbXBsYXRlPGludCBOX3Jhbms+CiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShjb25zdCBUaW55
VmVjdG9yPGludCwgTl9yYW5rPiYgaSkKICAgIHsgcmV0dXJuIGl0ZXIxXyhpKSA/IGl0ZXIyXyhp
KSA6IGl0ZXIzXyhpKTsgfQoKICAgIGludCBhc2NlbmRpbmcoaW50IHJhbmspCiAgICB7CiAgICAg
ICAgcmV0dXJuIGJvdW5kczo6Y29tcHV0ZV9hc2NlbmRpbmcocmFuaywgYm91bmRzOjpjb21wdXRl
X2FzY2VuZGluZygKICAgICAgICAgIHJhbmssIGl0ZXIxXy5hc2NlbmRpbmcocmFuayksIGl0ZXIy
Xy5hc2NlbmRpbmcocmFuaykpLAogICAgICAgICAgaXRlcjNfLmFzY2VuZGluZyhyYW5rKSk7CiAg
ICB9CgogICAgaW50IG9yZGVyaW5nKGludCByYW5rKQogICAgewogICAgICAgIHJldHVybiBib3Vu
ZHM6OmNvbXB1dGVfb3JkZXJpbmcocmFuaywgYm91bmRzOjpjb21wdXRlX29yZGVyaW5nKAogICAg
ICAgICAgcmFuaywgaXRlcjFfLm9yZGVyaW5nKHJhbmspLCBpdGVyMl8ub3JkZXJpbmcocmFuaykp
LAogICAgICAgICAgaXRlcjNfLm9yZGVyaW5nKHJhbmspKTsKICAgIH0KCiAgICBpbnQgbGJvdW5k
KGludCByYW5rKQogICAgewogICAgICAgIHJldHVybiBib3VuZHM6OmNvbXB1dGVfbGJvdW5kKHJh
bmssIGJvdW5kczo6Y29tcHV0ZV9sYm91bmQoCiAgICAgICAgICByYW5rLCBpdGVyMV8ubGJvdW5k
KHJhbmspLCBpdGVyMl8ubGJvdW5kKHJhbmspKSwgCiAgICAgICAgICBpdGVyM18ubGJvdW5kKHJh
bmspKTsKICAgIH0KICAgCiAgICBpbnQgdWJvdW5kKGludCByYW5rKQogICAgewogICAgICAgIHJl
dHVybiBib3VuZHM6OmNvbXB1dGVfdWJvdW5kKHJhbmssIGJvdW5kczo6Y29tcHV0ZV91Ym91bmQo
CiAgICAgICAgICByYW5rLCBpdGVyMV8udWJvdW5kKHJhbmspLCBpdGVyMl8udWJvdW5kKHJhbmsp
KSwgCiAgICAgICAgICBpdGVyM18udWJvdW5kKHJhbmspKTsKICAgIH0gCgogICAgdm9pZCBwdXNo
KGludCBwb3NpdGlvbikKICAgIHsKICAgICAgICBpdGVyMV8ucHVzaChwb3NpdGlvbik7CiAgICAg
ICAgaXRlcjJfLnB1c2gocG9zaXRpb24pOwogICAgICAgIGl0ZXIzXy5wdXNoKHBvc2l0aW9uKTsK
ICAgIH0KCiAgICB2b2lkIHBvcChpbnQgcG9zaXRpb24pCiAgICB7CiAgICAgICAgaXRlcjFfLnBv
cChwb3NpdGlvbik7CiAgICAgICAgaXRlcjJfLnBvcChwb3NpdGlvbik7CiAgICAgICAgaXRlcjNf
LnBvcChwb3NpdGlvbik7CiAgICB9CgogICAgdm9pZCBhZHZhbmNlKCkKICAgIHsKICAgICAgICBp
dGVyMV8uYWR2YW5jZSgpOwogICAgICAgIGl0ZXIyXy5hZHZhbmNlKCk7CiAgICAgICAgaXRlcjNf
LmFkdmFuY2UoKTsKICAgIH0KCiAgICB2b2lkIGFkdmFuY2UoaW50IG4pCiAgICB7CiAgICAgICAg
aXRlcjFfLmFkdmFuY2Uobik7CiAgICAgICAgaXRlcjJfLmFkdmFuY2Uobik7CiAgICAgICAgaXRl
cjNfLmFkdmFuY2Uobik7CiAgICB9CgogICAgdm9pZCBsb2FkU3RyaWRlKGludCByYW5rKQogICAg
ewogICAgICAgIGl0ZXIxXy5sb2FkU3RyaWRlKHJhbmspOwogICAgICAgIGl0ZXIyXy5sb2FkU3Ry
aWRlKHJhbmspOwogICAgICAgIGl0ZXIzXy5sb2FkU3RyaWRlKHJhbmspOwogICAgfQoKICAgIGJv
b2wgIGlzVW5pdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsgCiAgICAgICAgcmV0dXJuIGl0
ZXIxXy5pc1VuaXRTdHJpZGUocmFuaykgCiAgICAgICAgICAgICYmIGl0ZXIyXy5pc1VuaXRTdHJp
ZGUocmFuaykgCiAgICAgICAgICAgICYmIGl0ZXIzXy5pc1VuaXRTdHJpZGUocmFuayk7CiAgICB9
CgogICAgdm9pZCBhZHZhbmNlVW5pdFN0cmlkZSgpCiAgICB7CiAgICAgICAgaXRlcjFfLmFkdmFu
Y2VVbml0U3RyaWRlKCk7CiAgICAgICAgaXRlcjJfLmFkdmFuY2VVbml0U3RyaWRlKCk7CiAgICAg
ICAgaXRlcjNfLmFkdmFuY2VVbml0U3RyaWRlKCk7CiAgICB9CgogICAgYm9vbCAgY2FuQ29sbGFw
c2UoaW50IG91dGVyTG9vcFJhbmssIGludCBpbm5lckxvb3BSYW5rKSBjb25zdAogICAgewogICAg
ICAgICAKICAgICAgICByZXR1cm4gaXRlcjFfLmNhbkNvbGxhcHNlKG91dGVyTG9vcFJhbmssIGlu
bmVyTG9vcFJhbmspCiAgICAgICAgICAgICYmIGl0ZXIyXy5jYW5Db2xsYXBzZShvdXRlckxvb3BS
YW5rLCBpbm5lckxvb3BSYW5rKQogICAgICAgICAgICAmJiBpdGVyM18uY2FuQ29sbGFwc2Uob3V0
ZXJMb29wUmFuaywgaW5uZXJMb29wUmFuayk7CiAgICB9CgogICAgdGVtcGxhdGU8aW50IE5fcmFu
az4KICAgIHZvaWQgbW92ZVRvKGNvbnN0IFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIGkpCiAgICB7
CiAgICAgICAgaXRlcjFfLm1vdmVUbyhpKTsKICAgICAgICBpdGVyMl8ubW92ZVRvKGkpOwogICAg
ICAgIGl0ZXIzXy5tb3ZlVG8oaSk7CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yW10oaW50
IGkpCiAgICB7IHJldHVybiBpdGVyMV9baV0gPyBpdGVyMl9baV0gOiBpdGVyM19baV07IH0KCiAg
ICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgICB7IHJldHVybiBpdGVyMV8uZmFzdFJlYWQo
aSkgPyBpdGVyMl8uZmFzdFJlYWQoaSkgOiBpdGVyM18uZmFzdFJlYWQoaSk7IH0KCiAgICBpbnQg
c3VnZ2VzdFN0cmlkZShpbnQgcmFuaykgY29uc3QKICAgIHsKICAgICAgICBpbnQgc3RyaWRlMSA9
IGl0ZXIxXy5zdWdnZXN0U3RyaWRlKHJhbmspOwogICAgICAgIGludCBzdHJpZGUyID0gaXRlcjJf
LnN1Z2dlc3RTdHJpZGUocmFuayk7CiAgICAgICAgaW50IHN0cmlkZTMgPSBpdGVyM18uc3VnZ2Vz
dFN0cmlkZShyYW5rKTsKICAgICAgICByZXR1cm4gbWlubWF4OjptYXgobWlubWF4OjptYXgoc3Ry
aWRlMSxzdHJpZGUyKSxzdHJpZGUzKTsKICAgIH0KCiAgICBib29sICBpc1N0cmlkZShpbnQgcmFu
aywgaW50IHN0cmlkZSkgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gaXRlcjFfLmlzU3RyaWRl
KHJhbmssc3RyaWRlKSAKICAgICAgICAgICAgJiYgaXRlcjJfLmlzU3RyaWRlKHJhbmssc3RyaWRl
KQogICAgICAgICAgICAmJiBpdGVyM18uaXNTdHJpZGUocmFuayxzdHJpZGUpOwogICAgfQoKICAg
IHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIsIHByZXR0eVByaW50Rm9ybWF0JiBmb3JtYXQp
IGNvbnN0CiAgICB7CiAgICAgICAgc3RyICs9ICJ3aGVyZSgiOwogICAgICAgIGl0ZXIxXy5wcmV0
dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIiwiOwogICAgICAgIGl0ZXIyXy5w
cmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIiwiOwogICAgICAgIGl0ZXIz
Xy5wcmV0dHlQcmludChzdHIsZm9ybWF0KTsKICAgICAgICBzdHIgKz0gIikiOwogICAgfQoKICAg
IHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgICBib29sICBzaGFwZUNoZWNrKGNvbnN0IFRfc2hh
cGUmIHNoYXBlKQogICAgeyAKICAgICAgICBpbnQgdDEgPSBpdGVyMV8uc2hhcGVDaGVjayhzaGFw
ZSk7CiAgICAgICAgaW50IHQyID0gaXRlcjJfLnNoYXBlQ2hlY2soc2hhcGUpOwogICAgICAgIGlu
dCB0MyA9IGl0ZXIzXy5zaGFwZUNoZWNrKHNoYXBlKTsKCiAgICAgICAgcmV0dXJuIHQxICYmIHQy
ICYmIHQzOwogICAgfQoKcHJpdmF0ZToKICAgIF9iel9BcnJheVdoZXJlKCkgeyB9CgogICAgVF9l
eHByMSBpdGVyMV87CiAgICBUX2V4cHIyIGl0ZXIyXzsKICAgIFRfZXhwcjMgaXRlcjNfOwp9OwoK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz4KaW5saW5lCl9iel9BcnJheUV4
cHI8X2J6X0FycmF5V2hlcmU8IHR5cGVuYW1lICBhc0V4cHI8VDE+OjpUX2V4cHIsCiAgICB0eXBl
bmFtZSAgYXNFeHByPFQyPjo6VF9leHByLCB0eXBlbmFtZSAgYXNFeHByPFQzPjo6VF9leHByPiA+
CndoZXJlKGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYiwgY29uc3QgVDMmIGMpCnsKICAgIHJldHVy
biBfYnpfQXJyYXlFeHByPF9iel9BcnJheVdoZXJlPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9l
eHByLAogICAgICAgdHlwZW5hbWUgIGFzRXhwcjxUMj46OlRfZXhwciwgCiAgICAgICB0eXBlbmFt
ZSAgYXNFeHByPFQzPjo6VF9leHByPiA+KGEsYixjKTsKfQoKfSAKCgoKIyAyNDkyICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZzL25l
d21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvc3RlbmNpbC5oIiAxCgojZGVm
aW5lIEJaX0FSUkFZU1RFTkNJTF9ICgoKCgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNr
L2luY2x1ZGUvYmxpdHovYXJyYXkvc3RlbmNpbG9wcy5oIiAxCgojZGVmaW5lIEJaX0FSUkFZU1RF
TkNJTE9QU19ICgogCiAKCgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5j
bHVkZS9ibGl0ei9hcnJheS9nZW9tZXRyeS5oIiAxCgojZGVmaW5lIEJaX0dFT01FVFJZX0gKCgoK
CgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKdHlwZWRlZiBkb3VibGUgVF9kZWZhdWx0U3BhdGlhbENv
b3JkaW5hdGU7Cgp0ZW1wbGF0ZTxpbnQgTl9kaW0sIGNsYXNzIFQgPSBUX2RlZmF1bHRTcGF0aWFs
Q29vcmRpbmF0ZT4KY2xhc3MgVW5pZm9ybU9ydGhvR2VvbWV0cnkgewpwdWJsaWM6Cn07Cgp0ZW1w
bGF0ZTxpbnQgTl9kaW0sIGNsYXNzIFQgPSBUX2RlZmF1bHRTcGF0aWFsQ29vcmRpbmF0ZT4KY2xh
c3MgVW5pZm9ybUN1YmljR2VvbWV0cnkgewogICAgVCBoXzsKICAgIFQgcmVjaXBfaF87CiAgICBU
IHJlY2lwMl9oXzsKICAgIFQgcmVjaXAzX2hfOwogICAgVGlueVZlY3RvcjxULE5fZGltPiB6ZXJv
XzsKCnB1YmxpYzoKICAgIHR5cGVkZWYgVCBUX2Nvb3JkOwoKICAgIFVuaWZvcm1DdWJpY0dlb21l
dHJ5KCkKICAgIHsKICAgICAgICBoXyA9IDAuMDsKICAgICAgICByZWNpcF9oXyA9IDAuMDsKICAg
ICAgICByZWNpcDJfaF8gPSAwLjA7CiAgICAgICAgcmVjaXAzX2hfID0gMC4wOwogICAgICAgIHpl
cm9fID0gMC4wOwogICAgfQoKICAgIFVuaWZvcm1DdWJpY0dlb21ldHJ5KFQgc3BhdGlhbFN0ZXAp
CiAgICB7CiAgICAgICAgaF8gPSBzcGF0aWFsU3RlcDsKICAgICAgICB6ZXJvXyA9IFQoMCk7CiAg
ICAgICAgc2V0dXAoKTsKICAgIH0KCiAgICBVbmlmb3JtQ3ViaWNHZW9tZXRyeShUIHNwYXRpYWxT
dGVwLCBUaW55VmVjdG9yPFQsTl9kaW0+IHplcm9Db29yZGluYXRlcykKICAgIHsgICAKICAgICAg
ICBoXyA9IHNwYXRpYWxTdGVwOwogICAgICAgIHplcm9fID0gemVyb0Nvb3JkaW5hdGVzOwogICAg
ICAgIHNldHVwKCk7CiAgICB9ICAgIAoKICAgIFRpbnlWZWN0b3I8VCxOX2RpbT4gdG9TcGF0aWFs
KFRpbnlWZWN0b3I8aW50LE5fZGltPiBsb2dpY2FsQ29vcmQpIGNvbnN0CiAgICB7CiAgICAgICAg
cmV0dXJuIHplcm9fICsgaF8gKiBsb2dpY2FsQ29vcmQ7CiAgICB9CgogICAgVCBzcGF0aWFsU3Rl
cCgpIGNvbnN0CiAgICB7IHJldHVybiBoXzsgfQoKICAgIFQgcmVjaXBTcGF0aWFsU3RlcCgpIGNv
bnN0CiAgICB7IHJldHVybiByZWNpcF9oXzsgfQoKICAgIFQgcmVjaXBTcGF0aWFsU3RlcFBvdzIo
KSBjb25zdAogICAgeyByZXR1cm4gcmVjaXAyX2hfOyB9Cgpwcml2YXRlOgogICAgdm9pZCBzZXR1
cCgpCiAgICB7CiAgICAgICAgcmVjaXBfaF8gPSAxLjAgLyBoXzsKICAgICAgICByZWNpcDJfaF8g
PSAxLjAgLyBwb3cyKGhfKTsKICAgICAgICByZWNpcDNfaF8gPSAxLjAgLyBwb3czKGhfKTsKICAg
IH0KfTsKCnRlbXBsYXRlPGludCBOX2RpbSwgY2xhc3MgVCA9IFRfZGVmYXVsdFNwYXRpYWxDb29y
ZGluYXRlPgpjbGFzcyBUZW5zb3JQcm9kdWN0R2VvbWV0cnkgewpwdWJsaWM6Cn07Cgp9IAoKCiMg
MTIgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9zdGVuY2ls
b3BzLmgiIDIKCgoKCiAKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxp
dHovdGlueW1hdC5oIiAxCiAKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKI2Rl
ZmluZSBCWl9USU5ZTUFUX0gKCgoKCgoKCgoKCgoKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVy
cmljay9pbmNsdWRlL2JsaXR6L3RpbnltYXRleHByLmgiIDEKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKCgojZGVmaW5lIEJaX1RJTllNQVRFWFBSX0gKCgoKCgpuYW1lc3BhY2Ug
IGJsaXR6ICB7IAoKdGVtcGxhdGU8Y2xhc3MgVF9leHByPgpjbGFzcyBfYnpfdGlueU1hdEV4cHIg
ewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHI6OlRfbnVtdHlwZSBUX251bXR5
cGU7CgogICAgZW51bSB7CiAgICAgICAgcm93cyA9IFRfZXhwcjo6cm93cywKICAgICAgICBjb2x1
bW5zID0gVF9leHByOjpjb2x1bW5zCiAgICB9OwoKICAgIF9iel90aW55TWF0RXhwcihUX2V4cHIg
ZXhwcikKICAgICAgICA6IGV4cHJfKGV4cHIpCiAgICB7IH0KCiAgICBfYnpfdGlueU1hdEV4cHIo
Y29uc3QgX2J6X3RpbnlNYXRFeHByPFRfZXhwcj4mIHgpCiAgICAgICAgOiBleHByXyh4LmV4cHJf
KQogICAgeyB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGksIGludCBqKSBjb25zdAog
ICAgeyByZXR1cm4gZXhwcl8oaSxqKTsgfQoKcHJvdGVjdGVkOgogICAgVF9leHByIGV4cHJfOwp9
OwoKfSAKCgoKIyA1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rp
bnltYXQuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
bWV0YS9tYXRhc3NpZ24uaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgojZGVmaW5lIEJaX01FVEFfTUFUQVNTSUdOX0gKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgp0ZW1w
bGF0ZTxpbnQgTl9yb3dzLCBpbnQgTl9jb2x1bW5zLCBpbnQgSSwgaW50IEo+CmNsYXNzIF9iel9t
ZXRhX21hdEFzc2lnbjIgewpwdWJsaWM6CiAgICBlbnVtIHsgZ28gPSAoSiA8IE5fY29sdW1ucyAt
IDEpID8gMSA6IDAgfTsKCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX21hdHJpeCwgY2xhc3MgVF9leHBy
LCBjbGFzcyBUX3VwZGF0ZXI+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgZihUX21hdHJpeCYgbWF0
LCBUX2V4cHIgZXhwciwgVF91cGRhdGVyIHUpCiAgICB7CiAgICAgICAgdS51cGRhdGUobWF0KEks
SiksIGV4cHIoSSxKKSk7CiAgICAgICAgX2J6X21ldGFfbWF0QXNzaWduMjxOX3Jvd3MgKiBnbywg
Tl9jb2x1bW5zICogZ28sIEkgKiBnbywgKEorMSkgKiBnbz4KICAgICAgICAgICAgOjpmKG1hdCwg
ZXhwciwgdSk7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9tZXRhX21hdEFzc2lnbjI8
MCwwLDAsMD4gewpwdWJsaWM6CiAgICB0ZW1wbGF0ZTxjbGFzcyBUX21hdHJpeCwgY2xhc3MgVF9l
eHByLCBjbGFzcyBUX3VwZGF0ZXI+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgZihUX21hdHJpeCYg
bWF0LCBUX2V4cHIgZXhwciwgVF91cGRhdGVyIHUpCiAgICB7IH0KfTsKCnRlbXBsYXRlPGludCBO
X3Jvd3MsIGludCBOX2NvbHVtbnMsIGludCBJPiAKY2xhc3MgX2J6X21ldGFfbWF0QXNzaWduIHsK
cHVibGljOgogICAgZW51bSB7IGdvID0gKEkgPCBOX3Jvd3MtMSkgPyAxIDogMCB9OwoKICAgIHRl
bXBsYXRlPGNsYXNzIFRfbWF0cml4LCBjbGFzcyBUX2V4cHIsIGNsYXNzIFRfdXBkYXRlcj4KICAg
IHN0YXRpYyBpbmxpbmUgdm9pZCBmKFRfbWF0cml4JiBtYXQsIFRfZXhwciBleHByLCBUX3VwZGF0
ZXIgdSkKICAgIHsKICAgICAgICBfYnpfbWV0YV9tYXRBc3NpZ24yPE5fcm93cywgTl9jb2x1bW5z
LCBJLCAwPjo6ZihtYXQsIGV4cHIsIHUpOwogICAgICAgIF9iel9tZXRhX21hdEFzc2lnbjxOX3Jv
d3MgKiBnbywgTl9jb2x1bW5zICogZ28sIChJKzEpICogZ28+CiAgICAgICAgICAgIDo6ZihtYXQs
IGV4cHIsIHUpOwogICAgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbWV0YV9tYXRBc3NpZ248
MCwwLDA+IHsKcHVibGljOgogICAgdGVtcGxhdGU8Y2xhc3MgVF9tYXRyaXgsIGNsYXNzIFRfZXhw
ciwgY2xhc3MgVF91cGRhdGVyPgogICAgc3RhdGljIGlubGluZSB2b2lkIGYoVF9tYXRyaXgmIG1h
dCwgVF9leHByIGV4cHIsIFRfdXBkYXRlciB1KQogICAgeyB9Cn07CgoKfSAKCgojIDUzICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovdGlueW1hdC5oIiAyCgoKbmFtZXNw
YWNlICBibGl0eiAgeyAKCiAKdGVtcGxhdGU8Y2xhc3MgVF9leHByPgpjbGFzcyBfYnpfdGlueU1h
dEV4cHI7Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBOX3Jvd3MsIGludCBOX2NvbHVt
bnMsIGludCBOX3Jvd1N0cmlkZSwKICAgIGludCBOX2NvbFN0cmlkZT4KY2xhc3MgX2J6X3RpbnlN
YXRyaXhSZWYgewoKcHVibGljOgogICAgX2J6X3RpbnlNYXRyaXhSZWYoVF9udW10eXBlKiBfX3Jl
c3RyaWN0X18gIGNvbnN0IGRhdGEpCiAgICAgICAgOiBkYXRhXyhkYXRhKQogICAgeyB9CgogICAg
VF9udW10eXBlICogX19yZXN0cmljdF9fICBkYXRhKCkKICAgIHsgcmV0dXJuIChUX251bXR5cGUg
KiBfX3Jlc3RyaWN0X18gKWRhdGFfOyB9CgogICAgVF9udW10eXBlJiBfX3Jlc3RyaWN0X18gIG9w
ZXJhdG9yKCkoaW50IGksIGludCBqKQogICAgeyByZXR1cm4gZGF0YV9baSAqIE5fcm93U3RyaWRl
ICsgaiAqIE5fY29sU3RyaWRlXTsgfQoKICAgIFRfbnVtdHlwZSBvcGVyYXRvcigpKGludCBpLCBp
bnQgaikgY29uc3QKICAgIHsgcmV0dXJuIGRhdGFfW2kgKiBOX3Jvd1N0cmlkZSArIGogKiBOX2Nv
bFN0cmlkZV07IH0KCnByb3RlY3RlZDoKICAgIFRfbnVtdHlwZSAqIF9fcmVzdHJpY3RfXyAgY29u
c3QgZGF0YV87Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5cGUsIGludCBOX3Jvd3MsIGludCBO
X2NvbHVtbnM+CmNsYXNzIFRpbnlNYXRyaXggewoKcHVibGljOgogICAgdHlwZWRlZiBQX251bXR5
cGUgVF9udW10eXBlOwogICAgdHlwZWRlZiBfYnpfdGlueU1hdHJpeFJlZjxUX251bXR5cGUsIE5f
cm93cywgTl9jb2x1bW5zLCBOX2NvbHVtbnMsIDE+IAogICAgICAgIFRfcmVmZXJlbmNlOwogICAg
dHlwZWRlZiBUaW55TWF0cml4PFRfbnVtdHlwZSwgTl9yb3dzLCBOX2NvbHVtbnM+IFRfbWF0cml4
OwoKICAgIFRpbnlNYXRyaXgoKSB7IH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3RfXyAgZGF0
YSgpCiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZSogX19yZXN0cmlj
dF9fICBkYXRhKCkgY29uc3QKICAgIHsgcmV0dXJuIGRhdGFfOyB9CgogICAgVF9udW10eXBlKiBf
X3Jlc3RyaWN0X18gIGRhdGFGaXJzdCgpCiAgICB7IHJldHVybiBkYXRhXzsgfQoKICAgIGNvbnN0
IFRfbnVtdHlwZSogX19yZXN0cmljdF9fICBkYXRhRmlyc3QoKSBjb25zdAogICAgeyByZXR1cm4g
ZGF0YV87IH0KCiAgICAgCiAgICBUX251bXR5cGUmIF9fcmVzdHJpY3RfXyAgb3BlcmF0b3IoKShp
bnQgaSwgaW50IGopCiAgICB7IHJldHVybiBkYXRhX1tpKk5fY29sdW1ucyArIGpdOyB9CgogICAg
VF9udW10eXBlIG9wZXJhdG9yKCkoaW50IGksIGludCBqKSBjb25zdAogICAgeyByZXR1cm4gZGF0
YV9baSpOX2NvbHVtbnMgKyBqXTsgfQoKICAgIFRfcmVmZXJlbmNlIGdldFJlZigpCiAgICB7IHJl
dHVybiBUX3JlZmVyZW5jZSgoVF9udW10eXBlKilkYXRhXyk7IH0KCiAgICBjb25zdCBUX3JlZmVy
ZW5jZSBnZXRSZWYoKSBjb25zdAogICAgeyByZXR1cm4gVF9yZWZlcmVuY2UoKFRfbnVtdHlwZSop
ZGF0YV8pOyB9CgogICAgIAogICAgTGlzdEluaXRpYWxpemF0aW9uU3dpdGNoPFRfbWF0cml4Pgog
ICAgb3BlcmF0b3I9KFRfbnVtdHlwZSB4KQogICAgewogICAgICAgIHJldHVybiBMaXN0SW5pdGlh
bGl6YXRpb25Td2l0Y2g8VF9tYXRyaXg+KCp0aGlzLCB4KTsKICAgIH0KCiAgICB0ZW1wbGF0ZTxj
bGFzcyBUX2V4cHI+CiAgICBUaW55TWF0cml4PFRfbnVtdHlwZSwgTl9yb3dzLCBOX2NvbHVtbnM+
JgogICAgb3BlcmF0b3I9KF9iel90aW55TWF0RXhwcjxUX2V4cHI+IGV4cHIpCiAgICB7CiAgICAg
ICAgX2J6X21ldGFfbWF0QXNzaWduPE5fcm93cywgTl9jb2x1bW5zLCAwPjo6ZigqdGhpcywgZXhw
ciwKICAgICAgICAgICAgX2J6X3VwZGF0ZTxUX251bXR5cGUsIHR5cGVuYW1lICBUX2V4cHI6OlRf
bnVtdHlwZT4oKSk7CiAgICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICAgIHZvaWQgaW5pdGlh
bGl6ZShUX251bXR5cGUgeCkKICAgIHsgCiAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgTl9yb3dz
OyArK2kpCiAgICAgICAgICBmb3IgKGludCBqPTA7IGogPCBOX2NvbHVtbnM7ICsraikKICAgICAg
ICAgICAgKCp0aGlzKShpLGopID0geDsKICAgIH0KCiAgICBUX251bXR5cGUqIF9fcmVzdHJpY3Rf
XyAgZ2V0SW5pdGlhbGl6YXRpb25JdGVyYXRvcigpCiAgICB7IHJldHVybiBkYXRhRmlyc3QoKTsg
fQoKcHJvdGVjdGVkOgogICAgVF9udW10eXBlIGRhdGFfW05fcm93cyAqIE5fY29sdW1uc107Cn07
Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovbWV0YS9t
YXR2ZWMuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZp
bmUgQlpfTUVUQV9NQVRWRUNfSAoKCgoKCgoKCgoKIAoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgog
CnRlbXBsYXRlPGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnMsIGludCBOX3Jvd1N0cmlkZSwgaW50
IE5fY29sU3RyaWRlLAogICAgaW50IE5fdmVjU3RyaWRlLCBpbnQgSj4KY2xhc3MgX2J6X21ldGFf
bWF0cml4VmVjdG9yUHJvZHVjdDI7CgoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlMSwgY2xhc3Mg
VF9udW10eXBlMiwgaW50IE5fcm93cywgaW50IE5fY29sdW1ucywgCiAgICBpbnQgTl9yb3dTdHJp
ZGUsIGludCBOX2NvbFN0cmlkZSwgaW50IE5fdmVjU3RyaWRlPgpjbGFzcyBfYnpfdGlueU1hdHJp
eFZlY3RvclByb2R1Y3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBwcm9tb3RlX3Ry
YWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBUX251bXR5cGU7CiAg
ICAKICAgIF9iel90aW55TWF0cml4VmVjdG9yUHJvZHVjdChjb25zdCBfYnpfdGlueU1hdHJpeFZl
Y3RvclByb2R1Y3Q8VF9udW10eXBlMSwKICAgICAgICBUX251bXR5cGUyLCBOX3Jvd3MsIE5fY29s
dW1ucywgTl9yb3dTdHJpZGUsIE5fY29sU3RyaWRlLCAKICAgICAgICBOX3ZlY1N0cmlkZT4mIHop
CiAgICAgICAgICAgIDogbWF0cml4Xyh6Lm1hdHJpeF8pLCB2ZWN0b3JfKHoudmVjdG9yXykKICAg
IHsgfQoKICAgIF9iel90aW55TWF0cml4VmVjdG9yUHJvZHVjdChjb25zdCBUX251bXR5cGUxKiBt
YXRyaXgsIAogICAgICAgIGNvbnN0IFRfbnVtdHlwZTIqIHZlY3RvcikKICAgICAgICA6IG1hdHJp
eF8obWF0cml4KSwgdmVjdG9yXyh2ZWN0b3IpCiAgICB7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0
b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBfYnpfbWV0YV9tYXRy
aXhWZWN0b3JQcm9kdWN0MjxOX3Jvd3MsIE5fY29sdW1ucywgTl9yb3dTdHJpZGUsCiAgICAgICAg
ICAgIE5fY29sU3RyaWRlLCBOX3ZlY1N0cmlkZSwgMD46OmYobWF0cml4XywgdmVjdG9yXywgaSk7
CiAgICB9CgogICAgVF9udW10eXBlIG9wZXJhdG9yKCkodW5zaWduZWQgaSkgY29uc3QKICAgIHsK
ICAgICAgICByZXR1cm4gX2J6X21ldGFfbWF0cml4VmVjdG9yUHJvZHVjdDI8Tl9yb3dzLCBOX2Nv
bHVtbnMsIE5fcm93U3RyaWRlLAogICAgICAgICAgICBOX2NvbFN0cmlkZSwgTl92ZWNTdHJpZGUs
IDA+OjpmKG1hdHJpeF8sIHZlY3Rvcl8sIGkpOwogICAgfQoKICAgIGVudW0gewogICAgICAgIF9i
el9zdGF0aWNMZW5ndGhDb3VudCA9IDEsCiAgICAgICAgX2J6X2R5bmFtaWNMZW5ndGhDb3VudCA9
IDAsCiAgICAgICAgX2J6X3N0YXRpY0xlbmd0aCA9IE5fcm93cwoKCgoKCgoKICAgIH07CgogICAg
dW5zaWduZWQgX2J6X3N1Z2dlc3RMZW5ndGgoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBO
X3Jvd3M7CiAgICB9CgogICAgYm9vbCAgX2J6X2hhc0Zhc3RBY2Nlc3MoKSBjb25zdAogICAgeyBy
ZXR1cm4gdHJ1ZSA7IH0KCiAgICBUX251bXR5cGUgX2J6X2Zhc3RBY2Nlc3ModW5zaWduZWQgaSkg
Y29uc3QKICAgIHsKICAgICAgICByZXR1cm4gX2J6X21ldGFfbWF0cml4VmVjdG9yUHJvZHVjdDI8
Tl9yb3dzLCBOX2NvbHVtbnMsIE5fcm93U3RyaWRlLAogICAgICAgICAgICBOX2NvbFN0cmlkZSwg
Tl92ZWNTdHJpZGUsIDA+OjpmKG1hdHJpeF8sIHZlY3Rvcl8sIGkpOwogICAgfQoKICAgIHVuc2ln
bmVkIGxlbmd0aCh1bnNpZ25lZCByZWNvbW1lbmRlZExlbmd0aCkgY29uc3QKICAgIHsgcmV0dXJu
IE5fcm93czsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZTEqIG1hdHJpeCgpIGNvbnN0CiAgICB7IHJl
dHVybiBtYXRyaXhfOyB9CgogICAgY29uc3QgVF9udW10eXBlMiogdmVjdG9yKCkgY29uc3QKICAg
IHsgcmV0dXJuIHZlY3Rvcl87IH0KCnByb3RlY3RlZDoKICAgIGNvbnN0IFRfbnVtdHlwZTEqIG1h
dHJpeF87CiAgICBjb25zdCBUX251bXR5cGUyKiB2ZWN0b3JfOwp9OwoKdGVtcGxhdGU8Y2xhc3Mg
VF9udW10eXBlMSwgY2xhc3MgVF9udW10eXBlMiwgaW50IE5fcm93cywgaW50IE5fY29sdW1ucz4K
aW5saW5lIF9iel9WZWNFeHByPF9iel90aW55TWF0cml4VmVjdG9yUHJvZHVjdDxUX251bXR5cGUx
LCBUX251bXR5cGUyLCAKICAgIE5fcm93cywgTl9jb2x1bW5zLCBOX2NvbHVtbnMsIDEsIDE+ID4K
cHJvZHVjdChjb25zdCBUaW55TWF0cml4PFRfbnVtdHlwZTEsIE5fcm93cywgTl9jb2x1bW5zPiYg
bWF0cml4LAogICAgY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUyLCBOX2NvbHVtbnM+JiB2ZWN0
b3IpCnsKICAgIHR5cGVkZWYgX2J6X3RpbnlNYXRyaXhWZWN0b3JQcm9kdWN0PFRfbnVtdHlwZTEs
IFRfbnVtdHlwZTIsIE5fcm93cywgCiAgICAgICAgTl9jb2x1bW5zLCBOX2NvbHVtbnMsIDEsIDE+
IFRfZXhwcjsKICAgIHJldHVybiBfYnpfVmVjRXhwcjxUX2V4cHI+KFRfZXhwcihtYXRyaXguZGF0
YSgpLCB2ZWN0b3IuZGF0YSgpKSk7Cn0KCiAKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNs
YXNzIFRfbnVtdHlwZTIsIGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnM+CmlubGluZSBfYnpfVmVj
RXhwcjxfYnpfdGlueU1hdHJpeFZlY3RvclByb2R1Y3Q8VF9udW10eXBlMSwgVF9udW10eXBlMiwK
ICAgIE5fY29sdW1ucywgTl9yb3dzLCAxLCBOX2NvbHVtbnMsIDE+ID4KcHJvZHVjdFRyYW5zcG9z
ZShjb25zdCBUaW55TWF0cml4PFRfbnVtdHlwZTEsIE5fcm93cywgTl9jb2x1bW5zPiYgbWF0cml4
LAogICAgY29uc3QgVGlueVZlY3RvcjxUX251bXR5cGUyLCBOX3Jvd3M+JiB2ZWN0b3IpCnsKICAg
IHR5cGVkZWYgX2J6X3RpbnlNYXRyaXhWZWN0b3JQcm9kdWN0PFRfbnVtdHlwZTEsIFRfbnVtdHlw
ZTIsCiAgICAgICAgTl9jb2x1bW5zLCBOX3Jvd3MsIDEsIE5fY29sdW1ucywgMT4gVF9leHByOwog
ICAgcmV0dXJuIF9iel9WZWNFeHByPFRfZXhwcj4oVF9leHByKG1hdHJpeC5kYXRhKCksIHZlY3Rv
ci5kYXRhKCkpKTsKfQoKCiAKCnRlbXBsYXRlPGludCBOX3Jvd3MsIGludCBOX2NvbHVtbnMsIGlu
dCBOX3Jvd1N0cmlkZSwgaW50IE5fY29sU3RyaWRlLAogICAgaW50IE5fdmVjU3RyaWRlLCBpbnQg
Sj4KY2xhc3MgX2J6X21ldGFfbWF0cml4VmVjdG9yUHJvZHVjdDIgewoKcHVibGljOgogICAgZW51
bSB7IGdvID0gSiA8IChOX2NvbHVtbnMtMSkgfTsKICAgCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX251
bXR5cGUxLCBjbGFzcyBUX251bXR5cGUyPiAKICAgIHN0YXRpYyBpbmxpbmUgdHlwZW5hbWUgIHBy
b21vdGVfdHJhaXQ8IFRfbnVtdHlwZTEgLCAgVF9udW10eXBlMiA+OjpUX3Byb21vdGUgCiAgICBm
KGNvbnN0IFRfbnVtdHlwZTEqIG1hdHJpeCwgY29uc3QgVF9udW10eXBlMiogdmVjdG9yLCBpbnQg
aSkKICAgIHsKICAgICAgICByZXR1cm4gbWF0cml4W2kgKiBOX3Jvd1N0cmlkZSArIEogKiBOX2Nv
bFN0cmlkZV0KICAgICAgICAgICAgKiB2ZWN0b3JbSiAqIE5fdmVjU3RyaWRlXQoKICAgICAgICAg
ICAgKyBfYnpfbWV0YV9tYXRyaXhWZWN0b3JQcm9kdWN0MjxOX3Jvd3MgKiBnbywgTl9jb2x1bW5z
ICogZ28sCiAgICAgICAgICAgICAgICBOX3Jvd1N0cmlkZSAqIGdvLCBOX2NvbFN0cmlkZSAqIGdv
LCBOX3ZlY1N0cmlkZSAqIGdvLCAoSisxKSpnbz4KICAgICAgICAgICAgICAgIDo6ZihtYXRyaXgs
IHZlY3RvciwgaSk7CiAgICB9CiAgICAKfTsKCnRlbXBsYXRlPD4KY2xhc3MgX2J6X21ldGFfbWF0
cml4VmVjdG9yUHJvZHVjdDI8MCwwLDAsMCwwLDA+IHsKcHVibGljOgogICAgc3RhdGljIGlubGlu
ZSBfYnpfbWV0YV9udWxsT3BlcmFuZCBmKGNvbnN0IHZvaWQqLCBjb25zdCB2b2lkKiwgaW50KQog
ICAgeyByZXR1cm4gX2J6X21ldGFfbnVsbE9wZXJhbmQoKTsgfQp9OwoKdGVtcGxhdGU8aW50IE5f
cm93cywgaW50IE5fY29sdW1ucywgaW50IE5fcm93U3RyaWRlLCBpbnQgTl9jb2xTdHJpZGUsCiAg
ICBpbnQgTl92ZWNTdHJpZGUsIGludCBJPgpjbGFzcyBfYnpfbWV0YV9tYXRyaXhWZWN0b3JQcm9k
dWN0IHsKcHVibGljOgogICAgZW51bSB7IGdvID0gSSA8IChOX3Jvd3MgLSAxKSB9OwoKICAgIHRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTIsIGNsYXNzIFRfbnVtdHlw
ZTM+CiAgICBzdGF0aWMgaW5saW5lIHZvaWQgZihUaW55VmVjdG9yPFRfbnVtdHlwZTMsIE5fcm93
cz4mIHJlc3VsdCwKICAgICAgICBjb25zdCBUX251bXR5cGUxKiBtYXRyaXgsIGNvbnN0IFRfbnVt
dHlwZTIqIHZlY3RvcikKICAgIHsKICAgICAgICByZXN1bHRbSV0gPSBfYnpfbWV0YV9tYXRyaXhW
ZWN0b3JQcm9kdWN0MjxOX3Jvd3MsIE5fY29sdW1ucywKICAgICAgICAgICAgTl9yb3dTdHJpZGUs
IE5fY29sU3RyaWRlLCBOX3ZlY1N0cmlkZSwgMD46OmYobWF0cml4LHZlY3RvciwgSSk7CgogICAg
ICAgIF9iel9tZXRhX21hdHJpeFZlY3RvclByb2R1Y3Q8Tl9yb3dzICogZ28sIE5fY29sdW1ucyAq
IGdvLAogICAgICAgICAgICBOX3Jvd1N0cmlkZSAqIGdvLCBOX2NvbFN0cmlkZSAqIGdvLCBOX3Zl
Y1N0cmlkZSAqIGdvLCAoSSsxKSpnbz4KICAgICAgICAgICAgICA6OmYocmVzdWx0LCBtYXRyaXgs
IHZlY3Rvcik7CiAgICB9Cn07Cgp0ZW1wbGF0ZTw+CmNsYXNzIF9iel9tZXRhX21hdHJpeFZlY3Rv
clByb2R1Y3Q8MCwwLDAsMCwwLDA+IHsKcHVibGljOgogICAgc3RhdGljIGlubGluZSB2b2lkIGYo
Y29uc3QgX2J6X3RpbnlCYXNlJiwgY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqKQogICAgeyB9Cn07
Cgp9IAoKCgojIDE1MSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L3Rp
bnltYXQuaCIgMgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHov
bWV0YS9tYXRtYXQuaCIgMQogCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CiNkZWZpbmUgQlpfTUVUQV9NQVRNQVRfSAoKCgoKCgoKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgog
CnRlbXBsYXRlPGludCBOX3Jvd3MxLCBpbnQgTl9jb2x1bW5zLCBpbnQgTl9jb2x1bW5zMiwgaW50
IE5fcm93U3RyaWRlMSwKICAgIGludCBOX2NvbFN0cmlkZTEsIGludCBOX3Jvd1N0cmlkZTIsIGlu
dCBOX2NvbFN0cmlkZTIsIGludCBLPgpjbGFzcyBfYnpfbWV0YV9tYXRyaXhNYXRyaXhQcm9kdWN0
IHsKcHVibGljOgogICAgZW51bSB7IGdvID0gKEsgIT0gTl9jb2x1bW5zIC0gMSkgfTsKCiAgICB0
ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX251bXR5cGUyPgogICAgc3RhdGljIGlu
bGluZSB0eXBlbmFtZSAgcHJvbW90ZV90cmFpdDwgVF9udW10eXBlMSAsICBUX251bXR5cGUyID46
OlRfcHJvbW90ZSAKICAgIGYoY29uc3QgVF9udW10eXBlMSogbWF0cml4MSwgY29uc3QgVF9udW10
eXBlMiogbWF0cml4MiwgaW50IGksIGludCBqKQogICAgewogICAgICAgIHJldHVybiBtYXRyaXgx
W2kgKiBOX3Jvd1N0cmlkZTEgKyBLICogTl9jb2xTdHJpZGUxXQogICAgICAgICAgICAqIG1hdHJp
eDJbSyAqIE5fcm93U3RyaWRlMiArIGogKiBOX2NvbFN0cmlkZTJdCiAgICAgICAgICAgICsgX2J6
X21ldGFfbWF0cml4TWF0cml4UHJvZHVjdDxOX3Jvd3MxICogZ28sIE5fY29sdW1ucyAqIGdvLAog
ICAgICAgICAgICAgICAgTl9jb2x1bW5zMiAqIGdvLCBOX3Jvd1N0cmlkZTEgKiBnbywgTl9jb2xT
dHJpZGUxICogZ28sCiAgICAgICAgICAgICAgICBOX3Jvd1N0cmlkZTIgKiBnbywgTl9jb2xTdHJp
ZGUyICogZ28sIChLKzEpICogZ28+CiAgICAgICAgICAgICAgOjpmKG1hdHJpeDEsIG1hdHJpeDIs
IGksIGopOwogICAgfQp9OwoKdGVtcGxhdGU8PgpjbGFzcyBfYnpfbWV0YV9tYXRyaXhNYXRyaXhQ
cm9kdWN0PDAsMCwwLDAsMCwwLDAsMD4gewpwdWJsaWM6CiAgICBzdGF0aWMgaW5saW5lIF9iel9t
ZXRhX251bGxPcGVyYW5kIGYoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqLCBpbnQsIGludCkKICAg
IHsgcmV0dXJuIF9iel9tZXRhX251bGxPcGVyYW5kKCk7IH0KfTsKCgoKCnRlbXBsYXRlPGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTIsIGludCBOX3Jvd3MxLCBpbnQgTl9jb2x1bW5z
LAogICAgaW50IE5fY29sdW1uczIsIGludCBOX3Jvd1N0cmlkZTEsIGludCBOX2NvbFN0cmlkZTEs
CiAgICBpbnQgTl9yb3dTdHJpZGUyLCBpbnQgTl9jb2xTdHJpZGUyPgpjbGFzcyBfYnpfdGlueU1h
dHJpeE1hdHJpeFByb2R1Y3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIHR5cGVuYW1lICBwcm9tb3Rl
X3RyYWl0PCBUX251bXR5cGUxICwgIFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBUX251bXR5cGU7
CgogICAgZW51bSB7IHJvd3MgPSBOX3Jvd3MxLCBjb2x1bW5zID0gTl9jb2x1bW5zMiB9OwoKICAg
IF9iel90aW55TWF0cml4TWF0cml4UHJvZHVjdChjb25zdCBUX251bXR5cGUxKiBtYXRyaXgxLAog
ICAgICAgIGNvbnN0IFRfbnVtdHlwZTIqIG1hdHJpeDIpCiAgICAgICAgOiBtYXRyaXgxXyhtYXRy
aXgxKSwgbWF0cml4Ml8obWF0cml4MikKICAgIHsgfQoKICAgIF9iel90aW55TWF0cml4TWF0cml4
UHJvZHVjdChjb25zdCBfYnpfdGlueU1hdHJpeE1hdHJpeFByb2R1Y3Q8VF9udW10eXBlMSwKICAg
ICAgICBUX251bXR5cGUyLCBOX3Jvd3MxLCBOX2NvbHVtbnMsIE5fY29sdW1uczIsIE5fcm93U3Ry
aWRlMSwgTl9jb2xTdHJpZGUxLAogICAgICAgIE5fcm93U3RyaWRlMiwgTl9jb2xTdHJpZGUyPiYg
eCkKICAgICAgICA6IG1hdHJpeDFfKHgubWF0cml4MV8pLCBtYXRyaXgyXyh4Lm1hdHJpeDJfKQog
ICAgeyB9CgogICAgY29uc3QgVF9udW10eXBlMSogbWF0cml4MSgpIGNvbnN0CiAgICB7IHJldHVy
biBtYXRyaXgxXzsgfQoKICAgIGNvbnN0IFRfbnVtdHlwZTIqIG1hdHJpeDIoKSBjb25zdAogICAg
eyByZXR1cm4gbWF0cml4Ml87IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IoKShpbnQgaSwgaW50
IGopIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIF9iel9tZXRhX21hdHJpeE1hdHJpeFByb2R1
Y3Q8Tl9yb3dzMSwgTl9jb2x1bW5zLAogICAgICAgICAgICBOX2NvbHVtbnMyLCBOX3Jvd1N0cmlk
ZTEsIE5fY29sU3RyaWRlMSwgTl9yb3dTdHJpZGUyLAogICAgICAgICAgICBOX2NvbFN0cmlkZTIs
IDA+OjpmKG1hdHJpeDFfLCBtYXRyaXgyXywgaSwgaik7CiAgICB9Cgpwcm90ZWN0ZWQ6CiAgICBj
b25zdCBUX251bXR5cGUxKiBtYXRyaXgxXzsKICAgIGNvbnN0IFRfbnVtdHlwZTIqIG1hdHJpeDJf
OyAgICAKfTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfbnVtdHlwZTIsIGlu
dCBOX3Jvd3MxLCBpbnQgTl9jb2x1bW5zMSwKICAgIGludCBOX2NvbHVtbnMyPgppbmxpbmUKX2J6
X3RpbnlNYXRFeHByPF9iel90aW55TWF0cml4TWF0cml4UHJvZHVjdDxUX251bXR5cGUxLCBUX251
bXR5cGUyLCBOX3Jvd3MxLCAKICAgIE5fY29sdW1uczEsIE5fY29sdW1uczIsIE5fY29sdW1uczEs
IDEsIE5fY29sdW1uczIsIDE+ID4KcHJvZHVjdChjb25zdCBUaW55TWF0cml4PFRfbnVtdHlwZTEs
IE5fcm93czEsIE5fY29sdW1uczE+JiBhLAogICAgY29uc3QgVGlueU1hdHJpeDxUX251bXR5cGUy
LCBOX2NvbHVtbnMxLCBOX2NvbHVtbnMyPiYgYikKewogICAgdHlwZWRlZiBfYnpfdGlueU1hdHJp
eE1hdHJpeFByb2R1Y3Q8VF9udW10eXBlMSwgVF9udW10eXBlMiwKICAgICAgICBOX3Jvd3MxLCBO
X2NvbHVtbnMxLCBOX2NvbHVtbnMyLCBOX2NvbHVtbnMxLCAxLCBOX2NvbHVtbnMyLCAxPiBUX2V4
cHI7CiAgICByZXR1cm4gX2J6X3RpbnlNYXRFeHByPFRfZXhwcj4oVF9leHByKGEuZGF0YSgpLCBi
LmRhdGEoKSkpOwp9Cgp9IAoKCgojIDE1MiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNs
dWRlL2JsaXR6L3RpbnltYXQuaCIgMgoKCgoKIyAxNiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmlj
ay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWxvcHMuaCIgMgoKCgpuYW1lc3BhY2UgIGJsaXR6
ICB7IAoKI2RlZmluZSBCWl9ERUNMQVJFX1NURU5DSUxfT1BFUkFUT1IxKG5hbWUsQSkgdGVtcGxh
dGU8Y2xhc3MgVD4gaW5saW5lIF9iel90eXBlbmFtZSBUOjpUX251bXR5cGUgbmFtZShUJiBBKSB7
CgoKCgojZGVmaW5lIEJaX0VORF9TVEVOQ0lMX09QRVJBVE9SICAgfQoKI2RlZmluZSBCWl9ERUNM
QVJFX1NURU5DSUxfT1BFUkFUT1IyKG5hbWUsQSxCKSB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUg
X2J6X3R5cGVuYW1lIFQ6OlRfbnVtdHlwZSBuYW1lKFQmIEEsIFQmIEIpIHsKCgoKCiNkZWZpbmUg
QlpfREVDTEFSRV9TVEVOQ0lMX09QRVJBVE9SMyhuYW1lLEEsQixDKSB0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgX2J6X3R5cGVuYW1lIFQ6OlRfbnVtdHlwZSBuYW1lKFQmIEEsIFQmIEIsIFQmIEMp
IHsKCgoKCiAKY29uc3QgZG91YmxlIHJlY2lwXzIgPSAuNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwOwpjb25zdCBkb3VibGUgcmVjaXBfNCA9IC4yNTAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA7CmNvbnN0IGRvdWJsZSByZWNpcF82
ID0gLjE2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NzsKY29uc3Qg
ZG91YmxlIHJlY2lwXzggPSAuMTI1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwOwpjb25zdCBkb3VibGUgcmVjaXBfMTIgPSAuMDgzMzMzMzMzMzMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzsKY29uc3QgZG91YmxlIHJlY2lwXzE0NCA9IC4wMDY5NDQ0
NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDsKCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIExhcGxhY2lhbjJEIChUJiAg
IEEgKSB7IAogICAgcmV0dXJuIC00LjAgKiBBICsgQS5zaGlmdCgtMSwwKSArIEEuc2hpZnQoMSww
KSArIEEuc2hpZnQoLTEsMSkKICAgICAgKyBBLnNoaWZ0KDEsMSk7Cn0gCgp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgTGFwbGFjaWFuM0QgKFQmICAgQSAp
IHsgCiAgICByZXR1cm4gLTYuMCAqIEEgCiAgICAgICsgQS5zaGlmdCgtMSwwKSArIEEuc2hpZnQo
MSwwKSAKICAgICAgKyBBLnNoaWZ0KC0xLDEpICsgQS5zaGlmdCgxLDEpCiAgICAgICsgQS5zaGlm
dCgtMSwyKSArIEEuc2hpZnQoMSwyKTsKfSAKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBl
bmFtZSAgVDo6VF9udW10eXBlICBMYXBsYWNpYW4yRDQgKFQmICAgQSApIHsgCiAgICByZXR1cm4g
LTYwLiAqIEEgCiAgICAgICsgMTYuKihBLnNoaWZ0KC0xLDApICsgQS5zaGlmdCgxLDApICsgQS5z
aGlmdCgtMSwxKSArIEEuc2hpZnQoMSwxKSkKICAgICAgLSAgICAgKEEuc2hpZnQoLTIsMCkgKyBB
LnNoaWZ0KDIsMCkgKyBBLnNoaWZ0KC0yLDEpICsgQS5zaGlmdCgyLDEpKTsKfSAKCnRlbXBsYXRl
PGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBMYXBsYWNpYW4yRDRuIChU
JiAgIEEgKSB7IAogICAgcmV0dXJuIExhcGxhY2lhbjJENChBKSAqIHJlY2lwXzEyOwp9IAoKdGVt
cGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIExhcGxhY2lhbjNE
NCAoVCYgICBBICkgeyAKICAgIHJldHVybiAtOTAuICogQSAKICAgICAgKyAxNi4qKEEuc2hpZnQo
LTEsMCkgKyBBLnNoaWZ0KDEsMCkgKyBBLnNoaWZ0KC0xLDEpICsgQS5zaGlmdCgxLDEpCiAgICAg
ICAgICAgKyBBLnNoaWZ0KC0xLDIpICsgQS5zaGlmdCgxLDIpKQogICAgICAtICAgICAoQS5zaGlm
dCgtMiwwKSArIEEuc2hpZnQoMiwwKSArIEEuc2hpZnQoLTIsMSkgKyBBLnNoaWZ0KDIsMSkKICAg
ICAgICAgICArIEEuc2hpZnQoLTIsMikgKyBBLnNoaWZ0KDIsMikpOwp9IAoKdGVtcGxhdGU8Y2xh
c3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIExhcGxhY2lhbjNENG4gKFQmICAg
QSApIHsgCiAgICByZXR1cm4gTGFwbGFjaWFuM0Q0KEEpICogcmVjaXBfMTI7Cn0gCgogCgoKCiNk
ZWZpbmUgQlpfREVDTEFSRV9ESUZGKG5hbWUpIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBfYnpf
dHlwZW5hbWUgVDo6VF9udW10eXBlIG5hbWUoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKQoKCgoj
ZGVmaW5lIEJaX0RFQ0xBUkVfTVVMVElESUZGKG5hbWUpIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSBfYnpfdHlwZW5hbWUgbXVsdGljb21wb25lbnRfdHJhaXRzPF9iel90eXBlbmFtZSBUOjpUX251
bXR5cGU+OjpUX2VsZW1lbnQgbmFtZShUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkKCgoKCiAKCgoK
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGNlbnRyYWwx
MiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBBLnNoaWZ0KDEsZGltKSAt
IEEuc2hpZnQoLTEsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBU
OjpUX251bXR5cGUgIGNlbnRyYWwyMiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJl
dHVybiBBLnNoaWZ0KC0xLGRpbSkgLSAyLiAqIEEgKyBBLnNoaWZ0KCsxLGRpbSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsMzIgKFQm
IEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gLUEuc2hpZnQoLTIsZGltKSArIDIu
KihBLnNoaWZ0KC0xLGRpbSkgLSBBLnNoaWZ0KCsxLGRpbSkpCiAgICArIEEuc2hpZnQoKzIsZGlt
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGNl
bnRyYWw0MiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBBLnNoaWZ0KC0y
LGRpbSkgKyBBLnNoaWZ0KDIsZGltKSAtNC4qKEEuc2hpZnQoLTEsZGltKStBLnNoaWZ0KCsxLGRp
bSkpIAogICAgKzYuKkEuc2hpZnQoMCxkaW0pOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlPjo6VF9lbGVtZW50ICBjZW50cmFsMTIgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewog
IHJldHVybiBBLnNoaWZ0KDEsZGltKVtjb21wXSAtIEEuc2hpZnQoLTEsZGltKVtjb21wXTsKfQoK
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8
IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwyMiAoVCYgQSwgaW50
IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIEEuc2hpZnQoLTEsZGltKVtjb21wXSAtIDIuICog
KCpBKVtjb21wXSArIEEuc2hpZnQoKzEsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4g
aW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251
bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwzMiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7
CiAgcmV0dXJuIC1BLnNoaWZ0KC0yLGRpbSlbY29tcF0gKyAyLipBLnNoaWZ0KC0xLGRpbSlbY29t
cF0gCiAgICAtMi4qQS5zaGlmdCgrMSxkaW0pW2NvbXBdICsgQS5zaGlmdCgrMixkaW0pW2NvbXBd
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3Ry
YWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDQyIChUJiBB
LCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gQS5zaGlmdCgtMixkaW0pW2NvbXBdIC00
LipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gCiAgICArNi4qQS5zaGlmdCgwLGRpbSlbY29tcF0gLTQu
KkEuc2hpZnQoMSxkaW0pW2NvbXBdICtBLnNoaWZ0KDIsZGltKVtjb21wXTsKfQoKIAoKCgp0ZW1w
bGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgY2VudHJhbDEybiAo
VCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBjZW50cmFsMTIoQSxkaW0pICog
cmVjaXBfMjsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5
cGUgIGNlbnRyYWwyMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gY2Vu
dHJhbDIyKEEsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGNlbnRyYWwzMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1
cm4gY2VudHJhbDMyKEEsZGltKSAqIHJlY2lwXzI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsNDJuIChUJiBBLCBpbnQgZGltID0gZmly
c3REaW0pICB7CiAgcmV0dXJuIGNlbnRyYWw0MihBLGRpbSk7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xh
c3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBU
OjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwxMm4gKFQmIEEsIGludCBjb21wLCBpbnQg
ZGltKSAgewogIHJldHVybiBjZW50cmFsMTIoQSxjb21wLGRpbSkgKiByZWNpcF8yOwp9Cgp0ZW1w
bGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlw
ZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDIybiAoVCYgQSwgaW50IGNv
bXAsIGludCBkaW0pICB7CiAgcmV0dXJuIGNlbnRyYWwyMihBLGNvbXAsZGltKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVu
YW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWwzMm4gKFQmIEEsIGludCBjb21w
LCBpbnQgZGltKSAgewogIHJldHVybiBjZW50cmFsMzIoQSxjb21wLGRpbSkgKiByZWNpcF8yOwp9
Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0
czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDQybiAoVCYgQSwg
aW50IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIGNlbnRyYWw0MihBLGNvbXAsZGltKTsKfQoK
IAoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgY2Vu
dHJhbDE0IChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIChBLnNoaWZ0KC0y
LGRpbSkgLSBBLnNoaWZ0KDIsZGltKSkgCiAgICAgKyA4LiooQS5zaGlmdCgxLGRpbSktQS5zaGlm
dCgtMSxkaW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGNlbnRyYWwyNCAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiAt
MzAuKkEgKyAxNi4qKEEuc2hpZnQoLTEsZGltKStBLnNoaWZ0KDEsZGltKSkKICAgIC0gKEEuc2hp
ZnQoLTIsZGltKStBLnNoaWZ0KDIsZGltKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsMzQgKFQmIEEsIGludCBkaW0gPSBmaXJzdERp
bSkgIHsKICByZXR1cm4gQS5zaGlmdCgtMyxkaW0pIC0gOC4qQS5zaGlmdCgtMixkaW0pICsxMy4q
QS5zaGlmdCgtMSxkaW0pIAogICAgIC0xMy4qQS5zaGlmdCgxLGRpbSkrOC4qQS5zaGlmdCgyLGRp
bSktQS5zaGlmdCgzLGRpbSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
VDo6VF9udW10eXBlICBjZW50cmFsNDQgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICBy
ZXR1cm4gLTEuKkEuc2hpZnQoLTMsZGltKSsxMi4qQS5zaGlmdCgtMixkaW0pLTM5LipBLnNoaWZ0
KC0xLGRpbSkKICAgICs1Ni4qQS0zOS4qQS5zaGlmdCgxLGRpbSkrMTIuKkEuc2hpZnQoMixkaW0p
LUEuc2hpZnQoMyxkaW0pOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFt
ZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVt
ZW50ICBjZW50cmFsMTQgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiBBLnNo
aWZ0KC0yLGRpbSlbY29tcF0gLSA4LiAqIEEuc2hpZnQoLTEsZGltKVtjb21wXSAKICAgICsgOC4g
KiBBLnNoaWZ0KDEsZGltKVtjb21wXSAtIEEuc2hpZnQoMixkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgY2VudHJhbDI0IChUJiBBLCBpbnQgY29tcCwg
aW50IGRpbSkgIHsKICByZXR1cm4gLSBBLnNoaWZ0KC0yLGRpbSlbY29tcF0gKyAxNi4qQS5zaGlm
dCgtMSxkaW0pW2NvbXBdIC0gMzAuKigqQSlbY29tcF0KICAgICsgMTYuKkEuc2hpZnQoMSxkaW0p
W2NvbXBdIC0gQS5zaGlmdCgyLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBl
Pjo6VF9lbGVtZW50ICBjZW50cmFsMzQgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJl
dHVybiBBLnNoaWZ0KC0zLGRpbSlbY29tcF0gLSA4LipBLnNoaWZ0KC0yLGRpbSlbY29tcF0gCiAg
ICArMTMuKkEuc2hpZnQoLTEsZGltKVtjb21wXSAtIDEzLipBLnNoaWZ0KDEsZGltKVtjb21wXSAK
ICAgICsgOC4qQS5zaGlmdCgyLGRpbSlbY29tcF0gLSBBLnNoaWZ0KDMsZGltKVtjb21wXTsKfQoK
dGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8
IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGNlbnRyYWw0NCAoVCYgQSwgaW50
IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIC0xLipBLnNoaWZ0KC0zLGRpbSlbY29tcF0rMTIu
KkEuc2hpZnQoLTIsZGltKVtjb21wXQogICAgLTM5LipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gKzU2
LiooKkEpW2NvbXBdLTM5LipBLnNoaWZ0KDEsZGltKVtjb21wXQogICAgKzEyLipBLnNoaWZ0KDIs
ZGltKVtjb21wXS1BLnNoaWZ0KDMsZGltKVtjb21wXTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgY2VudHJhbDE0biAoVCYgQSwgaW50IGRp
bSA9IGZpcnN0RGltKSAgewogIHJldHVybiBjZW50cmFsMTQoQSxkaW0pICogcmVjaXBfMTI7Cn0K
CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFs
MjRuIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIGNlbnRyYWwyNChBLGRp
bSkgKiByZWNpcF8xMjsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGNlbnRyYWwzNG4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1
cm4gY2VudHJhbDM0KEEsZGltKSAqIHJlY2lwXzg7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBjZW50cmFsNDRuIChUJiBBLCBpbnQgZGltID0gZmly
c3REaW0pICB7CiAgcmV0dXJuIGNlbnRyYWw0NChBLGRpbSkgKiByZWNpcF82Owp9CgogCgoKCnRl
bXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0
eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBjZW50cmFsMTRuIChUJiBBLCBpbnQg
Y29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gY2VudHJhbDE0KEEsY29tcCxkaW0pICogcmVjaXBf
MTI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRf
dHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBjZW50cmFsMjRuIChU
JiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gY2VudHJhbDI0KEEsY29tcCxkaW0p
ICogcmVjaXBfMTI7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGlj
b21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBjZW50
cmFsMzRuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gY2VudHJhbDM0KEEs
Y29tcCxkaW0pICogcmVjaXBfODsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1l
ICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1l
bnQgIGNlbnRyYWw0NG4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiBjZW50
cmFsNDQoQSxjb21wLGRpbSkgKiByZWNpcF82Owp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDExIChUJiBBLCBpbnQgZGltID0g
Zmlyc3REaW0pICB7CiAgcmV0dXJuIEEgLSBBLnNoaWZ0KC0xLGRpbSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDIxIChUJiBBLCBp
bnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIEEgLTIuKkEuc2hpZnQoLTEsZGltKSArIEEu
c2hpZnQoLTIsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGJhY2t3YXJkMzEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1
cm4gQSAtMy4qQS5zaGlmdCgtMSxkaW0pICsgMy4qQS5zaGlmdCgtMixkaW0pLUEuc2hpZnQoLTMs
ZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUg
IGJhY2t3YXJkNDEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gQSAtIDQu
KkEuc2hpZnQoLTEsZGltKSArIDYuKkEuc2hpZnQoLTIsZGltKSAtNC4qQS5zaGlmdCgtMyxkaW0p
IAogICAgKyBBLnNoaWZ0KC00LGRpbSk7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5l
IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+
OjpUX2VsZW1lbnQgIGJhY2t3YXJkMTEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJl
dHVybiAoKkEpW2NvbXBdIC0gQS5zaGlmdCgtMSxkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgYmFja3dhcmQyMSAoVCYgQSwgaW50IGNvbXAsIGludCBk
aW0pICB7CiAgcmV0dXJuICgqQSlbY29tcF0gLTIuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIEEu
c2hpZnQoLTIsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1l
ICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1l
bnQgIGJhY2t3YXJkMzEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiAoKkEp
W2NvbXBdIC0zLipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gKyAzLipBLnNoaWZ0KC0yLGRpbSlbY29t
cF0KICAgIC1BLnNoaWZ0KC0zLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBl
Pjo6VF9lbGVtZW50ICBiYWNrd2FyZDQxIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICBy
ZXR1cm4gKCpBKVtjb21wXSAtIDQuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIDYuKkEuc2hpZnQo
LTIsZGltKVtjb21wXQogICAgLTQuKkEuc2hpZnQoLTMsZGltKVtjb21wXSArIEEuc2hpZnQoLTQs
ZGltKVtjb21wXTsKfQoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZSAgYmFja3dhcmQxMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0
dXJuIGJhY2t3YXJkMTEoQSxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFt
ZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDIxbiAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAg
eyByZXR1cm4gYmFja3dhcmQyMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5
cGVuYW1lICBUOjpUX251bXR5cGUgIGJhY2t3YXJkMzFuIChUJiBBLCBpbnQgZGltID0gZmlyc3RE
aW0pICB7IHJldHVybiBiYWNrd2FyZDMxKEEsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxp
bmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgYmFja3dhcmQ0MW4gKFQmIEEsIGludCBkaW0gPSBm
aXJzdERpbSkgIHsgcmV0dXJuIGJhY2t3YXJkNDEoQSxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNs
YXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAg
VDo6VF9udW10eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDExbiAoVCYgQSwgaW50IGNvbXAsIGlu
dCBkaW0pICB7IHJldHVybiBiYWNrd2FyZDExKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNz
IFQ+IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6
VF9udW10eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDIxbiAoVCYgQSwgaW50IGNvbXAsIGludCBk
aW0pICB7IHJldHVybiBiYWNrd2FyZDIxKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+
IGlubGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDMxbiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0p
ICB7IHJldHVybiBiYWNrd2FyZDMxKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDQxbiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7
IHJldHVybiBiYWNrd2FyZDQxKEEsY29tcCxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+
IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBiYWNrd2FyZDEyIChUJiBBLCBpbnQgZGlt
ID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIDMuKkEgLTQuKkEuc2hpZnQoLTEsZGltKSArIEEuc2hp
ZnQoLTIsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGJhY2t3YXJkMjIgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4g
Mi4qQSAtNS4qQS5zaGlmdCgtMSxkaW0pICsgNC4qQS5zaGlmdCgtMixkaW0pIC1BLnNoaWZ0KC0z
LGRpbSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBl
ICBiYWNrd2FyZDMyIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIDUuKkEg
LSAxOC4qQS5zaGlmdCgtMSxkaW0pICsgMjQuKkEuc2hpZnQoLTIsZGltKSAtMTQuKkEuc2hpZnQo
LTMsZGltKSAKICAgICsgMy4qQS5zaGlmdCgtNCxkaW0pOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgYmFja3dhcmQ0MiAoVCYgQSwgaW50IGRpbSA9
IGZpcnN0RGltKSAgewogIHJldHVybiAzLipBIC0xNC4qQS5zaGlmdCgtMSxkaW0pICsgMjYuKkEu
c2hpZnQoLTIsZGltKSAtMjQuKkEuc2hpZnQoLTMsZGltKSAKICAgICsgMTEuKkEuc2hpZnQoLTQs
ZGltKSAtMi4qQS5zaGlmdCgtNSxkaW0pOwp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGlu
ZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBl
Pjo6VF9lbGVtZW50ICBiYWNrd2FyZDEyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICBy
ZXR1cm4gMy4qKCpBKVtjb21wXSAtNC4qQS5zaGlmdCgtMSxkaW0pW2NvbXBdICsgQS5zaGlmdCgt
MixkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRp
Y29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgYmFj
a3dhcmQyMiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIDIuKigqQSlbY29t
cF0gLTUuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIDQuKkEuc2hpZnQoLTIsZGltKVtjb21wXQog
ICAgIC1BLnNoaWZ0KC0zLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBiYWNrd2FyZDMyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1
cm4gNS4qKCpBKVtjb21wXSAtIDE4LipBLnNoaWZ0KC0xLGRpbSlbY29tcF0gKyAyNC4qQS5zaGlm
dCgtMixkaW0pW2NvbXBdCiAgICAgLTE0LipBLnNoaWZ0KC0zLGRpbSlbY29tcF0gKyAzLipBLnNo
aWZ0KC00LGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
bXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50
ICBiYWNrd2FyZDQyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1cm4gMy4qKCpB
KVtjb21wXSAtMTQuKkEuc2hpZnQoLTEsZGltKVtjb21wXSArIDI2LipBLnNoaWZ0KC0yLGRpbSlb
Y29tcF0KICAgIC0yNC4qQS5zaGlmdCgtMyxkaW0pW2NvbXBdICsgMTEuKkEuc2hpZnQoLTQsZGlt
KVtjb21wXSAKICAgIC0yLipBLnNoaWZ0KC01LGRpbSlbY29tcF07Cn0KCiAKCgoKdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGJhY2t3YXJkMTJuIChUJiBB
LCBpbnQgZGltID0gZmlyc3REaW0pICB7IHJldHVybiBiYWNrd2FyZDEyKEEsZGltKSAqIHJlY2lw
XzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGJh
Y2t3YXJkMjJuIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7IHJldHVybiBiYWNrd2FyZDIy
KEEsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlw
ZSAgYmFja3dhcmQzMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGJhY2t3
YXJkMzIoQSxkaW0pICogcmVjaXBfMjsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSAgYmFja3dhcmQ0Mm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkg
IHsgcmV0dXJuIGJhY2t3YXJkNDIoQSxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlPjo6VF9lbGVtZW50ICBiYWNrd2FyZDEybiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7
IHJldHVybiBiYWNrd2FyZDEyKEEsY29tcCxkaW0pICogcmVjaXBfMjsgfQp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgYmFja3dhcmQyMm4gKFQmIEEsIGludCBjb21wLCBpbnQg
ZGltKSAgeyByZXR1cm4gYmFja3dhcmQyMihBLGNvbXAsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBU
PiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRf
bnVtdHlwZT46OlRfZWxlbWVudCAgYmFja3dhcmQzMm4gKFQmIEEsIGludCBjb21wLCBpbnQgZGlt
KSAgeyByZXR1cm4gYmFja3dhcmQzMihBLGNvbXAsZGltKSAqIHJlY2lwXzI7IH0KdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1l
ICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGJhY2t3YXJkNDJuIChUJiBBLCBpbnQgY29tcCwg
aW50IGRpbSkgIHsgcmV0dXJuIGJhY2t3YXJkNDIoQSxjb21wLGRpbSk7IH0KCiAKCgoKdGVtcGxh
dGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGZvcndhcmQxMSAoVCYg
QSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVybiBBLnNoaWZ0KDEsZGltKSAtIEE7Cn0K
CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBmb3J3YXJk
MjEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gQSAtIDIuKkEuc2hpZnQo
MSxkaW0pICsgQS5zaGlmdCgyLGRpbSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBl
bmFtZSAgVDo6VF9udW10eXBlICBmb3J3YXJkMzEgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkg
IHsKICByZXR1cm4gLUEgKyAzLipBLnNoaWZ0KDEsZGltKSAtMy4qQS5zaGlmdCgyLGRpbSkgKyBB
LnNoaWZ0KDMsZGltKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGZvcndhcmQ0MSAoVCYgQSwgaW50IGRpbSA9IGZpcnN0RGltKSAgewogIHJldHVy
biBBIC00LipBLnNoaWZ0KDEsZGltKSArIDYuKkEuc2hpZnQoMixkaW0pIC00LipBLnNoaWZ0KDMs
ZGltKSAKICAgICsgQS5zaGlmdCg0LGRpbSk7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQxMSAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7CiAg
cmV0dXJuIC0oKkEpW2NvbXBdK0Euc2hpZnQoMSxkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgZm9yd2FyZDIxIChUJiBBLCBpbnQgY29tcCwgaW50IGRp
bSkgIHsKICByZXR1cm4gKCpBKVtjb21wXSAtIDIuKkEuc2hpZnQoMSxkaW0pW2NvbXBdICsgQS5z
aGlmdCgyLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
bXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50
ICBmb3J3YXJkMzEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVybiAtKCpBKVtj
b21wXSArIDMuKkEuc2hpZnQoMSxkaW0pW2NvbXBdIC0zLipBLnNoaWZ0KDIsZGltKVtjb21wXSAK
ICAgICsgQS5zaGlmdCgzLGRpbSlbY29tcF07Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBmb3J3YXJkNDEgKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgewogIHJldHVy
biAoKkEpW2NvbXBdIC00LipBLnNoaWZ0KDEsZGltKVtjb21wXSArIDYuKkEuc2hpZnQoMixkaW0p
W2NvbXBdIAogICAgLTQuKkEuc2hpZnQoMyxkaW0pW2NvbXBdICsgQS5zaGlmdCg0LGRpbSlbY29t
cF07Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5
cGUgIGZvcndhcmQxMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZvcndh
cmQxMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGZvcndhcmQyMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZv
cndhcmQyMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGUgIGZvcndhcmQzMW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJu
IGZvcndhcmQzMShBLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBU
OjpUX251bXR5cGUgIGZvcndhcmQ0MW4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0
dXJuIGZvcndhcmQ0MShBLGRpbSk7IH0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5
cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpU
X2VsZW1lbnQgIGZvcndhcmQxMW4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyByZXR1cm4g
Zm9yd2FyZDExKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFt
ZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6VF9lbGVt
ZW50ICBmb3J3YXJkMjFuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsgcmV0dXJuIGZvcndh
cmQyMShBLGNvbXAsZGltKTsgfQp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11
bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAg
Zm9yd2FyZDMxbiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7IHJldHVybiBmb3J3YXJkMzEo
QSxjb21wLGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNv
bXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQgIGZvcndh
cmQ0MW4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyByZXR1cm4gZm9yd2FyZDQxKEEsY29t
cCxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlICBmb3J3YXJkMTIgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4g
LTMuKkEgKyA0LipBLnNoaWZ0KDEsZGltKSAtIEEuc2hpZnQoMixkaW0pOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZm9yd2FyZDIyIChUJiBBLCBp
bnQgZGltID0gZmlyc3REaW0pICB7CiAgcmV0dXJuIDIuKkEgLTUuKkEuc2hpZnQoMSxkaW0pICsg
NC4qQS5zaGlmdCgyLGRpbSkgLUEuc2hpZnQoMyxkaW0pOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZm9yd2FyZDMyIChUJiBBLCBpbnQgZGltID0g
Zmlyc3REaW0pICB7CiAgcmV0dXJuIC01LipBICsgMTguKkEuc2hpZnQoMSxkaW0pIC0yNC4qQS5z
aGlmdCgyLGRpbSkgCiAgICArIDE0LipBLnNoaWZ0KDMsZGltKSAtMy4qQS5zaGlmdCg0LGRpbSk7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBmb3J3
YXJkNDIgKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsKICByZXR1cm4gMy4qQSAtMTQuKkEu
c2hpZnQoMSxkaW0pICsgMjYuKkEuc2hpZnQoMixkaW0pIC0yNC4qQS5zaGlmdCgzLGRpbSkgCiAg
ICArMTEuKkEuc2hpZnQoNCxkaW0pIC0yLipBLnNoaWZ0KDUsZGltKTsKfQoKIAoKCgp0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZT46OlRfZWxlbWVudCAgZm9yd2FyZDEyIChUJiBBLCBpbnQgY29tcCwg
aW50IGRpbSkgIHsKICByZXR1cm4gLTMuKigqQSlbY29tcF0gKyA0LipBLnNoaWZ0KDEsZGltKVtj
b21wXSAtIEEuc2hpZnQoMixkaW0pW2NvbXBdOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUg
dHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZT46
OlRfZWxlbWVudCAgZm9yd2FyZDIyIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsKICByZXR1
cm4gMi4qKCpBKVtjb21wXSAtNS4qQS5zaGlmdCgxLGRpbSlbY29tcF0gKyA0LipBLnNoaWZ0KDIs
ZGltKVtjb21wXSAKICAgIC1BLnNoaWZ0KDMsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4gaW5saW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpU
X251bXR5cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQzMiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0p
ICB7CiAgcmV0dXJuIC01LiooKkEpW2NvbXBdICsgMTguKkEuc2hpZnQoMSxkaW0pW2NvbXBdIC0y
NC4qQS5zaGlmdCgyLGRpbSlbY29tcF0KICAgICsgMTQuKkEuc2hpZnQoMyxkaW0pW2NvbXBdIC0z
LipBLnNoaWZ0KDQsZGltKVtjb21wXTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVu
YW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5cGU+OjpUX2Vs
ZW1lbnQgIGZvcndhcmQ0MiAoVCYgQSwgaW50IGNvbXAsIGludCBkaW0pICB7CiAgcmV0dXJuIDMu
KigqQSlbY29tcF0gLTE0LipBLnNoaWZ0KDEsZGltKVtjb21wXSArIDI2LipBLnNoaWZ0KDIsZGlt
KVtjb21wXSAKICAgIC0yNC4qQS5zaGlmdCgzLGRpbSlbY29tcF0gKzExLipBLnNoaWZ0KDQsZGlt
KVtjb21wXSAKICAgICsgMTEuKkEuc2hpZnQoNSxkaW0pW2NvbXBdOwp9CgoKIAoKCgp0ZW1wbGF0
ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZm9yd2FyZDEybiAoVCYg
QSwgaW50IGRpbSA9IGZpcnN0RGltKSAgeyByZXR1cm4gZm9yd2FyZDEyKEEsZGltKSAqIHJlY2lw
XzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGZv
cndhcmQyMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZvcndhcmQyMihB
LGRpbSk7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGUg
IGZvcndhcmQzMm4gKFQmIEEsIGludCBkaW0gPSBmaXJzdERpbSkgIHsgcmV0dXJuIGZvcndhcmQz
MihBLGRpbSkgKiByZWNpcF8yOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAg
VDo6VF9udW10eXBlICBmb3J3YXJkNDJuIChUJiBBLCBpbnQgZGltID0gZmlyc3REaW0pICB7IHJl
dHVybiBmb3J3YXJkNDIoQSxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBmb3J3YXJkMTJuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsgcmV0dXJu
IGZvcndhcmQxMihBLGNvbXAsZGltKSAqIHJlY2lwXzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQyMm4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyBy
ZXR1cm4gZm9yd2FyZDIyKEEsY29tcCxkaW0pOyB9CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0
eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlPjo6
VF9lbGVtZW50ICBmb3J3YXJkMzJuIChUJiBBLCBpbnQgY29tcCwgaW50IGRpbSkgIHsgcmV0dXJu
IGZvcndhcmQzMihBLGNvbXAsZGltKSAqIHJlY2lwXzI7IH0KdGVtcGxhdGU8Y2xhc3MgVD4gaW5s
aW5lIHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQgIGZvcndhcmQ0Mm4gKFQmIEEsIGludCBjb21wLCBpbnQgZGltKSAgeyBy
ZXR1cm4gZm9yd2FyZDQyKEEsY29tcCxkaW0pOyB9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+Cmlu
bGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDI+IGdyYWQyRChUJiBBKSB7
CiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMj4oCiAgICBjZW50
cmFsMTIoQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTIoQSxzZWNvbmREaW0pKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMj4g
Z3JhZDJENChUJiBBKSB7CiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5
cGUsMj4oCiAgICBjZW50cmFsMTQoQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTQoQSxzZWNvbmRE
aW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBU
OjpUX251bXR5cGUsMz4gZ3JhZDNEKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwxMihBLGZpcnN0RGltKSwKICAgIGNlbnRy
YWwxMihBLHNlY29uZERpbSksCiAgICBjZW50cmFsMTIoQSx0aGlyZERpbSkpOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPiBn
cmFkM0Q0KFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlw
ZSwzPigKICAgIGNlbnRyYWwxNChBLGZpcnN0RGltKSwKICAgIGNlbnRyYWwxNChBLHNlY29uZERp
bSksCiAgICBjZW50cmFsMTQoQSx0aGlyZERpbSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwyPiBncmFkMkRuKFQmIEEpIHsK
ICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwyPigKICAgIGNlbnRy
YWwxMm4oQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTJuKEEsc2Vjb25kRGltKSk7Cn0KCnRlbXBs
YXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDI+
IGdyYWQyRDRuKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVt
dHlwZSwyPigKICAgIGNlbnRyYWwxNG4oQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTRuKEEsc2Vj
b25kRGltKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFt
ZSAgVDo6VF9udW10eXBlLDM+IGdyYWQzRG4oVCYgQSkgewogIHJldHVybiBUaW55VmVjdG9yPCB0
eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAogICAgY2VudHJhbDEybihBLGZpcnN0RGltKSwKICAg
IGNlbnRyYWwxMm4oQSxzZWNvbmREaW0pLAogICAgY2VudHJhbDEybihBLHRoaXJkRGltKSk7Cn0K
CnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10
eXBlLDM+IGdyYWQzRDRuKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwxNG4oQSxmaXJzdERpbSksCiAgICBjZW50cmFsMTRu
KEEsc2Vjb25kRGltKSwKICAgIGNlbnRyYWwxNG4oQSx0aGlyZERpbSkpOwp9CgogCgoKCnRlbXBs
YXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDI+
IGdyYWRTcXIyRChUJiBBKSB7CiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251
bXR5cGUsMj4oCiAgICBjZW50cmFsMjIoQSxmaXJzdERpbSksCiAgICBjZW50cmFsMjIoQSxzZWNv
bmREaW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1l
ICBUOjpUX251bXR5cGUsMj4gZ3JhZFNxcjJENChUJiBBKSB7CiAgcmV0dXJuIFRpbnlWZWN0b3I8
IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMj4oCiAgICBjZW50cmFsMjQoQSxmaXJzdERpbSksCiAg
ICBjZW50cmFsMjQoQSxzZWNvbmREaW0pKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRp
bnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZFNxcjNEKFQmIEEpIHsKICBy
ZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwy
MihBLGZpcnN0RGltKSwKICAgIGNlbnRyYWwyMihBLHNlY29uZERpbSksCiAgICBjZW50cmFsMjIo
QSx0aGlyZERpbSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVGlueVZlY3RvcjwgdHlw
ZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPiBncmFkU3FyM0Q0KFQmIEEpIHsKICByZXR1cm4gVGlueVZl
Y3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwyNChBLGZpcnN0RGlt
KSwKICAgIGNlbnRyYWwyNChBLHNlY29uZERpbSksCiAgICBjZW50cmFsMjQoQSx0aGlyZERpbSkp
Owp9CgogCgoKCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAg
VDo6VF9udW10eXBlLDI+IGdyYWRTcXIyRG4oVCYgQSkgewogIHJldHVybiBncmFkU3FyMkQoQSk7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlLDI+IGdyYWRTcXIyRDRuKFQmIEEpIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSwyPigKICAgIGNlbnRyYWwyNChBLGZpcnN0RGltKSAqIHJlY2lwXzEy
LAogICAgY2VudHJhbDI0KEEsc2Vjb25kRGltKSAqIHJlY2lwXzEyKTsKfQoKdGVtcGxhdGU8Y2xh
c3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZFNx
cjNEbihUJiBBKSB7CiAgcmV0dXJuIGdyYWRTcXIzRChBKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4K
aW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZFNxcjNENG4o
VCYgQSkgewogIHJldHVybiBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAog
ICAgY2VudHJhbDI0KEEsZmlyc3REaW0pICogcmVjaXBfMTIsCiAgICBjZW50cmFsMjQoQSxzZWNv
bmREaW0pICogcmVjaXBfMTIsCiAgICBjZW50cmFsMjQoQSx0aGlyZERpbSkgKiByZWNpcF8xMik7
Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlNYXRyaXg8IHR5cGVuYW1lICBt
dWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAgIFQ6OlRfbnVtdHlwZT46OlRfZWxl
bWVudCwgMywgMz4KSmFjb2JpYW4zRChUJiBBKQp7CiAgICBjb25zdCBpbnQgeD0wLCB5PTEsIHo9
MjsKICAgIGNvbnN0IGludCB1PTAsIHY9MSwgdz0yOwoKICAgIFRpbnlNYXRyaXg8IHR5cGVuYW1l
ICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAgICAgICBUOjpUX251bXR5cGU+
OjpUX2VsZW1lbnQsIDMsIDM+IGdyYWQ7CgogICAgZ3JhZCh1LHgpID0gY2VudHJhbDEyKEEsdSx4
KTsKICAgIGdyYWQodSx5KSA9IGNlbnRyYWwxMihBLHUseSk7CiAgICBncmFkKHUseikgPSBjZW50
cmFsMTIoQSx1LHopOwogICAgZ3JhZCh2LHgpID0gY2VudHJhbDEyKEEsdix4KTsKICAgIGdyYWQo
dix5KSA9IGNlbnRyYWwxMihBLHYseSk7CiAgICBncmFkKHYseikgPSBjZW50cmFsMTIoQSx2LHop
OwogICAgZ3JhZCh3LHgpID0gY2VudHJhbDEyKEEsdyx4KTsKICAgIGdyYWQodyx5KSA9IGNlbnRy
YWwxMihBLHcseSk7CiAgICBncmFkKHcseikgPSBjZW50cmFsMTIoQSx3LHopOwoKICAgIHJldHVy
biBncmFkOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVGlueU1hdHJpeDwgdHlwZW5hbWUg
IG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgIAogICAgVDo6VF9udW10eXBlPjo6VF9l
bGVtZW50LCAzLCAzPgpKYWNvYmlhbjNEbihUJiBBKQp7CiAgICBjb25zdCBpbnQgeD0wLCB5PTEs
IHo9MjsKICAgIGNvbnN0IGludCB1PTAsIHY9MSwgdz0yOwoKICAgIFRpbnlNYXRyaXg8IHR5cGVu
YW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAgICAgICBUOjpUX251bXR5
cGU+OjpUX2VsZW1lbnQsIDMsIDM+IGdyYWQ7CiAgICAKICAgIGdyYWQodSx4KSA9IGNlbnRyYWwx
Mm4oQSx1LHgpOwogICAgZ3JhZCh1LHkpID0gY2VudHJhbDEybihBLHUseSk7CiAgICBncmFkKHUs
eikgPSBjZW50cmFsMTJuKEEsdSx6KTsKICAgIGdyYWQodix4KSA9IGNlbnRyYWwxMm4oQSx2LHgp
OwogICAgZ3JhZCh2LHkpID0gY2VudHJhbDEybihBLHYseSk7CiAgICBncmFkKHYseikgPSBjZW50
cmFsMTJuKEEsdix6KTsKICAgIGdyYWQodyx4KSA9IGNlbnRyYWwxMm4oQSx3LHgpOwogICAgZ3Jh
ZCh3LHkpID0gY2VudHJhbDEybihBLHcseSk7CiAgICBncmFkKHcseikgPSBjZW50cmFsMTJuKEEs
dyx6KTsKCiAgICByZXR1cm4gZ3JhZDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlN
YXRyaXg8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lIAogICAgVDo6
VF9udW10eXBlPjo6VF9lbGVtZW50LCAzLCAzPgpKYWNvYmlhbjNENChUJiBBKQp7CiAgICBjb25z
dCBpbnQgeD0wLCB5PTEsIHo9MjsKICAgIGNvbnN0IGludCB1PTAsIHY9MSwgdz0yOwoKICAgIFRp
bnlNYXRyaXg8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lICAKICAg
ICAgICBUOjpUX251bXR5cGU+OjpUX2VsZW1lbnQsIDMsIDM+IGdyYWQ7CiAgICAKICAgIGdyYWQo
dSx4KSA9IGNlbnRyYWwxNChBLHUseCk7CiAgICBncmFkKHUseSkgPSBjZW50cmFsMTQoQSx1LHkp
OwogICAgZ3JhZCh1LHopID0gY2VudHJhbDE0KEEsdSx6KTsKICAgIGdyYWQodix4KSA9IGNlbnRy
YWwxNChBLHYseCk7CiAgICBncmFkKHYseSkgPSBjZW50cmFsMTQoQSx2LHkpOwogICAgZ3JhZCh2
LHopID0gY2VudHJhbDE0KEEsdix6KTsKICAgIGdyYWQodyx4KSA9IGNlbnRyYWwxNChBLHcseCk7
CiAgICBncmFkKHcseSkgPSBjZW50cmFsMTQoQSx3LHkpOwogICAgZ3JhZCh3LHopID0gY2VudHJh
bDE0KEEsdyx6KTsKCiAgICByZXR1cm4gZ3JhZDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5l
IFRpbnlNYXRyaXg8IHR5cGVuYW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lIAog
ICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50LCAzLCAzPgpKYWNvYmlhbjNENG4oVCYgQSkKewog
ICAgY29uc3QgaW50IHg9MCwgeT0xLCB6PTI7CiAgICBjb25zdCBpbnQgdT0wLCB2PTEsIHc9MjsK
CiAgICBUaW55TWF0cml4PCB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPCB0eXBlbmFt
ZSAgCiAgICAgICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50LCAzLCAzPiBncmFkOwogICAgCiAg
ICBncmFkKHUseCkgPSBjZW50cmFsMTRuKEEsdSx4KTsKICAgIGdyYWQodSx5KSA9IGNlbnRyYWwx
NG4oQSx1LHkpOwogICAgZ3JhZCh1LHopID0gY2VudHJhbDE0bihBLHUseik7CiAgICBncmFkKHYs
eCkgPSBjZW50cmFsMTRuKEEsdix4KTsKICAgIGdyYWQodix5KSA9IGNlbnRyYWwxNG4oQSx2LHkp
OwogICAgZ3JhZCh2LHopID0gY2VudHJhbDE0bihBLHYseik7CiAgICBncmFkKHcseCkgPSBjZW50
cmFsMTRuKEEsdyx4KTsKICAgIGdyYWQodyx5KSA9IGNlbnRyYWwxNG4oQSx3LHkpOwogICAgZ3Jh
ZCh3LHopID0gY2VudHJhbDE0bihBLHcseik7CgogICAgcmV0dXJuIGdyYWQ7Cn0KCiAKCgoKIAoK
dGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5
cGUsMz4gCmN1cmwoVCYgdngsIFQmIHZ5LCBUJiB2eikgewogIGNvbnN0IGludCB4ID0gZmlyc3RE
aW0sIHkgPSBzZWNvbmREaW0sIHogPSB0aGlyZERpbTsKCiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5
cGVuYW1lICBUOjpUX251bXR5cGUsMz4oCiAgICBjZW50cmFsMTIodnoseSktY2VudHJhbDEyKHZ5
LHopLAogICAgY2VudHJhbDEyKHZ4LHopLWNlbnRyYWwxMih2eix4KSwKICAgIGNlbnRyYWwxMih2
eSx4KS1jZW50cmFsMTIodngseSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55
VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+CmN1cmxuKFQmIHZ4LCBUJiB2eSwgVCYg
dnopIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhpcmRE
aW07CgogIHJldHVybiBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAogICAg
KGNlbnRyYWwxMih2eix5KS1jZW50cmFsMTIodnkseikpICogcmVjaXBfMiwKICAgIChjZW50cmFs
MTIodngseiktY2VudHJhbDEyKHZ6LHgpKSAqIHJlY2lwXzIsCiAgICAoY2VudHJhbDEyKHZ5LHgp
LWNlbnRyYWwxMih2eCx5KSkgKiByZWNpcF8yKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSBjdXJsKFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZp
cnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhpcmREaW07CgogIHJldHVybiBUOjpUX251bXR5
cGUoCiAgICBjZW50cmFsMTIoQSx6LHkpLWNlbnRyYWwxMihBLHkseiksCiAgICBjZW50cmFsMTIo
QSx4LHopLWNlbnRyYWwxMihBLHoseCksCiAgICBjZW50cmFsMTIoQSx5LHgpLWNlbnRyYWwxMihB
LHgseSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10
eXBlIGN1cmxuKFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGlt
LCB6ID0gdGhpcmREaW07CgogIHJldHVybiBUOjpUX251bXR5cGUoCiAgICAoY2VudHJhbDEyKEEs
eix5KS1jZW50cmFsMTIoQSx5LHopKSAqIHJlY2lwXzIsCiAgICAoY2VudHJhbDEyKEEseCx6KS1j
ZW50cmFsMTIoQSx6LHgpKSAqIHJlY2lwXzIsCiAgICAoY2VudHJhbDEyKEEseSx4KS1jZW50cmFs
MTIoQSx4LHkpKSAqIHJlY2lwXzIpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBUaW55
VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+CmN1cmw0KFQmIHZ4LCBUJiB2eSwgVCYg
dnopIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhpcmRE
aW07CgogIHJldHVybiBUaW55VmVjdG9yPCB0eXBlbmFtZSAgVDo6VF9udW10eXBlLDM+KAogICAg
Y2VudHJhbDE0KHZ6LHkpLWNlbnRyYWwxNCh2eSx6KSwKICAgIGNlbnRyYWwxNCh2eCx6KS1jZW50
cmFsMTQodnoseCksCiAgICBjZW50cmFsMTQodnkseCktY2VudHJhbDE0KHZ4LHkpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJsNChUJiBB
KSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbSwgeiA9IHRoaXJkRGlt
OwoKICByZXR1cm4gVDo6VF9udW10eXBlKAogICAgY2VudHJhbDE0KEEseix5KS1jZW50cmFsMTQo
QSx5LHopLAogICAgY2VudHJhbDE0KEEseCx6KS1jZW50cmFsMTQoQSx6LHgpLAogICAgY2VudHJh
bDE0KEEseSx4KS1jZW50cmFsMTQoQSx4LHkpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSwzPgpjdXJsNG4oVCYgdngsIFQm
IHZ5LCBUJiB2eikgewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW0sIHog
PSB0aGlyZERpbTsKCiAgcmV0dXJuIFRpbnlWZWN0b3I8IHR5cGVuYW1lICBUOjpUX251bXR5cGUs
Mz4oCiAgICAoY2VudHJhbDE0KHZ6LHkpLWNlbnRyYWwxNCh2eSx6KSkgKiByZWNpcF8yLAogICAg
KGNlbnRyYWwxNCh2eCx6KS1jZW50cmFsMTQodnoseCkpICogcmVjaXBfMiwKICAgIChjZW50cmFs
MTQodnkseCktY2VudHJhbDE0KHZ4LHkpKSAqIHJlY2lwXzIpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlCmN1cmw0bihUJiBBKSB7CiAgY29uc3Qg
aW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbSwgeiA9IHRoaXJkRGltOwoKICByZXR1cm4g
VDo6VF9udW10eXBlKAogICAgKGNlbnRyYWwxNChBLHoseSktY2VudHJhbDE0KEEseSx6KSkgKiBy
ZWNpcF8yLAogICAgKGNlbnRyYWwxNChBLHgseiktY2VudHJhbDE0KEEseix4KSkgKiByZWNpcF8y
LAogICAgKGNlbnRyYWwxNChBLHkseCktY2VudHJhbDE0KEEseCx5KSkgKiByZWNpcF8yKTsKfQoK
CgogCgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJs
KFQmIHZ4LCBUJiB2eSkgewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07
CgogIHJldHVybiBjZW50cmFsMTIodnkseCktY2VudHJhbDEyKHZ4LHkpOwp9Cgp0ZW1wbGF0ZTxj
bGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJsbihUJiB2eCwgVCYgdnkp
IHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltOwoKICByZXR1cm4gKGNl
bnRyYWwxMih2eSx4KS1jZW50cmFsMTIodngseSkpICogcmVjaXBfMjsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlIGN1cmwyRChU
JiBBKSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4g
Y2VudHJhbDEyKEEseSx4KS1jZW50cmFsMTIoQSx4LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlIGN1cmwyRG4oVCYgQSkgewog
IGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07CiAgcmV0dXJuIChjZW50cmFs
MTIoQSx5LHgpLWNlbnRyYWwxMihBLHgseSkpICogcmVjaXBfMjsKfQoKCiAKCnRlbXBsYXRlPGNs
YXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlCmN1cmw0KFQmIHZ4LCBUJiB2eSkg
ewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07CgogIHJldHVybiBjZW50
cmFsMTQodnkseCktY2VudHJhbDE0KHZ4LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUg
dHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQpjdXJsNG4oVCYgdngsIFQmIHZ5KSB7CiAgY29uc3QgaW50
IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKCiAgcmV0dXJuIChjZW50cmFsMTQodnkseCkt
Y2VudHJhbDE0KHZ4LHkpKSAqIHJlY2lwXzEyOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlOjpUX251bXR5cGUgY3VybDJENChUJiBBKSB7CiAgY29u
c3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4gY2VudHJhbDE0KEEs
eSx4KS1jZW50cmFsMTQoQSx4LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlIGN1cmwyRDRuKFQmIEEpIHsKICBjb25zdCBpbnQg
eCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltOwogIHJldHVybiAoY2VudHJhbDE0KEEseSx4KS1j
ZW50cmFsMTQoQSx4LHkpKSAqIHJlY2lwXzEyOwp9CgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZGl2IChUJiAgdnggLCBUJiAgdnkgKSB7IAog
IHJldHVybiBjZW50cmFsMTIodngsZmlyc3REaW0pICsgY2VudHJhbDEyKHZ5LHNlY29uZERpbSk7
Cn0gCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZGl2
biAoVCYgIHZ4ICwgVCYgIHZ5ICkgeyAKICByZXR1cm4gKGNlbnRyYWwxMih2eCxmaXJzdERpbSkg
KyBjZW50cmFsMTIodnksc2Vjb25kRGltKSkKICAgICAqIHJlY2lwXzI7Cn0gCgp0ZW1wbGF0ZTxj
bGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSAgZGl2NCAoVCYgIHZ4ICwgVCYg
IHZ5ICkgeyAKICByZXR1cm4gY2VudHJhbDE0KHZ4LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxz
ZWNvbmREaW0pOwp9IAoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHR5cGVuYW1lICBUOjpUX251
bXR5cGUgIGRpdjRuIChUJiAgdnggLCBUJiAgdnkgKSB7IAogIHJldHVybiAoY2VudHJhbDE0KHZ4
LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxzZWNvbmREaW0pKQogICAgKiByZWNpcF8xMjsKfSAK
CnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBkaXYgKFQm
ICB2eCAsIFQmICB2eSAsIFQmICB2eiApIHsgCiAgcmV0dXJuIGNlbnRyYWwxMih2eCxmaXJzdERp
bSkgKyBjZW50cmFsMTIodnksc2Vjb25kRGltKSAKICAgICsgY2VudHJhbDEyKHZ6LHRoaXJkRGlt
KTsKfSAKCnRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlICBk
aXZuIChUJiAgdnggLCBUJiAgdnkgLCBUJiAgdnogKSB7IAogIHJldHVybiAoY2VudHJhbDEyKHZ4
LGZpcnN0RGltKSArIGNlbnRyYWwxMih2eSxzZWNvbmREaW0pIAogICAgKyBjZW50cmFsMTIodnos
dGhpcmREaW0pKSAqIHJlY2lwXzI7Cn0gCgp0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdHlwZW5h
bWUgIFQ6OlRfbnVtdHlwZSAgZGl2NCAoVCYgIHZ4ICwgVCYgIHZ5ICwgVCYgIHZ6ICkgeyAKICBy
ZXR1cm4gY2VudHJhbDE0KHZ4LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxzZWNvbmREaW0pIAog
ICAgKyBjZW50cmFsMTQodnosdGhpcmREaW0pOwp9IAoKdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5l
IHR5cGVuYW1lICBUOjpUX251bXR5cGUgIGRpdjRuIChUJiAgdnggLCBUJiAgdnkgLCBUJiAgdnog
KSB7IAogIHJldHVybiAoY2VudHJhbDE0KHZ4LGZpcnN0RGltKSArIGNlbnRyYWwxNCh2eSxzZWNv
bmREaW0pCiAgICArIGNlbnRyYWwxNCh2eix0aGlyZERpbSkpICogcmVjaXBfMTI7Cn0gCgp0ZW1w
bGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRp
djJEKFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltOwogIHJl
dHVybiBjZW50cmFsMTIoQSx4LHgpICsgY2VudHJhbDEyKEEseSx5KTsKfQoKdGVtcGxhdGU8Y2xh
c3MgVD4KaW5saW5lIHR5cGVuYW1lICBUOjpUX251bXR5cGU6OlRfbnVtdHlwZQpkaXYyRDQoVCYg
QSkgewogIGNvbnN0IGludCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW07CiAgcmV0dXJuIGNl
bnRyYWwxNChBLHgseCkgKyBjZW50cmFsMTQoQSx5LHkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpp
bmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjJEbihUJiBBKSB7CiAg
Y29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4gKGNlbnRyYWwx
MihBLHgseCkgKyBjZW50cmFsMTIoQSx5LHkpKSAqIHJlY2lwXzI7Cn0KCnRlbXBsYXRlPGNsYXNz
IFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlOjpUX251bXR5cGUKZGl2MkQ0bihUJiBB
KSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbTsKICByZXR1cm4gKGNl
bnRyYWwxNChBLHgseCkgKyBjZW50cmFsMTQoQSx5LHkpKSAqIHJlY2lwXzEyOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjNE
KFQmIEEpIHsKICBjb25zdCBpbnQgeCA9IGZpcnN0RGltLCB5ID0gc2Vjb25kRGltLCB6ID0gdGhp
cmREaW07CiAgcmV0dXJuIGNlbnRyYWwxMihBLHgseCkgKyBjZW50cmFsMTIoQSx5LHkpICsgY2Vu
dHJhbDEyKEEseix6KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHR5cGVuYW1lICBUOjpU
X251bXR5cGU6OlRfbnVtdHlwZQpkaXYzRDQoVCYgQSkgewogIGNvbnN0IGludCB4ID0gZmlyc3RE
aW0sIHkgPSBzZWNvbmREaW0sIHogPSB0aGlyZERpbTsKICByZXR1cm4gY2VudHJhbDE0KEEseCx4
KSArIGNlbnRyYWwxNChBLHkseSkgKyBjZW50cmFsMTQoQSx6LHopOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjNEbihUJiBB
KSB7CiAgY29uc3QgaW50IHggPSBmaXJzdERpbSwgeSA9IHNlY29uZERpbSwgeiA9IHRoaXJkRGlt
OwogIHJldHVybiAoY2VudHJhbDEyKEEseCx4KSArIGNlbnRyYWwxMihBLHkseSkgKyBjZW50cmFs
MTIoQSx6LHopKQogICAgKiByZWNpcF8yOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlw
ZW5hbWUgIFQ6OlRfbnVtdHlwZTo6VF9udW10eXBlCmRpdjNENG4oVCYgQSkgewogIGNvbnN0IGlu
dCB4ID0gZmlyc3REaW0sIHkgPSBzZWNvbmREaW0sIHogPSB0aGlyZERpbTsKICByZXR1cm4gKGNl
bnRyYWwxNChBLHgseCkgKyBjZW50cmFsMTQoQSx5LHkpICsgY2VudHJhbDE0KEEseix6KSkKICAg
ICogcmVjaXBfMTI7Cn0KCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHR5cGVuYW1lICBU
OjpUX251bXR5cGUKbWl4ZWQyMihUJiBBLCBpbnQgeCwgaW50IHkpCnsKICAgIHJldHVybiBBLnNo
aWZ0KC0xLHgsLTEseSkgLSBBLnNoaWZ0KC0xLHgsMSx5KQogICAgICAgIC1BLnNoaWZ0KDEseCwt
MSx5KSArIEEuc2hpZnQoMSx4LDEseSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSB0eXBl
bmFtZSAgVDo6VF9udW10eXBlCm1peGVkMjJuKFQmIEEsIGludCB4LCBpbnQgeSkKewogICAgcmV0
dXJuIG1peGVkMjIoQSwgeCwgeSkgKiByZWNpcF80Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxp
bmUgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZQptaXhlZDI0KFQmIEEsIGludCB4LCBpbnQgeSkKewog
ICAgcmV0dXJuIDY0LiooQS5zaGlmdCgtMSx4LC0xLHkpIC0gQS5zaGlmdCgtMSx4LDEseSkKICAg
ICAgICAtQS5zaGlmdCgxLHgsLTEseSkgKyBBLnNoaWZ0KDEseCwxLHkpKQogICAgICAgICsgKEEu
c2hpZnQoLTIseCwrMSx5KSAtIEEuc2hpZnQoLTEseCwyLHkpCiAgICAgICAgLSBBLnNoaWZ0KDEs
eCwyLHkpLUEuc2hpZnQoMix4LDEseSkKICAgICAgICArIEEuc2hpZnQoMix4LC0xLHkpK0Euc2hp
ZnQoMSx4LC0yLHkpCiAgICAgICAgLSBBLnNoaWZ0KC0xLHgsLTIseSkrQS5zaGlmdCgtMix4LC0x
LHkpKQogICAgICAgICsgOC4qKEEuc2hpZnQoLTEseCwxLHkpK0Euc2hpZnQoLTEseCwyLHkpCiAg
ICAgICAgLUEuc2hpZnQoMix4LC0yLHkpICsgQS5zaGlmdCgyLHgsMix5KSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9udW10eXBlCm1peGVkMjRuKFQmIEEsIGlu
dCB4LCBpbnQgeSkKewogICAgcmV0dXJuIG1peGVkMjQoQSx4LHkpICogcmVjaXBfMTQ0Owp9Cgog
CgoKCiAKIAogCiAKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHR5cGVuYW1lICBtdWx0
aWNvbXBvbmVudF90cmFpdHM8IHR5cGVuYW1lIAogICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50
IGRpdjNEVmVjNChUJiBBLCAKICAgIGNvbnN0IFVuaWZvcm1DdWJpY0dlb21ldHJ5PDM+JiBnZW9t
KQp7CiAgICBjb25zdCBpbnQgeCA9IDAsIHkgPSAxLCB6ID0gMjsKCiAgICByZXR1cm4gKGNlbnRy
YWwxNChBLCB4LCBmaXJzdERpbSkgKyBjZW50cmFsMTQoQSwgeSwgc2Vjb25kRGltKQogICAgICAg
ICsgY2VudHJhbDE0KEEsIHosIHRoaXJkRGltKSkgKiByZWNpcF8xMiAqIGdlb20ucmVjaXBTcGF0
aWFsU3RlcCgpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgdHlwZW5hbWUgIFQ6OlRfbnVt
dHlwZSBMYXBsYWNpYW4zRDQoVCYgQSwgCiAgICBjb25zdCBVbmlmb3JtQ3ViaWNHZW9tZXRyeTwz
PiYgZ2VvbSkKewogICAgcmV0dXJuIExhcGxhY2lhbjNENG4oQSkgKiBnZW9tLnJlY2lwU3BhdGlh
bFN0ZXBQb3cyKCk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSB0eXBlbmFtZSAgVDo6VF9u
dW10eXBlIExhcGxhY2lhbjNEVmVjNChUJiBBLAogICAgY29uc3QgVW5pZm9ybUN1YmljR2VvbWV0
cnk8Mz4mIGdlb20pCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIFQ6OlRfbnVtdHlwZSB2ZWN0b3Iz
ZDsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czx2ZWN0b3IzZD46
OlRfZWxlbWVudCAKICAgICAgICBUX2VsZW1lbnQ7CiAgICBjb25zdCBpbnQgdSA9IDAsIHYgPSAx
LCB3ID0gMjsKICAgIGNvbnN0IGludCB4ID0gMCwgeSA9IDEsIHogPSAyOwoKICAgICAKICAgICAK
CiAgICBUX2VsZW1lbnQgdDEgPSAoY2VudHJhbDI0KEEsdSx4KSArIGNlbnRyYWwyNChBLHUseSkg
KyBjZW50cmFsMjQoQSx1LHopKQogICAgICAgICogcmVjaXBfMTIgKiBnZW9tLnJlY2lwU3BhdGlh
bFN0ZXBQb3cyKCk7CgogICAgVF9lbGVtZW50IHQyID0gKGNlbnRyYWwyNChBLHYseCkgKyBjZW50
cmFsMjQoQSx2LHkpICsgY2VudHJhbDI0KEEsdix6KSkKICAgICAgICAqIHJlY2lwXzEyICogZ2Vv
bS5yZWNpcFNwYXRpYWxTdGVwUG93MigpOwoKICAgIFRfZWxlbWVudCB0MyA9IChjZW50cmFsMjQo
QSx3LHgpICsgY2VudHJhbDI0KEEsdyx5KSArIGNlbnRyYWwyNChBLHcseikpCiAgICAgICAgKiBy
ZWNpcF8xMiAqIGdlb20ucmVjaXBTcGF0aWFsU3RlcFBvdzIoKTsKCiAgICByZXR1cm4gdmVjdG9y
M2QodDEsdDIsdDMpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgVGlueU1hdHJpeDwgdHlw
ZW5hbWUgIG11bHRpY29tcG9uZW50X3RyYWl0czwgdHlwZW5hbWUgCiAgICBUOjpUX251bXR5cGU+
OjpUX2VsZW1lbnQsIDMsIDM+CmdyYWQzRFZlYzQoVCYgQSwgY29uc3QgVW5pZm9ybUN1YmljR2Vv
bWV0cnk8Mz4mIGdlb20pCnsKICAgIGNvbnN0IGludCB4PTAsIHk9MSwgej0yOwogICAgY29uc3Qg
aW50IHU9MCwgdj0xLCB3PTI7CgogICAgVGlueU1hdHJpeDwgdHlwZW5hbWUgIG11bHRpY29tcG9u
ZW50X3RyYWl0czwgdHlwZW5hbWUgCiAgICAgICAgVDo6VF9udW10eXBlPjo6VF9lbGVtZW50LCAz
LCAzPiBncmFkOwoKICAgICAKICAgIGdyYWQodSx4KSA9IGNlbnRyYWwxNG4oQSx1LHgpICogZ2Vv
bS5yZWNpcFNwYXRpYWxTdGVwKCk7CiAgICBncmFkKHUseSkgPSBjZW50cmFsMTRuKEEsdSx5KSAq
IGdlb20ucmVjaXBTcGF0aWFsU3RlcCgpOwogICAgZ3JhZCh1LHopID0gY2VudHJhbDE0bihBLHUs
eikgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKTsKICAgIGdyYWQodix4KSA9IGNlbnRyYWwxNG4o
QSx2LHgpICogZ2VvbS5yZWNpcFNwYXRpYWxTdGVwKCk7CiAgICBncmFkKHYseSkgPSBjZW50cmFs
MTRuKEEsdix5KSAqIGdlb20ucmVjaXBTcGF0aWFsU3RlcCgpOwogICAgZ3JhZCh2LHopID0gY2Vu
dHJhbDE0bihBLHYseikgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKTsKICAgIGdyYWQodyx4KSA9
IGNlbnRyYWwxNG4oQSx3LHgpICogZ2VvbS5yZWNpcFNwYXRpYWxTdGVwKCk7CiAgICBncmFkKHcs
eSkgPSBjZW50cmFsMTRuKEEsdyx5KSAqIGdlb20ucmVjaXBTcGF0aWFsU3RlcCgpOwogICAgZ3Jh
ZCh3LHopID0gY2VudHJhbDE0bihBLHcseikgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKTsKCiAg
ICByZXR1cm4gZ3JhZDsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFRpbnlWZWN0b3I8IHR5
cGVuYW1lICBUOjpUX251bXR5cGUsMz4gZ3JhZDNENChUJiBBLAogICAgY29uc3QgVW5pZm9ybUN1
YmljR2VvbWV0cnk8Mz4mIGdlb20pIHsKICByZXR1cm4gVGlueVZlY3RvcjwgdHlwZW5hbWUgIFQ6
OlRfbnVtdHlwZSwzPigKICAgIGNlbnRyYWwxNChBLGZpcnN0RGltKSAqIHJlY2lwXzEyICogZ2Vv
bS5yZWNpcFNwYXRpYWxTdGVwKCksCiAgICBjZW50cmFsMTQoQSxzZWNvbmREaW0pICogcmVjaXBf
MTIgKiBnZW9tLnJlY2lwU3BhdGlhbFN0ZXAoKSwKICAgIGNlbnRyYWwxNChBLHRoaXJkRGltKSAq
IHJlY2lwXzEyICogZ2VvbS5yZWNpcFNwYXRpYWxTdGVwKCkpOwp9Cgp9IAoKCgojIDggIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9zdGVuY2lsLmgiIDIKCgpu
YW1lc3BhY2UgIGJsaXR6ICB7IAoKIAogCiAKIAoKIAoKCgoKCgoKCiNkZWZpbmUgQlpfREVDTEFS
RV9TVEVOQ0lMMihuYW1lLEEsQikgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xh
c3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywg
Y2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2
b2lkIGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwg
VDExKSB7CgoKCgoKCiNkZWZpbmUgQlpfRU5EX1NURU5DSUxfV0lUSF9TSEFQRShNSU5TLE1BWFMp
IH0gdGVtcGxhdGU8aW50IE4+IHZvaWQgZ2V0RXh0ZW50KFRpbnlWZWN0b3I8aW50LE4+JiBtaW5i
LCBUaW55VmVjdG9yPGludCxOPiYgbWF4YikgY29uc3QgeyBtaW5iID0gTUlOUzsgbWF4YiA9IE1B
WFM7IH0gZW51bSB7IGhhc0V4dGVudCA9IDEgfTsgfTsKIyA0MiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWwuaCIKCiNkZWZpbmUgQlpfRU5EX1NU
RU5DSUwgfSBlbnVtIHsgaGFzRXh0ZW50ID0gMCB9OyB9OwojZGVmaW5lIEJaX1NURU5DSUxfRU5E
IEJaX0VORF9TVEVOQ0lMCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDMobmFtZSxBLEIsQykg
c3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFz
cyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBj
bGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFwcGx5KFQxJiBBLCBUMiYg
QiwgVDMmIEMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExKSB7CgoKCgoKCgojZGVm
aW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDQobmFtZSxBLEIsQyxEKSBzdHJ1Y3QgbmFtZSB7IHRlbXBs
YXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xh
c3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDksIGNsYXNzIFQxMCwgY2xhc3MgVDEx
PiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHkoVDEmIEEsIFQyJiBCLCBUMyYgQywgVDQmIEQsIFQ1
LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEpIHsKCgoKCgoKCiNkZWZpbmUgQlpfREVDTEFSRV9T
VEVOQ0lMNShuYW1lLEEsQixDLEQsRSkgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwg
Y2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBU
NywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGlu
ZSB2b2lkIGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYsIFQ3LCBU
OCwgVDksIFQxMCwgVDExKSB7CgoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDYobmFt
ZSxBLEIsQyxELEUsRikgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIs
IGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3Mg
VDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFw
cGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3LCBUOCwgVDks
IFQxMCwgVDExKSB7CgoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDcobmFtZSxBLEIs
QyxELEUsRixHKSBzdHJ1Y3QgbmFtZSB7IHRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xh
c3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwg
Y2xhc3MgVDksIGNsYXNzIFQxMCwgY2xhc3MgVDExPiBzdGF0aWMgaW5saW5lIHZvaWQgYXBwbHko
VDEmIEEsIFQyJiBCLCBUMyYgQywgVDQmIEQsIFQ1JiBFLCBUNiYgRiwgVDcmIEcsIFQ4LCBUOSwg
VDEwLCBUMTEpIHsKCgoKCgoKCiNkZWZpbmUgQlpfREVDTEFSRV9TVEVOQ0lMOChuYW1lLEEsQixD
LEQsRSxGLEcsSCkgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNs
YXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgs
IGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFwcGx5
KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3JiBHLCBUOCYgSCwg
VDksIFQxMCwgVDExKSB7CgoKCgoKCgojZGVmaW5lIEJaX0RFQ0xBUkVfU1RFTkNJTDkobmFtZSxB
LEIsQyxELEUsRixHLEgsSSkgc3RydWN0IG5hbWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3Mg
VDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xh
c3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAsIGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lk
IGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMsIFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3JiBHLCBU
OCYgSCwgVDkmIEksIFQxMCwgVDExKSB7CgoKCgoKCgoKI2RlZmluZSBCWl9ERUNMQVJFX1NURU5D
SUwxMChuYW1lLEEsQixDLEQsRSxGLEcsSCxJLEopIHN0cnVjdCBuYW1lIHsgdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwg
Y2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOSwgY2xhc3MgVDEwLCBjbGFzcyBUMTE+IHN0YXRp
YyBpbmxpbmUgdm9pZCBhcHBseShUMSYgQSwgVDImIEIsIFQzJiBDLCBUNCYgRCwgVDUmIEUsIFQ2
JiBGLCBUNyYgRywgVDgmIEgsIFQ5JiBJLCBUMTAmIEosIFQxMSkgewoKCgoKCgoKI2RlZmluZSBC
Wl9ERUNMQVJFX1NURU5DSUwxMShuYW1lLEEsQixDLEQsRSxGLEcsSCxJLEosSykgc3RydWN0IG5h
bWUgeyB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xh
c3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTAs
IGNsYXNzIFQxMT4gc3RhdGljIGlubGluZSB2b2lkIGFwcGx5KFQxJiBBLCBUMiYgQiwgVDMmIEMs
IFQ0JiBELCBUNSYgRSwgVDYmIEYsIFQ3JiBHLCBUOCYgSCwgVDkmIEksIFQxMCYgSiwgVDExJiBL
KSB7CgoKCgoKCgoKCgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBkdW1teTsKCnN0cnVj
dCBkdW1teUFycmF5IHsKICAgIHR5cGVkZWYgZHVtbXk8ZG91YmxlPiBUX2l0ZXJhdG9yOwoKICAg
IGNvbnN0IGR1bW15QXJyYXkmIHNoYXBlKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KfTsKCmV4
dGVybiAgZHVtbXlBcnJheSBfZHVtbXlBcnJheTsKCiAKCgoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xh
c3MgZHVtbXkgewpwdWJsaWM6CiAgICBkdW1teSgpIHsgfQoKICAgIGR1bW15KFQgdmFsdWUpCiAg
ICAgIDogdmFsdWVfKHZhbHVlKQogICAgeyB9CgogICAgZHVtbXkoY29uc3QgZHVtbXlBcnJheSYp
CiAgICB7IH0KCiAgICBvcGVyYXRvciBUKCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9OwoKICAg
IHRlbXBsYXRlPGNsYXNzIFQyPgogICAgdm9pZCBvcGVyYXRvcj0oVDIpIHsgfQoKICAgIHR5cGVu
YW1lICBtdWx0aWNvbXBvbmVudF90cmFpdHM8VD46OlRfZWxlbWVudCBvcGVyYXRvcltdKGludCBp
KSBjb25zdAogICAgeyByZXR1cm4gdmFsdWVfW2ldOyB9CgogICAgdm9pZCBsb2FkU3RyaWRlKGlu
dCkgeyB9CiAgICB2b2lkIG1vdmVUbyhpbnQpIHsgfQogICAgdm9pZCBtb3ZlVG8oaW50LGludCkg
eyB9CiAgICB2b2lkIG1vdmVUbyhpbnQsaW50LGludCkgeyB9CiAgICB2b2lkIG1vdmVUbyhpbnQs
aW50LGludCxpbnQpIHsgfQogICAgdm9pZCBhZHZhbmNlKCkgeyB9CiAgICB2b2lkIGFkdmFuY2Uo
aW50KSB7IH0KICAgIFQgc2hpZnQoaW50LGludCkgeyByZXR1cm4gVCgpOyB9Cgpwcml2YXRlOgog
ICAgVCB2YWx1ZV87Cn07CgoKIAoKCgoKCgp0ZW1wbGF0ZTxpbnQgTl9yYW5rLCBjbGFzcyBQX251
bXR5cGU+CmNsYXNzIHN0ZW5jaWxFeHRlbnQgewpwdWJsaWM6CiAgICB0eXBlZGVmIFBfbnVtdHlw
ZSBUX251bXR5cGU7CgogICAgc3RlbmNpbEV4dGVudCgpCiAgICB7CiAgICAgICAgbWluXyA9IDA7
CiAgICAgICAgbWF4XyA9IDA7CiAgICB9CiAgCiAgICBkdW1teTxUX251bXR5cGU+IG9wZXJhdG9y
KCkoaW50IGkpCiAgICB7CiAgICAgICAgdXBkYXRlKDAsIGkpOwogICAgICAgIHJldHVybiBkdW1t
eTxUX251bXR5cGU+KDEpOwogICAgfQogCiAgICBkdW1teTxUX251bXR5cGU+IG9wZXJhdG9yKCko
aW50IGksIGludCBqKQogICAgewogICAgICAgIHVwZGF0ZSgwLCBpKTsKICAgICAgICB1cGRhdGUo
MSwgaik7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVtdHlwZT4oMSk7CiAgICB9CgogICAgZHVt
bXk8VF9udW10eXBlPiBvcGVyYXRvcigpKGludCBpLCBpbnQgaiwgaW50IGspCiAgICB7CiAgICAg
ICAgdXBkYXRlKDAsIGkpOwogICAgICAgIHVwZGF0ZSgxLCBqKTsKICAgICAgICB1cGRhdGUoMiwg
ayk7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVtdHlwZT4oMSk7CiAgICB9CgogICAgZHVtbXk8
VF9udW10eXBlPiBzaGlmdChpbnQgb2Zmc2V0LCBpbnQgZGltKQogICAgewogICAgICAgIHVwZGF0
ZShkaW0sIG9mZnNldCk7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVtdHlwZT4oMSk7CiAgICB9
CiAgCiAgICBkdW1teTxUX251bXR5cGU+IHNoaWZ0KGludCBvZmZzZXQxLCBpbnQgZGltMSwgaW50
IG9mZnNldDIsIGludCBkaW0yKQogICAgewogICAgICAgIHVwZGF0ZShkaW0xLCBvZmZzZXQxKTsK
ICAgICAgICB1cGRhdGUoZGltMiwgb2Zmc2V0Mik7CiAgICAgICAgcmV0dXJuIGR1bW15PFRfbnVt
dHlwZT4oMSk7CiAgICB9CiAKICAgIGR1bW15PCB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJh
aXRzPFRfbnVtdHlwZT46OlRfZWxlbWVudD4gCiAgICAgICAgb3BlcmF0b3JbXShpbnQpCiAgICB7
CiAgICAgICAgcmV0dXJuIGR1bW15PCB0eXBlbmFtZSAgbXVsdGljb21wb25lbnRfdHJhaXRzPFRf
bnVtdHlwZT46OlRfZWxlbWVudD4KICAgICAgICAgICAgKDEpOwogICAgfQogCiAgICB2b2lkIHVw
ZGF0ZShpbnQgcmFuaywgaW50IG9mZnNldCkKICAgIHsKICAgICAgICBpZiAob2Zmc2V0IDwgbWlu
X1tyYW5rXSkKICAgICAgICAgICAgbWluX1tyYW5rXSA9IG9mZnNldDsKICAgICAgICBpZiAob2Zm
c2V0ID4gbWF4X1tyYW5rXSkKICAgICAgICAgICAgbWF4X1tyYW5rXSA9IG9mZnNldDsKICAgIH0K
CiAgICB0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUyPgogICAgdm9pZCBjb21iaW5lKGNvbnN0IHN0
ZW5jaWxFeHRlbnQ8Tl9yYW5rLFRfbnVtdHlwZTI+JiB4KQogICAgewogICAgICAgIGZvciAoaW50
IGk9MDsgaSA8IE5fcmFuazsgKytpKQogICAgICAgIHsKICAgICAgICAgICAgbWluX1tpXSA9IG1p
bm1heDo6bWluKG1pbl9baV0sIHgubWluKGkpKTsKICAgICAgICAgICAgbWF4X1tpXSA9IG1pbm1h
eDo6bWF4KG1heF9baV0sIHgubWF4KGkpKTsKICAgICAgICB9CiAgICB9CgogICAgdGVtcGxhdGU8
Y2xhc3MgVF9udW10eXBlMj4KICAgIHZvaWQgY29tYmluZShjb25zdCBkdW1teTxUX251bXR5cGUy
PiYpCiAgICB7IH0KCiAgICBpbnQgbWluKGludCBpKSBjb25zdAogICAgeyByZXR1cm4gbWluX1tp
XTsgfQoKICAgIGludCBtYXgoaW50IGkpIGNvbnN0CiAgICB7IHJldHVybiBtYXhfW2ldOyB9Cgog
ICAgY29uc3QgVGlueVZlY3RvcjxpbnQsTl9yYW5rPiYgbWluKCkgY29uc3QKICAgIHsgcmV0dXJu
IG1pbl87IH0KCiAgICBjb25zdCBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBtYXgoKSBjb25zdAog
ICAgeyByZXR1cm4gbWF4XzsgfQoKICAgIHRlbXBsYXRlPGNsYXNzIFQ+CiAgICB2b2lkIG9wZXJh
dG9yPShUKQogICAgeyB9CgogICAgIAogICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRv
cis9KFQpIHsgfQogICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRvci09KFQpIHsgfQog
ICAgdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBvcGVyYXRvcio9KFQpIHsgfQogICAgdGVtcGxhdGU8
Y2xhc3MgVD4gdm9pZCBvcGVyYXRvci89KFQpIHsgfQoKICAgIG9wZXJhdG9yIFRfbnVtdHlwZSgp
CiAgICB7IHJldHVybiBUX251bXR5cGUoMSk7IH0KCiAgICBUX251bXR5cGUgb3BlcmF0b3IqKCkK
ICAgIHsgcmV0dXJuIFRfbnVtdHlwZSgxKTsgfQogCnByaXZhdGU6CiAgICBtdXRhYmxlICBUaW55
VmVjdG9yPGludCxOX3Jhbms+IG1pbl8sIG1heF87Cn07CgoKIAoKCgp0ZW1wbGF0ZTxjbGFzcyBU
PgpzdHJ1Y3Qgc3RlbmNpbEV4dGVudF90cmFpdHMgewogICAgdHlwZWRlZiBkdW1teTxkb3VibGU+
IFRfc3RlbmNpbEV4dGVudDsKfTsKCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IE5fcmFu
az4Kc3RydWN0IHN0ZW5jaWxFeHRlbnRfdHJhaXRzPEFycmF5PFRfbnVtdHlwZSxOX3Jhbms+ID4g
ewogICAgdHlwZWRlZiBzdGVuY2lsRXh0ZW50PE5fcmFuayxUX251bXR5cGU+IFRfc3RlbmNpbEV4
dGVudDsKfTsKCiAKCgoKCnRlbXBsYXRlPGNsYXNzIFRfc2hhcGUxPgppbmxpbmUgYm9vbCAgYXJl
U2hhcGVzQ29uZm9ybWFibGUoY29uc3QgVF9zaGFwZTEmLCBjb25zdCBkdW1teUFycmF5JikKewog
ICAgcmV0dXJuIHRydWUgOwp9Cgp9IAoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2lu
Y2x1ZGUvYmxpdHovYXJyYXkvc3RlbmNpbC5jYyIgMQoKI2RlZmluZSBCWl9BUlJBWVNURU5DSUxf
Q0MKCgoKCgpuYW1lc3BhY2UgIGJsaXR6ICB7IAoKIAogCiAKIAogCiAKIAogCgogCgoKCgoKCgoK
CgoKCgoKCgoKCnRlbXBsYXRlPGludCBOX3JhbmssIGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRf
YXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5
NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNs
YXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CnZvaWQg
Y2hlY2tTaGFwZXMoY29uc3QgQXJyYXk8VF9udW10eXBlMSxOX3Jhbms+JiBBLAogICAgY29uc3Qg
VF9hcnJheTImIEIsIGNvbnN0IFRfYXJyYXkzJiBDLCBjb25zdCBUX2FycmF5NCYgRCwgCiAgICBj
b25zdCBUX2FycmF5NSYgRSwgY29uc3QgVF9hcnJheTYmIEYsIGNvbnN0IFRfYXJyYXk3JiBHLCAK
ICAgIGNvbnN0IFRfYXJyYXk4JiBILCBjb25zdCBUX2FycmF5OSYgSSwgY29uc3QgVF9hcnJheTEw
JiBKLCAKICAgIGNvbnN0IFRfYXJyYXkxMSYgSykKewogICAgIDsKIyA1OCAiL3Vmcy9uZXdtYW4v
dXNlcnMvZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWwuY2MiCn0KCnRlbXBsYXRl
PGNsYXNzIFRfZXh0ZW50LCBpbnQgTl9yYW5rLCAKICAgIGNsYXNzIFRfc3RlbmNpbCwgY2xhc3Mg
VF9udW10eXBlMSwgY2xhc3MgVF9hcnJheTIsCiAgICBjbGFzcyBUX2FycmF5MywgY2xhc3MgVF9h
cnJheTQsIGNsYXNzIFRfYXJyYXk1LCBjbGFzcyBUX2FycmF5NiwKICAgIGNsYXNzIFRfYXJyYXk3
LCBjbGFzcyBUX2FycmF5OCwgY2xhc3MgVF9hcnJheTksIGNsYXNzIFRfYXJyYXkxMCwKICAgIGNs
YXNzIFRfYXJyYXkxMT4Kdm9pZCBjYWxjU3RlbmNpbEV4dGVudChUX2V4dGVudCYgQXQsIGNvbnN0
IFRfc3RlbmNpbCYgc3RlbmNpbCwgCiAgICBjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4m
IEEsCiAgICBjb25zdCBUX2FycmF5MiYgQiwgY29uc3QgVF9hcnJheTMmIEMsIGNvbnN0IFRfYXJy
YXk0JiBELCBjb25zdCBUX2FycmF5NSYgRSwgCiAgICBjb25zdCBUX2FycmF5NiYgRiwgY29uc3Qg
VF9hcnJheTcmIEcsIGNvbnN0IFRfYXJyYXk4JiBILCBjb25zdCBUX2FycmF5OSYgSSwgCiAgICBj
b25zdCBUX2FycmF5MTAmIEosIGNvbnN0IFRfYXJyYXkxMSYgSykKewogICAgIAogICAgdHlwZW5h
bWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXkyPjo6VF9zdGVuY2lsRXh0ZW50IEJ0Owog
ICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXkzPjo6VF9zdGVuY2lsRXh0
ZW50IEN0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXk0Pjo6VF9z
dGVuY2lsRXh0ZW50IER0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJy
YXk1Pjo6VF9zdGVuY2lsRXh0ZW50IEV0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJh
aXRzPFRfYXJyYXk2Pjo6VF9zdGVuY2lsRXh0ZW50IEZ0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxF
eHRlbnRfdHJhaXRzPFRfYXJyYXk3Pjo6VF9zdGVuY2lsRXh0ZW50IEd0OwogICAgdHlwZW5hbWUg
IHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXk4Pjo6VF9zdGVuY2lsRXh0ZW50IEh0OwogICAg
dHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXk5Pjo6VF9zdGVuY2lsRXh0ZW50
IEl0OwogICAgdHlwZW5hbWUgIHN0ZW5jaWxFeHRlbnRfdHJhaXRzPFRfYXJyYXkxMD46OlRfc3Rl
bmNpbEV4dGVudCBKdDsKICAgIHR5cGVuYW1lICBzdGVuY2lsRXh0ZW50X3RyYWl0czxUX2FycmF5
MTE+OjpUX3N0ZW5jaWxFeHRlbnQgS3Q7CgogICAgc3RlbmNpbC5hcHBseShBdCwgQnQsIEN0LCBE
dCwgRXQsIEZ0LCBHdCwgSHQsIEl0LCBKdCwgS3QpOwogICAgQXQuY29tYmluZShCdCk7CiAgICBB
dC5jb21iaW5lKEN0KTsKICAgIEF0LmNvbWJpbmUoRHQpOwogICAgQXQuY29tYmluZShFdCk7CiAg
ICBBdC5jb21iaW5lKEZ0KTsKICAgIEF0LmNvbWJpbmUoR3QpOwogICAgQXQuY29tYmluZShIdCk7
CiAgICBBdC5jb21iaW5lKEl0KTsKICAgIEF0LmNvbWJpbmUoSnQpOwogICAgQXQuY29tYmluZShL
dCk7Cn0KCnRlbXBsYXRlPGludCBOX3JhbmssIGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10
eXBlMSwgY2xhc3MgVF9hcnJheTI+ClJlY3REb21haW48Tl9yYW5rPiBpbnRlcmlvckRvbWFpbihj
b25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsCiAgICBjb25zdCBBcnJheTxUX251bXR5cGUxLE5fcmFu
az4mIEEsCiAgICBjb25zdCBUX2FycmF5MiYgQikKewogICAgUmVjdERvbWFpbjxOX3Jhbms+IGRv
bWFpbiA9IEEuZG9tYWluKCk7CgogICAgIAogICAgc3RlbmNpbEV4dGVudDwzLCBUX251bXR5cGUx
PiBBdDsKICAgIGNhbGNTdGVuY2lsRXh0ZW50KEF0LCBzdGVuY2lsLCBBLCBCLCBfZHVtbXlBcnJh
eSwgX2R1bW15QXJyYXksIAogICAgICAgIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgCiAgICAgICAgX2R1bW15QXJyYXksIF9k
dW1teUFycmF5KTsKCiAgICAgCiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+IGxib3VuZCwgdWJv
dW5kOwogICAgbGJvdW5kID0gZG9tYWluLmxib3VuZCgpIC0gQXQubWluKCk7CiAgICB1Ym91bmQg
PSBkb21haW4udWJvdW5kKCkgLSBBdC5tYXgoKTsKICAgIHJldHVybiBSZWN0RG9tYWluPE5fcmFu
az4obGJvdW5kLHVib3VuZCk7Cn0KCnRlbXBsYXRlPGludCBoYXNFeHRlbnRzPgpzdHJ1Y3QgX2dl
dFN0ZW5jaWxFeHRlbnQgewp0ZW1wbGF0ZTxpbnQgTl9yYW5rLAogICAgY2xhc3MgVF9zdGVuY2ls
LCBjbGFzcyBUX251bXR5cGUxLCBjbGFzcyBUX2FycmF5MiwKICAgIGNsYXNzIFRfYXJyYXkzLCBj
bGFzcyBUX2FycmF5NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJyYXk2LAogICAgY2xhc3Mg
VF9hcnJheTcsIGNsYXNzIFRfYXJyYXk4LCBjbGFzcyBUX2FycmF5OSwgY2xhc3MgVF9hcnJheTEw
LAogICAgY2xhc3MgVF9hcnJheTExPgpzdGF0aWMgdm9pZCBnZXRTdGVuY2lsRXh0ZW50KFRpbnlW
ZWN0b3I8aW50LE5fcmFuaz4mIG1pbmIsCiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBtYXhi
LAogICAgY29uc3QgVF9zdGVuY2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4m
IEEsCiAgICBUX2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYg
RSwgVF9hcnJheTYmIEYsCiAgICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJ
LCBUX2FycmF5MTAmIEosIFRfYXJyYXkxMSYgSykKewogICAgIAogICAgc3RlbmNpbEV4dGVudDxO
X3JhbmssIFRfbnVtdHlwZTE+IEF0OwogICAgY2FsY1N0ZW5jaWxFeHRlbnQoQXQsIHN0ZW5jaWws
IEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksIEosIEspOwogICAgbWluYiA9IEF0Lm1pbigpOwog
ICAgbWF4YiA9IEF0Lm1heCgpOwp9Cn07Cgp0ZW1wbGF0ZTw+CnN0cnVjdCBfZ2V0U3RlbmNpbEV4
dGVudDwxPiB7CnRlbXBsYXRlPGludCBOX3JhbmssCiAgICBjbGFzcyBUX3N0ZW5jaWwsIGNsYXNz
IFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRf
YXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBUX2FycmF5
NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAsCiAgICBj
bGFzcyBUX2FycmF5MTE+CnN0YXRpYyBpbmxpbmUgdm9pZCBnZXRTdGVuY2lsRXh0ZW50KFRpbnlW
ZWN0b3I8aW50LE5fcmFuaz4mIG1pbmIsCiAgICBUaW55VmVjdG9yPGludCxOX3Jhbms+JiBtYXhi
LAogICAgY29uc3QgVF9zdGVuY2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4m
IEEsCiAgICBUX2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYg
RSwgVF9hcnJheTYmIEYsCiAgICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJ
LCBUX2FycmF5MTAmIEosIFRfYXJyYXkxMSYgSykKewogICAgc3RlbmNpbC5nZXRFeHRlbnQobWlu
YiwgbWF4Yik7Cn0KfTsKCnRlbXBsYXRlPGludCBOX3JhbmssCiAgICBjbGFzcyBUX3N0ZW5jaWws
IGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNs
YXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBU
X2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAs
CiAgICBjbGFzcyBUX2FycmF5MTE+CmlubGluZSB2b2lkIGdldFN0ZW5jaWxFeHRlbnQoVGlueVZl
Y3RvcjxpbnQsTl9yYW5rPiYgbWluYiwKICAgIFRpbnlWZWN0b3I8aW50LE5fcmFuaz4mIG1heGIs
CiAgICBjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYg
QSwKICAgIFRfYXJyYXkyJiBCLCBUX2FycmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBF
LCBUX2FycmF5NiYgRiwKICAgIFRfYXJyYXk3JiBHLCBUX2FycmF5OCYgSCwgVF9hcnJheTkmIEks
IFRfYXJyYXkxMCYgSiwgVF9hcnJheTExJiBLKQp7CiAgICBfZ2V0U3RlbmNpbEV4dGVudDxUX3N0
ZW5jaWw6Omhhc0V4dGVudD46OmdldFN0ZW5jaWxFeHRlbnQoCiAgICAgICAgbWluYiwgbWF4Yiwg
c3RlbmNpbCwgQSwgQiwgQywgRCwgRSwgRiwgRywgSCwgSSwgSiwgSyk7Cn0KCiAKCgoKCnRlbXBs
YXRlPGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10eXBlMSwgY2xhc3MgVF9hcnJheTIsCiAg
ICBjbGFzcyBUX2FycmF5MywgY2xhc3MgVF9hcnJheTQsIGNsYXNzIFRfYXJyYXk1LCBjbGFzcyBU
X2FycmF5NiwKICAgIGNsYXNzIFRfYXJyYXk3LCBjbGFzcyBUX2FycmF5OCwgY2xhc3MgVF9hcnJh
eTksIGNsYXNzIFRfYXJyYXkxMCwKICAgIGNsYXNzIFRfYXJyYXkxMT4Kdm9pZCBhcHBseVN0ZW5j
aWxfaW1wKGNvbnN0IFRfc3RlbmNpbCYgc3RlbmNpbCwgQXJyYXk8VF9udW10eXBlMSwzPiYgQSwK
ICAgIFRfYXJyYXkyJiBCLCBUX2FycmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBFLCBU
X2FycmF5NiYgRiwKICAgIFRfYXJyYXk3JiBHLCBUX2FycmF5OCYgSCwgVF9hcnJheTkmIEksIFRf
YXJyYXkxMCYgSiwgVF9hcnJheTExJiBLKQp7CiAgICBjaGVja1NoYXBlcyhBLEIsQyxELEUsRixH
LEgsSSxKLEspOwogCiAgICAgCiAgICBUaW55VmVjdG9yPGludCwzPiBtaW5iLCBtYXhiOwogICAg
Z2V0U3RlbmNpbEV4dGVudChtaW5iLCBtYXhiLCBzdGVuY2lsLCBBLCBCLCBDLCBELCBFLCBGLCBH
LCBILCBJLCBKLCBLKTsKCiAgICAgCiAgICAgCiAgICAgCiAgICBpbnQgc3RlbmNpbF9sYm91bmQw
ID0gbWluYigwKTsKICAgIGludCBzdGVuY2lsX2xib3VuZDEgPSBtaW5iKDEpOwogICAgaW50IHN0
ZW5jaWxfbGJvdW5kMiA9IG1pbmIoMik7CgogICAgaW50IHN0ZW5jaWxfdWJvdW5kMCA9IG1heGIo
MCk7CiAgICBpbnQgc3RlbmNpbF91Ym91bmQxID0gbWF4YigxKTsKICAgIGludCBzdGVuY2lsX3Vi
b3VuZDIgPSBtYXhiKDIpOwoKICAgIGludCBsYm91bmQwID0gbWlubWF4OjptYXgoQS5sYm91bmQo
MCksIEEubGJvdW5kKDApIC0gc3RlbmNpbF9sYm91bmQwKTsKICAgIGludCBsYm91bmQxID0gbWlu
bWF4OjptYXgoQS5sYm91bmQoMSksIEEubGJvdW5kKDEpIC0gc3RlbmNpbF9sYm91bmQxKTsKICAg
IGludCBsYm91bmQyID0gbWlubWF4OjptYXgoQS5sYm91bmQoMiksIEEubGJvdW5kKDIpIC0gc3Rl
bmNpbF9sYm91bmQyKTsKCiAgICBpbnQgdWJvdW5kMCA9IG1pbm1heDo6bWluKEEudWJvdW5kKDAp
LCBBLnVib3VuZCgwKSAtIHN0ZW5jaWxfdWJvdW5kMCk7CiAgICBpbnQgdWJvdW5kMSA9IG1pbm1h
eDo6bWluKEEudWJvdW5kKDEpLCBBLnVib3VuZCgxKSAtIHN0ZW5jaWxfdWJvdW5kMSk7CiAgICBp
bnQgdWJvdW5kMiA9IG1pbm1heDo6bWluKEEudWJvdW5kKDIpLCBBLnVib3VuZCgyKSAtIHN0ZW5j
aWxfdWJvdW5kMik7CgoKCgoKCgoKICAgICAKICAgIEZhc3RBcnJheUl0ZXJhdG9yPFRfbnVtdHlw
ZTEsMz4gQWl0ZXIoQSk7CiAgICB0eXBlbmFtZSAgVF9hcnJheTI6OlRfaXRlcmF0b3IgQml0ZXIo
Qik7CiAgICB0eXBlbmFtZSAgVF9hcnJheTM6OlRfaXRlcmF0b3IgQ2l0ZXIoQyk7CiAgICB0eXBl
bmFtZSAgVF9hcnJheTQ6OlRfaXRlcmF0b3IgRGl0ZXIoRCk7CiAgICB0eXBlbmFtZSAgVF9hcnJh
eTU6OlRfaXRlcmF0b3IgRWl0ZXIoRSk7CiAgICB0eXBlbmFtZSAgVF9hcnJheTY6OlRfaXRlcmF0
b3IgRml0ZXIoRik7CiAgICB0eXBlbmFtZSAgVF9hcnJheTc6OlRfaXRlcmF0b3IgR2l0ZXIoRyk7
CiAgICB0eXBlbmFtZSAgVF9hcnJheTg6OlRfaXRlcmF0b3IgSGl0ZXIoSCk7CiAgICB0eXBlbmFt
ZSAgVF9hcnJheTk6OlRfaXRlcmF0b3IgSWl0ZXIoSSk7CiAgICB0eXBlbmFtZSAgVF9hcnJheTEw
OjpUX2l0ZXJhdG9yIEppdGVyKEopOwogICAgdHlwZW5hbWUgIFRfYXJyYXkxMTo6VF9pdGVyYXRv
ciBLaXRlcihLKTsKCiAgICAgCiAgICBBaXRlci5sb2FkU3RyaWRlKDIpOwogICAgQml0ZXIubG9h
ZFN0cmlkZSgyKTsKICAgIENpdGVyLmxvYWRTdHJpZGUoMik7CiAgICBEaXRlci5sb2FkU3RyaWRl
KDIpOwogICAgRWl0ZXIubG9hZFN0cmlkZSgyKTsKICAgIEZpdGVyLmxvYWRTdHJpZGUoMik7CiAg
ICBHaXRlci5sb2FkU3RyaWRlKDIpOwogICAgSGl0ZXIubG9hZFN0cmlkZSgyKTsKICAgIElpdGVy
LmxvYWRTdHJpZGUoMik7CiAgICBKaXRlci5sb2FkU3RyaWRlKDIpOwogICAgS2l0ZXIubG9hZFN0
cmlkZSgyKTsKCiAgICBmb3IgKGludCBpPWxib3VuZDA7IGkgPD0gdWJvdW5kMDsgKytpKQogICAg
ewogICAgICBmb3IgKGludCBqPWxib3VuZDE7IGogPD0gdWJvdW5kMTsgKytqKQogICAgICB7CiAg
ICAgICAgQWl0ZXIubW92ZVRvKGksaixsYm91bmQyKTsKICAgICAgICBCaXRlci5tb3ZlVG8oaSxq
LGxib3VuZDIpOwogICAgICAgIENpdGVyLm1vdmVUbyhpLGosbGJvdW5kMik7CiAgICAgICAgRGl0
ZXIubW92ZVRvKGksaixsYm91bmQyKTsKICAgICAgICBFaXRlci5tb3ZlVG8oaSxqLGxib3VuZDIp
OwogICAgICAgIEZpdGVyLm1vdmVUbyhpLGosbGJvdW5kMik7CiAgICAgICAgR2l0ZXIubW92ZVRv
KGksaixsYm91bmQyKTsKICAgICAgICBIaXRlci5tb3ZlVG8oaSxqLGxib3VuZDIpOwogICAgICAg
IElpdGVyLm1vdmVUbyhpLGosbGJvdW5kMik7CiAgICAgICAgSml0ZXIubW92ZVRvKGksaixsYm91
bmQyKTsKICAgICAgICBLaXRlci5tb3ZlVG8oaSxqLGxib3VuZDIpOwoKICAgICAgICBmb3IgKGlu
dCBrPWxib3VuZDI7IGsgPD0gdWJvdW5kMjsgKytrKQogICAgICAgIHsKICAgICAgICAgICAgc3Rl
bmNpbC5hcHBseShBaXRlciwgQml0ZXIsIENpdGVyLCBEaXRlciwgRWl0ZXIsIEZpdGVyLCBHaXRl
ciwKICAgICAgICAgICAgICAgIEhpdGVyLCBJaXRlciwgSml0ZXIsIEtpdGVyKTsKCiAgICAgICAg
ICAgIEFpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgQml0ZXIuYWR2YW5jZSgpOwogICAgICAg
ICAgICBDaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAgIERpdGVyLmFkdmFuY2UoKTsKICAgICAg
ICAgICAgRWl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBGaXRlci5hZHZhbmNlKCk7CiAgICAg
ICAgICAgIEdpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgSGl0ZXIuYWR2YW5jZSgpOwogICAg
ICAgICAgICBJaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAgIEppdGVyLmFkdmFuY2UoKTsKICAg
ICAgICAgICAgS2l0ZXIuYWR2YW5jZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfQp9CgogCgoK
Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJy
YXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwg
Y2xhc3MgVF9hcnJheTYsCiAgICBjbGFzcyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNz
IFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CnZvaWQgYXBw
bHlTdGVuY2lsX2ltcChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEs
Mj4mIEEsCiAgICBUX2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5
NSYgRSwgVF9hcnJheTYmIEYsIAogICAgVF9hcnJheTcmIEcsIFRfYXJyYXk4JiBILCBUX2FycmF5
OSYgSSwgVF9hcnJheTEwJiBKLCBUX2FycmF5MTEmIEspCnsKICAgIGNoZWNrU2hhcGVzKEEsQixD
LEQsRSxGLEcsSCxJLEosSyk7CgogICAgIAogICAgVGlueVZlY3RvcjxpbnQsMj4gbWluYiwgbWF4
YjsKICAgIGdldFN0ZW5jaWxFeHRlbnQobWluYiwgbWF4Yiwgc3RlbmNpbCwgQSwgQiwgQywgRCwg
RSwgRiwgRywgSCwgSSwgSiwgSyk7CgogICAgIAogICAgIAogICAgIAogICAgaW50IHN0ZW5jaWxf
bGJvdW5kMCA9IG1pbmIoMCk7CiAgICBpbnQgc3RlbmNpbF9sYm91bmQxID0gbWluYigxKTsKCiAg
ICBpbnQgc3RlbmNpbF91Ym91bmQwID0gbWF4YigwKTsKICAgIGludCBzdGVuY2lsX3Vib3VuZDEg
PSBtYXhiKDEpOwoKICAgIGludCBsYm91bmQwID0gbWlubWF4OjptYXgoQS5sYm91bmQoMCksIEEu
bGJvdW5kKDApIC0gc3RlbmNpbF9sYm91bmQwKTsKICAgIGludCBsYm91bmQxID0gbWlubWF4Ojpt
YXgoQS5sYm91bmQoMSksIEEubGJvdW5kKDEpIC0gc3RlbmNpbF9sYm91bmQxKTsKCiAgICBpbnQg
dWJvdW5kMCA9IG1pbm1heDo6bWluKEEudWJvdW5kKDApLCBBLnVib3VuZCgwKSAtIHN0ZW5jaWxf
dWJvdW5kMCk7CiAgICBpbnQgdWJvdW5kMSA9IG1pbm1heDo6bWluKEEudWJvdW5kKDEpLCBBLnVi
b3VuZCgxKSAtIHN0ZW5jaWxfdWJvdW5kMSk7CgoKCgoKCgogICAgIAogICAgRmFzdEFycmF5SXRl
cmF0b3I8VF9udW10eXBlMSwyPiBBaXRlcihBKTsKICAgIHR5cGVuYW1lICBUX2FycmF5Mjo6VF9p
dGVyYXRvciBCaXRlcihCKTsKICAgIHR5cGVuYW1lICBUX2FycmF5Mzo6VF9pdGVyYXRvciBDaXRl
cihDKTsKICAgIHR5cGVuYW1lICBUX2FycmF5NDo6VF9pdGVyYXRvciBEaXRlcihEKTsKICAgIHR5
cGVuYW1lICBUX2FycmF5NTo6VF9pdGVyYXRvciBFaXRlcihFKTsKICAgIHR5cGVuYW1lICBUX2Fy
cmF5Njo6VF9pdGVyYXRvciBGaXRlcihGKTsKICAgIHR5cGVuYW1lICBUX2FycmF5Nzo6VF9pdGVy
YXRvciBHaXRlcihHKTsKICAgIHR5cGVuYW1lICBUX2FycmF5ODo6VF9pdGVyYXRvciBIaXRlcihI
KTsKICAgIHR5cGVuYW1lICBUX2FycmF5OTo6VF9pdGVyYXRvciBJaXRlcihJKTsKICAgIHR5cGVu
YW1lICBUX2FycmF5MTA6OlRfaXRlcmF0b3IgSml0ZXIoSik7CiAgICB0eXBlbmFtZSAgVF9hcnJh
eTExOjpUX2l0ZXJhdG9yIEtpdGVyKEspOwoKICAgICAKICAgIEFpdGVyLmxvYWRTdHJpZGUoMSk7
CiAgICBCaXRlci5sb2FkU3RyaWRlKDEpOwogICAgQ2l0ZXIubG9hZFN0cmlkZSgxKTsKICAgIERp
dGVyLmxvYWRTdHJpZGUoMSk7CiAgICBFaXRlci5sb2FkU3RyaWRlKDEpOwogICAgRml0ZXIubG9h
ZFN0cmlkZSgxKTsKICAgIEdpdGVyLmxvYWRTdHJpZGUoMSk7CiAgICBIaXRlci5sb2FkU3RyaWRl
KDEpOwogICAgSWl0ZXIubG9hZFN0cmlkZSgxKTsKICAgIEppdGVyLmxvYWRTdHJpZGUoMSk7CiAg
ICBLaXRlci5sb2FkU3RyaWRlKDEpOwoKICAgIGZvciAoaW50IGk9bGJvdW5kMDsgaSA8PSB1Ym91
bmQwOyArK2kpCiAgICB7CiAgICAgICAgQWl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAg
Qml0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgQ2l0ZXIubW92ZVRvKGksbGJvdW5kMSk7
CiAgICAgICAgRGl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgRWl0ZXIubW92ZVRvKGks
bGJvdW5kMSk7CiAgICAgICAgRml0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgR2l0ZXIu
bW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgSGl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAg
ICAgSWl0ZXIubW92ZVRvKGksbGJvdW5kMSk7CiAgICAgICAgSml0ZXIubW92ZVRvKGksbGJvdW5k
MSk7CiAgICAgICAgS2l0ZXIubW92ZVRvKGksbGJvdW5kMSk7CgogICAgICAgIGZvciAoaW50IGs9
bGJvdW5kMTsgayA8PSB1Ym91bmQxOyArK2spCiAgICAgICAgewogICAgICAgICAgICBzdGVuY2ls
LmFwcGx5KEFpdGVyLCBCaXRlciwgQ2l0ZXIsIERpdGVyLCBFaXRlciwgRml0ZXIsIEdpdGVyLAog
ICAgICAgICAgICAgICAgSGl0ZXIsIElpdGVyLCBKaXRlciwgS2l0ZXIpOwoKICAgICAgICAgICAg
QWl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBCaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAg
IENpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgRGl0ZXIuYWR2YW5jZSgpOwogICAgICAgICAg
ICBFaXRlci5hZHZhbmNlKCk7CiAgICAgICAgICAgIEZpdGVyLmFkdmFuY2UoKTsKICAgICAgICAg
ICAgR2l0ZXIuYWR2YW5jZSgpOwogICAgICAgICAgICBIaXRlci5hZHZhbmNlKCk7CiAgICAgICAg
ICAgIElpdGVyLmFkdmFuY2UoKTsKICAgICAgICAgICAgSml0ZXIuYWR2YW5jZSgpOwogICAgICAg
ICAgICBLaXRlci5hZHZhbmNlKCk7CiAgICAgICAgfQogICAgfQp9CgogCgoKCgp0ZW1wbGF0ZTxj
bGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGNsYXNzIFRfYXJyYXkyLAogICAgY2xh
c3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJh
eTYsCiAgICBjbGFzcyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBj
bGFzcyBUX2FycmF5MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CnZvaWQgYXBwbHlTdGVuY2lsX2lt
cChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsMT4mIEEsCiAgICBU
X2FycmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYgRSwgVF9hcnJh
eTYmIEYsIAogICAgVF9hcnJheTcmIEcsIFRfYXJyYXk4JiBILCBUX2FycmF5OSYgSSwgVF9hcnJh
eTEwJiBKLCBUX2FycmF5MTEmIEspCnsKICAgIGNoZWNrU2hhcGVzKEEsQixDLEQsRSxGLEcsSCxJ
LEosSyk7CgogICAgIAogICAgVGlueVZlY3RvcjxpbnQsMT4gbWluYiwgbWF4YjsKICAgIGdldFN0
ZW5jaWxFeHRlbnQobWluYiwgbWF4Yiwgc3RlbmNpbCwgQSwgQiwgQywgRCwgRSwgRiwgRywgSCwg
SSwgSiwgSyk7CgogICAgIAogICAgIAogICAgIAogICAgaW50IHN0ZW5jaWxfbGJvdW5kMCA9IG1p
bmIoMCk7CiAgICBpbnQgc3RlbmNpbF91Ym91bmQwID0gbWF4YigwKTsKCiAgICBpbnQgbGJvdW5k
MCA9IG1pbm1heDo6bWF4KEEubGJvdW5kKDApLCBBLmxib3VuZCgwKSAtIHN0ZW5jaWxfbGJvdW5k
MCk7CiAgICBpbnQgdWJvdW5kMCA9IG1pbm1heDo6bWluKEEudWJvdW5kKDApLCBBLnVib3VuZCgw
KSAtIHN0ZW5jaWxfdWJvdW5kMCk7CgoKCgoKCiAgICAgCiAgICBGYXN0QXJyYXlJdGVyYXRvcjxU
X251bXR5cGUxLDE+IEFpdGVyKEEpOwogICAgdHlwZW5hbWUgIFRfYXJyYXkyOjpUX2l0ZXJhdG9y
IEJpdGVyKEIpOwogICAgdHlwZW5hbWUgIFRfYXJyYXkzOjpUX2l0ZXJhdG9yIENpdGVyKEMpOwog
ICAgdHlwZW5hbWUgIFRfYXJyYXk0OjpUX2l0ZXJhdG9yIERpdGVyKEQpOwogICAgdHlwZW5hbWUg
IFRfYXJyYXk1OjpUX2l0ZXJhdG9yIEVpdGVyKEUpOwogICAgdHlwZW5hbWUgIFRfYXJyYXk2OjpU
X2l0ZXJhdG9yIEZpdGVyKEYpOwogICAgdHlwZW5hbWUgIFRfYXJyYXk3OjpUX2l0ZXJhdG9yIEdp
dGVyKEcpOwogICAgdHlwZW5hbWUgIFRfYXJyYXk4OjpUX2l0ZXJhdG9yIEhpdGVyKEgpOwogICAg
dHlwZW5hbWUgIFRfYXJyYXk5OjpUX2l0ZXJhdG9yIElpdGVyKEkpOwogICAgdHlwZW5hbWUgIFRf
YXJyYXkxMDo6VF9pdGVyYXRvciBKaXRlcihKKTsKICAgIHR5cGVuYW1lICBUX2FycmF5MTE6OlRf
aXRlcmF0b3IgS2l0ZXIoSyk7CgogICAgIAogICAgQWl0ZXIubG9hZFN0cmlkZSgwKTsKICAgIEJp
dGVyLmxvYWRTdHJpZGUoMCk7CiAgICBDaXRlci5sb2FkU3RyaWRlKDApOwogICAgRGl0ZXIubG9h
ZFN0cmlkZSgwKTsKICAgIEVpdGVyLmxvYWRTdHJpZGUoMCk7CiAgICBGaXRlci5sb2FkU3RyaWRl
KDApOwogICAgR2l0ZXIubG9hZFN0cmlkZSgwKTsKICAgIEhpdGVyLmxvYWRTdHJpZGUoMCk7CiAg
ICBJaXRlci5sb2FkU3RyaWRlKDApOwogICAgSml0ZXIubG9hZFN0cmlkZSgwKTsKICAgIEtpdGVy
LmxvYWRTdHJpZGUoMCk7CgogICAgQWl0ZXIubW92ZVRvKGxib3VuZDApOwogICAgQml0ZXIubW92
ZVRvKGxib3VuZDApOwogICAgQ2l0ZXIubW92ZVRvKGxib3VuZDApOwogICAgRGl0ZXIubW92ZVRv
KGxib3VuZDApOwogICAgRWl0ZXIubW92ZVRvKGxib3VuZDApOwogICAgRml0ZXIubW92ZVRvKGxi
b3VuZDApOwogICAgR2l0ZXIubW92ZVRvKGxib3VuZDApOwogICAgSGl0ZXIubW92ZVRvKGxib3Vu
ZDApOwogICAgSWl0ZXIubW92ZVRvKGxib3VuZDApOwogICAgSml0ZXIubW92ZVRvKGxib3VuZDAp
OwogICAgS2l0ZXIubW92ZVRvKGxib3VuZDApOwoKICAgIGZvciAoaW50IGk9bGJvdW5kMDsgaSA8
PSB1Ym91bmQwOyArK2kpCiAgICB7CiAgICAgICAgc3RlbmNpbC5hcHBseShBaXRlciwgQml0ZXIs
IENpdGVyLCBEaXRlciwgRWl0ZXIsIEZpdGVyLCBHaXRlciwKICAgICAgICAgICAgSGl0ZXIsIElp
dGVyLCBKaXRlciwgS2l0ZXIpOwoKICAgICAgICBBaXRlci5hZHZhbmNlKCk7CiAgICAgICAgQml0
ZXIuYWR2YW5jZSgpOwogICAgICAgIENpdGVyLmFkdmFuY2UoKTsKICAgICAgICBEaXRlci5hZHZh
bmNlKCk7CiAgICAgICAgRWl0ZXIuYWR2YW5jZSgpOwogICAgICAgIEZpdGVyLmFkdmFuY2UoKTsK
ICAgICAgICBHaXRlci5hZHZhbmNlKCk7CiAgICAgICAgSGl0ZXIuYWR2YW5jZSgpOwogICAgICAg
IElpdGVyLmFkdmFuY2UoKTsKICAgICAgICBKaXRlci5hZHZhbmNlKCk7CiAgICAgICAgS2l0ZXIu
YWR2YW5jZSgpOwogICAgfQp9CgogCgoKCgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNz
IFRfbnVtdHlwZTEsIGludCBOX3Jhbms+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNpbChjb25zdCBU
X3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSkKewogICAgYXBw
bHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXksCiAgICAg
ICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXksCiAg
ICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXkp
Owp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGludCBOX3Jh
bmssIGNsYXNzIFRfYXJyYXkyPgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3QgVF9zdGVu
Y2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgICBUX2FycmF5MiYg
QikKewogICAgYXBwbHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBCLCBfZHVtbXlBcnJheSwgX2R1
bW15QXJyYXksCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwg
X2R1bW15QXJyYXksCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJh
eSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10eXBlMSwgaW50IE5f
cmFuaywgY2xhc3MgVF9hcnJheTIsCiAgICBjbGFzcyBUX2FycmF5Mz4KaW5saW5lIHZvaWQgYXBw
bHlTdGVuY2lsKGNvbnN0IFRfc3RlbmNpbCYgc3RlbmNpbCwgQXJyYXk8VF9udW10eXBlMSxOX3Jh
bms+JiBBLAogICAgVF9hcnJheTImIEIsIFRfYXJyYXkzJiBDKQp7CiAgICBhcHBseVN0ZW5jaWxf
aW1wKHN0ZW5jaWwsIEEsIEIsIEMsIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwKICAgICAgICBf
ZHVtbXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXksCiAgICAgICAgX2R1bW15QXJyYXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWws
IGNsYXNzIFRfbnVtdHlwZTEsIGludCBOX3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3Mg
VF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0PgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3Qg
VF9zdGVuY2lsJiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgICBUX2Fy
cmF5MiYgQiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBEKQp7CiAgICBhcHBseVN0ZW5jaWxfaW1w
KHN0ZW5jaWwsIEEsIEIsIEMsIEQsIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwKICAgICAgICBf
ZHVtbXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGlu
dCBOX3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJy
YXk0LCBjbGFzcyBUX2FycmF5NT4KaW5saW5lIHZvaWQgYXBwbHlTdGVuY2lsKGNvbnN0IFRfc3Rl
bmNpbCYgc3RlbmNpbCwgQXJyYXk8VF9udW10eXBlMSxOX3Jhbms+JiBBLAogICBUX2FycmF5MiYg
QiwgVF9hcnJheTMmIEMsIFRfYXJyYXk0JiBELCBUX2FycmF5NSYgRSkKewogICAgYXBwbHlTdGVu
Y2lsX2ltcChzdGVuY2lsLCBBLCBCLCBDLCBELCBFLCBfZHVtbXlBcnJheSwKICAgICAgICBfZHVt
bXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJy
YXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRfbnVtdHlwZTEsIGludCBO
X3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMsIGNsYXNzIFRfYXJyYXk0
LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTY+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNp
bChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwK
ICAgVF9hcnJheTImIEIsIFRfYXJyYXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRf
YXJyYXk2JiBGKQp7CiAgICBhcHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIsIEMsIEQsIEUs
IEYsCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15
QXJyYXksIF9kdW1teUFycmF5KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9zdGVuY2lsLCBjbGFzcyBU
X251bXR5cGUxLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2FycmF5MiwKICAgIGNsYXNzIFRfYXJyYXkz
LCBjbGFzcyBUX2FycmF5NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJyYXk2LAogICAgY2xh
c3MgVF9hcnJheTc+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNpbChjb25zdCBUX3N0ZW5jaWwmIHN0
ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwKICAgVF9hcnJheTImIEIsIFRfYXJy
YXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRfYXJyYXk2JiBGLAogICBUX2FycmF5
NyYgRykKewogICAgYXBwbHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBCLCBDLCBELCBFLCBGLCBH
LAogICAgICAgIF9kdW1teUFycmF5LCBfZHVtbXlBcnJheSwgX2R1bW15QXJyYXksIF9kdW1teUFy
cmF5KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9zdGVuY2lsLCBjbGFzcyBUX251bXR5cGUxLCBpbnQg
Tl9yYW5rLCBjbGFzcyBUX2FycmF5MiwKICAgIGNsYXNzIFRfYXJyYXkzLCBjbGFzcyBUX2FycmF5
NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJyYXk2LAogICAgY2xhc3MgVF9hcnJheTcsIGNs
YXNzIFRfYXJyYXk4PgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3QgVF9zdGVuY2lsJiBz
dGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgIFRfYXJyYXkyJiBCLCBUX2Fy
cmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBFLCBUX2FycmF5NiYgRiwKICAgVF9hcnJh
eTcmIEcsIFRfYXJyYXk4JiBIKQp7CiAgICBhcHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIs
IEMsIEQsIEUsIEYsIEcsIEgsCiAgICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5LCBfZHVt
bXlBcnJheSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfc3RlbmNpbCwgY2xhc3MgVF9udW10eXBlMSwg
aW50IE5fcmFuaywgY2xhc3MgVF9hcnJheTIsCiAgICBjbGFzcyBUX2FycmF5MywgY2xhc3MgVF9h
cnJheTQsIGNsYXNzIFRfYXJyYXk1LCBjbGFzcyBUX2FycmF5NiwKICAgIGNsYXNzIFRfYXJyYXk3
LCBjbGFzcyBUX2FycmF5OCwgY2xhc3MgVF9hcnJheTk+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNp
bChjb25zdCBUX3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwK
ICAgVF9hcnJheTImIEIsIFRfYXJyYXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRf
YXJyYXk2JiBGLAogICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJKQp7CiAg
ICBhcHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksCiAg
ICAgICAgX2R1bW15QXJyYXksIF9kdW1teUFycmF5KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9zdGVu
Y2lsLCBjbGFzcyBUX251bXR5cGUxLCBpbnQgTl9yYW5rLCBjbGFzcyBUX2FycmF5MiwKICAgIGNs
YXNzIFRfYXJyYXkzLCBjbGFzcyBUX2FycmF5NCwgY2xhc3MgVF9hcnJheTUsIGNsYXNzIFRfYXJy
YXk2LAogICAgY2xhc3MgVF9hcnJheTcsIGNsYXNzIFRfYXJyYXk4LCBjbGFzcyBUX2FycmF5OSwg
Y2xhc3MgVF9hcnJheTEwPgppbmxpbmUgdm9pZCBhcHBseVN0ZW5jaWwoY29uc3QgVF9zdGVuY2ls
JiBzdGVuY2lsLCBBcnJheTxUX251bXR5cGUxLE5fcmFuaz4mIEEsCiAgIFRfYXJyYXkyJiBCLCBU
X2FycmF5MyYgQywgVF9hcnJheTQmIEQsIFRfYXJyYXk1JiBFLCBUX2FycmF5NiYgRiwKICAgVF9h
cnJheTcmIEcsIFRfYXJyYXk4JiBILCBUX2FycmF5OSYgSSwgVF9hcnJheTEwJiBKKQp7CiAgICBh
cHBseVN0ZW5jaWxfaW1wKHN0ZW5jaWwsIEEsIEIsIEMsIEQsIEUsIEYsIEcsIEgsIEksIEosCiAg
ICAgICAgX2R1bW15QXJyYXkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX3N0ZW5jaWwsIGNsYXNzIFRf
bnVtdHlwZTEsIGludCBOX3JhbmssIGNsYXNzIFRfYXJyYXkyLAogICAgY2xhc3MgVF9hcnJheTMs
IGNsYXNzIFRfYXJyYXk0LCBjbGFzcyBUX2FycmF5NSwgY2xhc3MgVF9hcnJheTYsCiAgICBjbGFz
cyBUX2FycmF5NywgY2xhc3MgVF9hcnJheTgsIGNsYXNzIFRfYXJyYXk5LCBjbGFzcyBUX2FycmF5
MTAsCiAgICBjbGFzcyBUX2FycmF5MTE+CmlubGluZSB2b2lkIGFwcGx5U3RlbmNpbChjb25zdCBU
X3N0ZW5jaWwmIHN0ZW5jaWwsIEFycmF5PFRfbnVtdHlwZTEsTl9yYW5rPiYgQSwKICAgVF9hcnJh
eTImIEIsIFRfYXJyYXkzJiBDLCBUX2FycmF5NCYgRCwgVF9hcnJheTUmIEUsIFRfYXJyYXk2JiBG
LAogICBUX2FycmF5NyYgRywgVF9hcnJheTgmIEgsIFRfYXJyYXk5JiBJLCBUX2FycmF5MTAmIEos
IFRfYXJyYXkxMSYgSykKewogICAgYXBwbHlTdGVuY2lsX2ltcChzdGVuY2lsLCBBLCBCLCBDLCBE
LCBFLCBGLCBHLCBILCBJLCBKLCBLKTsKfQoKfSAKCgojIDMxNiAiL3Vmcy9uZXdtYW4vdXNlcnMv
ZGVycmljay9pbmNsdWRlL2JsaXR6L2FycmF5L3N0ZW5jaWwuaCIgMgoKCgoKIyAyNDkzICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkuaCIgMgoKIyAxICIvdWZz
L25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvaW5kaXJlY3QuaCIgMQoK
I2RlZmluZSBCWl9BUlJBWV9JTkRJUkVDVF9ICgoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJy
aWNrL2luY2x1ZGUvYmxpdHovYXJyYXkvY2FydGVzaWFuLmgiIDEKCiNkZWZpbmUgQlpfQVJSQVlf
Q0FSVEVTSUFOX0gKCm5hbWVzcGFjZSAgYmxpdHogIHsgCgogCgoKCgogCnRlbXBsYXRlPGNsYXNz
IFRfdHVwbGUsIGNsYXNzIFRfY29udGFpbmVyLCBpbnQgTl9jb250YWluZXJzPgpjbGFzcyBDYXJ0
ZXNpYW5Qcm9kdWN0SXRlcmF0b3I7CgpzdHJ1Y3QgX2NwX2VuZF90YWcgeyB9OwoKdGVtcGxhdGU8
Y2xhc3MgVF90dXBsZSwgY2xhc3MgVF9jb250YWluZXIsIGludCBOX2NvbnRhaW5lcnM+CmNsYXNz
IENhcnRlc2lhblByb2R1Y3QgewpwdWJsaWM6CiAgICB0eXBlZGVmIFRfdHVwbGUgdmFsdWVfdHlw
ZTsKICAgIHR5cGVkZWYgVF90dXBsZSYgcmVmZXJlbmNlOwogICAgdHlwZWRlZiBjb25zdCBUX3R1
cGxlJiBjb25zdF9yZWZlcmVuY2U7CiAgICB0eXBlZGVmIENhcnRlc2lhblByb2R1Y3RJdGVyYXRv
cjxUX3R1cGxlLFRfY29udGFpbmVyLE5fY29udGFpbmVycz4gaXRlcmF0b3I7CiAgICB0eXBlZGVm
IGludCBkaWZmZXJlbmNlX3R5cGU7CiAgICB0eXBlZGVmIGludCBzaXplX3R5cGU7CgogICAgaXRl
cmF0b3IgYmVnaW4oKQogICAgeyByZXR1cm4gaXRlcmF0b3IoKnRoaXMpOyB9CgogICAgaXRlcmF0
b3IgZW5kKCkKICAgIHsgcmV0dXJuIGl0ZXJhdG9yKF9jcF9lbmRfdGFnKCkpOyB9CgogICAgQ2Fy
dGVzaWFuUHJvZHVjdChjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMCwgCiAgICAgICAgY29u
c3QgVF9jb250YWluZXImIGNvbnRhaW5lcjEpCiAgICB7IAogICAgICAgICA7CiAgICAgICAgY29u
dGFpbmVyc19bMF0gPSAmY29udGFpbmVyMDsKICAgICAgICBjb250YWluZXJzX1sxXSA9ICZjb250
YWluZXIxOwogICAgfQoKICAgIENhcnRlc2lhblByb2R1Y3QoY29uc3QgVF9jb250YWluZXImIGNv
bnRhaW5lcjAsIAogICAgICAgIGNvbnN0IFRfY29udGFpbmVyJiBjb250YWluZXIxLAogICAgICAg
IGNvbnN0IFRfY29udGFpbmVyJiBjb250YWluZXIyKQogICAgeyAKICAgICAgICAgOwogICAgICAg
IGNvbnRhaW5lcnNfWzBdID0gJmNvbnRhaW5lcjA7CiAgICAgICAgY29udGFpbmVyc19bMV0gPSAm
Y29udGFpbmVyMTsKICAgICAgICBjb250YWluZXJzX1syXSA9ICZjb250YWluZXIyOwogICAgfQoK
ICAgIGNvbnN0IFRfY29udGFpbmVyJiBvcGVyYXRvcltdKGludCBpKQogICAgeyByZXR1cm4gKihj
b250YWluZXJzX1tpXSk7IH0KCiAgICB2b2lkIGRlYnVnRHVtcCgpOwoKcHJvdGVjdGVkOgogICAg
Y29uc3QgVF9jb250YWluZXIqIGNvbnRhaW5lcnNfW05fY29udGFpbmVyc107IAp9OwoKdGVtcGxh
dGU8Y2xhc3MgVF90dXBsZSwgY2xhc3MgVF9jb250YWluZXIsIGludCBOX2NvbnRhaW5lcnM+CnZv
aWQgQ2FydGVzaWFuUHJvZHVjdDxUX3R1cGxlLFRfY29udGFpbmVyLE5fY29udGFpbmVycz46OmRl
YnVnRHVtcCgpCnsKICAgIGNvdXQgPDwgIkR1bXAgb2YgQ2FydGVzaWFuUHJvZHVjdDwuLiwuLiwi
IDw8IE5fY29udGFpbmVycyA8PCAiPiIgPDwgZW5kbDsKICAgIGZvciAoaW50IGk9MDsgaSA8IE5f
Y29udGFpbmVyczsgKytpKQogICAgewogICAgICAgIGNvdXQgPDwgIkNvbnRhaW5lciAiIDw8IChp
KzEpIDw8ICI6ICI7CiAgICAgICAgdHlwZW5hbWUgIFRfY29udGFpbmVyOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gY29udGFpbmVyc19baV0tPmJlZ2luKCksCiAgICAgICAgICAgIGVuZCA9IGNvbnRh
aW5lcnNfW2ldLT5lbmQoKTsKICAgICAgICBmb3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikKICAg
ICAgICAgICAgY291dCA8PCAoKml0ZXIpIDw8ICdcdCc7IAogICAgfQp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUX3R1cGxlLCBjbGFzcyBUX2NvbnRhaW5lciwgaW50IE5fY29udGFpbmVycz4KY2xhc3MgQ2Fy
dGVzaWFuUHJvZHVjdEl0ZXJhdG9yIHsKcHVibGljOgogICAgdHlwZWRlZiB0eXBlbmFtZSAgVF9j
b250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIGNpdGVyYXRvcjsKICAgIHR5cGVkZWYgQ2FydGVzaWFu
UHJvZHVjdEl0ZXJhdG9yPFRfdHVwbGUsVF9jb250YWluZXIsTl9jb250YWluZXJzPiBpdGVyYXRv
cjsKICAgIHR5cGVkZWYgQ2FydGVzaWFuUHJvZHVjdDxUX3R1cGxlLFRfY29udGFpbmVyLE5fY29u
dGFpbmVycz4gVF9jcDsKCiAgICBDYXJ0ZXNpYW5Qcm9kdWN0SXRlcmF0b3IoVF9jcCYgY29udGFp
bmVyKQogICAgewogICAgICAgIGZvciAoaW50IGk9MDsgaSA8IE5fY29udGFpbmVyczsgKytpKQog
ICAgICAgIHsKICAgICAgICAgICAgZmlyc3RpdGVyc19baV0gPSBjb250YWluZXJbaV0uYmVnaW4o
KTsKICAgICAgICAgICAgaXRlcnNfW2ldID0gZmlyc3RpdGVyc19baV07CiAgICAgICAgICAgIGVu
ZGl0ZXJzX1tpXSA9IGNvbnRhaW5lcltpXS5lbmQoKTsKICAgICAgICAgICAgdHVwbGVfW2ldID0g
Kml0ZXJzX1tpXTsKICAgICAgICB9CgogICAgICAgIGVuZGZsYWdfID0gZmFsc2UgOwogICAgfQoK
ICAgIHZvaWQgb3BlcmF0b3IrKygpOwoKICAgIENhcnRlc2lhblByb2R1Y3RJdGVyYXRvcihfY3Bf
ZW5kX3RhZykKICAgIHsKICAgICAgICBlbmRmbGFnXyA9IHRydWUgOwogICAgfQoKICAgIGJvb2wg
IG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImIHgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJu
IChlbmRmbGFnXyA9PSB4LmVuZGZsYWdfKTsKICAgIH0KCiAgICBib29sICBvcGVyYXRvciE9KGNv
bnN0IGl0ZXJhdG9yJiB4KSBjb25zdAogICAgeyAgIAogICAgICAgIHJldHVybiBlbmRmbGFnXyAh
PSB4LmVuZGZsYWdfOwogICAgfQoKICAgIGNvbnN0IFRfdHVwbGUmIG9wZXJhdG9yKigpIGNvbnN0
CiAgICB7IHJldHVybiB0dXBsZV87IH0KCnByb3RlY3RlZDoKICAgIGNpdGVyYXRvciBpdGVyc19b
Tl9jb250YWluZXJzXTsKICAgIGNpdGVyYXRvciBmaXJzdGl0ZXJzX1tOX2NvbnRhaW5lcnNdOwog
ICAgY2l0ZXJhdG9yIGVuZGl0ZXJzX1tOX2NvbnRhaW5lcnNdOwogICAgVF90dXBsZSB0dXBsZV87
CiAgICBib29sICBlbmRmbGFnXzsKfTsKCnRlbXBsYXRlPGNsYXNzIFRfdHVwbGUsIGNsYXNzIFRf
Y29udGFpbmVyLCBpbnQgTl9jb250YWluZXJzPgp2b2lkIENhcnRlc2lhblByb2R1Y3RJdGVyYXRv
cjxUX3R1cGxlLCBUX2NvbnRhaW5lciwgCiAgICBOX2NvbnRhaW5lcnM+OjpvcGVyYXRvcisrKCkK
ewogICAgIAogICAgIAoKICAgICAKICAgIGNvbnN0IGludCBObWludXMxID0gTl9jb250YWluZXJz
IC0gMTsKCiAgICBpbnQgaSA9IE5taW51czE7CgogICAgZm9yICg7IGkgPj0gMDsgLS1pKQogICAg
ewogICAgICAgICsraXRlcnNfW2ldOwogICAgICAgIGlmIChpdGVyc19baV0gIT0gZW5kaXRlcnNf
W2ldKQogICAgICAgICAgICBicmVhazsKICAgIH0KCiAgICBpZiAoaSA9PSAtMSkKICAgIHsKICAg
ICAgICBlbmRmbGFnXyA9IHRydWUgOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB0dXBsZV9b
aV0gPSAqaXRlcnNfW2ldOwoKICAgIGZvciAoKytpOyBpIDwgTl9jb250YWluZXJzOyArK2kpICAK
ICAgIHsKICAgICAgICBpdGVyc19baV0gPSBmaXJzdGl0ZXJzX1tpXTsKICAgICAgICB0dXBsZV9b
aV0gPSAqaXRlcnNfW2ldOwogICAgfQp9Cgp9IAoKCgojIDUgIi91ZnMvbmV3bWFuL3VzZXJzL2Rl
cnJpY2svaW5jbHVkZS9ibGl0ei9hcnJheS9pbmRpcmVjdC5oIiAyCgoKbmFtZXNwYWNlICBibGl0
eiAgeyAKCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNsYXNzIFRfaW5kZXg+CmNsYXNzIEluZGly
ZWN0QXJyYXkgewoKcHVibGljOgogICAgSW5kaXJlY3RBcnJheShUX2FycmF5JiBhcnJheSwgVF9p
bmRleCYgaW5kZXgpCiAgICAgICAgOiBhcnJheV8oYXJyYXkpLCBpbmRleF8oaW5kZXgpCiAgICB7
IH0KCiAgICB0ZW1wbGF0ZTxjbGFzcyBUX2V4cHI+CiAgICB2b2lkIG9wZXJhdG9yPShUX2V4cHIg
ZXhwcik7Cgpwcm90ZWN0ZWQ6CiAgICBUX2FycmF5JiBhcnJheV87CiAgICBUX2luZGV4JiBpbmRl
eF87Cn07CgogCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNsYXNzIFRfYXJyYXlpdGVyLCBjbGFz
cyBUX3N1YmRvbWFpbiwgY2xhc3MgVF9leHByPgppbmxpbmUgdm9pZCBhcHBseU92ZXJTdWJkb21h
aW4oY29uc3QgVF9hcnJheSYgYXJyYXksIFRfYXJyYXlpdGVyJiBhcnJheUl0ZXIsCiAgICBUX3N1
YmRvbWFpbiBzdWJkb21haW4sIFRfZXhwciBleHByKTsKdGVtcGxhdGU8Y2xhc3MgVF9hcnJheSwg
Y2xhc3MgVF9hcnJheWl0ZXIsIGludCBOX3JhbmssIGNsYXNzIFRfZXhwcj4KaW5saW5lIHZvaWQg
YXBwbHlPdmVyU3ViZG9tYWluKGNvbnN0IFRfYXJyYXkmIGFycmF5LCBUX2FycmF5aXRlciYgYXJy
YXlJdGVyLAogICAgUmVjdERvbWFpbjxOX3Jhbms+IHN1YmRvbWFpbiwKICAgIFRfZXhwciBleHBy
KTsKCnRlbXBsYXRlPGNsYXNzIFRfYXJyYXksIGNsYXNzIFRfaW5kZXg+IHRlbXBsYXRlPGNsYXNz
IFRfcmhzPgp2b2lkIEluZGlyZWN0QXJyYXk8VF9hcnJheSwgVF9pbmRleD46Om9wZXJhdG9yPShU
X3JocyByaHMpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIGFzRXhwcjxUX3Jocz46OlRfZXhwciBU
X2V4cHI7CiAgICBUX2V4cHIgZXhwcihyaHMpOwoKICAgIHR5cGVuYW1lICBUX2FycmF5OjpUX2l0
ZXJhdG9yIGFycmF5SXRlcihhcnJheV8pOwoKICAgIHR5cGVuYW1lICBUX2luZGV4OjppdGVyYXRv
ciBpdGVyID0gaW5kZXhfLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gaW5k
ZXhfLmVuZCgpOwoKICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKQogICAgewogICAgICAg
IHR5cGVuYW1lICBUX2luZGV4Ojp2YWx1ZV90eXBlIHN1YmRvbWFpbiA9ICppdGVyOwogICAgICAg
IGFwcGx5T3ZlclN1YmRvbWFpbihhcnJheV8sIGFycmF5SXRlciwgc3ViZG9tYWluLCBleHByKTsK
ICAgIH0KfQoKdGVtcGxhdGU8Y2xhc3MgVF9hcnJheSwgY2xhc3MgVF9hcnJheWl0ZXIsIGNsYXNz
IFRfc3ViZG9tYWluLCBjbGFzcyBUX2V4cHI+CmlubGluZSB2b2lkIGFwcGx5T3ZlclN1YmRvbWFp
bihjb25zdCBUX2FycmF5JiBhcnJheSwgVF9hcnJheWl0ZXImIGFycmF5SXRlciwgCiAgICBUX3N1
YmRvbWFpbiBzdWJkb21haW4sIFRfZXhwciBleHByKQp7CiAgICAgCgoKCgoKCiAgICBhcnJheUl0
ZXIubW92ZVRvKHN1YmRvbWFpbik7CiAgICBleHByLm1vdmVUbyhzdWJkb21haW4pOwoKICAgICpj
b25zdF9jYXN0PCB0eXBlbmFtZSAgVF9hcnJheWl0ZXI6OlRfbnVtdHlwZSo+KGFycmF5SXRlci5k
YXRhKCkpID0gKmV4cHI7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgVF9hcnJheSwgY2xhc3MgVF9hcnJh
eWl0ZXIsIGludCBOX3JhbmssIGNsYXNzIFRfZXhwcj4KaW5saW5lIHZvaWQgYXBwbHlPdmVyU3Vi
ZG9tYWluKGNvbnN0IFRfYXJyYXkmIGFycmF5LCBUX2FycmF5aXRlciYgYXJyYXlJdGVyLCAKICAg
IFJlY3REb21haW48Tl9yYW5rPiBzdWJkb21haW4sCiAgICBUX2V4cHIgZXhwcikKewogICAgdHlw
ZWRlZiB0eXBlbmFtZSAgVF9hcnJheTo6VF9udW10eXBlIFRfbnVtdHlwZTsKCiAgICAgCiAgICAg
CiAgICAgCiAgICAgCgogICAgc3RhdGljIGludCBzdHJpcERpbSA9IDA7CgogICAgaWYgKHN1YmRv
bWFpbi5sYm91bmQoc3RyaXBEaW0pID09IHN1YmRvbWFpbi51Ym91bmQoc3RyaXBEaW0pKQogICAg
ewogICAgICAgICAKICAgICAgICBmb3IgKHN0cmlwRGltPTA7IHN0cmlwRGltIDwgTl9yYW5rOyAr
K3N0cmlwRGltKQogICAgICAgICAgaWYgKHN1YmRvbWFpbi5sYm91bmQoc3RyaXBEaW0pICE9IHN1
YmRvbWFpbi51Ym91bmQoc3RyaXBEaW0pKQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgIAog
ICAgICAgIGlmIChzdHJpcERpbSA9PSBOX3JhbmspCiAgICAgICAgICAgIHN0cmlwRGltID0gMDsK
ICAgIH0KCiMgMTA1ICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2luY2x1ZGUvYmxpdHovYXJy
YXkvaW5kaXJlY3QuaCIKCgogICAgIAogICAgIAoKCgoKCgoKICAgICAKCgoKCgoKCiAgICAgCiAg
ICBhcnJheUl0ZXIubW92ZVRvKHN1YmRvbWFpbi5sYm91bmQoKSk7CiAgICBleHByLm1vdmVUbyhz
dWJkb21haW4ubGJvdW5kKCkpOwoKICAgICAKCgoKICAgIGJvb2wgIHVzZVVuaXRTdHJpZGUgPSBh
cnJheUl0ZXIuaXNVbml0U3RyaWRlKHN0cmlwRGltKQogICAgICAgICAgJiYgZXhwci5pc1VuaXRT
dHJpZGUoc3RyaXBEaW0pOwoKICAgIGludCBsYm91bmQgPSBzdWJkb21haW4ubGJvdW5kKHN0cmlw
RGltKTsgCiAgICBpbnQgdWJvdW5kID0gc3ViZG9tYWluLnVib3VuZChzdHJpcERpbSk7CgogICAg
aWYgKHVzZVVuaXRTdHJpZGUpCiAgICB7CiAgICAgICAgVF9udW10eXBlKiBfX3Jlc3RyaWN0X18g
IGRhdGEgPSBjb25zdF9jYXN0PFRfbnVtdHlwZSo+KGFycmF5SXRlci5kYXRhKCkpOwoKICAgICAg
ICBpbnQgbGVuZ3RoID0gdWJvdW5kIC0gbGJvdW5kICsgMTsKICAgICAgICBmb3IgKGludCBpPTA7
IGkgPCBsZW5ndGg7ICsraSkKICAgICAgICAgICAgZGF0YVtpXSA9IGV4cHIuZmFzdFJlYWQoaSk7
CiAgICB9CiAgICBlbHNlIHsKCgogICAgYXJyYXlJdGVyLmxvYWRTdHJpZGUoc3RyaXBEaW0pOwog
ICAgZXhwci5sb2FkU3RyaWRlKHN0cmlwRGltKTsKCiAgICBmb3IgKGludCBpPWxib3VuZDsgaSA8
PSB1Ym91bmQ7ICsraSkKICAgIHsKICAgICAgICAqY29uc3RfY2FzdDwgdHlwZW5hbWUgIFRfYXJy
YXlpdGVyOjpUX251bXR5cGUqPihhcnJheUl0ZXIuZGF0YSgpKSAKICAgICAgICAgICAgPSAqZXhw
cjsKICAgICAgICBleHByLmFkdmFuY2UoKTsKICAgICAgICBhcnJheUl0ZXIuYWR2YW5jZSgpOwog
ICAgfQoKCiAgICB9Cgp9CgogCnRlbXBsYXRlPGNsYXNzIFRfY29udGFpbmVyPgpDYXJ0ZXNpYW5Q
cm9kdWN0PFRpbnlWZWN0b3I8aW50LDI+LFRfY29udGFpbmVyLDI+CmluZGV4U2V0KGNvbnN0IFRf
Y29udGFpbmVyJiBjb250YWluZXIwLCBjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMSkKewog
ICAgcmV0dXJuIENhcnRlc2lhblByb2R1Y3Q8VGlueVZlY3RvcjxpbnQsMj4sVF9jb250YWluZXIs
Mj4oCiAgICAgICAgY29uc3RfY2FzdDxUX2NvbnRhaW5lciY+KGNvbnRhaW5lcjApLCAKICAgICAg
ICBjb25zdF9jYXN0PFRfY29udGFpbmVyJj4oY29udGFpbmVyMSkpOwp9Cgp0ZW1wbGF0ZTxjbGFz
cyBUX2NvbnRhaW5lcj4KQ2FydGVzaWFuUHJvZHVjdDxUaW55VmVjdG9yPGludCwzPixUX2NvbnRh
aW5lciwzPgppbmRleFNldChjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMCwgY29uc3QgVF9j
b250YWluZXImIGNvbnRhaW5lcjEsCiAgICBjb25zdCBUX2NvbnRhaW5lciYgY29udGFpbmVyMikK
ewogICAgcmV0dXJuIENhcnRlc2lhblByb2R1Y3Q8VGlueVZlY3RvcjxpbnQsMz4sVF9jb250YWlu
ZXIsMz4oCiAgICAgICAgY29uc3RfY2FzdDxUX2NvbnRhaW5lciY+KGNvbnRhaW5lcjApLCAKICAg
ICAgICBjb25zdF9jYXN0PFRfY29udGFpbmVyJj4oY29udGFpbmVyMSksIAogICAgICAgIGNvbnN0
X2Nhc3Q8VF9jb250YWluZXImPihjb250YWluZXIyKSk7Cn0KCiAKCiAKIAogCiAKIAogCiAKIAoK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMz1pbnQsIGNsYXNzIFQ0PWludD4K
c3RydWN0IGNwX2ZpbmRDb250YWluZXJUeXBlIHsKICAgIHR5cGVkZWYgVDEgVF9jb250YWluZXI7
Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgpzdHJ1Y3QgY3BfZmlu
ZENvbnRhaW5lclR5cGU8aW50LFQyLFQzLFQ0PiB7CiAgICB0eXBlZGVmIHR5cGVuYW1lICBjcF9m
aW5kQ29udGFpbmVyVHlwZTxUMixUMyxUND46OlRfY29udGFpbmVyIFRfY29udGFpbmVyOwp9OwoK
CiAKIAogCiAKIAogCiAKIAoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVDI+CnN0cnVjdCBjcF90
cmFpdHMgewogICAgdHlwZWRlZiBUIFRfY29udGFpbmVyOwoKICAgIHN0YXRpYyBjb25zdCBUX2Nv
bnRhaW5lciYgbWFrZShjb25zdCBUJiB4KQogICAgeyByZXR1cm4geDsgfQp9OwoKdGVtcGxhdGU8
Y2xhc3MgVDI+CnN0cnVjdCBjcF90cmFpdHM8aW50LFQyPiB7CiAgICB0eXBlZGVmIFQyIFRfY29u
dGFpbmVyOwoKICAgIHN0YXRpYyBUMiBtYWtlKGludCB4KQogICAgeyAKICAgICAgICBUMiBzaW5n
bGV0b247CiAgICAgICAgc2luZ2xldG9uLnB1c2hfYmFjayh4KTsKICAgICAgICByZXR1cm4gc2lu
Z2xldG9uOwogICAgfQp9OwoKIAogCiAKCnRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KQ2Fy
dGVzaWFuUHJvZHVjdDxUaW55VmVjdG9yPGludCwyPiwgdHlwZW5hbWUgIAogICAgY3BfZmluZENv
bnRhaW5lclR5cGU8VDEsVDI+OjpUX2NvbnRhaW5lciwyPiAKaW5kZXhTZXQoY29uc3QgVDEmIGMx
LCBjb25zdCBUMiYgYzIpCnsKICAgIHR5cGVkZWYgdHlwZW5hbWUgIGNwX2ZpbmRDb250YWluZXJU
eXBlPFQxLFQyPjo6VF9jb250YWluZXIKICAgICAgICBUX2NvbnRhaW5lcjsKCiAgICByZXR1cm4g
Q2FydGVzaWFuUHJvZHVjdDxUaW55VmVjdG9yPGludCwyPiwgVF9jb250YWluZXIsIDI+KAogICAg
ICAgICAgY3BfdHJhaXRzPFQxLFRfY29udGFpbmVyPjo6bWFrZShjMSksCiAgICAgICAgICBjcF90
cmFpdHM8VDIsVF9jb250YWluZXI+OjptYWtlKGMyKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQxLCBj
bGFzcyBUMiwgY2xhc3MgVDM+CkNhcnRlc2lhblByb2R1Y3Q8VGlueVZlY3RvcjxpbnQsMz4sIHR5
cGVuYW1lIAogICAgY3BfZmluZENvbnRhaW5lclR5cGU8VDEsVDIsVDM+OjpUX2NvbnRhaW5lciwg
Mz4KaW5kZXhTZXQoY29uc3QgVDEmIGMxLCBjb25zdCBUMiYgYzIsIGNvbnN0IFQzJiBjMykKewog
ICAgdHlwZWRlZiB0eXBlbmFtZSAgY3BfZmluZENvbnRhaW5lclR5cGU8VDEsVDIsVDM+OjpUX2Nv
bnRhaW5lcgogICAgICAgIFRfY29udGFpbmVyOwoKICAgIHJldHVybiBDYXJ0ZXNpYW5Qcm9kdWN0
PFRpbnlWZWN0b3I8aW50LDM+LCBUX2NvbnRhaW5lciwgMz4oCiAgICAgICAgICBjcF90cmFpdHM8
VDEsVF9jb250YWluZXI+OjptYWtlKGMxKSwKICAgICAgICAgIGNwX3RyYWl0czxUMixUX2NvbnRh
aW5lcj46Om1ha2UoYzIpLAogICAgICAgICAgY3BfdHJhaXRzPFQzLFRfY29udGFpbmVyPjo6bWFr
ZShjMykpOwp9Cgp9IAoKCiMgMjQ5NCAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9pbmNsdWRl
L2JsaXR6L2FycmF5LmgiIDIKCgoKCiMgNSAiSW50ZXJwb2xhdGlvbi5oIiAyCgojIDEgIi91ZnMv
bmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2luY2x1ZGUvc3N0cmVhbSIgMQogCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKIAoKCiNkZWZpbmUgX19TU1RSRUFNCgoKCgoKbmFtZXNwYWNlIHN0ZAp7CiAg
Y2xhc3Mgc3RyaW5nc3RyZWFtYnVmIDogcHVibGljIHN0cmVhbWJ1ZgogIHsKICAgIHN0ZDo6c3Ry
aW5nCQlidWY7CiAgICBpb3M6Om9wZW5fbW9kZQltb2RlOwogIHByb3RlY3RlZDoKICAgIGlubGlu
ZSB2aXJ0dWFsIGludCBzeW5jKCk7CiAgICBpbmxpbmUgdmlydHVhbCBpbnQgb3ZlcmZsb3coaW50
ID0gKC0xKSApOwogICAgaW5saW5lIHZpcnR1YWwgaW50IHVuZGVyZmxvdygpOwogIHB1YmxpYzoK
ICAgIHN0cmluZ3N0cmVhbWJ1ZihpbnQgbT1pb3M6OmlufGlvczo6b3V0KSA6CiAgICAgIGJ1Zigp
LCBtb2RlKHN0YXRpY19jYXN0PGlvczo6b3Blbl9tb2RlPihtKSkKICAgIHsgfQoJCiAgICBzdHJp
bmdzdHJlYW1idWYoY29uc3Qgc3RkOjpzdHJpbmcgJnMsIGludCBtPWlvczo6aW58aW9zOjpvdXQp
IDoKICAgICAgYnVmKHMpLCBtb2RlKHN0YXRpY19jYXN0PGlvczo6b3Blbl9tb2RlPihtKSkKICAg
IHsgfQoJCiAgICBfX3NzaXplX3QgICBwY291bnQoKSB7IHJldHVybiBidWYuc2l6ZSgpOyB9CiAg
ICBzdGQ6OnN0cmluZyBzdHIoKSB7IHN5bmMoKTsgcmV0dXJuIGJ1ZjsgfTsKICAgIHZvaWQgc3Ry
KGNvbnN0IHN0ZDo6c3RyaW5nJiBzKQogICAgewogICAgICBwYnVtcChwYmFzZSgpIC0gcHB0cigp
KTsKICAgICAgZ2J1bXAoZWdwdHIoKSAtIGdwdHIoKSk7CiAgICAgIGJ1ZiA9IHM7CiAgICB9CiAg
fTsKCiAgY2xhc3Mgc3RyaW5nc3RyZWFtYmFzZSA6IHZpcnR1YWwgcHVibGljIGlvcyB7CiAgcHJv
dGVjdGVkOgogICAgc3RyaW5nc3RyZWFtYnVmIF9fbXlfc2I7CiAgcHVibGljOgogICAgc3RkOjpz
dHJpbmcgc3RyKCkgY29uc3QKICAgIHsgcmV0dXJuIGR5bmFtaWNfY2FzdDxzdHJpbmdzdHJlYW1i
dWYqPihfc3RyYnVmKS0+c3RyKCk7IH0KICAgIHZvaWQgc3RyKGNvbnN0IHN0ZDo6c3RyaW5nJiBz
KQogICAgeyByZXR1cm4gZHluYW1pY19jYXN0PHN0cmluZ3N0cmVhbWJ1Zio+KF9zdHJidWYpLT5z
dHIocyk7IH0KCQogICAgc3RyaW5nc3RyZWFtYnVmKiByZGJ1ZigpIHsgcmV0dXJuICZfX215X3Ni
OyB9CiAgcHJvdGVjdGVkOgogICAgc3RyaW5nc3RyZWFtYmFzZShpbnQgbSkgOgogICAgICBfX215
X3NiKG0pCiAgICB7IGluaXQgKCZfX215X3NiKTsgfQoJCiAgICBzdHJpbmdzdHJlYW1iYXNlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBzLCBpbnQgbSkgOgogICAgICBfX215X3NiKHMsIG0pCiAgICB7IGlu
aXQgKCZfX215X3NiKTsgfQogIH07CiAgICAKICBjbGFzcyBpc3RyaW5nc3RyZWFtIDogcHVibGlj
IHN0cmluZ3N0cmVhbWJhc2UsIHB1YmxpYyBpc3RyZWFtIHsKICBwdWJsaWM6CiAgICBpc3RyaW5n
c3RyZWFtKHN0ZDo6c3RyaW5nJiBzKSA6CiAgICAgIHN0cmluZ3N0cmVhbWJhc2UocywgaW9zOjpp
bikKICAgIHsgfQogICAgdm9pZCBzdHIoY29uc3Qgc3RkOjpzdHJpbmcmIHMpCiAgICB7IHJldHVy
biBkeW5hbWljX2Nhc3Q8c3RyaW5nc3RyZWFtYnVmKj4oX3N0cmJ1ZiktPnN0cihzKTsgfQkKICB9
OwogICAgCiAgY2xhc3Mgb3N0cmluZ3N0cmVhbSA6IHB1YmxpYyBzdHJpbmdzdHJlYW1iYXNlLCBw
dWJsaWMgb3N0cmVhbSB7CiAgcHVibGljOgogICAgb3N0cmluZ3N0cmVhbShpbnQgbT1pb3M6Om91
dCkgOgogICAgICBzdHJpbmdzdHJlYW1iYXNlKG0pCiAgICB7IH0KCQogICAgb3N0cmluZ3N0cmVh
bShjb25zdCBzdGQ6OnN0cmluZyYgcywgaW50IG09aW9zOjpvdXQpIDoKICAgICAgc3RyaW5nc3Ry
ZWFtYmFzZShzLCBtKQogICAgeyB9CgogICAgc3RkOjpzdHJpbmcgc3RyKCkgY29uc3QKICAgIHsg
cmV0dXJuIGR5bmFtaWNfY2FzdDxzdHJpbmdzdHJlYW1idWYqPihfc3RyYnVmKS0+c3RyKCk7IH0K
ICB9OwogICAgCiAgY2xhc3Mgc3RyaW5nc3RyZWFtIDogcHVibGljIHN0cmluZ3N0cmVhbWJhc2Us
IHB1YmxpYyBpb3N0cmVhbSB7CiAgcHVibGljOgogICAgc3RyaW5nc3RyZWFtKGludCBtPWlvczo6
aW58aW9zOjpvdXQpIDoKICAgICAgc3RyaW5nc3RyZWFtYmFzZShtKQogICAgeyB9CiAgICBzdHJp
bmdzdHJlYW0oY29uc3Qgc3RkOjpzdHJpbmcgJnMsIGludCBtPWlvczo6aW58aW9zOjpvdXQpIDoK
ICAgICAgc3RyaW5nc3RyZWFtYmFzZShzLCBtKQogICAgeyB9CgkKICAgIHN0ZDo6c3RyaW5nIHN0
cigpIGNvbnN0CiAgICB7IHJldHVybiBkeW5hbWljX2Nhc3Q8c3RyaW5nc3RyZWFtYnVmKj4oX3N0
cmJ1ZiktPnN0cigpOyB9CiAgICB2b2lkIHN0cihjb25zdCBzdGQ6OnN0cmluZyYgcykKICAgIHsg
cmV0dXJuIGR5bmFtaWNfY2FzdDxzdHJpbmdzdHJlYW1idWYqPihfc3RyYnVmKS0+c3RyKHMpOyB9
CgkKICAgIF9fc3NpemVfdCAgIHBjb3VudCgpCiAgICB7IHJldHVybiBkeW5hbWljX2Nhc3Q8c3Ry
aW5nc3RyZWFtYnVmKj4oX3N0cmJ1ZiktPnBjb3VudCgpOyB9CiAgfTsKfQoKaW5saW5lIGludCBz
dGQ6OnN0cmluZ3N0cmVhbWJ1Zjo6c3luYygpCnsKICBpZigobW9kZSAmIGlvczo6b3V0KSA9PSAw
KQogICAgcmV0dXJuICgtMSkgOwogIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgb2xkU2l6ZSA9IGJ1
Zi5zaXplKCk7CiAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSAgbiA9IHBwdHIoKSAtIHBiYXNlKCk7
CiAgaWYobikKICAgIHsKICAgICAgYnVmLmFwcGVuZChwYmFzZSgpLCBwcHRyKCkpOwogICAgICBp
ZihidWYuc2l6ZSgpIC0gb2xkU2l6ZSAhPSBuKQoJcmV0dXJuICgtMSkgOwogICAgfQogIHJldHVy
biAwOwp9CgppbmxpbmUgaW50IHN0ZDo6c3RyaW5nc3RyZWFtYnVmOjpvdmVyZmxvdyhpbnQgY2gp
CnsKICBpZigobW9kZSAmIGlvczo6b3V0KSA9PSAwKQogICAgcmV0dXJuICgtMSkgOwogIHN0cmVh
bXNpemUgbiA9IHBwdHIoKSAtIHBiYXNlKCk7CgogIGlmKG4gJiYgc3luYygpKQogICAgcmV0dXJu
ICgtMSkgOwogIGlmKGNoICE9ICgtMSkgKQogICAgewogICAgICBjaGFyIGNidWZbMV07CiAgICAg
IHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgb2xkU2l6ZSA9IGJ1Zi5zaXplKCk7CgkKICAgICAgY2J1
ZlswXSA9IGNoOwogICAgICBidWYuYXBwZW5kKGNidWYsIDEpOwogICAgICBpZihidWYuc2l6ZSgp
IC0gb2xkU2l6ZSAhPSAxKQoJcmV0dXJuICgtMSkgOwogICAgfQogIHBidW1wKC1uKTsKICByZXR1
cm4gMDsKfQoKaW5saW5lIGludCBzdGQ6OnN0cmluZ3N0cmVhbWJ1Zjo6dW5kZXJmbG93KCkKewog
IGlmKChtb2RlICYgaW9zOjppbikgPT0gMCkKICAgIHJldHVybiAoLTEpIDsKICBzdGQ6OnN0cmlu
Zzo6c2l6ZV90eXBlIG4gPSBlZ3B0cigpIC0gZWJhY2soKTsKICBzdGQ6OnN0cmluZzo6c2l6ZV90
eXBlIHM7CiAgICAKICBpZihidWYuc2l6ZSgpIDwgbikKICAgIHMgPSBidWYuY29weShlZ3B0cigp
IC0gYnVmLnNpemUoKSwgYnVmLnNpemUoKSk7CiAgZWxzZQogICAgcyA9IGJ1Zi5jb3B5KGViYWNr
KCksIG4pOwogIGdidW1wKGVncHRyKCkgLSBncHRyKCkgLSBzKTsKICByZXR1cm4gMDsKfQoKCiMg
NiAiSW50ZXJwb2xhdGlvbi5oIiAyCgojIDEgIi4uL2hlYWRlcnMvZGV4Y2VwdGlvbi5oIiAxCgoj
ZGVmaW5lIGRleGNlcHRpb25fbgoKCmNsYXNzIGRleGNlcHRpb24gewpwdWJsaWM6CiAgZGV4Y2Vw
dGlvbigpIHsgfQogIHZpcnR1YWwgfmRleGNlcHRpb24oKSB7IH0KICB2aXJ0dWFsIHN0ZDo6c3Ry
aW5nIG5hbWUoKSBjb25zdCA9IDA7CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBzdW1tYXJ5KCkgY29u
c3QgeyByZXR1cm4gbmFtZSgpOyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBkZXRhaWwoKSBjb25z
dCB7IHJldHVybiBzdW1tYXJ5KCk7IH0KfTsKCgojIDcgIkludGVycG9sYXRpb24uaCIgMgoKIyAx
ICIuLi9leHByVGVtcC9leHByVGVtcC5oIiAxCgojZGVmaW5lIEVYUFJURU1QSAoKCiMgMSAiLi4v
ZXhwclRlbXAvbXlhcHBsaWNzLmgiIDEKbmFtZXNwYWNlIGJsaXR6IHsKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgpjbGFzcyBfYnpfdW5wbHVzIDogcHVibGljIE9uZU9wZXJhbmRBcHBsaWNhdGl2
ZVRlbXBsYXRlc0Jhc2UgewpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlMTsK
ICB0eXBlZGVmIFRfbnVtdHlwZTEgVF9wcm9tb3RlOwogIHR5cGVkZWYgVF9wcm9tb3RlIFRfbnVt
dHlwZTsKCiAgc3RhdGljIGlubGluZSBQX251bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpIAogIHsg
cmV0dXJuICt4OyB9Cn07Cn0KIyA1ICIuLi9leHByVGVtcC9leHByVGVtcC5oIiAyCgoKbmFtZXNw
YWNlIGJsaXR6IHsKCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjIsIGNsYXNz
IFBfb3A+CmNsYXNzIF9iel9CaW5FeHByT3Agewpwcml2YXRlOgogIFBfZXhwcjEgZXhwcjE7CiAg
UF9leHByMiBleHByMjsKCnB1YmxpYzoKICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICB0eXBl
ZGVmIFBfZXhwcjIgVF9leHByMjsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5
cGUgVF9udW10eXBlMTsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9u
dW10eXBlMjsKICB0eXBlZGVmIHR5cGVuYW1lICBwcm9tb3RlX3RyYWl0PCBUX251bXR5cGUxICwg
IFRfbnVtdHlwZTIgPjo6VF9wcm9tb3RlICBUX251bXR5cGU7CiAgdHlwZWRlZiBQX29wICAgIFRf
b3A7CiAgIAogIAogIF9iel9CaW5FeHByT3AoY29uc3QgVF9leHByMSYgYSwgY29uc3QgVF9leHBy
MiYgYikgCiAgICA6IGV4cHIxKGEpLCBleHByMihiKSB7IH0KCiAgVF9udW10eXBlIG9wZXJhdG9y
KCkoVF9udW10eXBlIHgpIGNvbnN0IHsKICAgIHJldHVybiBUX29wOjphcHBseShleHByMSh4KSwg
ZXhwcjIoeCkpOwogIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfZXhwciwgY2xhc3MgUF91bmFyeU9w
PgpjbGFzcyBfYnpfVW5hcnlFeHByT3Agewpwcml2YXRlOgogIFBfZXhwciBleHByOwoKcHVibGlj
OgogIHR5cGVkZWYgUF9leHByIFRfZXhwcjsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2V4cHI6OlRf
bnVtdHlwZSBUX251bXR5cGVfaW47CiAgdHlwZWRlZiBQX3VuYXJ5T3AgICAgVF91bmFyeU9wOwog
IHR5cGVkZWYgdHlwZW5hbWUgIFRfdW5hcnlPcDo6VF9udW10eXBlIFRfbnVtdHlwZTsKICAKICBf
YnpfVW5hcnlFeHByT3AoY29uc3QgVF9leHByJiBhKQogICAgOiBleHByKGEpIHsgfQoKICBUX251
bXR5cGUgb3BlcmF0b3IoKShUX251bXR5cGVfaW4geCkgY29uc3QgewogICAgcmV0dXJuIFRfdW5h
cnlPcDo6YXBwbHkoZXhwcih4KSk7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPgpj
bGFzcyBfYnpfRXhwcjAgewpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoK
ICBfYnpfRXhwcjAoKSB7IH0KICAKICBUX251bXR5cGUgb3BlcmF0b3IoKShUX251bXR5cGUpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICBfYnpfRXhwcjA8VF9udW10eXBlPiBkZXJpdmF0aXZlKCkgeyBy
ZXR1cm4gX2J6X0V4cHIwPFRfbnVtdHlwZT4oKTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgUF9udW10
eXBlPgpjbGFzcyBfYnpfRXhwcjEgewpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10
eXBlOwoKICBfYnpfRXhwcjEoKSB7IH0KICAKICBUX251bXR5cGUgb3BlcmF0b3IoKShUX251bXR5
cGUpIGNvbnN0IHsgcmV0dXJuIDE7IH0KICBfYnpfRXhwcjA8VF9udW10eXBlPiBkZXJpdmF0aXZl
KCkgeyByZXR1cm4gX2J6X0V4cHIwPFRfbnVtdHlwZT4oKTsgfQp9OwoKdGVtcGxhdGU8Y2xhc3Mg
UF9udW10eXBlPgpjbGFzcyBfYnpfRXhwckNvbnN0YW50IHsKcHJpdmF0ZToKICBQX251bXR5cGUg
dmFsdWU7CgpwdWJsaWM6CiAgdHlwZWRlZiBQX251bXR5cGUgVF9udW10eXBlOwoKICBfYnpfRXhw
ckNvbnN0YW50KFBfbnVtdHlwZSBfdmFsdWUpCiAgICA6IHZhbHVlKCBfdmFsdWUgICkgeyB9CiAg
CiAgVF9udW10eXBlIG9wZXJhdG9yKCkoVF9udW10eXBlKSBjb25zdCB7IHJldHVybiB2YWx1ZTsg
fQogIF9iel9FeHByMDxUX251bXR5cGU+IGRlcml2YXRpdmUoKSB7IHJldHVybiBfYnpfRXhwcjA8
VF9udW10eXBlPigpOyB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIsIGNsYXNzIFBfdW5hcnlP
cD4KY2xhc3MgX2J6X1VuYXJ5Q2xhc3NFeHByT3AyIHsKcHJpdmF0ZToKICBQX2V4cHIgZXhwcjsK
ICBjb25zdCBQX3VuYXJ5T3AmIG9wRnVuY3RvcjsKCnB1YmxpYzoKICB0eXBlZGVmIFBfZXhwciBU
X2V4cHI7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByOjpUX251bXR5cGUgVF9udW10eXBlX2lu
OwogIHR5cGVkZWYgUF91bmFyeU9wICAgIFRfdW5hcnlPcDsKICB0eXBlZGVmIHR5cGVuYW1lICBU
X3VuYXJ5T3A6OlRfbnVtdHlwZSBUX251bXR5cGU7CiAgCiAgX2J6X1VuYXJ5Q2xhc3NFeHByT3Ay
KGNvbnN0IFRfdW5hcnlPcCYgb3AsIGNvbnN0IFRfZXhwciYgYSkKICAgIDogb3BGdW5jdG9yKG9w
KSwgZXhwcihhKSB7IH0KCiAgVF9udW10eXBlIG9wZXJhdG9yKCkoVF9udW10eXBlX2luIHgpIGNv
bnN0IHsKICAgIHJldHVybiBvcEZ1bmN0b3IoZXhwcih4KSk7CiAgfQp9OwoKdGVtcGxhdGU8dHlw
ZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgRXhwcj4KY2xhc3MgRnVuY3RvckV4cHIgOiBwdWJsaWMg
RVRCYXNlPCBGdW5jdG9yRXhwcjwgRnVuY3RvciwgRXhwciA+ID4gewpwdWJsaWM6CiAgdHlwZWRl
ZiB0eXBlbmFtZSBGdW5jdG9yOjpUX251bXR5cGUgVF9udW10eXBlOwogIHR5cGVkZWYgRnVuY3Rv
ckV4cHI8IEZ1bmN0b3IsIEV4cHI+IFRfZXhwcjsKICB0eXBlZGVmIEZ1bmN0b3IgVF9jdG9yQXJn
MTsKICB0eXBlZGVmIEV4cHIgVF9jdG9yQXJnMjsKCiAgZW51bSB7IG51bUFycmF5T3BlcmFuZHMg
PSAoaW50KSBFeHByOjpudW1BcnJheU9wZXJhbmRzICAsCgkgbnVtSW5kZXhQbGFjZWhvbGRlcnMg
PSAoaW50KSBFeHByOjpudW1JbmRleFBsYWNlaG9sZGVycyAgLAoJIHJhbmsgPSAoaW50KSBFeHBy
OjpyYW5rICAgfTsKICAKICB0ZW1wbGF0ZTxjbGFzcyBUPgogIEZ1bmN0b3JFeHByKGNvbnN0IEZ1
bmN0b3ImIGYsIGNvbnN0IFQmIGEpIDogZl8oZiksIGl0ZXJfKGEpIHsgfQoKICBUX251bXR5cGUg
b3BlcmF0b3IqKCkgeyByZXR1cm4gZl8oKml0ZXJfKTsgfQoKCgoKCgogIHRlbXBsYXRlPGludCBO
X3Jhbms+CiAgVF9udW10eXBlIG9wZXJhdG9yKCkoY29uc3QgVGlueVZlY3RvcjxpbnQsIE5fcmFu
az4mIGkpCiAgeyByZXR1cm4gZl8oaXRlcl8oaSkpOyB9CgoKICBpbnQgYXNjZW5kaW5nKGludCBy
YW5rKQogIHsgcmV0dXJuIGl0ZXJfLmFzY2VuZGluZyhyYW5rKTsgfQoKICBpbnQgb3JkZXJpbmco
aW50IHJhbmspCiAgeyByZXR1cm4gaXRlcl8ub3JkZXJpbmcocmFuayk7IH0KCiAgaW50IGxib3Vu
ZChpbnQgcmFuaykKICB7IHJldHVybiBpdGVyXy5sYm91bmQocmFuayk7IH0KCiAgaW50IHVib3Vu
ZChpbnQgcmFuaykKICB7IHJldHVybiBpdGVyXy51Ym91bmQocmFuayk7IH0KICAKICB2b2lkIHB1
c2goaW50IHBvc2l0aW9uKQogIHsgaXRlcl8ucHVzaChwb3NpdGlvbik7IH0KCiAgdm9pZCBwb3Ao
aW50IHBvc2l0aW9uKQogIHsgaXRlcl8ucG9wKHBvc2l0aW9uKTsgfQoKICB2b2lkIGFkdmFuY2Uo
KQogIHsgaXRlcl8uYWR2YW5jZSgpOyB9CgogIHZvaWQgYWR2YW5jZShpbnQgbikKICB7IGl0ZXJf
LmFkdmFuY2Uobik7IH0KCiAgdm9pZCBsb2FkU3RyaWRlKGludCByYW5rKQogIHsgaXRlcl8ubG9h
ZFN0cmlkZShyYW5rKTsgfQoKICBib29sICBpc1VuaXRTdHJpZGUoaW50IHJhbmspIGNvbnN0CiAg
eyByZXR1cm4gaXRlcl8uaXNVbml0U3RyaWRlKHJhbmspOyB9CgogIHZvaWQgYWR2YW5jZVVuaXRT
dHJpZGUoKQogIHsgaXRlcl8uYWR2YW5jZVVuaXRTdHJpZGUoKTsgfQogIGJvb2wgIGNhbkNvbGxh
cHNlKGludCBvdXRlckxvb3BSYW5rLCBpbnQgaW5uZXJMb29wUmFuaykgY29uc3QKICB7IAogICAg
cmV0dXJuIGl0ZXJfLmNhbkNvbGxhcHNlKG91dGVyTG9vcFJhbmssIGlubmVyTG9vcFJhbmspOyAK
ICB9CgogIFRfbnVtdHlwZSBvcGVyYXRvcltdKGludCBpKQogIHsgcmV0dXJuIGZfKGl0ZXJfW2ld
KTsgfQoKICBUX251bXR5cGUgZmFzdFJlYWQoaW50IGkpCiAgeyByZXR1cm4gZl8oaXRlcl8uZmFz
dFJlYWQoaSkpOyB9CgogIGludCBzdWdnZXN0U3RyaWRlKGludCByYW5rKSBjb25zdAogIHsgcmV0
dXJuIGl0ZXJfLnN1Z2dlc3RTdHJpZGUocmFuayk7IH0KCiAgYm9vbCAgaXNTdHJpZGUoaW50IHJh
bmssIGludCBzdHJpZGUpIGNvbnN0CiAgeyByZXR1cm4gaXRlcl8uaXNTdHJpZGUocmFuayxzdHJp
ZGUpOyB9CgogIHZvaWQgcHJldHR5UHJpbnQoc3RyaW5nJiBzdHIpIGNvbnN0CiAgewogICAgcHJl
dHR5UHJpbnRGb3JtYXQgZm9ybWF0KHRydWUgKTsgICAKICAgIGl0ZXJfLnByZXR0eVByaW50KHN0
ciwgZm9ybWF0KTsKICB9CgoKICB2b2lkIHByZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQ
cmludEZvcm1hdCYgZm9ybWF0KSBjb25zdAogIHsgaXRlcl8ucHJldHR5UHJpbnQoc3RyLCBmb3Jt
YXQpOyB9CgogIHRlbXBsYXRlPGNsYXNzIFRfc2hhcGU+CiAgYm9vbCAgc2hhcGVDaGVjayhjb25z
dCBUX3NoYXBlJiBzaGFwZSkKICB7IHJldHVybiBpdGVyXy5zaGFwZUNoZWNrKHNoYXBlKTsgfQoK
ICB0ZW1wbGF0ZTxpbnQgTl9yYW5rPgogIHZvaWQgbW92ZVRvKGNvbnN0IFRpbnlWZWN0b3I8aW50
LE5fcmFuaz4mIGkpCiAgewogICAgaXRlcl8ubW92ZVRvKGkpOwogIH0KCnByb3RlY3RlZDoKICBG
dW5jdG9yRXhwcigpIHsgfQoKICBjb25zdCBGdW5jdG9yJiBmXzsKICBFeHByIGl0ZXJfOwp9OwoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX0V4cHI+CmNsYXNzIF9iel9FeHByIHsKcHJpdmF0ZToKICBQX0V4
cHIgZXhwcjsKCnB1YmxpYzoKICB0eXBlZGVmIFBfRXhwciBUX0V4cHI7CiAgdHlwZWRlZiB0eXBl
bmFtZSAgVF9FeHByOjpUX251bXR5cGUgVF9udW10eXBlOwoKICBfYnpfRXhwcihjb25zdCBUX0V4
cHImIF9leHByKSA6IGV4cHIoX2V4cHIpIHsgfQoKICBUX251bXR5cGUgb3BlcmF0b3IoKShUX251
bXR5cGUgeCkgY29uc3QgewogICAgcmV0dXJuIGV4cHIoeCk7IH0KICAKICB0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxPgogIF9iel9FeHByPCBfYnpfVW5hcnlDbGFzc0V4cHJPcDI8IF9iel9FeHByPFBf
ZXhwcjE+LCBfYnpfRXhwciA+ID4KICBvcGVyYXRvcigpKF9iel9FeHByPCBQX2V4cHIxID4gZDEp
IGNvbnN0IHsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5Q2xhc3NFeHByT3AyPCBfYnpfRXhwcjxQX2V4
cHIxPiwgX2J6X0V4cHI+IFRfZXhwcjsKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cigqdGhpcywgZDEpKTsKICB9CgogIHRlbXBsYXRlPGNsYXNzIFBfRXhwcjI+CiAgX2J6X0FycmF5
RXhwcjwgRnVuY3RvckV4cHI8IFBfRXhwciwgdHlwZW5hbWUgYXNFeHByPFBfRXhwcjI+OjpUX2V4
cHIgPiA+CiAgb3BlcmF0b3IoKShjb25zdCBFVEJhc2U8UF9FeHByMj4mIGEpIGNvbnN0IHsKICAg
IHJldHVybiBfYnpfQXJyYXlFeHByPCAKICAgICAgICAgICAgIEZ1bmN0b3JFeHByPCBQX0V4cHIs
IHR5cGVuYW1lIGFzRXhwcjxQX0V4cHIyPjo6VF9leHByID4gPgogICAgICAoZXhwciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgUF9FeHByMiY+KGEpKTsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX251bXR5
cGU+Cl9iel9FeHByPCBfYnpfRXhwckNvbnN0YW50PFBfbnVtdHlwZT4gPiAKTWFrZUNvbnN0YW50
RnVuY3Rpb24oY29uc3QgUF9udW10eXBlJiB2YWx1ZSkgewogIHJldHVybiBfYnpfRXhwcjxfYnpf
RXhwckNvbnN0YW50PFBfbnVtdHlwZT4gPgogICAgKF9iel9FeHByQ29uc3RhbnQ8UF9udW10eXBl
Pih2YWx1ZSkpOwp9CiAgCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZT4KY2xhc3MgX2J6X0V4cHJJ
ZGVudGl0eSB7CnB1YmxpYzoKICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7CgogIF9iel9F
eHBySWRlbnRpdHkoKSB7IH0KICBUX251bXR5cGUgb3BlcmF0b3IoKShQX251bXR5cGUgeCkgY29u
c3QgewogICAgcmV0dXJuIHg7CiAgfQogIF9iel9FeHByMTxUX251bXR5cGU+IGRlcml2YXRpdmUo
KSBjb25zdCB7IHJldHVybiBfYnpfRXhwcjE8VF9udW10eXBlPigpOyB9Cn07Cgp0ZW1wbGF0ZTxj
bGFzcyBQX251bXR5cGU+CmNsYXNzIF9iel9FeHByPF9iel9FeHBySWRlbnRpdHk8UF9udW10eXBl
PiA+IHsKcHVibGljOgogIHR5cGVkZWYgX2J6X0V4cHJJZGVudGl0eTxQX251bXR5cGU+IFRfZXhw
cjsKICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7Cgpwcml2YXRlOgogIFRfZXhwciBleHBy
OwoKcHVibGljOgogIF9iel9FeHByKCkgOiBleHByKCkgeyB9CgogIFRfbnVtdHlwZSBvcGVyYXRv
cigpKFRfbnVtdHlwZSB4KSBjb25zdCB7CiAgICByZXR1cm4gZXhwcih4KTsgfQogIHRlbXBsYXRl
PCBjbGFzcyBQX2V4cHIgPgogIF9iel9FeHByPCBQX2V4cHIgPiBvcGVyYXRvcigpKF9iel9FeHBy
PCBQX2V4cHIgPiB4KSB7CiAgICByZXR1cm4geDsKICB9Cn07CgoKI2RlZmluZSBNYWtlVmFyVHlw
ZSh0eXBlbmFtZSwgcHJlZml4bmFtZSkgdHlwZWRlZiBfYnpfRXhwcjwgX2J6X0V4cHJJZGVudGl0
eTwgdHlwZW5hbWUgPiA+IHByZWZpeG5hbWUgIyMgVmFyCgp0eXBlZGVmIF9iel9FeHByPCBfYnpf
RXhwcklkZW50aXR5PCAgYm9vbCAgPiA+ICAgYm9vbFZhciA7CnR5cGVkZWYgX2J6X0V4cHI8IF9i
el9FeHBySWRlbnRpdHk8ICBjaGFyICA+ID4gICBjaGFyVmFyIDsKdHlwZWRlZiBfYnpfRXhwcjwg
X2J6X0V4cHJJZGVudGl0eTwgIGludCAgPiA+ICAgaW50VmFyIDsKdHlwZWRlZiBfYnpfRXhwcjwg
X2J6X0V4cHJJZGVudGl0eTwgIGZsb2F0ICA+ID4gICBmbG9hdFZhciA7CnR5cGVkZWYgX2J6X0V4
cHI8IF9iel9FeHBySWRlbnRpdHk8ICBkb3VibGUgID4gPiAgIGRvdWJsZVZhciA7CnR5cGVkZWYg
X2J6X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICBzaG9ydCAgPiA+ICAgc2hvcnRWYXIgOwp0eXBl
ZGVmIF9iel9FeHByPCBfYnpfRXhwcklkZW50aXR5PCAgbG9uZyAgPiA+ICAgbG9uZ1ZhciA7CnR5
cGVkZWYgX2J6X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICB1bnNpZ25lZCBjaGFyICA+ID4gICB1
Y2hhclZhciA7CnR5cGVkZWYgX2J6X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICBzaWduZWQgY2hh
ciAgPiA+ICAgc2NoYXJWYXIgOwp0eXBlZGVmIF9iel9FeHByPCBfYnpfRXhwcklkZW50aXR5PCAg
dW5zaWduZWQgc2hvcnQgID4gPiAgIHVzaG9ydFZhciA7CnR5cGVkZWYgX2J6X0V4cHI8IF9iel9F
eHBySWRlbnRpdHk8ICB1bnNpZ25lZCBsb25nICA+ID4gICB1bG9uZ1ZhciA7CnR5cGVkZWYgX2J6
X0V4cHI8IF9iel9FeHBySWRlbnRpdHk8ICB1bnNpZ25lZCBpbnQgID4gPiAgIHVpbnRWYXIgOwp0
eXBlZGVmIF9iel9FeHByPCBfYnpfRXhwcklkZW50aXR5PCAgbG9uZyBkb3VibGUgID4gPiAgIGxk
b3VibGVWYXIgOwoKI3VuZGVmIE1ha2VWYXJUeXBlCgp0ZW1wbGF0ZTwgY2xhc3MgUF9udW10eXBl
LCBjbGFzcyBQX29iamVjdCA+CmNsYXNzIF9iel9GdW5jdGlvbk9iamVjdCA6IHB1YmxpYyBPbmVP
cGVyYW5kQXBwbGljYXRpdmVUZW1wbGF0ZXNCYXNlIHsKcHJpdmF0ZToKICBjb25zdCBQX29iamVj
dCYgb2JqZWN0OwoKcHVibGljOgogIHR5cGVkZWYgUF9udW10eXBlIFRfbnVtdHlwZTsKICB0eXBl
ZGVmIFRfbnVtdHlwZSBUX3Byb21vdGU7CiAgdHlwZWRlZiBUX251bXR5cGUgVF9udW10eXBlMTsK
ICB0eXBlZGVmIFBfb2JqZWN0IFRfb2JqZWN0OwogIAogIF9iel9GdW5jdGlvbk9iamVjdChjb25z
dCBQX29iamVjdCYgX29iamVjdCkgOiBvYmplY3QoX29iamVjdCkgeyB9CgogIGlubGluZSBQX251
bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpIGNvbnN0IHsgcmV0dXJuIG9iamVjdCh4KTsgfQp9OwoK
dGVtcGxhdGU8IGNsYXNzIFBfbnVtdHlwZSwgY2xhc3MgUF9vYmplY3QgPgpjbGFzcyBfYnpfRnVu
Y3Rpb25PYmplY3RBcmIgOiBwdWJsaWMgT25lT3BlcmFuZEFwcGxpY2F0aXZlVGVtcGxhdGVzQmFz
ZSB7CnByaXZhdGU6CiAgY29uc3QgUF9vYmplY3QmIG9iamVjdDsKICBQX251bXR5cGUgKFBfb2Jq
ZWN0OjoqZnVuYykoUF9udW10eXBlKSBjb25zdDsKCnB1YmxpYzoKICB0eXBlZGVmIFBfbnVtdHlw
ZSBUX251bXR5cGU7CiAgdHlwZWRlZiBUX251bXR5cGUgVF9wcm9tb3RlOwogIHR5cGVkZWYgVF9u
dW10eXBlIFRfbnVtdHlwZTE7CiAgdHlwZWRlZiBQX29iamVjdCBUX29iamVjdDsKICB0eXBlZGVm
IFBfbnVtdHlwZSAoUF9vYmplY3Q6OipUX2Z1bmN0eXBlKShQX251bXR5cGUpIGNvbnN0OwogIAog
IF9iel9GdW5jdGlvbk9iamVjdEFyYihjb25zdCBQX29iamVjdCYgX29iamVjdCwgVF9mdW5jdHlw
ZSBfZnVuYykgCiAgICA6IG9iamVjdChfb2JqZWN0KSwgZnVuYyhfZnVuYykgeyB9CgogIGlubGlu
ZSBQX251bXR5cGUgYXBwbHkoUF9udW10eXBlIHgpIGNvbnN0IHsgcmV0dXJuIChvYmplY3QuKmZ1
bmMpKHgpOyB9Cn07Cgp0ZW1wbGF0ZTwgY2xhc3MgUF9udW10eXBlLCBjbGFzcyBQX29iamVjdCA+
CmNsYXNzIF9iel9GdW5jdGlvbk9iamVjdDIgOiBwdWJsaWMgVHdvT3BlcmFuZEFwcGxpY2F0aXZl
VGVtcGxhdGVzQmFzZSB7CnByaXZhdGU6CiAgY29uc3QgUF9vYmplY3QmIG9iamVjdDsKCnB1Ymxp
YzoKICB0eXBlZGVmIFBfbnVtdHlwZSBUX251bXR5cGU7CiAgdHlwZWRlZiBUX251bXR5cGUgVF9w
cm9tb3RlOwogIHR5cGVkZWYgVF9udW10eXBlIFRfbnVtdHlwZTE7CiAgdHlwZWRlZiBUX251bXR5
cGUgVF9udW10eXBlMjsKICAKICBfYnpfRnVuY3Rpb25PYmplY3QyKGNvbnN0IFBfb2JqZWN0JiBf
b2JqZWN0KSA6IG9iamVjdChfb2JqZWN0KSB7IH0KCiAgaW5saW5lIFBfbnVtdHlwZSBhcHBseShQ
X251bXR5cGUgeCwgCgkJCSBQX251bXR5cGUgeSkgY29uc3QgeyByZXR1cm4gb2JqZWN0KHgseSk7
IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFBfZXhwciwgY2xhc3MgUF91bmFyeU9wPgpjbGFzcyBfYnpf
VW5hcnlDbGFzc0V4cHJPcCB7CnByaXZhdGU6CiAgUF9leHByIGV4cHI7CiAgY29uc3QgUF91bmFy
eU9wJiBvcEZ1bmN0b3I7CgpwdWJsaWM6CiAgdHlwZWRlZiBQX2V4cHIgVF9leHByOwogIHR5cGVk
ZWYgdHlwZW5hbWUgIFRfZXhwcjo6VF9udW10eXBlIFRfbnVtdHlwZV9pbjsKICB0eXBlZGVmIFBf
dW5hcnlPcCAgICBUX3VuYXJ5T3A7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF91bmFyeU9wOjpUX251
bXR5cGUgVF9udW10eXBlOwogIAogIF9iel9VbmFyeUNsYXNzRXhwck9wKGNvbnN0IFRfdW5hcnlP
cCYgb3AsIGNvbnN0IFRfZXhwciYgYSkKICAgIDogb3BGdW5jdG9yKG9wKSwgZXhwcihhKSB7IH0K
CiAgVF9udW10eXBlIG9wZXJhdG9yKCkoVF9udW10eXBlX2luIHgpIGNvbnN0IHsKICAgIHJldHVy
biBvcEZ1bmN0b3IuYXBwbHkoZXhwcih4KSk7CiAgfQp9OwoKIAoKCgoKCgoKCgoKCgoKCgoKCgoK
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjIsIGNsYXNzIFBfYmluYXJ5T3A+
CmNsYXNzIF9iel9CaW5hcnlDbGFzc0V4cHJPcCB7CnByaXZhdGU6CiAgUF9leHByMSBleHByMTsK
ICBQX2V4cHIyIGV4cHIyOwogIGNvbnN0IFBfYmluYXJ5T3AmIG9wRnVuY3RvcjsKCnB1YmxpYzoK
ICB0eXBlZGVmIFBfZXhwcjEgVF9leHByMTsKICB0eXBlZGVmIFBfZXhwcjIgVF9leHByMjsKICB0
eXBlZGVmIHR5cGVuYW1lICBUX2V4cHIxOjpUX251bXR5cGUgVF9udW10eXBlX2luMTsKICB0eXBl
ZGVmIHR5cGVuYW1lICBUX2V4cHIyOjpUX251bXR5cGUgVF9udW10eXBlX2luMjsKICB0eXBlZGVm
IFBfYmluYXJ5T3AgICAgVF9iaW5hcnlPcDsKICB0eXBlZGVmIHR5cGVuYW1lICBUX2JpbmFyeU9w
OjpUX251bXR5cGUgVF9udW10eXBlOwogIAogIF9iel9CaW5hcnlDbGFzc0V4cHJPcChjb25zdCBU
X2JpbmFyeU9wJiBvcCwgCgkJCWNvbnN0IFRfZXhwcjEmIGEsIGNvbnN0IFRfZXhwcjImIGIpCiAg
ICA6IG9wRnVuY3RvcihvcCksIGV4cHIxKGEpLCBleHByMihiKSB7IH0KCiAgVF9udW10eXBlIG9w
ZXJhdG9yKCkoVF9udW10eXBlX2luMSB4LCBUX251bXR5cGVfaW4yIHkpIGNvbnN0IHsKICAgIHJl
dHVybiBvcEZ1bmN0b3IuYXBwbHkoZXhwcjEoeCksIGV4cHIyKHkpKTsKICB9Cn07Cgp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBjbGFzcyBQX2JpbmFyeU9wPgpjbGFzcyBf
YnpfQmluYXJ5Q2xhc3NFeHByT3AyIHsKcHJpdmF0ZToKICBQX2V4cHIxIGV4cHIxOwogIFBfZXhw
cjIgZXhwcjI7CiAgY29uc3QgUF9iaW5hcnlPcCYgb3BGdW5jdG9yOwoKcHVibGljOgogIHR5cGVk
ZWYgUF9leHByMSBUX2V4cHIxOwogIHR5cGVkZWYgUF9leHByMiBUX2V4cHIyOwogIHR5cGVkZWYg
dHlwZW5hbWUgIFRfZXhwcjE6OlRfbnVtdHlwZSBUX251bXR5cGVfaW4xOwogIHR5cGVkZWYgdHlw
ZW5hbWUgIFRfZXhwcjI6OlRfbnVtdHlwZSBUX251bXR5cGVfaW4yOwogIHR5cGVkZWYgUF9iaW5h
cnlPcCAgICBUX2JpbmFyeU9wOwogIHR5cGVkZWYgdHlwZW5hbWUgIFRfYmluYXJ5T3A6OlRfbnVt
dHlwZSBUX251bXR5cGU7CiAgCiAgX2J6X0JpbmFyeUNsYXNzRXhwck9wMihjb25zdCBUX2JpbmFy
eU9wJiBvcCwgCgkJCWNvbnN0IFRfZXhwcjEmIGEsIGNvbnN0IFRfZXhwcjImIGIpCiAgICA6IG9w
RnVuY3RvcihvcCksIGV4cHIxKGEpLCBleHByMihiKSB7IH0KCiAgVF9udW10eXBlIG9wZXJhdG9y
KCkoVF9udW10eXBlIHgpIGNvbnN0IHsKICAgIHJldHVybiBvcEZ1bmN0b3IoZXhwcjEoeCksIGV4
cHIyKHgpKTsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyLCBj
bGFzcyBQX2V4cHIzLCBjbGFzcyBQX3Rlcm5hcnlPcD4KY2xhc3MgX2J6X1Rlcm5hcnlDbGFzc0V4
cHJPcDIgewpwcml2YXRlOgogIFBfZXhwcjEgZXhwcjE7CiAgUF9leHByMiBleHByMjsKICBQX2V4
cHIzIGV4cHIzOwogIGNvbnN0IFBfdGVybmFyeU9wJiBvcEZ1bmN0b3I7CgpwdWJsaWM6CiAgdHlw
ZWRlZiBQX2V4cHIxIFRfZXhwcjE7CiAgdHlwZWRlZiBQX2V4cHIyIFRfZXhwcjI7CiAgdHlwZWRl
ZiBQX2V4cHIzIFRfZXhwcjM7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMTo6VF9udW10eXBl
IFRfbnVtdHlwZV9pbjE7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMjo6VF9udW10eXBlIFRf
bnVtdHlwZV9pbjI7CiAgdHlwZWRlZiB0eXBlbmFtZSAgVF9leHByMzo6VF9udW10eXBlIFRfbnVt
dHlwZV9pbjM7CiAgdHlwZWRlZiBQX3Rlcm5hcnlPcCAgICBUX3Rlcm5hcnlPcDsKICB0eXBlZGVm
IHR5cGVuYW1lICBUX3Rlcm5hcnlPcDo6VF9udW10eXBlIFRfbnVtdHlwZTsKICAKICBfYnpfVGVy
bmFyeUNsYXNzRXhwck9wMihjb25zdCBUX3Rlcm5hcnlPcCYgb3AsIAoJCQljb25zdCBUX2V4cHIx
JiBhLCBjb25zdCBUX2V4cHIyJiBiLCBjb25zdCBUX2V4cHIzJiBjKQogICAgOiBvcEZ1bmN0b3Io
b3ApLCBleHByMShhKSwgZXhwcjIoYiksIGV4cHIzKGMpIHsgfQoKICBUX251bXR5cGUgb3BlcmF0
b3IoKShUX251bXR5cGUgeCkgY29uc3QgewogICAgcmV0dXJuIG9wRnVuY3RvcihleHByMSh4KSwg
ZXhwcjIoeCksIGV4cHIzKHgpKTsKICB9Cn07Cgp0ZW1wbGF0ZTwgY2xhc3MgUF91bmFyeU9wID4K
Y2xhc3MgX2J6X0Z1bmN0aW9uT2JqZWN0RnVuY3RvcnMgewpwcml2YXRlOgogIFBfdW5hcnlPcCBv
cEZ1bmN0b3I7CnB1YmxpYzoKICB0eXBlZGVmIGRvdWJsZSBUX251bXR5cGU7CgogIF9iel9GdW5j
dGlvbk9iamVjdEZ1bmN0b3JzKGNvbnN0IFBfdW5hcnlPcCYgb3ApIAogICAgOiBvcEZ1bmN0b3Io
b3ApIHsgfQoKICBkb3VibGUgb3BlcmF0b3IoKShkb3VibGUgeCkgY29uc3QgeyByZXR1cm4gb3BG
dW5jdG9yLmFwcGx5KHgpOyB9CiAgdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KICBfYnpfRXhwcjxf
YnpfVW5hcnlDbGFzc0V4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgICBQX3VuYXJ5T3AgPiA+
CiAgb3BlcmF0b3IoKShfYnpfRXhwcjxQX2V4cHIxPiBkMSkgewogICAgdHlwZWRlZiBfYnpfVW5h
cnlDbGFzc0V4cHJPcDwgX2J6X0V4cHI8UF9leHByMT4gLAogICAgICBQX3VuYXJ5T3AgPiBUX2V4
cHI7CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIob3BGdW5jdG9yLGQxKSk7CiAg
fQoKICB0ZW1wbGF0ZTxjbGFzcyBQX0V4cHIyPgogIF9iel9BcnJheUV4cHI8IEZ1bmN0b3JFeHBy
PCBfYnpfRnVuY3Rpb25PYmplY3RGdW5jdG9yczxQX3VuYXJ5T3A+LCAKICAgIHR5cGVuYW1lIGFz
RXhwcjxQX0V4cHIyPjo6VF9leHByID4gPgogIG9wZXJhdG9yKCkoY29uc3QgRVRCYXNlPFBfRXhw
cjI+JiBhKSB7CiAgICByZXR1cm4gX2J6X0FycmF5RXhwcjwgRnVuY3RvckV4cHI8IF9iel9GdW5j
dGlvbk9iamVjdEZ1bmN0b3JzPFBfdW5hcnlPcD4sIAogICAgICB0eXBlbmFtZSBhc0V4cHI8UF9F
eHByMj46OlRfZXhwciA+ID4oKnRoaXMsIAoJCQkJCSAgIHN0YXRpY19jYXN0PGNvbnN0IFBfRXhw
cjImPihhKSk7CiAgfQoKICAgCiAgIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKICAKfTsKCiAgICAK
dGVtcGxhdGU8IGNsYXNzIFBfYmluYXJ5T3AgPgpjbGFzcyBfYnpfRnVuY3Rpb25PYmplY3RGdW5j
dG9yczIgewpwcml2YXRlOgogIGNvbnN0IFBfYmluYXJ5T3AmIG9wRnVuY3RvcjsKCnB1YmxpYzoK
ICBfYnpfRnVuY3Rpb25PYmplY3RGdW5jdG9yczIoY29uc3QgUF9iaW5hcnlPcCYgb3ApIAogICAg
OiBvcEZ1bmN0b3Iob3ApIHsgfQoKICB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBQX2V4
cHIyPgogIF9iel9FeHByPF9iel9CaW5hcnlDbGFzc0V4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwg
X2J6X0V4cHI8UF9leHByMj4sIAogICAgIFBfYmluYXJ5T3AgPiA+CiAgb3BlcmF0b3IoKShfYnpf
RXhwcjxQX2V4cHIxPiBkMSwgX2J6X0V4cHI8UF9leHByMj4gZDIpIHsKICAgIHR5cGVkZWYgX2J6
X0JpbmFyeUNsYXNzRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiAsIF9iel9FeHByPFBfZXhwcjI+
LCAKICAgICAgUF9iaW5hcnlPcCA+IFRfZXhwcjsKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihvcEZ1bmN0b3IsZDEsZDIpKTsKICB9Cn07CgogCiAKIAogCiAKIAogCiNkZWZpbmUg
RGVmaW5lRnVuY3Rpb25PYmplY3QodmFyaWFibGUsIGJhc2VvYmplY3QsIFBfbnVtdHlwZSkgYmxp
dHo6Ol9iel9GdW5jdGlvbk9iamVjdEZ1bmN0b3JzPCBibGl0ejo6X2J6X0Z1bmN0aW9uT2JqZWN0
PCBQX251bXR5cGUsIHR5cGVvZihiYXNlb2JqZWN0KSA+ID52YXJpYWJsZShiYXNlb2JqZWN0KQoK
CgoKI2RlZmluZSBEZWZpbmVGdW5jdGlvbk9iamVjdEFyYih2YXJpYWJsZSwgYmFzZW9iamVjdCwg
UF9udW10eXBlLCBmdW5jbmFtZSkgYmxpdHo6Ol9iel9GdW5jdGlvbk9iamVjdEZ1bmN0b3JzPCBi
bGl0ejo6X2J6X0Z1bmN0aW9uT2JqZWN0QXJiPCBQX251bXR5cGUsIHR5cGVvZihiYXNlb2JqZWN0
KSA+ID4gdmFyaWFibGUoYmFzZW9iamVjdCwgJmJsaXR6OjpfYnpfRnVuY3Rpb25PYmplY3RBcmI8
IFBfbnVtdHlwZSwgdHlwZW9mKGJhc2VvYmplY3QpID46OlRfb2JqZWN0OjpmdW5jbmFtZSkKCgoK
CgoKCiNkZWZpbmUgRGVmaW5lRnVuY3Rpb25PYmplY3QyKHZhcmlhYmxlLCBiYXNlb2JqZWN0LCBQ
X251bXR5cGUpIGJsaXR6OjpfYnpfRnVuY3Rpb25PYmplY3RGdW5jdG9yczI8IGJsaXR6OjpfYnpf
RnVuY3Rpb25PYmplY3QyPCBQX251bXR5cGUsIHR5cGVvZihiYXNlb2JqZWN0KSA+ID4gdmFyaWFi
bGUoYmFzZW9iamVjdCkKCgoKICAgICAgICAgCiAKIAogCiAKIAogCiNkZWZpbmUgU2V0dXBDbGFz
c0FzRnVuY3Rpb25PYmplY3QgdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4gYmxpdHo6Ol9iel9FeHBy
PGJsaXR6OjpfYnpfVW5hcnlDbGFzc0V4cHJPcDI8YmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+LCBU
X3RoaXNDbGFzcyA+ID4gb3BlcmF0b3IoKShibGl0ejo6X2J6X0V4cHI8UF9leHByMT4gZDEpIHsg
dHlwZWRlZiBibGl0ejo6X2J6X1VuYXJ5Q2xhc3NFeHByT3AyPCBibGl0ejo6X2J6X0V4cHI8UF9l
eHByMT4gLCBUX3RoaXNDbGFzcyA+IFRfZXhwcjsgcmV0dXJuIGJsaXR6OjpfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcigqdGhpcyxkMSkpOyB9IHRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+IGJsaXR6Ojpf
YnpfQXJyYXlFeHByPCBibGl0ejo6RnVuY3RvckV4cHI8IFRfdGhpc0NsYXNzLCB0eXBlbmFtZSBi
bGl0ejo6YXNFeHByPFBfZXhwcjI+OjpUX2V4cHI+ID4gb3BlcmF0b3IoKShjb25zdCBibGl0ejo6
RVRCYXNlPFBfZXhwcjI+JiBhKSBjb25zdCB7IHJldHVybiBibGl0ejo6X2J6X0FycmF5RXhwcjwg
YmxpdHo6OkZ1bmN0b3JFeHByPCBUX3RoaXNDbGFzcywgdHlwZW5hbWUgYmxpdHo6OmFzRXhwcjxQ
X2V4cHIyPjo6VF9leHByPiA+KCp0aGlzLCBzdGF0aWNfY2FzdDxjb25zdCBQX2V4cHIyJj4oYSkp
OyB9CiMgNTkyICIuLi9leHByVGVtcC9leHByVGVtcC5oIgoKdGVtcGxhdGU8Y2xhc3MgRiwgY2xh
c3MgUF9leHByMj4KYmxpdHo6Ol9iel9BcnJheUV4cHI8IGJsaXR6OjpGdW5jdG9yRXhwcjwgRiwK
ICB0eXBlbmFtZSBibGl0ejo6YXNFeHByPFBfZXhwcjI+OjpUX2V4cHI+ID4KYXBwbHlGdW5jdG9y
KGNvbnN0IEYmIGYsIGNvbnN0IGJsaXR6OjpFVEJhc2U8UF9leHByMj4mIGEpIHsKICByZXR1cm4g
YmxpdHo6Ol9iel9BcnJheUV4cHI8IGJsaXR6OjpGdW5jdG9yRXhwcjwgRiwKICAgIHR5cGVuYW1l
IGJsaXR6Ojphc0V4cHI8UF9leHByMj46OlRfZXhwcj4gPihmLAoJCQkJCSAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBQX2V4cHIyJj4oYSkpOwp9CgogCiAKIAogCiNkZWZpbmUgU2V0dXBDbGFzc0Fz
RnVuY3Rpb25PYmplY3QyIHRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+IGJs
aXR6OjpfYnpfRXhwcjxibGl0ejo6X2J6X0JpbmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9F
eHByPFBfZXhwcjE+LCBibGl0ejo6X2J6X0V4cHI8UF9leHByMj4sIFRfdGhpc0NsYXNzID4gPiBv
cGVyYXRvcigpKGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIxPiBkMSwgYmxpdHo6Ol9iel9FeHByPFBf
ZXhwcjI+IGQyKSB7IHR5cGVkZWYgYmxpdHo6Ol9iel9CaW5hcnlDbGFzc0V4cHJPcDI8IGJsaXR6
OjpfYnpfRXhwcjxQX2V4cHIxPiAsIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIyPiwgVF90aGlzQ2xh
c3MgPiBUX2V4cHI7IHJldHVybiBibGl0ejo6X2J6X0V4cHI8VF9leHByPihUX2V4cHIoKnRoaXMs
ZDEsZDIpKTsgfQojIDYxNyAiLi4vZXhwclRlbXAvZXhwclRlbXAuaCIKCiAKIAogCiAKI2RlZmlu
ZSBTZXR1cENsYXNzQXNGdW5jdGlvbk9iamVjdDMgdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xh
c3MgUF9leHByMiwgY2xhc3MgUF9leHByMz4gYmxpdHo6Ol9iel9FeHByPGJsaXR6OjpfYnpfVGVy
bmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+LCBibGl0ejo6X2J6X0V4
cHI8UF9leHByMj4sIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIzPiwgVF90aGlzQ2xhc3MgPiA+IG9w
ZXJhdG9yKCkoYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+IGQxLCBibGl0ejo6X2J6X0V4cHI8UF9l
eHByMj4gZDIsIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIzPiBkMykgeyB0eXBlZGVmIGJsaXR6Ojpf
YnpfVGVybmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+LCBibGl0ejo6
X2J6X0V4cHI8UF9leHByMj4sIGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIzPiwgVF90aGlzQ2xhc3Mg
PiBUX2V4cHI7IHJldHVybiBibGl0ejo6X2J6X0V4cHI8VF9leHByPihUX2V4cHIoKnRoaXMsZDEs
ZDIsZDMpKTsgfQojIDYzNiAiLi4vZXhwclRlbXAvZXhwclRlbXAuaCIKCnRlbXBsYXRlPGNsYXNz
IFQ+CiAgc3RydWN0IFRvRnVuY3Rpb25PYmplY3QgewogICAgdHlwZWRlZiBfYnpfRXhwcjwgX2J6
X0V4cHJDb25zdGFudDwgVCA+ID4gdHlwZTsKICB9OwoKdGVtcGxhdGU8Y2xhc3MgVD4KICBzdHJ1
Y3QgVG9GdW5jdGlvbk9iamVjdDwgX2J6X0V4cHI8VD4gPiB7CiAgICB0eXBlZGVmIF9iel9FeHBy
PCBUID4gdHlwZTsKICB9OwoKI2RlZmluZSBEZWZpbmVGdW5jdGlvbih2YXJOYW1lLCBGdW5jdGlv
bkV4cHIpIFRvRnVuY3Rpb25PYmplY3Q8dHlwZW9mKEZ1bmN0aW9uRXhwcik+Ojp0eXBlICh2YXJO
YW1lKShGdW5jdGlvbkV4cHIpCgoKdGVtcGxhdGU8Y2xhc3MgRnVuY3RvciwgY2xhc3MgUF9udW10
eXBlLCBpbnQgTl9yYW5rPgogIGlubGluZQogIHZvaWQKICBGdW5jdGlvbk9iamVjdE9mT3Zlcndy
aXRlKCBjb25zdCBGdW5jdG9yJiBmLCBBcnJheTxQX251bXR5cGUsIE5fcmFuaz4mIGEpIHsKICAg
IGZvcihBcnJheTxQX251bXR5cGUsIE5fcmFuaz46Oml0ZXJhdG9yIGkgPSBhLmJlZ2luKCk7Cglp
ICE9IGEuZW5kKCk7ICsraSkKICAgICAgKmkgPSBmKCppKTsKfQoKIAoKCgoKCgoKCiAKIAogCnRl
bXBsYXRlPGNsYXNzIEZ1bmN0b3IsIGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KICBpbmxp
bmUKICBBcnJheTwgUF9udW10eXBlLCBOX3JhbmsgPgogIEZ1bmN0aW9uT2JqZWN0T2YoIGNvbnN0
IEZ1bmN0b3ImIGYsIEFycmF5PCBQX251bXR5cGUsIE5fcmFuayA+IGEpIHsKICAgIGEubWFrZVVu
aXF1ZSgpOwogICAgRnVuY3Rpb25PYmplY3RPZk92ZXJ3cml0ZShmLCBhKTsKICAgIHJldHVybiBh
Owp9CiAgICAKdGVtcGxhdGU8Y2xhc3MgRnVuY3RvciwgY2xhc3MgRXhwcj4KaW5saW5lIHR5cGVu
YW1lICBGdW5jdG9yOjpUX251bXR5cGUKYXBwbHlGdW5jdG9yKGNvbnN0IEZ1bmN0b3ImIEYsIGNv
bnN0IEV4cHImIFUpIHsKICByZXR1cm4gKCpGKSgqVSk7Cn0KCiMgMSAiLi4vZXhwclRlbXAvZXhw
clRlbXBPcHMuaCIgMQogCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6X0V4
cHI8UF9leHByMj4sCl9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHIx
PiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9iel9BZGQ8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAg
ICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVy
YXRvcisoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYg
X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAg
X2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9BZGQ8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGZsb2F0ID4gPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9l
eHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9BZGQ8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0
PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91
YmxlPiwKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91Ymxl
ID4gPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAg
ICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IrKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0FkZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IrKF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAsIAogICAgICBfYnpfQWRkPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4
PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHBy
Q29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfQWRkPGlu
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcisoaW50IGQxLCAK
ICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxf
YnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9BZGQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0FkZDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcisoZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQWRkPGZsb2F0LCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0Fk
ZDxkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IrKGRv
dWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4sIAogICAgICBfYnpfQWRkPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9BZGQ8bG9uZyBkb3Vi
bGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IrKGxvbmcgZG91
YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0Jp
bkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0FkZDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9i
el9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHBy
T3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LAogICAgICBfYnpfQWRkPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcisoY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9BZGQ8Y29t
cGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICBy
ZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQx
PiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xh
c3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhw
cjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvci0o
X2J6X0V4cHI8UF9leHByMT4gZDEsIAoJICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICBfYnpfRXhwcjxQX2V4cHIy
PiwgCiAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yLShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAg
ICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpf
RXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PihkMikp
KTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4
cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAog
ICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4g
PiA+Cm9wZXJhdG9yLShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
U3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVy
YXRvci0oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9TdWJ0cmFjdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6
X1N1YnRyYWN0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZSA+ID4g
PgpvcGVyYXRvci0oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X1N1YnRyYWN0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3ItKF9iel9F
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMj4gPiAsIAogICAgICBfYnpfU3VidHJhY3Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikp
KTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAg
ICAgIF9iel9TdWJ0cmFjdDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3ItKGludCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfU3VidHJhY3Q8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6
X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
UF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxm
bG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGZsb2F0
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShmbG9hdCBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9TdWJ0cmFjdDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8
ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TdWJ0cmFjdDxkb3VibGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3ItKGRvdWJsZSBkMSwgCiAgICAgIF9i
el9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJD
b25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU3Vi
dHJhY3Q8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1N1YnRyYWN0PGxvbmcgZG91YmxlLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yLShsb25nIGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9TdWJ0cmFjdDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9F
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0
ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
LAogICAgICBfYnpfU3VidHJhY3Q8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlID4gPiA+Cm9wZXJhdG9yLShjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxj
b21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1N1YnRy
YWN0PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhw
cjxQX2V4cHIxPiwgX2J6X0V4cHI8UF9leHByMj4sCl9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+CiA+ID4Kb3Bl
cmF0b3IqKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsK
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciooX2J6X0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9NdWx0aXBs
eTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGlu
dD4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZs
b2F0PiwKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBm
bG9hdCA+ID4gPgpvcGVyYXRvciooX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBk
MikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAg
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8
VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAg
ICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBkb3VibGUgPiA+
ID4Kb3BlcmF0b3IqKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfTXVsdGlwbHk8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAg
ICAgIF9iel9NdWx0aXBseTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3Vi
bGUgPiA+ID4Kb3BlcmF0b3IqKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3Vi
bGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X011bHRpcGx5PCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAg
cmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFu
dDxsb25nIGRvdWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNz
IFQyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9NdWx0aXBseTwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9y
KihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X011bHRpcGx5PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAoZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LAogICAgICBfYnpfTXVsdGlwbHk8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yKihpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9i
el9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X011bHRpcGx5PGludCwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9l
eHByKF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9NdWx0aXBs
eTxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciooZmxv
YXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
IAogICAgICBfYnpfTXVsdGlwbHk8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfTXVsdGlwbHk8ZG91YmxlLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yKihkb3VibGUgZDEsIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X011bHRpcGx5PGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8
ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9NdWx0aXBseTxsb25nIGRvdWJs
ZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcioobG9uZyBkb3Vi
bGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfTXVsdGlwbHk8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAK
dGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X011bHRpcGx5PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciooY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9i
el9NdWx0aXBseTxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBQX2V4cHIxLCBjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDwg
X2J6X0V4cHI8UF9leHByMT4sIF9iel9FeHByPFBfZXhwcjI+LApfYnpfRGl2aWRlPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4g
PgpvcGVyYXRvci8oX2J6X0V4cHI8UF9leHByMT4gZDEsIAoJICBfYnpfRXhwcjxQX2V4cHIyPiBk
MikKewogIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICBfYnpf
RXhwcjxQX2V4cHIyPiwgCiAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3IvKF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRGl2aWRl
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50
PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+LAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9h
dCA+ID4gPgpvcGVyYXRvci8oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRGl2aWRlPCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBmbG9hdD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDIpKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sCiAgICAgIF9i
el9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVy
YXRvci8oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRl
PGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9E
aXZpZGU8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yLyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9EaXZpZGU8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91Ymxl
PihkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxjb21wbGV4PFQyPiA+ICwKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yLyhfYnpfRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLCAKICAgICAgX2J6X0RpdmlkZTwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29t
cGxleDxUMj4gPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gKGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpf
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0Rp
dmlkZTxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGlu
dCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAog
ICAgICBfYnpfRGl2aWRlPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8
aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9EaXZpZGU8ZmxvYXQsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGZsb2F0IGQxLCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTxmbG9h
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4sCiAgICAgIF9iel9EaXZpZGU8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yLyhkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0RpdmlkZTxkb3VibGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDEpLCAKICAgICAgZDIpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxf
YnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfRGl2aWRlPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
ID4gPiA+Cm9wZXJhdG9yLyhsb25nIGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9EaXZpZGU8bG9uZyBk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihk
MSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxU
MT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0RpdmlkZTxjb21wbGV4
PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IvKGNvbXBs
ZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfRGl2aWRlPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsK
fQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6X0V4cHI8UF9leHByMj4s
Cl9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIy
OjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yJShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCgkgIF9i
el9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBf
ZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9Nb2Q8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvciUoX2J6X0V4
cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAg
IF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxmbG9hdD4sCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGZsb2F0ID4gPiA+Cm9wZXJhdG9yJShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9Nb2Q8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoK
IAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxf
YnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAg
X2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJh
dG9yJShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xh
c3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHBy
MT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X01vZDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3Il
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X01vZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLAogICAgICBfYnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3IlKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBf
YnpfTW9kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50
PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfTW9kPGludCwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciUoaW50IGQxLCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0
YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Nb2Q8aW50LCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7
Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHBy
T3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAg
ICAgX2J6X01vZDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvciUoZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfTW9kPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4
cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQ
X2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X01vZDxkb3VibGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGRvdWJsZSBkMSwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfTW9kPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZG91Ymxl
PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Nb2Q8bG9uZyBkb3VibGUsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3IlKGxvbmcgZG91YmxlIGQxLCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
ICAgX2J6X01vZDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBU
MSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJD
b25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBf
YnpfTW9kPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvciUoY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewog
ICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAs
IAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Nb2Q8Y29tcGxleDxUMT4gLCB0
eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAog
ICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhw
cjxQX2V4cHIyPiwKX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yXihfYnpfRXhwcjxQ
X2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9i
el9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxpbnQ+LAogICAgICBfYnpfQml0d2lzZVhPUjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yXihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGlu
dCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4g
PgpvcGVyYXRvcl4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAg
dHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfQml0d2lzZVhPUjwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpf
Qml0d2lzZVhPUjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yXihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAg
IF9iel9CaXR3aXNlWE9SPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJs
ZSA+ID4gPgpvcGVyYXRvcl4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJs
ZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfQml0d2lzZVhPUjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfQml0d2lzZVhP
UjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJh
dG9yXihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0JpdHdpc2VYT1I8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4
PFQyPiA+IChkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9F
eHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRf
bnVtdHlwZSA+ID4gPgpvcGVyYXRvcl4oaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPGludCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9CaXR3aXNlWE9SPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9w
ZXJhdG9yXihmbG9hdCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlWE9SPGZsb2F0LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNv
bnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdp
c2VYT1I8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9y
Xihkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25z
dGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0Jp
dHdpc2VYT1I8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3JeKGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsK
ICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8bG9uZyBkb3Vi
bGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSks
IAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4g
PiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VYT1I8Y29tcGxl
eDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yXihjb21w
bGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9F
eHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VYT1I8Y29tcGxleDxUMT4gLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBk
MikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4
cHIyPiwKX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yX19PcGVyYXRvclN5bWJvbF9f
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHBy
Mj4sIAogICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX18oX2J6
X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4
cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9CaXR3aXNlQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX18o
X2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9h
dD4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfQml0d2lzZUFuZDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yX19PcGVy
YXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAg
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfQml0d2lzZUFuZDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwK
ICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcg
ZG91YmxlID4gPiA+Cm9wZXJhdG9yX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxf
YnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAK
ICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcg
ZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEs
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+
ICwKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfXyhfYnpfRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+
ID4gLCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoK
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9i
el9CaXR3aXNlQW5kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcl9fT3BlcmF0b3JTeW1ib2xfXyhpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VBbmQ8aW50LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X0JpdHdpc2VBbmQ8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3Bl
cmF0b3JfX09wZXJhdG9yU3ltYm9sX18oZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIy
PiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxmbG9hdCwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9F
eHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQy
KSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9CaXR3aXNlQW5kPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfXyhkb3VibGUgZDEsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdp
c2VBbmQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VBbmQ8bG9uZyBkb3VibGUsIHR5
cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9s
X18obG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfQml0d2lzZUFuZDxsb25nIGRvdWJsZSwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZUFuZDxjb21wbGV4PFQxPiAs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3lt
Ym9sX18oY29tcGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAg
dHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlQW5kPGNvbXBsZXg8VDE+
ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEp
LCAKICAgICAgZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6
X0V4cHI8UF9leHByMj4sCl9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yfChfYnpfRXhw
cjxQX2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
IF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGludD4sCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcnwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBp
bnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAg
ICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0ID4gPiA+
Cm9wZXJhdG9yfChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9CaXR3aXNlT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhw
cjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0Jp
dHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJh
dG9yfChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6
X0JpdHdpc2VPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+
ID4Kb3BlcmF0b3J8KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgbG9uZyBkb3VibGUgZDIp
CnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0JpdHdpc2VPcjwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiAgPiA+ID4Kb3BlcmF0b3J8KF9i
el9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYg
X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8
Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfQml0d2lzZU9yPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAo
ZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
LAogICAgICBfYnpfQml0d2lzZU9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+
ID4gPgpvcGVyYXRvcnwoaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAg
IHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9CaXR3aXNlT3I8aW50LCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25z
dGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VP
cjxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcnwoZmxv
YXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
IAogICAgICBfYnpfQml0d2lzZU9yPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBl
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJD
b25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4
cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJs
ZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0JpdHdpc2VPcjxkb3VibGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfQml0d2lzZU9yPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9CaXR3aXNlT3I8bG9uZyBk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8KGxvbmcg
ZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0JpdHdpc2VPcjxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0K
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9F
eHByPFBfZXhwcjI+LAogICAgICBfYnpfQml0d2lzZU9yPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUg
IFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcnwoY29tcGxleDxUMT4gZDEsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAg
ICAgIF9iel9CaXR3aXNlT3I8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X1NoaWZ0TGVm
dDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+CiA+ID4Kb3BlcmF0b3I8PChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCgkgIF9iel9FeHBy
PFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlm
dExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw8
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAg
IF9iel9FeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAg
IF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjw8KF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6
X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHBy
Q29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfU2hpZnRMZWZ0PCB0eXBlbmFtZSAgUF9leHBy
MTo6VF9udW10eXBlLCBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PChfYnpfRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X1No
aWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNv
bnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PChfYnpfRXhwcjxQ
X2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGxvbmcgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4
cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmlu
RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4
PFQyPiA+ICwKICAgICAgX2J6X1NoaWZ0TGVmdDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlw
ZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPDwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAog
ICAgICBjb21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAg
IF9iel9TaGlmdExlZnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+
ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25z
dGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8
aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPDwoaW50IGQx
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAg
IF9iel9TaGlmdExlZnQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxp
bnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5l
Cl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBf
YnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxmbG9hdCwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw8KGZsb2F0IGQxLCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0
YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1NoaWZ0TGVm
dDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sCiAgICAgIF9iel9TaGlmdExlZnQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPDwoZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdExlZnQ8ZG91
YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0TGVmdDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBf
ZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw8KGxvbmcgZG91YmxlIGQxLCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhw
ckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAg
X2J6X1NoaWZ0TGVmdDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfU2hpZnRMZWZ0PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvcjw8KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfU2hpZnRMZWZ0
PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxl
eDxUMT4gPiAoZDEpLCAKICAgICAgZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQ
X2V4cHIxPiwgX2J6X0V4cHI8UF9leHByMj4sCl9iel9TaGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpvcGVy
YXRvcj4+KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsK
ICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQgPiA+ID4Kb3BlcmF0b3I+PihfYnpfRXhwcjxQX2V4
cHIxPiBkMSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X1No
aWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7Cgog
ICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxmbG9hdD4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcj4+KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAg
ICAgZmxvYXQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIx
PiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAgICAgX2J6X1NoaWZ0UmlnaHQ8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZs
b2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8
X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8
ZG91YmxlPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcj4+KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfU2hpZnRSaWdodDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9yPj4oX2J6X0V4cHI8UF9leHByMT4g
ZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAog
ICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBk
b3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0
ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4g
LAogICAgICBfYnpfU2hpZnRSaWdodDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29t
cGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPj4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBj
b21wbGV4PFQyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhw
cjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwgCiAgICAgIF9iel9T
aGlmdFJpZ2h0PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBjb21wbGV4PFQyPiA+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8
aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfU2hpZnRSaWdodDxpbnQs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+PihpbnQgZDEsIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X1NoaWZ0UmlnaHQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxpbnQ+
KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9i
el9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8ZmxvYXQsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+PihmbG9hdCBkMSwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFu
dDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0
PGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8
X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X1NoaWZ0UmlnaHQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj4oZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9TaGlmdFJpZ2h0PGRv
dWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPihkMSksIAog
ICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4sCiAgICAgIF9iel9TaGlmdFJpZ2h0PGxvbmcgZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPj4obG9uZyBkb3VibGUgZDEsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfU2hpZnRSaWdodDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxj
bGFzcyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfU2hpZnRSaWdodDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGUgPiA+ID4Kb3BlcmF0b3I+Pihjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxj
b21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X1NoaWZ0
UmlnaHQ8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhw
cjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxj
b21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9F
eHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9w
ZXJhdG9yPihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7
CiAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHBy
PFBfZXhwcjI+LCAKICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBl
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4gPiA+Cm9wZXJhdG9yPihfYnpfRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGludCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBf
ZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0dyZWF0ZXI8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9h
dD4sCiAgICAgIF9iel9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9h
dCA+ID4gPgpvcGVyYXRvcj4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBf
YnpfR3JlYXRlcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yPihfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGRvdWJsZSBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+LCAKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9l
eHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9i
el9HcmVhdGVyPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZSA+ID4g
PgpvcGVyYXRvcj4oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBk
b3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfR3JlYXRlcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9yPihfYnpfRXhw
cjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDI+ID4gLCAKICAgICAgX2J6X0dyZWF0ZXI8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsK
fQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHBy
T3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAg
IF9iel9HcmVhdGVyPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVy
YXRvcj4oaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYg
X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQX2V4
cHIyPiwgCiAgICAgIF9iel9HcmVhdGVyPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVyPGZsb2F0LCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPihmbG9hdCBkMSwgCiAgICAg
IF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9H
cmVhdGVyPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPihkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8
ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXI8ZG91
YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAg
ICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXI8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4
cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3I+KGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6
X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X0dyZWF0ZXI8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9l
eHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50
PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEs
IGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29u
c3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6
X0dyZWF0ZXI8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+
Cm9wZXJhdG9yPihjb21wbGV4PFQxPiBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+
ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXI8Y29tcGxleDxU
MT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4g
X2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChk
MSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9l
eHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBf
YnpfRXhwcjxQX2V4cHIyPiwKX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yPChfYnpfRXhwcjxQ
X2V4cHIxPiBkMSwgCgkgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgIF9i
el9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxp
bnQ+LAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgaW50ID4g
PiA+Cm9wZXJhdG9yPChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGludCBkMikKewogICAg
dHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9MZXNzPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCBmbG9hdCA+ID4gPgpvcGVyYXRvcjwoX2J6X0V4cHI8UF9l
eHByMT4gZDEsIAogICAgICBmbG9hdCBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBf
YnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTGVzczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yPChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAg
IGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0xlc3M8IHR5cGVu
YW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+
KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25n
IGRvdWJsZT4sCiAgICAgIF9iel9MZXNzPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBs
b25nIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBs
b25nIGRvdWJsZSBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhw
cjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTGVz
czwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBj
bGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTGVzczwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgY29tcGxleDxUMj4gID4gPiA+Cm9wZXJhdG9y
PChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0xlc3M8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChk
MikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9MZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpv
cGVyYXRvcjwoaW50IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwgCiAgICAgIF9iel9MZXNzPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHBy
Q29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzPGZsb2F0LCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChmbG9hdCBkMSwgCiAgICAgIF9i
el9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJD
b25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9MZXNz
PGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAK
ICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8
X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0xlc3M8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yPChkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBk
MikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8ZG91YmxlLCB0eXBlbmFt
ZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9l
eHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwK
ICAgICAgX2J6X0xlc3M8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUg
PiA+ID4Kb3BlcmF0b3I8KGxvbmcgZG91YmxlIGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91
YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8bG9uZyBkb3Vi
bGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBf
YnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSks
IAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4g
PiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3M8Y29tcGxleDxUMT4g
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPChjb21wbGV4PFQx
PiBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0xlc3M8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0dy
ZWF0ZXJPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQxLCAK
CSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X0dyZWF0ZXJPckVx
dWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9u
dW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQx
LCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
QmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+
LAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGludCA+ID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQy
KQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBf
YnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAg
IF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQg
PiA+ID4Kb3BlcmF0b3I+PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhw
cjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAog
ICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRv
dWJsZSA+ID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3Vi
bGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxs
b25nIGRvdWJsZT4sCiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I+PShfYnpfRXhwcjxQX2V4cHIx
PiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwg
CiAgICAgIF9iel9HcmVhdGVyT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
bG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8
VDI+ID4gLAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcj49KF9iel9FeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsIAog
ICAgICBfYnpfR3JlYXRlck9yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9H
cmVhdGVyT3JFcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3Bl
cmF0b3I+PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9HcmVhdGVyT3JF
cXVhbDxmbG9hdCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj49
KGZsb2F0IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X0dyZWF0ZXJPckVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
X2J6X0V4cHJDb25zdGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0
YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dyZWF0ZXJP
ckVxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRv
cj49KGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8
UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAg
X2J6X0dyZWF0ZXJPckVxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10
eXBlID4gPiA+Cm9wZXJhdG9yPj0obG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4
cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9u
ZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9y
RXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHBy
OwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxv
bmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0dy
ZWF0ZXJPckVxdWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+
ID4gPgpvcGVyYXRvcj49KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4g
ZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8
VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfR3JlYXRlck9yRXF1
YWw8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsK
CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21w
bGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
MSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHBy
PFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpv
cGVyYXRvcjw9KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIp
CnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4
cHI8UF9leHByMj4sIAogICAgX2J6X0xlc3NPckVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0
dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcjw9KF9iel9FeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4sIAogICAgICBf
YnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I8PShfYnpfRXhwcjxQX2V4cHIxPiBk
MSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9MZXNz
T3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29u
c3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpf
YnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvcjw9KF9iel9FeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfTGVz
c09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJD
b25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3I8PShfYnpfRXhw
cjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPiwgCiAgICAgIF9iel9MZXNzT3JFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVt
dHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9
CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGNv
bXBsZXg8VDI+ID4gLAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcjw9KF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxf
YnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAs
IAogICAgICBfYnpfTGVzc09yRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9M
ZXNzT3JFcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0
b3I8PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhw
cjI+LCAKICAgICAgX2J6X0xlc3NPckVxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9F
eHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9MZXNzT3JFcXVhbDxmbG9h
dCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGZsb2F0IGQx
LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
ICAgX2J6X0xlc3NPckVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxmbG9hdD4oZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIy
PgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4s
IAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGRvdWJsZSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTGVzc09yRXF1YWw8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGxv
bmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPD0o
bG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRl
ZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6
X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8bG9uZyBkb3VibGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBk
MikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpf
RXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xlc3NPckVxdWFsPGNvbXBsZXg8VDE+ICwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcjw9KGNvbXBsZXg8VDE+
IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4
cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4sIAogICAgICBfYnpfTGVzc09yRXF1YWw8Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9l
eHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9F
eHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwK
X2J6X0VxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHBy
Mjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvcj09KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKCSAg
X2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8
UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X0VxdWFsPCB0eXBlbmFt
ZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiAKPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCBkMikpOwp9Cgog
CnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+LAogICAgICBfYnpf
RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludCA+ID4gPgpvcGVyYXRvcj09
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7CiAgICB0eXBlZGVmIF9iel9C
aW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4s
IAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGludD4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+Cmlu
bGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9FcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3I9PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwg
CiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9l
eHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxk
b3VibGU+LAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRv
dWJsZSA+ID4gPgpvcGVyYXRvcj09KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91Ymxl
IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQ
X2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJs
ZT4sCiAgICAgIF9iel9FcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBk
b3VibGUgPiA+ID4Kb3BlcmF0b3I9PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcg
ZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
IAogICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9FcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+KGQyKSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFz
cyBUMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfRXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcj09
KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVk
ZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3Rh
bnQ8Y29tcGxleDxUMj4gPiAsIAogICAgICBfYnpfRXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpU
X251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChk
MikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4s
CiAgICAgIF9iel9FcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4K
b3BlcmF0b3I9PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlw
ZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+LCAKICAgICAgX2J6X0VxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9F
eHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Zmxv
YXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9FcXVhbDxmbG9hdCwgdHlw
ZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGZsb2F0IGQxLCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6
X0VxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcj09KGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBf
ZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxk
b3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1YWw8ZG91Ymxl
LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwgCiAgICAg
IGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9C
aW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhwcjxQ
X2V4cHIyPiwKICAgICAgX2J6X0VxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yPT0obG9uZyBkb3VibGUgZDEsIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1
YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcg
ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNz
IFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8
Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0VxdWFs
PGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRv
cj09KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5
cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gLCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfRXF1YWw8Y29tcGxleDxUMT4gLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8
VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+IChkMSksIAogICAg
ICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwgY2xhc3MgUF9leHByMj4KaW5s
aW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBfZXhwcjE+LCBfYnpfRXhwcjxQ
X2V4cHIyPiwKX2J6X05vdEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBl
bmFtZSAgUF9leHByMjo6VF9udW10eXBlID4KID4gPgpvcGVyYXRvciE9KF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X05v
dEVxdWFsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxp
bnQ+LAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGlu
dCA+ID4gPgpvcGVyYXRvciE9KF9iel9FeHByPFBfZXhwcjE+IGQxLCAKICAgICAgaW50IGQyKQp7
CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpf
RXhwckNvbnN0YW50PGludD4sIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGludD4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxpbnQ+KGQyKSkpOwp9CgogCnRlbXBs
YXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHBy
PFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxmbG9hdD4sCiAgICAgIF9iel9Ob3RF
cXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3Ih
PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZs
b2F0PiwgCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwg
ZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwg
CiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAgICBfYnpfTm90RXF1YWw8IHR5
cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJsZSA+ID4gPgpvcGVyYXRvciE9KF9iel9F
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4s
IAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGRvdWJs
ZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAg
ICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAK
ICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9Ob3RFcXVhbDwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgbG9uZyBkb3VibGUgPiA+ID4Kb3BlcmF0b3Ih
PShfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGxvbmcgZG91YmxlIGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGxvbmcgZG91YmxlPiwgCiAgICAgIF9iel9Ob3RFcXVhbDwgdHlwZW5hbWUgIFBfZXhwcjE6
OlRfbnVtdHlwZSwgbG9uZyBkb3VibGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+KGQy
KSkpOwp9CgoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxLCBjbGFzcyBUMj4KaW5saW5lCl9iel9F
eHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvciE9KF9iel9FeHByPFBfZXhw
cjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4g
PiAsIAogICAgICBfYnpfTm90RXF1YWw8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNv
bXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+IChkMikpKTsKfQoKCiAK
dGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9O
b3RFcXVhbDxpbnQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3Ih
PShpbnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpf
QmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+
LCAKICAgICAgX2J6X05vdEVxdWFsPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAK
ICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Ob3RFcXVhbDxmbG9hdCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciE9KGZsb2F0IGQxLCAKICAgICAg
X2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhw
ckNvbnN0YW50PGZsb2F0PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAgICAgX2J6X05v
dEVxdWFsPGZsb2F0LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxmbG9hdD4o
ZDEpLCAKICAgICAgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPgppbmxpbmUKX2J6
X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVxdWFsPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhw
cjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvciE9KGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHBy
PFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFu
dDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8
ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1
cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQxKSwg
CiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X05vdEVxdWFsPGxvbmcgZG91YmxlLCB0eXBlbmFtZSAg
UF9leHByMjo6VF9udW10eXBlID4gPiA+Cm9wZXJhdG9yIT0obG9uZyBkb3VibGUgZDEsIAogICAg
ICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTm90RXF1YWw8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNv
bnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xh
c3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAg
ICAgX2J6X05vdEVxdWFsPGNvbXBsZXg8VDE+ICwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlw
ZSA+ID4gPgpvcGVyYXRvciE9KGNvbXBsZXg8VDE+IGQxLCAKICAgICAgX2J6X0V4cHI8UF9leHBy
Mj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpfRXhwckNvbnN0YW50PGNvbXBs
ZXg8VDE+ID4gLCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTm90RXF1YWw8
Y29tcGxleDxUMT4gLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAg
ICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25zdGFudDxjb21wbGV4
PFQxPiA+IChkMSksIAogICAgICBkMikpOwp9CgoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMSwg
Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8IF9iel9FeHByPFBf
ZXhwcjE+LCBfYnpfRXhwcjxQX2V4cHIyPiwKX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJh
dG9yX19PcGVyYXRvclN5bWJvbF9fX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+
IGQxLCAKCSAgX2J6X0V4cHI8UF9leHByMj4gZDIpCnsKICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHI8UF9leHByMT4sIAogICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgX2J6X0xvZ2lj
YWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVuYW1lICBQX2V4cHIyOjpU
X251bXR5cGU+IAo+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9i
el9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGlu
dD4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBp
bnQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19fX09wZXJhdG9yU3ltYm9sX18oX2J6
X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBpbnQgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4
cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAg
ICAgIF9iel9Mb2dpY2FsQW5kPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBpbnQ+ID4g
VF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8aW50PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9i
el9FeHByQ29uc3RhbnQ8ZmxvYXQ+LAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19f
X09wZXJhdG9yU3ltYm9sX18oX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBmbG9hdCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQ+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxU
X2V4cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQyKSkpOwp9
CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9w
PF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+LAogICAg
ICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4g
PiA+Cm9wZXJhdG9yX19PcGVyYXRvclN5bWJvbF9fX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHBy
PFBfZXhwcjE+IGQxLCAKICAgICAgZG91YmxlIGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4sIAog
ICAgICBfYnpfTG9naWNhbEFuZDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91Ymxl
PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAogICAg
ICBfYnpfRXhwckNvbnN0YW50PGRvdWJsZT4oZDIpKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9l
eHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9wZXJhdG9y
X19PcGVyYXRvclN5bWJvbF9fX19PcGVyYXRvclN5bWJvbF9fKF9iel9FeHByPFBfZXhwcjE+IGQx
LCAKICAgICAgbG9uZyBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6X0JpbkV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91
YmxlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEsIAog
ICAgICBfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMikpKTsKfQoKCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMSwgY2xhc3MgVDI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQyPiA+ICwK
ICAgICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBs
ZXg8VDI+ICA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfX19fT3BlcmF0b3JTeW1ib2xf
XyhfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGNvbXBsZXg8VDI+IGQyKQp7CiAgICB0eXBl
ZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0
YW50PGNvbXBsZXg8VDI+ID4gLCAKICAgICAgX2J6X0xvZ2ljYWxBbmQ8IHR5cGVuYW1lICBQX2V4
cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ID4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9F
eHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxjb21wbGV4PFQy
PiA+IChkMikpKTsKfQoKCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHBy
PF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4cHI8UF9l
eHByMj4sCiAgICAgIF9iel9Mb2dpY2FsQW5kPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVt
dHlwZSA+ID4gPgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfX19fT3BlcmF0b3JTeW1ib2xfXyhp
bnQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X0xvZ2ljYWxBbmQ8aW50LCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxpbnQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4K
aW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAog
ICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8ZmxvYXQsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19f
X09wZXJhdG9yU3ltYm9sX18oZmxvYXQgZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+LCAKICAg
ICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbEFuZDxmbG9hdCwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8ZmxvYXQ+KGQxKSwgCiAgICAgIGQyKSk7Cn0K
CiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAg
IF9iel9Mb2dpY2FsQW5kPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcl9fT3BlcmF0b3JTeW1ib2xfX19fT3BlcmF0b3JTeW1ib2xfXyhkb3VibGUgZDEs
IAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9w
PF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAKICAg
ICAgX2J6X0xvZ2ljYWxBbmQ8ZG91YmxlLCB0eXBlbmFtZSAgUF9leHByMjo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoX2J6X0V4cHJDb25z
dGFudDxkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
Mj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxBbmQ8bG9u
ZyBkb3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3JfX09w
ZXJhdG9yU3ltYm9sX19fX09wZXJhdG9yU3ltYm9sX18obG9uZyBkb3VibGUgZDEsIAogICAgICBf
YnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHBy
Q29uc3RhbnQ8bG9uZyBkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAgICBf
YnpfTG9naWNhbEFuZDxsb25nIGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4g
PiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29u
c3RhbnQ8bG9uZyBkb3VibGU+KGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1wbGF0ZTxjbGFz
cyBUMSwgY2xhc3MgUF9leHByMj4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAg
ICBfYnpfTG9naWNhbEFuZDxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5
cGUgPiA+ID4Kb3BlcmF0b3JfX09wZXJhdG9yU3ltYm9sX19fX09wZXJhdG9yU3ltYm9sX18oY29t
cGxleDxUMT4gZDEsIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogICAgdHlwZWRlZiBf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwgCiAgICAgIF9iel9Mb2dpY2FsQW5kPGNvbXBsZXg8VDE+ICwgdHlwZW5h
bWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAoZDEpLCAKICAgICAg
ZDIpKTsKfQoKCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFBfZXhwcjI+CmlubGlu
ZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPCBfYnpfRXhwcjxQX2V4cHIxPiwgX2J6X0V4cHI8UF9l
eHByMj4sCl9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIHR5cGVu
YW1lICBQX2V4cHIyOjpUX251bXR5cGUgPgogPiA+Cm9wZXJhdG9yfHwoX2J6X0V4cHI8UF9leHBy
MT4gZDEsIAoJICBfYnpfRXhwcjxQX2V4cHIyPiBkMikKewogIHR5cGVkZWYgX2J6X0JpbkV4cHJP
cDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICBfYnpfRXhwcjxQX2V4cHIyPiwgCiAgICBfYnpfTG9n
aWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCB0eXBlbmFtZSAgUF9leHByMjo6
VF9udW10eXBlPiAKPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KGQxLCBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxp
bnQ+LAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlLCBp
bnQgPiA+ID4Kb3BlcmF0b3J8fChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGludCBkMikK
ewogICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6
X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0xvZ2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhw
cjE6OlRfbnVtdHlwZSwgaW50PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHBy
PihUX2V4cHIoZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGludD4oZDIpKSk7Cn0KCiAKdGVt
cGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9CaW5FeHByT3A8X2J6X0V4
cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PiwKICAgICAgX2J6X0xv
Z2ljYWxPcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZmxvYXQgPiA+ID4Kb3BlcmF0
b3J8fChfYnpfRXhwcjxQX2V4cHIxPiBkMSwgCiAgICAgIGZsb2F0IGQyKQp7CiAgICB0eXBlZGVm
IF9iel9CaW5FeHByT3A8X2J6X0V4cHI8UF9leHByMT4sIAogICAgICBfYnpfRXhwckNvbnN0YW50
PGZsb2F0PiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGUsIGZsb2F0PiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIo
ZDEsIAogICAgICBfYnpfRXhwckNvbnN0YW50PGZsb2F0PihkMikpKTsKfQoKIAp0ZW1wbGF0ZTxj
bGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4
cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91YmxlPiwKICAgICAgX2J6X0xvZ2ljYWxP
cjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZSwgZG91YmxlID4gPiA+Cm9wZXJhdG9yfHwo
X2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBkb3VibGUgZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8ZG91
YmxlPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUs
IGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQx
LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxkb3VibGU+KGQyKSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhw
cjE+LCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sCiAgICAgIF9iel9Mb2dp
Y2FsT3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGUsIGxvbmcgZG91YmxlID4gPiA+Cm9w
ZXJhdG9yfHwoX2J6X0V4cHI8UF9leHByMT4gZDEsIAogICAgICBsb25nIGRvdWJsZSBkMikKewog
ICAgdHlwZWRlZiBfYnpfQmluRXhwck9wPF9iel9FeHByPFBfZXhwcjE+LCAKICAgICAgX2J6X0V4
cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAg
UF9leHByMTo6VF9udW10eXBlLCBsb25nIGRvdWJsZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9i
el9FeHByPFRfZXhwcj4oVF9leHByKGQxLCAKICAgICAgX2J6X0V4cHJDb25zdGFudDxsb25nIGRv
dWJsZT4oZDIpKSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjEsIGNsYXNzIFQyPgppbmxp
bmUKX2J6X0V4cHI8X2J6X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9F
eHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAsCiAgICAgIF9iel9Mb2dpY2FsT3I8IHR5cGVuYW1l
ICBQX2V4cHIxOjpUX251bXR5cGUsIGNvbXBsZXg8VDI+ICA+ID4gPgpvcGVyYXRvcnx8KF9iel9F
eHByPFBfZXhwcjE+IGQxLCAKICAgICAgY29tcGxleDxUMj4gZDIpCnsKICAgIHR5cGVkZWYgX2J6
X0JpbkV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29t
cGxleDxUMj4gPiAsIAogICAgICBfYnpfTG9naWNhbE9yPCB0eXBlbmFtZSAgUF9leHByMTo6VF9u
dW10eXBlLCBjb21wbGV4PFQyPiA+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4
cHI+KFRfZXhwcihkMSwgCiAgICAgIF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMj4gPiAoZDIp
KSk7Cn0KCgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmlu
RXhwck9wPF9iel9FeHByQ29uc3RhbnQ8aW50PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAog
ICAgICBfYnpfTG9naWNhbE9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4g
PgpvcGVyYXRvcnx8KGludCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0
eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxpbnQ+LCAKICAgICAgX2J6X0V4
cHI8UF9leHByMj4sIAogICAgICBfYnpfTG9naWNhbE9yPGludCwgdHlwZW5hbWUgIFBfZXhwcjI6
OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHBy
KF9iel9FeHByQ29uc3RhbnQ8aW50PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3Rh
bnQ8ZmxvYXQ+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8
ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChmbG9h
dCBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5F
eHByT3A8X2J6X0V4cHJDb25zdGFudDxmbG9hdD4sIAogICAgICBfYnpfRXhwcjxQX2V4cHIyPiwg
CiAgICAgIF9iel9Mb2dpY2FsT3I8ZmxvYXQsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGU+
ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpfRXhwckNv
bnN0YW50PGZsb2F0PihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhw
cjI+CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8ZG91Ymxl
PiwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LAogICAgICBfYnpfTG9naWNhbE9yPGRvdWJsZSwg
dHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZSA+ID4gPgpvcGVyYXRvcnx8KGRvdWJsZSBkMSwg
CiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8
X2J6X0V4cHJDb25zdGFudDxkb3VibGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sIAogICAg
ICBfYnpfTG9naWNhbE9yPGRvdWJsZSwgdHlwZW5hbWUgIFBfZXhwcjI6OlRfbnVtdHlwZT4gPiBU
X2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKF9iel9FeHByQ29uc3Rh
bnQ8ZG91YmxlPihkMSksIAogICAgICBkMikpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjI+
CmlubGluZQpfYnpfRXhwcjxfYnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8bG9uZyBkb3Vi
bGU+LCAKICAgICAgX2J6X0V4cHI8UF9leHByMj4sCiAgICAgIF9iel9Mb2dpY2FsT3I8bG9uZyBk
b3VibGUsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChsb25n
IGRvdWJsZSBkMSwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9i
el9CaW5FeHByT3A8X2J6X0V4cHJDb25zdGFudDxsb25nIGRvdWJsZT4sIAogICAgICBfYnpfRXhw
cjxQX2V4cHIyPiwgCiAgICAgIF9iel9Mb2dpY2FsT3I8bG9uZyBkb3VibGUsIHR5cGVuYW1lICBQ
X2V4cHIyOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+
KFRfZXhwcihfYnpfRXhwckNvbnN0YW50PGxvbmcgZG91YmxlPihkMSksIAogICAgICBkMikpOwp9
CgoKCiAKdGVtcGxhdGU8Y2xhc3MgVDEsIGNsYXNzIFBfZXhwcjI+CmlubGluZQpfYnpfRXhwcjxf
YnpfQmluRXhwck9wPF9iel9FeHByQ29uc3RhbnQ8Y29tcGxleDxUMT4gPiAsIAogICAgICBfYnpf
RXhwcjxQX2V4cHIyPiwKICAgICAgX2J6X0xvZ2ljYWxPcjxjb21wbGV4PFQxPiAsIHR5cGVuYW1l
ICBQX2V4cHIyOjpUX251bXR5cGUgPiA+ID4Kb3BlcmF0b3J8fChjb21wbGV4PFQxPiBkMSwgCiAg
ICAgIF9iel9FeHByPFBfZXhwcjI+IGQyKQp7CiAgICB0eXBlZGVmIF9iel9CaW5FeHByT3A8X2J6
X0V4cHJDb25zdGFudDxjb21wbGV4PFQxPiA+ICwgCiAgICAgIF9iel9FeHByPFBfZXhwcjI+LCAK
ICAgICAgX2J6X0xvZ2ljYWxPcjxjb21wbGV4PFQxPiAsIHR5cGVuYW1lICBQX2V4cHIyOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihfYnpf
RXhwckNvbnN0YW50PGNvbXBsZXg8VDE+ID4gKGQxKSwgCiAgICAgIGQyKSk7Cn0KCgoKIAp0ZW1w
bGF0ZTxjbGFzcyBQX2V4cHI+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4
cHI8UF9leHByPiwgCiAgICBfYnpfbmVnYXRlPCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+
ID4gPgpvcGVyYXRvci0oX2J6X0V4cHI8UF9leHByPiBhKQp7CiAgICB0eXBlZGVmIF9iel9VbmFy
eUV4cHJPcDxfYnpfRXhwcjxQX2V4cHI+LAogICAgICAgIF9iel9uZWdhdGU8IHR5cGVuYW1lICBQ
X2V4cHI6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihU
X2V4cHIoYSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCl9iel9FeHByPF9i
el9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHI+LCAKICAgIF9iel91bnBsdXM8IHR5cGVuYW1l
ICBQX2V4cHI6OlRfbnVtdHlwZT4gPiA+Cm9wZXJhdG9yKyhfYnpfRXhwcjxQX2V4cHI+IGEpCnsK
ICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcj4sCiAgICAgICAgX2J6
X3VucGx1czwgdHlwZW5hbWUgIFBfZXhwcjo6VF9udW10eXBlPiA+IFRfZXhwcjsKICAgIHJldHVy
biBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihhKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHBy
PgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcj4sIAogICAg
X2J6X0xvZ2ljYWxOb3Q8IHR5cGVuYW1lICBQX2V4cHI6OlRfbnVtdHlwZT4gPiA+Cm9wZXJhdG9y
IShfYnpfRXhwcjxQX2V4cHI+IGEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9F
eHByPFBfZXhwcj4sCiAgICAgICAgX2J6X0xvZ2ljYWxOb3Q8IHR5cGVuYW1lICBQX2V4cHI6OlRf
bnVtdHlwZT4gPiBUX2V4cHI7CiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoYSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcj4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4
cHJPcDxfYnpfRXhwcjxQX2V4cHI+LCAKICAgIF9iel9CaXR3aXNlTm90PCB0eXBlbmFtZSAgUF9l
eHByOjpUX251bXR5cGU+ID4gPgpvcGVyYXRvcn4oX2J6X0V4cHI8UF9leHByPiBhKQp7CiAgICB0
eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHI+LAogICAgICAgIF9iel9CaXR3
aXNlTm90PCB0eXBlbmFtZSAgUF9leHByOjpUX251bXR5cGU+ID4gVF9leHByOwogICAgcmV0dXJu
IF9iel9FeHByPFRfZXhwcj4oVF9leHByKGEpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIx
PgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAg
X2J6X2FiczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmFicyhfYnpfRXhwcjxQ
X2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHBy
MT4sCiAgICAgICAgX2J6X2FiczwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhw
cjxQX2V4cHIxPiwKICAgIF9iel9hY29zPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+
ID4KYWNvcyhfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2Fjb3M8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
VW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICBfYnpfYXNpbjwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmFzaW4oX2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5
cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9hc2lu
PCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6
X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgpp
bmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6
X2F0YW48IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgphdGFuKF9iel9FeHByPFBf
ZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIx
PiwKICAgICAgICBfYnpfYXRhbjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4
cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxh
dGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhw
cjxQX2V4cHIxPiwKICAgIF9iel9jZWlsPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+
ID4KY2VpbChfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHBy
T3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2NlaWw8IHR5cGVuYW1lICBQX2V4cHIx
OjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhw
cihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpf
VW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICBfYnpfY29zPCB0eXBlbmFtZSAgUF9l
eHByMTo6VF9udW10eXBlPiA+ID4KY29zKF9iel9FeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBl
ZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfY29zPCB0
eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4
cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxp
bmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6X2Nv
c2g8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpjb3NoKF9iel9FeHByPFBfZXhw
cjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwK
ICAgICAgICBfYnpfY29zaDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7
CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8
Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwKICAgIF9iel9leHA8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpl
eHAoX2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9leHA8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251
bXR5cGU+ID4gVF9leHByOwoKICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkp
Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlF
eHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICBfYnpfYWJzPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlPiA+ID4KZmFicyhfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBf
YnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X2FiczwgdHlwZW5h
bWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRf
ZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9i
el9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgIF9iel9mbG9vcjwg
dHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CmZsb29yKF9iel9FeHByPFBfZXhwcjE+
IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAg
ICAgICBfYnpfZmxvb3I8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoK
ICAgIHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9CgogCnRlbXBsYXRlPGNs
YXNzIFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9l
eHByMT4sCiAgICBfYnpfbG9nPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KbG9n
KF9iel9FeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpf
RXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfbG9nPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6X2xvZzEwPCB0eXBlbmFtZSAgUF9leHByMTo6
VF9udW10eXBlPiA+ID4KbG9nMTAoX2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYg
X2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgICAgIF9iel9sb2cxMDwgdHlw
ZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHBy
PFRfZXhwcj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5l
Cl9iel9FeHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgIF9iel9zaW48
IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gPgpzaW4oX2J6X0V4cHI8UF9leHByMT4g
ZDEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAg
ICAgIF9iel9zaW48IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAg
IHJldHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNz
IFBfZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHBy
MT4sCiAgICBfYnpfc2luaDwgdHlwZW5hbWUgIFBfZXhwcjE6OlRfbnVtdHlwZT4gPiA+CnNpbmgo
X2J6X0V4cHI8UF9leHByMT4gZDEpCnsKICAgIHR5cGVkZWYgX2J6X1VuYXJ5RXhwck9wPF9iel9F
eHByPFBfZXhwcjE+LAogICAgICAgIF9iel9zaW5oPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10
eXBlPiA+IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsK
fQoKIAp0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhw
ck9wPF9iel9FeHByPFBfZXhwcjE+LAogICAgX2J6X3NxcjwgdHlwZW5hbWUgIFBfZXhwcjE6OlRf
bnVtdHlwZT4gPiA+CnNxcihfYnpfRXhwcjxQX2V4cHIxPiBkMSkKewogICAgdHlwZWRlZiBfYnpf
VW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAgX2J6X3NxcjwgdHlwZW5hbWUg
IFBfZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhw
cj4oVF9leHByKGQxKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3MgUF9leHByMT4KaW5saW5lCl9iel9F
eHByPF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgIF9iel9zcXJ0PCB0eXBl
bmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4Kc3FydChfYnpfRXhwcjxQX2V4cHIxPiBkMSkK
ewogICAgdHlwZWRlZiBfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4sCiAgICAgICAg
X2J6X3NxcnQ8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5cGU+ID4gVF9leHByOwoKICAgIHJl
dHVybiBfYnpfRXhwcjxUX2V4cHI+KFRfZXhwcihkMSkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFBf
ZXhwcjE+CmlubGluZQpfYnpfRXhwcjxfYnpfVW5hcnlFeHByT3A8X2J6X0V4cHI8UF9leHByMT4s
CiAgICBfYnpfdGFuPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+ID4KdGFuKF9iel9F
eHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFyeUV4cHJPcDxfYnpfRXhwcjxQ
X2V4cHIxPiwKICAgICAgICBfYnpfdGFuPCB0eXBlbmFtZSAgUF9leHByMTo6VF9udW10eXBlPiA+
IFRfZXhwcjsKCiAgICByZXR1cm4gX2J6X0V4cHI8VF9leHByPihUX2V4cHIoZDEpKTsKfQoKIAp0
ZW1wbGF0ZTxjbGFzcyBQX2V4cHIxPgppbmxpbmUKX2J6X0V4cHI8X2J6X1VuYXJ5RXhwck9wPF9i
el9FeHByPFBfZXhwcjE+LAogICAgX2J6X3Rhbmg8IHR5cGVuYW1lICBQX2V4cHIxOjpUX251bXR5
cGU+ID4gPgp0YW5oKF9iel9FeHByPFBfZXhwcjE+IGQxKQp7CiAgICB0eXBlZGVmIF9iel9VbmFy
eUV4cHJPcDxfYnpfRXhwcjxQX2V4cHIxPiwKICAgICAgICBfYnpfdGFuaDwgdHlwZW5hbWUgIFBf
ZXhwcjE6OlRfbnVtdHlwZT4gPiBUX2V4cHI7CgogICAgcmV0dXJuIF9iel9FeHByPFRfZXhwcj4o
VF9leHByKGQxKSk7Cn0KIyA2ODYgIi4uL2V4cHJUZW1wL2V4cHJUZW1wLmgiIDIKCn0gIAoKIyA4
ICJJbnRlcnBvbGF0aW9uLmgiIDIKCiMgMSAibnJjcHAuaCIgMQogCgojZGVmaW5lIE5SQ1BQSAoK
CgpjbGFzcyBOUkVycm9yIDogcHVibGljIHN0ZDo6ZXhjZXB0aW9uIHsgCnB1YmxpYzoKICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIG1zZygpIGNvbnN0IHsgCiAgICByZXR1cm4gIlVuc3BlY2lmaWVkIE51
bWVyaWNhbCBSZWNpcGVzIGVycm9yIjsgfQogIAogIHZpcnR1YWwgdm9pZCBvdXRwdXQoc3RkOjpv
c3RyZWFtJiBvKSBjb25zdCB7IG8gPDwgbXNnKCk7IH0KICBjb25zdCBjaGFyKiB3aGF0KCkgY29u
c3QgdGhyb3coKSB7IHJldHVybiBtc2coKTsgfQp9OwoKaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3IgPDwoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBOUkVycm9yJiBucmUpIHsKICBucmUub3V0
cHV0KG8pOwogIHJldHVybiBvOwp9CgojZGVmaW5lIE5SRXJyb3JDbGFzc0RlZmluZSggY2xhc3NO
YW1lICkgY2xhc3MgY2xhc3NOYW1lIHsgcHVibGljOgoKI2RlZmluZSBOUkVycm9yQ2xhc3MoY2xh
c3NOYW1lLCBtZXNzYWdlKSBjbGFzcyBjbGFzc05hbWUgOiBwdWJsaWMgTlJFcnJvciB7IHB1Ymxp
YzoJdmlydHVhbCBjb25zdCBjaGFyICogbXNnKCkgY29uc3QgewlyZXR1cm4gbWVzc2FnZTsgfSB9
OwoKCgoKCgojZGVmaW5lIE5SRXJyb3JDbGFzc0RlZmluZUVuZCB9OwoKY2xhc3MgTlJyZXBsYWNl
X2R1bW15IHsgfTsKc3RhdGljIGNvbnN0IE5ScmVwbGFjZV9kdW1teSBOUnJlcGxhY2UgPSBOUnJl
cGxhY2VfZHVtbXkoKTsKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMKIAoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCgojdW5kZWYgCV9BU1NFUlRfSAojdW5kZWYgCWFzc2VydAoKCgoKCgoK
I2RlZmluZSAJX0FTU0VSVF9ICTEKCgogCgoKCgojIDU2ICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi
IDMKCgpleHRlcm4gIkMiIHsgCgogCmV4dGVybiB2b2lkIF9fYXNzZXJ0X2ZhaWwgIChfX2NvbnN0
IGNoYXIgKl9fYXNzZXJ0aW9uLAoJCQkJX19jb25zdCBjaGFyICpfX2ZpbGUsCgkJCQl1bnNpZ25l
ZCBpbnQgX19saW5lLAoJCQkJX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKSAgdGhyb3cgKCkgIAog
ICAgIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCiAKZXh0ZXJuIHZvaWQgX19hc3Nl
cnRfcGVycm9yX2ZhaWwgIChpbnQgX19lcnJudW0sCgkJCQkgICAgICAgX19jb25zdCBjaGFyICpf
X2ZpbGUsCgkJCQkgICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwKCQkJCSAgICAgICBfX2NvbnN0
IGNoYXIgKl9fZnVuY3Rpb24pICB0aHJvdyAoKSAgCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKfSAKCiNkZWZpbmUgYXNzZXJ0KGV4cHIpCSgodm9pZCkgKChleHByKSA/IDAg
OgkoX19hc3NlcnRfZmFpbCAoX19TVFJJTkcoZXhwciksCV9fRklMRV9fLCBfX0xJTkVfXywgX19B
U1NFUlRfRlVOQ1RJT04pLCAwKSkpCgoKCgoKCgoKCgoKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoj
IDM1ICJucmNwcC5oIiAyCgoKCgojZGVmaW5lIE5SX1BSRUNPTkRJVElPTl9DSEVDSyhYKQoKCgoj
IDkgIkludGVycG9sYXRpb24uaCIgMgoKCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIEludGVycG9s
YXRpb24gewpwcm90ZWN0ZWQ6CiAgdHlwZWRlZiBibGl0ejo6QXJyYXk8VCwxPiB2ZWM7CiAgdHlw
ZWRlZiBibGl0ejo6QXJyYXk8VCwyPiBhcnI7CgpwdWJsaWM6CiAgIAogICAKICAgCiAgSW50ZXJw
b2xhdGlvbih2ZWMgX3gsIHZlYyBfeSwgCgkJYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwg
Ym9vbCBfbG9jYWxfYWNjZXNzID0gdHJ1ZSkgCiAgICA6IHgoX3gpLCB5KF95KSwgCiAgICBleHRy
YXBvbGF0ZV90b28oX2V4dHJhcG9sYXRlX3RvbyksIGxvY2FsX2FjY2VzcyhfbG9jYWxfYWNjZXNz
KSB7IAogICAgYXNjZW5kaW5nID0gKHgoIGwgPSB4Lmxib3VuZChibGl0ejo6Zmlyc3REaW0pICkg
PCAKCQkgeCggdSA9IHgudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkgKSk7CiAgfQogIEludGVycG9s
YXRpb24oYXJyIF94eSwgCgkJYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwgYm9vbCBfbG9j
YWxfYWNjZXNzID0gdHJ1ZSkgOiAKICAgIHgoX3h5KF94eS5sYm91bmQoYmxpdHo6OmZpcnN0RGlt
KSwgYmxpdHo6OlJhbmdlOjphbGwoKSkpLAogICAgeShfeHkoX3h5LnVib3VuZChibGl0ejo6Zmly
c3REaW0pLCBibGl0ejo6UmFuZ2U6OmFsbCgpKSksCiAgICBleHRyYXBvbGF0ZV90b28oX2V4dHJh
cG9sYXRlX3RvbyksIGxvY2FsX2FjY2VzcyhfbG9jYWxfYWNjZXNzKSB7IAogICAgYXNjZW5kaW5n
ID0gKHgoIGwgPSB4Lmxib3VuZChibGl0ejo6Zmlyc3REaW0pICkgPCAKCQkgeCggdSA9IHgudWJv
dW5kKGJsaXR6OjpmaXJzdERpbSkgKSk7CiAgfQogIHZpcnR1YWwgfkludGVycG9sYXRpb24oKSB7
IH0KICAKICAgCiAgdmlydHVhbCBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiAyOyB9CgogICAK
ICAgCiAgdmlydHVhbCBpbnQgbm9ybWFsaXplX2luZGV4KGludCBrKSBjb25zdCB7CiAgICByZXR1
cm4gc3RkOjptaW4oIHN0ZDo6bWF4KGsgLSAod2lkdGgoKS0xKS8yLCBsKSwgdSsxLXdpZHRoKCkg
KTsKICB9CgogIHZpcnR1YWwgVCBvcGVyYXRvcigpKGNvbnN0IFQmIHgpIGNvbnN0IHsKICAgIHJl
dHVybiBpbnRlcnBvbGF0ZV9hdCh4LCBub3JtYWxpemVfaW5kZXgoaW5kZXhfb2YoeCkpKTsgfQoK
ICB2aXJ0dWFsIFQgaW50ZXJwb2xhdGVfYXQoY29uc3QgVCYgeCwgaW50IGspIGNvbnN0ID0gMDsK
CiAgdmlydHVhbCBpbnQgaW5kZXhfb2YoY29uc3QgVCYgeCkgY29uc3QgewogICAgaWYgKGdldExv
Y2FsQWNjZXNzKCkpIAogICAgICByZXR1cm4gaHVudCh4KTsKICAgIGVsc2UKICAgICAgcmV0dXJu
IGxvY2F0ZSh4KTsKICB9CiAgCiAgdmlydHVhbCBpbnQgaHVudChjb25zdCBUJiB4KSBjb25zdDsK
ICB2aXJ0dWFsIGludCBsb2NhdGUoY29uc3QgVCYgeCkgY29uc3Q7CgogICAKICAgCiAgYm9vbCBn
ZXRFeHRyYXBvbGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGV4dHJhcG9sYXRlX3RvbzsgfQogIEludGVy
cG9sYXRpb24mIHNldEV4dHJhcG9sYXRlKGJvb2wgbmV3X2V4dHJhcCkgeyAKICAgIGV4dHJhcG9s
YXRlX3RvbyA9IG5ld19leHRyYXA7IHJldHVybiAqdGhpczsgfQogIGJvb2wgZ2V0VGhyb3dSYW5n
ZSgpIGNvbnN0IHsgcmV0dXJuICFleHRyYXBvbGF0ZV90b287IH0KICBJbnRlcnBvbGF0aW9uJiBz
ZXRUaHJvd1JhbmdlKGJvb2wgbmV3X3Rocm93KSB7CiAgICBleHRyYXBvbGF0ZV90b28gPSAhbmV3
X3Rocm93OyByZXR1cm4gKnRoaXM7IH0KICBib29sIGdldExvY2FsQWNjZXNzKCkgY29uc3QgeyBy
ZXR1cm4gbG9jYWxfYWNjZXNzOyB9CiAgSW50ZXJwb2xhdGlvbiYgc2V0TG9jYWxBY2Nlc3MoYm9v
bCBuZXdfbG9jYWwpIHsKICAgIGxvY2FsX2FjY2VzcyA9IG5ld19sb2NhbDsgcmV0dXJuICp0aGlz
OyB9CgogIHR5cGVkZWYgSW50ZXJwb2xhdGlvbiBUX3RoaXNDbGFzczsKICB0eXBlZGVmIFQgVF9u
dW10eXBlOwogIHRlbXBsYXRlPGNsYXNzIFBfZXhwcjE+IGJsaXR6OjpfYnpfRXhwcjxibGl0ejo6
X2J6X1VuYXJ5Q2xhc3NFeHByT3AyPGJsaXR6OjpfYnpfRXhwcjxQX2V4cHIxPiwgVF90aGlzQ2xh
c3MgPiA+IG9wZXJhdG9yKCkoYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+IGQxKSB7IHR5cGVkZWYg
YmxpdHo6Ol9iel9VbmFyeUNsYXNzRXhwck9wMjwgYmxpdHo6Ol9iel9FeHByPFBfZXhwcjE+ICwg
VF90aGlzQ2xhc3MgPiBUX2V4cHI7IHJldHVybiBibGl0ejo6X2J6X0V4cHI8VF9leHByPihUX2V4
cHIoKnRoaXMsZDEpKTsgfSB0ZW1wbGF0ZTxjbGFzcyBQX2V4cHIyPiBibGl0ejo6X2J6X0FycmF5
RXhwcjwgYmxpdHo6OkZ1bmN0b3JFeHByPCBUX3RoaXNDbGFzcywgdHlwZW5hbWUgYmxpdHo6OmFz
RXhwcjxQX2V4cHIyPjo6VF9leHByPiA+IG9wZXJhdG9yKCkoY29uc3QgYmxpdHo6OkVUQmFzZTxQ
X2V4cHIyPiYgYSkgY29uc3QgeyByZXR1cm4gYmxpdHo6Ol9iel9BcnJheUV4cHI8IGJsaXR6OjpG
dW5jdG9yRXhwcjwgVF90aGlzQ2xhc3MsIHR5cGVuYW1lIGJsaXR6Ojphc0V4cHI8UF9leHByMj46
OlRfZXhwcj4gPigqdGhpcywgc3RhdGljX2Nhc3Q8Y29uc3QgUF9leHByMiY+KGEpKTsgfSAKCnBy
b3RlY3RlZDoKICB2ZWMgeCwgeTsKICAgCiAgIAogIGludCBsLCB1OwoKICAgCiAgIAogIGJvb2wg
ZXh0cmFwb2xhdGVfdG9vOyAgCgogICAKICAgCiAgIAogIGJvb2wgbG9jYWxfYWNjZXNzOwoKICAg
CiAgbXV0YWJsZSBpbnQgamw7CgogICAKICAgCiAgYm9vbCBhc2NlbmRpbmc7Cn07CgpjbGFzcyBS
YW5nZUVycm9yIDogcHVibGljIGRleGNlcHRpb24gewogIGRvdWJsZSBsb3dlciwgdXBwZXIsIHZh
bDsKCnB1YmxpYzoKICBSYW5nZUVycm9yKGRvdWJsZSBfbG93ZXIsIGRvdWJsZSBfdXBwZXIsIGRv
dWJsZSBfdmFsKQogICAgOiBsb3dlcihfbG93ZXIpLCB1cHBlcihfdXBwZXIpLCB2YWwoX3ZhbCkg
eyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gIkludGVycG9s
YXRpb246OlJhbmdlRXJyb3IiOyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBzdW1tYXJ5KCkgY29u
c3QgeyAKICAgIHJldHVybiBuYW1lKCkgKyAiOiBhbiBpbnRlcnBvbGF0aW9uIHdhcyBhdHRlbXB0
ZWQgb24gIgogICAgICAidmFsdWUgdGhhdCB3YXMgb3V0IG9mIHRoZSByYW5nZSBvZiB0aGUgaW5w
dXQgYXJyYXkiOyB9CiAgdmlydHVhbCBzdGQ6OnN0cmluZyBkZXRhaWwoKSBjb25zdCB7CiAgICBz
dGQ6Om9zdHJpbmdzdHJlYW0gb3M7CiAgICBvcyA8PCBuYW1lKCkgKyAiOiBpbnRlcnBvbGF0aW9u
IGF0dGVtcHRlZCBhdCB0aGUgcG9pbnQgIiA8PCB2YWwgCiAgICAgICA8PCAiLCBvdXRzaWRlIHRo
ZSBpbnB1dCByYW5nZSBvZiAiIDw8IGxvd2VyIDw8ICItLSIgPDwgdXBwZXI7CiAgICByZXR1cm4g
b3Muc3RyKCk7CiAgfQp9OwoKIyAxICJJbnRlcnBvbGF0aW9uLnRlbXBsYXRlcy5jYyIgMQogCiAK
IAogCnRlbXBsYXRlPGNsYXNzIFQ+CmludCBJbnRlcnBvbGF0aW9uPFQ+Ojpsb2NhdGUoY29uc3Qg
VCYgeHZhbCkgY29uc3QgewogIGpsID0gbC0xOyAgIAogIGludCBqdSA9IHUrMTsKCiAgaW50IGpt
OwogIAogIHdoaWxlIChqdS1qbCA+IDEpIHsKICAgIGptID0gKGp1K2psKSAvIDI7CiAgICBpZiAo
ICh4dmFsID49IHgoam0pKSA9PSBhc2NlbmRpbmcgKQogICAgICBqbCA9IGptOwogICAgZWxzZQog
ICAgICBqdSA9IGptOwogIH0KICBpZiAoeHZhbCA9PSB4KGwpKQogICAgamwgPSBsOwogIGVsc2Ug
aWYgKHh2YWwgPT0geCh1KSkKICAgIGpsID0gdS0xOwogIHJldHVybiBqbDsKfQoKdGVtcGxhdGU8
Y2xhc3MgVD4KaW50IEludGVycG9sYXRpb248VD46Omh1bnQoY29uc3QgVCYgeHZhbCkgY29uc3Qg
ewogIGludCBqdTsKCiAgaWYgKGpsIDwgbCB8fCBqbCA+IHUpIHsgICAKICAgIGpsID0gMDsKICAg
IGp1ID0gdTsKICB9IGVsc2UgewogICAgaW50IGluYyA9IDE7ICAgCiAgICBpZiAoKHh2YWwgPj0g
eChqbCkpID09IGFzY2VuZGluZykgewogICAgICAgCiAgICAgIGlmIChqbCA9PSB1KSByZXR1cm4g
amw7CiAgICAgIGp1ID0gamwrMTsKICAgICAgd2hpbGUgKCAoeHZhbCA+PSB4KGp1KSkgPT0gYXNj
ZW5kaW5nKSB7CglqbCA9IGp1OwoJaW5jICo9IDI7CglqdSA9IGpsICsgaW5jOwoJaWYgKGp1ID4g
dSkgewoJICAgCgkgIGp1ID0gdSsxOwoJICBicmVhazsKCX0KICAgICAgfSAgCiAgICB9IGVsc2Ug
ewogICAgICAgCiAgICAgIGlmIChqbCA9PSBsKSB7CglqbCA9IGwtMTsKCXJldHVybiBqbDsKICAg
ICAgfQogICAgICBqdSA9IGpsLS07CiAgICAgIHdoaWxlICggKHh2YWwgPCB4KGpsKSkgPT0gYXNj
ZW5kaW5nICkgewoJanUgPSBqbDsKCWluYyAqPSAyOwoJamwgPSBqdSAtIGluYzsKCWlmIChqbCA8
IGwpIHsKCSAgIAoJICBqbCA9IDA7CgkgIGJyZWFrOwoJfQogICAgICB9ICAKICAgIH0gIAogIH0g
IAoKICAgCiAgaW50IGptOwogIHdoaWxlIChqdSAtIGpsICE9IDEpIHsKICAgIGptID0gKGp1ICsg
amwpIC8gMjsKICAgIGlmICgoeHZhbCA+PSB4KGptKSkgPT0gYXNjZW5kaW5nKQogICAgICBqbCA9
IGptOwogICAgZWxzZQogICAgICBqdSA9IGptOwogIH0KICBpZiAoeHZhbCA9PSB4KHUpKQogICAg
amwgPSB1LTE7CiAgaWYgKHh2YWwgPT0geChsKSkKICAgIGpsID0gbDsKCiAgcmV0dXJuIGpsOwp9
CiMgMTE5ICJJbnRlcnBvbGF0aW9uLmgiIDIKCgoKCiMgNiAiQ3ViaWNTcGxpbmUuaCIgMgoKIyAx
ICIuLi9oZWFkZXJzL3N3YXAuaCIgMQoKI2RlZmluZSBTV0FQSAogCgoKCgoKCiAKIyA3ICJDdWJp
Y1NwbGluZS5oIiAyCgoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgQ3ViaWNTcGxpbmUgOiBwdWJs
aWMgSW50ZXJwb2xhdGlvbjxUPiB7CnB1YmxpYzoKICBlbnVtIHdoaWNoX3NpZGUgeyBzdGFydCwg
ZW5kIH07CiAgQ3ViaWNTcGxpbmUodmVjIF94LCB2ZWMgX3ksIAoJCWJvb2wgX2V4dHJhcG9sYXRl
X3RvbyA9IHRydWUsIGJvb2wgX2xvY2FsX2FjY2VzcyA9IHRydWUpIAogICAgOiBJbnRlcnBvbGF0
aW9uPFQ+KF94LF95LF9leHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGws
dSkpIHsKICAgIEluaXRpYWxpemVTcGxpbmUodHJ1ZSwgdHJ1ZSk7CiAgfQogIEN1YmljU3BsaW5l
KHZlYyBfeCwgdmVjIF95LCB3aGljaF9zaWRlIHNpZGUxLCBjb25zdCBUJiBkZXJpdjEsCgkJYm9v
bCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwgYm9vbCBfbG9jYWxfYWNjZXNzID0gdHJ1ZSkgCiAg
ICA6IEludGVycG9sYXRpb248VD4oX3gsX3ksX2V4dHJhcG9sYXRlX3RvbyxfbG9jYWxfYWNjZXNz
KSwgeTIoUmFuZ2UobCx1KSkgewogICAgaWYgKHNpZGUxID09IHN0YXJ0KQogICAgICBJbml0aWFs
aXplU3BsaW5lKGZhbHNlLCB0cnVlLCBkZXJpdjEpOwogICAgZWxzZQogICAgICBJbml0aWFsaXpl
U3BsaW5lKHRydWUsIGZhbHNlLCBUKCksIGRlcml2MSk7CiAgfQogIEN1YmljU3BsaW5lKHZlYyBf
eCwgdmVjIF95LCAKCSAgICAgIHdoaWNoX3NpZGUgc2lkZTEsIGNvbnN0IFQmIGRlcml2MSwKCSAg
ICAgIHdoaWNoX3NpZGUgc2lkZTIsIGNvbnN0IFQmIGRlcml2MiwKCSAgICAgIGJvb2wgX2V4dHJh
cG9sYXRlX3RvbyA9IHRydWUsIGJvb2wgX2xvY2FsX2FjY2VzcyA9IHRydWUpIAogICAgOiBJbnRl
cnBvbGF0aW9uPFQ+KF94LF95LF9leHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJh
bmdlKGwsdSkpIHsKICAgIGlmIChzaWRlMSA9PSBlbmQgJiYgc2lkZTIgPT0gc3RhcnQpCiAgICAg
IEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBkZXJpdjIsIGRlcml2MSk7CiAgICBlbHNl
CiAgICAgIEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBkZXJpdjEsIGRlcml2Mik7CiAg
fQogIEN1YmljU3BsaW5lKHZlYyBfeCwgdmVjIF95LCAKCSAgICAgIGNvbnN0IFQmIGRlcml2MSwK
CSAgICAgIGNvbnN0IFQmIGRlcml2MiwKCSAgICAgIGJvb2wgX2V4dHJhcG9sYXRlX3RvbyA9IHRy
dWUsIGJvb2wgX2xvY2FsX2FjY2VzcyA9IHRydWUpIAogICAgOiBJbnRlcnBvbGF0aW9uPFQ+KF94
LF95LF9leHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGwsdSkpIHsKICAg
IEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBkZXJpdjEsIGRlcml2Mik7CiAgfQoKICBD
dWJpY1NwbGluZShhcnIgX3h5LAoJICAgICAgYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwg
Ym9vbCBfbG9jYWxfYWNjZXNzID0gdHJ1ZSkgCiAgICA6IEludGVycG9sYXRpb248VD4oX3h5LF9l
eHRyYXBvbGF0ZV90b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGwsdSkpIHsKICAgIEluaXRp
YWxpemVTcGxpbmUodHJ1ZSwgdHJ1ZSk7CiAgfQogIEN1YmljU3BsaW5lKGFyciBfeHksIHdoaWNo
X3NpZGUgc2lkZTEsIGNvbnN0IFQmIGRlcml2MSwKCQlib29sIF9leHRyYXBvbGF0ZV90b28gPSB0
cnVlLCBib29sIF9sb2NhbF9hY2Nlc3MgPSB0cnVlKSAKICAgIDogSW50ZXJwb2xhdGlvbjxUPihf
eHksX2V4dHJhcG9sYXRlX3RvbyxfbG9jYWxfYWNjZXNzKSwgeTIoUmFuZ2UobCx1KSkgewogICAg
aWYgKHNpZGUxID09IHN0YXJ0KQogICAgICBJbml0aWFsaXplU3BsaW5lKGZhbHNlLCB0cnVlLCBk
ZXJpdjEpOwogICAgZWxzZQogICAgICBJbml0aWFsaXplU3BsaW5lKHRydWUsIGZhbHNlLCBUKCks
IGRlcml2MSk7CiAgfQogIEN1YmljU3BsaW5lKGFyciBfeHksIAoJICAgICAgd2hpY2hfc2lkZSBz
aWRlMSwgY29uc3QgVCYgZGVyaXYxLAoJICAgICAgd2hpY2hfc2lkZSBzaWRlMiwgY29uc3QgVCYg
ZGVyaXYyLAoJICAgICAgYm9vbCBfZXh0cmFwb2xhdGVfdG9vID0gdHJ1ZSwgYm9vbCBfbG9jYWxf
YWNjZXNzID0gdHJ1ZSkgCiAgICA6IEludGVycG9sYXRpb248VD4oX3h5LF9leHRyYXBvbGF0ZV90
b28sX2xvY2FsX2FjY2VzcyksIHkyKFJhbmdlKGwsdSkpIHsKICAgIGlmIChzaWRlMSA9PSBlbmQg
JiYgc2lkZTIgPT0gc3RhcnQpCiAgICAgIEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZhbHNlLCBk
ZXJpdjIsIGRlcml2MSk7CiAgICBlbHNlCiAgICAgIEluaXRpYWxpemVTcGxpbmUoZmFsc2UsIGZh
bHNlLCBkZXJpdjEsIGRlcml2Mik7CiAgfQogIEN1YmljU3BsaW5lKGFyciBfeHksCgkgICAgICBj
b25zdCBUJiBkZXJpdjEsCgkgICAgICBjb25zdCBUJiBkZXJpdjIsCgkgICAgICBib29sIF9leHRy
YXBvbGF0ZV90b28gPSB0cnVlLCBib29sIF9sb2NhbF9hY2Nlc3MgPSB0cnVlKSAKICAgIDogSW50
ZXJwb2xhdGlvbjxUPihfeHksX2V4dHJhcG9sYXRlX3RvbyxfbG9jYWxfYWNjZXNzKSwgeTIoUmFu
Z2UobCx1KSkgewogICAgSW5pdGlhbGl6ZVNwbGluZShmYWxzZSwgZmFsc2UsIGRlcml2MSwgZGVy
aXYyKTsKICB9CgogIFQgaW50ZXJwb2xhdGVfYXQoY29uc3QgVCYsIGludCkgY29uc3Q7Cgpwcml2
YXRlOgogIHZlYyB5MjsgICAKCiAgdm9pZCBJbml0aWFsaXplU3BsaW5lKGJvb2wgbmF0dXJhbF9z
dGFydCwgYm9vbCBuYXR1cmFsX2VuZCwKCQkJY29uc3QgVCYgZGVyaXZfc3RhcnQgPSBUKCksIGNv
bnN0IFQmIGRlcml2X2VuZCA9IFQoKSk7Cn07CgojIDEgIkN1YmljU3BsaW5lLnRlbXBsYXRlcy5j
YyIgMQp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIEN1YmljU3BsaW5lPFQ+OjpJbml0aWFsaXplU3Bs
aW5lKGJvb2wgbmF0dXJhbF9zdGFydCwgYm9vbCBuYXR1cmFsX2VuZCwKCQkJCSAgICAgIGNvbnN0
IFQmIGRlcml2X3N0YXJ0LCAKCQkJCSAgICAgIGNvbnN0IFQmIGRlcml2X2VuZCkgewogIHZlYyB0
KGwsdS0xKTsKICBpZiAobmF0dXJhbF9zdGFydCkKICAgIHkyKGwpID0gdChsKSA9IDA7CiAgZWxz
ZSB7CiAgICB5MihsKSA9IC0uNTsKICAgIHQobCkgPSAzLjAgLyAoeChsKzEpLXgobCkpICogCiAg
ICAgICggKHkobCsxKS15KGwpKSAvICh4KGwrMSkteChsKSkgLSBkZXJpdl9zdGFydCk7CiAgfQoK
ICAgCiAgZm9yIChpbnQgaT1sKzE7IGk8PXUtMTsgKytpKSB7CiAgICBUIHNpZyA9ICh4KGkpIC0g
eChpLTEpKSAvICh4KGkrMSkgLSB4KGktMSkpOwogICAgVCBwID0gc2lnKnkyKGktMSkgKyAyOwog
ICAgeTIoaSkgPSAoc2lnLTEpIC8gcDsKICAgIFQgdGVtcCA9ICh5KGkrMSkteShpKSkgLyAoeChp
KzEpLXgoaSkpIC0gKHkoaSkteShpLTEpKSAvICh4KGkpLXgoaS0xKSk7CiAgICB0KGkpID0gKDYg
KiB0ZW1wIC8gKHgoaSsxKS14KGktMSkpIC0gc2lnKnQoaS0xKSkgLyBwOwogIH0KCiAgaWYgKG5h
dHVyYWxfZW5kKQogICAgeTIodSkgPSAwOwogIGVsc2UgewogICAgVCB1biA9IDMuMCAvICh4KHUp
LXgodS0xKSkgKgogICAgICAoZGVyaXZfZW5kIC0gKHkodSkteSh1LTEpKS8oeCh1KS14KHUtMSkp
KTsKICAgIHkyKHUpID0gKDIgKiB1biAtIHQodS0xKSkgLyAoeTIodS0xKSArIDIpOwogIH0KCiAg
IAogIGZvcihpbnQgaT11LTE7IGk+PWw7ICsraSkKICAgIHkyKGkpID0geTIoaSkgKiB5MihpKzEp
ICsgdChpKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIFQgQ3ViaWNTcGxpbmU8VD46Omlu
dGVycG9sYXRlX2F0KGNvbnN0IFQmIHh2YWwsIGludCBrKSBjb25zdCB7CiAgVCBoID0geChrKzEp
LXgoayk7CiAgVCBhID0gKHgoaysxKS14dmFsKSAvIGg7CiAgVCBiID0gKHh2YWwteChrKSkgLyBo
OwogIHJldHVybiBhKnkoaykgKyBiKnkoaysxKSArIChhKihhKmEtMSkqeTIoaykgKyBiKihiKmIt
MSkqeTIoaysxKSkgKiBoKmggLyA2Owp9CiMgODQgIkN1YmljU3BsaW5lLmgiIDIKCgoKIyAxICJ0
ZXN0Q3ViaWMuY2MiIDIKCiMgMSAiLi4vaGVhZGVycy9hcnJheS5oIiAxCgojZGVmaW5lIEFSUkFZ
SAoKCgoKCiMgMSAiLi4vaGVhZGVycy9udW1iZXJmb3Jtcy5oIiAxCgojZGVmaW5lIE5VTUJFUkZP
Uk1TSAoKIyAxICIuLi9oZWFkZXJzL2NsYXNzbWFuaXAuaCIgMQoKI2RlZmluZSBDTEFTU01BTklQ
SAoKCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGNsYXNzbWFuaXAxIHsKICBzdGQ6Om9zdHJlYW0q
IG87CiAgc3RkOjpvc3RyZWFtJiAoVDo6Km91dHB1dF9mdW5jKShzdGQ6Om9zdHJlYW0mKSBjb25z
dDsKCnB1YmxpYzoKICBjbGFzc21hbmlwMShzdGQ6Om9zdHJlYW0qIF9vLCAKCSAgICAgIHN0ZDo6
b3N0cmVhbSYgKFQ6Oipfb3V0cHV0X2Z1bmMpKHN0ZDo6b3N0cmVhbSYpIGNvbnN0KSAKCSAgICAg
OiBvKF9vKSwgb3V0cHV0X2Z1bmMoX291dHB1dF9mdW5jKSB7IH0KICBmcmllbmQgY2xhc3NtYW5p
cDEgICAKICAgIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvLCAKCSAgICAgICBzdGQ6Om9zdHJl
YW0mIChUOjoqb3V0cHV0X2Z1bmMpKHN0ZDo6b3N0cmVhbSYpIGNvbnN0KSB7CiAgICAgIHJldHVy
biBjbGFzc21hbmlwMSgmbywgb3V0cHV0X2Z1bmMpOwogICAgfQogIGZyaWVuZCBzdGQ6Om9zdHJl
YW0mIG9wZXJhdG9yPDwoY29uc3QgY2xhc3NtYW5pcDEmIGNtLCBjb25zdCBUJiBjKSB7CiAgICBy
ZXR1cm4gKGMuKmNtLm91dHB1dF9mdW5jKSgqKGNtLm8pKTsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBUPiBzdHJ1Y3QgY2xhc3NtYW5pcDIgewogIHN0ZDo6b3N0cmVhbSogbzsKICBzdGQ6Om9zdHJl
YW0mICgqb3V0cHV0X2Z1bmMpKHN0ZDo6b3N0cmVhbSYsY29uc3QgVCYpOwoKICBjbGFzc21hbmlw
MihzdGQ6Om9zdHJlYW0qIF9vLCAKCSAgICAgIHN0ZDo6b3N0cmVhbSYgKCpfb3V0cHV0X2Z1bmMp
KHN0ZDo6b3N0cmVhbSYsY29uc3QgVCYpKSAKCSAgICAgOiBvKF9vKSwgb3V0cHV0X2Z1bmMoX291
dHB1dF9mdW5jKSB7IH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzbWFuaXAyPFQ+IApvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgbywgCgkgICBzdGQ6Om9zdHJlYW0mICgqb3V0cHV0X2Z1bmMp
KHN0ZDo6b3N0cmVhbSYsY29uc3QgVCYpKSB7CiAgcmV0dXJuIGNsYXNzbWFuaXAyPFQ+KCZvLCBv
dXRwdXRfZnVuYyk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8
PChjb25zdCBjbGFzc21hbmlwMjxUPiYgY20sIGNvbnN0IFQmIGMpIHsKICAgIHJldHVybiBjbS5v
dXRwdXRfZnVuYygqY20ubyxjKTsKICB9CgojIDQgIi4uL2hlYWRlcnMvbnVtYmVyZm9ybXMuaCIg
MgoKCgoKIAojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGli
L2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysr
LTMvYWxnb3JpdGhtIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCiNkZWZpbmUgX19T
R0lfU1RMX0FMR09SSVRITQoKCgojIDEgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2dj
Yy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4u
L2luY2x1ZGUvZysrLTMvc3RsX3VuaW5pdGlhbGl6ZWQuaCIgMSAzCiAKCgoKCgoKCgoKCgoKCgoK
CgoKCgoKCgoKCiAKCgoKCiNkZWZpbmUgX19TR0lfU1RMX0lOVEVSTkFMX1VOSU5JVElBTElaRURf
SAoKIAoKIAoKIAogCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0
ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIgCl9fdW5pbml0aWFsaXplZF9jb3B5X2F1eChfSW5wdXRJ
dGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAg
X0ZvcndhcmRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgX190cnVlX3R5
cGUpCnsKICByZXR1cm4gY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIApf
X3VuaW5pdGlhbGl6ZWRfY29weV9hdXgoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fZmFsc2VfdHlwZSkKewogIF9Gb3J3YXJkSXRlciBfX2N1
ciA9IF9fcmVzdWx0OwogIHRyeSAgewogICAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytf
X2ZpcnN0LCArK19fY3VyKQogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwgKl9fZmlyc3QpOwogICAg
cmV0dXJuIF9fY3VyOwogIH0KICBjYXRjaCguLi4pIHsgIGRlc3Ryb3koX19yZXN1bHQsIF9fY3Vy
KSA7IHRocm93OyB9IDsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9y
d2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIF9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRf
Y29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIF9UcCopCnsKICB0eXBlZGVmIHR5cGVuYW1l
IF9fdHlwZV90cmFpdHM8X1RwPjo6aXNfUE9EX3R5cGUgX0lzX1BPRDsKICByZXR1cm4gX191bmlu
aXRpYWxpemVkX2NvcHlfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9Jc19QT0QoKSk7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfRm9yd2FyZEl0ZXI+CmlubGlu
ZSBfRm9yd2FyZEl0ZXIKICB1bmluaXRpYWxpemVkX2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBf
SW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fcmVz
dWx0KQp7CiAgcmV0dXJuIF9fdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19y
ZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19yZXN1
bHQgKSApOwp9CgppbmxpbmUgY2hhciogdW5pbml0aWFsaXplZF9jb3B5KGNvbnN0IGNoYXIqIF9f
Zmlyc3QsIGNvbnN0IGNoYXIqIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjaGFyKiBfX3Jlc3VsdCkgewogIG1lbW1vdmUoX19yZXN1bHQsIF9fZmlyc3QsIF9fbGFzdCAt
IF9fZmlyc3QpOwogIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsKfQoKaW5s
aW5lIHdjaGFyX3QqIAp1bmluaXRpYWxpemVkX2NvcHkoY29uc3Qgd2NoYXJfdCogX19maXJzdCwg
Y29uc3Qgd2NoYXJfdCogX19sYXN0LAogICAgICAgICAgICAgICAgICAgd2NoYXJfdCogX19yZXN1
bHQpCnsKICBtZW1tb3ZlKF9fcmVzdWx0LCBfX2ZpcnN0LCBzaXplb2Yod2NoYXJfdCkgKiAoX19s
YXN0IC0gX19maXJzdCkpOwogIHJldHVybiBfX3Jlc3VsdCArIChfX2xhc3QgLSBfX2ZpcnN0KTsK
fQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9y
d2FyZEl0ZXI+CnBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPgpfX3VuaW5pdGlhbGl6ZWRf
Y29weV9uKF9JbnB1dEl0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfaXRlcmF0b3JfdGFnKQp7CiAgX0ZvcndhcmRJdGVyIF9fY3VyID0gX19yZXN1bHQ7CiAgdHJ5
ICB7CiAgICBmb3IgKCA7IF9fY291bnQgPiAwIDsgLS1fX2NvdW50LCArK19fZmlyc3QsICsrX19j
dXIpIAogICAgICBjb25zdHJ1Y3QoJipfX2N1ciwgKl9fZmlyc3QpOwogICAgcmV0dXJuIHBhaXI8
X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPihfX2ZpcnN0LCBfX2N1cik7CiAgfQogIGNhdGNoKC4u
LikgeyAgZGVzdHJveShfX3Jlc3VsdCwgX19jdXIpIDsgdGhyb3c7IH0gOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0ZXI+
CmlubGluZSBwYWlyPF9SYW5kb21BY2Nlc3NJdGVyLCBfRm9yd2FyZEl0ZXI+Cl9fdW5pbml0aWFs
aXplZF9jb3B5X24oX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1NpemUgX19jb3VudCwKICAg
ICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpIHsKICBfUmFuZG9tQWNjZXNzSXRl
ciBfX2xhc3QgPSBfX2ZpcnN0ICsgX19jb3VudDsKICByZXR1cm4gcGFpcjxfUmFuZG9tQWNjZXNz
SXRlciwgX0ZvcndhcmRJdGVyPigKICAgICAgICAgICAgICAgICBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfRm9yd2FyZEl0
ZXI+CmlubGluZSBwYWlyPF9JbnB1dEl0ZXIsIF9Gb3J3YXJkSXRlcj4KX191bmluaXRpYWxpemVk
X2NvcHlfbihfSW5wdXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAg
ICAgICAgIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCkgewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRf
Y29weV9uKF9fZmlyc3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5l
IHBhaXI8X0lucHV0SXRlciwgX0ZvcndhcmRJdGVyPgp1bmluaXRpYWxpemVkX2NvcHlfbihfSW5w
dXRJdGVyIF9fZmlyc3QsIF9TaXplIF9fY291bnQsCiAgICAgICAgICAgICAgICAgICAgIF9Gb3J3
YXJkSXRlciBfX3Jlc3VsdCkgewogIHJldHVybiBfX3VuaW5pdGlhbGl6ZWRfY29weV9uKF9fZmly
c3QsIF9fY291bnQsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9f
aXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3QgKSApOwp9CgogCiAKdGVtcGxhdGUgPGNsYXNzIF9G
b3J3YXJkSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9h
dXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gsIF9fdHJ1ZV90eXBlKQp7CiAgZmlsbChfX2Zp
cnN0LCBfX2xhc3QsIF9feCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNz
IF9UcD4Kdm9pZApfX3VuaW5pdGlhbGl6ZWRfZmlsbF9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3Qs
IF9Gb3J3YXJkSXRlciBfX2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1Rw
JiBfX3gsIF9fZmFsc2VfdHlwZSkKewogIF9Gb3J3YXJkSXRlciBfX2N1ciA9IF9fZmlyc3Q7CiAg
dHJ5ICB7CiAgICBmb3IgKCA7IF9fY3VyICE9IF9fbGFzdDsgKytfX2N1cikKICAgICAgY29uc3Ry
dWN0KCYqX19jdXIsIF9feCk7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX2ZpcnN0LCBf
X2N1cikgOyB0aHJvdzsgfSA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNz
IF9UcCwgY2xhc3MgX1RwMT4KaW5saW5lIHZvaWQgX191bmluaXRpYWxpemVkX2ZpbGwoX0Zvcndh
cmRJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2Fy
ZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9feCwgX1RwMSopCnsKICB0eXBlZGVmIHR5cGVuYW1l
IF9fdHlwZV90cmFpdHM8X1RwMT46OmlzX1BPRF90eXBlIF9Jc19QT0Q7CiAgX191bmluaXRpYWxp
emVkX2ZpbGxfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX194LCBfSXNfUE9EKCkpOwogICAgICAgICAg
ICAgICAgICAgCn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5s
aW5lIHZvaWQgdW5pbml0aWFsaXplZF9maWxsKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFzdCwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCkKewogIF9fdW5pbml0aWFsaXplZF9m
aWxsKF9fZmlyc3QsIF9fbGFzdCwgX194LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgog
CiAKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcD4K
aW5saW5lIF9Gb3J3YXJkSXRlcgpfX3VuaW5pdGlhbGl6ZWRfZmlsbF9uX2F1eChfRm9yd2FyZEl0
ZXIgX19maXJzdCwgX1NpemUgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBf
VHAmIF9feCwgX190cnVlX3R5cGUpCnsKICByZXR1cm4gZmlsbF9uKF9fZmlyc3QsIF9fbiwgX194
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9U
cD4KX0ZvcndhcmRJdGVyCl9fdW5pbml0aWFsaXplZF9maWxsX25fYXV4KF9Gb3J3YXJkSXRlciBf
X2ZpcnN0LCBfU2l6ZSBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYg
X194LCBfX2ZhbHNlX3R5cGUpCnsKICBfRm9yd2FyZEl0ZXIgX19jdXIgPSBfX2ZpcnN0OwogIHRy
eSAgewogICAgZm9yICggOyBfX24gPiAwOyAtLV9fbiwgKytfX2N1cikKICAgICAgY29uc3RydWN0
KCYqX19jdXIsIF9feCk7CiAgICByZXR1cm4gX19jdXI7CiAgfQogIGNhdGNoKC4uLikgeyAgZGVz
dHJveShfX2ZpcnN0LCBfX2N1cikgOyB0aHJvdzsgfSA7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9y
d2FyZEl0ZXIsIGNsYXNzIF9TaXplLCBjbGFzcyBfVHAsIGNsYXNzIF9UcDE+CmlubGluZSBfRm9y
d2FyZEl0ZXIgCl9fdW5pbml0aWFsaXplZF9maWxsX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9T
aXplIF9fbiwgY29uc3QgX1RwJiBfX3gsIF9UcDEqKQp7CiAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5
cGVfdHJhaXRzPF9UcDE+Ojppc19QT0RfdHlwZSBfSXNfUE9EOwogIHJldHVybiBfX3VuaW5pdGlh
bGl6ZWRfZmlsbF9uX2F1eChfX2ZpcnN0LCBfX24sIF9feCwgX0lzX1BPRCgpKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1NpemUsIGNsYXNzIF9UcD4KaW5saW5lIF9G
b3J3YXJkSXRlciAKdW5pbml0aWFsaXplZF9maWxsX24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9T
aXplIF9fbiwgY29uc3QgX1RwJiBfX3gpCnsKICByZXR1cm4gX191bmluaXRpYWxpemVkX2ZpbGxf
bihfX2ZpcnN0LCBfX24sIF9feCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKIAogCgog
CiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBj
bGFzcyBfRm9yd2FyZEl0ZXI+CmlubGluZSBfRm9yd2FyZEl0ZXIKX191bmluaXRpYWxpemVkX2Nv
cHlfY29weShfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQpCnsK
ICBfRm9yd2FyZEl0ZXIgX19taWQgPSB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdDEsIF9fbGFz
dDEsIF9fcmVzdWx0KTsKICB0cnkgIHsKICAgIHJldHVybiB1bmluaXRpYWxpemVkX2NvcHkoX19m
aXJzdDIsIF9fbGFzdDIsIF9fbWlkKTsKICB9CiAgY2F0Y2goLi4uKSB7ICBkZXN0cm95KF9fcmVz
dWx0LCBfX21pZCkgOyB0aHJvdzsgfSA7Cn0KCiAKIAogCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2Fy
ZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0lucHV0SXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlciAK
X191bmluaXRpYWxpemVkX2ZpbGxfY29weShfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIF9Gb3J3YXJk
SXRlciBfX21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9feCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0KQp7CiAgdW5pbml0aWFsaXplZF9maWxsKF9fcmVzdWx0LCBfX21pZCwgX194KTsKICB0cnkg
IHsKICAgIHJldHVybiB1bmluaXRpYWxpemVkX2NvcHkoX19maXJzdCwgX19sYXN0LCBfX21pZCk7
CiAgfQogIGNhdGNoKC4uLikgeyAgZGVzdHJveShfX3Jlc3VsdCwgX19taWQpIDsgdGhyb3c7IH0g
Owp9CgogCiAKIAp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVy
LCBjbGFzcyBfVHA+CmlubGluZSB2b2lkCl9fdW5pbml0aWFsaXplZF9jb3B5X2ZpbGwoX0lucHV0
SXRlciBfX2ZpcnN0MSwgX0lucHV0SXRlciBfX2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyIF9fbGFzdDIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3gpCnsKICBfRm9yd2FyZEl0ZXIgX19taWQy
ID0gdW5pbml0aWFsaXplZF9jb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0Mik7CiAgdHJ5
ICB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGwoX19taWQyLCBfX2xhc3QyLCBfX3gpOwogIH0KICBj
YXRjaCguLi4pIHsgIGRlc3Ryb3koX19maXJzdDIsIF9fbWlkMikgOyB0aHJvdzsgfSA7Cn0KCiAK
CgoKIAogCiAKIyAzMiAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUuMy9s
aWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVkZS9n
KystMy9hbGdvcml0aG0iIDIgMwoKIyAxICIvdWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9n
Y2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8u
Li9pbmNsdWRlL2crKy0zL3N0bF90ZW1wYnVmLmgiIDEgMwogCgoKCgoKCgoKCgoKCgoKCgoKCgoK
CgoKCgogCgoKCgojZGVmaW5lIF9fU0dJX1NUTF9JTlRFUk5BTF9URU1QQlVGX0gKCgogCgp0ZW1w
bGF0ZSA8Y2xhc3MgX1RwPgpwYWlyPF9UcCosIHB0cmRpZmZfdD4gCl9fZ2V0X3RlbXBvcmFyeV9i
dWZmZXIocHRyZGlmZl90IF9fbGVuLCBfVHAqKQp7CiAgaWYgKF9fbGVuID4gcHRyZGlmZl90KDIx
NDc0ODM2NDcgICAvIHNpemVvZihfVHApKSkKICAgIF9fbGVuID0gMjE0NzQ4MzY0NyAgIC8gc2l6
ZW9mKF9UcCk7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9UcCogX190bXAgPSAoX1RwKikg
bWFsbG9jKChzaXplX3QpX19sZW4gKiBzaXplb2YoX1RwKSk7CiAgICBpZiAoX190bXAgIT0gMCkK
ICAgICAgcmV0dXJuIHBhaXI8X1RwKiwgcHRyZGlmZl90PihfX3RtcCwgX19sZW4pOwogICAgX19s
ZW4gLz0gMjsKICB9CgogIHJldHVybiBwYWlyPF9UcCosIHB0cmRpZmZfdD4oKF9UcCopMCwgMCk7
Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHBhaXI8X1RwKiwgcHRyZGlmZl90PiBn
ZXRfdGVtcG9yYXJ5X2J1ZmZlcihwdHJkaWZmX3QgX19sZW4pIHsKICByZXR1cm4gX19nZXRfdGVt
cG9yYXJ5X2J1ZmZlcihfX2xlbiwgKF9UcCopIDApOwp9CgoKCiAKIAogCiAKIAp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwPgppbmxpbmUgcGFpcjxfVHAqLCBwdHJkaWZmX3Q+IGdldF90ZW1wb3JhcnlfYnVm
ZmVyKHB0cmRpZmZfdCBfX2xlbiwgX1RwKikgewogIHJldHVybiBfX2dldF90ZW1wb3JhcnlfYnVm
ZmVyKF9fbGVuLCAoX1RwKikgMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnZvaWQgcmV0dXJu
X3RlbXBvcmFyeV9idWZmZXIoX1RwKiBfX3ApIHsKICBmcmVlKF9fcCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfRm9yd2FyZEl0ZXJhdG9yLCBjbGFzcyBfVHA+CmNsYXNzIF9UZW1wb3JhcnlfYnVmZmVy
IHsKcHJpdmF0ZToKICBwdHJkaWZmX3QgIF9NX29yaWdpbmFsX2xlbjsKICBwdHJkaWZmX3QgIF9N
X2xlbjsKICBfVHAqICAgICAgIF9NX2J1ZmZlcjsKCiAgdm9pZCBfTV9hbGxvY2F0ZV9idWZmZXIo
KSB7CiAgICBfTV9vcmlnaW5hbF9sZW4gPSBfTV9sZW47CiAgICBfTV9idWZmZXIgPSAwOwoKICAg
IGlmIChfTV9sZW4gPiAocHRyZGlmZl90KSgyMTQ3NDgzNjQ3ICAgLyBzaXplb2YoX1RwKSkpCiAg
ICAgIF9NX2xlbiA9IDIxNDc0ODM2NDcgICAvIHNpemVvZihfVHApOwoKICAgIHdoaWxlIChfTV9s
ZW4gPiAwKSB7CiAgICAgIF9NX2J1ZmZlciA9IChfVHAqKSBtYWxsb2MoX01fbGVuICogc2l6ZW9m
KF9UcCkpOwogICAgICBpZiAoX01fYnVmZmVyKQogICAgICAgIGJyZWFrOwogICAgICBfTV9sZW4g
Lz0gMjsKICAgIH0KICB9CgogIHZvaWQgX01faW5pdGlhbGl6ZV9idWZmZXIoY29uc3QgX1RwJiwg
X190cnVlX3R5cGUpIHt9CiAgdm9pZCBfTV9pbml0aWFsaXplX2J1ZmZlcihjb25zdCBfVHAmIHZh
bCwgX19mYWxzZV90eXBlKSB7CiAgICB1bmluaXRpYWxpemVkX2ZpbGxfbihfTV9idWZmZXIsIF9N
X2xlbiwgdmFsKTsKICB9CgpwdWJsaWM6CiAgcHRyZGlmZl90IHNpemUoKSBjb25zdCB7IHJldHVy
biBfTV9sZW47IH0KICBwdHJkaWZmX3QgcmVxdWVzdGVkX3NpemUoKSBjb25zdCB7IHJldHVybiBf
TV9vcmlnaW5hbF9sZW47IH0KICBfVHAqIGJlZ2luKCkgeyByZXR1cm4gX01fYnVmZmVyOyB9CiAg
X1RwKiBlbmQoKSB7IHJldHVybiBfTV9idWZmZXIgKyBfTV9sZW47IH0KCiAgX1RlbXBvcmFyeV9i
dWZmZXIoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkg
ewogICAgdHlwZWRlZiB0eXBlbmFtZSBfX3R5cGVfdHJhaXRzPF9UcD46Omhhc190cml2aWFsX2Rl
ZmF1bHRfY29uc3RydWN0b3IKICAgICAgICAgICAgX1RyaXZpYWw7CiAgICB0cnkgIHsKICAgICAg
X01fbGVuID0gMDsKICAgICAgZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfTV9sZW4pOwogICAg
ICBfTV9hbGxvY2F0ZV9idWZmZXIoKTsKICAgICAgaWYgKF9NX2xlbiA+IDApCiAgICAgICAgX01f
aW5pdGlhbGl6ZV9idWZmZXIoKl9fZmlyc3QsIF9Ucml2aWFsKCkpOwogICAgfQogICAgY2F0Y2go
Li4uKSB7ICBmcmVlKF9NX2J1ZmZlcik7IF9NX2J1ZmZlciA9IDA7IF9NX2xlbiA9IDAgOyB0aHJv
dzsgfSA7CiAgfQogCiAgfl9UZW1wb3JhcnlfYnVmZmVyKCkgeyAgCiAgICBkZXN0cm95KF9NX2J1
ZmZlciwgX01fYnVmZmVyICsgX01fbGVuKTsKICAgIGZyZWUoX01fYnVmZmVyKTsKICB9Cgpwcml2
YXRlOgogICAKICBfVGVtcG9yYXJ5X2J1ZmZlcihjb25zdCBfVGVtcG9yYXJ5X2J1ZmZlciYpIHt9
CiAgdm9pZCBvcGVyYXRvcj0oY29uc3QgX1RlbXBvcmFyeV9idWZmZXImKSB7fQp9OwoKIAoKdGVt
cGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcmF0b3IsIAogICAgICAgICAgY2xhc3MgX1RwIAoKICAg
ICAgICAgICAgICAgICAgICA9IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJh
dG9yPjo6dmFsdWVfdHlwZQoKICAgICAgICAgPgpzdHJ1Y3QgdGVtcG9yYXJ5X2J1ZmZlciA6IHB1
YmxpYyBfVGVtcG9yYXJ5X2J1ZmZlcjxfRm9yd2FyZEl0ZXJhdG9yLCBfVHA+CnsKICB0ZW1wb3Jh
cnlfYnVmZmVyKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xh
c3QpCiAgICA6IF9UZW1wb3JhcnlfYnVmZmVyPF9Gb3J3YXJkSXRlcmF0b3IsIF9UcD4oX19maXJz
dCwgX19sYXN0KSB7fQogIH50ZW1wb3JhcnlfYnVmZmVyKCkge30KfTsKICAgIAogCgoKCiAKIAog
CiMgMzMgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvYWxn
b3JpdGhtIiAyIDMKCiMgMSAiL3Vmcy9uZXdtYW4vdXNlcnMvZGVycmljay9nbnUvZ2NjLTIuOTUu
My9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8yLjk1LjMvLi4vLi4vLi4vLi4vaW5jbHVk
ZS9nKystMy9zdGxfYWxnby5oIiAxIDMKIAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKIAoKCgoK
I2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfQUxHT19ICgojIDEgIi91ZnMvbmV3bWFuL3VzZXJz
L2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMi45
NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3RsX2hlYXAuaCIgMSAzCiAKCgoKCgoKCgoK
CgoKCgoKCgoKCgoKCgoKIAoKCgoKI2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfSEVBUF9ICgog
CgoKCgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rp
c3RhbmNlLCBjbGFzcyBfVHA+CnZvaWQgCl9fcHVzaF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRv
ciBfX2ZpcnN0LAogICAgICAgICAgICBfRGlzdGFuY2UgX19ob2xlSW5kZXgsIF9EaXN0YW5jZSBf
X3RvcEluZGV4LCBfVHAgX192YWx1ZSkKewogIF9EaXN0YW5jZSBfX3BhcmVudCA9IChfX2hvbGVJ
bmRleCAtIDEpIC8gMjsKICB3aGlsZSAoX19ob2xlSW5kZXggPiBfX3RvcEluZGV4ICYmICooX19m
aXJzdCArIF9fcGFyZW50KSA8IF9fdmFsdWUpIHsKICAgICooX19maXJzdCArIF9faG9sZUluZGV4
KSA9ICooX19maXJzdCArIF9fcGFyZW50KTsKICAgIF9faG9sZUluZGV4ID0gX19wYXJlbnQ7CiAg
ICBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsKICB9ICAgIAogICooX19maXJzdCAr
IF9faG9sZUluZGV4KSA9IF9fdmFsdWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNz
SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCAKX19wdXNo
X2hlYXBfYXV4KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgX0Rpc3RhbmNlKiwgX1RwKikKewogIF9fcHVz
aF9oZWFwKF9fZmlyc3QsIF9EaXN0YW5jZSgoX19sYXN0IC0gX19maXJzdCkgLSAxKSwgX0Rpc3Rh
bmNlKDApLCAKICAgICAgICAgICAgICBfVHAoKihfX2xhc3QgLSAxKSkpOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yPgppbmxpbmUgdm9pZCAKcHVzaF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0KQp7
CiAgX19wdXNoX2hlYXBfYXV4KF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX19k
aXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgLCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2UsIGNs
YXNzIF9UcCwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4Kdm9pZApfX3B1c2hfaGVhcChfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX0Rpc3RhbmNlIF9faG9sZUluZGV4LAogICAgICAg
ICAgICBfRGlzdGFuY2UgX190b3BJbmRleCwgX1RwIF9fdmFsdWUsIF9Db21wYXJlIF9fY29tcCkK
ewogIF9EaXN0YW5jZSBfX3BhcmVudCA9IChfX2hvbGVJbmRleCAtIDEpIC8gMjsKICB3aGlsZSAo
X19ob2xlSW5kZXggPiBfX3RvcEluZGV4ICYmIF9fY29tcCgqKF9fZmlyc3QgKyBfX3BhcmVudCks
IF9fdmFsdWUpKSB7CiAgICAqKF9fZmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBf
X3BhcmVudCk7CiAgICBfX2hvbGVJbmRleCA9IF9fcGFyZW50OwogICAgX19wYXJlbnQgPSAoX19o
b2xlSW5kZXggLSAxKSAvIDI7CiAgfQogICooX19maXJzdCArIF9faG9sZUluZGV4KSA9IF9fdmFs
dWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9Db21w
YXJlLAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkIApf
X3B1c2hfaGVhcF9hdXgoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXAsCiAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UqLCBfVHAqKSAKewogIF9fcHVzaF9oZWFwKF9fZmlyc3QsIF9E
aXN0YW5jZSgoX19sYXN0IC0gX19maXJzdCkgLSAxKSwgX0Rpc3RhbmNlKDApLCAKICAgICAgICAg
ICAgICBfVHAoKihfX2xhc3QgLSAxKSksIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFu
ZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCAKcHVzaF9oZWFw
KF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LAogICAgICAgICAgX0NvbXBhcmUgX19jb21wKQp7CiAgX19wdXNoX2hlYXBfYXV4KF9fZmly
c3QsIF9fbGFzdCwgX19jb21wLAogICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9f
Zmlyc3QgKSAsIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
UmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX1RwPgp2b2lkIApf
X2FkanVzdF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19o
b2xlSW5kZXgsCiAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuLCBfVHAgX192YWx1ZSkKewog
IF9EaXN0YW5jZSBfX3RvcEluZGV4ID0gX19ob2xlSW5kZXg7CiAgX0Rpc3RhbmNlIF9fc2Vjb25k
Q2hpbGQgPSAyICogX19ob2xlSW5kZXggKyAyOwogIHdoaWxlIChfX3NlY29uZENoaWxkIDwgX19s
ZW4pIHsKICAgIGlmICgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSA8ICooX19maXJzdCArIChf
X3NlY29uZENoaWxkIC0gMSkpKQogICAgICBfX3NlY29uZENoaWxkLS07CiAgICAqKF9fZmlyc3Qg
KyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKTsKICAgIF9faG9sZUlu
ZGV4ID0gX19zZWNvbmRDaGlsZDsKICAgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vjb25kQ2hp
bGQgKyAxKTsKICB9CiAgaWYgKF9fc2Vjb25kQ2hpbGQgPT0gX19sZW4pIHsKICAgICooX19maXJz
dCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkpOwogICAg
X19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsKICB9CiAgX19wdXNoX2hlYXAoX19maXJz
dCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5l
IHZvaWQgCl9fcG9wX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
cmVzdWx0LCBfVHAgX192YWx1ZSwgX0Rpc3RhbmNlKikKewogICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
OwogIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlzdGFuY2UoX19sYXN0
IC0gX19maXJzdCksIF9fdmFsdWUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yLCBjbGFzcyBfVHA+CmlubGluZSB2b2lkIApfX3BvcF9oZWFwX2F1eChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwKICAgICAg
ICAgICAgICAgX1RwKikKewogIF9fcG9wX2hlYXAoX19maXJzdCwgX19sYXN0IC0gMSwgX19sYXN0
IC0gMSwgCiAgICAgICAgICAgICBfVHAoKihfX2xhc3QgLSAxKSksIF9fZGlzdGFuY2VfdHlwZSgg
X19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3I+Cmlu
bGluZSB2b2lkIHBvcF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCAKICAgICAg
ICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCkKewogIF9fcG9wX2hl
YXBfYXV4KF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0Rpc3RhbmNlLAogICAg
ICAgICAgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZApfX2FkanVzdF9oZWFwKF9SYW5k
b21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19ob2xlSW5kZXgsCiAgICAgICAg
ICAgICAgX0Rpc3RhbmNlIF9fbGVuLCBfVHAgX192YWx1ZSwgX0NvbXBhcmUgX19jb21wKQp7CiAg
X0Rpc3RhbmNlIF9fdG9wSW5kZXggPSBfX2hvbGVJbmRleDsKICBfRGlzdGFuY2UgX19zZWNvbmRD
aGlsZCA9IDIgKiBfX2hvbGVJbmRleCArIDI7CiAgd2hpbGUgKF9fc2Vjb25kQ2hpbGQgPCBfX2xl
bikgewogICAgaWYgKF9fY29tcCgqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKSwgKihfX2ZpcnN0
ICsgKF9fc2Vjb25kQ2hpbGQgLSAxKSkpKQogICAgICBfX3NlY29uZENoaWxkLS07CiAgICAqKF9f
Zmlyc3QgKyBfX2hvbGVJbmRleCkgPSAqKF9fZmlyc3QgKyBfX3NlY29uZENoaWxkKTsKICAgIF9f
aG9sZUluZGV4ID0gX19zZWNvbmRDaGlsZDsKICAgIF9fc2Vjb25kQ2hpbGQgPSAyICogKF9fc2Vj
b25kQ2hpbGQgKyAxKTsKICB9CiAgaWYgKF9fc2Vjb25kQ2hpbGQgPT0gX19sZW4pIHsKICAgICoo
X19maXJzdCArIF9faG9sZUluZGV4KSA9ICooX19maXJzdCArIChfX3NlY29uZENoaWxkIC0gMSkp
OwogICAgX19ob2xlSW5kZXggPSBfX3NlY29uZENoaWxkIC0gMTsKICB9CiAgX19wdXNoX2hlYXAo
X19maXJzdCwgX19ob2xlSW5kZXgsIF9fdG9wSW5kZXgsIF9fdmFsdWUsIF9fY29tcCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9UcCwgY2xhc3MgX0Nv
bXBhcmUsIAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCAKX19wb3BfaGVh
cChfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
bGFzdCwKICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19yZXN1bHQsIF9UcCBfX3Zh
bHVlLCBfQ29tcGFyZSBfX2NvbXAsCiAgICAgICAgICAgX0Rpc3RhbmNlKikKewogICpfX3Jlc3Vs
dCA9ICpfX2ZpcnN0OwogIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX0Rpc3RhbmNlKDApLCBfRGlz
dGFuY2UoX19sYXN0IC0gX19maXJzdCksIAogICAgICAgICAgICAgICAgX192YWx1ZSwgX19jb21w
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLCBj
bGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgCl9fcG9wX2hlYXBfYXV4KF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LCBfVHAqLCBfQ29tcGFyZSBfX2NvbXApCnsKICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbGFz
dCAtIDEsIF9fbGFzdCAtIDEsIF9UcCgqKF9fbGFzdCAtIDEpKSwgX19jb21wLAogICAgICAgICAg
ICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5k
b21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIApwb3BfaGVhcChf
UmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwKICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJh
dG9yIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKQp7CiAgICBfX3BvcF9oZWFwX2F1eChfX2ZpcnN0
LCBfX2xhc3QsIF9fdmFsdWVfdHlwZSggX19maXJzdCApICwgX19jb21wKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+
CnZvaWQgCl9fbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LCBfVHAqLCBfRGlzdGFuY2UqKQp7CiAg
aWYgKF9fbGFzdCAtIF9fZmlyc3QgPCAyKSByZXR1cm47CiAgX0Rpc3RhbmNlIF9fbGVuID0gX19s
YXN0IC0gX19maXJzdDsKICBfRGlzdGFuY2UgX19wYXJlbnQgPSAoX19sZW4gLSAyKS8yOwogICAg
CiAgd2hpbGUgKHRydWUpIHsKICAgIF9fYWRqdXN0X2hlYXAoX19maXJzdCwgX19wYXJlbnQsIF9f
bGVuLCBfVHAoKihfX2ZpcnN0ICsgX19wYXJlbnQpKSk7CiAgICBpZiAoX19wYXJlbnQgPT0gMCkg
cmV0dXJuOwogICAgX19wYXJlbnQtLTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlcmF0b3I+CmlubGluZSB2b2lkIAptYWtlX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXJhdG9y
IF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QpCnsKICBfX21ha2VfaGVhcChf
X2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLCBf
X2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNsYXNzIF9UcCwgY2xhc3Mg
X0Rpc3RhbmNlPgp2b2lkCl9fbWFrZV9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0
LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAgICAgICBfQ29tcGFyZSBfX2Nv
bXAsIF9UcCosIF9EaXN0YW5jZSopCnsKICBpZiAoX19sYXN0IC0gX19maXJzdCA8IDIpIHJldHVy
bjsKICBfRGlzdGFuY2UgX19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0OwogIF9EaXN0YW5jZSBfX3Bh
cmVudCA9IChfX2xlbiAtIDIpLzI7CiAgICAKICB3aGlsZSAodHJ1ZSkgewogICAgX19hZGp1c3Rf
aGVhcChfX2ZpcnN0LCBfX3BhcmVudCwgX19sZW4sIF9UcCgqKF9fZmlyc3QgKyBfX3BhcmVudCkp
LAogICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgaWYgKF9fcGFyZW50ID09IDApIHJldHVy
bjsKICAgIF9fcGFyZW50LS07CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgCm1ha2VfaGVhcChfUmFuZG9tQWNj
ZXNzSXRlcmF0b3IgX19maXJzdCwgCiAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19s
YXN0LCBfQ29tcGFyZSBfX2NvbXApCnsKICBfX21ha2VfaGVhcChfX2ZpcnN0LCBfX2xhc3QsIF9f
Y29tcCwKICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsIF9fZGlzdGFuY2Vf
dHlwZSggX19maXJzdCApICk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0
b3I+CnZvaWQgc29ydF9oZWFwKF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9t
QWNjZXNzSXRlcmF0b3IgX19sYXN0KQp7CiAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQog
ICAgcG9wX2hlYXAoX19maXJzdCwgX19sYXN0LS0pOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCAKc29ydF9oZWFwKF9SYW5kb21B
Y2Nlc3NJdGVyYXRvciBfX2ZpcnN0LAogICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9f
bGFzdCwgX0NvbXBhcmUgX19jb21wKQp7CiAgd2hpbGUgKF9fbGFzdCAtIF9fZmlyc3QgPiAxKQog
ICAgcG9wX2hlYXAoX19maXJzdCwgX19sYXN0LS0sIF9fY29tcCk7Cn0KCgoKCgogCgoKCiAKIAog
CiMgMzQgIi91ZnMvbmV3bWFuL3VzZXJzL2RlcnJpY2svZ251L2djYy0yLjk1LjMvbGliL2djYy1s
aWIvaTY4Ni1wYy1saW51eC1nbnUvMi45NS4zLy4uLy4uLy4uLy4uL2luY2x1ZGUvZysrLTMvc3Rs
X2FsZ28uaCIgMiAzCgoKIAoKCgoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmlubGluZSBjb25z
dCBfVHAmIF9fbWVkaWFuKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgY29uc3QgX1Rw
JiBfX2MpIHsKICBpZiAoX19hIDwgX19iKQogICAgaWYgKF9fYiA8IF9fYykKICAgICAgcmV0dXJu
IF9fYjsKICAgIGVsc2UgaWYgKF9fYSA8IF9fYykKICAgICAgcmV0dXJuIF9fYzsKICAgIGVsc2UK
ICAgICAgcmV0dXJuIF9fYTsKICBlbHNlIGlmIChfX2EgPCBfX2MpCiAgICByZXR1cm4gX19hOwog
IGVsc2UgaWYgKF9fYiA8IF9fYykKICAgIHJldHVybiBfX2M7CiAgZWxzZQogICAgcmV0dXJuIF9f
YjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBjb25zdCBf
VHAmCl9fbWVkaWFuKGNvbnN0IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYiwgY29uc3QgX1RwJiBf
X2MsIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2NvbXAoX19hLCBfX2IpKQogICAgaWYgKF9f
Y29tcChfX2IsIF9fYykpCiAgICAgIHJldHVybiBfX2I7CiAgICBlbHNlIGlmIChfX2NvbXAoX19h
LCBfX2MpKQogICAgICByZXR1cm4gX19jOwogICAgZWxzZQogICAgICByZXR1cm4gX19hOwogIGVs
c2UgaWYgKF9fY29tcChfX2EsIF9fYykpCiAgICByZXR1cm4gX19hOwogIGVsc2UgaWYgKF9fY29t
cChfX2IsIF9fYykpCiAgICByZXR1cm4gX19jOwogIGVsc2UKICAgIHJldHVybiBfX2I7Cn0KCiAK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9GdW5jdGlvbj4KX0Z1bmN0aW9uIGZv
cl9lYWNoKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9GdW5jdGlvbiBf
X2YpIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBfX2YoKl9f
Zmlyc3QpOwogIHJldHVybiBfX2Y7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBj
bGFzcyBfVHA+CmlubGluZSBfSW5wdXRJdGVyIGZpbmQoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5w
dXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9fdmFsLAog
ICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2l0ZXJhdG9yX3RhZykKewogIHdoaWxlIChfX2Zp
cnN0ICE9IF9fbGFzdCAmJiAqX19maXJzdCAhPSBfX3ZhbCkKICAgICsrX19maXJzdDsKICByZXR1
cm4gX19maXJzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9QcmVkaWNh
dGU+CmlubGluZSBfSW5wdXRJdGVyIGZpbmRfaWYoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9pdGVyYXRvcl90YWcpCnsKICB3aGlsZSAo
X19maXJzdCAhPSBfX2xhc3QgJiYgIV9fcHJlZCgqX19maXJzdCkpCiAgICArK19fZmlyc3Q7CiAg
cmV0dXJuIF9fZmlyc3Q7Cn0KCgoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBj
bGFzcyBfVHA+Cl9SYW5kb21BY2Nlc3NJdGVyIGZpbmQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJz
dCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IF9UcCYgX192YWwsCiAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRv
cl90YWcpCnsKICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X1JhbmRvbUFjY2Vzc0l0ZXI+Ojpk
aWZmZXJlbmNlX3R5cGUgX190cmlwX2NvdW50CiAgICA9IChfX2xhc3QgLSBfX2ZpcnN0KSA+PiAy
OwoKICBmb3IgKCA7IF9fdHJpcF9jb3VudCA+IDAgOyAtLV9fdHJpcF9jb3VudCkgewogICAgaWYg
KCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKCiAgICBp
ZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwoKICAg
IGlmICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7Cgog
ICAgaWYgKCpfX2ZpcnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsK
ICB9CgogIHN3aXRjaChfX2xhc3QgLSBfX2ZpcnN0KSB7CiAgY2FzZSAzOgogICAgaWYgKCpfX2Zp
cnN0ID09IF9fdmFsKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKICBjYXNlIDI6CiAg
ICBpZiAoKl9fZmlyc3QgPT0gX192YWwpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0Owog
IGNhc2UgMToKICAgIGlmICgqX19maXJzdCA9PSBfX3ZhbCkgcmV0dXJuIF9fZmlyc3Q7CiAgICAr
K19fZmlyc3Q7CiAgY2FzZSAwOgogIGRlZmF1bHQ6CiAgICByZXR1cm4gX19sYXN0OwogIH0KfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgpfUmFu
ZG9tQWNjZXNzSXRlciBmaW5kX2lmKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9f
cHJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh
ZykKewogIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcj46OmRpZmZl
cmVuY2VfdHlwZSBfX3RyaXBfY291bnQKICAgID0gKF9fbGFzdCAtIF9fZmlyc3QpID4+IDI7Cgog
IGZvciAoIDsgX190cmlwX2NvdW50ID4gMCA7IC0tX190cmlwX2NvdW50KSB7CiAgICBpZiAoX19w
cmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CgogICAgaWYgKF9f
cHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwoKICAgIGlmIChf
X3ByZWQoKl9fZmlyc3QpKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKCiAgICBpZiAo
X19wcmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgfQoKICBz
d2l0Y2goX19sYXN0IC0gX19maXJzdCkgewogIGNhc2UgMzoKICAgIGlmIChfX3ByZWQoKl9fZmly
c3QpKSByZXR1cm4gX19maXJzdDsKICAgICsrX19maXJzdDsKICBjYXNlIDI6CiAgICBpZiAoX19w
cmVkKCpfX2ZpcnN0KSkgcmV0dXJuIF9fZmlyc3Q7CiAgICArK19fZmlyc3Q7CiAgY2FzZSAxOgog
ICAgaWYgKF9fcHJlZCgqX19maXJzdCkpIHJldHVybiBfX2ZpcnN0OwogICAgKytfX2ZpcnN0Owog
IGNhc2UgMDoKICBkZWZhdWx0OgogICAgcmV0dXJuIF9fbGFzdDsKICB9Cn0KCgoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIF9JbnB1dEl0ZXIgZmluZChfSW5w
dXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IF9UcCYgX192YWwpCnsKICByZXR1cm4gZmluZChfX2ZpcnN0LCBfX2xhc3QsIF9fdmFs
LCBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
bnB1dEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+CmlubGluZSBfSW5wdXRJdGVyIGZpbmRfaWYoX0lu
cHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUHJlZGljYXRlIF9fcHJlZCkgewogIHJldHVybiBmaW5kX2lmKF9fZmlyc3QsIF9fbGFz
dCwgX19wcmVkLCBfX2l0ZXJhdG9yX2NhdGVnb3J5KCBfX2ZpcnN0ICkgKTsKfQoKIAoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIGFkamFjZW50X2ZpbmQoX0Zvcndh
cmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9PSBf
X2xhc3QpCiAgICByZXR1cm4gX19sYXN0OwogIF9Gb3J3YXJkSXRlciBfX25leHQgPSBfX2ZpcnN0
OwogIHdoaWxlKCsrX19uZXh0ICE9IF9fbGFzdCkgewogICAgaWYgKCpfX2ZpcnN0ID09ICpfX25l
eHQpCiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgX19maXJzdCA9IF9fbmV4dDsKICB9CiAgcmV0
dXJuIF9fbGFzdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0JpbmFy
eVByZWRpY2F0ZT4KX0ZvcndhcmRJdGVyIGFkamFjZW50X2ZpbmQoX0ZvcndhcmRJdGVyIF9fZmly
c3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaW5h
cnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkgewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAg
IHJldHVybiBfX2xhc3Q7CiAgX0ZvcndhcmRJdGVyIF9fbmV4dCA9IF9fZmlyc3Q7CiAgd2hpbGUo
KytfX25leHQgIT0gX19sYXN0KSB7CiAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19maXJzdCwgKl9f
bmV4dCkpCiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgX19maXJzdCA9IF9fbmV4dDsKICB9CiAg
cmV0dXJuIF9fbGFzdDsKfQoKIAogCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwg
Y2xhc3MgX1RwLCBjbGFzcyBfU2l6ZT4Kdm9pZCBjb3VudChfSW5wdXRJdGVyIF9fZmlyc3QsIF9J
bnB1dEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsdWUsCiAgICAgICAgICAgX1NpemUmIF9f
bikgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKICAgIGlmICgqX19m
aXJzdCA9PSBfX3ZhbHVlKQogICAgICArK19fbjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9QcmVkaWNhdGUsIGNsYXNzIF9TaXplPgp2b2lkIGNvdW50X2lmKF9JbnB1dEl0
ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsIF9QcmVkaWNhdGUgX19wcmVkLAogICAgICAg
ICAgICAgIF9TaXplJiBfX24pIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmly
c3QpCiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgKytfX247Cn0KCgoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9UcD4KdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
bnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUKY291bnQoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5w
dXRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbHVlKSB7CiAgdHlwZW5hbWUgaXRlcmF0b3Jf
dHJhaXRzPF9JbnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICBmb3IgKCA7IF9f
Zmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoKl9fZmlyc3QgPT0gX192YWx1ZSkK
ICAgICAgKytfX247CiAgcmV0dXJuIF9fbjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIs
IGNsYXNzIF9QcmVkaWNhdGU+CnR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyPjo6
ZGlmZmVyZW5jZV90eXBlCmNvdW50X2lmKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBf
X2xhc3QsIF9QcmVkaWNhdGUgX19wcmVkKSB7CiAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J
bnB1dEl0ZXI+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICBmb3IgKCA7IF9fZmlyc3QgIT0g
X19sYXN0OyArK19fZmlyc3QpCiAgICBpZiAoX19wcmVkKCpfX2ZpcnN0KSkKICAgICAgKytfX247
CiAgcmV0dXJuIF9fbjsKfQoKCgoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNs
YXNzIF9Gb3J3YXJkSXRlcjI+Cl9Gb3J3YXJkSXRlcjEgc2VhcmNoKF9Gb3J3YXJkSXRlcjEgX19m
aXJzdDEsIF9Gb3J3YXJkSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgX0Zvcndh
cmRJdGVyMiBfX2ZpcnN0MiwgX0ZvcndhcmRJdGVyMiBfX2xhc3QyKSAKewogICAKICBpZiAoX19m
aXJzdDEgPT0gX19sYXN0MSB8fCBfX2ZpcnN0MiA9PSBfX2xhc3QyKQogICAgcmV0dXJuIF9fZmly
c3QxOwoKICAgCiAgX0ZvcndhcmRJdGVyMiBfX3RtcChfX2ZpcnN0Mik7CiAgKytfX3RtcDsKICBp
ZiAoX190bXAgPT0gX19sYXN0MikKICAgIHJldHVybiBmaW5kKF9fZmlyc3QxLCBfX2xhc3QxLCAq
X19maXJzdDIpOwoKICAgCgogIF9Gb3J3YXJkSXRlcjIgX19wMSwgX19wOwoKICBfX3AxID0gX19m
aXJzdDI7ICsrX19wMTsKCiAgX0ZvcndhcmRJdGVyMSBfX2N1cnJlbnQgPSBfX2ZpcnN0MTsKCiAg
d2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEpIHsKICAgIF9fZmlyc3QxID0gZmluZChfX2ZpcnN0
MSwgX19sYXN0MSwgKl9fZmlyc3QyKTsKICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogICAg
ICByZXR1cm4gX19sYXN0MTsKCiAgICBfX3AgPSBfX3AxOwogICAgX19jdXJyZW50ID0gX19maXJz
dDE7IAogICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpCiAgICAgIHJldHVybiBfX2xhc3Qx
OwoKICAgIHdoaWxlICgqX19jdXJyZW50ID09ICpfX3ApIHsKICAgICAgaWYgKCsrX19wID09IF9f
bGFzdDIpCiAgICAgICAgcmV0dXJuIF9fZmlyc3QxOwogICAgICBpZiAoKytfX2N1cnJlbnQgPT0g
X19sYXN0MSkKICAgICAgICByZXR1cm4gX19sYXN0MTsKICAgIH0KCiAgICArK19fZmlyc3QxOwog
IH0KICByZXR1cm4gX19maXJzdDE7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIxLCBj
bGFzcyBfRm9yd2FyZEl0ZXIyLCBjbGFzcyBfQmluYXJ5UHJlZD4KX0ZvcndhcmRJdGVyMSBzZWFy
Y2goX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXIyIF9fbGFz
dDIsCiAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkICBfX3ByZWRpY2F0ZSkgCnsKICAg
CiAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEgfHwgX19maXJzdDIgPT0gX19sYXN0MikKICAgIHJl
dHVybiBfX2ZpcnN0MTsKCiAgIAogIF9Gb3J3YXJkSXRlcjIgX190bXAoX19maXJzdDIpOwogICsr
X190bXA7CiAgaWYgKF9fdG1wID09IF9fbGFzdDIpCiAgICByZXR1cm4gZmluZChfX2ZpcnN0MSwg
X19sYXN0MSwgKl9fZmlyc3QyKTsKCiAgIAoKICBfRm9yd2FyZEl0ZXIyIF9fcDEsIF9fcDsKCiAg
X19wMSA9IF9fZmlyc3QyOyArK19fcDE7CgogIF9Gb3J3YXJkSXRlcjEgX19jdXJyZW50ID0gX19m
aXJzdDE7CgogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxKSB7CiAgICB3aGlsZSAoX19maXJz
dDEgIT0gX19sYXN0MSkgewogICAgICBpZiAoX19wcmVkaWNhdGUoKl9fZmlyc3QxLCAqX19maXJz
dDIpKQogICAgICAgIGJyZWFrOwogICAgICArK19fZmlyc3QxOwogICAgfQogICAgd2hpbGUgKF9f
Zmlyc3QxICE9IF9fbGFzdDEgJiYgIV9fcHJlZGljYXRlKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkK
ICAgICAgKytfX2ZpcnN0MTsKICAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogICAgICByZXR1
cm4gX19sYXN0MTsKCiAgICBfX3AgPSBfX3AxOwogICAgX19jdXJyZW50ID0gX19maXJzdDE7IAog
ICAgaWYgKCsrX19jdXJyZW50ID09IF9fbGFzdDEpIHJldHVybiBfX2xhc3QxOwoKICAgIHdoaWxl
IChfX3ByZWRpY2F0ZSgqX19jdXJyZW50LCAqX19wKSkgewogICAgICBpZiAoKytfX3AgPT0gX19s
YXN0MikKICAgICAgICByZXR1cm4gX19maXJzdDE7CiAgICAgIGlmICgrK19fY3VycmVudCA9PSBf
X2xhc3QxKQogICAgICAgIHJldHVybiBfX2xhc3QxOwogICAgfQoKICAgICsrX19maXJzdDE7CiAg
fQogIHJldHVybiBfX2ZpcnN0MTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwg
Y2xhc3MgX0ludGVnZXIsIGNsYXNzIF9UcD4KX0ZvcndhcmRJdGVyIHNlYXJjaF9uKF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAg
X0ludGVnZXIgX19jb3VudCwgY29uc3QgX1RwJiBfX3ZhbCkgewogIGlmIChfX2NvdW50IDw9IDAp
CiAgICByZXR1cm4gX19maXJzdDsKICBlbHNlIHsKICAgIF9fZmlyc3QgPSBmaW5kKF9fZmlyc3Qs
IF9fbGFzdCwgX192YWwpOwogICAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICAgIF9J
bnRlZ2VyIF9fbiA9IF9fY291bnQgLSAxOwogICAgICBfRm9yd2FyZEl0ZXIgX19pID0gX19maXJz
dDsKICAgICAgKytfX2k7CiAgICAgIHdoaWxlIChfX2kgIT0gX19sYXN0ICYmIF9fbiAhPSAwICYm
ICpfX2kgPT0gX192YWwpIHsKICAgICAgICArK19faTsKICAgICAgICAtLV9fbjsKICAgICAgfQog
ICAgICBpZiAoX19uID09IDApCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGVsc2UKICAg
ICAgICBfX2ZpcnN0ID0gZmluZChfX2ksIF9fbGFzdCwgX192YWwpOwogICAgfQogICAgcmV0dXJu
IF9fbGFzdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9JbnRl
Z2VyLCBjbGFzcyBfVHAsIGNsYXNzIF9CaW5hcnlQcmVkPgpfRm9yd2FyZEl0ZXIgc2VhcmNoX24o
X0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgICBfSW50ZWdlciBfX2NvdW50LCBjb25zdCBfVHAmIF9fdmFsLAogICAgICAgICAgICAg
ICAgICAgICAgX0JpbmFyeVByZWQgX19iaW5hcnlfcHJlZCkgewogIGlmIChfX2NvdW50IDw9IDAp
CiAgICByZXR1cm4gX19maXJzdDsKICBlbHNlIHsKICAgIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFz
dCkgewogICAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19maXJzdCwgX192YWwpKQogICAgICAgIGJy
ZWFrOwogICAgICArK19fZmlyc3Q7CiAgICB9CiAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3Qp
IHsKICAgICAgX0ludGVnZXIgX19uID0gX19jb3VudCAtIDE7CiAgICAgIF9Gb3J3YXJkSXRlciBf
X2kgPSBfX2ZpcnN0OwogICAgICArK19faTsKICAgICAgd2hpbGUgKF9faSAhPSBfX2xhc3QgJiYg
X19uICE9IDAgJiYgX19iaW5hcnlfcHJlZCgqX19pLCBfX3ZhbCkpIHsKICAgICAgICArK19faTsK
ICAgICAgICAtLV9fbjsKICAgICAgfQogICAgICBpZiAoX19uID09IDApCiAgICAgICAgcmV0dXJu
IF9fZmlyc3Q7CiAgICAgIGVsc2UgewogICAgICAgIHdoaWxlIChfX2kgIT0gX19sYXN0KSB7CiAg
ICAgICAgICBpZiAoX19iaW5hcnlfcHJlZCgqX19pLCBfX3ZhbCkpCiAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgKytfX2k7CiAgICAgICAgfQogICAgICAgIF9fZmlyc3QgPSBfX2k7CiAgICAg
IH0KICAgIH0KICAgIHJldHVybiBfX2xhc3Q7CiAgfQp9IAoKIAoKdGVtcGxhdGUgPGNsYXNzIF9G
b3J3YXJkSXRlcjEsIGNsYXNzIF9Gb3J3YXJkSXRlcjI+Cl9Gb3J3YXJkSXRlcjIgc3dhcF9yYW5n
ZXMoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIpIHsKICBmb3IgKCA7IF9f
Zmlyc3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICsrX19maXJzdDIpCiAgICBpdGVyX3N3YXAo
X19maXJzdDEsIF9fZmlyc3QyKTsKICByZXR1cm4gX19maXJzdDI7Cn0KCiAKCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX1VuYXJ5T3BlcmF0aW9u
PgpfT3V0cHV0SXRlciB0cmFuc2Zvcm0oX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVzdWx0LCBfVW5hcnlP
cGVyYXRpb24gX19vcGVyKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0
LCArK19fcmVzdWx0KQogICAgKl9fcmVzdWx0ID0gX19vcGVyKCpfX2ZpcnN0KTsKICByZXR1cm4g
X19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRl
cjIsIGNsYXNzIF9PdXRwdXRJdGVyLAogICAgICAgICAgY2xhc3MgX0JpbmFyeU9wZXJhdGlvbj4K
X091dHB1dEl0ZXIgdHJhbnNmb3JtKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBf
X2xhc3QxLAogICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9PdXRw
dXRJdGVyIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeU9wZXJhdGlvbiBf
X2JpbmFyeV9vcCkgewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0MSwg
KytfX2ZpcnN0MiwgKytfX3Jlc3VsdCkKICAgICpfX3Jlc3VsdCA9IF9fYmluYXJ5X29wKCpfX2Zp
cnN0MSwgKl9fZmlyc3QyKTsKICByZXR1cm4gX19yZXN1bHQ7Cn0KCiAKCnRlbXBsYXRlIDxjbGFz
cyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4Kdm9pZCByZXBsYWNlKF9Gb3J3YXJkSXRlciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgY29uc3QgX1RwJiBfX29sZF92
YWx1ZSwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xh
c3Q7ICsrX19maXJzdCkKICAgIGlmICgqX19maXJzdCA9PSBfX29sZF92YWx1ZSkKICAgICAgKl9f
Zmlyc3QgPSBfX25ld192YWx1ZTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xh
c3MgX1ByZWRpY2F0ZSwgY2xhc3MgX1RwPgp2b2lkIHJlcGxhY2VfaWYoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9f
cHJlZCwgY29uc3QgX1RwJiBfX25ld192YWx1ZSkgewogIGZvciAoIDsgX19maXJzdCAhPSBfX2xh
c3Q7ICsrX19maXJzdCkKICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKQogICAgICAqX19maXJzdCA9
IF9fbmV3X3ZhbHVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1
dEl0ZXIsIGNsYXNzIF9UcD4KX091dHB1dEl0ZXIgcmVwbGFjZV9jb3B5KF9JbnB1dEl0ZXIgX19m
aXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX19vbGRf
dmFsdWUsIGNvbnN0IF9UcCYgX19uZXdfdmFsdWUpIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19s
YXN0OyArK19fZmlyc3QsICsrX19yZXN1bHQpCiAgICAqX19yZXN1bHQgPSAqX19maXJzdCA9PSBf
X29sZF92YWx1ZSA/IF9fbmV3X3ZhbHVlIDogKl9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfUHJl
ZGljYXRlLCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVyIHJlcGxhY2VfY29weV9pZihJdGVyYXRvciBf
X2ZpcnN0LCBJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0
cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUg
X19wcmVkLCBjb25zdCBfVHAmIF9fbmV3X3ZhbHVlKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9f
bGFzdDsgKytfX2ZpcnN0LCArK19fcmVzdWx0KQogICAgKl9fcmVzdWx0ID0gX19wcmVkKCpfX2Zp
cnN0KSA/IF9fbmV3X3ZhbHVlIDogKl9fZmlyc3Q7CiAgcmV0dXJuIF9fcmVzdWx0Owp9CgogCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfR2VuZXJhdG9yPgp2b2lkIGdlbmVy
YXRlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBfR2VuZXJhdG9y
IF9fZ2VuKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogICAgKl9f
Zmlyc3QgPSBfX2dlbigpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX091dHB1dEl0ZXIsIGNsYXNzIF9T
aXplLCBjbGFzcyBfR2VuZXJhdG9yPgpfT3V0cHV0SXRlciBnZW5lcmF0ZV9uKF9PdXRwdXRJdGVy
IF9fZmlyc3QsIF9TaXplIF9fbiwgX0dlbmVyYXRvciBfX2dlbikgewogIGZvciAoIDsgX19uID4g
MDsgLS1fX24sICsrX19maXJzdCkKICAgICpfX2ZpcnN0ID0gX19nZW4oKTsKICByZXR1cm4gX19m
aXJzdDsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVy
LCBjbGFzcyBfVHA+Cl9PdXRwdXRJdGVyIHJlbW92ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwg
X0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9f
cmVzdWx0LCBjb25zdCBfVHAmIF9fdmFsdWUpIHsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0
OyArK19fZmlyc3QpCiAgICBpZiAoKl9fZmlyc3QgIT0gX192YWx1ZSkgewogICAgICAqX19yZXN1
bHQgPSAqX19maXJzdDsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7
Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlciwgY2xhc3Mg
X1ByZWRpY2F0ZT4KX091dHB1dEl0ZXIgcmVtb3ZlX2NvcHlfaWYoX0lucHV0SXRlciBfX2ZpcnN0
LCBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0
ZXIgX19yZXN1bHQsIF9QcmVkaWNhdGUgX19wcmVkKSB7CiAgZm9yICggOyBfX2ZpcnN0ICE9IF9f
bGFzdDsgKytfX2ZpcnN0KQogICAgaWYgKCFfX3ByZWQoKl9fZmlyc3QpKSB7CiAgICAgICpfX3Jl
c3VsdCA9ICpfX2ZpcnN0OwogICAgICArK19fcmVzdWx0OwogICAgfQogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwPgpfRm9yd2FyZEl0
ZXIgcmVtb3ZlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWx1ZSkgewogIF9fZmlyc3QgPSBmaW5kKF9f
Zmlyc3QsIF9fbGFzdCwgX192YWx1ZSk7CiAgX0ZvcndhcmRJdGVyIF9faSA9IF9fZmlyc3Q7CiAg
cmV0dXJuIF9fZmlyc3QgPT0gX19sYXN0ID8gX19maXJzdCAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiByZW1vdmVfY29weSgrK19faSwgX19sYXN0LCBfX2ZpcnN0LCBfX3ZhbHVlKTsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZT4KX0ZvcndhcmRJ
dGVyIHJlbW92ZV9pZihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICBfUHJlZGljYXRlIF9fcHJlZCkgewogIF9fZmlyc3QgPSBm
aW5kX2lmKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkKTsKICBfRm9yd2FyZEl0ZXIgX19pID0gX19m
aXJzdDsKICByZXR1cm4gX19maXJzdCA9PSBfX2xhc3QgPyBfX2ZpcnN0IAogICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IHJlbW92ZV9jb3B5X2lmKCsrX19pLCBfX2xhc3QsIF9fZmlyc3QsIF9f
cHJlZCk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfT3V0cHV0SXRl
ciwgY2xhc3MgX1RwPgpfT3V0cHV0SXRlciBfX3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJz
dCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0
ZXIgX19yZXN1bHQsIF9UcCopIHsKICBfVHAgX192YWx1ZSA9ICpfX2ZpcnN0OwogICpfX3Jlc3Vs
dCA9IF9fdmFsdWU7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAoX192YWx1
ZSAhPSAqX19maXJzdCkgewogICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAgICAgICorK19fcmVz
dWx0ID0gX192YWx1ZTsKICAgIH0KICByZXR1cm4gKytfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyPgppbmxpbmUgX091dHB1dEl0ZXIgX191
bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9pdGVyYXRvcl90YWcpIHsKICByZXR1cm4g
X191bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LCBfX3ZhbHVlX3R5cGUoIF9f
Zmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJ
dGVyPgpfRm9yd2FyZEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1
dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19y
ZXN1bHQsIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7CiAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAg
d2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAoKl9fcmVzdWx0ICE9ICpfX2ZpcnN0
KSAqKytfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogIHJldHVybiArK19fcmVzdWx0Owp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX091dHB1dEl0ZXI+CmlubGluZSBfT3V0cHV0SXRl
ciB1bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICBpZiAo
X19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX3Jlc3VsdDsKICByZXR1cm4gX191bmlxdWVfY29w
eShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgIF9faXRl
cmF0b3JfY2F0ZWdvcnkoIF9fcmVzdWx0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlLAogICAgICAgICAg
Y2xhc3MgX1RwPgpfT3V0cHV0SXRlciBfX3VuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwg
X0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIg
X19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2Jp
bmFyeV9wcmVkLCBfVHAqKSB7CiAgX1RwIF9fdmFsdWUgPSAqX19maXJzdDsKICAqX19yZXN1bHQg
PSBfX3ZhbHVlOwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KQogICAgaWYgKCFfX2JpbmFy
eV9wcmVkKF9fdmFsdWUsICpfX2ZpcnN0KSkgewogICAgICBfX3ZhbHVlID0gKl9fZmlyc3Q7CiAg
ICAgICorK19fcmVzdWx0ID0gX192YWx1ZTsKICAgIH0KICByZXR1cm4gKytfX3Jlc3VsdDsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfQmlu
YXJ5UHJlZGljYXRlPgppbmxpbmUgX091dHB1dEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVy
IF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXRfaXRlcmF0b3JfdGFnKSB7CiAgcmV0dXJuIF9fdW5pcXVlX2NvcHko
X19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCwgX19iaW5hcnlfcHJlZCwKICAgICAgICAgICAgICAg
ICAgICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlciwgY2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpfRm9y
d2FyZEl0ZXIgX191bmlxdWVfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQsIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3ByZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRfaXRlcmF0b3JfdGFnKSB7CiAgKl9f
cmVzdWx0ID0gKl9fZmlyc3Q7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpCiAgICBpZiAo
IV9fYmluYXJ5X3ByZWQoKl9fcmVzdWx0LCAqX19maXJzdCkpICorK19fcmVzdWx0ID0gKl9fZmly
c3Q7CiAgcmV0dXJuICsrX19yZXN1bHQ7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBj
bGFzcyBfT3V0cHV0SXRlciwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5saW5lIF9PdXRwdXRJ
dGVyIHVuaXF1ZV9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkg
ewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fcmVzdWx0OwogIHJldHVybiBfX3Vu
aXF1ZV9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHQsIF9fYmluYXJ5X3ByZWQsCiAgICAg
ICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19yZXN1bHQgKSApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyPgpfRm9yd2FyZEl0ZXIgdW5pcXVlKF9Gb3J3YXJk
SXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0KSB7CiAgX19maXJzdCA9IGFkamFjZW50
X2ZpbmQoX19maXJzdCwgX19sYXN0KTsKICByZXR1cm4gdW5pcXVlX2NvcHkoX19maXJzdCwgX19s
YXN0LCBfX2ZpcnN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0Jp
bmFyeVByZWRpY2F0ZT4KX0ZvcndhcmRJdGVyIHVuaXF1ZShfRm9yd2FyZEl0ZXIgX19maXJzdCwg
X0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJlZGljYXRl
IF9fYmluYXJ5X3ByZWQpIHsKICBfX2ZpcnN0ID0gYWRqYWNlbnRfZmluZChfX2ZpcnN0LCBfX2xh
c3QsIF9fYmluYXJ5X3ByZWQpOwogIHJldHVybiB1bmlxdWVfY29weShfX2ZpcnN0LCBfX2xhc3Qs
IF9fZmlyc3QsIF9fYmluYXJ5X3ByZWQpOwp9CgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyPgp2b2lkIF9fcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0Jp
ZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAgIGJpZGlyZWN0aW9uYWxfaXRl
cmF0b3JfdGFnKSB7CiAgd2hpbGUgKHRydWUpCiAgICBpZiAoX19maXJzdCA9PSBfX2xhc3QgfHwg
X19maXJzdCA9PSAtLV9fbGFzdCkKICAgICAgcmV0dXJuOwogICAgZWxzZQogICAgICBpdGVyX3N3
YXAoX19maXJzdCsrLCBfX2xhc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXI+CnZvaWQgX19yZXZlcnNlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nl
c3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcp
IHsKICB3aGlsZSAoX19maXJzdCA8IF9fbGFzdCkKICAgIGl0ZXJfc3dhcChfX2ZpcnN0KyssIC0t
X19sYXN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcj4KaW5saW5lIHZv
aWQgcmV2ZXJzZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGlyZWN0aW9uYWxJdGVy
IF9fbGFzdCkgewogIF9fcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QsIF9faXRlcmF0b3JfY2F0ZWdv
cnkoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBj
bGFzcyBfT3V0cHV0SXRlcj4KX091dHB1dEl0ZXIgcmV2ZXJzZV9jb3B5KF9CaWRpcmVjdGlvbmFs
SXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVz
dWx0KSB7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICAtLV9fbGFzdDsKICAgICpf
X3Jlc3VsdCA9ICpfX2xhc3Q7CiAgICArK19fcmVzdWx0OwogIH0KICByZXR1cm4gX19yZXN1bHQ7
Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfRXVjbGlkZWFuUmluZ0VsZW1lbnQ+Cl9FdWNsaWRlYW5S
aW5nRWxlbWVudCBfX2djZChfRXVjbGlkZWFuUmluZ0VsZW1lbnQgX19tLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fbikKewogIHdoaWxlIChfX24g
IT0gMCkgewogICAgX0V1Y2xpZGVhblJpbmdFbGVtZW50IF9fdCA9IF9fbSAlIF9fbjsKICAgIF9f
bSA9IF9fbjsKICAgIF9fbiA9IF9fdDsKICB9CiAgcmV0dXJuIF9fbTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX19yb3RhdGUo
X0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIg
X19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAg
ICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlKiwKICAgICAgICAgICAgICAgICAgICAgIGZvcndh
cmRfaXRlcmF0b3JfdGFnKSB7CiAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICByZXR1cm4g
X19sYXN0OwogIGlmIChfX2xhc3QgID09IF9fbWlkZGxlKQogICAgcmV0dXJuIF9fZmlyc3Q7Cgog
IF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiA9IF9fbWlkZGxlOwogIGRvIHsKICAgIHN3YXAoKl9fZmly
c3QrKywgKl9fZmlyc3QyKyspOwogICAgaWYgKF9fZmlyc3QgPT0gX19taWRkbGUpCiAgICAgIF9f
bWlkZGxlID0gX19maXJzdDI7CiAgfSB3aGlsZSAoX19maXJzdDIgIT0gX19sYXN0KTsKCiAgX0Zv
cndhcmRJdGVyIF9fbmV3X21pZGRsZSA9IF9fZmlyc3Q7CgogIF9fZmlyc3QyID0gX19taWRkbGU7
CgogIHdoaWxlIChfX2ZpcnN0MiAhPSBfX2xhc3QpIHsKICAgIHN3YXAgKCpfX2ZpcnN0KyssICpf
X2ZpcnN0MisrKTsKICAgIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQogICAgICBfX21pZGRsZSA9
IF9fZmlyc3QyOwogICAgZWxzZSBpZiAoX19maXJzdDIgPT0gX19sYXN0KQogICAgICBfX2ZpcnN0
MiA9IF9fbWlkZGxlOwogIH0KCiAgcmV0dXJuIF9fbmV3X21pZGRsZTsKfQoKCnRlbXBsYXRlIDxj
bGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0YW5jZT4KX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fcm90YXRlKF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9EaXN0YW5jZSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRpcmVj
dGlvbmFsX2l0ZXJhdG9yX3RhZykgewogIGlmIChfX2ZpcnN0ID09IF9fbWlkZGxlKQogICAgcmV0
dXJuIF9fbGFzdDsKICBpZiAoX19sYXN0ICA9PSBfX21pZGRsZSkKICAgIHJldHVybiBfX2ZpcnN0
OwoKICBfX3JldmVyc2UoX19maXJzdCwgIF9fbWlkZGxlLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9y
X3RhZygpKTsKICBfX3JldmVyc2UoX19taWRkbGUsIF9fbGFzdCwgICBiaWRpcmVjdGlvbmFsX2l0
ZXJhdG9yX3RhZygpKTsKCiAgd2hpbGUgKF9fZmlyc3QgIT0gX19taWRkbGUgJiYgX19taWRkbGUg
IT0gX19sYXN0KQogICAgc3dhcCAoKl9fZmlyc3QrKywgKi0tX19sYXN0KTsKCiAgaWYgKF9fZmly
c3QgPT0gX19taWRkbGUpIHsKICAgIF9fcmV2ZXJzZShfX21pZGRsZSwgX19sYXN0LCAgIGJpZGly
ZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCkpOwogICAgcmV0dXJuIF9fbGFzdDsKICB9CiAgZWxzZSB7
CiAgICBfX3JldmVyc2UoX19maXJzdCwgIF9fbWlkZGxlLCBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9y
X3RhZygpKTsKICAgIHJldHVybiBfX2ZpcnN0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5k
b21BY2Nlc3NJdGVyLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9UcD4KX1JhbmRvbUFjY2Vzc0l0
ZXIgX19yb3RhdGUoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0Rpc3RhbmNlICosIF9UcCAqKSB7CgogIF9EaXN0YW5jZSBfX24gPSBfX2xhc3QgICAtIF9f
Zmlyc3Q7CiAgX0Rpc3RhbmNlIF9fayA9IF9fbWlkZGxlIC0gX19maXJzdDsKICBfRGlzdGFuY2Ug
X19sID0gX19uIC0gX19rOwogIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0ID0gX19maXJzdCAr
IChfX2xhc3QgLSBfX21pZGRsZSk7CgogIGlmIChfX2sgPT0gX19sKSB7CiAgICBzd2FwX3Jhbmdl
cyhfX2ZpcnN0LCBfX21pZGRsZSwgX19taWRkbGUpOwogICAgcmV0dXJuIF9fcmVzdWx0OwogIH0K
CiAgX0Rpc3RhbmNlIF9fZCA9IF9fZ2NkKF9fbiwgX19rKTsKCiAgZm9yIChfRGlzdGFuY2UgX19p
ID0gMDsgX19pIDwgX19kOyBfX2krKykgewogICAgX1RwIF9fdG1wID0gKl9fZmlyc3Q7CiAgICBf
UmFuZG9tQWNjZXNzSXRlciBfX3AgPSBfX2ZpcnN0OwoKICAgIGlmIChfX2sgPCBfX2wpIHsKICAg
ICAgZm9yIChfRGlzdGFuY2UgX19qID0gMDsgX19qIDwgX19sL19fZDsgX19qKyspIHsKICAgICAg
ICBpZiAoX19wID4gX19maXJzdCArIF9fbCkgewogICAgICAgICAgKl9fcCA9ICooX19wIC0gX19s
KTsKICAgICAgICAgIF9fcCAtPSBfX2w7CiAgICAgICAgfQoKICAgICAgICAqX19wID0gKihfX3Ag
KyBfX2spOwogICAgICAgIF9fcCArPSBfX2s7CiAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAg
ICAgZm9yIChfRGlzdGFuY2UgX19qID0gMDsgX19qIDwgX19rL19fZCAtIDE7IF9faiArKykgewog
ICAgICAgIGlmIChfX3AgPCBfX2xhc3QgLSBfX2spIHsKICAgICAgICAgICpfX3AgPSAqKF9fcCAr
IF9fayk7CiAgICAgICAgICBfX3AgKz0gX19rOwogICAgICAgIH0KCiAgICAgICAgKl9fcCA9ICog
KF9fcCAtIF9fbCk7CiAgICAgICAgX19wIC09IF9fbDsKICAgICAgfQogICAgfQoKICAgICpfX3Ag
PSBfX3RtcDsKICAgICsrX19maXJzdDsKICB9CgogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KaW5saW5lIF9Gb3J3YXJkSXRlciByb3RhdGUoX0Zvcndh
cmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFzdCkgewogIHJldHVybiBfX3JvdGF0ZShfX2ZpcnN0
LCBfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9f
Zmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3Qg
KSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfT3V0cHV0SXRlcj4K
X091dHB1dEl0ZXIgcm90YXRlX2NvcHkoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRl
ciBfX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xh
c3QsIF9PdXRwdXRJdGVyIF9fcmVzdWx0KSB7CiAgcmV0dXJuIGNvcHkoX19maXJzdCwgX19taWRk
bGUsIGNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19yZXN1bHQpKTsKfQoKIAogCiAKCnRlbXBsYXRl
IDxjbGFzcyBfRGlzdGFuY2U+CmlubGluZSBfRGlzdGFuY2UgX19yYW5kb21fbnVtYmVyKF9EaXN0
YW5jZSBfX24pIHsKCgoKICByZXR1cm4gbHJhbmQ0OCgpICUgX19uOwoKfQoKIAoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgdm9pZCByYW5kb21fc2h1ZmZsZShfUmFu
ZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9t
QWNjZXNzSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9PSBfX2xhc3QpIHJldHVybjsKICBm
b3IgKF9SYW5kb21BY2Nlc3NJdGVyIF9faSA9IF9fZmlyc3QgKyAxOyBfX2kgIT0gX19sYXN0OyAr
K19faSkKICAgIGl0ZXJfc3dhcChfX2ksIF9fZmlyc3QgKyBfX3JhbmRvbV9udW1iZXIoKF9faSAt
IF9fZmlyc3QpICsgMSkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNs
YXNzIF9SYW5kb21OdW1iZXJHZW5lcmF0b3I+CnZvaWQgcmFuZG9tX3NodWZmbGUoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0b3ImIF9fcmFuZCkgewogIGlmIChfX2ZpcnN0ID09
IF9fbGFzdCkgcmV0dXJuOwogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdCAr
IDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAgaXRlcl9zd2FwKF9faSwgX19maXJzdCArIF9f
cmFuZCgoX19pIC0gX19maXJzdCkgKyAxKSk7Cn0KCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2Fy
ZEl0ZXIsIGNsYXNzIF9PdXRwdXRJdGVyLCBjbGFzcyBfRGlzdGFuY2U+Cl9PdXRwdXRJdGVyIHJh
bmRvbV9zYW1wbGVfbihfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fb3V0LCBjb25zdCBfRGlz
dGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fcmVtYWluaW5nID0gMDsKICBkaXN0YW5jZShfX2Zp
cnN0LCBfX2xhc3QsIF9fcmVtYWluaW5nKTsKICBfRGlzdGFuY2UgX19tID0gbWluKF9fbiwgX19y
ZW1haW5pbmcpOwoKICB3aGlsZSAoX19tID4gMCkgewogICAgaWYgKF9fcmFuZG9tX251bWJlcihf
X3JlbWFpbmluZykgPCBfX20pIHsKICAgICAgKl9fb3V0ID0gKl9fZmlyc3Q7CiAgICAgICsrX19v
dXQ7CiAgICAgIC0tX19tOwogICAgfQoKICAgIC0tX19yZW1haW5pbmc7CiAgICArK19fZmlyc3Q7
CiAgfQogIHJldHVybiBfX291dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xh
c3MgX091dHB1dEl0ZXIsIGNsYXNzIF9EaXN0YW5jZSwKICAgICAgICAgIGNsYXNzIF9SYW5kb21O
dW1iZXJHZW5lcmF0b3I+Cl9PdXRwdXRJdGVyIHJhbmRvbV9zYW1wbGVfbihfRm9yd2FyZEl0ZXIg
X19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9PdXRwdXRJdGVyIF9fb3V0LCBjb25zdCBfRGlzdGFuY2UgX19uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1JhbmRvbU51bWJlckdlbmVyYXRvciYgX19yYW5kKQp7CiAgX0Rpc3RhbmNl
IF9fcmVtYWluaW5nID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fcmVtYWluaW5n
KTsKICBfRGlzdGFuY2UgX19tID0gbWluKF9fbiwgX19yZW1haW5pbmcpOwoKICB3aGlsZSAoX19t
ID4gMCkgewogICAgaWYgKF9fcmFuZChfX3JlbWFpbmluZykgPCBfX20pIHsKICAgICAgKl9fb3V0
ID0gKl9fZmlyc3Q7CiAgICAgICsrX19vdXQ7CiAgICAgIC0tX19tOwogICAgfQoKICAgIC0tX19y
ZW1haW5pbmc7CiAgICArK19fZmlyc3Q7CiAgfQogIHJldHVybiBfX291dDsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfRGlzdGFu
Y2U+Cl9SYW5kb21BY2Nlc3NJdGVyIF9fcmFuZG9tX3NhbXBsZShfSW5wdXRJdGVyIF9fZmlyc3Qs
IF9JbnB1dEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Jh
bmRvbUFjY2Vzc0l0ZXIgX19vdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBfRGlzdGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fbSA9IDA7CiAgX0Rpc3RhbmNlIF9f
dCA9IF9fbjsKICBmb3IgKCA7IF9fZmlyc3QgIT0gX19sYXN0ICYmIF9fbSA8IF9fbjsgKytfX20s
ICsrX19maXJzdCkgCiAgICBfX291dFtfX21dID0gKl9fZmlyc3Q7CgogIHdoaWxlIChfX2ZpcnN0
ICE9IF9fbGFzdCkgewogICAgKytfX3Q7CiAgICBfRGlzdGFuY2UgX19NID0gX19yYW5kb21fbnVt
YmVyKF9fdCk7CiAgICBpZiAoX19NIDwgX19uKQogICAgICBfX291dFtfX01dID0gKl9fZmlyc3Q7
CiAgICArK19fZmlyc3Q7CiAgfQoKICByZXR1cm4gX19vdXQgKyBfX207Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwKICAgICAgICAgIGNsYXNz
IF9SYW5kb21OdW1iZXJHZW5lcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KX1JhbmRvbUFjY2Vzc0l0
ZXIgX19yYW5kb21fc2FtcGxlKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX291
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fcmFuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9EaXN0
YW5jZSBfX24pCnsKICBfRGlzdGFuY2UgX19tID0gMDsKICBfRGlzdGFuY2UgX190ID0gX19uOwog
IGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3QgJiYgX19tIDwgX19uOyArK19fbSwgKytfX2ZpcnN0
KQogICAgX19vdXRbX19tXSA9ICpfX2ZpcnN0OwoKICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3Qp
IHsKICAgICsrX190OwogICAgX0Rpc3RhbmNlIF9fTSA9IF9fcmFuZChfX3QpOwogICAgaWYgKF9f
TSA8IF9fbikKICAgICAgX19vdXRbX19NXSA9ICpfX2ZpcnN0OwogICAgKytfX2ZpcnN0OwogIH0K
CiAgcmV0dXJuIF9fb3V0ICsgX19tOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlciwgY2xh
c3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CmlubGluZSBfUmFuZG9tQWNjZXNzSXRlcgpyYW5kb21fc2Ft
cGxlKF9JbnB1dEl0ZXIgX19maXJzdCwgX0lucHV0SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19vdXRfZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fb3V0X2xh
c3QpIAp7CiAgcmV0dXJuIF9fcmFuZG9tX3NhbXBsZShfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICBfX291dF9maXJzdCwgX19vdXRfbGFzdCAtIF9fb3V0X2ZpcnN0KTsK
fQoKCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
CiAgICAgICAgICBjbGFzcyBfUmFuZG9tTnVtYmVyR2VuZXJhdG9yPgppbmxpbmUgX1JhbmRvbUFj
Y2Vzc0l0ZXIKcmFuZG9tX3NhbXBsZShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0ZXIgX19s
YXN0LAogICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fb3V0X2ZpcnN0LCBfUmFuZG9t
QWNjZXNzSXRlciBfX291dF9sYXN0LAogICAgICAgICAgICAgIF9SYW5kb21OdW1iZXJHZW5lcmF0
b3ImIF9fcmFuZCkgCnsKICByZXR1cm4gX19yYW5kb21fc2FtcGxlKF9fZmlyc3QsIF9fbGFzdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIF9fb3V0X2ZpcnN0LCBfX3JhbmQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBfX291dF9sYXN0IC0gX19vdXRfZmlyc3QpOwp9CgogCgp0ZW1wbGF0ZSA8
Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgpfRm9yd2FyZEl0ZXIgX19wYXJ0
aXRpb24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsCgkJICAgICAgICAgX0ZvcndhcmRJdGVyIF9fbGFz
dCwKCQkJIF9QcmVkaWNhdGUgICBfX3ByZWQsCgkJCSBmb3J3YXJkX2l0ZXJhdG9yX3RhZykgewog
IGlmIChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CgogIHdoaWxlIChfX3ByZWQo
Kl9fZmlyc3QpKQogICAgaWYgKCsrX19maXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwoK
ICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19maXJzdDsKCiAgd2hpbGUgKCsrX19uZXh0ICE9IF9f
bGFzdCkKICAgIGlmIChfX3ByZWQoKl9fbmV4dCkpIHsKICAgICAgc3dhcCgqX19maXJzdCwgKl9f
bmV4dCk7CiAgICAgICsrX19maXJzdDsKICAgIH0KCiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCnRlbXBs
YXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9QcmVkaWNhdGU+Cl9CaWRpcmVj
dGlvbmFsSXRlciBfX3BhcnRpdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCgkJCSAg
ICAgICBfUHJlZGljYXRlIF9fcHJlZCwKCQkJICAgICAgIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnKSB7CiAgd2hpbGUgKHRydWUpIHsKICAgIHdoaWxlICh0cnVlKQogICAgICBpZiAoX19maXJz
dCA9PSBfX2xhc3QpCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGVsc2UgaWYgKF9fcHJl
ZCgqX19maXJzdCkpCiAgICAgICAgKytfX2ZpcnN0OwogICAgICBlbHNlCiAgICAgICAgYnJlYWs7
CiAgICAtLV9fbGFzdDsKICAgIHdoaWxlICh0cnVlKQogICAgICBpZiAoX19maXJzdCA9PSBfX2xh
c3QpCiAgICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICAgIGVsc2UgaWYgKCFfX3ByZWQoKl9fbGFz
dCkpCiAgICAgICAgLS1fX2xhc3Q7CiAgICAgIGVsc2UKICAgICAgICBicmVhazsKICAgIGl0ZXJf
c3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICAgKytfX2ZpcnN0OwogIH0KfQoKdGVtcGxhdGUgPGNs
YXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZT4KaW5saW5lIF9Gb3J3YXJkSXRlciBw
YXJ0aXRpb24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgIAkJCSAgICAgIF9Gb3J3YXJkSXRlciBf
X2xhc3QsCgkJCSAgICAgIF9QcmVkaWNhdGUgICBfX3ByZWQpIHsKICByZXR1cm4gX19wYXJ0aXRp
b24oX19maXJzdCwgX19sYXN0LCBfX3ByZWQsIF9faXRlcmF0b3JfY2F0ZWdvcnkoIF9fZmlyc3Qg
KSApOwp9CgoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1ByZWRpY2F0ZSwg
Y2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0ZXIgX19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24o
X0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1ByZWRpY2F0ZSBfX3ByZWQsIF9EaXN0YW5jZSBfX2xlbikgewogIGlmIChfX2xl
biA9PSAxKQogICAgcmV0dXJuIF9fcHJlZCgqX19maXJzdCkgPyBfX2xhc3QgOiBfX2ZpcnN0Owog
IF9Gb3J3YXJkSXRlciBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgYWR2YW5jZShfX21pZGRsZSwgX19s
ZW4gLyAyKTsKICByZXR1cm4gcm90YXRlKF9faW5wbGFjZV9zdGFibGVfcGFydGl0aW9uKF9fZmly
c3QsIF9fbWlkZGxlLCBfX3ByZWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX19sZW4gLyAyKSwKICAgICAgICAgICAgICAgIF9fbWlkZGxlLAogICAgICAgICAg
ICAgICAgX19pbnBsYWNlX3N0YWJsZV9wYXJ0aXRpb24oX19taWRkbGUsIF9fbGFzdCwgX19wcmVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4gLSBfX2xl
biAvIDIpKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1BvaW50ZXIs
IGNsYXNzIF9QcmVkaWNhdGUsIAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgpfRm9yd2FyZEl0
ZXIgX19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ByZWRpY2F0ZSBfX3By
ZWQsIF9EaXN0YW5jZSBfX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUG9pbnRlciBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkgCnsKICBpZiAoX19sZW4gPD0gX19idWZm
ZXJfc2l6ZSkgewogICAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0MSA9IF9fZmlyc3Q7CiAgICBfUG9p
bnRlciBfX3Jlc3VsdDIgPSBfX2J1ZmZlcjsKICAgIGZvciAoIDsgX19maXJzdCAhPSBfX2xhc3Qg
OyArK19fZmlyc3QpCiAgICAgIGlmIChfX3ByZWQoKl9fZmlyc3QpKSB7CiAgICAgICAgKl9fcmVz
dWx0MSA9ICpfX2ZpcnN0OwogICAgICAgICsrX19yZXN1bHQxOwogICAgICB9CiAgICAgIGVsc2Ug
ewogICAgICAgICpfX3Jlc3VsdDIgPSAqX19maXJzdDsKICAgICAgICArK19fcmVzdWx0MjsKICAg
ICAgfQogICAgY29weShfX2J1ZmZlciwgX19yZXN1bHQyLCBfX3Jlc3VsdDEpOwogICAgcmV0dXJu
IF9fcmVzdWx0MTsKICB9CiAgZWxzZSB7CiAgICBfRm9yd2FyZEl0ZXIgX19taWRkbGUgPSBfX2Zp
cnN0OwogICAgYWR2YW5jZShfX21pZGRsZSwgX19sZW4gLyAyKTsKICAgIHJldHVybiByb3RhdGUo
X19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKAogICAgICAgICAgICAgICAgICAgICAgICAgIF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX3ByZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgX19sZW4g
LyAyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSksCiAgICAgICAgICAgICAgICAgICAgX19taWRk
bGUsCiAgICAgICAgICAgICAgICAgICAgX19zdGFibGVfcGFydGl0aW9uX2FkYXB0aXZlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fbWlkZGxlLCBfX2xhc3QsIF9fcHJlZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xlbiAtIF9fbGVuIC8gMiwgX19idWZmZXIsIF9fYnVmZmVyX3Np
emUpKTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9QcmVkaWNh
dGUsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX0ZvcndhcmRJdGVyCl9fc3Rh
YmxlX3BhcnRpdGlvbl9hdXgoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xh
c3QsIAogICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkLCBfVHAqLCBfRGlz
dGFuY2UqKQp7CiAgX1RlbXBvcmFyeV9idWZmZXI8X0ZvcndhcmRJdGVyLCBfVHA+IF9fYnVmKF9f
Zmlyc3QsIF9fbGFzdCk7CiAgaWYgKF9fYnVmLnNpemUoKSA+IDApCiAgICByZXR1cm4gX19zdGFi
bGVfcGFydGl0aW9uX2FkYXB0aXZlKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UoX19idWYucmVxdWVzdGVkX3Np
emUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYnVmLmJlZ2lu
KCksIF9fYnVmLnNpemUoKSk7CiAgZWxzZQogICAgcmV0dXJuIF9faW5wbGFjZV9zdGFibGVfcGFy
dGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwgX19wcmVkLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfRGlzdGFuY2UoX19idWYucmVxdWVzdGVkX3NpemUoKSkpOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfUHJlZGljYXRlPgppbmxpbmUgX0Zvcndh
cmRJdGVyIHN0YWJsZV9wYXJ0aXRpb24oX0ZvcndhcmRJdGVyIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfRm9yd2FyZEl0ZXIgX19sYXN0LCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QcmVkaWNhdGUgX19wcmVkKSB7CiAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KQogICAgcmV0dXJuIF9fZmlyc3Q7CiAgZWxzZQogICAgcmV0dXJuIF9f
c3RhYmxlX3BhcnRpdGlvbl9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ByZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4KX1JhbmRvbUFj
Y2Vzc0l0ZXIgX191bmd1YXJkZWRfcGFydGl0aW9uKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3Qs
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIgX19sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCBf
X3Bpdm90KSAKewogIHdoaWxlICh0cnVlKSB7CiAgICB3aGlsZSAoKl9fZmlyc3QgPCBfX3Bpdm90
KQogICAgICArK19fZmlyc3Q7CiAgICAtLV9fbGFzdDsKICAgIHdoaWxlIChfX3Bpdm90IDwgKl9f
bGFzdCkKICAgICAgLS1fX2xhc3Q7CiAgICBpZiAoIShfX2ZpcnN0IDwgX19sYXN0KSkKICAgICAg
cmV0dXJuIF9fZmlyc3Q7CiAgICBpdGVyX3N3YXAoX19maXJzdCwgX19sYXN0KTsKICAgICsrX19m
aXJzdDsKICB9Cn0gICAgCgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNz
IF9UcCwgY2xhc3MgX0NvbXBhcmU+Cl9SYW5kb21BY2Nlc3NJdGVyIF9fdW5ndWFyZGVkX3BhcnRp
dGlvbihfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfVHAgX19waXZvdCwgX0NvbXBhcmUgX19jb21wKSAK
ewogIHdoaWxlICh0cnVlKSB7CiAgICB3aGlsZSAoX19jb21wKCpfX2ZpcnN0LCBfX3Bpdm90KSkK
ICAgICAgKytfX2ZpcnN0OwogICAgLS1fX2xhc3Q7CiAgICB3aGlsZSAoX19jb21wKF9fcGl2b3Qs
ICpfX2xhc3QpKQogICAgICAtLV9fbGFzdDsKICAgIGlmICghKF9fZmlyc3QgPCBfX2xhc3QpKQog
ICAgICByZXR1cm4gX19maXJzdDsKICAgIGl0ZXJfc3dhcChfX2ZpcnN0LCBfX2xhc3QpOwogICAg
KytfX2ZpcnN0OwogIH0KfQoKY29uc3QgaW50IF9fc3RsX3RocmVzaG9sZCA9IDE2OwoKIAoKdGVt
cGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHA+CnZvaWQgX191bmd1YXJk
ZWRfbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCBfX3ZhbCkgewog
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbmV4dCA9IF9fbGFzdDsKICAtLV9fbmV4dDsKICB3aGlsZSAo
X192YWwgPCAqX19uZXh0KSB7CiAgICAqX19sYXN0ID0gKl9fbmV4dDsKICAgIF9fbGFzdCA9IF9f
bmV4dDsKICAgIC0tX19uZXh0OwogIH0KICAqX19sYXN0ID0gX192YWw7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBf
X3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwIF9f
dmFsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewog
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbmV4dCA9IF9fbGFzdDsKICAtLV9fbmV4dDsgIAogIHdoaWxl
IChfX2NvbXAoX192YWwsICpfX25leHQpKSB7CiAgICAqX19sYXN0ID0gKl9fbmV4dDsKICAgIF9f
bGFzdCA9IF9fbmV4dDsKICAgIC0tX19uZXh0OwogIH0KICAqX19sYXN0ID0gX192YWw7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwPgppbmxpbmUgdm9pZCBf
X2xpbmVhcl9pbnNlcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCopIHsKICBfVHAgX192
YWwgPSAqX19sYXN0OwogIGlmIChfX3ZhbCA8ICpfX2ZpcnN0KSB7CiAgICBjb3B5X2JhY2t3YXJk
KF9fZmlyc3QsIF9fbGFzdCwgX19sYXN0ICsgMSk7CiAgICAqX19maXJzdCA9IF9fdmFsOwogIH0K
ICBlbHNlCiAgICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9fbGFzdCwgX192YWwpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBh
cmU+CmlubGluZSB2b2lkIF9fbGluZWFyX2luc2VydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0
LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwg
X1RwKiwgX0NvbXBhcmUgX19jb21wKSB7CiAgX1RwIF9fdmFsID0gKl9fbGFzdDsKICBpZiAoX19j
b21wKF9fdmFsLCAqX19maXJzdCkpIHsKICAgIGNvcHlfYmFja3dhcmQoX19maXJzdCwgX19sYXN0
LCBfX2xhc3QgKyAxKTsKICAgICpfX2ZpcnN0ID0gX192YWw7CiAgfQogIGVsc2UKICAgIF9fdW5n
dWFyZGVkX2xpbmVhcl9pbnNlcnQoX19sYXN0LCBfX3ZhbCwgX19jb21wKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgp2b2lkIF9faW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFj
Y2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgaWYgKF9fZmly
c3QgPT0gX19sYXN0KSByZXR1cm47IAogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19m
aXJzdCArIDE7IF9faSAhPSBfX2xhc3Q7ICsrX19pKQogICAgX19saW5lYXJfaW5zZXJ0KF9fZmly
c3QsIF9faSwgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9S
YW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBfX2luc2VydGlvbl9zb3J0KF9S
YW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNj
ZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2ZpcnN0ID09IF9fbGFz
dCkgcmV0dXJuOwogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdCArIDE7IF9f
aSAhPSBfX2xhc3Q7ICsrX19pKQogICAgX19saW5lYXJfaW5zZXJ0KF9fZmlyc3QsIF9faSwgX192
YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4Kdm9pZCBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydF9h
dXgoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKikgewogIGZvciAoX1JhbmRv
bUFjY2Vzc0l0ZXIgX19pID0gX19maXJzdDsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgICBfX3Vu
Z3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9faSwgX1RwKCpfX2kpKTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyPgppbmxpbmUgdm9pZCBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25f
c29ydF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBh
cmU+CnZvaWQgX191bmd1YXJkZWRfaW5zZXJ0aW9uX3NvcnRfYXV4KF9SYW5kb21BY2Nlc3NJdGVy
IF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNj
ZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCos
IF9Db21wYXJlIF9fY29tcCkgewogIGZvciAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19pID0gX19maXJz
dDsgX19pICE9IF9fbGFzdDsgKytfX2kpCiAgICBfX3VuZ3VhcmRlZF9saW5lYXJfaW5zZXJ0KF9f
aSwgX1RwKCpfX2kpLCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29y
dChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBfX3VuZ3VhcmRlZF9pbnNl
cnRpb25fc29ydF9hdXgoX19maXJzdCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4Kdm9pZCBfX2ZpbmFsX2luc2VydGlvbl9zb3J0KF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPiBfX3N0bF90aHJl
c2hvbGQpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCArIF9fc3RsX3Ro
cmVzaG9sZCk7CiAgICBfX3VuZ3VhcmRlZF9pbnNlcnRpb25fc29ydChfX2ZpcnN0ICsgX19zdGxf
dGhyZXNob2xkLCBfX2xhc3QpOwogIH0KICBlbHNlCiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmly
c3QsIF9fbGFzdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3Mg
X0NvbXBhcmU+CnZvaWQgX19maW5hbF9pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBf
X2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9f
bGFzdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYgKF9fbGFzdCAtIF9fZmlyc3QgPiBfX3N0bF90
aHJlc2hvbGQpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19maXJzdCArIF9fc3Rs
X3RocmVzaG9sZCwgX19jb21wKTsKICAgIF9fdW5ndWFyZGVkX2luc2VydGlvbl9zb3J0KF9fZmly
c3QgKyBfX3N0bF90aHJlc2hvbGQsIF9fbGFzdCwgX19jb21wKTsKICB9CiAgZWxzZQogICAgX19p
bnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfU2l6ZT4KaW5saW5lIF9TaXplIF9fbGcoX1NpemUgX19uKSB7CiAgX1NpemUgX19rOwogIGZv
ciAoX19rID0gMDsgX19uICE9IDE7IF9fbiA+Pj0gMSkgKytfX2s7CiAgcmV0dXJuIF9fazsKfQoK
dGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9TaXpl
Pgp2b2lkIF9faW50cm9zb3J0X2xvb3AoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKiwKICAgICAgICAg
ICAgICAgICAgICAgIF9TaXplIF9fZGVwdGhfbGltaXQpCnsKICB3aGlsZSAoX19sYXN0IC0gX19m
aXJzdCA+IF9fc3RsX3RocmVzaG9sZCkgewogICAgaWYgKF9fZGVwdGhfbGltaXQgPT0gMCkgewog
ICAgICBwYXJ0aWFsX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2xhc3QpOwogICAgICByZXR1cm47
CiAgICB9CiAgICAtLV9fZGVwdGhfbGltaXQ7CiAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2N1dCA9
CiAgICAgIF9fdW5ndWFyZGVkX3BhcnRpdGlvbihfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfVHAoX19tZWRpYW4oKl9fZmlyc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKihfX2ZpcnN0ICsgKF9fbGFzdCAtIF9fZmlyc3QpLzIp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooX19sYXN0IC0gMSkp
KSk7CiAgICBfX2ludHJvc29ydF9sb29wKF9fY3V0LCBfX2xhc3QsIChfVHAqKSAwLCBfX2RlcHRo
X2xpbWl0KTsKICAgIF9fbGFzdCA9IF9fY3V0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5k
b21BY2Nlc3NJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9TaXplLCBjbGFzcyBfQ29tcGFyZT4Kdm9p
ZCBfX2ludHJvc29ydF9sb29wKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsCiAgICAgICAgICAg
ICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCosCiAgICAgICAgICAgICAg
ICAgICAgICBfU2l6ZSBfX2RlcHRoX2xpbWl0LCBfQ29tcGFyZSBfX2NvbXApCnsKICB3aGlsZSAo
X19sYXN0IC0gX19maXJzdCA+IF9fc3RsX3RocmVzaG9sZCkgewogICAgaWYgKF9fZGVwdGhfbGlt
aXQgPT0gMCkgewogICAgICBwYXJ0aWFsX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2xhc3QsIF9f
Y29tcCk7CiAgICAgIHJldHVybjsKICAgIH0KICAgIC0tX19kZXB0aF9saW1pdDsKICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fY3V0ID0KICAgICAgX191bmd1YXJkZWRfcGFydGl0aW9uKF9fZmlyc3Qs
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcChfX21lZGlhbigqX19maXJz
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKF9fZmlyc3QgKyAo
X19sYXN0IC0gX19maXJzdCkvMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKihfX2xhc3QgLSAxKSwgX19jb21wKSksCiAgICAgICBfX2NvbXApOwogICAgX19pbnRy
b3NvcnRfbG9vcChfX2N1dCwgX19sYXN0LCAoX1RwKikgMCwgX19kZXB0aF9saW1pdCwgX19jb21w
KTsKICAgIF9fbGFzdCA9IF9fY3V0OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nl
c3NJdGVyPgppbmxpbmUgdm9pZCBzb3J0KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCkgewogIGlmIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgX19p
bnRyb3NvcnRfbG9vcChfX2ZpcnN0LCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgIF9fdmFs
dWVfdHlwZSggX19maXJzdCApICwKICAgICAgICAgICAgICAgICAgICAgX19sZyhfX2xhc3QgLSBf
X2ZpcnN0KSAqIDIpOwogICAgX19maW5hbF9pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3Qp
OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFy
ZT4KaW5saW5lIHZvaWQgc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNj
ZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYg
KF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICBfX2ludHJvc29ydF9sb29wKF9fZmlyc3QsIF9fbGFz
dCwKICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgLAogICAgICAg
ICAgICAgICAgICAgICBfX2xnKF9fbGFzdCAtIF9fZmlyc3QpICogMiwKICAgICAgICAgICAgICAg
ICAgICAgX19jb21wKTsKICAgIF9fZmluYWxfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0
LCBfX2NvbXApOwogIH0KfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyPgp2
b2lkIF9faW5wbGFjZV9zdGFibGVfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBpZiAo
X19sYXN0IC0gX19maXJzdCA8IDE1KSB7CiAgICBfX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9f
bGFzdCk7CiAgICByZXR1cm47CiAgfQogIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlID0gX19m
aXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KSAvIDI7CiAgX19pbnBsYWNlX3N0YWJsZV9zb3J0KF9f
Zmlyc3QsIF9fbWlkZGxlKTsKICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUsIF9fbGFz
dCk7CiAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgX19taWRkbGUgLSBfX2ZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgX19sYXN0IC0gX19taWRkbGUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRv
bUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9faW5wbGFjZV9zdGFibGVfc29ydChf
UmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2xhc3QgLSBf
X2ZpcnN0IDwgMTUpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX2Nv
bXApOwogICAgcmV0dXJuOwogIH0KICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSA9IF9fZmly
c3QgKyAoX19sYXN0IC0gX19maXJzdCkgLyAyOwogIF9faW5wbGFjZV9zdGFibGVfc29ydChfX2Zp
cnN0LCBfX21pZGRsZSwgX19jb21wKTsKICBfX2lucGxhY2Vfc3RhYmxlX3NvcnQoX19taWRkbGUs
IF9fbGFzdCwgX19jb21wKTsKICBfX21lcmdlX3dpdGhvdXRfYnVmZmVyKF9fZmlyc3QsIF9fbWlk
ZGxlLCBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX21pZGRsZSAtIF9fZmlyc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICBfX2xhc3QgLSBfX21pZGRsZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRl
cjEsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyMiwKICAgICAgICAgIGNsYXNzIF9EaXN0YW5jZT4K
dm9pZCBfX21lcmdlX3NvcnRfbG9vcChfUmFuZG9tQWNjZXNzSXRlcjEgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcjEgX19sYXN0LCAKICAgICAgICAgICAg
ICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlcjIgX19yZXN1bHQsIF9EaXN0YW5jZSBfX3N0ZXBf
c2l6ZSkgewogIF9EaXN0YW5jZSBfX3R3b19zdGVwID0gMiAqIF9fc3RlcF9zaXplOwoKICB3aGls
ZSAoX19sYXN0IC0gX19maXJzdCA+PSBfX3R3b19zdGVwKSB7CiAgICBfX3Jlc3VsdCA9IG1lcmdl
KF9fZmlyc3QsIF9fZmlyc3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgX19m
aXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX190d29fc3RlcCwKICAgICAgICAgICAgICAg
ICAgICAgX19yZXN1bHQpOwogICAgX19maXJzdCArPSBfX3R3b19zdGVwOwogIH0KCiAgX19zdGVw
X3NpemUgPSBtaW4oX0Rpc3RhbmNlKF9fbGFzdCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7CiAg
bWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLCBfX2ZpcnN0ICsgX19zdGVwX3Np
emUsIF9fbGFzdCwKICAgICAgICBfX3Jlc3VsdCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlcjEsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyMiwKICAgICAgICAgIGNsYXNzIF9E
aXN0YW5jZSwgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19tZXJnZV9zb3J0X2xvb3AoX1JhbmRvbUFj
Y2Vzc0l0ZXIxIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0
ZXIxIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIyIF9f
cmVzdWx0LCBfRGlzdGFuY2UgX19zdGVwX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKSB7CiAgX0Rpc3RhbmNlIF9fdHdvX3N0ZXAgPSAyICogX19zdGVwX3NpemU7
CgogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID49IF9fdHdvX3N0ZXApIHsKICAgIF9fcmVzdWx0
ID0gbWVyZ2UoX19maXJzdCwgX19maXJzdCArIF9fc3RlcF9zaXplLAogICAgICAgICAgICAgICAg
ICAgICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fZmlyc3QgKyBfX3R3b19zdGVwLAogICAgICAg
ICAgICAgICAgICAgICBfX3Jlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKICAg
IF9fZmlyc3QgKz0gX190d29fc3RlcDsKICB9CiAgX19zdGVwX3NpemUgPSBtaW4oX0Rpc3RhbmNl
KF9fbGFzdCAtIF9fZmlyc3QpLCBfX3N0ZXBfc2l6ZSk7CgogIG1lcmdlKF9fZmlyc3QsIF9fZmly
c3QgKyBfX3N0ZXBfc2l6ZSwKICAgICAgICBfX2ZpcnN0ICsgX19zdGVwX3NpemUsIF9fbGFzdCwK
ICAgICAgICBfX3Jlc3VsdCwKICAgICAgICBfX2NvbXApOwp9Cgpjb25zdCBpbnQgX19zdGxfY2h1
bmtfc2l6ZSA9IDc7CiAgICAgICAgCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwg
Y2xhc3MgX0Rpc3RhbmNlPgp2b2lkIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX1JhbmRvbUFjY2Vz
c0l0ZXIgX19maXJzdCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNz
SXRlciBfX2xhc3QsIF9EaXN0YW5jZSBfX2NodW5rX3NpemUpCnsKICB3aGlsZSAoX19sYXN0IC0g
X19maXJzdCA+PSBfX2NodW5rX3NpemUpIHsKICAgIF9faW5zZXJ0aW9uX3NvcnQoX19maXJzdCwg
X19maXJzdCArIF9fY2h1bmtfc2l6ZSk7CiAgICBfX2ZpcnN0ICs9IF9fY2h1bmtfc2l6ZTsKICB9
CiAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9EaXN0YW5jZSwgY2xhc3MgX0NvbXBhcmU+CnZvaWQg
X19jaHVua19pbnNlcnRpb25fc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2NodW5rX3NpemUsIF9Db21wYXJlIF9fY29t
cCkKewogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0ID49IF9fY2h1bmtfc2l6ZSkgewogICAgX19p
bnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2ZpcnN0ICsgX19jaHVua19zaXplLCBfX2NvbXApOwog
ICAgX19maXJzdCArPSBfX2NodW5rX3NpemU7CiAgfQogIF9faW5zZXJ0aW9uX3NvcnQoX19maXJz
dCwgX19sYXN0LCBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIs
IGNsYXNzIF9Qb2ludGVyLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQgX19tZXJnZV9zb3J0X3dpdGhf
YnVmZmVyKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UqKSB7CiAgX0Rpc3RhbmNlIF9fbGVu
ID0gX19sYXN0IC0gX19maXJzdDsKICBfUG9pbnRlciBfX2J1ZmZlcl9sYXN0ID0gX19idWZmZXIg
KyBfX2xlbjsKCiAgX0Rpc3RhbmNlIF9fc3RlcF9zaXplID0gX19zdGxfY2h1bmtfc2l6ZTsKICBf
X2NodW5rX2luc2VydGlvbl9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19zdGVwX3NpemUpOwoKICB3
aGlsZSAoX19zdGVwX3NpemUgPCBfX2xlbikgewogICAgX19tZXJnZV9zb3J0X2xvb3AoX19maXJz
dCwgX19sYXN0LCBfX2J1ZmZlciwgX19zdGVwX3NpemUpOwogICAgX19zdGVwX3NpemUgKj0gMjsK
ICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9fYnVmZmVyLCBfX2J1ZmZlcl9sYXN0LCBfX2ZpcnN0LCBf
X3N0ZXBfc2l6ZSk7CiAgICBfX3N0ZXBfc2l6ZSAqPSAyOwogIH0KfQoKdGVtcGxhdGUgPGNsYXNz
IF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfUG9pbnRlciwgY2xhc3MgX0Rpc3RhbmNlLAogICAg
ICAgICAgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFu
ZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Qb2ludGVyIF9fYnVmZmVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfRGlzdGFuY2UqLCBfQ29tcGFyZSBfX2NvbXApIHsKICBfRGlzdGFuY2Ug
X19sZW4gPSBfX2xhc3QgLSBfX2ZpcnN0OwogIF9Qb2ludGVyIF9fYnVmZmVyX2xhc3QgPSBfX2J1
ZmZlciArIF9fbGVuOwoKICBfRGlzdGFuY2UgX19zdGVwX3NpemUgPSBfX3N0bF9jaHVua19zaXpl
OwogIF9fY2h1bmtfaW5zZXJ0aW9uX3NvcnQoX19maXJzdCwgX19sYXN0LCBfX3N0ZXBfc2l6ZSwg
X19jb21wKTsKCiAgd2hpbGUgKF9fc3RlcF9zaXplIDwgX19sZW4pIHsKICAgIF9fbWVyZ2Vfc29y
dF9sb29wKF9fZmlyc3QsIF9fbGFzdCwgX19idWZmZXIsIF9fc3RlcF9zaXplLCBfX2NvbXApOwog
ICAgX19zdGVwX3NpemUgKj0gMjsKICAgIF9fbWVyZ2Vfc29ydF9sb29wKF9fYnVmZmVyLCBfX2J1
ZmZlcl9sYXN0LCBfX2ZpcnN0LCBfX3N0ZXBfc2l6ZSwgX19jb21wKTsKICAgIF9fc3RlcF9zaXpl
ICo9IDI7CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Q
b2ludGVyLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQgX19zdGFibGVfc29ydF9hZGFwdGl2ZShfUmFu
ZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9SYW5k
b21BY2Nlc3NJdGVyIF9fbGFzdCwgX1BvaW50ZXIgX19idWZmZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UgX19idWZmZXJfc2l6ZSkgewogIF9EaXN0YW5jZSBfX2xlbiA9
IChfX2xhc3QgLSBfX2ZpcnN0ICsgMSkgLyAyOwogIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxl
ID0gX19maXJzdCArIF9fbGVuOwogIGlmIChfX2xlbiA+IF9fYnVmZmVyX3NpemUpIHsKICAgIF9f
c3RhYmxlX3NvcnRfYWRhcHRpdmUoX19maXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCBfX2J1ZmZl
cl9zaXplKTsKICAgIF9fc3RhYmxlX3NvcnRfYWRhcHRpdmUoX19taWRkbGUsIF9fbGFzdCwgX19i
dWZmZXIsIF9fYnVmZmVyX3NpemUpOwogIH0KICBlbHNlIHsKICAgIF9fbWVyZ2Vfc29ydF93aXRo
X2J1ZmZlcihfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIChfRGlzdGFuY2UqKTApOwogICAg
X19tZXJnZV9zb3J0X3dpdGhfYnVmZmVyKF9fbWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyLCAoX0Rp
c3RhbmNlKikwKTsKICB9CiAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19s
YXN0LCBfRGlzdGFuY2UoX19taWRkbGUgLSBfX2ZpcnN0KSwgCiAgICAgICAgICAgICAgICAgICBf
RGlzdGFuY2UoX19sYXN0IC0gX19taWRkbGUpLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1BvaW50ZXIsIGNsYXNz
IF9EaXN0YW5jZSwgCiAgICAgICAgICBjbGFzcyBfQ29tcGFyZT4Kdm9pZCBfX3N0YWJsZV9zb3J0
X2FkYXB0aXZlKF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfUG9pbnRlciBfX2J1ZmZlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplLCBfQ29tcGFy
ZSBfX2NvbXApIHsKICBfRGlzdGFuY2UgX19sZW4gPSAoX19sYXN0IC0gX19maXJzdCArIDEpIC8g
MjsKICBfUmFuZG9tQWNjZXNzSXRlciBfX21pZGRsZSA9IF9fZmlyc3QgKyBfX2xlbjsKICBpZiAo
X19sZW4gPiBfX2J1ZmZlcl9zaXplKSB7CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fZmly
c3QsIF9fbWlkZGxlLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29tcCk7CiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0aXZlKF9fbWlkZGxlLCBf
X2xhc3QsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX19jb21wKTsKICB9CiAgZWxzZSB7CiAgICBfX21lcmdlX3NvcnRfd2l0aF9idWZmZXIoX19m
aXJzdCwgX19taWRkbGUsIF9fYnVmZmVyLCAoX0Rpc3RhbmNlKikwLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX19jb21wKTsKICAgIF9fbWVyZ2Vfc29ydF93aXRoX2J1ZmZlcihfX21p
ZGRsZSwgX19sYXN0LCBfX2J1ZmZlciwgKF9EaXN0YW5jZSopMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9fY29tcCk7CiAgfQogIF9fbWVyZ2VfYWRhcHRpdmUoX19maXJzdCwgX19t
aWRkbGUsIF9fbGFzdCwgX0Rpc3RhbmNlKF9fbWlkZGxlIC0gX19maXJzdCksIAogICAgICAgICAg
ICAgICAgICAgX0Rpc3RhbmNlKF9fbGFzdCAtIF9fbWlkZGxlKSwgX19idWZmZXIsIF9fYnVmZmVy
X3NpemUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBf
X3N0YWJsZV9zb3J0X2F1eChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCosIF9EaXN0YW5j
ZSopIHsKICBfVGVtcG9yYXJ5X2J1ZmZlcjxfUmFuZG9tQWNjZXNzSXRlciwgX1RwPiBidWYoX19m
aXJzdCwgX19sYXN0KTsKICBpZiAoYnVmLmJlZ2luKCkgPT0gMCkKICAgIF9faW5wbGFjZV9zdGFi
bGVfc29ydChfX2ZpcnN0LCBfX2xhc3QpOwogIGVsc2UgCiAgICBfX3N0YWJsZV9zb3J0X2FkYXB0
aXZlKF9fZmlyc3QsIF9fbGFzdCwgYnVmLmJlZ2luKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9EaXN0YW5jZShidWYuc2l6ZSgpKSk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgppbmxp
bmUgdm9pZCBfX3N0YWJsZV9zb3J0X2F1eChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9UcCos
IF9EaXN0YW5jZSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29t
cCkgewogIF9UZW1wb3JhcnlfYnVmZmVyPF9SYW5kb21BY2Nlc3NJdGVyLCBfVHA+IGJ1ZihfX2Zp
cnN0LCBfX2xhc3QpOwogIGlmIChidWYuYmVnaW4oKSA9PSAwKQogICAgX19pbnBsYWNlX3N0YWJs
ZV9zb3J0KF9fZmlyc3QsIF9fbGFzdCwgX19jb21wKTsKICBlbHNlIAogICAgX19zdGFibGVfc29y
dF9hZGFwdGl2ZShfX2ZpcnN0LCBfX2xhc3QsIGJ1Zi5iZWdpbigpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBfRGlzdGFuY2UoYnVmLnNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlcj4KaW5saW5l
IHZvaWQgc3RhYmxlX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0KSB7CiAgX19zdGFibGVfc29ydF9h
dXgoX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19m
aXJzdCApICwKICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSAp
Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgpp
bmxpbmUgdm9pZCBzdGFibGVfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9Db21wYXJlIF9fY29t
cCkgewogIF9fc3RhYmxlX3NvcnRfYXV4KF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgX19kaXN0
YW5jZV90eXBlKCBfX2ZpcnN0ICkgLCAKICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwp9Cgog
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9UcD4Kdm9pZCBfX3Bh
cnRpYWxfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBf
X21pZGRsZSwKICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsIF9U
cCopIHsKICBtYWtlX2hlYXAoX19maXJzdCwgX19taWRkbGUpOwogIGZvciAoX1JhbmRvbUFjY2Vz
c0l0ZXIgX19pID0gX19taWRkbGU7IF9faSA8IF9fbGFzdDsgKytfX2kpCiAgICBpZiAoKl9faSA8
ICpfX2ZpcnN0KSAKICAgICAgX19wb3BfaGVhcChfX2ZpcnN0LCBfX21pZGRsZSwgX19pLCBfVHAo
Kl9faSksCiAgICAgICAgICAgICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKICBz
b3J0X2hlYXAoX19maXJzdCwgX19taWRkbGUpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXI+CmlubGluZSB2b2lkIHBhcnRpYWxfc29ydChfUmFuZG9tQWNjZXNzSXRlciBfX2Zp
cnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBf
X3BhcnRpYWxfc29ydChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9f
Zmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9U
cCwgY2xhc3MgX0NvbXBhcmU+CnZvaWQgX19wYXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIg
X19maXJzdCwgX1JhbmRvbUFjY2Vzc0l0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
X1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfVHAqLCBfQ29tcGFyZSBfX2NvbXApIHsKICBtYWtl
X2hlYXAoX19maXJzdCwgX19taWRkbGUsIF9fY29tcCk7CiAgZm9yIChfUmFuZG9tQWNjZXNzSXRl
ciBfX2kgPSBfX21pZGRsZTsgX19pIDwgX19sYXN0OyArK19faSkKICAgIGlmIChfX2NvbXAoKl9f
aSwgKl9fZmlyc3QpKQogICAgICBfX3BvcF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2ksIF9U
cCgqX19pKSwgX19jb21wLAogICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJz
dCApICk7CiAgc29ydF9oZWFwKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2NvbXApOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgdm9pZCBw
YXJ0aWFsX3NvcnQoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19sYXN0LCBfQ29tcGFyZSBfX2NvbXApIHsKICBfX3BhcnRp
YWxfc29ydChfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3Qg
KSAsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyLCBjbGFzcyBfUmFuZG9t
QWNjZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNlLAogICAgICAgICAgY2xhc3MgX1RwPgpfUmFuZG9t
QWNjZXNzSXRlciBfX3BhcnRpYWxfc29ydF9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyIF9fbGFzdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBf
X3Jlc3VsdF9maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
UmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9sYXN0LCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRGlzdGFuY2UqLCBfVHAqKSB7CiAgaWYgKF9fcmVzdWx0X2ZpcnN0
ID09IF9fcmVzdWx0X2xhc3QpIHJldHVybiBfX3Jlc3VsdF9sYXN0OwogIF9SYW5kb21BY2Nlc3NJ
dGVyIF9fcmVzdWx0X3JlYWxfbGFzdCA9IF9fcmVzdWx0X2ZpcnN0OwogIHdoaWxlKF9fZmlyc3Qg
IT0gX19sYXN0ICYmIF9fcmVzdWx0X3JlYWxfbGFzdCAhPSBfX3Jlc3VsdF9sYXN0KSB7CiAgICAq
X19yZXN1bHRfcmVhbF9sYXN0ID0gKl9fZmlyc3Q7CiAgICArK19fcmVzdWx0X3JlYWxfbGFzdDsK
ICAgICsrX19maXJzdDsKICB9CiAgbWFrZV9oZWFwKF9fcmVzdWx0X2ZpcnN0LCBfX3Jlc3VsdF9y
ZWFsX2xhc3QpOwogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgaWYgKCpfX2ZpcnN0
IDwgKl9fcmVzdWx0X2ZpcnN0KSAKICAgICAgX19hZGp1c3RfaGVhcChfX3Jlc3VsdF9maXJzdCwg
X0Rpc3RhbmNlKDApLAogICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZShfX3Jlc3VsdF9yZWFs
X2xhc3QgLSBfX3Jlc3VsdF9maXJzdCksCiAgICAgICAgICAgICAgICAgICAgX1RwKCpfX2ZpcnN0
KSk7CiAgICArK19fZmlyc3Q7CiAgfQogIHNvcnRfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19yZXN1
bHRfcmVhbF9sYXN0KTsKICByZXR1cm4gX19yZXN1bHRfcmVhbF9sYXN0Owp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0lucHV0SXRlciwgY2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CmlubGluZSBfUmFuZG9t
QWNjZXNzSXRlcgpwYXJ0aWFsX3NvcnRfY29weShfSW5wdXRJdGVyIF9fZmlyc3QsIF9JbnB1dEl0
ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9m
aXJzdCwKICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRfbGFzdCkg
ewogIHJldHVybiBfX3BhcnRpYWxfc29ydF9jb3B5KF9fZmlyc3QsIF9fbGFzdCwgX19yZXN1bHRf
Zmlyc3QsIF9fcmVzdWx0X2xhc3QsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGlz
dGFuY2VfdHlwZSggX19yZXN1bHRfZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0
ZXIsIGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyLCBjbGFzcyBfQ29tcGFyZSwKICAgICAgICAgIGNs
YXNzIF9EaXN0YW5jZSwgY2xhc3MgX1RwPgpfUmFuZG9tQWNjZXNzSXRlciBfX3BhcnRpYWxfc29y
dF9jb3B5KF9JbnB1dEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfSW5wdXRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3VsdF9maXJzdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jlc3Vs
dF9sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJl
IF9fY29tcCwgX0Rpc3RhbmNlKiwgX1RwKikgewogIGlmIChfX3Jlc3VsdF9maXJzdCA9PSBfX3Jl
c3VsdF9sYXN0KSByZXR1cm4gX19yZXN1bHRfbGFzdDsKICBfUmFuZG9tQWNjZXNzSXRlciBfX3Jl
c3VsdF9yZWFsX2xhc3QgPSBfX3Jlc3VsdF9maXJzdDsKICB3aGlsZShfX2ZpcnN0ICE9IF9fbGFz
dCAmJiBfX3Jlc3VsdF9yZWFsX2xhc3QgIT0gX19yZXN1bHRfbGFzdCkgewogICAgKl9fcmVzdWx0
X3JlYWxfbGFzdCA9ICpfX2ZpcnN0OwogICAgKytfX3Jlc3VsdF9yZWFsX2xhc3Q7CiAgICArK19f
Zmlyc3Q7CiAgfQogIG1ha2VfaGVhcChfX3Jlc3VsdF9maXJzdCwgX19yZXN1bHRfcmVhbF9sYXN0
LCBfX2NvbXApOwogIHdoaWxlIChfX2ZpcnN0ICE9IF9fbGFzdCkgewogICAgaWYgKF9fY29tcCgq
X19maXJzdCwgKl9fcmVzdWx0X2ZpcnN0KSkKICAgICAgX19hZGp1c3RfaGVhcChfX3Jlc3VsdF9m
aXJzdCwgX0Rpc3RhbmNlKDApLAogICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZShfX3Jlc3Vs
dF9yZWFsX2xhc3QgLSBfX3Jlc3VsdF9maXJzdCksCiAgICAgICAgICAgICAgICAgICAgX1RwKCpf
X2ZpcnN0KSwKICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwogICAgKytfX2ZpcnN0OwogIH0K
ICBzb3J0X2hlYXAoX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X3JlYWxfbGFzdCwgX19jb21wKTsK
ICByZXR1cm4gX19yZXN1bHRfcmVhbF9sYXN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRl
ciwgY2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXIsIGNsYXNzIF9Db21wYXJlPgppbmxpbmUgX1JhbmRv
bUFjY2Vzc0l0ZXIKcGFydGlhbF9zb3J0X2NvcHkoX0lucHV0SXRlciBfX2ZpcnN0LCBfSW5wdXRJ
dGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19yZXN1bHRf
Zmlyc3QsCiAgICAgICAgICAgICAgICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fcmVzdWx0X2xhc3Qs
IF9Db21wYXJlIF9fY29tcCkgewogIHJldHVybiBfX3BhcnRpYWxfc29ydF9jb3B5KF9fZmlyc3Qs
IF9fbGFzdCwgX19yZXN1bHRfZmlyc3QsIF9fcmVzdWx0X2xhc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX19jb21wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFu
Y2VfdHlwZSggX19yZXN1bHRfZmlyc3QgKSAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X192YWx1ZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21B
Y2Nlc3NJdGVyLCBjbGFzcyBfVHA+CnZvaWQgX19udGhfZWxlbWVudChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX250aCwKICAgICAgICAgICAgICAgICAgIF9S
YW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX1RwKikgewogIHdoaWxlIChfX2xhc3QgLSBfX2ZpcnN0
ID4gMykgewogICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19jdXQgPQogICAgICBfX3VuZ3VhcmRlZF9w
YXJ0aXRpb24oX19maXJzdCwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX1Rw
KF9fbWVkaWFuKCpfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICooX19maXJzdCArIChfX2xhc3QgLSBfX2ZpcnN0KS8yKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqKF9fbGFzdCAtIDEpKSkpOwogICAgaWYgKF9fY3V0IDw9
IF9fbnRoKQogICAgICBfX2ZpcnN0ID0gX19jdXQ7CiAgICBlbHNlIAogICAgICBfX2xhc3QgPSBf
X2N1dDsKICB9CiAgX19pbnNlcnRpb25fc29ydChfX2ZpcnN0LCBfX2xhc3QpOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXI+CmlubGluZSB2b2lkIG50aF9lbGVtZW50KF9SYW5k
b21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAg
ICAgICAgICAgICAgICBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QpIHsKICBfX250aF9lbGVtZW50
KF9fZmlyc3QsIF9fbnRoLCBfX2xhc3QsIF9fdmFsdWVfdHlwZSggX19maXJzdCApICk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFy
ZT4Kdm9pZCBfX250aF9lbGVtZW50KF9SYW5kb21BY2Nlc3NJdGVyIF9fZmlyc3QsIF9SYW5kb21B
Y2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAgICAgICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXIgX19s
YXN0LCBfVHAqLCBfQ29tcGFyZSBfX2NvbXApIHsKICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+
IDMpIHsKICAgIF9SYW5kb21BY2Nlc3NJdGVyIF9fY3V0ID0KICAgICAgX191bmd1YXJkZWRfcGFy
dGl0aW9uKF9fZmlyc3QsIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcChf
X21lZGlhbigqX19maXJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqKF9fZmlyc3QgKyAoX19sYXN0IC0gX19maXJzdCkvMiksIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICooX19sYXN0IC0gMSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX19jb21wKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfX2NvbXApOwogICAgaWYgKF9fY3V0IDw9IF9fbnRoKQogICAgICBfX2ZpcnN0ID0gX19jdXQ7
CiAgICBlbHNlIAogICAgICBfX2xhc3QgPSBfX2N1dDsKICB9CiAgX19pbnNlcnRpb25fc29ydChf
X2ZpcnN0LCBfX2xhc3QsIF9fY29tcCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNz
SXRlciwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIG50aF9lbGVtZW50KF9SYW5kb21BY2Nl
c3NJdGVyIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyIF9fbnRoLAogICAgICAgICAgICAgICAg
IF9SYW5kb21BY2Nlc3NJdGVyIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgX19udGhfZWxl
bWVudChfX2ZpcnN0LCBfX250aCwgX19sYXN0LCBfX3ZhbHVlX3R5cGUoIF9fZmlyc3QgKSAsIF9f
Y29tcCk7Cn0KCgogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNs
YXNzIF9EaXN0YW5jZT4KX0ZvcndhcmRJdGVyIF9fbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9f
Zmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IF9UcCYgX192YWwsIF9EaXN0YW5jZSopIAp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBk
aXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9G
b3J3YXJkSXRlciBfX21pZGRsZTsKCiAgd2hpbGUgKF9fbGVuID4gMCkgewogICAgX19oYWxmID0g
X19sZW4gPj4gMTsKICAgIF9fbWlkZGxlID0gX19maXJzdDsKICAgIGFkdmFuY2UoX19taWRkbGUs
IF9faGFsZik7CiAgICBpZiAoKl9fbWlkZGxlIDwgX192YWwpIHsKICAgICAgX19maXJzdCA9IF9f
bWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9fbGVuID0gX19sZW4gLSBfX2hhbGYgLSAx
OwogICAgfQogICAgZWxzZQogICAgICBfX2xlbiA9IF9faGFsZjsKICB9CiAgcmV0dXJuIF9fZmly
c3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIF9G
b3J3YXJkSXRlciBsb3dlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVy
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBfVHAmIF9f
dmFsKSB7CiAgcmV0dXJuIF9fbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwKICAg
ICAgICAgICAgICAgICAgICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1w
bGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFz
cyBfRGlzdGFuY2U+Cl9Gb3J3YXJkSXRlciBfX2xvd2VyX2JvdW5kKF9Gb3J3YXJkSXRlciBfX2Zp
cnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBfVHAmIF9fdmFsLCBfQ29tcGFyZSBfX2NvbXAsIF9EaXN0YW5jZSopCnsKICBfRGlzdGFu
Y2UgX19sZW4gPSAwOwogIGRpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwgX19sZW4pOwogIF9EaXN0
YW5jZSBfX2hhbGY7CiAgX0ZvcndhcmRJdGVyIF9fbWlkZGxlOwoKICB3aGlsZSAoX19sZW4gPiAw
KSB7CiAgICBfX2hhbGYgPSBfX2xlbiA+PiAxOwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAg
YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCBfX3Zh
bCkpIHsKICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9f
bGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgfQogICAgZWxzZQogICAgICBfX2xlbiA9IF9f
aGFsZjsKICB9CiAgcmV0dXJuIF9fZmlyc3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0
ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSBfRm9yd2FyZEl0ZXIgbG93ZXJf
Ym91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwgX0NvbXBhcmUgX19jb21w
KSB7CiAgcmV0dXJuIF9fbG93ZXJfYm91bmQoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwgX19jb21w
LAogICAgICAgICAgICAgICAgICAgICAgIF9fZGlzdGFuY2VfdHlwZSggX19maXJzdCApICk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNl
PgpfRm9yd2FyZEl0ZXIgX191cHBlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3Zh
bCwgX0Rpc3RhbmNlKikKewogIF9EaXN0YW5jZSBfX2xlbiA9IDA7CiAgZGlzdGFuY2UoX19maXJz
dCwgX19sYXN0LCBfX2xlbik7CiAgX0Rpc3RhbmNlIF9faGFsZjsKICBfRm9yd2FyZEl0ZXIgX19t
aWRkbGU7CgogIHdoaWxlIChfX2xlbiA+IDApIHsKICAgIF9faGFsZiA9IF9fbGVuID4+IDE7CiAg
ICBfX21pZGRsZSA9IF9fZmlyc3Q7CiAgICBhZHZhbmNlKF9fbWlkZGxlLCBfX2hhbGYpOwogICAg
aWYgKF9fdmFsIDwgKl9fbWlkZGxlKQogICAgICBfX2xlbiA9IF9faGFsZjsKICAgIGVsc2Ugewog
ICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICsrX19maXJzdDsKICAgICAgX19sZW4gPSBf
X2xlbiAtIF9faGFsZiAtIDE7CiAgICB9CiAgfQogIHJldHVybiBfX2ZpcnN0Owp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHA+CmlubGluZSBfRm9yd2FyZEl0ZXIgdXBw
ZXJfYm91bmQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCkgewogIHJldHVybiBf
X3VwcGVyX2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3
YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFzcyBfQ29tcGFyZSwgY2xhc3MgX0Rpc3RhbmNlPgpfRm9y
d2FyZEl0ZXIgX191cHBlcl9ib3VuZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVy
IF9fbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1RwJiBfX3ZhbCwgX0Nv
bXBhcmUgX19jb21wLCBfRGlzdGFuY2UqKQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBkaXN0
YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9Gb3J3
YXJkSXRlciBfX21pZGRsZTsKCiAgd2hpbGUgKF9fbGVuID4gMCkgewogICAgX19oYWxmID0gX19s
ZW4gPj4gMTsKICAgIF9fbWlkZGxlID0gX19maXJzdDsKICAgIGFkdmFuY2UoX19taWRkbGUsIF9f
aGFsZik7CiAgICBpZiAoX19jb21wKF9fdmFsLCAqX19taWRkbGUpKQogICAgICBfX2xlbiA9IF9f
aGFsZjsKICAgIGVsc2UgewogICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAgICAgICsrX19maXJz
dDsKICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7CiAgICB9CiAgfQogIHJldHVybiBf
X2ZpcnN0Owp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNz
IF9Db21wYXJlPgppbmxpbmUgX0ZvcndhcmRJdGVyIHVwcGVyX2JvdW5kKF9Gb3J3YXJkSXRlciBf
X2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IF9UcCYgX192YWwsIF9Db21wYXJlIF9fY29tcCkgewogIHJldHVybiBfX3VwcGVy
X2JvdW5kKF9fZmlyc3QsIF9fbGFzdCwgX192YWwsIF9fY29tcCwKICAgICAgICAgICAgICAgICAg
ICAgICBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4KcGFpcjxfRm9yd2FyZEl0ZXIs
IF9Gb3J3YXJkSXRlcj4KX19lcXVhbF9yYW5nZShfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0Zvcndh
cmRJdGVyIF9fbGFzdCwgY29uc3QgX1RwJiBfX3ZhbCwKICAgICAgICAgICAgICBfRGlzdGFuY2Uq
KQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBkaXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9f
bGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9Gb3J3YXJkSXRlciBfX21pZGRsZSwgX19sZWZ0
LCBfX3JpZ2h0OwoKICB3aGlsZSAoX19sZW4gPiAwKSB7CiAgICBfX2hhbGYgPSBfX2xlbiA+PiAx
OwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAgYWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsK
ICAgIGlmICgqX19taWRkbGUgPCBfX3ZhbCkgewogICAgICBfX2ZpcnN0ID0gX19taWRkbGU7CiAg
ICAgICsrX19maXJzdDsKICAgICAgX19sZW4gPSBfX2xlbiAtIF9faGFsZiAtIDE7CiAgICB9CiAg
ICBlbHNlIGlmIChfX3ZhbCA8ICpfX21pZGRsZSkKICAgICAgX19sZW4gPSBfX2hhbGY7CiAgICBl
bHNlIHsKICAgICAgX19sZWZ0ID0gbG93ZXJfYm91bmQoX19maXJzdCwgX19taWRkbGUsIF9fdmFs
KTsKICAgICAgYWR2YW5jZShfX2ZpcnN0LCBfX2xlbik7CiAgICAgIF9fcmlnaHQgPSB1cHBlcl9i
b3VuZCgrK19fbWlkZGxlLCBfX2ZpcnN0LCBfX3ZhbCk7CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3
YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2xlZnQsIF9fcmlnaHQpOwogICAgfQogIH0KICByZXR1
cm4gcGFpcjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwgX19maXJzdCk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KaW5saW5lIHBhaXI8X0Zv
cndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+CmVxdWFsX3JhbmdlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0
LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBfVHAmIF9fdmFsKSB7CiAgcmV0dXJuIF9fZXF1
YWxfcmFuZ2UoX19maXJzdCwgX19sYXN0LCBfX3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICBf
X2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJ
dGVyLCBjbGFzcyBfVHAsIGNsYXNzIF9Db21wYXJlLCBjbGFzcyBfRGlzdGFuY2U+CnBhaXI8X0Zv
cndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+Cl9fZXF1YWxfcmFuZ2UoX0ZvcndhcmRJdGVyIF9fZmly
c3QsIF9Gb3J3YXJkSXRlciBfX2xhc3QsIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAg
X0NvbXBhcmUgX19jb21wLCBfRGlzdGFuY2UqKQp7CiAgX0Rpc3RhbmNlIF9fbGVuID0gMDsKICBk
aXN0YW5jZShfX2ZpcnN0LCBfX2xhc3QsIF9fbGVuKTsKICBfRGlzdGFuY2UgX19oYWxmOwogIF9G
b3J3YXJkSXRlciBfX21pZGRsZSwgX19sZWZ0LCBfX3JpZ2h0OwoKICB3aGlsZSAoX19sZW4gPiAw
KSB7CiAgICBfX2hhbGYgPSBfX2xlbiA+PiAxOwogICAgX19taWRkbGUgPSBfX2ZpcnN0OwogICAg
YWR2YW5jZShfX21pZGRsZSwgX19oYWxmKTsKICAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCBfX3Zh
bCkpIHsKICAgICAgX19maXJzdCA9IF9fbWlkZGxlOwogICAgICArK19fZmlyc3Q7CiAgICAgIF9f
bGVuID0gX19sZW4gLSBfX2hhbGYgLSAxOwogICAgfQogICAgZWxzZSBpZiAoX19jb21wKF9fdmFs
LCAqX19taWRkbGUpKQogICAgICBfX2xlbiA9IF9faGFsZjsKICAgIGVsc2UgewogICAgICBfX2xl
ZnQgPSBsb3dlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgX192YWwsIF9fY29tcCk7CiAgICAg
IGFkdmFuY2UoX19maXJzdCwgX19sZW4pOwogICAgICBfX3JpZ2h0ID0gdXBwZXJfYm91bmQoKytf
X21pZGRsZSwgX19maXJzdCwgX192YWwsIF9fY29tcCk7CiAgICAgIHJldHVybiBwYWlyPF9Gb3J3
YXJkSXRlciwgX0ZvcndhcmRJdGVyPihfX2xlZnQsIF9fcmlnaHQpOwogICAgfQogIH0KICByZXR1
cm4gcGFpcjxfRm9yd2FyZEl0ZXIsIF9Gb3J3YXJkSXRlcj4oX19maXJzdCwgX19maXJzdCk7Cn0g
ICAgICAgICAgIAoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX1RwLCBjbGFz
cyBfQ29tcGFyZT4KaW5saW5lIHBhaXI8X0ZvcndhcmRJdGVyLCBfRm9yd2FyZEl0ZXI+CmVxdWFs
X3JhbmdlKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LCBjb25zdCBf
VHAmIF9fdmFsLAogICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICByZXR1cm4gX19lcXVh
bF9yYW5nZShfX2ZpcnN0LCBfX2xhc3QsIF9fdmFsLCBfX2NvbXAsCiAgICAgICAgICAgICAgICAg
ICAgICAgX19kaXN0YW5jZV90eXBlKCBfX2ZpcnN0ICkgKTsKfSAKCnRlbXBsYXRlIDxjbGFzcyBf
Rm9yd2FyZEl0ZXIsIGNsYXNzIF9UcD4KYm9vbCBiaW5hcnlfc2VhcmNoKF9Gb3J3YXJkSXRlciBf
X2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgY29uc3QgX1Rw
JiBfX3ZhbCkgewogIF9Gb3J3YXJkSXRlciBfX2kgPSBsb3dlcl9ib3VuZChfX2ZpcnN0LCBfX2xh
c3QsIF9fdmFsKTsKICByZXR1cm4gX19pICE9IF9fbGFzdCAmJiAhKF9fdmFsIDwgKl9faSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0NvbXBhcmU+
CmJvb2wgYmluYXJ5X3NlYXJjaChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgIGNvbnN0IF9UcCYgX192YWwsCiAgICAgICAgICAgICAg
ICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBfRm9yd2FyZEl0ZXIgX19pID0gbG93ZXJfYm91bmQo
X19maXJzdCwgX19sYXN0LCBfX3ZhbCwgX19jb21wKTsKICByZXR1cm4gX19pICE9IF9fbGFzdCAm
JiAhX19jb21wKF9fdmFsLCAqX19pKTsKfQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIx
LCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIG1lcmdl
KF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAgICAgICAg
ICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MiwKICAgICAgICAg
ICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICB3aGlsZSAoX19maXJzdDEgIT0gX19s
YXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKSB7CiAgICBpZiAoKl9fZmlyc3QyIDwgKl9fZmly
c3QxKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsKICAgICAgKytfX2ZpcnN0MjsKICAg
IH0KICAgIGVsc2UgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAgICsrX19maXJz
dDE7CiAgICB9CiAgICArK19fcmVzdWx0OwogIH0KICByZXR1cm4gY29weShfX2ZpcnN0MiwgX19s
YXN0MiwgY29weShfX2ZpcnN0MSwgX19sYXN0MSwgX19yZXN1bHQpKTsKfQoKdGVtcGxhdGUgPGNs
YXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXIsCiAg
ICAgICAgICBjbGFzcyBfQ29tcGFyZT4KX091dHB1dEl0ZXIgbWVyZ2UoX0lucHV0SXRlcjEgX19m
aXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIy
IF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICBfT3V0cHV0
SXRlciBfX3Jlc3VsdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9f
bGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0MikgewogICAgaWYgKF9fY29tcCgqX19maXJzdDIs
ICpfX2ZpcnN0MSkpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAgICArK19fZmly
c3QyOwogICAgfQogICAgZWxzZSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAg
KytfX2ZpcnN0MTsKICAgIH0KICAgICsrX19yZXN1bHQ7CiAgfQogIHJldHVybiBjb3B5KF9fZmly
c3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwp9CgogCgp0
ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2U+CnZvaWQg
X19tZXJnZV93aXRob3V0X2J1ZmZlcihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfRGlzdGFuY2UgX19sZW4xLCBfRGlzdGFuY2UgX19sZW4yKSB7
CiAgaWYgKF9fbGVuMSA9PSAwIHx8IF9fbGVuMiA9PSAwKQogICAgcmV0dXJuOwogIGlmIChfX2xl
bjEgKyBfX2xlbjIgPT0gMikgewogICAgaWYgKCpfX21pZGRsZSA8ICpfX2ZpcnN0KQogICAgICBp
dGVyX3N3YXAoX19maXJzdCwgX19taWRkbGUpOwogICAgcmV0dXJuOwogIH0KICBfQmlkaXJlY3Rp
b25hbEl0ZXIgX19maXJzdF9jdXQgPSBfX2ZpcnN0OwogIF9CaWRpcmVjdGlvbmFsSXRlciBfX3Nl
Y29uZF9jdXQgPSBfX21pZGRsZTsKICBfRGlzdGFuY2UgX19sZW4xMSA9IDA7CiAgX0Rpc3RhbmNl
IF9fbGVuMjIgPSAwOwogIGlmIChfX2xlbjEgPiBfX2xlbjIpIHsKICAgIF9fbGVuMTEgPSBfX2xl
bjEgLyAyOwogICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICBfX3NlY29uZF9j
dXQgPSBsb3dlcl9ib3VuZChfX21pZGRsZSwgX19sYXN0LCAqX19maXJzdF9jdXQpOwogICAgZGlz
dGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sZW4yMik7CiAgfQogIGVsc2UgewogICAg
X19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICBhZHZhbmNlKF9fc2Vjb25kX2N1dCwgX19sZW4yMik7
CiAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9fbWlkZGxlLCAqX19zZWNv
bmRfY3V0KTsKICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICB9
CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbmV3X21pZGRsZQogICAgPSByb3RhdGUoX19maXJzdF9j
dXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19m
aXJzdCwgX19maXJzdF9jdXQsIF9fbmV3X21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IF9fbGVuMTEsIF9fbGVuMjIpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19uZXdfbWlkZGxl
LCBfX3NlY29uZF9jdXQsIF9fbGFzdCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fbGVuMiAtIF9fbGVuMjIpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyLCBjbGFzcyBfRGlzdGFuY2UsIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbWVyZ2Vf
d2l0aG91dF9idWZmZXIoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIGlmIChfX2xlbjEgPT0gMCB8
fCBfX2xlbjIgPT0gMCkKICAgIHJldHVybjsKICBpZiAoX19sZW4xICsgX19sZW4yID09IDIpIHsK
ICAgIGlmIChfX2NvbXAoKl9fbWlkZGxlLCAqX19maXJzdCkpCiAgICAgIGl0ZXJfc3dhcChfX2Zp
cnN0LCBfX21pZGRsZSk7CiAgICByZXR1cm47CiAgfQogIF9CaWRpcmVjdGlvbmFsSXRlciBfX2Zp
cnN0X2N1dCA9IF9fZmlyc3Q7CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9f
bWlkZGxlOwogIF9EaXN0YW5jZSBfX2xlbjExID0gMDsKICBfRGlzdGFuY2UgX19sZW4yMiA9IDA7
CiAgaWYgKF9fbGVuMSA+IF9fbGVuMikgewogICAgX19sZW4xMSA9IF9fbGVuMSAvIDI7CiAgICBh
ZHZhbmNlKF9fZmlyc3RfY3V0LCBfX2xlbjExKTsKICAgIF9fc2Vjb25kX2N1dCA9IGxvd2VyX2Jv
dW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCwgX19jb21wKTsKICAgIGRpc3RhbmNl
KF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogIH0KICBlbHNlIHsKICAgIF9fbGVu
MjIgPSBfX2xlbjIgLyAyOwogICAgYWR2YW5jZShfX3NlY29uZF9jdXQsIF9fbGVuMjIpOwogICAg
X19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2ZpcnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1
dCwgX19jb21wKTsKICAgIGRpc3RhbmNlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX2xlbjExKTsK
ICB9CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbmV3X21pZGRsZQogICAgPSByb3RhdGUoX19maXJz
dF9jdXQsIF9fbWlkZGxlLCBfX3NlY29uZF9jdXQpOwogIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIo
X19maXJzdCwgX19maXJzdF9jdXQsIF9fbmV3X21pZGRsZSwgX19sZW4xMSwgX19sZW4yMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7CiAgX19tZXJnZV93aXRob3V0X2J1ZmZlcihf
X25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LCBfX2xlbjEgLSBfX2xlbjExLAogICAg
ICAgICAgICAgICAgICAgICAgICAgX19sZW4yIC0gX19sZW4yMiwgX19jb21wKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjIs
CiAgICAgICAgICBjbGFzcyBfRGlzdGFuY2U+Cl9CaWRpcmVjdGlvbmFsSXRlcjEgX19yb3RhdGVf
YWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjEgX19taWRkbGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwg
X0Rpc3RhbmNlIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
QmlkaXJlY3Rpb25hbEl0ZXIyIF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplKSB7CiAgX0JpZGlyZWN0aW9uYWxJdGVy
MiBfX2J1ZmZlcl9lbmQ7CiAgaWYgKF9fbGVuMSA+IF9fbGVuMiAmJiBfX2xlbjIgPD0gX19idWZm
ZXJfc2l6ZSkgewogICAgX19idWZmZXJfZW5kID0gY29weShfX21pZGRsZSwgX19sYXN0LCBfX2J1
ZmZlcik7CiAgICBjb3B5X2JhY2t3YXJkKF9fZmlyc3QsIF9fbWlkZGxlLCBfX2xhc3QpOwogICAg
cmV0dXJuIGNvcHkoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwgX19maXJzdCk7CiAgfQogIGVsc2Ug
aWYgKF9fbGVuMSA8PSBfX2J1ZmZlcl9zaXplKSB7CiAgICBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9f
Zmlyc3QsIF9fbWlkZGxlLCBfX2J1ZmZlcik7CiAgICBjb3B5KF9fbWlkZGxlLCBfX2xhc3QsIF9f
Zmlyc3QpOwogICAgcmV0dXJuIGNvcHlfYmFja3dhcmQoX19idWZmZXIsIF9fYnVmZmVyX2VuZCwg
X19sYXN0KTsKICB9CiAgZWxzZQogICAgcmV0dXJuIHJvdGF0ZShfX2ZpcnN0LCBfX21pZGRsZSwg
X19sYXN0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlcjEsIGNsYXNzIF9C
aWRpcmVjdGlvbmFsSXRlcjIsCiAgICAgICAgICBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIzPgpf
QmlkaXJlY3Rpb25hbEl0ZXIzIF9fbWVyZ2VfYmFja3dhcmQoX0JpZGlyZWN0aW9uYWxJdGVyMSBf
X2ZpcnN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlv
bmFsSXRlcjEgX19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlcjIgX19maXJzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIzIF9fcmVzdWx0KSB7CiAgaWYgKF9f
Zmlyc3QxID09IF9fbGFzdDEpCiAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgX19s
YXN0MiwgX19yZXN1bHQpOwogIGlmIChfX2ZpcnN0MiA9PSBfX2xhc3QyKQogICAgcmV0dXJuIGNv
cHlfYmFja3dhcmQoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKICAtLV9fbGFzdDE7CiAg
LS1fX2xhc3QyOwogIHdoaWxlICh0cnVlKSB7CiAgICBpZiAoKl9fbGFzdDIgPCAqX19sYXN0MSkg
ewogICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QxOwogICAgICBpZiAoX19maXJzdDEgPT0gX19s
YXN0MSkKICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBf
X3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0MTsKICAgIH0KICAgIGVsc2UgewogICAgICAqLS1fX3Jl
c3VsdCA9ICpfX2xhc3QyOwogICAgICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAgICAgICBy
ZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MSwgKytfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICAg
IC0tX19sYXN0MjsKICAgIH0KICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0
ZXIxLCBjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpZGlyZWN0
aW9uYWxJdGVyMywgY2xhc3MgX0NvbXBhcmU+Cl9CaWRpcmVjdGlvbmFsSXRlcjMgX19tZXJnZV9i
YWNrd2FyZChfQmlkaXJlY3Rpb25hbEl0ZXIxIF9fZmlyc3QxLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3QxLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyMiBfX2ZpcnN0MiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIg
X19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlv
bmFsSXRlcjMgX19yZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
Q29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgIHJldHVybiBj
b3B5X2JhY2t3YXJkKF9fZmlyc3QyLCBfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgaWYgKF9fZmlyc3Qy
ID09IF9fbGFzdDIpCiAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2ZpcnN0MSwgX19sYXN0MSwg
X19yZXN1bHQpOwogIC0tX19sYXN0MTsKICAtLV9fbGFzdDI7CiAgd2hpbGUgKHRydWUpIHsKICAg
IGlmIChfX2NvbXAoKl9fbGFzdDIsICpfX2xhc3QxKSkgewogICAgICAqLS1fX3Jlc3VsdCA9ICpf
X2xhc3QxOwogICAgICBpZiAoX19maXJzdDEgPT0gX19sYXN0MSkKICAgICAgICByZXR1cm4gY29w
eV9iYWNrd2FyZChfX2ZpcnN0MiwgKytfX2xhc3QyLCBfX3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0
MTsKICAgIH0KICAgIGVsc2UgewogICAgICAqLS1fX3Jlc3VsdCA9ICpfX2xhc3QyOwogICAgICBp
ZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAgICAgICByZXR1cm4gY29weV9iYWNrd2FyZChfX2Zp
cnN0MSwgKytfX2xhc3QxLCBfX3Jlc3VsdCk7CiAgICAgIC0tX19sYXN0MjsKICAgIH0KICB9Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9EaXN0YW5jZSwgY2xh
c3MgX1BvaW50ZXI+CnZvaWQgX19tZXJnZV9hZGFwdGl2ZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19m
aXJzdCwKICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwg
CiAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAg
ICAgICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbGVuMSwgX0Rpc3RhbmNlIF9fbGVuMiwKICAgICAg
ICAgICAgICAgICAgICAgIF9Qb2ludGVyIF9fYnVmZmVyLCBfRGlzdGFuY2UgX19idWZmZXJfc2l6
ZSkgewogIGlmIChfX2xlbjEgPD0gX19sZW4yICYmIF9fbGVuMSA8PSBfX2J1ZmZlcl9zaXplKSB7
CiAgICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9fZmlyc3QsIF9fbWlkZGxlLCBfX2J1
ZmZlcik7CiAgICBtZXJnZShfX2J1ZmZlciwgX19idWZmZXJfZW5kLCBfX21pZGRsZSwgX19sYXN0
LCBfX2ZpcnN0KTsKICB9CiAgZWxzZSBpZiAoX19sZW4yIDw9IF9fYnVmZmVyX3NpemUpIHsKICAg
IF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IGNvcHkoX19taWRkbGUsIF9fbGFzdCwgX19idWZmZXIp
OwogICAgX19tZXJnZV9iYWNrd2FyZChfX2ZpcnN0LCBfX21pZGRsZSwgX19idWZmZXIsIF9fYnVm
ZmVyX2VuZCwgX19sYXN0KTsKICB9CiAgZWxzZSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19m
aXJzdF9jdXQgPSBfX2ZpcnN0OwogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9
IF9fbWlkZGxlOwogICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICAgX0Rpc3RhbmNlIF9fbGVu
MjIgPSAwOwogICAgaWYgKF9fbGVuMSA+IF9fbGVuMikgewogICAgICBfX2xlbjExID0gX19sZW4x
IC8gMjsKICAgICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICAgIF9fc2Vjb25k
X2N1dCA9IGxvd2VyX2JvdW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCk7CiAgICAg
IGRpc3RhbmNlKF9fbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGVuMjIpOyAKICAgIH0KICAgIGVs
c2UgewogICAgICBfX2xlbjIyID0gX19sZW4yIC8gMjsKICAgICAgYWR2YW5jZShfX3NlY29uZF9j
dXQsIF9fbGVuMjIpOwogICAgICBfX2ZpcnN0X2N1dCA9IHVwcGVyX2JvdW5kKF9fZmlyc3QsIF9f
bWlkZGxlLCAqX19zZWNvbmRfY3V0KTsKICAgICAgZGlzdGFuY2UoX19maXJzdCwgX19maXJzdF9j
dXQsIF9fbGVuMTEpOwogICAgfQogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbmV3X21pZGRsZSA9
CiAgICAgIF9fcm90YXRlX2FkYXB0aXZlKF9fZmlyc3RfY3V0LCBfX21pZGRsZSwgX19zZWNvbmRf
Y3V0LCBfX2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAgICAgICBfX2xlbjIyLCBf
X2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiAgICBfX21lcmdlX2FkYXB0aXZlKF9fZmlyc3QsIF9f
Zmlyc3RfY3V0LCBfX25ld19taWRkbGUsIF9fbGVuMTEsCiAgICAgICAgICAgICAgICAgICAgIF9f
bGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplKTsKICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19u
ZXdfbWlkZGxlLCBfX3NlY29uZF9jdXQsIF9fbGFzdCwgX19sZW4xIC0gX19sZW4xMSwKICAgICAg
ICAgICAgICAgICAgICAgX19sZW4yIC0gX19sZW4yMiwgX19idWZmZXIsIF9fYnVmZmVyX3NpemUp
OwogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX0Rpc3Rh
bmNlLCBjbGFzcyBfUG9pbnRlciwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgp2b2lkIF9fbWVy
Z2VfYWRhcHRpdmUoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIAogICAgICAgICAgICAgICAg
ICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLCAKICAgICAgICAgICAgICAgICAgICAg
IF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICBfRGlzdGFu
Y2UgX19sZW4xLCBfRGlzdGFuY2UgX19sZW4yLAogICAgICAgICAgICAgICAgICAgICAgX1BvaW50
ZXIgX19idWZmZXIsIF9EaXN0YW5jZSBfX2J1ZmZlcl9zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYgKF9fbGVuMSA8PSBfX2xlbjIgJiYgX19sZW4xIDw9
IF9fYnVmZmVyX3NpemUpIHsKICAgIF9Qb2ludGVyIF9fYnVmZmVyX2VuZCA9IGNvcHkoX19maXJz
dCwgX19taWRkbGUsIF9fYnVmZmVyKTsKICAgIG1lcmdlKF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQs
IF9fbWlkZGxlLCBfX2xhc3QsIF9fZmlyc3QsIF9fY29tcCk7CiAgfQogIGVsc2UgaWYgKF9fbGVu
MiA8PSBfX2J1ZmZlcl9zaXplKSB7CiAgICBfUG9pbnRlciBfX2J1ZmZlcl9lbmQgPSBjb3B5KF9f
bWlkZGxlLCBfX2xhc3QsIF9fYnVmZmVyKTsKICAgIF9fbWVyZ2VfYmFja3dhcmQoX19maXJzdCwg
X19taWRkbGUsIF9fYnVmZmVyLCBfX2J1ZmZlcl9lbmQsIF9fbGFzdCwKICAgICAgICAgICAgICAg
ICAgICAgX19jb21wKTsKICB9CiAgZWxzZSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJz
dF9jdXQgPSBfX2ZpcnN0OwogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fc2Vjb25kX2N1dCA9IF9f
bWlkZGxlOwogICAgX0Rpc3RhbmNlIF9fbGVuMTEgPSAwOwogICAgX0Rpc3RhbmNlIF9fbGVuMjIg
PSAwOwogICAgaWYgKF9fbGVuMSA+IF9fbGVuMikgewogICAgICBfX2xlbjExID0gX19sZW4xIC8g
MjsKICAgICAgYWR2YW5jZShfX2ZpcnN0X2N1dCwgX19sZW4xMSk7CiAgICAgIF9fc2Vjb25kX2N1
dCA9IGxvd2VyX2JvdW5kKF9fbWlkZGxlLCBfX2xhc3QsICpfX2ZpcnN0X2N1dCwgX19jb21wKTsK
ICAgICAgZGlzdGFuY2UoX19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sZW4yMik7ICAgCiAgICB9
CiAgICBlbHNlIHsKICAgICAgX19sZW4yMiA9IF9fbGVuMiAvIDI7CiAgICAgIGFkdmFuY2UoX19z
ZWNvbmRfY3V0LCBfX2xlbjIyKTsKICAgICAgX19maXJzdF9jdXQgPSB1cHBlcl9ib3VuZChfX2Zp
cnN0LCBfX21pZGRsZSwgKl9fc2Vjb25kX2N1dCwgX19jb21wKTsKICAgICAgZGlzdGFuY2UoX19m
aXJzdCwgX19maXJzdF9jdXQsIF9fbGVuMTEpOwogICAgfQogICAgX0JpZGlyZWN0aW9uYWxJdGVy
IF9fbmV3X21pZGRsZSA9CiAgICAgIF9fcm90YXRlX2FkYXB0aXZlKF9fZmlyc3RfY3V0LCBfX21p
ZGRsZSwgX19zZWNvbmRfY3V0LCBfX2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAg
ICAgICBfX2xlbjIyLCBfX2J1ZmZlciwgX19idWZmZXJfc2l6ZSk7CiAgICBfX21lcmdlX2FkYXB0
aXZlKF9fZmlyc3QsIF9fZmlyc3RfY3V0LCBfX25ld19taWRkbGUsIF9fbGVuMTEsCiAgICAgICAg
ICAgICAgICAgICAgIF9fbGVuMjIsIF9fYnVmZmVyLCBfX2J1ZmZlcl9zaXplLCBfX2NvbXApOwog
ICAgX19tZXJnZV9hZGFwdGl2ZShfX25ld19taWRkbGUsIF9fc2Vjb25kX2N1dCwgX19sYXN0LCBf
X2xlbjEgLSBfX2xlbjExLAogICAgICAgICAgICAgICAgICAgICBfX2xlbjIgLSBfX2xlbjIyLCBf
X2J1ZmZlciwgX19idWZmZXJfc2l6ZSwgX19jb21wKTsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBf
QmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9p
ZCBfX2lucGxhY2VfbWVyZ2VfYXV4KF9CaWRpcmVjdGlvbmFsSXRlciBfX2ZpcnN0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX21pZGRsZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LCBf
VHAqLCBfRGlzdGFuY2UqKSB7CiAgX0Rpc3RhbmNlIF9fbGVuMSA9IDA7CiAgZGlzdGFuY2UoX19m
aXJzdCwgX19taWRkbGUsIF9fbGVuMSk7CiAgX0Rpc3RhbmNlIF9fbGVuMiA9IDA7CiAgZGlzdGFu
Y2UoX19taWRkbGUsIF9fbGFzdCwgX19sZW4yKTsKCiAgX1RlbXBvcmFyeV9idWZmZXI8X0JpZGly
ZWN0aW9uYWxJdGVyLCBfVHA+IF9fYnVmKF9fZmlyc3QsIF9fbGFzdCk7CiAgaWYgKF9fYnVmLmJl
Z2luKCkgPT0gMCkKICAgIF9fbWVyZ2Vfd2l0aG91dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUs
IF9fbGFzdCwgX19sZW4xLCBfX2xlbjIpOwogIGVsc2UKICAgIF9fbWVyZ2VfYWRhcHRpdmUoX19m
aXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsCiAgICAgICAgICAgICAgICAg
ICAgIF9fYnVmLmJlZ2luKCksIF9EaXN0YW5jZShfX2J1Zi5zaXplKCkpKTsKfQoKdGVtcGxhdGUg
PGNsYXNzIF9CaWRpcmVjdGlvbmFsSXRlciwgY2xhc3MgX1RwLCAKICAgICAgICAgIGNsYXNzIF9E
aXN0YW5jZSwgY2xhc3MgX0NvbXBhcmU+CmlubGluZSB2b2lkIF9faW5wbGFjZV9tZXJnZV9hdXgo
X0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QsIF9UcCosIF9EaXN0YW5jZSosCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX0NvbXBhcmUgX19jb21wKSB7CiAgX0Rpc3RhbmNl
IF9fbGVuMSA9IDA7CiAgZGlzdGFuY2UoX19maXJzdCwgX19taWRkbGUsIF9fbGVuMSk7CiAgX0Rp
c3RhbmNlIF9fbGVuMiA9IDA7CiAgZGlzdGFuY2UoX19taWRkbGUsIF9fbGFzdCwgX19sZW4yKTsK
CiAgX1RlbXBvcmFyeV9idWZmZXI8X0JpZGlyZWN0aW9uYWxJdGVyLCBfVHA+IF9fYnVmKF9fZmly
c3QsIF9fbGFzdCk7CiAgaWYgKF9fYnVmLmJlZ2luKCkgPT0gMCkKICAgIF9fbWVyZ2Vfd2l0aG91
dF9idWZmZXIoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwgX19sZW4xLCBfX2xlbjIsIF9fY29t
cCk7CiAgZWxzZQogICAgX19tZXJnZV9hZGFwdGl2ZShfX2ZpcnN0LCBfX21pZGRsZSwgX19sYXN0
LCBfX2xlbjEsIF9fbGVuMiwKICAgICAgICAgICAgICAgICAgICAgX19idWYuYmVnaW4oKSwgX0Rp
c3RhbmNlKF9fYnVmLnNpemUoKSksCiAgICAgICAgICAgICAgICAgICAgIF9fY29tcCk7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXI+CmlubGluZSB2b2lkIGlucGxhY2VfbWVy
Z2UoX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
X0JpZGlyZWN0aW9uYWxJdGVyIF9fbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9PSBfX21pZGRsZSB8fCBf
X21pZGRsZSA9PSBfX2xhc3QpCiAgICByZXR1cm47CiAgX19pbnBsYWNlX21lcmdlX2F1eChfX2Zp
cnN0LCBfX21pZGRsZSwgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgX192YWx1ZV90eXBl
KCBfX2ZpcnN0ICkgLCBfX2Rpc3RhbmNlX3R5cGUoIF9fZmlyc3QgKSApOwp9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFzcyBfQ29tcGFyZT4KaW5saW5lIHZvaWQgaW5w
bGFjZV9tZXJnZShfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9fbGFzdCwgX0NvbXBhcmUgX19jb21wKSB7CiAgaWYg
KF9fZmlyc3QgPT0gX19taWRkbGUgfHwgX19taWRkbGUgPT0gX19sYXN0KQogICAgcmV0dXJuOwog
IF9faW5wbGFjZV9tZXJnZV9hdXgoX19maXJzdCwgX19taWRkbGUsIF9fbGFzdCwKICAgICAgICAg
ICAgICAgICAgICAgIF9fdmFsdWVfdHlwZSggX19maXJzdCApICwgX19kaXN0YW5jZV90eXBlKCBf
X2ZpcnN0ICkgLAogICAgICAgICAgICAgICAgICAgICAgX19jb21wKTsKfQoKIAogCiAKIAoKdGVt
cGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMj4KYm9vbCBpbmNsdWRl
cyhfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAg
ICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0MikgewogIHdoaWxlIChf
X2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoKl9fZmly
c3QyIDwgKl9fZmlyc3QxKQogICAgICByZXR1cm4gZmFsc2U7CiAgICBlbHNlIGlmKCpfX2ZpcnN0
MSA8ICpfX2ZpcnN0MikgCiAgICAgICsrX19maXJzdDE7CiAgICBlbHNlCiAgICAgICsrX19maXJz
dDEsICsrX19maXJzdDI7CgogIHJldHVybiBfX2ZpcnN0MiA9PSBfX2xhc3QyOwp9Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfQ29tcGFyZT4K
Ym9vbCBpbmNsdWRlcyhfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwK
ICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19sYXN0Miwg
X0NvbXBhcmUgX19jb21wKSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJz
dDIgIT0gX19sYXN0MikKICAgIGlmIChfX2NvbXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAg
ICByZXR1cm4gZmFsc2U7CiAgICBlbHNlIGlmKF9fY29tcCgqX19maXJzdDEsICpfX2ZpcnN0Mikp
IAogICAgICArK19fZmlyc3QxOwogICAgZWxzZQogICAgICArK19fZmlyc3QxLCArK19fZmlyc3Qy
OwoKICByZXR1cm4gX19maXJzdDIgPT0gX19sYXN0MjsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1
dEl0ZXIxLCBjbGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVy
IHNldF91bmlvbihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAg
ICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xh
c3QyLAogICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsKICB3aGls
ZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKSB7CiAgICBpZiAo
Kl9fZmlyc3QxIDwgKl9fZmlyc3QyKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAg
ICAgKytfX2ZpcnN0MTsKICAgIH0KICAgIGVsc2UgaWYgKCpfX2ZpcnN0MiA8ICpfX2ZpcnN0MSkg
ewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDI7CiAgICAgICsrX19maXJzdDI7CiAgICB9CiAg
ICBlbHNlIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QxOwogICAgICArK19fZmlyc3QxOwog
ICAgICArK19fZmlyc3QyOwogICAgfQogICAgKytfX3Jlc3VsdDsKICB9CiAgcmV0dXJuIGNvcHko
X19maXJzdDIsIF9fbGFzdDIsIGNvcHkoX19maXJzdDEsIF9fbGFzdDEsIF9fcmVzdWx0KSk7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9P
dXRwdXRJdGVyLAogICAgICAgICAgY2xhc3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyIHNldF91bmlv
bihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAgICAg
ICAgICAgICAgIF9JbnB1dEl0ZXIyIF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLAogICAg
ICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkg
ewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIHsK
ICAgIGlmIChfX2NvbXAoKl9fZmlyc3QxLCAqX19maXJzdDIpKSB7CiAgICAgICpfX3Jlc3VsdCA9
ICpfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MTsKICAgIH0KICAgIGVsc2UgaWYgKF9fY29tcCgq
X19maXJzdDIsICpfX2ZpcnN0MSkpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3QyOwogICAg
ICArK19fZmlyc3QyOwogICAgfQogICAgZWxzZSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
MTsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICAgICsrX19yZXN1
bHQ7CiAgfQogIHJldHVybiBjb3B5KF9fZmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBf
X2xhc3QxLCBfX3Jlc3VsdCkpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNz
IF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0SXRlcj4KX091dHB1dEl0ZXIgc2V0X2ludGVyc2Vj
dGlvbihfSW5wdXRJdGVyMSBfX2ZpcnN0MSwgX0lucHV0SXRlcjEgX19sYXN0MSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3VsdCkg
ewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpIAog
ICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikgCiAgICAgICsrX19maXJzdDE7CiAgICBlbHNl
IGlmICgqX19maXJzdDIgPCAqX19maXJzdDEpIAogICAgICArK19fZmlyc3QyOwogICAgZWxzZSB7
CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MTsKICAgICAgKytf
X2ZpcnN0MjsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICByZXR1cm4gX19yZXN1bHQ7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyMSwgY2xhc3MgX0lucHV0SXRlcjIsIGNsYXNzIF9PdXRw
dXRJdGVyLAogICAgICAgICAgY2xhc3MgX0NvbXBhcmU+Cl9PdXRwdXRJdGVyIHNldF9pbnRlcnNl
Y3Rpb24oX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0ZXIyIF9f
bGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQs
IF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmly
c3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkKICAg
ICAgKytfX2ZpcnN0MTsKICAgIGVsc2UgaWYgKF9fY29tcCgqX19maXJzdDIsICpfX2ZpcnN0MSkp
CiAgICAgICsrX19maXJzdDI7CiAgICBlbHNlIHsKICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Qx
OwogICAgICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgICArK19fcmVzdWx0Owog
ICAgfQogIHJldHVybiBfX3Jlc3VsdDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBj
bGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIHNldF9kaWZm
ZXJlbmNlKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3QxLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0SXRlcjIgX19s
YXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgX091dHB1dEl0ZXIgX19yZXN1bHQpIHsK
ICB3aGlsZSAoX19maXJzdDEgIT0gX19sYXN0MSAmJiBfX2ZpcnN0MiAhPSBfX2xhc3QyKQogICAg
aWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7
CiAgICAgICsrX19maXJzdDE7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNlIGlmICgq
X19maXJzdDIgPCAqX19maXJzdDEpCiAgICAgICsrX19maXJzdDI7CiAgICBlbHNlIHsKICAgICAg
KytfX2ZpcnN0MTsKICAgICAgKytfX2ZpcnN0MjsKICAgIH0KICByZXR1cm4gY29weShfX2ZpcnN0
MSwgX19sYXN0MSwgX19yZXN1bHQpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNs
YXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0cHV0SXRlciwgCiAgICAgICAgICBjbGFzcyBfQ29t
cGFyZT4KX091dHB1dEl0ZXIgc2V0X2RpZmZlcmVuY2UoX0lucHV0SXRlcjEgX19maXJzdDEsIF9J
bnB1dEl0ZXIxIF9fbGFzdDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIF9JbnB1dEl0ZXIy
IF9fZmlyc3QyLCBfSW5wdXRJdGVyMiBfX2xhc3QyLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX091dHB1dEl0ZXIgX19yZXN1bHQsIF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChfX2Zp
cnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21wKCpf
X2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAgICAg
ICsrX19maXJzdDE7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNlIGlmIChfX2NvbXAo
Kl9fZmlyc3QyLCAqX19maXJzdDEpKQogICAgICArK19fZmlyc3QyOwogICAgZWxzZSB7CiAgICAg
ICsrX19maXJzdDE7CiAgICAgICsrX19maXJzdDI7CiAgICB9CiAgcmV0dXJuIGNvcHkoX19maXJz
dDEsIF9fbGFzdDEsIF9fcmVzdWx0KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIxLCBj
bGFzcyBfSW5wdXRJdGVyMiwgY2xhc3MgX091dHB1dEl0ZXI+Cl9PdXRwdXRJdGVyIApzZXRfc3lt
bWV0cmljX2RpZmZlcmVuY2UoX0lucHV0SXRlcjEgX19maXJzdDEsIF9JbnB1dEl0ZXIxIF9fbGFz
dDEsCiAgICAgICAgICAgICAgICAgICAgICAgICBfSW5wdXRJdGVyMiBfX2ZpcnN0MiwgX0lucHV0
SXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIF9PdXRwdXRJdGVyIF9fcmVz
dWx0KSB7CiAgd2hpbGUgKF9fZmlyc3QxICE9IF9fbGFzdDEgJiYgX19maXJzdDIgIT0gX19sYXN0
MikKICAgIGlmICgqX19maXJzdDEgPCAqX19maXJzdDIpIHsKICAgICAgKl9fcmVzdWx0ID0gKl9f
Zmlyc3QxOwogICAgICArK19fZmlyc3QxOwogICAgICArK19fcmVzdWx0OwogICAgfQogICAgZWxz
ZSBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0
MjsKICAgICAgKytfX2ZpcnN0MjsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICAgIGVsc2Ugewog
ICAgICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgfQogIHJldHVybiBjb3B5KF9f
Zmlyc3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0lucHV0SXRlcjEsIGNsYXNzIF9JbnB1dEl0ZXIyLCBjbGFzcyBfT3V0
cHV0SXRlciwKICAgICAgICAgIGNsYXNzIF9Db21wYXJlPgpfT3V0cHV0SXRlciAKc2V0X3N5bW1l
dHJpY19kaWZmZXJlbmNlKF9JbnB1dEl0ZXIxIF9fZmlyc3QxLCBfSW5wdXRJdGVyMSBfX2xhc3Qx
LAogICAgICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcjIgX19maXJzdDIsIF9JbnB1dEl0
ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBfT3V0cHV0SXRlciBfX3Jlc3Vs
dCwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIHdoaWxlIChf
X2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fZmlyc3QyICE9IF9fbGFzdDIpCiAgICBpZiAoX19jb21w
KCpfX2ZpcnN0MSwgKl9fZmlyc3QyKSkgewogICAgICAqX19yZXN1bHQgPSAqX19maXJzdDE7CiAg
ICAgICsrX19maXJzdDE7CiAgICAgICsrX19yZXN1bHQ7CiAgICB9CiAgICBlbHNlIGlmIChfX2Nv
bXAoKl9fZmlyc3QyLCAqX19maXJzdDEpKSB7CiAgICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0MjsK
ICAgICAgKytfX2ZpcnN0MjsKICAgICAgKytfX3Jlc3VsdDsKICAgIH0KICAgIGVsc2UgewogICAg
ICArK19fZmlyc3QxOwogICAgICArK19fZmlyc3QyOwogICAgfQogIHJldHVybiBjb3B5KF9fZmly
c3QyLCBfX2xhc3QyLCBjb3B5KF9fZmlyc3QxLCBfX2xhc3QxLCBfX3Jlc3VsdCkpOwp9CgogCiAK
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXI+Cl9Gb3J3YXJkSXRlciBtYXhfZWxlbWVudChf
Rm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9fbGFzdCkgewogIGlmIChfX2ZpcnN0
ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgX0ZvcndhcmRJdGVyIF9fcmVzdWx0ID0gX19m
aXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgCiAgICBpZiAoKl9fcmVzdWx0IDwg
Kl9fZmlyc3QpCiAgICAgIF9fcmVzdWx0ID0gX19maXJzdDsKICByZXR1cm4gX19yZXN1bHQ7Cn0K
CnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9Db21wYXJlPgpfRm9yd2FyZEl0
ZXIgbWF4X2VsZW1lbnQoX0ZvcndhcmRJdGVyIF9fZmlyc3QsIF9Gb3J3YXJkSXRlciBfX2xhc3Qs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBpZiAoX19m
aXJzdCA9PSBfX2xhc3QpIHJldHVybiBfX2ZpcnN0OwogIF9Gb3J3YXJkSXRlciBfX3Jlc3VsdCA9
IF9fZmlyc3Q7CiAgd2hpbGUgKCsrX19maXJzdCAhPSBfX2xhc3QpIAogICAgaWYgKF9fY29tcCgq
X19yZXN1bHQsICpfX2ZpcnN0KSkgX19yZXN1bHQgPSBfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0ZvcndhcmRJdGVyIG1pbl9lbGVt
ZW50KF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0KSB7CiAgaWYgKF9f
Zmlyc3QgPT0gX19sYXN0KSByZXR1cm4gX19maXJzdDsKICBfRm9yd2FyZEl0ZXIgX19yZXN1bHQg
PSBfX2ZpcnN0OwogIHdoaWxlICgrK19fZmlyc3QgIT0gX19sYXN0KSAKICAgIGlmICgqX19maXJz
dCA8ICpfX3Jlc3VsdCkKICAgICAgX19yZXN1bHQgPSBfX2ZpcnN0OwogIHJldHVybiBfX3Jlc3Vs
dDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0NvbXBhcmU+Cl9Gb3J3
YXJkSXRlciBtaW5fZWxlbWVudChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJdGVyIF9f
bGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Db21wYXJlIF9fY29tcCkgewogIGlm
IChfX2ZpcnN0ID09IF9fbGFzdCkgcmV0dXJuIF9fZmlyc3Q7CiAgX0ZvcndhcmRJdGVyIF9fcmVz
dWx0ID0gX19maXJzdDsKICB3aGlsZSAoKytfX2ZpcnN0ICE9IF9fbGFzdCkgCiAgICBpZiAoX19j
b21wKCpfX2ZpcnN0LCAqX19yZXN1bHQpKQogICAgICBfX3Jlc3VsdCA9IF9fZmlyc3Q7CiAgcmV0
dXJuIF9fcmVzdWx0Owp9CgogCiAKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXI+
CmJvb2wgbmV4dF9wZXJtdXRhdGlvbihfQmlkaXJlY3Rpb25hbEl0ZXIgX19maXJzdCwgX0JpZGly
ZWN0aW9uYWxJdGVyIF9fbGFzdCkgewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVy
biBmYWxzZTsKICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19pID0gX19maXJzdDsKICArK19faTsKICBp
ZiAoX19pID09IF9fbGFzdCkKICAgIHJldHVybiBmYWxzZTsKICBfX2kgPSBfX2xhc3Q7CiAgLS1f
X2k7CgogIGZvcig7OykgewogICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faWkgPSBfX2k7CiAgICAt
LV9faTsKICAgIGlmICgqX19pIDwgKl9faWkpIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
aiA9IF9fbGFzdDsKICAgICAgd2hpbGUgKCEoKl9faSA8ICotLV9faikpCiAgICAgICAge30KICAg
ICAgaXRlcl9zd2FwKF9faSwgX19qKTsKICAgICAgcmV2ZXJzZShfX2lpLCBfX2xhc3QpOwogICAg
ICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGlmIChfX2kgPT0gX19maXJzdCkgewogICAgICByZXZl
cnNlKF9fZmlyc3QsIF9fbGFzdCk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICB9Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIsIGNsYXNzIF9Db21wYXJlPgpib29sIG5l
eHRfcGVybXV0YXRpb24oX0JpZGlyZWN0aW9uYWxJdGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFs
SXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAgICBfQ29tcGFyZSBfX2NvbXApIHsKICBp
ZiAoX19maXJzdCA9PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAgX0JpZGlyZWN0aW9uYWxJ
dGVyIF9faSA9IF9fZmlyc3Q7CiAgKytfX2k7CiAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICByZXR1
cm4gZmFsc2U7CiAgX19pID0gX19sYXN0OwogIC0tX19pOwoKICBmb3IoOzspIHsKICAgIF9CaWRp
cmVjdGlvbmFsSXRlciBfX2lpID0gX19pOwogICAgLS1fX2k7CiAgICBpZiAoX19jb21wKCpfX2ks
ICpfX2lpKSkgewogICAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19qID0gX19sYXN0OwogICAgICB3
aGlsZSAoIV9fY29tcCgqX19pLCAqLS1fX2opKQogICAgICAgIHt9CiAgICAgIGl0ZXJfc3dhcChf
X2ksIF9faik7CiAgICAgIHJldmVyc2UoX19paSwgX19sYXN0KTsKICAgICAgcmV0dXJuIHRydWU7
CiAgICB9CiAgICBpZiAoX19pID09IF9fZmlyc3QpIHsKICAgICAgcmV2ZXJzZShfX2ZpcnN0LCBf
X2xhc3QpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X0JpZGlyZWN0aW9uYWxJdGVyPgpib29sIHByZXZfcGVybXV0YXRpb24oX0JpZGlyZWN0aW9uYWxJ
dGVyIF9fZmlyc3QsIF9CaWRpcmVjdGlvbmFsSXRlciBfX2xhc3QpIHsKICBpZiAoX19maXJzdCA9
PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAgX0JpZGlyZWN0aW9uYWxJdGVyIF9faSA9IF9f
Zmlyc3Q7CiAgKytfX2k7CiAgaWYgKF9faSA9PSBfX2xhc3QpCiAgICByZXR1cm4gZmFsc2U7CiAg
X19pID0gX19sYXN0OwogIC0tX19pOwoKICBmb3IoOzspIHsKICAgIF9CaWRpcmVjdGlvbmFsSXRl
ciBfX2lpID0gX19pOwogICAgLS1fX2k7CiAgICBpZiAoKl9faWkgPCAqX19pKSB7CiAgICAgIF9C
aWRpcmVjdGlvbmFsSXRlciBfX2ogPSBfX2xhc3Q7CiAgICAgIHdoaWxlICghKCotLV9faiA8ICpf
X2kpKQogICAgICAgIHt9CiAgICAgIGl0ZXJfc3dhcChfX2ksIF9faik7CiAgICAgIHJldmVyc2Uo
X19paSwgX19sYXN0KTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpZiAoX19pID09IF9f
Zmlyc3QpIHsKICAgICAgcmV2ZXJzZShfX2ZpcnN0LCBfX2xhc3QpOwogICAgICByZXR1cm4gZmFs
c2U7CiAgICB9CiAgfQp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyLCBjbGFz
cyBfQ29tcGFyZT4KYm9vbCBwcmV2X3Blcm11dGF0aW9uKF9CaWRpcmVjdGlvbmFsSXRlciBfX2Zp
cnN0LCBfQmlkaXJlY3Rpb25hbEl0ZXIgX19sYXN0LAogICAgICAgICAgICAgICAgICAgICAgX0Nv
bXBhcmUgX19jb21wKSB7CiAgaWYgKF9fZmlyc3QgPT0gX19sYXN0KQogICAgcmV0dXJuIGZhbHNl
OwogIF9CaWRpcmVjdGlvbmFsSXRlciBfX2kgPSBfX2ZpcnN0OwogICsrX19pOwogIGlmIChfX2kg
PT0gX19sYXN0KQogICAgcmV0dXJuIGZhbHNlOwogIF9faSA9IF9fbGFzdDsKICAtLV9faTsKCiAg
Zm9yKDs7KSB7CiAgICBfQmlkaXJlY3Rpb25hbEl0ZXIgX19paSA9IF9faTsKICAgIC0tX19pOwog
ICAgaWYgKF9fY29tcCgqX19paSwgKl9faSkpIHsKICAgICAgX0JpZGlyZWN0aW9uYWxJdGVyIF9f
aiA9IF9fbGFzdDsKICAgICAgd2hpbGUgKCFfX2NvbXAoKi0tX19qLCAqX19pKSkKICAgICAgICB7
fQogICAgICBpdGVyX3N3YXAoX19pLCBfX2opOwogICAgICByZXZlcnNlKF9faWksIF9fbGFzdCk7
CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgaWYgKF9faSA9PSBfX2ZpcnN0KSB7CiAgICAg
IHJldmVyc2UoX19maXJzdCwgX19sYXN0KTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0K
fQoKIAoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlcj4KX0lu
cHV0SXRlciBmaW5kX2ZpcnN0X29mKF9JbnB1dEl0ZXIgX19maXJzdDEsIF9JbnB1dEl0ZXIgX19s
YXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0MiwgX0Zv
cndhcmRJdGVyIF9fbGFzdDIpCnsKICBmb3IgKCA7IF9fZmlyc3QxICE9IF9fbGFzdDE7ICsrX19m
aXJzdDEpIAogICAgZm9yIChfRm9yd2FyZEl0ZXIgX19pdGVyID0gX19maXJzdDI7IF9faXRlciAh
PSBfX2xhc3QyOyArK19faXRlcikKICAgICAgaWYgKCpfX2ZpcnN0MSA9PSAqX19pdGVyKQogICAg
ICAgIHJldHVybiBfX2ZpcnN0MTsKICByZXR1cm4gX19sYXN0MTsKfQoKdGVtcGxhdGUgPGNsYXNz
IF9JbnB1dEl0ZXIsIGNsYXNzIF9Gb3J3YXJkSXRlciwgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4K
X0lucHV0SXRlciBmaW5kX2ZpcnN0X29mKF9JbnB1dEl0ZXIgX19maXJzdDEsIF9JbnB1dEl0ZXIg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlciBfX2ZpcnN0Miwg
X0ZvcndhcmRJdGVyIF9fbGFzdDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBfQmluYXJ5UHJl
ZGljYXRlIF9fY29tcCkKewogIGZvciAoIDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytfX2ZpcnN0
MSkgCiAgICBmb3IgKF9Gb3J3YXJkSXRlciBfX2l0ZXIgPSBfX2ZpcnN0MjsgX19pdGVyICE9IF9f
bGFzdDI7ICsrX19pdGVyKQogICAgICBpZiAoX19jb21wKCpfX2ZpcnN0MSwgKl9faXRlcikpCiAg
ICAgICAgcmV0dXJuIF9fZmlyc3QxOwogIHJldHVybiBfX2xhc3QxOwp9CgoKIAogCiAKIAoKIAp0
ZW1wbGF0ZSA8Y2xhc3MgX0ZvcndhcmRJdGVyMSwgY2xhc3MgX0ZvcndhcmRJdGVyMj4KX0Zvcndh
cmRJdGVyMSBfX2ZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3YXJkSXRlcjEg
X19sYXN0MSwKICAgICAgICAgICAgICAgICAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIs
IF9Gb3J3YXJkSXRlcjIgX19sYXN0MiwKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmRf
aXRlcmF0b3JfdGFnLCBmb3J3YXJkX2l0ZXJhdG9yX3RhZykKewogIGlmIChfX2ZpcnN0MiA9PSBf
X2xhc3QyKQogICAgcmV0dXJuIF9fbGFzdDE7CiAgZWxzZSB7CiAgICBfRm9yd2FyZEl0ZXIxIF9f
cmVzdWx0ID0gX19sYXN0MTsKICAgIHdoaWxlICgxKSB7CiAgICAgIF9Gb3J3YXJkSXRlcjEgX19u
ZXdfcmVzdWx0CiAgICAgICAgPSBzZWFyY2goX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBf
X2xhc3QyKTsKICAgICAgaWYgKF9fbmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQogICAgICAgIHJldHVy
biBfX3Jlc3VsdDsKICAgICAgZWxzZSB7CiAgICAgICAgX19yZXN1bHQgPSBfX25ld19yZXN1bHQ7
CiAgICAgICAgX19maXJzdDEgPSBfX25ld19yZXN1bHQ7CiAgICAgICAgKytfX2ZpcnN0MTsKICAg
ICAgfQogICAgfQogIH0KfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNsYXNzIF9G
b3J3YXJkSXRlcjIsCiAgICAgICAgICBjbGFzcyBfQmluYXJ5UHJlZGljYXRlPgpfRm9yd2FyZEl0
ZXIxIF9fZmluZF9lbmQoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyMSBfX2xh
c3QxLAogICAgICAgICAgICAgICAgICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0MiwgX0Zv
cndhcmRJdGVyMiBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgICAgICAgZm9yd2FyZF9pdGVy
YXRvcl90YWcsIGZvcndhcmRfaXRlcmF0b3JfdGFnLAogICAgICAgICAgICAgICAgICAgICAgICAg
X0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCnsKICBpZiAoX19maXJzdDIgPT0gX19sYXN0MikKICAg
IHJldHVybiBfX2xhc3QxOwogIGVsc2UgewogICAgX0ZvcndhcmRJdGVyMSBfX3Jlc3VsdCA9IF9f
bGFzdDE7CiAgICB3aGlsZSAoMSkgewogICAgICBfRm9yd2FyZEl0ZXIxIF9fbmV3X3Jlc3VsdAog
ICAgICAgID0gc2VhcmNoKF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0MiwgX19sYXN0MiwgX19j
b21wKTsKICAgICAgaWYgKF9fbmV3X3Jlc3VsdCA9PSBfX2xhc3QxKQogICAgICAgIHJldHVybiBf
X3Jlc3VsdDsKICAgICAgZWxzZSB7CiAgICAgICAgX19yZXN1bHQgPSBfX25ld19yZXN1bHQ7CiAg
ICAgICAgX19maXJzdDEgPSBfX25ld19yZXN1bHQ7CiAgICAgICAgKytfX2ZpcnN0MTsKICAgICAg
fQogICAgfQogIH0KfQoKIAoKCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBj
bGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIyPgpfQmlkaXJlY3Rpb25hbEl0ZXIxCl9fZmluZF9lbmQo
X0JpZGlyZWN0aW9uYWxJdGVyMSBfX2ZpcnN0MSwgX0JpZGlyZWN0aW9uYWxJdGVyMSBfX2xhc3Qx
LAogICAgICAgICAgIF9CaWRpcmVjdGlvbmFsSXRlcjIgX19maXJzdDIsIF9CaWRpcmVjdGlvbmFs
SXRlcjIgX19sYXN0MiwKICAgICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcpCnsKICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8X0Jp
ZGlyZWN0aW9uYWxJdGVyMT4gX1Jldkl0ZXIxOwogIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxf
QmlkaXJlY3Rpb25hbEl0ZXIyPiBfUmV2SXRlcjI7CgogIF9SZXZJdGVyMSBfX3JsYXN0MShfX2Zp
cnN0MSk7CiAgX1Jldkl0ZXIyIF9fcmxhc3QyKF9fZmlyc3QyKTsKICBfUmV2SXRlcjEgX19ycmVz
dWx0ID0gc2VhcmNoKF9SZXZJdGVyMShfX2xhc3QxKSwgX19ybGFzdDEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfUmV2SXRlcjIoX19sYXN0MiksIF9fcmxhc3QyKTsKCiAgaWYgKF9f
cnJlc3VsdCA9PSBfX3JsYXN0MSkKICAgIHJldHVybiBfX2xhc3QxOwogIGVsc2UgewogICAgX0Jp
ZGlyZWN0aW9uYWxJdGVyMSBfX3Jlc3VsdCA9IF9fcnJlc3VsdC5iYXNlKCk7CiAgICBhZHZhbmNl
KF9fcmVzdWx0LCAtZGlzdGFuY2UoX19maXJzdDIsIF9fbGFzdDIpKTsKICAgIHJldHVybiBfX3Jl
c3VsdDsKICB9Cn0KCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXIxLCBjbGFzcyBf
QmlkaXJlY3Rpb25hbEl0ZXIyLAogICAgICAgICAgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KX0Jp
ZGlyZWN0aW9uYWxJdGVyMQpfX2ZpbmRfZW5kKF9CaWRpcmVjdGlvbmFsSXRlcjEgX19maXJzdDEs
IF9CaWRpcmVjdGlvbmFsSXRlcjEgX19sYXN0MSwKICAgICAgICAgICBfQmlkaXJlY3Rpb25hbEl0
ZXIyIF9fZmlyc3QyLCBfQmlkaXJlY3Rpb25hbEl0ZXIyIF9fbGFzdDIsCiAgICAgICAgICAgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCAKICAg
ICAgICAgICBfQmluYXJ5UHJlZGljYXRlIF9fY29tcCkKewogIHR5cGVkZWYgcmV2ZXJzZV9pdGVy
YXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXIxPiBfUmV2SXRlcjE7CiAgdHlwZWRlZiByZXZlcnNlX2l0
ZXJhdG9yPF9CaWRpcmVjdGlvbmFsSXRlcjI+IF9SZXZJdGVyMjsKCiAgX1Jldkl0ZXIxIF9fcmxh
c3QxKF9fZmlyc3QxKTsKICBfUmV2SXRlcjIgX19ybGFzdDIoX19maXJzdDIpOwogIF9SZXZJdGVy
MSBfX3JyZXN1bHQgPSBzZWFyY2goX1Jldkl0ZXIxKF9fbGFzdDEpLCBfX3JsYXN0MSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZXZJdGVyMihfX2xhc3QyKSwgX19ybGFzdDIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbXApOwoKICBpZiAoX19ycmVzdWx0ID09
IF9fcmxhc3QxKQogICAgcmV0dXJuIF9fbGFzdDE7CiAgZWxzZSB7CiAgICBfQmlkaXJlY3Rpb25h
bEl0ZXIxIF9fcmVzdWx0ID0gX19ycmVzdWx0LmJhc2UoKTsKICAgIGFkdmFuY2UoX19yZXN1bHQs
IC1kaXN0YW5jZShfX2ZpcnN0MiwgX19sYXN0MikpOwogICAgcmV0dXJuIF9fcmVzdWx0OwogIH0K
fQoKCiAKCnRlbXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIxLCBjbGFzcyBfRm9yd2FyZEl0ZXIy
PgppbmxpbmUgX0ZvcndhcmRJdGVyMSAKZmluZF9lbmQoX0ZvcndhcmRJdGVyMSBfX2ZpcnN0MSwg
X0ZvcndhcmRJdGVyMSBfX2xhc3QxLCAKICAgICAgICAgX0ZvcndhcmRJdGVyMiBfX2ZpcnN0Miwg
X0ZvcndhcmRJdGVyMiBfX2xhc3QyKQp7CiAgcmV0dXJuIF9fZmluZF9lbmQoX19maXJzdDEsIF9f
bGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3Jf
Y2F0ZWdvcnkoIF9fZmlyc3QxICkgLAogICAgICAgICAgICAgICAgICAgIF9faXRlcmF0b3JfY2F0
ZWdvcnkoIF9fZmlyc3QyICkgKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Gb3J3YXJkSXRlcjEsIGNs
YXNzIF9Gb3J3YXJkSXRlcjIsIAogICAgICAgICAgY2xhc3MgX0JpbmFyeVByZWRpY2F0ZT4KaW5s
aW5lIF9Gb3J3YXJkSXRlcjEgCmZpbmRfZW5kKF9Gb3J3YXJkSXRlcjEgX19maXJzdDEsIF9Gb3J3
YXJkSXRlcjEgX19sYXN0MSwgCiAgICAgICAgIF9Gb3J3YXJkSXRlcjIgX19maXJzdDIsIF9Gb3J3
YXJkSXRlcjIgX19sYXN0MiwKICAgICAgICAgX0JpbmFyeVByZWRpY2F0ZSBfX2NvbXApCnsKICBy
ZXR1cm4gX19maW5kX2VuZChfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCiAg
ICAgICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdDEgKSAsCiAgICAg
ICAgICAgICAgICAgICAgX19pdGVyYXRvcl9jYXRlZ29yeSggX19maXJzdDIgKSAsCiAgICAgICAg
ICAgICAgICAgICAgX19jb21wKTsKfQoKIAogCiAKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNj
ZXNzSXRlciwgY2xhc3MgX0Rpc3RhbmNlPgpib29sIF9faXNfaGVhcChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfRGlzdGFuY2UgX19uKQp7CiAgX0Rpc3RhbmNlIF9fcGFyZW50ID0gMDsKICBm
b3IgKF9EaXN0YW5jZSBfX2NoaWxkID0gMTsgX19jaGlsZCA8IF9fbjsgKytfX2NoaWxkKSB7CiAg
ICBpZiAoX19maXJzdFtfX3BhcmVudF0gPCBfX2ZpcnN0W19fY2hpbGRdKSAKICAgICAgcmV0dXJu
IGZhbHNlOwogICAgaWYgKChfX2NoaWxkICYgMSkgPT0gMCkKICAgICAgKytfX3BhcmVudDsKICB9
CiAgcmV0dXJuIHRydWU7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xh
c3MgX0Rpc3RhbmNlLCBjbGFzcyBfU3RyaWN0V2Vha09yZGVyaW5nPgpib29sIF9faXNfaGVhcChf
UmFuZG9tQWNjZXNzSXRlciBfX2ZpcnN0LCBfU3RyaWN0V2Vha09yZGVyaW5nIF9fY29tcCwKICAg
ICAgICAgICAgICAgX0Rpc3RhbmNlIF9fbikKewogIF9EaXN0YW5jZSBfX3BhcmVudCA9IDA7CiAg
Zm9yIChfRGlzdGFuY2UgX19jaGlsZCA9IDE7IF9fY2hpbGQgPCBfX247ICsrX19jaGlsZCkgewog
ICAgaWYgKF9fY29tcChfX2ZpcnN0W19fcGFyZW50XSwgX19maXJzdFtfX2NoaWxkXSkpCiAgICAg
IHJldHVybiBmYWxzZTsKICAgIGlmICgoX19jaGlsZCAmIDEpID09IDApCiAgICAgICsrX19wYXJl
bnQ7CiAgfQogIHJldHVybiB0cnVlOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0
ZXI+CmlubGluZSBib29sIGlzX2hlYXAoX1JhbmRvbUFjY2Vzc0l0ZXIgX19maXJzdCwgX1JhbmRv
bUFjY2Vzc0l0ZXIgX19sYXN0KQp7CiAgcmV0dXJuIF9faXNfaGVhcChfX2ZpcnN0LCBfX2xhc3Qg
LSBfX2ZpcnN0KTsKfQoKCnRlbXBsYXRlIDxjbGFzcyBfUmFuZG9tQWNjZXNzSXRlciwgY2xhc3Mg
X1N0cmljdFdlYWtPcmRlcmluZz4KaW5saW5lIGJvb2wgaXNfaGVhcChfUmFuZG9tQWNjZXNzSXRl
ciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlciBfX2xhc3QsCiAgICAgICAgICAgICAgICAgICAg
X1N0cmljdFdlYWtPcmRlcmluZyBfX2NvbXApCnsKICByZXR1cm4gX19pc19oZWFwKF9fZmlyc3Qs
IF9fY29tcCwgX19sYXN0IC0gX19maXJzdCk7Cn0KCiAKIAogCgp0ZW1wbGF0ZSA8Y2xhc3MgX0Zv
cndhcmRJdGVyPgpib29sIGlzX3NvcnRlZChfRm9yd2FyZEl0ZXIgX19maXJzdCwgX0ZvcndhcmRJ
dGVyIF9fbGFzdCkKewogIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKICAgIHJldHVybiB0cnVlOwoK
ICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19maXJzdDsKICBmb3IgKCsrX19uZXh0OyBfX25leHQg
IT0gX19sYXN0OyBfX2ZpcnN0ID0gX19uZXh0LCArK19fbmV4dCkgewogICAgaWYgKCpfX25leHQg
PCAqX19maXJzdCkKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgcmV0dXJuIHRydWU7Cn0KCnRl
bXBsYXRlIDxjbGFzcyBfRm9yd2FyZEl0ZXIsIGNsYXNzIF9TdHJpY3RXZWFrT3JkZXJpbmc+CmJv
b2wgaXNfc29ydGVkKF9Gb3J3YXJkSXRlciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXIgX19sYXN0LAog
ICAgICAgICAgICAgICBfU3RyaWN0V2Vha09yZGVyaW5nIF9fY29tcCkKewogIGlmIChfX2ZpcnN0
ID09IF9fbGFzdCkKICAgIHJldHVybiB0cnVlOwoKICBfRm9yd2FyZEl0ZXIgX19uZXh0ID0gX19m
aXJzdDsKICBmb3IgKCsrX19uZXh0OyBfX25leHQgIT0gX19sYXN0OyBfX2ZpcnN0ID0gX19uZXh0
LCArK19fbmV4dCkgewogICAgaWYgKF9fY29tcCgqX19uZXh0LCAqX19maXJzdCkpCiAgICAgIHJl
dHVybiBmYWxzZTsKICB9CgogIHJldHVybiB0cnVlOwp9CgoKCgoKIAoKCgogCiAKIAojIDM0ICIv
dWZzL25ld21hbi91c2Vycy9kZXJyaWNrL2dudS9nY2MtMi45NS4zL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzIuOTUuMy8uLi8uLi8uLi8uLi9pbmNsdWRlL2crKy0zL2FsZ29yaXRobSIg
MiAzCgoKCgogCiAKIAojIDkgIi4uL2hlYWRlcnMvbnVtYmVyZm9ybXMuaCIgMgoKCnRlbXBsYXRl
PGNsYXNzIFQ+CmNsYXNzIF9mb3JtYXRfb3V0IHsgfTsKCnRlbXBsYXRlPGNsYXNzIGZvcm0+CmNs
YXNzIF9mb3JtYXRfb3V0X29zdHJlYW0gewpwdWJsaWM6CiAgc3RkOjpvc3RyZWFtJiBvczsKICBm
b3JtIGY7CgogIGV4cGxpY2l0IF9mb3JtYXRfb3V0X29zdHJlYW0oc3RkOjpvc3RyZWFtJiBfb3Ms
IGNvbnN0IGZvcm0mIF9mPWZvcm0oKSkgCiAgICA6IG9zKF9vcyksIGYoX2YpIHsgfQp9OwoKdGVt
cGxhdGU8Y2xhc3MgZm9ybT4KaW5saW5lIF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4KICBvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSYgbywgY29uc3QgX2Zvcm1hdF9vdXQ8Zm9ybT4mIGYpIHsKICBy
ZXR1cm4gX2Zvcm1hdF9vdXRfb3N0cmVhbTxmb3JtPihvLCByZWludGVycHJldF9jYXN0PGNvbnN0
IGZvcm0mPihmKSk7Cn0KCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgZm9ybSwgY2xhc3MgVD4KY2xh
c3MgX2Zvcm1hdF9vdXRfY2FsbGVyIHsKcHVibGljOgogIHN0YXRpYyBzdGQ6Om9zdHJlYW0mIGFw
cGx5KGNvbnN0IF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4mIGFvbywgCgkJCSAgICAgY29uc3Qg
VCYgdCkgewogICAgcmV0dXJuIGFvby5mLm91dHB1dChhb28ub3MsIHQpOwogIH0KfTsKCnRlbXBs
YXRlPGNsYXNzIGZvcm0sIGNsYXNzIFQ+CmlubGluZSBzdGQ6Om9zdHJlYW0mIAogIG9wZXJhdG9y
PDwoY29uc3QgX2Zvcm1hdF9vdXRfb3N0cmVhbTxmb3JtPiYgYW9vLCBjb25zdCBUJiB0KSB7CiAg
cmV0dXJuIF9mb3JtYXRfb3V0X2NhbGxlcjxmb3JtLCBUPjo6YXBwbHkoYW9vLCB0KTsKfQoKY2xh
c3MgX21tYV9mb3JtX2R1bW15IDogcHVibGljIF9mb3JtYXRfb3V0PF9tbWFfZm9ybV9kdW1teT4g
eyAKcHVibGljOgogIHRlbXBsYXRlPGNsYXNzIFQ+IAogIHN0ZDo6b3N0cmVhbSYgb3V0cHV0KHN0
ZDo6b3N0cmVhbSYgbywgY29uc3QgVCYgdCkgY29uc3QgewogICAgcmV0dXJuIG8gPDwgdDsgfQoK
ICB0ZW1wbGF0ZTxjbGFzcyBUPgogIHN0ZDo6b3N0cmVhbSYgb3V0cHV0RmxvYXRpbmdQb2ludChz
dGQ6Om9zdHJlYW0mIG8sIGNvbnN0IFQmIHQpIGNvbnN0Owp9OwoKc3RhdGljIF9tbWFfZm9ybV9k
dW1teSBtbWFfZm9ybTsKCiAKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYg
X21tYV9mb3JtX2R1bW15OjpvdXRwdXRGbG9hdGluZ1BvaW50KHN0ZDo6b3N0cmVhbSYgbywgCgkJ
CQkJCQkgICAgY29uc3QgVCYgdCkgY29uc3QgewogIHN0ZDo6b3N0cmluZ3N0cmVhbSBvczsKICBv
cyA8PCBzdGQ6OnNldHByZWNpc2lvbihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMxMCsx
KSA8PCB0OwogIAogIHN0ZDo6c3RyaW5nIHJlc3VsdCA9IG9zLnN0cigpOwogIHN0ZDo6c3RyaW5n
OjpzaXplX3R5cGUgaTsKICB3aGlsZSgoaSA9IHJlc3VsdC5maW5kX2ZpcnN0X29mKCJlRSIpKSAh
PSBzdGQ6OnN0cmluZzo6bnBvcykKICAgIHJlc3VsdC5yZXBsYWNlKGksMSwgIipeIik7CiAgcmV0
dXJuIG8gPDwgcmVzdWx0Owp9Cgp0ZW1wbGF0ZTw+CmlubGluZSBzdGQ6Om9zdHJlYW0mIF9tbWFf
Zm9ybV9kdW1teTo6b3V0cHV0PGZsb2F0PihzdGQ6Om9zdHJlYW0mIG8sIAoJCQkJCQkgICBjb25z
dCBmbG9hdCYgZCkgY29uc3QgewogIHJldHVybiBvdXRwdXRGbG9hdGluZ1BvaW50KG8sIGQpOwp9
Cgp0ZW1wbGF0ZTw+CmlubGluZSBzdGQ6Om9zdHJlYW0mIF9tbWFfZm9ybV9kdW1teTo6b3V0cHV0
PGRvdWJsZT4oc3RkOjpvc3RyZWFtJiBvLCAKCQkJCQkJICAgY29uc3QgZG91YmxlJiBkKSBjb25z
dCB7CiAgcmV0dXJuIG91dHB1dEZsb2F0aW5nUG9pbnQobywgZCk7Cn0KCnRlbXBsYXRlPD4KaW5s
aW5lIHN0ZDo6b3N0cmVhbSYgX21tYV9mb3JtX2R1bW15OjpvdXRwdXQ8bG9uZyBkb3VibGU+KHN0
ZDo6b3N0cmVhbSYgbywgCgkJCQkJCSAgIGNvbnN0IGxvbmcgZG91YmxlJiBkKSBjb25zdCB7CiAg
cmV0dXJuIG91dHB1dEZsb2F0aW5nUG9pbnQobywgZCk7Cn0KCnRlbXBsYXRlPD4KaW5saW5lIHN0
ZDo6b3N0cmVhbSYgX21tYV9mb3JtX2R1bW15OjpvdXRwdXQ8Ym9vbD4oc3RkOjpvc3RyZWFtJiBv
LCAKCQkJCQkJICBjb25zdCBib29sJiBiKSBjb25zdCB7CiAgc3dpdGNoIChiKSB7CiAgY2FzZSB0
cnVlOgogICAgcmV0dXJuIG8gPDwgIlRydWUiOwogIGNhc2UgZmFsc2U6CiAgICByZXR1cm4gbyA8
PCAiRmFsc2UiOwogIH0KICAgCiAgcmV0dXJuIG87Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlw
ZT4Kc3RydWN0IEJpbmFyeUZvcm0gewogIGNvbnN0IHN0YXRpYyBpbnQgbGVuID0gc2l6ZW9mKFRf
bnVtdHlwZSk7CiAgdW5pb24gewogICAgVF9udW10eXBlIG51bTsKICAgIHVuc2lnbmVkIGNoYXIg
YmludVsgbGVuIF07CiAgICBjaGFyIGJpbmNbIGxlbiBdOwogIH07Cn07CgogCmNsYXNzIF9oZXhf
b3V0X2R1bW15IDogcHVibGljIF9mb3JtYXRfb3V0PF9oZXhfb3V0X2R1bW15PiB7CnB1YmxpYzoK
ICB0ZW1wbGF0ZTxjbGFzcyBUPgogIHN0ZDo6b3N0cmVhbSYgb3V0cHV0KHN0ZDo6b3N0cmVhbSYg
bywgY29uc3QgVCYgdCkgY29uc3QgewogICAgbyA8PCAiMHgiIDw8IGhleCA8PCBzZXRmaWxsKCcw
Jyk7CiAgICBCaW5hcnlGb3JtPFQ+IGJmOwogICAgYmYubnVtID0gdDsKICAgICAKICAgIGZvcihp
bnQgaT0wOyBpPEJpbmFyeUZvcm08VD46OmxlbiAgOyBpKyspIAogICAgICBvIDw8IHNldHcoMikg
PDwgaW50KGJmLmJpbnVbaV0pOwogICAgbyA8PCBkZWMgPDwgc2V0ZmlsbCgnICcpOwogICAgcmV0
dXJuIG87CiAgfQp9OyAgICAKCnN0YXRpYyBfaGV4X291dF9kdW1teSBoZXhfb3V0OwoKIApjbGFz
cyBfaGV4X25vcm1fb3V0X2R1bW15IDogcHVibGljIF9mb3JtYXRfb3V0PF9oZXhfbm9ybV9vdXRf
ZHVtbXk+IHsKcHVibGljOgogIHRlbXBsYXRlPGNsYXNzIFQ+CiAgc3RkOjpvc3RyZWFtJiBvdXRw
dXQoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBUJiB0KSBjb25zdCB7CiAgICBvIDw8ICIoMHgiIDw8
IGhleCA8PCBzZXRmaWxsKCcwJyk7CiAgICBCaW5hcnlGb3JtPFQ+IGJmOwogICAgYmYubnVtID0g
dDsKICAgICAKICAgIGZvcihpbnQgaT0wOyBpPEJpbmFyeUZvcm08VD46OmxlbiAgOyBpKyspIAog
ICAgICBvIDw8IHNldHcoMikgPDwgaW50KGJmLmJpbnVbaV0pOwogICAgbyA8PCBkZWMgPDwgc2V0
ZmlsbCgnICcpOwogICAgbyA8PCAiLCAiIDw8IHQgPDwgJyknOwogICAgcmV0dXJuIG87CiAgfQp9
OyAgIAoKc3RhdGljIF9oZXhfbm9ybV9vdXRfZHVtbXkgaGV4X25vcm1fb3V0OwoKIApjbGFzcyBf
YmluX291dF9kdW1teSA6IHB1YmxpYyBfZm9ybWF0X291dDxfYmluX291dF9kdW1teT4gewpwdWJs
aWM6CiAgdGVtcGxhdGU8Y2xhc3MgVD4KICBzdGQ6Om9zdHJlYW0mIG91dHB1dChzdGQ6Om9zdHJl
YW0mIG8sIGNvbnN0IFQmIHQpIGNvbnN0IHsKICAgIEJpbmFyeUZvcm08VD4gYmY7CiAgICBiZi5u
dW0gPSB0OwogICAgIAogICAgc3RkOjpzdHJpbmcgcyhiZi5iaW5jLCBiZi5iaW5jICsgQmluYXJ5
Rm9ybTxUPjo6bGVuKTsKICAgIHJldHVybiBvIDw8IHM7CiAgfQp9OwoKc3RhdGljIF9iaW5fb3V0
X2R1bW15IGJpbl9vdXQ7CgpjbGFzcyBfYmluX29wcG9zaXRlX291dF9kdW1teSA6IHB1YmxpYyBf
Zm9ybWF0X291dDxfYmluX29wcG9zaXRlX291dF9kdW1teT4gewpwdWJsaWM6CiAgdGVtcGxhdGU8
Y2xhc3MgVD4KICBzdGQ6Om9zdHJlYW0mIG91dHB1dChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IFQm
IHQpIGNvbnN0IHsKICAgIEJpbmFyeUZvcm08VD4gYmY7CiAgICBiZi5udW0gPSB0OwogICAgIAog
ICAgc3RkOjpzdHJpbmcgcyhiZi5iaW5jLCBiZi5iaW5jICsgQmluYXJ5Rm9ybTxUPjo6bGVuKTsK
ICAgIHJldHVybiBvIDw8IHN0cmluZyhzLnJiZWdpbigpLCBzLnJlbmQoKSk7CiAgfQp9OwogIAoK
CgoKc3RhdGljIF9iaW5fb3V0X2R1bW15IGJpbl9saXR0bGVfb3V0OwpzdGF0aWMgX2Jpbl9vcHBv
c2l0ZV9vdXRfZHVtbXkgYmluX2JpZ19vdXQ7CgoKCgoKIyA4ICIuLi9oZWFkZXJzL2FycmF5Lmgi
IDIKCgp0eXBlZGVmIGJsaXR6OjpBcnJheTxmbG9hdCwgMT4gZmxvYXRBcnJheTsKdHlwZWRlZiBi
bGl0ejo6QXJyYXk8ZG91YmxlLCAxPiBkb3VibGVBcnJheTsKdHlwZWRlZiBibGl0ejo6QXJyYXk8
aW50LCAxPiBpbnRBcnJheTsKCnR5cGVkZWYgYmxpdHo6OkFycmF5PGZsb2F0LCAyPiBmbG9hdDJB
cnJheTsKdHlwZWRlZiBibGl0ejo6QXJyYXk8ZG91YmxlLCAyPiBkb3VibGUyQXJyYXk7CnR5cGVk
ZWYgYmxpdHo6OkFycmF5PGludCwgMj4gaW50MkFycmF5OwoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBp
bnQgTj4KYm9vbCB0aW55dmVjX2VxdWFsKGJsaXR6OjpUaW55VmVjdG9yPFQsTj4gdjEsIGJsaXR6
OjpUaW55VmVjdG9yPFQsTj4gdjIpIHsKICBmb3IoaW50IGk9MDsgaTxOOyArK2kpCiAgICBpZiAo
djFbaV0gIT0gdjJbaV0pIHJldHVybiBmYWxzZTsKICByZXR1cm4gdHJ1ZTsKfQoKIAp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OlJhbmdlIEFycmF5X1JhbmdlKGNvbnN0IGJsaXR6OjpB
cnJheTxULCAxPiYgYSkgewogIHJldHVybiBibGl0ejo6UmFuZ2UoYS5sYm91bmQoYmxpdHo6OmZp
cnN0RGltKSwgYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSk7Cn0KCiAKdGVtcGxhdGU8Y2xhc3Mg
VCwgaW50IE4+CmlubGluZSBibGl0ejo6UmFuZ2UgQXJyYXlfUmFuZ2UoY29uc3QgYmxpdHo6OkFy
cmF5PFQsIE4+JiBhLCBpbnQgaykgewogIHJldHVybiBibGl0ejo6UmFuZ2UoYS5sYm91bmQoayks
IGEudWJvdW5kKGspKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIGJsaXR6
OjpSYW5nZSBJbnRlcmlvclJhbmdlKGNvbnN0IGJsaXR6OjpBcnJheTxULCBOPiYgYSwgaW50IGss
IAoJCQkJaW50IGJvdW5kYXJ5U2l6ZSA9IDEpIHsKICByZXR1cm4gYmxpdHo6OlJhbmdlKGEubGJv
dW5kKGspK2JvdW5kYXJ5U2l6ZSwgYS51Ym91bmQoayktYm91bmRhcnlTaXplKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVD4KaW5saW5lIGJsaXR6OjpBcnJheTxULDE+IEludGVyaW9yKGNvbnN0IGJsaXR6
OjpBcnJheTxULDE+JiBhLCAKCQkJCSAgaW50IGJvdW5kYXJ5U2l6ZSA9IDEpIHsKICByZXR1cm4g
YShJbnRlcmlvclJhbmdlKGEsZmlyc3REaW0sYm91bmRhcnlTaXplKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFQ+CmlubGluZSBibGl0ejo6QXJyYXk8VCwyPiBJbnRlcmlvcihjb25zdCBibGl0ejo6QXJy
YXk8VCwyPiYgYSwgCgkJCQkgIGludCBib3VuZGFyeVNpemUgPSAxKSB7CiAgcmV0dXJuIGEoSW50
ZXJpb3JSYW5nZShhLDAsYm91bmRhcnlTaXplKSwKCSAgIEludGVyaW9yUmFuZ2UoYSwxLGJvdW5k
YXJ5U2l6ZSkpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OkFycmF5PFQsMz4g
SW50ZXJpb3IoY29uc3QgYmxpdHo6OkFycmF5PFQsMz4mIGEsIAoJCQkJICBpbnQgYm91bmRhcnlT
aXplID0gMSkgewogIHJldHVybiBhKEludGVyaW9yUmFuZ2UoYSwwLGJvdW5kYXJ5U2l6ZSksCgkg
ICBJbnRlcmlvclJhbmdlKGEsMSxib3VuZGFyeVNpemUpLAoJICAgSW50ZXJpb3JSYW5nZShhLDIs
Ym91bmRhcnlTaXplKQoJICAgKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIGJsaXR6OjpB
cnJheTxULDQ+IEludGVyaW9yKGNvbnN0IGJsaXR6OjpBcnJheTxULDQ+JiBhLCAKCQkJCSAgaW50
IGJvdW5kYXJ5U2l6ZSA9IDEpIHsKICByZXR1cm4gYShJbnRlcmlvclJhbmdlKGEsMCxib3VuZGFy
eVNpemUpLAoJICAgSW50ZXJpb3JSYW5nZShhLDEsYm91bmRhcnlTaXplKSwKCSAgIEludGVyaW9y
UmFuZ2UoYSwyLGJvdW5kYXJ5U2l6ZSksCgkgICBJbnRlcmlvclJhbmdlKGEsMyxib3VuZGFyeVNp
emUpCgkgICApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OkFycmF5PGJsaXR6
OjpfYnpfQXJyYXlFeHByPFQ+OjpUX251bXR5cGUsIAogICAgICAgICAgICAgICAgICAgIGJsaXR6
OjpfYnpfQXJyYXlFeHByPFQ+OjpyYW5rPgpJbnRlcmlvcihibGl0ejo6X2J6X0FycmF5RXhwcjxU
PiBleHByLCBpbnQgYm91bmRhcnlTaXplID0gMSkgewogIHR5cGVkZWYgYmxpdHo6Ol9iel9BcnJh
eUV4cHI8VD4gZXhwclQ7CiAgYmxpdHo6OkFycmF5PCB0eXBlbmFtZSBleHByVDo6VF9udW10eXBl
LCBleHByVDo6cmFuayA+IEEoIGV4cHIgKTsKICByZXR1cm4gSW50ZXJpb3IoQSwgYm91bmRhcnlT
aXplKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIGJsaXR6OjpUaW55VmVj
dG9yPCBibGl0ejo6UmFuZ2UsIE4gPiAKUmFuZ2VWZWN0b3IoY29uc3QgYmxpdHo6OkFycmF5PFQs
IE4+JiBhKSB7CiAgYmxpdHo6OlRpbnlWZWN0b3I8IGJsaXR6OjpSYW5nZSwgTiA+IHJ2OwogIGZv
cihpbnQgaz0wOyBrPE47IGsrKykKICAgIHJ2W2tdID0gQXJyYXlfUmFuZ2UoYSwgayk7CiAgcmV0
dXJuIHJ2Owp9CgogCnRlbXBsYXRlPGNsYXNzIFBfbnVtdHlwZSwgaW50IE5fcmFuaz4KaW5saW5l
CmJsaXR6OjpHZW5lcmFsQXJyYXlTdG9yYWdlPE5fcmFuaz4KQXJyYXlTaGFwZShibGl0ejo6QXJy
YXk8UF9udW10eXBlLCBOX3Jhbms+IGEpIHsKICBibGl0ejo6R2VuZXJhbEFycmF5U3RvcmFnZTxO
X3Jhbms+IHN0b3JhZ2U7CiAgc3RvcmFnZS5vcmRlcmluZygpID0gYS5vcmRlcmluZygpOwogIHN0
b3JhZ2UuYmFzZSgpID0gYS5iYXNlKCk7CiAgZm9yKGludCBpPTA7IGk8Tl9yYW5rOyBpKyspCiAg
ICBzdG9yYWdlLmFzY2VuZGluZ0ZsYWcoKShpKSA9IGEuaXNSYW5rU3RvcmVkQXNjZW5kaW5nKGkp
OwogIAogIHJldHVybiBzdG9yYWdlOwp9CgogCiAKIAogCiAKdGVtcGxhdGU8Y2xhc3MgVF9udW10
eXBlLCBpbnQgcmFuaz4KaW5saW5lCmJsaXR6OjpBcnJheTxUX251bXR5cGUsIHJhbms+IHJlaW5k
ZXgoY29uc3QgYmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgcmFuaz4mIGEsCgkJCSAgICAgICBjb25z
dCBibGl0ejo6VGlueVZlY3RvcjxpbnQsIHJhbms+JiBuZXdiYXNlKSB7CiAgcmV0dXJuIGNvbnN0
X2Nhc3Q8YmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgcmFuaz4gJj4oYSkucmVpbmRleChuZXdiYXNl
KTsKfQoKdGVtcGxhdGU8Y2xhc3MgVF9udW10eXBlPgppbmxpbmUKYmxpdHo6OkFycmF5PFRfbnVt
dHlwZSwgMT4gcmVpbmRleChjb25zdCBibGl0ejo6QXJyYXk8VF9udW10eXBlLCAxPiYgYSwgaW50
IG5iMSkgewogIHJldHVybiByZWluZGV4KGEsIGJsaXR6OjpzaGFwZShuYjEpKTsKfQoKdGVtcGxh
dGU8Y2xhc3MgVF9udW10eXBlPgppbmxpbmUKYmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgMj4gcmVp
bmRleChjb25zdCBibGl0ejo6QXJyYXk8VF9udW10eXBlLCAyPiYgYSwgaW50IG5iMSwgaW50IG5i
MikgewogIHJldHVybiByZWluZGV4KGEsIGJsaXR6OjpzaGFwZShuYjEsIG5iMikpOwp9CgogCnRl
bXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50IHJhbms+CmlubGluZQpibGl0ejo6QXJyYXk8VF9u
dW10eXBlLCByYW5rPiByZWluZGV4VHIoY29uc3QgYmxpdHo6OkFycmF5PFRfbnVtdHlwZSwgcmFu
az4mIGEsCgkJCQkgY29uc3QgYmxpdHo6OlRpbnlWZWN0b3I8aW50LCByYW5rPiYgZGVsdGEpIHsK
ICBibGl0ejo6VGlueVZlY3RvcjxpbnQsIHJhbms+IG5ld2Jhc2U7CiAgbmV3YmFzZSA9IGEuYmFz
ZSgpICsgZGVsdGE7CiAgcmV0dXJuIGNvbnN0X2Nhc3Q8YmxpdHo6OkFycmF5PFRfbnVtdHlwZSwg
cmFuaz4mPihhKS5yZWluZGV4KG5ld2Jhc2UpOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGU+
CmlubGluZQpibGl0ejo6QXJyYXk8VF9udW10eXBlLCAxPiByZWluZGV4VHIoY29uc3QgYmxpdHo6
OkFycmF5PFRfbnVtdHlwZSwgMT4mIGEsIGludCBkMSkgewogIHJldHVybiByZWluZGV4VHIoYSwg
YmxpdHo6OnNoYXBlKGQxKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZT4KaW5saW5lCmJs
aXR6OjpBcnJheTxUX251bXR5cGUsIDI+IHJlaW5kZXhUcihjb25zdCBibGl0ejo6QXJyYXk8VF9u
dW10eXBlLCAyPiYgYSwgaW50IGQxLCBpbnQgZDIpIHsKICByZXR1cm4gcmVpbmRleFRyKGEsIGJs
aXR6OjpzaGFwZShkMSwgZDIpKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUX251bXR5cGUsIGludCBO
X3Jhbms+CmlubGluZQpibGl0ejo6QXJyYXk8VF9udW10eXBlLCBOX3Jhbms+IApTdWJBcnJheShj
b25zdCBibGl0ejo6QXJyYXk8VF9udW10eXBlLCBOX3Jhbms+JiBhLCBibGl0ejo6UmFuZ2Ugcikg
ewogIHJldHVybiByZWluZGV4KGNvbnN0X2Nhc3Q8YmxpdHo6OkFycmF5PFRfbnVtdHlwZSxOX3Jh
bms+Jj4oYSkociksIHIuZmlyc3QoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFRfbnVtdHlwZSwgaW50
IE5fcmFuaz4KaW5saW5lCmJsaXR6OjpBcnJheTxUX251bXR5cGUsIE5fcmFuaz4gClN1YkFycmF5
KGNvbnN0IGJsaXR6OjpBcnJheTxUX251bXR5cGUsIE5fcmFuaz4mIGEsIAoJIGJsaXR6OjpSYW5n
ZSByMSwKCSBibGl0ejo6UmFuZ2UgcjIpIHsKICByZXR1cm4gcmVpbmRleChjb25zdF9jYXN0PGJs
aXR6OjpBcnJheTxUX251bXR5cGUsTl9yYW5rPiY+KGEpKHIxLHIyKSwgCgkJIHIxLmZpcnN0KCks
CgkJIHIyLmZpcnN0KCkpOwp9CgogCnRlbXBsYXRlPGNsYXNzIFQ+CnZvaWQgQXJyYXlfUmVzaXpl
KGJsaXR6OjpBcnJheTxULCAxPiYgYSwgYmxpdHo6OlJhbmdlIHIxKSB7CiAgYmxpdHo6OkFycmF5
PFQsMT4gdGVtcChyMSk7CiAgYS5yZWZlcmVuY2UoIHRlbXAgKTsKfQoKIAp0ZW1wbGF0ZTxjbGFz
cyBUPgp2b2lkIEFycmF5X1Jlc2l6ZShibGl0ejo6QXJyYXk8VCwgMT4mIGEsIGludCBuczEpIHsK
ICBibGl0ejo6QXJyYXk8VCwxPiB0ZW1wKG5zMSk7CiAgYS5yZWZlcmVuY2UoIHRlbXAgKTsKfQog
IAp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIEFycmF5X1Jlc2l6ZShibGl0ejo6QXJyYXk8VCwgMj4m
IGEsIGJsaXR6OjpSYW5nZSByMSwgYmxpdHo6OlJhbmdlIHIyKSB7CiAgYmxpdHo6OkFycmF5PFQs
Mj4gdGVtcChyMSxyMik7CiAgYS5yZWZlcmVuY2UoIHRlbXAgKTsKfQoKdGVtcGxhdGU8Y2xhc3Mg
VD4Kdm9pZCBBcnJheV9SZXNpemUoYmxpdHo6OkFycmF5PFQsIDI+JiBhLCBpbnQgbnMxLCBpbnQg
bnMyKSB7CiAgYmxpdHo6OkFycmF5PFQsMj4gdGVtcChuczEsbnMyKTsKICBhLnJlZmVyZW5jZSgg
dGVtcCApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIEFycmF5X1Jlc2l6ZShibGl0ejo6QXJy
YXk8VCwgMz4mIGEsIGJsaXR6OjpSYW5nZSByMSwgYmxpdHo6OlJhbmdlIHIyLCBibGl0ejo6UmFu
Z2UgcjMpIHsKICBibGl0ejo6QXJyYXk8VCwgMz4gdGVtcChyMSxyMixyMyk7CiAgYS5yZWZlcmVu
Y2UoIHRlbXAgKTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4Kdm9pZCBBcnJheV9SZXNpemUoYmxpdHo6
OkFycmF5PFQsIDM+JiBhLCBpbnQgbnMxLCBpbnQgbnMyLCBpbnQgbnMzKSB7CiAgYmxpdHo6OkFy
cmF5PFQsIDM+IHRlbXAobnMxLG5zMixuczMpOwogIGEucmVmZXJlbmNlKCB0ZW1wICk7Cn0KCnRl
bXBsYXRlPGNsYXNzIFQ+CnZvaWQgQXJyYXlfUmVzaXplKGJsaXR6OjpBcnJheTxULCA0PiYgYSwg
YmxpdHo6OlJhbmdlIHIxLCBibGl0ejo6UmFuZ2UgcjIsIGJsaXR6OjpSYW5nZSByMywgYmxpdHo6
OlJhbmdlIHI0KSB7CiAgYmxpdHo6OkFycmF5PFQsIDQ+IHRlbXAocjEscjIscjMscjQpOwogIGEu
cmVmZXJlbmNlKCB0ZW1wICk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CnZvaWQgQXJyYXlfUmVzaXpl
KGJsaXR6OjpBcnJheTxULCA0PiYgYSwgaW50IG5zMSwgaW50IG5zMiwgaW50IG5zMywgaW50IG5z
NCkgewogIGJsaXR6OjpBcnJheTxULCA0PiB0ZW1wKG5zMSxuczIsbnMzLG5zNCk7CiAgYS5yZWZl
cmVuY2UoIHRlbXAgKTsKfQoKIAp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgaW50IG15TWF4SW5k
ZXgoY29uc3QgYmxpdHo6OkFycmF5PFQsIDE+JiBhKSB7CiAgaW50IGluZGV4ID0gYS5sYm91bmQo
YmxpdHo6OmZpcnN0RGltKTsKICBmb3IoaW50IGk9aW5kZXgrMTsgaTw9YS51Ym91bmQoYmxpdHo6
OmZpcnN0RGltKTsgaSsrKQogICAgaWYgKGEoaSkgPiBhKGluZGV4KSkgCiAgICAgIGluZGV4ID0g
aTsKICByZXR1cm4gaW5kZXg7Cn0KCgoKIAogCiAKaW5saW5lIHN0ZDo6b3N0cmVhbSYgYXJyYXlf
c3RkX291dChzdGQ6Om9zdHJlYW0mIG8sIGNvbnN0IGJsaXR6OjpBcnJheTxkb3VibGUsMT4mIGEp
IHsKICBmb3IoaW50IGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTw9YS51Ym91bmQoYmxp
dHo6OmZpcnN0RGltKTsgaSsrKQogICAgbyA8PCBzdGQ6OnNldHcoMTMpIDw8IGEoaSkgPDwgJyAn
OwogIHJldHVybiBvOwp9CgogCiAKaW5saW5lIHN0ZDo6b3N0cmVhbSYgYXJyYXlfZnVsbF9vdXQo
c3RkOjpvc3RyZWFtJiBvLCBjb25zdCBibGl0ejo6QXJyYXk8ZG91YmxlLDE+JiBhKSB7CiAgbyA8
PCAiQXJyYXkoIiA8PCBhLmxib3VuZChibGl0ejo6Zmlyc3REaW0pIDw8ICcsJyA8PCBhLnVib3Vu
ZChibGl0ejo6Zmlyc3REaW0pIAogICAgPDwgIikgPSB7XG4iOwogIGZvcihpbnQgaT1hLmxib3Vu
ZChibGl0ejo6Zmlyc3REaW0pOyBpPD1hLnVib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpKyspCiAg
ICBvIDw8IHN0ZDo6c2V0dygxMykgPDwgYShpKSA8PCAnICc7CiAgbyA8PCAnfSc7CiAgcmV0dXJu
IG87Cn0KICAKIAogCgoKCgoKCgoKCgoKCgoKCgogCiAKIAogCmlubGluZSBzdGQ6Om9zdHJlYW0m
IGFycmF5X21tYV9vdXQoc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBibGl0ejo6QXJyYXk8ZG91Ymxl
LDE+JiBhKSB7CiAgbyA8PCAieyAiOwogIGludCBpOwogIGZvcihpPWEubGJvdW5kKGJsaXR6Ojpm
aXJzdERpbSk7IGk8YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTsgaSsrKQogICAgbyA8PCBtbWFf
Zm9ybSA8PCBhKGkpIDw8ICIsICI7CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGlt
KSkKICAgIG8gPDwgbW1hX2Zvcm0gPDwgYShpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87Cn0K
CiAKIAp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4gYmxpdHo6OkFycmF5PFQsIE4tMT4gX2FycmF5
X3NsaWNlKGJsaXR6OjpBcnJheTxULCBOPiBhLCBpbnQgaSk7CnRlbXBsYXRlPGNsYXNzIFQ+IGJs
aXR6OjpBcnJheTxULCAxPiBfYXJyYXlfc2xpY2UoYmxpdHo6OkFycmF5PFQsIDI+IGEsIGludCBp
KSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNsYXNz
IFQ+IGJsaXR6OjpBcnJheTxULCAyPiBfYXJyYXlfc2xpY2UoYmxpdHo6OkFycmF5PFQsIDM+IGEs
IGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdl
OjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCAzPiBfYXJyYXlf
c2xpY2UoYmxpdHo6OkFycmF5PFQsIDQ+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6
OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCA0PiBfYXJyYXlfc2xpY2UoYmxp
dHo6OkFycmF5PFQsIDU+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjph
bGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJh
bmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCA1PiBfYXJy
YXlfc2xpY2UoYmxpdHo6OkFycmF5PFQsIDY+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxp
dHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwo
KSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRl
PGNsYXNzIFQ+IGJsaXR6OjpBcnJheTxULCA2PiBfYXJyYXlfc2xpY2UoYmxpdHo6OkFycmF5PFQs
IDc+IGEsIGludCBpKSB7CiAgcmV0dXJuIGEoaSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6
OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSwg
YmxpdHo6OlJhbmdlOjphbGwoKSwgYmxpdHo6OlJhbmdlOjphbGwoKSk7Cn0KCnRlbXBsYXRlPGNs
YXNzIFQsIGludCBOPgpibGl0ejo6QXJyYXk8VCwgTi0xPiBzbGljZShibGl0ejo6QXJyYXk8VCxO
PiBBLCBpbnQgcmFuaywgaW50IGxvYykgewogIGJsaXR6OjpUaW55VmVjdG9yPGludCwgTj4gbmV3
UmFua3M7CiAgbmV3UmFua3NbMF0gPSByYW5rOwogIGZvcihpbnQgaT0xOyBpPE47aSsrKQogICAg
bmV3UmFua3NbaV0gPSBpIDw9IHJhbmsgPyBpLTEgOiBpOwogIHJldHVybiBfYXJyYXlfc2xpY2Uo
QS50cmFuc3Bvc2UobmV3UmFua3MpLCBsb2MpOwp9CgogCiAKIAogCnRlbXBsYXRlPGludCBOPgpp
bmxpbmUgc3RkOjpvc3RyZWFtJiBhcnJheV9tbWFfb3V0X04oc3RkOjpvc3RyZWFtJiBvLCBjb25z
dCBibGl0ejo6QXJyYXk8ZG91YmxlLCBOPiYgYikgewogIGJsaXR6OjpBcnJheTxkb3VibGUsIE4+
IGEoYik7CiAgbyA8PCAie1xuIjsKICBpbnQgaTsKICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZp
cnN0RGltKTsgaTxhLnVib3VuZChibGl0ejo6Zmlyc3REaW0pO2krKykgewogICAgbyA8PCAmYXJy
YXlfbW1hX291dF9OPE4tMT4gPDwgX2FycmF5X3NsaWNlKGEsaSk7IAogICAgbyA8PCAiLFxuIjsK
ICB9CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSkKICAgIG8gPDwgJmFycmF5
X21tYV9vdXRfTjxOLTE+IDw8IF9hcnJheV9zbGljZShhLGkpOwogIG8gPDwgIiB9IjsKICByZXR1
cm4gbzsKfQoKdGVtcGxhdGU8PgppbmxpbmUgc3RkOjpvc3RyZWFtJiBhcnJheV9tbWFfb3V0X048
MT4oc3RkOjpvc3RyZWFtJiBvLCBjb25zdCBibGl0ejo6QXJyYXk8ZG91YmxlLCAxPiYgYSkgewog
IHJldHVybiBvIDw8IGFycmF5X21tYV9vdXQgPDwgYTsKfQoKY2xhc3MgX2FycmF5X3N0ZF9vdXRf
ZHVtbXkgeyB9OwoKaW5saW5lIF9hcnJheV9zdGRfb3V0X2R1bW15IF9tYWtlX2FycmF5X3N0ZF9v
dXRfZHVtbXkoKSB7CiAgcmV0dXJuIF9hcnJheV9zdGRfb3V0X2R1bW15KCk7Cn0KCmNsYXNzIF9h
cnJheV9zdGRfb3V0X29zdHJlYW0gewpwdWJsaWM6CiAgc3RkOjpvc3RyZWFtKiBvczsKCiAgX2Fy
cmF5X3N0ZF9vdXRfb3N0cmVhbShzdGQ6Om9zdHJlYW0mIF9vcykgOiBvcygmX29zKSB7IH0KfTsK
CmlubGluZSBfYXJyYXlfc3RkX291dF9vc3RyZWFtIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBv
LCBfYXJyYXlfc3RkX291dF9kdW1teSkgewogIHJldHVybiBfYXJyYXlfc3RkX291dF9vc3RyZWFt
KG8pOwp9CgojZGVmaW5lIGFycmF5X3N0ZF9vdXQyICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1t
eSgpICkKCnRlbXBsYXRlPGNsYXNzIFQsIGludCBOPgppbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVy
YXRvcjw8IChjb25zdCBfYXJyYXlfc3RkX291dF9vc3RyZWFtJiBhb28sIAoJCQkgICBibGl0ejo6
QXJyYXk8IFQsIE4gPiBhKSB7CiAgc3RkOjpvc3RyZWFtJiBvID0gKmFvby5vczsKICBvIDw8ICJ7
XG4iOwogIGludCBpOwogIGZvciAoaT1hLmxib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpPGEudWJv
dW5kKGJsaXR6OjpmaXJzdERpbSk7aSsrKSB7CiAgICBvIDw8ICggX21ha2VfYXJyYXlfc3RkX291
dF9kdW1teSgpICkgIDw8IF9hcnJheV9zbGljZShhLGkpOyAKICAgIG8gPDwgIixcbiI7CiAgfQog
IGlmIChpID09IGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkpCiAgICBvIDw8ICggX21ha2VfYXJy
YXlfc3RkX291dF9kdW1teSgpICkgIDw8IF9hcnJheV9zbGljZShhLGkpOwogIG8gPDwgIiB9IjsK
ICByZXR1cm4gbzsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3Bl
cmF0b3I8PChjb25zdCBfYXJyYXlfc3RkX291dF9vc3RyZWFtJiBhb28sIAoJCQkgICBibGl0ejo6
QXJyYXk8IFQsIDEgPiBhKSB7CiAgc3RkOjpvc3RyZWFtJiBvID0gKmFvby5vczsKICBvIDw8ICJ7
IjsKICBpbnQgaTsKICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTxhLnVib3Vu
ZChibGl0ejo6Zmlyc3REaW0pOyBpKyspIHsKICAgIG8gPDwgc3RkOjpzZXR3KDEzKSA8PCBhKGkp
IDw8ICIsICI7CiAgfQogIGlmIChpID09IGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkpCiAgICBv
IDw8IHN0ZDo6c2V0dygxMykgPDwgYShpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87Cn0KCnRl
bXBsYXRlPGNsYXNzIFQ+CmlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgX2Fy
cmF5X3N0ZF9vdXRfb3N0cmVhbSYgYW9vLCAKCQkJICAgYmxpdHo6Ol9iel9BcnJheUV4cHI8IFQg
PiBleHByKSB7CiAgdHlwZWRlZiBibGl0ejo6X2J6X0FycmF5RXhwcjxUPiBleHByVDsKICBibGl0
ejo6QXJyYXk8IHR5cGVuYW1lIGV4cHJUOjpUX251bXR5cGUsIGV4cHJUOjpyYW5rID4gQSggZXhw
ciApOwogIHJldHVybiBhb28gPDwgQTsKfQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6
b3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBfYXJyYXlfc3RkX291dF9vc3RyZWFtJiBhb28sIAoJ
CQkJY29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBldCkgewogIGJsaXR6OjpBcnJheTwgdHlwZW5h
bWUgVDo6VF9udW10eXBlLCBUOjpyYW5rID4gCiAgICBBKCBzdGF0aWNfY2FzdDxjb25zdCBUJj4o
ZXQpICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9CgpjbGFzcyBfYXJyYXlfZnVsbF9vdXRfZHVtbXkg
eyB9OwoKaW5saW5lIF9hcnJheV9mdWxsX291dF9kdW1teSBfbWFrZV9hcnJheV9mdWxsX291dF9k
dW1teSgpIHsKICByZXR1cm4gX2FycmF5X2Z1bGxfb3V0X2R1bW15KCk7Cn0KCmNsYXNzIF9hcnJh
eV9mdWxsX291dF9vc3RyZWFtIHsKcHVibGljOgogIHN0ZDo6b3N0cmVhbSogb3M7CgogIF9hcnJh
eV9mdWxsX291dF9vc3RyZWFtKHN0ZDo6b3N0cmVhbSYgX29zKSA6IG9zKCZfb3MpIHsgfQp9OwoK
aW5saW5lIF9hcnJheV9mdWxsX291dF9vc3RyZWFtIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBv
LCBfYXJyYXlfZnVsbF9vdXRfZHVtbXkpIHsKICByZXR1cm4gX2FycmF5X2Z1bGxfb3V0X29zdHJl
YW0obyk7Cn0KCiNkZWZpbmUgYXJyYXlfZnVsbF9vdXQyICggX21ha2VfYXJyYXlfZnVsbF9vdXRf
ZHVtbXkoKSApCgp0ZW1wbGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIHN0ZDo6b3N0cmVhbSYg
b3BlcmF0b3I8PCAoY29uc3QgX2FycmF5X2Z1bGxfb3V0X29zdHJlYW0mIGFvbywgCgkJCSAgIGJs
aXR6OjpBcnJheTwgVCwgTiA+IGEpIHsKICBzdGQ6Om9zdHJlYW0mIG8gPSAqYW9vLm9zOwogIG8g
PDwgIlsgIjsKICBmb3IoaW50IGk9MDsgaTxOOyBpKyspIHsKICAgIG8gPDwgQXJyYXlfUmFuZ2Uo
YSxpKTsKICAgIGlmIChpICE9IE4tMSkKICAgICAgbyA8PCAnLCc7CiAgICBvIDw8ICcgJzsKICB9
CiAgbyA8PCAiXSIgPDwgZW5kbDsKCiAgcmV0dXJuIG8gPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0
X2R1bW15KCkgKSAgPDwgYSA8PCBlbmRsOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgc3Rk
Ojpvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9mdWxsX291dF9vc3RyZWFtJiBhb28s
IAoJCQkgICBibGl0ejo6X2J6X0FycmF5RXhwcjwgVCA+IGV4cHIpIHsKICB0eXBlZGVmIGJsaXR6
OjpfYnpfQXJyYXlFeHByPFQ+IGV4cHJUOwogIGJsaXR6OjpBcnJheTwgZXhwclQ6OlRfbnVtdHlw
ZSwgZXhwclQ6OnJhbmsgPiBBKCBleHByICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9Cgp0ZW1wbGF0
ZTxjbGFzcyBUPgppbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9m
dWxsX291dF9vc3RyZWFtJiBhb28sIAoJCQkJY29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBldCkg
ewogIGJsaXR6OjpBcnJheTwgdHlwZW5hbWUgVDo6VF9udW10eXBlLCBUOjpyYW5rID4gCiAgICBB
KCBzdGF0aWNfY2FzdDxjb25zdCBUJj4oZXQpICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9CgpjbGFz
cyBfYXJyYXlfaGV4X291dF9kdW1teSB7IH07CgppbmxpbmUgX2FycmF5X2hleF9vdXRfZHVtbXkg
X21ha2VfYXJyYXlfaGV4X291dF9kdW1teSgpIHsKICByZXR1cm4gX2FycmF5X2hleF9vdXRfZHVt
bXkoKTsKfQoKY2xhc3MgX2FycmF5X2hleF9vdXRfb3N0cmVhbSB7CnB1YmxpYzoKICBzdGQ6Om9z
dHJlYW0qIG9zOwoKICBfYXJyYXlfaGV4X291dF9vc3RyZWFtKHN0ZDo6b3N0cmVhbSYgX29zKSA6
IG9zKCZfb3MpIHsgfQp9OwoKaW5saW5lIF9hcnJheV9oZXhfb3V0X29zdHJlYW0gb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIG8sIF9hcnJheV9oZXhfb3V0X2R1bW15KSB7CiAgcmV0dXJuIF9hcnJh
eV9oZXhfb3V0X29zdHJlYW0obyk7Cn0KCiNkZWZpbmUgYXJyYXlfaGV4X291dDIgKCBfbWFrZV9h
cnJheV9oZXhfb3V0X2R1bW15KCkgKQoKdGVtcGxhdGU8Y2xhc3MgVCwgaW50IE4+CmlubGluZSBz
dGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwgKGNvbnN0IF9hcnJheV9oZXhfb3V0X29zdHJlYW0mIGFv
bywgCgkJCSAgIGJsaXR6OjpBcnJheTwgVCwgTiA+IGEpIHsKICBzdGQ6Om9zdHJlYW0mIG8gPSAq
YW9vLm9zOwogIG8gPDwgIntcbiI7CiAgaW50IGk7CiAgZm9yIChpPWEubGJvdW5kKGJsaXR6Ojpm
aXJzdERpbSk7IGk8YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTtpKyspIHsKICAgIG8gPDwgKCBf
bWFrZV9hcnJheV9oZXhfb3V0X2R1bW15KCkgKSAgPDwgX2FycmF5X3NsaWNlKGEsaSk7IAogICAg
byA8PCAiLFxuIjsKICB9CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSkKICAg
IG8gPDwgKCBfbWFrZV9hcnJheV9oZXhfb3V0X2R1bW15KCkgKSAgPDwgX2FycmF5X3NsaWNlKGEs
aSk7CiAgbyA8PCAiIH0iOwogIHJldHVybiBvOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUg
c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9oZXhfb3V0X29zdHJlYW0mIGFv
bywgCgkJCSAgIGJsaXR6OjpBcnJheTwgVCwgMSA+IGEpIHsKICBzdGQ6Om9zdHJlYW0mIG8gPSAq
YW9vLm9zOwogIG8gPDwgInsiOwogIGludCBpOwogIGZvciAoaT1hLmxib3VuZChibGl0ejo6Zmly
c3REaW0pOyBpPGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSk7IGkrKykgewogICAgbyA8PCBoZXhf
b3V0IDw8IGEoaSkgPDwgIiwgIjsKICB9CiAgaWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0
RGltKSkKICAgIG8gPDwgaGV4X291dCA8PCBhKGkpOwogIG8gPDwgIiB9IjsKICByZXR1cm4gbzsK
fQoKdGVtcGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChjb25z
dCBfYXJyYXlfaGV4X291dF9vc3RyZWFtJiBhb28sIAoJCQkgICBibGl0ejo6X2J6X0FycmF5RXhw
cjwgVCA+IGV4cHIpIHsKICB0eXBlZGVmIGJsaXR6OjpfYnpfQXJyYXlFeHByPFQ+IGV4cHJUOwog
IGJsaXR6OjpBcnJheTwgZXhwclQ6OlRfbnVtdHlwZSwgZXhwclQ6OnJhbmsgPiBBKCBleHByICk7
CiAgcmV0dXJuIGFvbyA8PCBBOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgc3RkOjpvc3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IF9hcnJheV9oZXhfb3V0X29zdHJlYW0mIGFvbywgCgkJCQlj
b25zdCBibGl0ejo6RVRCYXNlPCBUID4mIGV0KSB7CiAgYmxpdHo6OkFycmF5PCB0eXBlbmFtZSBU
OjpUX251bXR5cGUsIFQ6OnJhbmsgPiAKICAgIEEoIHN0YXRpY19jYXN0PGNvbnN0IFQmPihldCkg
KTsKICByZXR1cm4gYW9vIDw8IEE7Cn0KCmNsYXNzIF9hcnJheV9tbWFfb3V0X2R1bW15IHsgfTsK
CmlubGluZSBfYXJyYXlfbW1hX291dF9kdW1teSBfbWFrZV9hcnJheV9tbWFfb3V0X2R1bW15KCkg
ewogIHJldHVybiBfYXJyYXlfbW1hX291dF9kdW1teSgpOwp9CgpjbGFzcyBfYXJyYXlfbW1hX291
dF9vc3RyZWFtIHsKcHVibGljOgogIHN0ZDo6b3N0cmVhbSogb3M7CgogIF9hcnJheV9tbWFfb3V0
X29zdHJlYW0oc3RkOjpvc3RyZWFtJiBfb3MpIDogb3MoJl9vcykgeyB9Cn07CgppbmxpbmUgX2Fy
cmF5X21tYV9vdXRfb3N0cmVhbSBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgbywgX2FycmF5X21t
YV9vdXRfZHVtbXkpIHsKICByZXR1cm4gX2FycmF5X21tYV9vdXRfb3N0cmVhbShvKTsKfQoKI2Rl
ZmluZSBhcnJheV9tbWFfb3V0MiAoIF9tYWtlX2FycmF5X21tYV9vdXRfZHVtbXkoKSApCgp0ZW1w
bGF0ZTxjbGFzcyBULCBpbnQgTj4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PCAoY29u
c3QgX2FycmF5X21tYV9vdXRfb3N0cmVhbSYgYW9vLCAKCQkJICAgYmxpdHo6OkFycmF5PCBULCBO
ID4gYSkgewogIHN0ZDo6b3N0cmVhbSYgbyA9ICphb28ub3M7CiAgbyA8PCAie1xuIjsKICBpbnQg
aTsKICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTxhLnVib3VuZChibGl0ejo6
Zmlyc3REaW0pO2krKykgewogICAgbyA8PCAoIF9tYWtlX2FycmF5X21tYV9vdXRfZHVtbXkoKSAp
ICA8PCBfYXJyYXlfc2xpY2UoYSxpKTsgCiAgICBvIDw8ICIsXG4iOwogIH0KICBpZiAoaSA9PSBh
LnVib3VuZChibGl0ejo6Zmlyc3REaW0pKQogICAgbyA8PCAoIF9tYWtlX2FycmF5X21tYV9vdXRf
ZHVtbXkoKSApICA8PCBfYXJyYXlfc2xpY2UoYSxpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87
Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoY29u
c3QgX2FycmF5X21tYV9vdXRfb3N0cmVhbSYgYW9vLCAKCQkJICAgYmxpdHo6OkFycmF5PCBULCAx
ID4gYSkgewogIHN0ZDo6b3N0cmVhbSYgbyA9ICphb28ub3M7CiAgbyA8PCAieyI7CiAgaW50IGk7
CiAgZm9yIChpPWEubGJvdW5kKGJsaXR6OjpmaXJzdERpbSk7IGk8YS51Ym91bmQoYmxpdHo6OmZp
cnN0RGltKTsgaSsrKSB7CiAgICBvIDw8IG1tYV9mb3JtIDw8IGEoaSkgPDwgIiwgIjsKICB9CiAg
aWYgKGkgPT0gYS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKSkKICAgIG8gPDwgbW1hX2Zvcm0gPDwg
YShpKTsKICBvIDw8ICIgfSI7CiAgcmV0dXJuIG87Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmlubGlu
ZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgX2FycmF5X21tYV9vdXRfb3N0cmVhbSYg
YW9vLCAKCQkJICAgYmxpdHo6Ol9iel9BcnJheUV4cHI8IFQgPiBleHByKSB7CiAgdHlwZWRlZiBi
bGl0ejo6X2J6X0FycmF5RXhwcjxUPiBleHByVDsKICBibGl0ejo6QXJyYXk8IGV4cHJUOjpUX251
bXR5cGUsIGV4cHJUOjpyYW5rID4gQSggZXhwciApOwogIHJldHVybiBhb28gPDwgQTsKfQoKdGVt
cGxhdGU8Y2xhc3MgVD4KaW5saW5lIHN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBfYXJy
YXlfbW1hX291dF9vc3RyZWFtJiBhb28sIAoJCQkJY29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBl
dCkgewogIGJsaXR6OjpBcnJheTwgdHlwZW5hbWUgVDo6VF9udW10eXBlLCBUOjpyYW5rID4gCiAg
ICBBKCBzdGF0aWNfY2FzdDxjb25zdCBUJj4oZXQpICk7CiAgcmV0dXJuIGFvbyA8PCBBOwp9Cgp0
ZW1wbGF0ZTxjbGFzcyBmb3JtLCBjbGFzcyBULCBpbnQgTj4KY2xhc3MgX2Zvcm1hdF9vdXRfY2Fs
bGVyPGZvcm0sIGJsaXR6OjpBcnJheTxULE4+ID4gewpwdWJsaWM6CiAgc3RhdGljIHN0ZDo6b3N0
cmVhbSYgYXBwbHkoY29uc3QgX2Zvcm1hdF9vdXRfb3N0cmVhbTxmb3JtPiYgYW9vLCAKCQkJICAg
ICBibGl0ejo6QXJyYXk8VCwgTj4gYSkgewogICAgYW9vLm9zIDw8ICJ7XG4iOwogICAgaW50IGk7
CiAgICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGltKTsgaTxhLnVib3VuZChibGl0ejo6
Zmlyc3REaW0pO2krKykgewogICAgICBhb28gPDwgX2FycmF5X3NsaWNlKGEsaSk7IAogICAgICBh
b28ub3MgPDwgIixcbiI7CiAgICB9CiAgICBpZiAoaSA9PSBhLnVib3VuZChibGl0ejo6Zmlyc3RE
aW0pKQogICAgICBhb28gPDwgX2FycmF5X3NsaWNlKGEsaSk7CiAgICBhb28ub3MgPDwgIiB9IjsK
ICAgIHJldHVybiBhb28ub3M7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgZm9ybSwgY2xhc3MgVD4K
Y2xhc3MgX2Zvcm1hdF9vdXRfY2FsbGVyPGZvcm0sIGJsaXR6OjpBcnJheTxULDE+ID4gewpwdWJs
aWM6CiAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgYXBwbHkoY29uc3QgX2Zvcm1hdF9vdXRfb3N0cmVh
bTxmb3JtPiYgYW9vLCAKCQkJICAgICBibGl0ejo6QXJyYXk8IFQsIDEgPiBhKSB7CiAgICBhb28u
b3MgPDwgInsiOwogICAgaW50IGk7CiAgICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZpcnN0RGlt
KTsgaTxhLnVib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpKyspIHsKICAgICAgYW9vIDw8IGEoaSkg
PDwgIiwgIjsKICAgIH0KICAgIGlmIChpID09IGEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSkpCiAg
ICAgIGFvbyA8PCBhKGkpOwogICAgYW9vLm9zIDw8ICIgfSI7CiAgICByZXR1cm4gYW9vLm9zOwog
IH0KfTsKCnRlbXBsYXRlPGNsYXNzIGZvcm0sIGNsYXNzIFQ+CmNsYXNzIF9mb3JtYXRfb3V0X2Nh
bGxlcjxmb3JtLCBibGl0ejo6X2J6X0FycmF5RXhwcjxUPiA+IHsKcHVibGljOgogIHN0YXRpYyBz
dGQ6Om9zdHJlYW0mIGFwcGx5KGNvbnN0IF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4mIGFvbywg
CgkJCSAgICAgYmxpdHo6Ol9iel9BcnJheUV4cHI8IFQgPiBleHByKSB7CiAgICB0eXBlZGVmIGJs
aXR6OjpfYnpfQXJyYXlFeHByPFQ+IGV4cHJUOwogICAgYmxpdHo6OkFycmF5PCBleHByVDo6VF9u
dW10eXBlLCBleHByVDo6cmFuayA+IEEoIGV4cHIgKTsKICAgIHJldHVybiBhb28gPDwgQTsKICB9
Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBmb3JtLCBjbGFzcyBUPgpjbGFzcyBfZm9ybWF0X291dF9jYWxs
ZXI8Zm9ybSwgYmxpdHo6OkVUQmFzZTxUPiA+IHsKcHVibGljOgogIHN0YXRpYyBzdGQ6Om9zdHJl
YW0mIGFwcGx5KGNvbnN0IF9mb3JtYXRfb3V0X29zdHJlYW08Zm9ybT4mIGFvbywgCgkJCSAgICAg
Y29uc3QgYmxpdHo6OkVUQmFzZTwgVCA+JiBldCkgewogICAgYmxpdHo6OkFycmF5PCB0eXBlbmFt
ZSBUOjpUX251bXR5cGUsIFQ6OnJhbmsgPiAKICAgICAgQSggc3RhdGljX2Nhc3Q8Y29uc3QgVCY+
KGV0KSApOwogICAgcmV0dXJuIGFvbyA8PCBBOwogIH0KfTsKCnRlbXBsYXRlPGNsYXNzIFQsIGlu
dCBOPgpjbGFzcyBfZm9ybWF0X291dF9jYWxsZXI8X2Jpbl9vdXRfZHVtbXksIGJsaXR6OjpBcnJh
eTxULE4+ID4gewpwdWJsaWM6CiAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgYXBwbHkoY29uc3QgX2Zv
cm1hdF9vdXRfb3N0cmVhbTxfYmluX291dF9kdW1teT4mIGFvbywgCgkJCSAgICAgYmxpdHo6OkFy
cmF5PFQsIE4+IGEpIHsKICAgIGludCBpOwogICAgZm9yIChpPWEubGJvdW5kKGJsaXR6OjpmaXJz
dERpbSk7IGk8PWEudWJvdW5kKGJsaXR6OjpmaXJzdERpbSk7aSsrKQogICAgICBhb28gPDwgX2Fy
cmF5X3NsaWNlKGEsaSk7IAogICAgcmV0dXJuIGFvby5vczsKICB9Cn07Cgp0ZW1wbGF0ZTxjbGFz
cyBUPgpjbGFzcyBfZm9ybWF0X291dF9jYWxsZXI8X2Jpbl9vdXRfZHVtbXksIGJsaXR6OjpBcnJh
eTxULDE+ID4gewpwdWJsaWM6CiAgc3RhdGljIHN0ZDo6b3N0cmVhbSYgYXBwbHkoY29uc3QgX2Zv
cm1hdF9vdXRfb3N0cmVhbTxfYmluX291dF9kdW1teT4mIGFvbywgCgkJCSAgICAgYmxpdHo6OkFy
cmF5PCBULCAxID4gYSkgewogICAgaW50IGk7CiAgICBmb3IgKGk9YS5sYm91bmQoYmxpdHo6OmZp
cnN0RGltKTsgaTw9YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTsgaSsrKQogICAgICBhb28gPDwg
YShpKTsKICAgIHJldHVybiBhb28ub3M7CiAgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgVCwgaW50IE4+
CmNsYXNzIF9mb3JtYXRfb3V0X2NhbGxlcjxfYmluX29wcG9zaXRlX291dF9kdW1teSwgYmxpdHo6
OkFycmF5PFQsTj4gPiB7CnB1YmxpYzoKICBzdGF0aWMgc3RkOjpvc3RyZWFtJiBhcHBseShjb25z
dCBfZm9ybWF0X291dF9vc3RyZWFtPF9iaW5fb3Bwb3NpdGVfb3V0X2R1bW15PiYgYW9vLCAKCQkJ
ICAgICBibGl0ejo6QXJyYXk8VCwgTj4gYSkgewogICAgaW50IGk7CiAgICBmb3IgKGk9YS5sYm91
bmQoYmxpdHo6OmZpcnN0RGltKTsgaTw9YS51Ym91bmQoYmxpdHo6OmZpcnN0RGltKTtpKyspCiAg
ICAgIGFvbyA8PCBfYXJyYXlfc2xpY2UoYSxpKTsgCiAgICByZXR1cm4gYW9vLm9zOwogIH0KfTsK
CnRlbXBsYXRlPGNsYXNzIFQ+CmNsYXNzIF9mb3JtYXRfb3V0X2NhbGxlcjxfYmluX29wcG9zaXRl
X291dF9kdW1teSwgYmxpdHo6OkFycmF5PFQsMT4gPiB7CnB1YmxpYzoKICBzdGF0aWMgc3RkOjpv
c3RyZWFtJiBhcHBseShjb25zdCBfZm9ybWF0X291dF9vc3RyZWFtPF9iaW5fb3Bwb3NpdGVfb3V0
X2R1bW15PiYgYW9vLCAKCQkJICAgICBibGl0ejo6QXJyYXk8IFQsIDEgPiBhKSB7CiAgICBpbnQg
aTsKICAgIGZvciAoaT1hLmxib3VuZChibGl0ejo6Zmlyc3REaW0pOyBpPD1hLnVib3VuZChibGl0
ejo6Zmlyc3REaW0pOyBpKyspCiAgICAgIGFvbyA8PCBhKGkpOwogICAgcmV0dXJuIGFvby5vczsK
ICB9Cn07CgogCiAKIAogCnRlbXBsYXRlPGNsYXNzIFQ+CmJsaXR6OjpBcnJheTxULDE+IEFycmF5
RGlhZ29uYWwoYmxpdHo6OkFycmF5PFQsMj4gYSkgewogIGJsaXR6OjpHZW5lcmFsQXJyYXlTdG9y
YWdlPDE+IHN0b3JhZ2U7CiAgc3RvcmFnZS5iYXNlKCkgPSBhLmxib3VuZChibGl0ejo6Zmlyc3RE
aW0pOwogIHJldHVybiBibGl0ejo6QXJyYXk8VCwgMT4gKGEuZGF0YSgpLCBibGl0ejo6c2hhcGUo
YS5leHRlbnQoYmxpdHo6OmZpcnN0RGltKSksIAoJCSAgICAgIGJsaXR6Ojpkb3QoYS5zdHJpZGUo
KSwgYmxpdHo6OnNoYXBlKDEsMSkpLCBzdG9yYWdlICk7Cn0KCnRlbXBsYXRlPGNsYXNzIFQ+CmJs
aXR6OjpBcnJheTxULDE+IEFycmF5RGlhZ29uYWwoYmxpdHo6OkFycmF5PFQsMj4gYSwgaW50IGRp
YWdubykgewogIFQqIGZpcnN0RWxlbSA9IGEuZGF0YSgpICsgKGRpYWdubyA+PSAwID8gYmxpdHo6
OmRvdChhLnN0cmlkZSgpLCBibGl0ejo6c2hhcGUoMCwgZGlhZ25vKSkgOgoJCQkgICAgIGJsaXR6
Ojpkb3QoYS5zdHJpZGUoKSwgYmxpdHo6OnNoYXBlKC1kaWFnbm8sIDApKSk7CgogIGJsaXR6OjpH
ZW5lcmFsQXJyYXlTdG9yYWdlPDE+IHN0b3JhZ2U7CiAgc3RvcmFnZS5iYXNlKCkgPSBhLmxib3Vu
ZChibGl0ejo6Zmlyc3REaW0pICsgCiAgICAoZGlhZ25vID49IDAgPyAwIDogLWRpYWdubyk7Cgog
IHJldHVybiBibGl0ejo6QXJyYXk8VCwgMT4gKGZpcnN0RWxlbSwgYmxpdHo6OnNoYXBlKGEuZXh0
ZW50KGJsaXR6OjpmaXJzdERpbSkgLSBhYnMoZGlhZ25vKSksIAoJCSAgICAgIGJsaXR6Ojpkb3Qo
YS5zdHJpZGUoKSwgYmxpdHo6OnNoYXBlKDEsMSkpLCBzdG9yYWdlICk7Cn0KCnRlbXBsYXRlPGlu
dCByYW5rPgppbnQgc2l6ZShjb25zdCBibGl0ejo6UmVjdERvbWFpbjxyYW5rPiBkKSB7CiAgcmV0
dXJuIHByb2R1Y3QoIGJsaXR6OjpUaW55VmVjdG9yPGludCwgcmFuaz4oZC51Ym91bmQoKSAtIGQu
bGJvdW5kKCkgKyAxKSApOwp9Cgp0ZW1wbGF0ZTxjbGFzcyBUPgppbmxpbmUgYmxpdHo6OkFycmF5
PHR5cGVuYW1lIGJsaXR6Ojphc0V4cHI8VD46OlRfZXhwcjo6VF9udW10eXBlLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBibGl0ejo6YXNFeHByPFQ+OjpUX2V4cHI6OnJhbms+CmV2YWx1
YXRlKGNvbnN0IGJsaXR6OjpFVEJhc2U8IFQgPiYgZXhwcikgewogIHJldHVybiBibGl0ejo6QXJy
YXk8dHlwZW5hbWUgYmxpdHo6OmFzRXhwcjxUPjo6VF9leHByOjpUX251bXR5cGUsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmxpdHo6OmFzRXhwcjxUPjo6VF9leHByOjpyYW5rPgog
ICAgKHN0YXRpY19jYXN0PGNvbnN0IFQmPihleHByKSk7Cn0JCQkJICAgICAgCgoKIyAyICJ0ZXN0
Q3ViaWMuY2MiIDIKCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgYmxpdHo7
Cgpkb3VibGUgZjEoZG91YmxlIHgpIHsKICByZXR1cm4geCp4KnggKyAzKngqeCAtIDYqeCAtIDE3
Owp9Cgpkb3VibGUgZjFwKGRvdWJsZSB4KSB7CiAgcmV0dXJuIDMqeCp4ICsgNip4IC0gNjsKfQoK
dGVtcGxhdGU8Y2xhc3MgUF9udW10eXBlPiBzdHJ1Y3QgIGYxX2ltcGwgeyB0eXBlZGVmIFBfbnVt
dHlwZSBUX251bXR5cGU7IHRlbXBsYXRlPGNsYXNzIFQ+IHN0YXRpYyBpbmxpbmUgVCBhcHBseShU
IHgpIHsgcmV0dXJuICBmMSAoeCk7IH0gdGVtcGxhdGU8Y2xhc3MgVDE+IHN0YXRpYyB2b2lkIHBy
ZXR0eVByaW50KHN0cmluZyYgc3RyLCBwcmV0dHlQcmludEZvcm1hdCYgZm9ybWF0LCBjb25zdCBU
MSYgYSkgeyBzdHIgKz0gImYxIjsgc3RyICs9ICIoIjsgYS5wcmV0dHlQcmludChzdHIsZm9ybWF0
KTsgc3RyICs9ICIpIjsgfSB9OyB0ZW1wbGF0ZTxjbGFzcyBUMT4gICBfYnpfQXJyYXlFeHByPF9i
el9BcnJheUV4cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBmMV9p
bXBsIDwgdHlwZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gICBmMSAg
KGNvbnN0IEVUQmFzZTxUMT4mIGQxKSB7IHJldHVybiBfYnpfQXJyYXlFeHByPF9iel9BcnJheUV4
cHJVbmFyeU9wPCB0eXBlbmFtZSAgYXNFeHByPFQxPjo6VF9leHByLCAgICBmMV9pbXBsIDwgdHlw
ZW5hbWUgIGFzRXhwcjxUMT46OlRfZXhwcjo6VF9udW10eXBlPiA+ID4gKHN0YXRpY19jYXN0PGNv
bnN0IFQxJj4oZDEpKTsgfSAgOwoKaW50IG1haW4oKSB7CiAgUmFuZ2UgcigzLDkpLCBycCgyLDkp
OwogIEFycmF5PGRvdWJsZSwgMT4geChyKSwgeShyKTsKCiAgeCA9IHI7CiAgeSA9IGYxKHgpOwoK
ICAKICBBcnJheTxkb3VibGUsIDE+IHh0KHJwKTsKICB4dCA9IHRlbnNvcjo6aSsuNTsKCiAgQ3Vi
aWNTcGxpbmU8ZG91YmxlPiBjczEoeCx5KTsKCiAgY291dCA8PCAoIF9tYWtlX2FycmF5X3N0ZF9v
dXRfZHVtbXkoKSApICA8PCB5IDw8IGVuZGwgCiAgICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9v
dXRfZHVtbXkoKSApICA8PCBjczEoeCkgPDwgZW5kbAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9z
dGRfb3V0X2R1bW15KCkgKSAgPDwgZjEoeHQpIDw8IGVuZGwKICAgICAgIDw8ICggX21ha2VfYXJy
YXlfc3RkX291dF9kdW1teSgpICkgIDw8IGNzMSh4dCkgPDwgZW5kbDsKCiAgQ3ViaWNTcGxpbmU8
ZG91YmxlPiBjczFyKHgucmV2ZXJzZShmaXJzdERpbSksIHkucmV2ZXJzZShmaXJzdERpbSkpOwog
IAogIGNvdXQgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgeSA8PCBlbmRs
IAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3Mxcih4KSA8
PCBlbmRsCiAgICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBmMSh4
dCkgPDwgZW5kbAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwg
Y3Mxcih4dCkgPDwgZW5kbDsKCiAgQ3ViaWNTcGxpbmU8ZG91YmxlPiBjczIoeCx5LCBDdWJpY1Nw
bGluZTxkb3VibGU+OjpzdGFydCwgZjFwKHgoIHgubGJvdW5kKGZpcnN0RGltKSApKSk7CiAgCiAg
Y291dCA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCB5IDw8IGVuZGwgCiAg
ICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBjczIoeCkgPDwgZW5k
bAogICAgICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgZjEoeHQpIDw8
IGVuZGwKICAgICAgIDw8ICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGNzMih4
dCkgPDwgZW5kbDsKCiAgQ3ViaWNTcGxpbmU8ZG91YmxlPiBjczMoeCx5LCBDdWJpY1NwbGluZTxk
b3VibGU+OjplbmQsIGYxcCh4KCB4LnVib3VuZChmaXJzdERpbSkgKSkpOwoKICBjb3V0IDw8ICgg
X21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IHkgPDwgZW5kbCAKICAgICAgIDw8ICgg
X21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGNzMyh4KSA8PCBlbmRsCiAgICAgICA8
PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBmMSh4dCkgPDwgZW5kbAogICAg
ICAgPDwgKCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3MzKHh0KSA8PCBlbmRs
OwoKICBDdWJpY1NwbGluZTxkb3VibGU+IGNzNCh4LHksIAoJCSAgZjFwKHgoIHgubGJvdW5kKGZp
cnN0RGltKSApKSwgZjFwKHgoIHgudWJvdW5kKGZpcnN0RGltKSApKSk7CgogIGNvdXQgPDwgKCBf
bWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgeSA8PCBlbmRsIAogICAgICAgPDwgKCBf
bWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3M0KHgpIDw8IGVuZGwKICAgICAgIDw8
ICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGYxKHh0KSA8PCBlbmRsCiAgICAg
ICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBjczQoeHQpIDw8IGVuZGw7
CgogIEN1YmljU3BsaW5lPGRvdWJsZT4gY3M1KHgseSwgCgkJICBDdWJpY1NwbGluZTxkb3VibGU+
OjplbmQsIGYxcCh4KCB4LnVib3VuZChmaXJzdERpbSkgKSksIAoJCSAgQ3ViaWNTcGxpbmU8ZG91
YmxlPjo6c3RhcnQsIGYxcCh4KCB4Lmxib3VuZChmaXJzdERpbSkgKSkpOwogIAogIGNvdXQgPDwg
KCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgeSA8PCBlbmRsIAogICAgICAgPDwg
KCBfbWFrZV9hcnJheV9zdGRfb3V0X2R1bW15KCkgKSAgPDwgY3M1KHgpIDw8IGVuZGwKICAgICAg
IDw8ICggX21ha2VfYXJyYXlfc3RkX291dF9kdW1teSgpICkgIDw8IGYxKHh0KSA8PCBlbmRsCiAg
ICAgICA8PCAoIF9tYWtlX2FycmF5X3N0ZF9vdXRfZHVtbXkoKSApICA8PCBjczUoeHQpIDw8IGVu
ZGw7Cn0KCg==
More information about the Gcc-prs
mailing list