public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/4153: internal compiler error
@ 2001-08-28  0:26 stefan.boehringer+usenet
  0 siblings, 0 replies; 2+ messages in thread
From: stefan.boehringer+usenet @ 2001-08-28  0:26 UTC (permalink / raw)
  To: gcc-gnats

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 118545 bytes --]

>Number:         4153
>Category:       c++
>Synopsis:       internal compiler error
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Aug 28 00:26:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Stefan Böhringer
>Release:        3.0.1
>Organization:
>Environment:
Redhat 7.1
>Description:
Compiler output:
FullGenotypeSearcher.cpp:23: Internal compiler error in simple_cst_equal, at 
   tree.c:3576
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
>How-To-Repeat:
 g++ -DHAVE_CONFIG_H -I. -I. -I..     -O0 -g3 -Wall -ggdb3  -c FullGenotypeSearcher.ii
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="FullGenotypeSearcher.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="FullGenotypeSearcher.ii"

IyAxICJGdWxsR2Vub3R5cGVTZWFyY2hlci5jcHAiCiNkZWZpbmUgX19WRVJTSU9OX18gIjMuMC4x
IgojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmluZSBfX1VTRVJfTEFCRUxfUFJF
RklYX18KIyAxICJGdWxsR2Vub3R5cGVTZWFyY2hlci5jcHAiCiNkZWZpbmUgX19SRUdJU1RFUl9Q
UkVGSVhfXwojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmluZSBfX0hBVkVfQlVJ
TFRJTl9TRVRKTVBfXyAxCiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIgojZGVmaW5lIF9f
U0laRV9UWVBFX18gdW5zaWduZWQgaW50CiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIgoj
ZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gaW50CiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3Bw
IgojZGVmaW5lIF9fV0NIQVJfVFlQRV9fIGxvbmcgaW50CiMgMSAiRnVsbEdlbm90eXBlU2VhcmNo
ZXIuY3BwIgojZGVmaW5lIF9fV0lOVF9UWVBFX18gdW5zaWduZWQgaW50CiMgMSAiRnVsbEdlbm90
eXBlU2VhcmNoZXIuY3BwIgojZGVmaW5lIF9fU1REQ19fIDEKIyAxICJGdWxsR2Vub3R5cGVTZWFy
Y2hlci5jcHAiCiNkZWZpbmUgX19jcGx1c3BsdXMgMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVy
LmNwcCIKI2RlZmluZSBfX0dYWF9XRUFLX18gMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNw
cCIKI2RlZmluZSBfX0dOVUdfXyAzCiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIgojZGVm
aW5lIF9fR1hYX0RFUFJFQ0FURUQgMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2Rl
ZmluZSBfX0VYQ0VQVElPTlMgMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmlu
ZSBfX0dYWF9BQklfVkVSU0lPTiAxMDAKIyAxICJGdWxsR2Vub3R5cGVTZWFyY2hlci5jcHAiCiNk
ZWZpbmUgX19HTlVDX18gMwojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmluZSBf
X0dOVUNfTUlOT1JfXyAwCiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIgojZGVmaW5lIF9f
R05VQ19QQVRDSExFVkVMX18gMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmlu
ZSBfX0VMRl9fIDEKIyAxICJGdWxsR2Vub3R5cGVTZWFyY2hlci5jcHAiCiNkZWZpbmUgdW5peCAx
CiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIgojZGVmaW5lIGxpbnV4IDEKIyAxICJGdWxs
R2Vub3R5cGVTZWFyY2hlci5jcHAiCiNkZWZpbmUgX19FTEZfXyAxCiMgMSAiRnVsbEdlbm90eXBl
U2VhcmNoZXIuY3BwIgojZGVmaW5lIF9fdW5peF9fIDEKIyAxICJGdWxsR2Vub3R5cGVTZWFyY2hl
ci5jcHAiCiNkZWZpbmUgX19saW51eF9fIDEKIyAxICJGdWxsR2Vub3R5cGVTZWFyY2hlci5jcHAi
CiNkZWZpbmUgX191bml4IDEKIyAxICJGdWxsR2Vub3R5cGVTZWFyY2hlci5jcHAiCiNkZWZpbmUg
X19saW51eCAxCiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIgojZGVmaW5lIF9fTk9fSU5M
SU5FX18gMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmluZSBfX1NURENfSE9T
VEVEX18gMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmluZSBfR05VX1NPVVJD
RSAxCiMgMSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIgojZGVmaW5lIGkzODYgMQojIDEgIkZ1
bGxHZW5vdHlwZVNlYXJjaGVyLmNwcCIKI2RlZmluZSBfX2kzODYgMQojIDEgIkZ1bGxHZW5vdHlw
ZVNlYXJjaGVyLmNwcCIKI2RlZmluZSBfX2kzODZfXyAxCiMgMSAiRnVsbEdlbm90eXBlU2VhcmNo
ZXIuY3BwIgojZGVmaW5lIF9fdHVuZV9pNjg2X18gMQojIDEgIkZ1bGxHZW5vdHlwZVNlYXJjaGVy
LmNwcCIKI2RlZmluZSBfX3R1bmVfcGVudGl1bXByb19fIDEKIyAxICJGdWxsR2Vub3R5cGVTZWFy
Y2hlci5jcHAiCiNkZWZpbmUgSEFWRV9DT05GSUdfSCAxCiMgMTggIkZ1bGxHZW5vdHlwZVNlYXJj
aGVyLmNwcCIKIyAxICJGdWxsR2Vub3R5cGVTZWFyY2hlci5oIiAxCiMgMTkgIkZ1bGxHZW5vdHlw
ZVNlYXJjaGVyLmgiCiNkZWZpbmUgRlVMTEdFTk9UWVBFU0VBUkNIRVJfSAoKIyAxICJHZW5vdHlw
ZVNlYXJjaGVyLmgiIDEKIyAxOSAiR2Vub3R5cGVTZWFyY2hlci5oIgojZGVmaW5lIEdFTk9UWVBF
U0VBUkNIRVJfSAoKIyAxICJBYnN0cmFjdEdlbm90eXBlU2V0LmgiIDEKIyAxOSAiQWJzdHJhY3RH
ZW5vdHlwZVNldC5oIgojZGVmaW5lIEFCU1RSQUNUR0VOT1RZUEVTRVRfSAoKIyAxICJSb3VuZGlu
Zy5oIiAxCgoKCiNkZWZpbmUgUk9VTkRJTkdfSAoKdHlwZWRlZiBjaGFyIEJPT0w7CmVudW0geyBO
TywgWUVTIH07CgoKZW51bSB7IFBCQnl0ZT0zLCBQQlNob3J0LCBQQkxvbmcsIFBCTExvbmcgfTsK
CmVudW0geyBQQnl0ZT0wLCBQU2hvcnQsIFBMb25nLCBQTExvbmcgfTsKCnR5cGVkZWYgbG9uZyBM
b25nOwp0eXBlZGVmIGNoYXIgQnl0ZTsKdHlwZWRlZiBzaG9ydCBTaG9ydDsKCgojZGVmaW5lIE5h
dHVyYWxMQml0cyAzMgoKCgojZGVmaW5lIHNhZmVNYXNrKG4pICggKG4pPj1OYXR1cmFsTEJpdHM/
IC0xOiAoKDE8PChuKSktMSkgKQojZGVmaW5lIE1hc2sobikgc2FmZU1hc2sobikKCgojZGVmaW5l
IFJpZ2h0TWFzayhuKSBNYXNrKG4pCgojZGVmaW5lIExlZnRNYXNrKG4pICh+TWFzayhuKSkKCiNk
ZWZpbmUgUm91bmQycChzLCBwKSAoICgocykgKyBNYXNrKHApKSAmIH5NYXNrKHApICkKCiNkZWZp
bmUgUm91bmRMTChzKSBSb3VuZDJwKHMsIFBMTG9uZykKCiNkZWZpbmUgUm91bmRXaXRoTWFzayhu
LCBtKSAoICgobikgKyAobSkpICYgfihtKSApCgoKI2RlZmluZSBQYWNrQ291bnQoY250LCB1bml0
MikgKFJvdW5kMnAoY250LCB1bml0MikgPj4gKHVuaXQyKSkKCgojZGVmaW5lIFBhY2tCeXRlc0Zy
b21CaXRzKGNudCwgdW5pdDIpIChQYWNrQ291bnQoY250LCB1bml0Mik8PCgodW5pdDIpLVBCQnl0
ZSkpCgoKI2RlZmluZSBCeXRlc0ZvckJpdHMoYml0Q291bnQpIFBhY2tCeXRlc0Zyb21CaXRzKGJp
dENvdW50LCBQQkJ5dGUpCgojZGVmaW5lIEJ5dGVBdEJpdChiZiwgbm8pICggKGNoYXIgKikoYmYp
ICsgKChubyk+PihQQkJ5dGUpKSApCiNkZWZpbmUgTG9uZ0F0Qml0KGJmLCBubykgKCAobG9uZyAq
KShiZikgKyAoKG5vKT4+KFBCTG9uZykpICkKI2RlZmluZSBVbml0QXRCaXQoYmYsIG5vLCB1bml0
KSAoICh1bml0ICopKGJmKSArICgobm8pPj4oUEIgIyMgdW5pdCkpICkKCiNkZWZpbmUgQml0QXRV
bml0KGJmLCBubywgdSkgKCEhKCpVbml0QXRCaXQoYmYsIG5vLCB1KSAmICgxIDw8ICgobm8pJk1h
c2soUEIgIyMgdSkpKSApKQojZGVmaW5lIFNldEJpdEF0VW5pdChiZiwgbm8sIHUpICggKlVuaXRB
dEJpdChiZiwgbm8sIHUpIHw9ICgxPDwoKG5vKSZNYXNrKFBCICMjIHUpKSkgKQojZGVmaW5lIENs
ZWFyQml0QXRVbml0KGJmLCBubywgdSkgKCAqVW5pdEF0Qml0KGJmLCBubywgdSkgJj0gfigxPDwo
KG5vKSZNYXNrKFBCICMjIHUpKSkgKQojZGVmaW5lIFNldEJpdEF0VG9Vbml0KGJmLCBubywgdiwg
dSkgKCAodik/IFNldEJpdEF0VW5pdChiZiwgbm8sIHUpOiBDbGVhckJpdEF0VW5pdChiZiwgbm8s
IHUpICkKIyA2MyAiUm91bmRpbmcuaCIKI2RlZmluZSBCaXRBdChiZiwgbm8pIEJpdEF0VW5pdChi
Ziwgbm8sIEJ5dGUpCiNkZWZpbmUgU2V0Qml0QXQoYmYsIG5vKSBTZXRCaXRBdFVuaXQoYmYsIG5v
LCBCeXRlKQojZGVmaW5lIENsZWFyQml0QXQoYmYsIG5vKSBDbGVhckJpdEF0VW5pdChiZiwgbm8s
IEJ5dGUpCiNkZWZpbmUgU2V0Qml0QXRUbyhiZiwgbm8sIHYpIFNldEJpdEF0VG9Vbml0KGJmLCBu
bywgdiwgQnl0ZSkKCgoKI2RlZmluZSBCaXRBdEwoYmYsIG5vKSBCaXRBdFVuaXQoYmYsIG5vLCBM
b25nKQojZGVmaW5lIFNldEJpdEF0TChiZiwgbm8pIFNldEJpdEF0VW5pdChiZiwgbm8sIExvbmcp
CiNkZWZpbmUgQ2xlYXJCaXRBdEwoYmYsIG5vKSBDbGVhckJpdEF0VW5pdChiZiwgbm8sIExvbmcp
CiNkZWZpbmUgU2V0Qml0QXRUb0woYmYsIG5vLCB2KSBTZXRCaXRBdFRvVW5pdChiZiwgbm8sIHYs
IExvbmcpCiMgMjIgIkFic3RyYWN0R2Vub3R5cGVTZXQuaCIgMgojIDEgIkdlbmV0aWNDb25zdGFu
dHMuaCIgMQojIDEwICJHZW5ldGljQ29uc3RhbnRzLmgiCiNkZWZpbmUgX0dFTkVUSUNDT05TVEFO
VFNfSAoKI2RlZmluZSBJTlZBTElEQUMgKCh1bnNpZ25lZCktMSkKCiNkZWZpbmUgTWlzc1RhZyAo
LTEpCiNkZWZpbmUgTVhfQUxMRUxFUyAxMDAKCnR5cGVkZWYgY2hhciBBbGxlbGU7CiMgMjMgIkFi
c3RyYWN0R2Vub3R5cGVTZXQuaCIgMgojIDEgIk1lbW9yeUFycmF5LmgiIDEKIyAyMSAiTWVtb3J5
QXJyYXkuaCIKI2RlZmluZSBNRU1PUllBUlJBWV9ICgojIDEgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAxIDMKIyAyNiAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKI2RlZmluZSBfU1RESU9fSCAxCiMg
MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDIwICIvdXNyL2luY2x1ZGUvZmVhdHVy
ZXMuaCIgMwojZGVmaW5lIF9GRUFUVVJFU19IIDEKIyAxMDkgIi91c3IvaW5jbHVkZS9mZWF0dXJl
cy5oIiAzCiNkZWZpbmUgX19LRVJORUxfU1RSSUNUX05BTUVTCgoKCiNkZWZpbmUgX19VU0VfQU5T
SSAxCiMgMTI3ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojZGVmaW5lIF9JU09DOTlfU09V
UkNFIDEKCiNkZWZpbmUgX1BPU0lYX1NPVVJDRSAxCgojZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSAx
OTk1MDZMCgojZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwCgojZGVmaW5lIF9YT1BFTl9TT1VSQ0Vf
RVhURU5ERUQgMQoKI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDEKCiNkZWZpbmUgX0JTRF9T
T1VSQ0UgMQoKI2RlZmluZSBfU1ZJRF9TT1VSQ0UgMQojIDE2MCAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDMKI2RlZmluZSBfX1VTRV9JU09DOTkgMQojIDE3NiAiL3Vzci9pbmNsdWRlL2ZlYXR1
cmVzLmgiIDMKI2RlZmluZSBfX1VTRV9QT1NJWCAxCgoKCiNkZWZpbmUgX19VU0VfUE9TSVgyIDEK
CgoKI2RlZmluZSBfX1VTRV9QT1NJWDE5OTMwOSAxCgoKCiNkZWZpbmUgX19VU0VfUE9TSVgxOTk1
MDYgMQoKCgojZGVmaW5lIF9fVVNFX1hPUEVOIDEKCiNkZWZpbmUgX19VU0VfWE9QRU5fRVhURU5E
RUQgMQojZGVmaW5lIF9fVVNFX1VOSVg5OCAxCgojZGVmaW5lIF9MQVJHRUZJTEVfU09VUkNFIDEK
CiNkZWZpbmUgX19VU0VfWE9QRU4ySyAxCiN1bmRlZiBfX1VTRV9JU09DOTkKI2RlZmluZSBfX1VT
RV9JU09DOTkgMQojIDIxMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKI2RlZmluZSBfX1VT
RV9MQVJHRUZJTEUgMQoKCgojZGVmaW5lIF9fVVNFX0xBUkdFRklMRTY0IDEKCgoKCgoKCiNkZWZp
bmUgX19VU0VfTUlTQyAxCgoKCiNkZWZpbmUgX19VU0VfQlNEIDEKCgoKI2RlZmluZSBfX1VTRV9T
VklEIDEKCgoKI2RlZmluZSBfX1VTRV9HTlUgMQoKCgoKCgoKI2RlZmluZSBfX1NURENfSUVDXzU1
OV9fIDEKI2RlZmluZSBfX1NURENfSUVDXzU1OV9DT01QTEVYX18gMQoKCiNkZWZpbmUgX19TVERD
X0lTT18xMDY0Nl9fIDIwMDAwOUwKIyAyNTYgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzCiNk
ZWZpbmUgX19HTlVfTElCUkFSWV9fIDYKCgoKI2RlZmluZSBfX0dMSUJDX18gMgojZGVmaW5lIF9f
R0xJQkNfTUlOT1JfXyAyCiMgMjcxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMwojZGVmaW5l
IF9fR05VQ19QUkVSRVEobWFqLCBtaW4pICgoX19HTlVDX18gPDwgMTYpICsgX19HTlVDX01JTk9S
X18gPj0gKChtYWopIDw8IDE2KSArIChtaW4pKQoKCgoKCiNkZWZpbmUgX19HTElCQ19QUkVSRVEo
bWFqLCBtaW4pICgoX19HTElCQ19fIDw8IDE2KSArIF9fR0xJQkNfTUlOT1JfXyA+PSAoKG1haikg
PDwgMTYpICsgKG1pbikpCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDEgMwoj
IDIwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfU1lTX0NERUZTX0ggMQoj
IDQ0ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfX1RIUk9XIHRocm93ICgp
CgoKCiNkZWZpbmUgX19QKGFyZ3MpIGFyZ3MgX19USFJPVwoKCiNkZWZpbmUgX19QTVQoYXJncykg
YXJncwojIDcwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfX0NPTkNBVCh4
LCB5KSB4ICMjIHkKI2RlZmluZSBfX1NUUklORyh4KSAjeAoKCiNkZWZpbmUgX19wdHJfdCB2b2lk
ICoKI2RlZmluZSBfX2xvbmdfZG91YmxlX3QgbG9uZyBkb3VibGUKCgoKCiNkZWZpbmUgX19CRUdJ
Tl9ERUNMUyBleHRlcm4gIkMiIHsKI2RlZmluZSBfX0VORF9ERUNMUyB9CiMgOTAgIi91c3IvaW5j
bHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fYm91bmRlZAojZGVmaW5lIF9fdW5ib3VuZGVk
CiNkZWZpbmUgX19wdHJ2YWx1ZQoKCgoKCgojZGVmaW5lIF9fZmxleGFyciBbXQojIDEyNiAiL3Vz
ci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzCiNkZWZpbmUgX19SRURJUkVDVChuYW1lLCBwcm90bywg
YWxpYXMpIG5hbWUgcHJvdG8gX19hc21fXyAoX19BU01OQU1FICgjYWxpYXMpKQojZGVmaW5lIF9f
QVNNTkFNRShjbmFtZSkgX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkK
I2RlZmluZSBfX0FTTU5BTUUyKHByZWZpeCwgY25hbWUpIF9fU1RSSU5HIChwcmVmaXgpIGNuYW1l
CiMgMTQ5ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfX2F0dHJpYnV0ZV9t
YWxsb2NfXyBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiMgMTU4ICIvdXNyL2luY2x1ZGUv
c3lzL2NkZWZzLmgiIDMKI2RlZmluZSBfX2F0dHJpYnV0ZV9wdXJlX18gX19hdHRyaWJ1dGVfXyAo
KF9fcHVyZV9fKSkKIyAxNjcgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9f
YXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18g
KHgpKSkKIyAxNzcgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMwojZGVmaW5lIF9fYXR0cmli
dXRlX2Zvcm1hdF9zdHJmbW9uX18oYSwgYikgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9f
c3RyZm1vbl9fLCBhLCBiKSkpCiMgMjAwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMKI2Rl
ZmluZSBfX3Jlc3RyaWN0X2FycgojIDI4NCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwoj
IDMxMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMKIyAxICIvdXNyL2luY2x1ZGUvZ251L3N0
dWJzLmgiIDEgMwoKCgoKI2RlZmluZSBfX3N0dWJfX19rZXJuZWxfY29zbAojZGVmaW5lIF9fc3R1
Yl9fX2tlcm5lbF9zaW5sCiNkZWZpbmUgX19zdHViX19fa2VybmVsX3RhbmwKI2RlZmluZSBfX3N0
dWJfY2hmbGFncwojZGVmaW5lIF9fc3R1Yl9mYXR0YWNoCiNkZWZpbmUgX19zdHViX2ZjaGZsYWdz
CiNkZWZpbmUgX19zdHViX2ZkZXRhY2gKI2RlZmluZSBfX3N0dWJfZmV4ZWN2ZQojZGVmaW5lIF9f
c3R1Yl9nZXRjb250ZXh0CiNkZWZpbmUgX19zdHViX2d0dHkKI2RlZmluZSBfX3N0dWJfbWFrZWNv
bnRleHQKI2RlZmluZSBfX3N0dWJfcG9zaXhfZmFkdmlzZQojZGVmaW5lIF9fc3R1Yl9wb3NpeF9m
YWR2aXNlNjQKI2RlZmluZSBfX3N0dWJfcmV2b2tlCiNkZWZpbmUgX19zdHViX3NldGNvbnRleHQK
I2RlZmluZSBfX3N0dWJfc2V0bG9naW4KI2RlZmluZSBfX3N0dWJfc2lncmV0dXJuCiNkZWZpbmUg
X19zdHViX3NzdGsKI2RlZmluZSBfX3N0dWJfc3R0eQojZGVmaW5lIF9fc3R1Yl9zd2FwY29udGV4
dAojIDMxMiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMwojIDI4ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgpleHRlcm4gIkMiIHsKCiNkZWZpbmUgX19uZWVkX3NpemVfdAojZGVmaW5l
IF9fbmVlZF9OVUxMCiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAu
MS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAxODEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojZGVmaW5lIF9fc2l6ZV90X18KI2Rl
ZmluZSBfU0laRV9UCiNkZWZpbmUgX1NZU19TSVpFX1RfSAojZGVmaW5lIF9UX1NJWkVfCiNkZWZp
bmUgX1RfU0laRQojZGVmaW5lIF9fU0laRV9UCiNkZWZpbmUgX1NJWkVfVF8KI2RlZmluZSBfQlNE
X1NJWkVfVF8KI2RlZmluZSBfU0laRV9UX0RFRklORURfCiNkZWZpbmUgX1NJWkVfVF9ERUZJTkVE
CiNkZWZpbmUgX19faW50X3NpemVfdF9oCiNkZWZpbmUgX0dDQ19TSVpFX1QKI2RlZmluZSBfU0la
RVRfCiNkZWZpbmUgX19zaXplX3QKCgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKIyAy
MTggIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRk
ZWYuaCIgMwojdW5kZWYgX19uZWVkX3NpemVfdAojIDM1NyAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2
LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiNkZWZpbmUgTlVMTCBfX251
bGwKIyAzNjYgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVk
ZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX05VTEwKIyAzNCAiL3Vzci9pbmNsdWRlL3N0ZGlv
LmgiIDIgMwoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAyNCAiL3Vzci9p
bmNsdWRlL2JpdHMvdHlwZXMuaCIgMwojZGVmaW5lIF9CSVRTX1RZUEVTX0ggMQoKIyAxICIvdXNy
L2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi
IDIgMwoKI2RlZmluZSBfX25lZWRfc2l6ZV90CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMTggIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYg
X19uZWVkX3NpemVfdAojIDMwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAyIDMKCgp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgX191X2NoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgX191X3No
b3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3VfaW50Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
X191X2xvbmc7CgpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBf
X3VfcXVhZF90OwpfX2V4dGVuc2lvbl9fIHR5cGVkZWYgbG9uZyBsb25nIGludCBfX3F1YWRfdDsK
IyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMwp0eXBlZGVmIHNpZ25lZCBjaGFyIF9f
aW50OF90Owp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgX191aW50OF90Owp0eXBlZGVmIHNpZ25lZCBz
aG9ydCBpbnQgX19pbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IGludCBfX3VpbnQxNl90
Owp0eXBlZGVmIHNpZ25lZCBpbnQgX19pbnQzMl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Vp
bnQzMl90OwoKX19leHRlbnNpb25fXyB0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgaW50IF9faW50
NjRfdDsKX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX191aW50
NjRfdDsKCnR5cGVkZWYgX19xdWFkX3QgKl9fcWFkZHJfdDsKCnR5cGVkZWYgX191X3F1YWRfdCBf
X2Rldl90Owp0eXBlZGVmIF9fdV9pbnQgX191aWRfdDsKdHlwZWRlZiBfX3VfaW50IF9fZ2lkX3Q7
CnR5cGVkZWYgX191X2xvbmcgX19pbm9fdDsKdHlwZWRlZiBfX3VfaW50IF9fbW9kZV90Owp0eXBl
ZGVmIF9fdV9pbnQgX19ubGlua190Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmX3Q7CnR5cGVkZWYg
X19xdWFkX3QgX19sb2ZmX3Q7CnR5cGVkZWYgaW50IF9fcGlkX3Q7CnR5cGVkZWYgaW50IF9fc3Np
emVfdDsKdHlwZWRlZiBfX3VfbG9uZyBfX3JsaW1fdDsKdHlwZWRlZiBfX3VfcXVhZF90IF9fcmxp
bTY0X3Q7CnR5cGVkZWYgX191X2ludCBfX2lkX3Q7Cgp0eXBlZGVmIHN0cnVjdAogIHsKICAgIGlu
dCBfX3ZhbFsyXTsKICB9IF9fZnNpZF90OwoKCnR5cGVkZWYgaW50IF9fZGFkZHJfdDsKdHlwZWRl
ZiBjaGFyICpfX2NhZGRyX3Q7CnR5cGVkZWYgbG9uZyBpbnQgX190aW1lX3Q7CnR5cGVkZWYgdW5z
aWduZWQgaW50IF9fdXNlY29uZHNfdDsKdHlwZWRlZiBsb25nIGludCBfX3N1c2Vjb25kc190Owp0
eXBlZGVmIGxvbmcgaW50IF9fc3dibGtfdDsKCnR5cGVkZWYgbG9uZyBpbnQgX19jbG9ja190OwoK
CnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVkZWYgaW50IF9fdGltZXJfdDsKCgoKI2Rl
ZmluZSBfX0ZEX1NFVFNJWkUgMTAyNAoKCnR5cGVkZWYgaW50IF9fa2V5X3Q7CgoKdHlwZWRlZiB1
bnNpZ25lZCBzaG9ydCBpbnQgX19pcGNfcGlkX3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19ibGtz
aXplX3Q7CgoKCgp0eXBlZGVmIGxvbmcgaW50IF9fYmxrY250X3Q7CnR5cGVkZWYgX19xdWFkX3Qg
X19ibGtjbnQ2NF90OwoKCnR5cGVkZWYgX191X2xvbmcgX19mc2Jsa2NudF90Owp0eXBlZGVmIF9f
dV9xdWFkX3QgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiBfX3VfbG9uZyBfX2ZzZmlsY250X3Q7
CnR5cGVkZWYgX191X3F1YWRfdCBfX2ZzZmlsY250NjRfdDsKCgp0eXBlZGVmIF9fdV9xdWFkX3Qg
X19pbm82NF90OwoKCnR5cGVkZWYgX19sb2ZmX3QgX19vZmY2NF90OwoKCnR5cGVkZWYgbG9uZyBp
bnQgX190X3NjYWxhcl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdF91c2NhbGFyX3Q7
CgoKdHlwZWRlZiBpbnQgX19pbnRwdHJfdDsKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3NvY2ts
ZW5fdDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgiIDEgMwojIDIw
ICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkdHlwZXMuaCIgMwojZGVmaW5lIF9CSVRTX1BUSFJF
QURUWVBFU19IIDEKCiNkZWZpbmUgX19uZWVkX3NjaGVkcGFyYW0KIyAxICIvdXNyL2luY2x1ZGUv
Yml0cy9zY2hlZC5oIiAxIDMKIyA2NiAiL3Vzci9pbmNsdWRlL2JpdHMvc2NoZWQuaCIgMwojZGVm
aW5lIF9fZGVmaW5lZF9zY2hlZHBhcmFtIDEKCnN0cnVjdCBfX3NjaGVkX3BhcmFtCiAgewogICAg
aW50IF9fc2NoZWRfcHJpb3JpdHk7CiAgfTsKI3VuZGVmIF9fbmVlZF9zY2hlZHBhcmFtCiMgMjQg
Ii91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMKCgpzdHJ1Y3QgX3B0aHJlYWRf
ZmFzdGxvY2sKewogIGxvbmcgaW50IF9fc3RhdHVzOwogIGludCBfX3NwaW5sb2NrOwoKfTsKCgoK
dHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfZGVzY3Jfc3RydWN0ICpfcHRocmVhZF9kZXNjcjsKI2Rl
ZmluZSBfUFRIUkVBRF9ERVNDUl9ERUZJTkVECgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJlYWRf
YXR0cl9zCnsKICBpbnQgX19kZXRhY2hzdGF0ZTsKICBpbnQgX19zY2hlZHBvbGljeTsKICBzdHJ1
Y3QgX19zY2hlZF9wYXJhbSBfX3NjaGVkcGFyYW07CiAgaW50IF9faW5oZXJpdHNjaGVkOwogIGlu
dCBfX3Njb3BlOwogIHNpemVfdCBfX2d1YXJkc2l6ZTsKICBpbnQgX19zdGFja2FkZHJfc2V0Owog
IHZvaWQgKl9fc3RhY2thZGRyOwogIHNpemVfdCBfX3N0YWNrc2l6ZTsKfSBwdGhyZWFkX2F0dHJf
dDsKCgoKdHlwZWRlZiBzdHJ1Y3QKewogIHN0cnVjdCBfcHRocmVhZF9mYXN0bG9jayBfX2NfbG9j
azsKICBfcHRocmVhZF9kZXNjciBfX2Nfd2FpdGluZzsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKdHlw
ZWRlZiBzdHJ1Y3QKewogIGludCBfX2R1bW15Owp9IHB0aHJlYWRfY29uZGF0dHJfdDsKCgp0eXBl
ZGVmIHVuc2lnbmVkIGludCBwdGhyZWFkX2tleV90OwoKCgoKCnR5cGVkZWYgc3RydWN0CnsKICBp
bnQgX19tX3Jlc2VydmVkOwogIGludCBfX21fY291bnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19tX293
bmVyOwogIGludCBfX21fa2luZDsKICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19tX2xvY2s7
Cn0gcHRocmVhZF9tdXRleF90OwoKCgp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fbXV0ZXhraW5k
Owp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoK
CgoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRfcndsb2NrX3QKewogIHN0cnVjdCBfcHRocmVhZF9m
YXN0bG9jayBfX3J3X2xvY2s7CiAgaW50IF9fcndfcmVhZGVyczsKICBfcHRocmVhZF9kZXNjciBf
X3J3X3dyaXRlcjsKICBfcHRocmVhZF9kZXNjciBfX3J3X3JlYWRfd2FpdGluZzsKICBfcHRocmVh
ZF9kZXNjciBfX3J3X3dyaXRlX3dhaXRpbmc7CiAgaW50IF9fcndfa2luZDsKICBpbnQgX19yd19w
c2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCnR5cGVkZWYgc3RydWN0CnsKICBpbnQgX19s
b2Nra2luZDsKICBpbnQgX19wc2hhcmVkOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKdHlw
ZWRlZiB2b2xhdGlsZSBpbnQgcHRocmVhZF9zcGlubG9ja190OwoKCnR5cGVkZWYgc3RydWN0IHsK
ICBzdHJ1Y3QgX3B0aHJlYWRfZmFzdGxvY2sgX19iYV9sb2NrOwogIGludCBfX2JhX3JlcXVpcmVk
OwogIGludCBfX2JhX3ByZXNlbnQ7CiAgX3B0aHJlYWRfZGVzY3IgX19iYV93YWl0aW5nOwp9IHB0
aHJlYWRfYmFycmllcl90OwoKCnR5cGVkZWYgc3RydWN0IHsKICBpbnQgX19wc2hhcmVkOwp9IHB0
aHJlYWRfYmFycmllcmF0dHJfdDsKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJl
YWRfdDsKIyAxNDQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDIgMwojIDM2ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMiAzCiNkZWZpbmUgX19uZWVkX0ZJTEUKI2RlZmluZSBfX25lZWRfX19G
SUxFCgoKCgoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxFIEZJTEU7CgojZGVmaW5lIF9fRklMRV9k
ZWZpbmVkIDEKCiN1bmRlZiBfX25lZWRfRklMRQoKCgoKCnR5cGVkZWYgc3RydWN0IF9JT19GSUxF
IF9fRklMRTsKCiNkZWZpbmUgX19fX0ZJTEVfZGVmaW5lZCAxCgojdW5kZWYgX19uZWVkX19fRklM
RQoKCgojZGVmaW5lIF9TVERJT19VU0VTX0lPU1RSRUFNCgojIDEgIi91c3IvaW5jbHVkZS9saWJp
by5oIiAxIDMKIyAyOCAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDMKI2RlZmluZSBfSU9fU1RESU9f
SAoKIyAxICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDEgMwoKCgoKI2RlZmluZSBfR19jb25m
aWdfaCAxCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgMTAgIi91c3Iv
aW5jbHVkZS9fR19jb25maWcuaCIgMiAzCiNkZWZpbmUgX19uZWVkX3NpemVfdAojZGVmaW5lIF9f
bmVlZF93Y2hhcl90CiNkZWZpbmUgX19uZWVkX3dpbnRfdAojZGVmaW5lIF9fbmVlZF9OVUxMCiMg
MSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRl
Zi5oIiAxIDMKIyAyMTggIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEv
aW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3NpemVfdAojIDI0MyAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiNkZWZp
bmUgX193Y2hhcl90X18KI2RlZmluZSBfV0NIQVJfVAojZGVmaW5lIF9UX1dDSEFSXwojZGVmaW5l
IF9UX1dDSEFSCiNkZWZpbmUgX19XQ0hBUl9UCiNkZWZpbmUgX1dDSEFSX1RfCiNkZWZpbmUgX0JT
RF9XQ0hBUl9UXwojZGVmaW5lIF9XQ0hBUl9UX0RFRklORURfCiNkZWZpbmUgX1dDSEFSX1RfREVG
SU5FRAojZGVmaW5lIF9XQ0hBUl9UX0gKI2RlZmluZSBfX19pbnRfd2NoYXJfdF9oCiNkZWZpbmUg
X19JTlRfV0NIQVJfVF9ICiNkZWZpbmUgX0dDQ19XQ0hBUl9UCiMgMjY4ICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIF9C
U0RfV0NIQVJfVF8KIyAzMDIgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3djaGFyX3QKCgoKCiNkZWZpbmUg
X1dJTlRfVAoKCgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwoKI3VuZGVmIF9fbmVlZF93
aW50X3QKIyAzNTUgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5j
bHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgTlVMTAoKI2RlZmluZSBOVUxMIF9fbnVsbAojIDM2NiAi
L3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5o
IiAzCiN1bmRlZiBfX25lZWRfTlVMTAojIDE1ICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDIg
MwojIDIzICIvdXNyL2luY2x1ZGUvX0dfY29uZmlnLmgiIDMKI2RlZmluZSBfX25lZWRfbWJzdGF0
ZV90CiMgMSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDEgMwojIDQ3ICIvdXNyL2luY2x1ZGUvd2No
YXIuaCIgMwojZGVmaW5lIF9fbmVlZF93aW50X3QKIyAxICIvdXNyL2xpYi9nY2MtbGliL2k2ODYt
cGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDEgMwojIDMxNCAiL3Vzci9saWIv
Z2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRl
ZiBfX25lZWRfd2ludF90CiMgNDkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMKCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMSAzCiMgMjEgIi91c3IvaW5jbHVkZS9iaXRzL3djaGFy
LmgiIDMKI2RlZmluZSBfQklUU19XQ0hBUl9IIDEKCiNkZWZpbmUgX19XQ0hBUl9NSU4gKC0yMTQ3
NDgzNjQ3bCAtIDFsKQojZGVmaW5lIF9fV0NIQVJfTUFYICgyMTQ3NDgzNjQ3bCkKIyA1MSAiL3Vz
ci9pbmNsdWRlL3djaGFyLmgiIDIgMwojIDY1ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMwojZGVm
aW5lIF9fbWJzdGF0ZV90X2RlZmluZWQgMQoKdHlwZWRlZiBzdHJ1Y3QKewogIGludCBfX2NvdW50
OwogIHVuaW9uCiAgewogICAgd2ludF90IF9fd2NoOwogICAgY2hhciBfX3djaGJbNF07CiAgfSBf
X3ZhbHVlOwp9IF9fbWJzdGF0ZV90OwoKI3VuZGVmIF9fbmVlZF9tYnN0YXRlX3QKIyAyNSAiL3Vz
ci9pbmNsdWRlL19HX2NvbmZpZy5oIiAyIDMKI2RlZmluZSBfR19zaXplX3Qgc2l6ZV90CnR5cGVk
ZWYgc3RydWN0CnsKICBfX29mZl90IF9fcG9zOwogIF9fbWJzdGF0ZV90IF9fc3RhdGU7Cn0gX0df
ZnBvc190Owp0eXBlZGVmIHN0cnVjdAp7CiAgX19vZmY2NF90IF9fcG9zOwogIF9fbWJzdGF0ZV90
IF9fc3RhdGU7Cn0gX0dfZnBvczY0X3Q7CiNkZWZpbmUgX0dfc3NpemVfdCBfX3NzaXplX3QKI2Rl
ZmluZSBfR19vZmZfdCBfX29mZl90CiNkZWZpbmUgX0dfb2ZmNjRfdCBfX29mZjY0X3QKI2RlZmlu
ZSBfR19waWRfdCBfX3BpZF90CiNkZWZpbmUgX0dfdWlkX3QgX191aWRfdAojZGVmaW5lIF9HX3dj
aGFyX3Qgd2NoYXJfdAojZGVmaW5lIF9HX3dpbnRfdCB3aW50X3QKI2RlZmluZSBfR19zdGF0NjQg
c3RhdDY0CiMgMSAiL3Vzci9pbmNsdWRlL2djb252LmgiIDEgMwojIDI0ICIvdXNyL2luY2x1ZGUv
Z2NvbnYuaCIgMwojZGVmaW5lIF9HQ09OVl9IIDEKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz
LmgiIDEgMwojIDI3ICIvdXNyL2luY2x1ZGUvZ2NvbnYuaCIgMiAzCiNkZWZpbmUgX19uZWVkX21i
c3RhdGVfdAojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAxIDMKIyA0NyAiL3Vzci9pbmNsdWRl
L3djaGFyLmgiIDMKI2RlZmluZSBfX25lZWRfd2ludF90CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAzMTQgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoj
dW5kZWYgX19uZWVkX3dpbnRfdAojIDQ5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzCgojIDEg
Ii91c3IvaW5jbHVkZS9iaXRzL3djaGFyLmgiIDEgMwojIDUxICIvdXNyL2luY2x1ZGUvd2NoYXIu
aCIgMiAzCiMgNzcgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzCiN1bmRlZiBfX25lZWRfbWJzdGF0
ZV90CiMgMjkgIi91c3IvaW5jbHVkZS9nY29udi5oIiAyIDMKI2RlZmluZSBfX25lZWRfc2l6ZV90
CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0
ZGRlZi5oIiAxIDMKIyAyMTggIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3NpemVfdAojIDMxICIvdXNyL2lu
Y2x1ZGUvZ2NvbnYuaCIgMiAzCgoKI2RlZmluZSBfX1VOS05PV05fMTA2NDZfQ0hBUiAoKHdjaGFy
X3QpIDB4ZmZmZCkKCgplbnVtCnsKICBfX0dDT05WX09LID0gMCwKICBfX0dDT05WX05PQ09OViwK
ICBfX0dDT05WX05PREIsCiAgX19HQ09OVl9OT01FTSwKCiAgX19HQ09OVl9FTVBUWV9JTlBVVCwK
ICBfX0dDT05WX0ZVTExfT1VUUFVULAogIF9fR0NPTlZfSUxMRUdBTF9JTlBVVCwKICBfX0dDT05W
X0lOQ09NUExFVEVfSU5QVVQsCgogIF9fR0NPTlZfSUxMRUdBTF9ERVNDUklQVE9SLAogIF9fR0NP
TlZfSU5URVJOQUxfRVJST1IKfTsKCgoKZW51bQp7CiAgX19HQ09OVl9JU19MQVNUID0gMHgwMDAx
LAogIF9fR0NPTlZfSUdOT1JFX0VSUk9SUyA9IDB4MDAwMgp9OwoKCgpzdHJ1Y3QgX19nY29udl9z
dGVwOwpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGE7CnN0cnVjdCBfX2djb252X2xvYWRlZF9vYmpl
Y3Q7CnN0cnVjdCBfX2djb252X3RyYW5zX2RhdGE7CgoKCnR5cGVkZWYgaW50ICgqX19nY29udl9m
Y3QpIChzdHJ1Y3QgX19nY29udl9zdGVwICosIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB1bnNpZ25lZCBjaGFyICoqLCBfX2Nv
bnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGNoYXIgKiosIHNpemVfdCAqLCBpbnQsIGludCk7CgoKdHlwZWRlZiBpbnQgKCpfX2djb252X2lu
aXRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKdHlwZWRlZiB2b2lkICgqX19nY29udl9l
bmRfZmN0KSAoc3RydWN0IF9fZ2NvbnZfc3RlcCAqKTsKCgoKdHlwZWRlZiBpbnQgKCpfX2djb252
X3RyYW5zX2ZjdCkgKHN0cnVjdCBfX2djb252X3N0ZXAgKiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBfX2djb252X3N0ZXBfZGF0YSAqLCB2b2lkICosCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IHVuc2lnbmVkIGNoYXIgKiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqKiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLCB1
bnNpZ25lZCBjaGFyICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19jb250ZXh0X2ZjdCkgKHZvaWQgKiwg
X19jb25zdCB1bnNpZ25lZCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgdW5zaWduZWQgY2hhciAqLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICosIHVuc2lnbmVkIGNoYXIgKik7CgoK
dHlwZWRlZiBpbnQgKCpfX2djb252X3RyYW5zX3F1ZXJ5X2ZjdCkgKF9fY29uc3QgY2hhciAqLCBf
X2NvbnN0IGNoYXIgKioqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90ICopOwoKCnR5cGVkZWYgaW50ICgqX19nY29udl90cmFuc19pbml0X2ZjdCkgKHZvaWQg
KiosIGNvbnN0IGNoYXIgKik7CnR5cGVkZWYgdm9pZCAoKl9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCkg
KHZvaWQgKik7CgpzdHJ1Y3QgX19nY29udl90cmFuc19kYXRhCnsKCiAgX19nY29udl90cmFuc19m
Y3QgX190cmFuc19mY3Q7CiAgX19nY29udl90cmFuc19jb250ZXh0X2ZjdCBfX3RyYW5zX2NvbnRl
eHRfZmN0OwogIF9fZ2NvbnZfdHJhbnNfZW5kX2ZjdCBfX3RyYW5zX2VuZF9mY3Q7CiAgdm9pZCAq
X19kYXRhOwogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fbmV4dDsKfTsKCgoKc3RydWN0
IF9fZ2NvbnZfc3RlcAp7CiAgc3RydWN0IF9fZ2NvbnZfbG9hZGVkX29iamVjdCAqX19zaGxpYl9o
YW5kbGU7CiAgX19jb25zdCBjaGFyICpfX21vZG5hbWU7CgogIGludCBfX2NvdW50ZXI7CgogIGNo
YXIgKl9fZnJvbV9uYW1lOwogIGNoYXIgKl9fdG9fbmFtZTsKCiAgX19nY29udl9mY3QgX19mY3Q7
CiAgX19nY29udl9pbml0X2ZjdCBfX2luaXRfZmN0OwogIF9fZ2NvbnZfZW5kX2ZjdCBfX2VuZF9m
Y3Q7CgoKCiAgaW50IF9fbWluX25lZWRlZF9mcm9tOwogIGludCBfX21heF9uZWVkZWRfZnJvbTsK
ICBpbnQgX19taW5fbmVlZGVkX3RvOwogIGludCBfX21heF9uZWVkZWRfdG87CgoKICBpbnQgX19z
dGF0ZWZ1bDsKCiAgdm9pZCAqX19kYXRhOwp9OwoKCgpzdHJ1Y3QgX19nY29udl9zdGVwX2RhdGEK
ewogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmOwogIHVuc2lnbmVkIGNoYXIgKl9fb3V0YnVmZW5k
OwoKCgogIGludCBfX2ZsYWdzOwoKCgogIGludCBfX2ludm9jYXRpb25fY291bnRlcjsKCgoKICBp
bnQgX19pbnRlcm5hbF91c2U7CgogIF9fbWJzdGF0ZV90ICpfX3N0YXRlcDsKICBfX21ic3RhdGVf
dCBfX3N0YXRlOwoKCgogIHN0cnVjdCBfX2djb252X3RyYW5zX2RhdGEgKl9fdHJhbnM7Cn07CgoK
CnR5cGVkZWYgc3RydWN0IF9fZ2NvbnZfaW5mbwp7CiAgc2l6ZV90IF9fbnN0ZXBzOwogIHN0cnVj
dCBfX2djb252X3N0ZXAgKl9fc3RlcHM7CiAgX19leHRlbnNpb25fXyBzdHJ1Y3QgX19nY29udl9z
dGVwX2RhdGEgX19kYXRhIFtdOwp9ICpfX2djb252X3Q7CiMgNDUgIi91c3IvaW5jbHVkZS9fR19j
b25maWcuaCIgMiAzCnR5cGVkZWYgdW5pb24KewogIHN0cnVjdCBfX2djb252X2luZm8gX19jZDsK
ICBzdHJ1Y3QKICB7CiAgICBzdHJ1Y3QgX19nY29udl9pbmZvIF9fY2Q7CiAgICBzdHJ1Y3QgX19n
Y29udl9zdGVwX2RhdGEgX19kYXRhOwogIH0gX19jb21iaW5lZDsKfSBfR19pY29udl90OwoKdHlw
ZWRlZiBpbnQgX0dfaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiBpbnQgX0dfaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykp
KTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX0dfdWludDE2X3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9k
ZV9fIChfX0hJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9HX3VpbnQzMl90IF9fYXR0cmli
dXRlX18gKChfX21vZGVfXyAoX19TSV9fKSkpOwoKI2RlZmluZSBfR19IQVZFX0JPT0wgMQoKCgoj
ZGVmaW5lIF9HX0hBVkVfQVRFWElUIDEKI2RlZmluZSBfR19IQVZFX1NZU19DREVGUyAxCiNkZWZp
bmUgX0dfSEFWRV9TWVNfV0FJVCAxCiNkZWZpbmUgX0dfTkVFRF9TVERBUkdfSCAxCiNkZWZpbmUg
X0dfdmFfbGlzdCBfX2dudWNfdmFfbGlzdAoKI2RlZmluZSBfR19IQVZFX1BSSU5URl9GUCAxCiNk
ZWZpbmUgX0dfSEFWRV9NTUFQIDEKI2RlZmluZSBfR19IQVZFX0xPTkdfRE9VQkxFX0lPIDEKI2Rl
ZmluZSBfR19IQVZFX0lPX0ZJTEVfT1BFTiAxCiNkZWZpbmUgX0dfSEFWRV9JT19HRVRMSU5FX0lO
Rk8gMQoKI2RlZmluZSBfR19JT19JT19GSUxFX1ZFUlNJT04gMHgyMDAwMQoKI2RlZmluZSBfR19P
UEVONjQgX19vcGVuNjQKI2RlZmluZSBfR19MU0VFSzY0IF9fbHNlZWs2NAojZGVmaW5lIF9HX0ZT
VEFUNjQoZmQsIGJ1ZikgX19meHN0YXQ2NCAoX1NUQVRfVkVSLCBmZCwgYnVmKQoKCiNkZWZpbmUg
X0dfSEFWRV9TVF9CTEtTSVpFIGRlZmluZWQgKF9TVEFUQlVGX1NUX0JMS1NJWkUpCgojZGVmaW5l
IF9HX0JVRlNJWiA4MTkyCgoKI2RlZmluZSBfR19OQU1FU19IQVZFX1VOREVSU0NPUkUgMAojZGVm
aW5lIF9HX1ZUQUJMRV9MQUJFTF9IQVNfTEVOR1RIIDEKI2RlZmluZSBfR19VU0lOR19USFVOS1Mg
MQojZGVmaW5lIF9HX1ZUQUJMRV9MQUJFTF9QUkVGSVggIl9fdnRfIgojZGVmaW5lIF9HX1ZUQUJM
RV9MQUJFTF9QUkVGSVhfSUQgX192dF8KCgoKI2RlZmluZSBfR19BUkdTKEFSR0xJU1QpIEFSR0xJ
U1QKIyAzMSAiL3Vzci9pbmNsdWRlL2xpYmlvLmgiIDIgMwoKI2RlZmluZSBfSU9fcG9zX3QgX0df
ZnBvc190CiNkZWZpbmUgX0lPX2Zwb3NfdCBfR19mcG9zX3QKI2RlZmluZSBfSU9fZnBvczY0X3Qg
X0dfZnBvczY0X3QKI2RlZmluZSBfSU9fc2l6ZV90IF9HX3NpemVfdAojZGVmaW5lIF9JT19zc2l6
ZV90IF9HX3NzaXplX3QKI2RlZmluZSBfSU9fb2ZmX3QgX0dfb2ZmX3QKI2RlZmluZSBfSU9fb2Zm
NjRfdCBfR19vZmY2NF90CiNkZWZpbmUgX0lPX3BpZF90IF9HX3BpZF90CiNkZWZpbmUgX0lPX3Vp
ZF90IF9HX3VpZF90CiNkZWZpbmUgX0lPX2ljb252X3QgX0dfaWNvbnZfdAojZGVmaW5lIF9JT19I
QVZFX1NZU19XQUlUIF9HX0hBVkVfU1lTX1dBSVQKI2RlZmluZSBfSU9fSEFWRV9TVF9CTEtTSVpF
IF9HX0hBVkVfU1RfQkxLU0laRQojZGVmaW5lIF9JT19CVUZTSVogX0dfQlVGU0laCiNkZWZpbmUg
X0lPX3ZhX2xpc3QgX0dfdmFfbGlzdAojZGVmaW5lIF9JT193aW50X3QgX0dfd2ludF90CgoKCiNk
ZWZpbmUgX19uZWVkX19fdmFfbGlzdAojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51
eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMSAzCiMgMzcgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRhcmcuaCIgMwojdW5kZWYgX19uZWVk
X19fdmFfbGlzdAoKCgoKI2RlZmluZSBfX0dOVUNfVkFfTElTVAp0eXBlZGVmIF9fYnVpbHRpbl92
YV9saXN0IF9fZ251Y192YV9saXN0OwojIDUyICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMiAzCgoj
dW5kZWYgX0lPX3ZhX2xpc3QKI2RlZmluZSBfSU9fdmFfbGlzdCBfX2dudWNfdmFfbGlzdAojIDc0
ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojZGVmaW5lIF9QQVJBTVMocHJvdG9zKSBfX1AocHJv
dG9zKQoKCgoKCgoKI2RlZmluZSBfSU9fVU5JRklFRF9KVU1QVEFCTEVTIDEKCgoKCgojZGVmaW5l
IEVPRiAoLTEpCiMgMTAzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojZGVmaW5lIF9JT1NfSU5Q
VVQgMQojZGVmaW5lIF9JT1NfT1VUUFVUIDIKI2RlZmluZSBfSU9TX0FURU5EIDQKI2RlZmluZSBf
SU9TX0FQUEVORCA4CiNkZWZpbmUgX0lPU19UUlVOQyAxNgojZGVmaW5lIF9JT1NfTk9DUkVBVEUg
MzIKI2RlZmluZSBfSU9TX05PUkVQTEFDRSA2NAojZGVmaW5lIF9JT1NfQklOIDEyOAoKCgoKCgoK
I2RlZmluZSBfSU9fTUFHSUMgMHhGQkFEMDAwMAojZGVmaW5lIF9PTERfU1RESU9fTUFHSUMgMHhG
QUJDMDAwMAojZGVmaW5lIF9JT19NQUdJQ19NQVNLIDB4RkZGRjAwMDAKI2RlZmluZSBfSU9fVVNF
Ul9CVUYgMQojZGVmaW5lIF9JT19VTkJVRkZFUkVEIDIKI2RlZmluZSBfSU9fTk9fUkVBRFMgNAoj
ZGVmaW5lIF9JT19OT19XUklURVMgOAojZGVmaW5lIF9JT19FT0ZfU0VFTiAweDEwCiNkZWZpbmUg
X0lPX0VSUl9TRUVOIDB4MjAKI2RlZmluZSBfSU9fREVMRVRFX0RPTlRfQ0xPU0UgMHg0MAojZGVm
aW5lIF9JT19MSU5LRUQgMHg4MAojZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKI2RlZmluZSBf
SU9fTElORV9CVUYgMHgyMDAKI2RlZmluZSBfSU9fVElFRF9QVVRfR0VUIDB4NDAwCiNkZWZpbmUg
X0lPX0NVUlJFTlRMWV9QVVRUSU5HIDB4ODAwCiNkZWZpbmUgX0lPX0lTX0FQUEVORElORyAweDEw
MDAKI2RlZmluZSBfSU9fSVNfRklMRUJVRiAweDIwMDAKI2RlZmluZSBfSU9fQkFEX1NFRU4gMHg0
MDAwCiNkZWZpbmUgX0lPX1VTRVJfTE9DSyAweDgwMDAKCgojZGVmaW5lIF9JT19TS0lQV1MgMDEK
I2RlZmluZSBfSU9fTEVGVCAwMgojZGVmaW5lIF9JT19SSUdIVCAwNAojZGVmaW5lIF9JT19JTlRF
Uk5BTCAwMTAKI2RlZmluZSBfSU9fREVDIDAyMAojZGVmaW5lIF9JT19PQ1QgMDQwCiNkZWZpbmUg
X0lPX0hFWCAwMTAwCiNkZWZpbmUgX0lPX1NIT1dCQVNFIDAyMDAKI2RlZmluZSBfSU9fU0hPV1BP
SU5UIDA0MDAKI2RlZmluZSBfSU9fVVBQRVJDQVNFIDAxMDAwCiNkZWZpbmUgX0lPX1NIT1dQT1Mg
MDIwMDAKI2RlZmluZSBfSU9fU0NJRU5USUZJQyAwNDAwMAojZGVmaW5lIF9JT19GSVhFRCAwMTAw
MDAKI2RlZmluZSBfSU9fVU5JVEJVRiAwMjAwMDAKI2RlZmluZSBfSU9fU1RESU8gMDQwMDAwCiNk
ZWZpbmUgX0lPX0RPTlRfQ0xPU0UgMDEwMDAwMAojZGVmaW5lIF9JT19CT09MQUxQSEEgMDIwMDAw
MAoKCnN0cnVjdCBfSU9fanVtcF90OyBzdHJ1Y3QgX0lPX0ZJTEU7CiMgMTY4ICIvdXNyL2luY2x1
ZGUvbGliaW8uaCIgMwp0eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX21h
cmtlciB7CiAgc3RydWN0IF9JT19tYXJrZXIgKl9uZXh0OwogIHN0cnVjdCBfSU9fRklMRSAqX3Ni
dWY7CgoKCiAgaW50IF9wb3M7CiMgMTkxICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9OwoKCmVu
dW0gX19jb2RlY3Z0X3Jlc3VsdAp7CiAgX19jb2RlY3Z0X29rLAogIF9fY29kZWN2dF9wYXJ0aWFs
LAogIF9fY29kZWN2dF9lcnJvciwKICBfX2NvZGVjdnRfbm9jb252Cn07CiMgMjU5ICIvdXNyL2lu
Y2x1ZGUvbGliaW8uaCIgMwpzdHJ1Y3QgX0lPX0ZJTEUgewogIGludCBfZmxhZ3M7CiNkZWZpbmUg
X0lPX2ZpbGVfZmxhZ3MgX2ZsYWdzCgoKCiAgY2hhciogX0lPX3JlYWRfcHRyOwogIGNoYXIqIF9J
T19yZWFkX2VuZDsKICBjaGFyKiBfSU9fcmVhZF9iYXNlOwogIGNoYXIqIF9JT193cml0ZV9iYXNl
OwogIGNoYXIqIF9JT193cml0ZV9wdHI7CiAgY2hhciogX0lPX3dyaXRlX2VuZDsKICBjaGFyKiBf
SU9fYnVmX2Jhc2U7CiAgY2hhciogX0lPX2J1Zl9lbmQ7CgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7
CiAgY2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0
IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAgaW50
IF9maWxlbm87CiAgaW50IF9ibGtzaXplOwogIF9fb2ZmX3QgX29sZF9vZmZzZXQ7CgojZGVmaW5l
IF9fSEFWRV9DT0xVTU4KCiAgdW5zaWduZWQgc2hvcnQgX2N1cl9jb2x1bW47CiAgc2lnbmVkIGNo
YXIgX3Z0YWJsZV9vZmZzZXQ7CiAgY2hhciBfc2hvcnRidWZbMV07CgoKCiAgX0lPX2xvY2tfdCAq
X2xvY2s7CiMgMzAzICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwogIF9fb2ZmNjRfdCBfb2Zmc2V0
OwoKCgoKCiAgdm9pZCAqX19wYWQxOwogIHZvaWQgKl9fcGFkMjsKCiAgaW50IF9tb2RlOwoKICBj
aGFyIF91bnVzZWQyWzE1ICogc2l6ZW9mIChpbnQpIC0gMiAqIHNpemVvZiAodm9pZCAqKV07Cgp9
OwoKCgoKCnN0cnVjdCBfSU9fRklMRV9wbHVzOwoKZXh0ZXJuIHN0cnVjdCBfSU9fRklMRV9wbHVz
IF9JT18yXzFfc3RkaW5fOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRv
dXRfOwpleHRlcm4gc3RydWN0IF9JT19GSUxFX3BsdXMgX0lPXzJfMV9zdGRlcnJfOwoKI2RlZmlu
ZSBfSU9fc3RkaW4gKChfSU9fRklMRSopKCZfSU9fMl8xX3N0ZGluXykpCiNkZWZpbmUgX0lPX3N0
ZG91dCAoKF9JT19GSUxFKikoJl9JT18yXzFfc3Rkb3V0XykpCiNkZWZpbmUgX0lPX3N0ZGVyciAo
KF9JT19GSUxFKikoJl9JT18yXzFfc3RkZXJyXykpCiMgMzQyICIvdXNyL2luY2x1ZGUvbGliaW8u
aCIgMwp0eXBlZGVmIF9fc3NpemVfdCBfX2lvX3JlYWRfZm4gKHZvaWQgKl9fY29va2llLCBjaGFy
ICpfX2J1Ziwgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYgX19zc2l6ZV90IF9faW9f
d3JpdGVfZm4gKHZvaWQgKl9fY29va2llLCBfX2NvbnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uKTsKCgoKCgoKCnR5cGVkZWYgaW50IF9f
aW9fc2Vla19mbiAodm9pZCAqX19jb29raWUsIF9fb2ZmNjRfdCAqX19wb3MsIGludCBfX3cpOwoK
CnR5cGVkZWYgaW50IF9faW9fY2xvc2VfZm4gKHZvaWQgKl9fY29va2llKTsKCgoKCnR5cGVkZWYg
X19pb19yZWFkX2ZuIGNvb2tpZV9yZWFkX2Z1bmN0aW9uX3Q7CnR5cGVkZWYgX19pb193cml0ZV9m
biBjb29raWVfd3JpdGVfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX3NlZWtfZm4gY29va2llX3Nl
ZWtfZnVuY3Rpb25fdDsKdHlwZWRlZiBfX2lvX2Nsb3NlX2ZuIGNvb2tpZV9jbG9zZV9mdW5jdGlv
bl90OwoKCnR5cGVkZWYgc3RydWN0CnsKICBfX2lvX3JlYWRfZm4gKnJlYWQ7CiAgX19pb193cml0
ZV9mbiAqd3JpdGU7CiAgX19pb19zZWVrX2ZuICpzZWVrOwogIF9faW9fY2xvc2VfZm4gKmNsb3Nl
Owp9IF9JT19jb29raWVfaW9fZnVuY3Rpb25zX3Q7CnR5cGVkZWYgX0lPX2Nvb2tpZV9pb19mdW5j
dGlvbnNfdCBjb29raWVfaW9fZnVuY3Rpb25zX3Q7CgpzdHJ1Y3QgX0lPX2Nvb2tpZV9maWxlOwoK
CmV4dGVybiB2b2lkIF9JT19jb29raWVfaW5pdCAoc3RydWN0IF9JT19jb29raWVfZmlsZSAqX19j
ZmlsZSwgaW50IF9fcmVhZF93cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
ICpfX2Nvb2tpZSwgX0lPX2Nvb2tpZV9pb19mdW5jdGlvbnNfdCBfX2Zucyk7CgoKCgpleHRlcm4g
IkMiIHsKCgpleHRlcm4gaW50IF9fdW5kZXJmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0
ZXJuIGludCBfX3VmbG93IChfSU9fRklMRSAqKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfX292ZXJm
bG93IChfSU9fRklMRSAqLCBpbnQpIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd3VuZGVyZmxv
dyAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB3aW50X3QgX193dWZsb3cgKF9JT19GSUxF
ICopIHRocm93ICgpOwpleHRlcm4gd2ludF90IF9fd292ZXJmbG93IChfSU9fRklMRSAqLCB3aW50
X3QpIHRocm93ICgpOwoKI2RlZmluZSBfSU9fZ2V0Y191bmxvY2tlZChfZnApICgoX2ZwKS0+X0lP
X3JlYWRfcHRyID49IChfZnApLT5fSU9fcmVhZF9lbmQgPyBfX3VmbG93IChfZnApIDogKih1bnNp
Z25lZCBjaGFyICopIChfZnApLT5fSU9fcmVhZF9wdHIrKykKCgojZGVmaW5lIF9JT19wZWVrY191
bmxvY2tlZChfZnApICgoX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfZnApLT5fSU9fcmVhZF9lbmQg
JiYgX191bmRlcmZsb3cgKF9mcCkgPT0gRU9GID8gRU9GIDogKih1bnNpZ25lZCBjaGFyICopIChf
ZnApLT5fSU9fcmVhZF9wdHIpCgoKCiNkZWZpbmUgX0lPX3B1dGNfdW5sb2NrZWQoX2NoLCBfZnAp
ICgoKF9mcCktPl9JT193cml0ZV9wdHIgPj0gKF9mcCktPl9JT193cml0ZV9lbmQpID8gX19vdmVy
ZmxvdyAoX2ZwLCAodW5zaWduZWQgY2hhcikgKF9jaCkpIDogKHVuc2lnbmVkIGNoYXIpICgqKF9m
cCktPl9JT193cml0ZV9wdHIrKyA9IChfY2gpKSkKCgoKCiNkZWZpbmUgX0lPX2dldHdjX3VubG9j
a2VkKF9mcCkgKChfZnApLT5fd2lkZV9kYXRhLT5fSU9fcmVhZF9wdHIgPj0gKF9mcCktPl93aWRl
X2RhdGEtPl9JT19yZWFkX2VuZCA/IF9fd3VmbG93IChfZnApIDogKF9JT193aW50X3QpICooX2Zw
KS0+X3dpZGVfZGF0YS0+X0lPX3JlYWRfcHRyKyspCgoKI2RlZmluZSBfSU9fcHV0d2NfdW5sb2Nr
ZWQoX3djaCwgX2ZwKSAoKF9mcCktPl93aWRlX2RhdGEtPl9JT193cml0ZV9wdHIgPj0gKF9mcCkt
Pl93aWRlX2RhdGEtPl9JT193cml0ZV9lbmQgPyBfX3dvdmVyZmxvdyAoX2ZwLCBfd2NoKSA6IChf
SU9fd2ludF90KSAoKihfZnApLT5fd2lkZV9kYXRhLT5fSU9fd3JpdGVfcHRyKysgPSAoX3djaCkp
KQoKCgoKI2RlZmluZSBfSU9fZmVvZl91bmxvY2tlZChfX2ZwKSAoKChfX2ZwKS0+X2ZsYWdzICYg
X0lPX0VPRl9TRUVOKSAhPSAwKQojZGVmaW5lIF9JT19mZXJyb3JfdW5sb2NrZWQoX19mcCkgKCgo
X19mcCktPl9mbGFncyAmIF9JT19FUlJfU0VFTikgIT0gMCkKCmV4dGVybiBpbnQgX0lPX2dldGMg
KF9JT19GSUxFICpfX2ZwKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBfSU9fcHV0YyAoaW50IF9fYywg
X0lPX0ZJTEUgKl9fZnApIHRocm93ICgpOwpleHRlcm4gaW50IF9JT19mZW9mIChfSU9fRklMRSAq
X19mcCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2ZlcnJvciAoX0lPX0ZJTEUgKl9fZnApIHRo
cm93ICgpOwoKZXh0ZXJuIGludCBfSU9fcGVla2NfbG9ja2VkIChfSU9fRklMRSAqX19mcCkgdGhy
b3cgKCk7CgoKI2RlZmluZSBfSU9fUEVORElOR19PVVRQVVRfQ09VTlQoX2ZwKSAoKF9mcCktPl9J
T193cml0ZV9wdHIgLSAoX2ZwKS0+X0lPX3dyaXRlX2Jhc2UpCgoKZXh0ZXJuIHZvaWQgX0lPX2Zs
b2NrZmlsZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiB2b2lkIF9JT19mdW5sb2NrZmls
ZSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7CmV4dGVybiBpbnQgX0lPX2Z0cnlsb2NrZmlsZSAoX0lP
X0ZJTEUgKikgdGhyb3cgKCk7CiMgNDQ2ICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwojZGVmaW5l
IF9JT19wZWVrYyhfZnApIF9JT19wZWVrY191bmxvY2tlZCAoX2ZwKQojZGVmaW5lIF9JT19mbG9j
a2ZpbGUoX2ZwKQojZGVmaW5lIF9JT19mdW5sb2NrZmlsZShfZnApCiNkZWZpbmUgX0lPX2Z0cnls
b2NrZmlsZShfZnApCiNkZWZpbmUgX0lPX2NsZWFudXBfcmVnaW9uX3N0YXJ0KF9mY3QsIF9mcCkK
I2RlZmluZSBfSU9fY2xlYW51cF9yZWdpb25fZW5kKF9Eb2l0KQoKCmV4dGVybiBpbnQgX0lPX3Zm
c2NhbmYgKF9JT19GSUxFICogX19yZXN0cmljdCwgY29uc3QgY2hhciAqIF9fcmVzdHJpY3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgIF9fZ251Y192YV9saXN0LCBpbnQgKl9fcmVzdHJpY3QpIHRo
cm93ICgpOwpleHRlcm4gaW50IF9JT192ZnByaW50ZiAoX0lPX0ZJTEUgKl9fcmVzdHJpY3QsIGNv
bnN0IGNoYXIgKl9fcmVzdHJpY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFf
bGlzdCkgdGhyb3cgKCk7CmV4dGVybiBfX3NzaXplX3QgX0lPX3BhZG4gKF9JT19GSUxFICosIGlu
dCwgX19zc2l6ZV90KSB0aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBfSU9fc2dldG4gKF9JT19GSUxF
ICosIHZvaWQgKiwgc2l6ZV90KSB0aHJvdyAoKTsKCmV4dGVybiBfX29mZjY0X3QgX0lPX3NlZWtv
ZmYgKF9JT19GSUxFICosIF9fb2ZmNjRfdCwgaW50LCBpbnQpIHRocm93ICgpOwpleHRlcm4gX19v
ZmY2NF90IF9JT19zZWVrcG9zIChfSU9fRklMRSAqLCBfX29mZjY0X3QsIGludCkgdGhyb3cgKCk7
CgpleHRlcm4gdm9pZCBfSU9fZnJlZV9iYWNrdXBfYXJlYSAoX0lPX0ZJTEUgKikgdGhyb3cgKCk7
CiMgNTEwICIvdXNyL2luY2x1ZGUvbGliaW8uaCIgMwp9CiMgNjUgIi91c3IvaW5jbHVkZS9zdGRp
by5oIiAyIDMKCgoKCnR5cGVkZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKI2RlZmluZSBfVkFf
TElTVF9ERUZJTkVECiMgNzkgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCnR5cGVkZWYgX0dfZnBv
c190IGZwb3NfdDsKCgoKCnR5cGVkZWYgX0dfZnBvczY0X3QgZnBvczY0X3Q7CgoKCiNkZWZpbmUg
X0lPRkJGIDAKI2RlZmluZSBfSU9MQkYgMQojZGVmaW5lIF9JT05CRiAyCgoKCgojZGVmaW5lIEJV
RlNJWiBfSU9fQlVGU0laCiMgMTA4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwojZGVmaW5lIFNF
RUtfU0VUIDAKI2RlZmluZSBTRUVLX0NVUiAxCiNkZWZpbmUgU0VFS19FTkQgMgoKCgoKI2RlZmlu
ZSBQX3RtcGRpciAiL3RtcCIKIyAxMjggIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCiMgMSAiL3Vz
ci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9z
dGRpb19saW0uaCIgMwojZGVmaW5lIExfdG1wbmFtIDIwCiNkZWZpbmUgVE1QX01BWCAyMzgzMjgK
I2RlZmluZSBGSUxFTkFNRV9NQVggNDA5NQoKCiNkZWZpbmUgTF9jdGVybWlkIDkKI2RlZmluZSBM
X2N1c2VyaWQgOQoKCgoKCiNkZWZpbmUgRk9QRU5fTUFYIDE2CiMgMTI5ICIvdXNyL2luY2x1ZGUv
c3RkaW8uaCIgMiAzCgoKCmV4dGVybiBGSUxFICpzdGRpbjsKZXh0ZXJuIEZJTEUgKnN0ZG91dDsK
ZXh0ZXJuIEZJTEUgKnN0ZGVycjsKCgojZGVmaW5lIHN0ZGluIHN0ZGluCiNkZWZpbmUgc3Rkb3V0
IHN0ZG91dAojZGVmaW5lIHN0ZGVyciBzdGRlcnIKCgoKZXh0ZXJuIGludCByZW1vdmUgKF9fY29u
c3QgY2hhciAqX19maWxlbmFtZSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IHJlbmFtZSAoX19jb25z
dCBjaGFyICpfX29sZCwgX19jb25zdCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgpleHRlcm4g
RklMRSAqdG1wZmlsZSAodm9pZCkgdGhyb3cgKCk7CiMgMTU5ICIvdXNyL2luY2x1ZGUvc3RkaW8u
aCIgMwpleHRlcm4gRklMRSAqdG1wZmlsZTY0ICh2b2lkKSB0aHJvdyAoKTsKCgpleHRlcm4gY2hh
ciAqdG1wbmFtIChjaGFyICpfX3MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnRtcG5hbV9y
IChjaGFyICpfX3MpIHRocm93ICgpOwojIDE3OSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0
ZXJuIGNoYXIgKnRlbXBuYW0gKF9fY29uc3QgY2hhciAqX19kaXIsIF9fY29uc3QgY2hhciAqX19w
ZngpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVy
biBpbnQgZmNsb3NlIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZmbHVz
aCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZmbHVzaF91bmxvY2tl
ZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBmY2xvc2VhbGwgKHZv
aWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBGSUxFICpmb3BlbiAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fbW9kZXMpIHRocm93ICgpOwoKZXh0ZXJuIEZJTEUgKmZyZW9wZW4gKF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMsCiAgICAgICAgICAgICAgICAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKIyAyMjMgIi91c3IvaW5jbHVkZS9zdGRpby5o
IiAzCmV4dGVybiBGSUxFICpmb3BlbjY0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19maWxl
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21v
ZGVzKSB0aHJvdyAoKTsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX21vZGVzLAogICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry
aWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBGSUxFICpmZG9wZW4gKGludCBfX2Zk
LCBfX2NvbnN0IGNoYXIgKl9fbW9kZXMpIHRocm93ICgpOwoKCgoKCmV4dGVybiBGSUxFICpmb3Bl
bmNvb2tpZSAodm9pZCAqX19yZXN0cmljdCBfX21hZ2ljX2Nvb2tpZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2RlcywKICAgICAgICAgICAg
ICAgICAgICAgICAgICBfSU9fY29va2llX2lvX2Z1bmN0aW9uc190IF9faW9fZnVuY3MpIHRocm93
ICgpOwoKCmV4dGVybiBGSUxFICpmbWVtb3BlbiAodm9pZCAqX19zLCBzaXplX3QgX19sZW4sIF9f
Y29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKCgpleHRlcm4gRklMRSAqb3Blbl9tZW1z
dHJlYW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fYnVmbG9jLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX3NpemVsb2MpIHRocm93ICgpOwoKCgoKCmV4dGVy
biB2b2lkIHNldGJ1ZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmlj
dCBfX2J1ZikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc2V0dmJ1ZiAoRklMRSAqX19yZXN0cmlj
dCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAgICAgICAgICAgICBp
bnQgX19tb2Rlcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gdm9pZCBzZXRidWZm
ZXIgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZv
aWQgc2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBm
cHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAgICAgICAgICAgICAgIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAoKTsKCmV4dGVybiBp
bnQgcHJpbnRmIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cg
KCk7CgpleHRlcm4gaW50IHNwcmludGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICAgICAg
ICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJvdyAo
KTsKCgpleHRlcm4gaW50IHZmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBj
aGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFf
bGlzdCBfX2FyZykgdGhyb3cgKCk7CgpleHRlcm4gaW50IHZwcmludGYgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCk7
CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICBfX2dudWNfdmFfbGlz
dCBfX2FyZykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgc25wcmludGYgKGNoYXIgKl9fcmVzdHJp
Y3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hh
ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g
KChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCA0KSkpOwoKZXh0ZXJuIGludCB2c25wcmludGYg
KGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhsZW4sCiAgICAgICAgICAgICAgICAg
ICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9f
YXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9f
LCAzLCAwKSkpOwoKCgoKCmV4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBf
X3B0ciwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZiwKICAgICAgICAgICAgICAgICAgICAg
IF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIg
KipfX3Jlc3RyaWN0IF9fcHRyLAogICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zv
cm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gaW50IGFzcHJpbnRmIChjaGFyICoq
X19yZXN0cmljdCBfX3B0ciwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKZXh0ZXJuIGludCB2ZHByaW50ZiAoaW50IF9fZmQs
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwKICAgICAgICAgICAgICAgICAgICAgX19n
bnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0
X18gKF9fcHJpbnRmX18sIDIsIDApKSk7CmV4dGVybiBpbnQgZHByaW50ZiAoaW50IF9fZmQsIF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGludCBm
c2NhbmYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sCiAgICAgICAgICAgICAgICAgICBfX2Nv
bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CgpleHRlcm4gaW50
IHNjYW5mIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7
CgpleHRlcm4gaW50IHNzY2FuZiAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAg
ICAgICAgICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKSB0aHJv
dyAoKTsKCgoKZXh0ZXJuIGludCB2ZnNjYW5mIChGSUxFICpfX3Jlc3RyaWN0IF9fcywgX19jb25z
dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgIF9fZ251Y192
YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChf
X3NjYW5mX18sIDIsIDApKSk7CgoKZXh0ZXJuIGludCB2c2NhbmYgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2Zvcm1hdCwgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc2NhbmZfXywgMSwgMCkpKTsKCgpleHRlcm4gaW50
IHZzc2NhbmYgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAg
ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2Fy
ZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAy
LCAwKSkpOwoKCgoKZXh0ZXJuIGludCBmZ2V0YyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpl
eHRlcm4gaW50IGdldGMgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGdl
dGNoYXIgKHZvaWQpIHRocm93ICgpOwoKCgojZGVmaW5lIGdldGMoX2ZwKSBfSU9fZ2V0YyAoX2Zw
KQoKCgpleHRlcm4gaW50IGdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
ZXh0ZXJuIGludCBnZXRjaGFyX3VubG9ja2VkICh2b2lkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgZmdldGNfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBp
bnQgZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBw
dXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdXRj
aGFyIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKI2RlZmluZSBwdXRjKF9jaCwgX2ZwKSBfSU9fcHV0
YyAoX2NoLCBfZnApCgoKCmV4dGVybiBpbnQgZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUg
Kl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgcHV0Y191bmxvY2tlZCAoaW50IF9f
YywgRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRlcm4gaW50IHB1dGNoYXJfdW5sb2NrZWQg
KGludCBfX2MpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAqX19zdHJlYW0p
IHRocm93ICgpOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0pIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50
IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJu
IGNoYXIgKmZnZXRzX3VubG9ja2VkIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50IF9fbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIHRocm93ICgpOwojIDQyNyAi
L3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMKZXh0ZXJuIF9fc3NpemVfdCBfX2dldGRlbGltIChjaGFy
ICoqX19yZXN0cmljdCBfX2xpbmVwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgKl9fcmVzdHJpY3QgX19uLCBpbnQgX19kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJu
IF9fc3NpemVfdCBnZXRkZWxpbSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGlt
aXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3Ry
ZWFtKSB0aHJvdyAoKTsKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIgKipfX3Jlc3Ry
aWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqX19yZXN0
cmljdCBfX24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9f
c3RyZWFtKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgZnB1dHMgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3MsIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICAgdGhyb3cgKCk7CgoK
CmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRo
cm93ICgpOwoKCgpleHRlcm4gaW50IHB1dHMgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIGludCB1bmdldGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsK
CgoKZXh0ZXJuIHNpemVfdCBmcmVhZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9f
c2l6ZSwKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBf
X3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gc2l6ZV90IGZ3cml0ZSAoX19jb25zdCB2b2lkICpf
X3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAogICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3MpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90
IGZyZWFkX3VubG9ja2VkICh2b2lkICpfX3Jlc3RyaWN0IF9fcHRyLCBzaXplX3QgX19zaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0
IF9fc3RyZWFtKSB0aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBmd3JpdGVfdW5sb2NrZWQgKF9fY29u
c3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIHRo
cm93ICgpOwoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxvbmcgaW50IF9f
b2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxsIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gdm9pZCByZXdpbmQgKEZJTEUgKl9fc3RyZWFt
KSB0aHJvdyAoKTsKIyA0OTAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzCmV4dGVybiBpbnQgZnNl
ZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKSB0aHJvdyAo
KTsKCmV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpl
eHRlcm4gaW50IGZnZXRwb3MgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGZwb3NfdCAqX19y
ZXN0cmljdCBfX3BvcykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBpbnQgZnNldHBvcyAoRklMRSAq
X19zdHJlYW0sIF9fY29uc3QgZnBvc190ICpfX3BvcykgdGhyb3cgKCk7CiMgNTI0ICIvdXNyL2lu
Y2x1ZGUvc3RkaW8uaCIgMwpleHRlcm4gaW50IGZzZWVrbzY0IChGSUxFICpfX3N0cmVhbSwgX19v
ZmY2NF90IF9fb2ZmLCBpbnQgX193aGVuY2UpIHRocm93ICgpOwpleHRlcm4gX19vZmY2NF90IGZ0
ZWxsbzY0IChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CmV4dGVybiBpbnQgZmdldHBvczY0IChG
SUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3BvcykKICAg
ICB0aHJvdyAoKTsKZXh0ZXJuIGludCBmc2V0cG9zNjQgKEZJTEUgKl9fc3RyZWFtLCBfX2NvbnN0
IGZwb3M2NF90ICpfX3BvcykgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNsZWFyZXJyIChGSUxF
ICpfX3N0cmVhbSkgdGhyb3cgKCk7CgpleHRlcm4gaW50IGZlb2YgKEZJTEUgKl9fc3RyZWFtKSB0
aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7CgoK
CmV4dGVybiB2b2lkIGNsZWFyZXJyX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCk7
CmV4dGVybiBpbnQgZmVvZl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpleHRl
cm4gaW50IGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKZXh0
ZXJuIHZvaWQgcGVycm9yIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCk7CgoKCgpleHRlcm4g
aW50IHN5c19uZXJyOwpleHRlcm4gX19jb25zdCBjaGFyICpfX2NvbnN0IHN5c19lcnJsaXN0W107
CgoKZXh0ZXJuIGludCBfc3lzX25lcnI7CmV4dGVybiBfX2NvbnN0IGNoYXIgKl9fY29uc3QgX3N5
c19lcnJsaXN0W107CgoKCgoKZXh0ZXJuIGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSB0aHJv
dyAoKTsKCgoKCmV4dGVybiBpbnQgZmlsZW5vX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhy
b3cgKCk7CgoKCgoKCmV4dGVybiBGSUxFICpwb3BlbiAoX19jb25zdCBjaGFyICpfX2NvbW1hbmQs
IF9fY29uc3QgY2hhciAqX19tb2RlcykgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwY2xvc2UgKEZJ
TEUgKl9fc3RyZWFtKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3Rlcm1pZCAoY2hhciAq
X19zKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gY2hhciAqY3VzZXJpZCAoY2hhciAqX19zKSB0aHJv
dyAoKTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFja19wcmludGYgKHN0
cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwpl
eHRlcm4gaW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19v
YnN0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgX19nbnVjX3ZhX2xpc3Qg
X19hcmdzKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2NrZmlsZSAoRklMRSAqX19z
dHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2NrZmlsZSAoRklMRSAqX19zdHJl
YW0pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIGZ1bmxvY2tmaWxlIChGSUxFICpfX3N0cmVhbSkg
dGhyb3cgKCk7CiMgNjM0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMwp9CiMgMjQgIk1lbW9yeUFy
cmF5LmgiIDIKIyAxICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDEgMwojIDI0ICIvdXNyL2luY2x1
ZGUvc3RyaW5nLmgiIDMKI2RlZmluZSBfU1RSSU5HX0ggMQoKIyAxICIvdXNyL2luY2x1ZGUvZmVh
dHVyZXMuaCIgMSAzCiMgMjcgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMiAzCgpleHRlcm4gIkMi
IHsKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QKI2RlZmluZSBfX25lZWRfTlVMTAojIDEgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAz
CiMgMjE4ICIvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUv
c3RkZGVmLmgiIDMKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAzNTUgIi91c3IvbGliL2djYy1saWIv
aTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgTlVMTAoK
I2RlZmluZSBOVUxMIF9fbnVsbAojIDM2NiAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4
LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBfX25lZWRfTlVMTAojIDM0ICIv
dXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMwoKCgpleHRlcm4gdm9pZCAqbWVtY3B5ICh2b2lkICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCB2b2lkICpfX3Jl
c3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gdm9pZCAqbWVtbW92
ZSAodm9pZCAqX19kZXN0LCBfX2NvbnN0IHZvaWQgKl9fc3JjLCBzaXplX3QgX19uKQogICAgIHRo
cm93ICgpOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVz
dCwgX19jb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAg
aW50IF9fYywgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkICptZW1z
ZXQgKHZvaWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGlu
dCBtZW1jbXAgKF9fY29uc3Qgdm9pZCAqX19zMSwgX19jb25zdCB2b2lkICpfX3MyLCBzaXplX3Qg
X19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiB2
b2lkICptZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiB2b2lkICpy
YXdtZW1jaHIgKF9fY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0
ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gdm9pZCAqbWVtcmNociAoX19jb25zdCB2b2lkICpf
X3MsIGludCBfX2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf
X3B1cmVfXykpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVy
biBjaGFyICpzdHJuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAg
ICAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cg
KCk7CgoKZXh0ZXJuIGNoYXIgKnN0cmNhdCAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBjaGFyICpz
dHJuY2F0IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3JjLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0
ZXJuIGludCBzdHJjbXAgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBzdHJu
Y21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikK
ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0
cmNvbGwgKF9fY29uc3QgY2hhciAqX19zMSwgX19jb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBzdHJ4ZnJtIChj
aGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNo
YXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3hsb2NhbGUuaCIgMSAzCiMgMjIgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgiIDMK
I2RlZmluZSBfWExPQ0FMRV9IIDEKCgoKCgp0eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QK
ewoKICBzdHJ1Y3QgbG9jYWxlX2RhdGEgKl9fbG9jYWxlc1sxM107CgoKICBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBpbnQgKl9fY3R5cGVfYjsKICBjb25zdCBpbnQgKl9fY3R5cGVfdG9sb3dlcjsKICBj
b25zdCBpbnQgKl9fY3R5cGVfdG91cHBlcjsKfSAqX19sb2NhbGVfdDsKIyAxMDkgIi91c3IvaW5j
bHVkZS9zdHJpbmcuaCIgMiAzCgoKZXh0ZXJuIGludCBfX3N0cmNvbGxfbCAoX19jb25zdCBjaGFy
ICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsIF9fbG9jYWxlX3QgX19sKQogICAgIHRocm93ICgp
IF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIHNpemVfdCBfX3N0cnhmcm1fbCAo
Y2hhciAqX19kZXN0LCBfX2NvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBfX2xvY2FsZV90IF9fbCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hh
ciAqc3RyZHVwIChfX2NvbnN0IGNoYXIgKl9fcykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f
bWFsbG9jX18pKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKnN0cm5kdXAgKF9fY29uc3QgY2hhciAqX19z
dHJpbmcsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9j
X18pKTsKCgoKCiNkZWZpbmUgc3RyZHVwYShzKSAoX19leHRlbnNpb25fXyAoeyBfX2NvbnN0IGNo
YXIgKl9fb2xkID0gKHMpOyBzaXplX3QgX19sZW4gPSBzdHJsZW4gKF9fb2xkKSArIDE7IGNoYXIg
Kl9fbmV3ID0gX19idWlsdGluX2FsbG9jYSAoX19sZW4pOyAoY2hhciAqKSBtZW1jcHkgKF9fbmV3
LCBfX29sZCwgX19sZW4pOyB9KSkKIyAxNDMgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMwojZGVm
aW5lIHN0cm5kdXBhKHMsIG4pIChfX2V4dGVuc2lvbl9fICh7IF9fY29uc3QgY2hhciAqX19vbGQg
PSAocyk7IHNpemVfdCBfX2xlbiA9IHN0cm5sZW4gKF9fb2xkLCAobikpOyBjaGFyICpfX25ldyA9
IF9fYnVpbHRpbl9hbGxvY2EgKF9fbGVuICsgMSk7IF9fbmV3W19fbGVuXSA9ICdcMCc7IChjaGFy
ICopIG1lbWNweSAoX19uZXcsIF9fb2xkLCBfX2xlbik7IH0pKQojIDE1NSAiL3Vzci9pbmNsdWRl
L3N0cmluZy5oIiAzCmV4dGVybiBjaGFyICpzdHJjaHIgKF9fY29uc3QgY2hhciAqX19zLCBpbnQg
X19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpz
dHJyY2hyIChfX2NvbnN0IGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fcHVyZV9fKSk7CgoKCgpleHRlcm4gY2hhciAqc3RyY2hybnVsIChfX2NvbnN0IGNoYXIg
Kl9fcywgaW50IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgpl
eHRlcm4gc2l6ZV90IHN0cmNzcG4gKF9fY29uc3QgY2hhciAqX19zLCBfX2NvbnN0IGNoYXIgKl9f
cmVqZWN0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVy
biBzaXplX3Qgc3Ryc3BuIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2Vw
dCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFy
ICpzdHJwYnJrIChfX2NvbnN0IGNoYXIgKl9fcywgX19jb25zdCBjaGFyICpfX2FjY2VwdCkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCmV4dGVybiBjaGFyICpzdHJz
dHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRsZSkKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNoYXIgKnN0
cmNhc2VzdHIgKF9fY29uc3QgY2hhciAqX19oYXlzdGFjaywgX19jb25zdCBjaGFyICpfX25lZWRs
ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGNo
YXIgKnN0cnRvayAoY2hhciAqX19yZXN0cmljdCBfX3MsIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2RlbGltKQogICAgIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zdHJ0b2tfciAoY2hh
ciAqX19yZXN0cmljdCBfX3MsCiAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIg
Kl9fcmVzdHJpY3QgX19kZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fc2F2ZV9wdHIpIHRocm93ICgpOwoKZXh0ZXJuIGNoYXIgKnN0cnRva19yIChjaGFy
ICpfX3Jlc3RyaWN0IF9fcywgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAg
ICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0cikgdGhyb3cgKCk7
CgoKCgoKCmV4dGVybiB2b2lkICptZW1tZW0gKF9fY29uc3Qgdm9pZCAqX19oYXlzdGFjaywgc2l6
ZV90IF9faGF5c3RhY2tsZW4sCiAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19u
ZWVkbGUsIHNpemVfdCBfX25lZWRsZWxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgoKZXh0ZXJuIHZvaWQgKl9fbWVtcGNweSAodm9pZCAqX19yZXN0cmljdCBf
X2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBf
X3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CmV4dGVybiB2b2lkICptZW1wY3B5ICh2b2lkICpf
X3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qgdm9pZCAqX19y
ZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gc2l6ZV90IHN0
cmxlbiAoX19jb25zdCBjaGFyICpfX3MpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVf
XykpOwoKCgoKZXh0ZXJuIHNpemVfdCBzdHJubGVuIChfX2NvbnN0IGNoYXIgKl9fc3RyaW5nLCBz
aXplX3QgX19tYXhsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7
CgoKCgpleHRlcm4gY2hhciAqc3RyZXJyb3IgKGludCBfX2Vycm51bSkgdGhyb3cgKCk7CgoKCmV4
dGVybiBjaGFyICpzdHJlcnJvcl9yIChpbnQgX19lcnJudW0sIGNoYXIgKl9fYnVmLCBzaXplX3Qg
X19idWZsZW4pIHRocm93ICgpOwoKCgoKZXh0ZXJuIHZvaWQgX19iemVybyAodm9pZCAqX19zLCBz
aXplX3QgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHZvaWQgYmNvcHkgKF9fY29uc3Qgdm9pZCAq
X19zcmMsIHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQg
Ynplcm8gKHZvaWQgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBiY21w
IChfX2NvbnN0IHZvaWQgKl9fczEsIF9fY29uc3Qgdm9pZCAqX19zMiwgc2l6ZV90IF9fbikKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqaW5k
ZXggKF9fY29uc3QgY2hhciAqX19zLCBpbnQgX19jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqcmluZGV4IChfX2NvbnN0IGNoYXIgKl9fcywgaW50
IF9fYykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCmV4dGVybiBpbnQg
ZmZzIChpbnQgX19pKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoY29uc3QpKTsKCgoKCmV4dGVy
biBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoY29uc3Qp
KTsKCl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGludCBmZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQog
ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChjb25zdCkpOwoKCgoKZXh0ZXJuIGludCBzdHJj
YXNlY21wIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJv
dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHN0cm5jYXNlY21w
IChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwgc2l6ZV90IF9fbikKICAg
ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gaW50IF9f
c3RyY2FzZWNtcF9sIChfX2NvbnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgpleHRlcm4gaW50IF9fc3RybmNhc2VjbXBfbCAoX19jb25z
dCBjaGFyICpfX3MxLCBfX2NvbnN0IGNoYXIgKl9fczIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgX19uLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmli
dXRlX18gKChfX3B1cmVfXykpOwoKCgoKCmV4dGVybiBjaGFyICpzdHJzZXAgKGNoYXIgKipfX3Jl
c3RyaWN0IF9fc3RyaW5ncCwKICAgICAgICAgICAgICAgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fZGVsaW0pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzdHJ2ZXJzY21wIChfX2Nv
bnN0IGNoYXIgKl9fczEsIF9fY29uc3QgY2hhciAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJp
YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gY2hhciAqc3Ryc2lnbmFsIChpbnQgX19zaWcp
IHRocm93ICgpOwoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rl
c3QsIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKZXh0ZXJu
IGNoYXIgKnN0cGNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKl9fc3RwbmNweSAo
Y2hhciAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIF9fY29uc3Qg
Y2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CmV4dGVybiBjaGFy
ICpzdHBuY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoK
ZXh0ZXJuIGNoYXIgKnN0cmZyeSAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpOwoKCmV4dGVybiB2
b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgoKCgpleHRl
cm4gY2hhciAqYmFzZW5hbWUgKF9fY29uc3QgY2hhciAqX19maWxlbmFtZSkgdGhyb3cgKCk7CiMg
MzYzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMKfQojIDI1ICJNZW1vcnlBcnJheS5oIiAyCiMg
MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMwoKCiNkZWZpbmUgX19uZWVkX3NpemVfdAoKI2RlZmluZSBfX25lZWRfd2No
YXJfdAojZGVmaW5lIF9fbmVlZF9OVUxMCgojIDEgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1s
aW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMSAzCiMgMjE4ICIvdXNyL2xpYi9nY2Mt
bGliL2k2ODYtcGMtbGludXgtZ251LzMuMC4xL2luY2x1ZGUvc3RkZGVmLmgiIDMKI3VuZGVmIF9f
bmVlZF9zaXplX3QKIyAzMDIgIi91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4w
LjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3djaGFyX3QKIyAzNTUgIi91c3Iv
bGliL2djYy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwoj
dW5kZWYgTlVMTAoKI2RlZmluZSBOVUxMIF9fbnVsbAojIDM2NiAiL3Vzci9saWIvZ2NjLWxpYi9p
Njg2LXBjLWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAzCiN1bmRlZiBfX25lZWRf
TlVMTAojIDM0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKI2Rl
ZmluZSBfU1RETElCX0ggMQoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRmbGFncy5oIiAx
IDMKIyAyNiAiL3Vzci9pbmNsdWRlL2JpdHMvd2FpdGZsYWdzLmgiIDMKI2RlZmluZSBXTk9IQU5H
IDEKI2RlZmluZSBXVU5UUkFDRUQgMgoKI2RlZmluZSBfX1dBTEwgMHg0MDAwMDAwMAojZGVmaW5l
IF9fV0NMT05FIDB4ODAwMDAwMDAKIyA0MyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0c3RhdHVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUv
Yml0cy93YWl0c3RhdHVzLmgiIDMKI2RlZmluZSBfX1dFWElUU1RBVFVTKHN0YXR1cykgKCgoc3Rh
dHVzKSAmIDB4ZmYwMCkgPj4gOCkKCgojZGVmaW5lIF9fV1RFUk1TSUcoc3RhdHVzKSAoKHN0YXR1
cykgJiAweDdmKQoKCiNkZWZpbmUgX19XU1RPUFNJRyhzdGF0dXMpIF9fV0VYSVRTVEFUVVMoc3Rh
dHVzKQoKCiNkZWZpbmUgX19XSUZFWElURUQoc3RhdHVzKSAoX19XVEVSTVNJRyhzdGF0dXMpID09
IDApCgoKCiNkZWZpbmUgX19XSUZTSUdOQUxFRChzdGF0dXMpIChfX2V4dGVuc2lvbl9fICh7IGlu
dCBfX3N0YXR1cyA9IChzdGF0dXMpOyAhX19XSUZTVE9QUEVEKF9fc3RhdHVzKSAmJiAhX19XSUZF
WElURUQoX19zdGF0dXMpOyB9KSkKCgoKCgoKCiNkZWZpbmUgX19XSUZTVE9QUEVEKHN0YXR1cykg
KCgoc3RhdHVzKSAmIDB4ZmYpID09IDB4N2YpCgoKI2RlZmluZSBfX1dDT1JFRFVNUChzdGF0dXMp
ICgoc3RhdHVzKSAmIF9fV0NPUkVGTEFHKQoKCiNkZWZpbmUgX19XX0VYSVRDT0RFKHJldCwgc2ln
KSAoKHJldCkgPDwgOCB8IChzaWcpKQojZGVmaW5lIF9fV19TVE9QQ09ERShzaWcpICgoc2lnKSA8
PCA4IHwgMHg3ZikKI2RlZmluZSBfX1dDT1JFRkxBRyAweDgwCgoKCgojIDEgIi91c3IvaW5jbHVk
ZS9lbmRpYW4uaCIgMSAzCiMgMjAgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMwojZGVmaW5lIF9F
TkRJQU5fSCAxCgojIDEgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyMyAiL3Vzci9p
bmNsdWRlL2VuZGlhbi5oIiAyIDMKIyAzMiAiL3Vzci9pbmNsdWRlL2VuZGlhbi5oIiAzCiNkZWZp
bmUgX19MSVRUTEVfRU5ESUFOIDEyMzQKI2RlZmluZSBfX0JJR19FTkRJQU4gNDMyMQojZGVmaW5l
IF9fUERQX0VORElBTiAzNDEyCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9lbmRpYW4uaCIgMSAz
CgoKCgoKCiNkZWZpbmUgX19CWVRFX09SREVSIF9fTElUVExFX0VORElBTgojIDM4ICIvdXNyL2lu
Y2x1ZGUvZW5kaWFuLmgiIDIgMwoKCgoKI2RlZmluZSBfX0ZMT0FUX1dPUkRfT1JERVIgX19CWVRF
X09SREVSCgoKCiNkZWZpbmUgTElUVExFX0VORElBTiBfX0xJVFRMRV9FTkRJQU4KI2RlZmluZSBC
SUdfRU5ESUFOIF9fQklHX0VORElBTgojZGVmaW5lIFBEUF9FTkRJQU4gX19QRFBfRU5ESUFOCiNk
ZWZpbmUgQllURV9PUkRFUiBfX0JZVEVfT1JERVIKCgoKI2RlZmluZSBfX0xPTkdfTE9OR19QQUlS
KEhJLCBMTykgTE8sIEhJCiMgNjQgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMiAz
Cgp1bmlvbiB3YWl0CiAgewogICAgaW50IHdfc3RhdHVzOwogICAgc3RydWN0CiAgICAgIHsKCiAg
ICAgICAgdW5zaWduZWQgaW50IF9fd190ZXJtc2lnOjc7CiAgICAgICAgdW5zaWduZWQgaW50IF9f
d19jb3JlZHVtcDoxOwogICAgICAgIHVuc2lnbmVkIGludCBfX3dfcmV0Y29kZTo4OwogICAgICAg
IHVuc2lnbmVkIGludDoxNjsKCgoKCgoKCiAgICAgIH0gX193YWl0X3Rlcm1pbmF0ZWQ7CiAgICBz
dHJ1Y3QKICAgICAgewoKICAgICAgICB1bnNpZ25lZCBpbnQgX193X3N0b3B2YWw6ODsKICAgICAg
ICB1bnNpZ25lZCBpbnQgX193X3N0b3BzaWc6ODsKICAgICAgICB1bnNpZ25lZCBpbnQ6MTY7CgoK
CgoKCiAgICAgIH0gX193YWl0X3N0b3BwZWQ7CiAgfTsKCiNkZWZpbmUgd190ZXJtc2lnIF9fd2Fp
dF90ZXJtaW5hdGVkLl9fd190ZXJtc2lnCiNkZWZpbmUgd19jb3JlZHVtcCBfX3dhaXRfdGVybWlu
YXRlZC5fX3dfY29yZWR1bXAKI2RlZmluZSB3X3JldGNvZGUgX193YWl0X3Rlcm1pbmF0ZWQuX193
X3JldGNvZGUKI2RlZmluZSB3X3N0b3BzaWcgX193YWl0X3N0b3BwZWQuX193X3N0b3BzaWcKI2Rl
ZmluZSB3X3N0b3B2YWwgX193YWl0X3N0b3BwZWQuX193X3N0b3B2YWwKIyA0NCAiL3Vzci9pbmNs
dWRlL3N0ZGxpYi5oIiAyIDMKIyA1NSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCiNkZWZpbmUg
X19XQUlUX0lOVChzdGF0dXMpICgqKGludCAqKSAmKHN0YXR1cykpCiMgNjQgIi91c3IvaW5jbHVk
ZS9zdGRsaWIuaCIgMwojZGVmaW5lIF9fV0FJVF9TVEFUVVMgdm9pZCAqCiNkZWZpbmUgX19XQUlU
X1NUQVRVU19ERUZOIHZvaWQgKgojIDg1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKI2RlZmlu
ZSBXRVhJVFNUQVRVUyhzdGF0dXMpIF9fV0VYSVRTVEFUVVMoX19XQUlUX0lOVChzdGF0dXMpKQoj
ZGVmaW5lIFdURVJNU0lHKHN0YXR1cykgX19XVEVSTVNJRyhfX1dBSVRfSU5UKHN0YXR1cykpCiNk
ZWZpbmUgV1NUT1BTSUcoc3RhdHVzKSBfX1dTVE9QU0lHKF9fV0FJVF9JTlQoc3RhdHVzKSkKI2Rl
ZmluZSBXSUZFWElURUQoc3RhdHVzKSBfX1dJRkVYSVRFRChfX1dBSVRfSU5UKHN0YXR1cykpCiNk
ZWZpbmUgV0lGU0lHTkFMRUQoc3RhdHVzKSBfX1dJRlNJR05BTEVEKF9fV0FJVF9JTlQoc3RhdHVz
KSkKI2RlZmluZSBXSUZTVE9QUEVEKHN0YXR1cykgX19XSUZTVE9QUEVEKF9fV0FJVF9JTlQoc3Rh
dHVzKSkKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBpbnQgcXVvdDsKICAgIGludCByZW07CiAg
fSBkaXZfdDsKCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CiAgICBsb25nIGludCBxdW90OwogICAgbG9u
ZyBpbnQgcmVtOwogIH0gbGRpdl90OwojZGVmaW5lIF9fbGRpdl90X2RlZmluZWQgMQoKCgoKX19l
eHRlbnNpb25fXyB0eXBlZGVmIHN0cnVjdAogIHsKICAgIGxvbmcgbG9uZyBpbnQgcXVvdDsKICAg
IGxvbmcgbG9uZyBpbnQgcmVtOwogIH0gbGxkaXZfdDsKI2RlZmluZSBfX2xsZGl2X3RfZGVmaW5l
ZCAxCgoKCgojZGVmaW5lIFJBTkRfTUFYIDIxNDc0ODM2NDcKCgoKCiNkZWZpbmUgRVhJVF9GQUlM
VVJFIDEKI2RlZmluZSBFWElUX1NVQ0NFU1MgMAoKCgojZGVmaW5lIE1CX0NVUl9NQVggKF9fY3R5
cGVfZ2V0X21iX2N1cl9tYXggKCkpCmV4dGVybiBzaXplX3QgX19jdHlwZV9nZXRfbWJfY3VyX21h
eCAodm9pZCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgYXRvZiAoX19jb25zdCBjaGFyICpf
X25wdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKZXh0ZXJuIGludCBh
dG9pIChfX2NvbnN0IGNoYXIgKl9fbnB0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVy
ZV9fKSk7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoX19jb25zdCBjaGFyICpfX25wdHIpIHRocm93
ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBs
b25nIGxvbmcgaW50IGF0b2xsIChfX2NvbnN0IGNoYXIgKl9fbnB0cikKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QgKF9fY29u
c3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICBjaGFyICoq
X19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBzdHJ0b2YgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBzdHJ0
b2xkIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwoKCgpleHRlcm4g
bG9uZyBpbnQgc3RydG9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkg
dGhyb3cgKCk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
YXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpOwoKCgpf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvcSAoX19jb25zdCBjaGFyICpf
X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqX19y
ZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4
dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpOwoKCgoKCgpf
X2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IHN0cnRvbGwgKF9fY29uc3QgY2hhciAq
X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18K
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgc3RydG91bGwgKF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsKIyAy
MTEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwojIDEgIi91c3IvaW5jbHVkZS94bG9jYWxlLmgi
IDEgMwojIDIxMiAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMKCgoKZXh0ZXJuIGxvbmcgaW50
IF9fc3RydG9sX2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoK
ZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IF9fc3RydG91bF9sIChfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBfX2Jhc2UsIF9fbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKX19leHRlbnNpb25f
XwpleHRlcm4gbG9uZyBsb25nIGludCBfX3N0cnRvbGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jl
c3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1
bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fc3RydG91bGxfbCAoX19jb25zdCBjaGFyICpfX3Jlc3Ry
aWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgX19iYXNlLCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgp
OwoKZXh0ZXJuIGRvdWJsZSBfX3N0cnRvZF9sIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRy
LCBfX2xvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpOwoKZXh0ZXJuIGZsb2F0IF9fc3RydG9m
X2wgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgX19sb2NhbGVfdCBfX2xvYykgdGhyb3cg
KCk7CgpleHRlcm4gbG9uZyBkb3VibGUgX19zdHJ0b2xkX2wgKF9fY29uc3QgY2hhciAqX19yZXN0
cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19sb2NhbGVf
dCBfX2xvYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgX19zdHJ0b2RfaW50ZXJuYWwg
KF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0
aHJvdyAoKTsKZXh0ZXJuIGZsb2F0IF9fc3RydG9mX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9f
cmVzdHJpY3QgX19ucHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipf
X3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19ncm91cCkKICAgICB0aHJvdyAoKTsKZXh0ZXJuIGxv
bmcgZG91YmxlIF9fc3RydG9sZF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
bnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVz
dHJpY3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBfX2dyb3VwKSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGludCBfX3N0cnRvbF9pbnRlcm5hbCAo
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgX19iYXNlLCBpbnQgX19ncm91cCkgdGhyb3cgKCk7CiNkZWZp
bmUgX19zdHJ0b2xfaW50ZXJuYWxfZGVmaW5lZCAxCgoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50
IF9fc3RydG91bF9pbnRlcm5hbCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJp
Y3QgX19lbmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2Jhc2UsIGludCBfX2dyb3VwKSB0aHJvdyAoKTsKI2RlZmluZSBfX3N0cnRvdWxfaW50
ZXJuYWxfZGVmaW5lZCAxCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19z
dHJ0b2xsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k
cHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX2Jhc2Us
IGludCBfX2dyb3VwKSB0aHJvdyAoKTsKI2RlZmluZSBfX3N0cnRvbGxfaW50ZXJuYWxfZGVmaW5l
ZCAxCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3N0cnRv
dWxsX2ludGVybmFsIChfX2NvbnN0IGNoYXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19l
bmRwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBfX2Jhc2UsIGludCBfX2dyb3VwKQogICAgIHRocm93ICgpOwojZGVmaW5lIF9fc3RydG91
bGxfaW50ZXJuYWxfZGVmaW5lZCAxCiMgMzg1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMKZXh0
ZXJuIGNoYXIgKmw2NGEgKGxvbmcgaW50IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50
IGE2NGwgKF9fY29uc3QgY2hhciAqX19zKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJl
X18pKTsKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAzCiMgMjQgIi91c3IvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMwojZGVmaW5lIF9TWVNfVFlQRVNfSCAxCgojIDEgIi91c3IvaW5j
bHVkZS9mZWF0dXJlcy5oIiAxIDMKIyAyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMK
CmV4dGVybiAiQyIgewoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyAzMSAi
L3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsK
dHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBlZGVm
IF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYgX191X3F1
YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CgoKdHlwZWRlZiBfX2xvZmZf
dCBsb2ZmX3Q7CgoKCnR5cGVkZWYgX19pbm9fdCBpbm9fdDsKCgoKI2RlZmluZSBfX2lub190X2Rl
ZmluZWQKCgp0eXBlZGVmIF9faW5vNjRfdCBpbm82NF90OwojZGVmaW5lIF9faW5vNjRfdF9kZWZp
bmVkCgoKCnR5cGVkZWYgX19kZXZfdCBkZXZfdDsKI2RlZmluZSBfX2Rldl90X2RlZmluZWQKCgoK
dHlwZWRlZiBfX2dpZF90IGdpZF90OwojZGVmaW5lIF9fZ2lkX3RfZGVmaW5lZAoKCgp0eXBlZGVm
IF9fbW9kZV90IG1vZGVfdDsKI2RlZmluZSBfX21vZGVfdF9kZWZpbmVkCgoKCnR5cGVkZWYgX19u
bGlua190IG5saW5rX3Q7CiNkZWZpbmUgX19ubGlua190X2RlZmluZWQKCgoKdHlwZWRlZiBfX3Vp
ZF90IHVpZF90OwojZGVmaW5lIF9fdWlkX3RfZGVmaW5lZAoKCgoKdHlwZWRlZiBfX29mZl90IG9m
Zl90OwoKCgojZGVmaW5lIF9fb2ZmX3RfZGVmaW5lZAoKCnR5cGVkZWYgX19vZmY2NF90IG9mZjY0
X3Q7CiNkZWZpbmUgX19vZmY2NF90X2RlZmluZWQKCgoKdHlwZWRlZiBfX3BpZF90IHBpZF90Owoj
ZGVmaW5lIF9fcGlkX3RfZGVmaW5lZAoKCgp0eXBlZGVmIF9faWRfdCBpZF90OwojZGVmaW5lIF9f
aWRfdF9kZWZpbmVkCgoKCnR5cGVkZWYgX19zc2l6ZV90IHNzaXplX3Q7CiNkZWZpbmUgX19zc2l6
ZV90X2RlZmluZWQKCgoKdHlwZWRlZiBfX2RhZGRyX3QgZGFkZHJfdDsKdHlwZWRlZiBfX2NhZGRy
X3QgY2FkZHJfdDsKCgoKdHlwZWRlZiBfX2tleV90IGtleV90OwojZGVmaW5lIF9fa2V5X3RfZGVm
aW5lZAoKCgojZGVmaW5lIF9fbmVlZF9jbG9ja190CgojZGVmaW5lIF9fbmVlZF90aW1lX3QKI2Rl
ZmluZSBfX25lZWRfdGltZXJfdAojZGVmaW5lIF9fbmVlZF9jbG9ja2lkX3QKIyAxICIvdXNyL2lu
Y2x1ZGUvdGltZS5oIiAxIDMKIyA1NCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMwojZGVmaW5lIF9f
Y2xvY2tfdF9kZWZpbmVkIDEKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMg
NTcgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMwoKCnR5cGVkZWYgX19jbG9ja190IGNsb2NrX3Q7
CgoKI3VuZGVmIF9fbmVlZF9jbG9ja190CgoKI2RlZmluZSBfX3RpbWVfdF9kZWZpbmVkIDEKCiMg
MSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMSAzCiMgNjggIi91c3IvaW5jbHVkZS90aW1l
LmgiIDIgMwoKCnR5cGVkZWYgX190aW1lX3QgdGltZV90OwoKCiN1bmRlZiBfX25lZWRfdGltZV90
CgoKCiNkZWZpbmUgX19jbG9ja2lkX3RfZGVmaW5lZCAxCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz
L3R5cGVzLmgiIDEgMwojIDgwICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMKCgp0eXBlZGVmIF9f
Y2xvY2tpZF90IGNsb2NraWRfdDsKCgoKCgoKI2RlZmluZSBfX3RpbWVyX3RfZGVmaW5lZCAxCgoj
IDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDkyICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAyIDMKCgp0eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwoKCiN1bmRlZiBfX25lZWRfdGlt
ZXJfdAojIDEyNyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlwZWRlZiBfX3Vz
ZWNvbmRzX3QgdXNlY29uZHNfdDsKI2RlZmluZSBfX3VzZWNvbmRzX3RfZGVmaW5lZAoKCnR5cGVk
ZWYgX19zdXNlY29uZHNfdCBzdXNlY29uZHNfdDsKI2RlZmluZSBfX3N1c2Vjb25kc190X2RlZmlu
ZWQKCgoKI2RlZmluZSBfX25lZWRfc2l6ZV90CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBj
LWxpbnV4LWdudS8zLjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMTggIi91c3IvbGliL2dj
Yy1saWIvaTY4Ni1wYy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYg
X19uZWVkX3NpemVfdAojIDE0MSAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMKCgoKdHlw
ZWRlZiB1bnNpZ25lZCBsb25nIGludCB1bG9uZzsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQg
dXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50OwojIDE3NyAiL3Vzci9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzCiNkZWZpbmUgX19pbnROX3QoTiwgTU9ERSkgdHlwZWRlZiBpbnQgaW50ICMj
IE4gIyMgX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChNT0RFKSkpCgojZGVmaW5lIF9fdV9p
bnROX3QoTiwgTU9ERSkgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQgIyMgTiAjIyBfdCBfX2F0
dHJpYnV0ZV9fICgoX19tb2RlX18gKE1PREUpKSkKCgoKI2RlZmluZSBfX2ludDhfdF9kZWZpbmVk
CnR5cGVkZWYgaW50IGludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fUUlfXykpKTsK
dHlwZWRlZiBpbnQgaW50MTZfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fSElfXykpKTsK
dHlwZWRlZiBpbnQgaW50MzJfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fU0lfXykpKTsK
dHlwZWRlZiBpbnQgaW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsK
Cgp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDhfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18g
KF9fUUlfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdV9pbnQxNl90IF9fYXR0cmlidXRlX18g
KChfX21vZGVfXyAoX19ISV9fKSkpOwp0eXBlZGVmIHVuc2lnbmVkIGludCB1X2ludDMyX3QgX19h
dHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX1NJX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgaW50IHVf
aW50NjRfdCBfX2F0dHJpYnV0ZV9fICgoX19tb2RlX18gKF9fRElfXykpKTsKCnR5cGVkZWYgaW50
IHJlZ2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKCgoKCgoj
ZGVmaW5lIF9fQklUX1RZUEVTX0RFRklORURfXyAxCgoKCgojIDEgIi91c3IvaW5jbHVkZS9lbmRp
YW4uaCIgMSAzCiMgMjA3ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMwoKCiMgMSAiL3Vz
ci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzCiMgMjMgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
LmgiIDMKI2RlZmluZSBfU1lTX1NFTEVDVF9IIDEKCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz
LmgiIDEgMwojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKCgojIDEgIi91c3Iv
aW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMwojIDI5ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o
IiAyIDMKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAxIDMKIyAyNiAiL3Vzci9p
bmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMKI2RlZmluZSBfX0ZEX1pFUk8oZmRzcCkgZG8geyBpbnQg
X19kMCwgX19kMTsgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJjbGQ7IHJlcDsgc3Rvc2wiIDogIj1j
IiAoX19kMCksICI9RCIgKF9fZDEpIDogImEiICgwKSwgIjAiIChzaXplb2YgKGZkX3NldCkgLyBz
aXplb2YgKF9fZmRfbWFzaykpLCAiMSIgKCZfX0ZEU19CSVRTIChmZHNwKVswXSkgOiAibWVtb3J5
Iik7IH0gd2hpbGUgKDApCiMgMzcgIi91c3IvaW5jbHVkZS9iaXRzL3NlbGVjdC5oIiAzCiNkZWZp
bmUgX19GRF9TRVQoZmQsIGZkc3ApIF9fYXNtX18gX192b2xhdGlsZV9fICgiYnRzbCAlMSwlMCIg
OiAiPW0iIChfX0ZEU19CSVRTIChmZHNwKVtfX0ZERUxUIChmZCldKSA6ICJyIiAoKChpbnQpIChm
ZCkpICUgX19ORkRCSVRTKSA6ICJjYyIsIm1lbW9yeSIpCgoKCgojZGVmaW5lIF9fRkRfQ0xSKGZk
LCBmZHNwKSBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImJ0cmwgJTEsJTAiIDogIj1tIiAoX19GRFNf
QklUUyAoZmRzcClbX19GREVMVCAoZmQpXSkgOiAiciIgKCgoaW50KSAoZmQpKSAlIF9fTkZEQklU
UykgOiAiY2MiLCJtZW1vcnkiKQoKCgoKI2RlZmluZSBfX0ZEX0lTU0VUKGZkLCBmZHNwKSAoX19l
eHRlbnNpb25fXyAoe3JlZ2lzdGVyIGNoYXIgX19yZXN1bHQ7IF9fYXNtX18gX192b2xhdGlsZV9f
ICgiYnRsICUxLCUyIDsgc2V0Y2IgJWIwIiA6ICI9cSIgKF9fcmVzdWx0KSA6ICJyIiAoKChpbnQp
IChmZCkpICUgX19ORkRCSVRTKSwgIm0iIChfX0ZEU19CSVRTIChmZHNwKVtfX0ZERUxUIChmZCld
KSA6ICJjYyIpOyBfX3Jlc3VsdDsgfSkpCiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvc2lnc2V0LmgiIDEgMwojIDIxICIvdXNyL2lu
Y2x1ZGUvYml0cy9zaWdzZXQuaCIgMwojZGVmaW5lIF9TSUdTRVRfSF90eXBlcyAxCgp0eXBlZGVm
IGludCBfX3NpZ19hdG9taWNfdDsKCgoKI2RlZmluZSBfU0lHU0VUX05XT1JEUyAoMTAyNCAvICg4
ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKQp0eXBlZGVmIHN0cnVjdAogIHsKICAgIHVu
c2lnbmVkIGxvbmcgaW50IF9fdmFsWygxMDI0IC8gKDggKiBzaXplb2YgKHVuc2lnbmVkIGxvbmcg
aW50KSkpXTsKICB9IF9fc2lnc2V0X3Q7CiMgMzUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0Lmgi
IDIgMwoKCiNkZWZpbmUgX19zaWdzZXRfdF9kZWZpbmVkCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdz
ZXRfdDsKCgoKI2RlZmluZSBfX25lZWRfdGltZXNwZWMKIyAxICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAxIDMKIyAxMDIgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMKI2RlZmluZSBfX3RpbWVzcGVjX2Rl
ZmluZWQgMQoKCgpzdHJ1Y3QgdGltZXNwZWMKICB7CiAgICBsb25nIGludCB0dl9zZWM7CiAgICBs
b25nIGludCB0dl9uc2VjOwogIH07CgoKI3VuZGVmIF9fbmVlZF90aW1lc3BlYwojIDQ0ICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMKI2RlZmluZSBfX25lZWRfdGltZXZhbAojIDEgIi91
c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMSAzCiMgNjAgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUu
aCIgMwojdW5kZWYgX19uZWVkX3RpbWV2YWwKCiNkZWZpbmUgX1NUUlVDVF9USU1FVkFMIDEKIyAx
ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy5oIiAxIDMKIyA2NCAiL3Vzci9pbmNsdWRlL2JpdHMv
dGltZS5oIiAyIDMKCgoKc3RydWN0IHRpbWV2YWwKICB7CiAgICBfX3RpbWVfdCB0dl9zZWM7CiAg
ICBfX3N1c2Vjb25kc190IHR2X3VzZWM7CiAgfTsKIyA0NiAiL3Vzci9pbmNsdWRlL3N5cy9zZWxl
Y3QuaCIgMiAzCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19mZF9tYXNrOwoKCiNkZWZpbmUgX19ORkRC
SVRTICg4ICogc2l6ZW9mIChfX2ZkX21hc2spKQojZGVmaW5lIF9fRkRFTFQoZCkgKChkKSAvIF9f
TkZEQklUUykKI2RlZmluZSBfX0ZETUFTSyhkKSAoKF9fZmRfbWFzaykgMSA8PCAoKGQpICUgX19O
RkRCSVRTKSkKCgp0eXBlZGVmIHN0cnVjdAogIHsKCgoKICAgIF9fZmRfbWFzayBmZHNfYml0c1sx
MDI0IC8gKDggKiBzaXplb2YgKF9fZmRfbWFzaykpXTsKI2RlZmluZSBfX0ZEU19CSVRTKHNldCkg
KChzZXQpLT5mZHNfYml0cykKCgoKCiAgfSBmZF9zZXQ7CgoKI2RlZmluZSBGRF9TRVRTSVpFIF9f
RkRfU0VUU0laRQoKCgp0eXBlZGVmIF9fZmRfbWFzayBmZF9tYXNrOwoKCiNkZWZpbmUgTkZEQklU
UyBfX05GREJJVFMKCgoKCiNkZWZpbmUgRkRfU0VUKGZkLCBmZHNldHApIF9fRkRfU0VUIChmZCwg
ZmRzZXRwKQojZGVmaW5lIEZEX0NMUihmZCwgZmRzZXRwKSBfX0ZEX0NMUiAoZmQsIGZkc2V0cCkK
I2RlZmluZSBGRF9JU1NFVChmZCwgZmRzZXRwKSBfX0ZEX0lTU0VUIChmZCwgZmRzZXRwKQojZGVm
aW5lIEZEX1pFUk8oZmRzZXRwKSBfX0ZEX1pFUk8gKGZkc2V0cCkKCgpleHRlcm4gIkMiIHsKCgoK
CgoKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmljdCBfX3Jl
YWRmZHMsCiAgICAgICAgICAgICAgICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywK
ICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZkcywKICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0IF9fdGltZW91dCkgdGhyb3cg
KCk7CgoKCgoKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJp
Y3QgX19yZWFkZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX3dy
aXRlZmRzLAogICAgICAgICAgICAgICAgICAgIGZkX3NldCAqX19yZXN0cmljdCBfX2V4Y2VwdGZk
cywKICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3Qg
X190aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIGNvbnN0IF9fc2lnc2V0X3QgKl9fcmVzdHJp
Y3QgX19zaWdtYXNrKSB0aHJvdyAoKTsKCgp9CiMgMjEwICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaCIgMSAzCiMgMjEgIi91
c3IvaW5jbHVkZS9zeXMvc3lzbWFjcm9zLmgiIDMKI2RlZmluZSBfU1lTX1NZU01BQ1JPU19IIDEK
CgoKCgoKI2RlZmluZSBtYWpvcihkZXYpICgoaW50KSgoKGRldikgPj4gOCkgJiAweGZmKSkKI2Rl
ZmluZSBtaW5vcihkZXYpICgoaW50KSgoZGV2KSAmIDB4ZmYpKQojZGVmaW5lIG1ha2VkZXYobWFq
b3IsIG1pbm9yKSAoKCgodW5zaWduZWQgaW50KSAobWFqb3IpKSA8PCA4KSB8ICgodW5zaWduZWQg
aW50KSAobWlub3IpKSkKIyAyMTMgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzCgoKCgp0
eXBlZGVmIF9fYmxrc2l6ZV90IGJsa3NpemVfdDsKI2RlZmluZSBfX2Jsa3NpemVfdF9kZWZpbmVk
CgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwojZGVmaW5lIF9fYmxrY250X3RfZGVm
aW5lZAoKCnR5cGVkZWYgX19mc2Jsa2NudF90IGZzYmxrY250X3Q7CiNkZWZpbmUgX19mc2Jsa2Nu
dF90X2RlZmluZWQKCgp0eXBlZGVmIF9fZnNmaWxjbnRfdCBmc2ZpbGNudF90OwojZGVmaW5lIF9f
ZnNmaWxjbnRfdF9kZWZpbmVkCiMgMjUxICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMKdHlw
ZWRlZiBfX2Jsa2NudDY0X3QgYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzYmxrY250NjRfdCBmc2Js
a2NudDY0X3Q7CnR5cGVkZWYgX19mc2ZpbGNudDY0X3QgZnNmaWxjbnQ2NF90OwoKCn0KIyAzOTIg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzCgoKCgoKCmV4dGVybiBsb25nIGludCByYW5kb20g
KHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kb20gKHVuc2lnbmVkIGludCBfX3Nl
ZWQpIHRocm93ICgpOwoKCgoKCmV4dGVybiBjaGFyICppbml0c3RhdGUgKHVuc2lnbmVkIGludCBf
X3NlZWQsIGNoYXIgKl9fc3RhdGVidWYsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBf
X3N0YXRlbGVuKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0
YXRlYnVmKSB0aHJvdyAoKTsKCgoKCgoKCnN0cnVjdCByYW5kb21fZGF0YQogIHsKICAgIGludDMy
X3QgKmZwdHI7CiAgICBpbnQzMl90ICpycHRyOwogICAgaW50MzJfdCAqc3RhdGU7CiAgICBpbnQg
cmFuZF90eXBlOwogICAgaW50IHJhbmRfZGVnOwogICAgaW50IHJhbmRfc2VwOwogICAgaW50MzJf
dCAqZW5kX3B0cjsKICB9OwoKZXh0ZXJuIGludCByYW5kb21fciAoc3RydWN0IHJhbmRvbV9kYXRh
ICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICpfX3Jlc3Ry
aWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1bnNpZ25lZCBp
bnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKSB0aHJvdyAoKTsKCmV4dGVybiBp
bnQgaW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19z
dGF0ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgICAg
ICAgICAgICAgICAgICAgICAgIHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1Zikg
dGhyb3cgKCk7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zdGF0
ZWJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fcmVzdHJp
Y3QgX19idWYpIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgcmFuZCAodm9pZCkgdGhyb3cgKCk7
CgpleHRlcm4gdm9pZCBzcmFuZCAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCmV4
dGVybiBpbnQgcmFuZF9yICh1bnNpZ25lZCBpbnQgKl9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKCgpl
eHRlcm4gZG91YmxlIGRyYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGVyYW5k
NDggKHVuc2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdKSB0aHJvdyAoKTsKCgpleHRlcm4gbG9u
ZyBpbnQgbHJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGludCBucmFuZDQ4ICh1
bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGxvbmcgaW50
IG1yYW5kNDggKHZvaWQpIHRocm93ICgpOwpleHRlcm4gbG9uZyBpbnQganJhbmQ0OCAodW5zaWdu
ZWQgc2hvcnQgaW50IF9feHN1YmlbM10pIHRocm93ICgpOwoKCmV4dGVybiB2b2lkIHNyYW5kNDgg
KGxvbmcgaW50IF9fc2VlZHZhbCkgdGhyb3cgKCk7CmV4dGVybiB1bnNpZ25lZCBzaG9ydCBpbnQg
KnNlZWQ0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fc2VlZDE2dlszXSkgdGhyb3cgKCk7CmV4dGVy
biB2b2lkIGxjb25nNDggKHVuc2lnbmVkIHNob3J0IGludCBfX3BhcmFtWzddKSB0aHJvdyAoKTsK
CgoKCgpzdHJ1Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFsz
XTsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQg
aW50IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICB1bnNpZ25lZCBsb25n
IGxvbmcgaW50IF9fYTsKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0OF9yIChzdHJ1Y3QgZHJhbmQ0
OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgZG91Ymxl
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBlcmFuZDQ4X3IgKHVu
c2lnbmVkIHNob3J0IGludCBfX3hzdWJpWzNdLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBscmFu
ZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAg
ICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4
dGVybiBpbnQgbnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAg
ICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVzdHJpY3QgX19idWZmZXIs
CiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhy
b3cgKCk7CgoKZXh0ZXJuIGludCBtcmFuZDQ4X3IgKHN0cnVjdCBkcmFuZDQ4X2RhdGEgKl9fcmVz
dHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAqX19yZXN0cmlj
dCBfX3Jlc3VsdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9y
dCBpbnQgX194c3ViaVszXSwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcmFuZDQ4X2Rh
dGEgKl9fcmVzdHJpY3QgX19idWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICBsb25nIGludCAq
X19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzcmFuZDQ4X3IgKGxv
bmcgaW50IF9fc2VlZHZhbCwgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpCiAgICAgdGhy
b3cgKCk7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVkMTZ2
WzNdLAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikg
dGhyb3cgKCk7CgpleHRlcm4gaW50IGxjb25nNDhfciAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFy
YW1bN10sCiAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZl
cikgdGhyb3cgKCk7CgoKCgoKCiNkZWZpbmUgX19tYWxsb2NfYW5kX2NhbGxvY19kZWZpbmVkCgpl
eHRlcm4gdm9pZCAqbWFsbG9jIChzaXplX3QgX19zaXplKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f
ICgoX19tYWxsb2NfXykpOwoKZXh0ZXJuIHZvaWQgKmNhbGxvYyAoc2l6ZV90IF9fbm1lbWIsIHNp
emVfdCBfX3NpemUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsK
CgoKCgpleHRlcm4gdm9pZCAqcmVhbGxvYyAodm9pZCAqX19wdHIsIHNpemVfdCBfX3NpemUpIHRo
cm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgpleHRlcm4gdm9pZCBmcmVlICh2
b2lkICpfX3B0cikgdGhyb3cgKCk7CgoKCmV4dGVybiB2b2lkIGNmcmVlICh2b2lkICpfX3B0cikg
dGhyb3cgKCk7CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2FsbG9jYS5oIiAxIDMKIyAyMCAiL3Vzci9p
bmNsdWRlL2FsbG9jYS5oIiAzCiNkZWZpbmUgX0FMTE9DQV9IIDEKCiMgMSAiL3Vzci9pbmNsdWRl
L2ZlYXR1cmVzLmgiIDEgMwojIDIzICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKI2RlZmlu
ZSBfX25lZWRfc2l6ZV90CiMgMSAiL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWxpbnV4LWdudS8z
LjAuMS9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMKIyAyMTggIi91c3IvbGliL2djYy1saWIvaTY4Ni1w
Yy1saW51eC1nbnUvMy4wLjEvaW5jbHVkZS9zdGRkZWYuaCIgMwojdW5kZWYgX19uZWVkX3NpemVf
dAojIDI2ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDIgMwoKZXh0ZXJuICJDIiB7CgoKCgoKZXh0
ZXJuIHZvaWQgKmFsbG9jYSAoc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKI2RlZmluZSBhbGxv
Y2Eoc2l6ZSkgX19idWlsdGluX2FsbG9jYSAoc2l6ZSkKCgp9CiMgNTQ4ICIvdXNyL2luY2x1ZGUv
c3RkbGliLmgiIDIgMwoKCgoKZXh0ZXJuIHZvaWQgKnZhbGxvYyAoc2l6ZV90IF9fc2l6ZSkgdGhy
b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKTsKCgoKCmV4dGVybiBpbnQgcG9zaXhf
bWVtYWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19z
aXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSk7CgoKCmV4dGVy
biB2b2lkIGFib3J0ICh2b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgoKCmV4dGVybiBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIHRocm93ICgp
OwoKCgoKZXh0ZXJuIGludCBvbl9leGl0ICh2b2lkICgqX19mdW5jKSAoaW50IF9fc3RhdHVzLCB2
b2lkICpfX2FyZyksIHZvaWQgKl9fYXJnKQogICAgIHRocm93ICgpOwoKCgoKCmV4dGVybiB2b2lk
IGV4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCgoKZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRy
aWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqX19zZWN1cmVfZ2V0ZW52
IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBwdXRlbnYg
KGNoYXIgKl9fc3RyaW5nKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoX19jb25z
dCBjaGFyICpfX25hbWUsIF9fY29uc3QgY2hhciAqX192YWx1ZSwgaW50IF9fcmVwbGFjZSkKICAg
ICB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHVuc2V0ZW52IChfX2NvbnN0IGNoYXIgKl9fbmFtZSkg
dGhyb3cgKCk7CgoKCgoKCmV4dGVybiBpbnQgY2xlYXJlbnYgKHZvaWQpIHRocm93ICgpOwojIDYy
NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzCmV4dGVybiBjaGFyICpta3RlbXAgKGNoYXIgKl9f
dGVtcGxhdGUpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGludCBta3N0ZW1wIChjaGFyICpfX3Rl
bXBsYXRlKSB0aHJvdyAoKTsKIyA2NDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRlcm4g
aW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCk7CiMgNjUxICIvdXNyL2lu
Y2x1ZGUvc3RkbGliLmgiIDMKZXh0ZXJuIGNoYXIgKm1rZHRlbXAgKGNoYXIgKl9fdGVtcGxhdGUp
IHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBzeXN0ZW0gKF9fY29uc3QgY2hhciAqX19jb21tYW5k
KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKF9f
Y29uc3QgY2hhciAqX19uYW1lKSB0aHJvdyAoKTsKIyA2NzMgIi91c3IvaW5jbHVkZS9zdGRsaWIu
aCIgMwpleHRlcm4gY2hhciAqcmVhbHBhdGggKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h
bWUsCiAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqX19yZXN0cmljdCBfX3Jlc29sdmVkKSB0
aHJvdyAoKTsKCgoKCgojZGVmaW5lIF9fQ09NUEFSX0ZOX1QKdHlwZWRlZiBpbnQgKCpfX2NvbXBh
cl9mbl90KSAoX19jb25zdCB2b2lkICosIF9fY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29t
cGFyX2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgoKCmV4dGVybiB2b2lkICpic2VhcmNoIChfX2Nv
bnN0IHZvaWQgKl9fa2V5LCBfX2NvbnN0IHZvaWQgKl9fYmFzZSwKICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplLCBfX2NvbXBhcl9mbl90IF9fY29tcGFy
KTsKCgoKZXh0ZXJuIHZvaWQgcXNvcnQgKHZvaWQgKl9fYmFzZSwgc2l6ZV90IF9fbm1lbWIsIHNp
emVfdCBfX3NpemUsCiAgICAgICAgICAgICAgICAgICBfX2NvbXBhcl9mbl90IF9fY29tcGFyKTsK
CgoKZXh0ZXJuIGludCBhYnMgKGludCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv
bnN0X18pKTsKZXh0ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19h
dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRlcm4gbG9uZyBsb25n
IGludCBsbGFicyAobG9uZyBsb25nIGludCBfX3gpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf
XyAoKF9fY29uc3RfXykpOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwgaW50
IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwpleHRl
cm4gbGRpdl90IGxkaXYgKGxvbmcgaW50IF9fbnVtZXIsIGxvbmcgaW50IF9fZGVub20pCiAgICAg
dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKX19leHRlbnNpb25fXyBleHRl
cm4gbGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgaW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkg
X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwojIDcyOSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5o
IiAzCmV4dGVybiBjaGFyICplY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBpbnQg
Kl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICAgICAgICAgICAgICAgIGludCAqX19yZXN0cmljdCBf
X3NpZ24pIHRocm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKmZjdnQgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqZ2N2dCAo
ZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgY2hhciAqX19idWYpIHRocm93ICgpOwoKCgoK
ZXh0ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAg
ICAgICAgICAgICAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsIGludCAqX19yZXN0cmlj
dCBfX3NpZ24pIHRocm93ICgpOwpleHRlcm4gY2hhciAqcWZjdnQgKGxvbmcgZG91YmxlIF9fdmFs
dWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19k
ZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCk7CmV4dGVybiBjaGFyICpxZ2N2
dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikgdGhyb3cg
KCk7CgoKCgpleHRlcm4gaW50IGVjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg
aW50ICpfX3Jlc3RyaWN0IF9fZGVjcHQsCiAgICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJp
Y3QgX19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgICAgICAgICAgICAgICAgc2l6
ZV90IF9fbGVuKSB0aHJvdyAoKTsKZXh0ZXJuIGludCBmY3Z0X3IgKGRvdWJsZSBfX3ZhbHVlLCBp
bnQgX19uZGlnaXQsIGludCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgICAgICAgICAgICAgICAg
aW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0cmljdCBfX2J1ZiwKICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBfX2xlbikgdGhyb3cgKCk7CgpleHRlcm4gaW50IHFlY3Z0X3IgKGxv
bmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAgICAgICAgICAgICAgICAgICBpbnQg
Kl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgICAgICAg
ICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19sZW4pIHRocm93ICgpOwpl
eHRlcm4gaW50IHFmY3Z0X3IgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwKICAg
ICAgICAgICAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0
IF9fc2lnbiwKICAgICAgICAgICAgICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXpl
X3QgX19sZW4pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IG1ibGVuIChfX2NvbnN0IGNoYXIg
Kl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3Qg
Kl9fcmVzdHJpY3QgX19wd2MsCiAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fcmVz
dHJpY3QgX19zLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHdjdG9tYiAoY2hh
ciAqX19zLCB3Y2hhcl90IF9fd2NoYXIpIHRocm93ICgpOwoKCgpleHRlcm4gc2l6ZV90IG1ic3Rv
d2NzICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywKICAgICAgICAgICAgICAgICAgICAgICAg
X19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgpleHRl
cm4gc2l6ZV90IHdjc3RvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICAgICAgICAg
ICAgICAgICAgX19jb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjcywgc2l6ZV90IF9fbikK
ICAgICB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoX19jb25zdCBjaGFyICpf
X3Jlc3BvbnNlKSB0aHJvdyAoKTsKIyA4MDkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMwpleHRl
cm4gaW50IGdldHN1Ym9wdCAoY2hhciAqKl9fcmVzdHJpY3QgX19vcHRpb25wLAogICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqX19jb25zdCAqX19yZXN0cmljdCBfX3Rva2VucywKICAgICAgICAg
ICAgICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fdmFsdWVwKSB0aHJvdyAoKTsKCgoKCgpl
eHRlcm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIHRocm93ICgpOwoKCgoKCgoK
ZXh0ZXJuIGludCBwb3NpeF9vcGVucHQgKGludCBfX29mbGFnKSB0aHJvdyAoKTsKCgoKCgoKCmV4
dGVybiBpbnQgZ3JhbnRwdCAoaW50IF9fZmQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHVubG9j
a3B0IChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gY2hhciAqcHRzbmFtZSAoaW50IF9f
ZmQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IHB0c25hbWVfciAoaW50IF9fZmQsIGNoYXIg
Kl9fYnVmLCBzaXplX3QgX19idWZsZW4pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgZ2V0cHQgKHZv
aWQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gaW50IGdldGxvYWRhdmcgKGRvdWJsZSBfX2xvYWRh
dmdbXSwgaW50IF9fbmVsZW0pIHRocm93ICgpOwoKCgoKCn0KIyAyNiAiTWVtb3J5QXJyYXkuaCIg
MgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzCiMgMzUgIi91c3IvaW5jbHVkZS9hc3Nl
cnQuaCIgMwojZGVmaW5lIF9BU1NFUlRfSCAxCiMgMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi
IDEgMwojIDM3ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDIgMwoKCiNkZWZpbmUgX19BU1NFUlRf
Vk9JRF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+CiMgNjUgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg
MwpleHRlcm4gIkMiIHsKCgpleHRlcm4gdm9pZCBfX2Fzc2VydF9mYWlsIChfX2NvbnN0IGNoYXIg
Kl9fYXNzZXJ0aW9uLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IF9fbGluZSwgX19jb25zdCBjaGFyICpfX2Z1bmN0aW9uKQogICAg
IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpleHRlcm4gdm9pZCBf
X2Fzc2VydF9wZXJyb3JfZmFpbCAoaW50IF9fZXJybnVtLCBfX2NvbnN0IGNoYXIgKl9fZmlsZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfX2xpbmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2NvbnN0IGNoYXIgKl9fZnVuY3Rpb24p
CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJu
IHZvaWQgX19hc3NlcnQgKGNvbnN0IGNoYXIgKl9fYXNzZXJ0aW9uLCBjb25zdCBjaGFyICpfX2Zp
bGUsIGludCBfX2xpbmUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5f
XykpOwoKCn0KCiNkZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKChleHBy
KSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoX19TVFJJTkcoZXhwciksIF9fRklMRV9fLCBfX0xJTkVf
XywgX19BU1NFUlRfRlVOQ1RJT04pLCAwKSkpCgoKCgoKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVy
cm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoIShlcnJudW0pID8gMCA6IChfX2Fzc2VydF9wZXJy
b3JfZmFpbCAoKGVycm51bSksIF9fRklMRV9fLCBfX0xJTkVfXywgX19BU1NFUlRfRlVOQ1RJT04p
LCAwKSkpCiMgMTA1ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMKI2RlZmluZSBfX0FTU0VSVF9G
VU5DVElPTiBfX1BSRVRUWV9GVU5DVElPTl9fCiMgMjcgIk1lbW9yeUFycmF5LmgiIDIKCiNkZWZp
bmUgTWVtb3J5QXJyYXlfU3RkQ2FwYWNpdHkgMTYKIyAxICJzdXBwb3J0LmgiIDEKIyAxOSAic3Vw
cG9ydC5oIgojZGVmaW5lIFNVUFBPUlRfSAoKaW5saW5lIHZvaWQgKlJlYWxsb2Modm9pZCAqbWVt
b3J5LCB1bnNpZ25lZCBzaXplKQp7CiAgICAgICAgaWYgKCFtZW1vcnkpCiAgICAgICAgICAgICAg
ICByZXR1cm4gY2FsbG9jKDEsIHNpemUpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHJl
dHVybiByZWFsbG9jKG1lbW9yeSwgc2l6ZSk7Cn0KIyAzMCAiTWVtb3J5QXJyYXkuaCIgMgoKdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIE1lbW9yeUFycmF5IHsKICAgICAgICBwcml2YXRlOgog
ICAgICAgICAgICAgICAgdm9pZCAqYnVmZmVyOwogICAgICAgICAgICAgICAgdW5zaWduZWQgZWxl
bWVudFNpemU7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBfY291bnQ7CiAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjYXBhY2l0eTsKCiAgICAgICAgICAgICAgICB2b2lkIHJlYWxsb2NhdGVUb0Nh
cGFjaXR5KHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKCiAgICAgICAgcHVibGljOgogICAgICAgICAg
ICAgICAgTWVtb3J5QXJyYXkodW5zaWduZWQgc29tZUVsZW1lbnRTaXplLCB1bnNpZ25lZCBpbml0
aWFsQ2FwYWNpdHkKICAgICAgICAgICAgICAgICAgICAgICAgPSAxNik7CiAgICAgICAgICAgICAg
ICB+TWVtb3J5QXJyYXkodm9pZCk7CgogICAgICAgICAgICAgICAgaW5saW5lIFQgKmVsZW1lbnRB
dEluZGV4KHVuc2lnbmVkIGluZGV4KSB7CgoKICAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRp
Y19jYXN0PHZvaWQ+ICgoaW5kZXggPCBfY291bnQpID8gMCA6IChfX2Fzc2VydF9mYWlsICgiaW5k
ZXggPCBfY291bnQiLCAiTWVtb3J5QXJyYXkuaCIsIDQ4LCBfX1BSRVRUWV9GVU5DVElPTl9fKSwg
MCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChUICopKChjaGFyICopYnVmZmVy
ICsgaW5kZXggKiBlbGVtZW50U2l6ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBpbmxpbmUgVCAqcHVzaEVsZW1lbnQodm9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICBf
Y291bnQrKzsKICAgICAgICAgICAgICAgICAgICAgICAgcmVhbGxvY2F0ZVRvQ2FwYWNpdHkoX2Nv
dW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChUICopZWxlbWVudEF0SW5kZXgo
X2NvdW50IC0gMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpbmxpbmUgdW5z
aWduZWQgY291bnQodm9pZCkgeyByZXR1cm4gX2NvdW50OyB9CiAgICAgICAgICAgICAgICBpbmxp
bmUgdm9pZCBzZXRDb3VudCh1bnNpZ25lZCBuZXdDb3VudCkgewogICAgICAgICAgICAgICAgICAg
ICAgICByZWFsbG9jYXRlVG9DYXBhY2l0eShuZXdDb3VudCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgIF9jb3VudCA9IG5ld0NvdW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
aW5saW5lIHZvaWQgc29ydChpbnQgKCpjb21wYXJpc29uRnVuY3Rpb24pKFQgKiwgVCAqKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICBxc29ydChidWZmZXIsIF9jb3VudCwgZWxlbWVudFNpemUs
IChpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSljb21wYXJpc29uRnVuY3Rpb24p
OwogICAgICAgICAgICAgICAgfQp9OwoKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIE1lbW9y
eUFycmF5PFQ+OjpyZWFsbG9jYXRlVG9DYXBhY2l0eSh1bnNpZ25lZCBuZXdDYXBhY2l0eSkKewog
ICAgICAgIHVuc2lnbmVkIG9sZENhcGFjaXR5ID0gY2FwYWNpdHk7CgogICAgICAgIGlmIChuZXdD
YXBhY2l0eSA8PSBjYXBhY2l0eSkgcmV0dXJuOwoKICAgICAgICBjYXBhY2l0eSA8PD0gMTsKICAg
ICAgICBpZiAoY2FwYWNpdHkgPCBuZXdDYXBhY2l0eSkgY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsK
CiAgICAgICAgYnVmZmVyID0gUmVhbGxvYyhidWZmZXIsIGNhcGFjaXR5ICogZWxlbWVudFNpemUp
OwoKICAgICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKCghIWJ1ZmZlcikgPyAwIDogKF9fYXNzZXJ0
X2ZhaWwgKCIhIWJ1ZmZlciIsICJNZW1vcnlBcnJheS5oIiwgNzgsIF9fUFJFVFRZX0ZVTkNUSU9O
X18pLCAwKSkpOwojIDg4ICJNZW1vcnlBcnJheS5oIgogICAgICAgIG1lbXNldCgoY2hhciAqKWJ1
ZmZlciArIG9sZENhcGFjaXR5ICogZWxlbWVudFNpemUsIDAsCiAgICAgICAgICAgICAgICAoY2Fw
YWNpdHkgLSBvbGRDYXBhY2l0eSkgKiBlbGVtZW50U2l6ZSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBNZW1vcnlBcnJheTxUPjo6TWVtb3J5QXJyYXkodW5zaWduZWQgc29tZUVsZW1lbnRTaXpl
LCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCiAgICAgICAgOiBidWZmZXIoMCksIGVsZW1lbnRT
aXplKHNvbWVFbGVtZW50U2l6ZSksIF9jb3VudCgwKSwgY2FwYWNpdHkoMCkKewogICAgICAgIHJl
YWxsb2NhdGVUb0NhcGFjaXR5KGluaXRpYWxDYXBhY2l0eSk7Cn0KCnRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBNZW1vcnlBcnJheTxUPjo6fk1lbW9yeUFycmF5KHZvaWQpCnsKICAgICAgICBmcmVlKGJ1
ZmZlcik7Cn0KIyAyNCAiQWJzdHJhY3RHZW5vdHlwZVNldC5oIiAyCgoKCgoKdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgIGNvbnN0IEFsbGVsZSAqbFsyXTsKfSBHVFNMaW5lOwoKY2xhc3MgQWJzdHJh
Y3RHZW5vdHlwZVNldCB7Cgpwcm90ZWN0ZWQ6CiAgICAgICAgdmlydHVhbCB2b2lkIHNldEFsbGVs
ZUNvdW50Rm9yTG9jdXModW5zaWduZWQgbG9jdXMsIHVuc2lnbmVkIGNvdW50KSA9IDA7CgpwdWJs
aWM6CiAgICAgICAgQWJzdHJhY3RHZW5vdHlwZVNldCgpOwogICAgICAgIHZpcnR1YWwgfkFic3Ry
YWN0R2Vub3R5cGVTZXQoKTsKCiAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsb2NpQ291bnQodm9p
ZCkgPSAwOwogICAgICAgIHZpcnR1YWwgdW5zaWduZWQgY291bnQodm9pZCkgPSAwOwogICAgICAg
IHZpcnR1YWwgdW5zaWduZWQgY291bnRPZkFsbGVsZXNJblNldCh2b2lkKTsKICAgICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIgKmxvY3VzTmFtZSh1bnNpZ25lZCBsb2N1c05vKSA9IDA7CiAgICAgICAg
dmlydHVhbCB1bnNpZ25lZCBhbGxlbGVOYW1lRm9yQWxsZWxlSWRBdExvY3VzKHVuc2lnbmVkIGlk
LCB1bnNpZ25lZCBsb2N1cykgPSAwOwogICAgICAgIHZpcnR1YWwgdW5zaWduZWQgYWxsZWxlQ291
bnRGb3JMb2N1cyh1bnNpZ25lZCBsb2N1cykgPSAwOwoKICAgICAgICB2aXJ0dWFsIEdUU0xpbmUg
Z2Vub3R5cGVBdEluZGV4KHVuc2lnbmVkIGkpID0gMDsKICAgICAgICB2aXJ0dWFsIEJPT0wgcGhl
bm90eXBlQXRJbmRleCh1bnNpZ25lZCBpKSA9IDA7CgogICAgICAgIHZpcnR1YWwgdm9pZCBwcmlu
dCh2b2lkKTsKCgoKCgogICAgICAgIHZpcnR1YWwgTWVtb3J5QXJyYXk8QWxsZWxlPiAqYWxsZWxl
TWFwQnlNb2RpZnlpbmdHZW5vdHlwZXModm9pZCk7Cgp9OwojIDIyICJHZW5vdHlwZVNlYXJjaGVy
LmgiIDIKIyAxICJDaG9pY2VJdGVyYXRvci5oIiAxCiMgMTkgIkNob2ljZUl0ZXJhdG9yLmgiCiNk
ZWZpbmUgQ0hPSUNFSVRFUkFUT1JfSAoKCgoKIyAxICJSb3VuZGluZy5oIiAxCiMgMjUgIkNob2lj
ZUl0ZXJhdG9yLmgiIDIKCmNsYXNzIENob2ljZUl0ZXJhdG9yIHsKICAgICAgICBwcml2YXRlOgog
ICAgICAgICAgICAgICAgdW5zaWduZWQgKmNob2ljZTsKICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGM7CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBuOwoKICAgICAgICBwdWJsaWM6CiAgICAgICAg
ICAgICAgICBpbmxpbmUgdW5zaWduZWQgY2FyZGluYWxpdHkodm9pZCkgeyByZXR1cm4gYzsgfQog
ICAgICAgICAgICAgICAgaW5saW5lIHVuc2lnbmVkIGNvdW50KHZvaWQpIHsgcmV0dXJuIG47IH0K
ICAgICAgICAgICAgICAgIGlubGluZSB1bnNpZ25lZCBjaG9pY2VBdEluZGV4KHVuc2lnbmVkIGkp
IHsgcmV0dXJuIGNob2ljZVtpXTsgfQogICAgICAgICAgICAgICAgaW5saW5lIHZvaWQgcmVzZXQo
dW5zaWduZWQgc3RhcnQgPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCAr
IGMgPj0gbikgdGhyb3cgIkNob2ljZUl0ZXJhdG9yOjpyZXNldCA6IEJvdW5kcyB2aW9sYXRpb24u
IjsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGM7IGkr
KykgY2hvaWNlW2ldID0gc3RhcnQgKyBpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIENob2ljZUl0ZXJhdG9yKHVuc2lnbmVkIGNhcmQsIHVuc2lnbmVkIE4sIHVuc2lnbmVkIHN0
YXJ0ID0gMCkgOiBjKGNhcmQpLCBuKE4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNl
ID0gbmV3IHVuc2lnbmVkW2NdOwogICAgICAgICAgICAgICAgICAgICAgICByZXNldChzdGFydCk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB+Q2hvaWNlSXRlcmF0b3Iodm9pZCkg
eyBkZWxldGUgY2hvaWNlOyB9CgogICAgICAgICAgICAgICAgdm9pZCBwcmludENob2ljZSh2b2lk
KTsKICAgICAgICAgICAgICAgIGlubGluZSB1bnNpZ25lZCB0YWcodm9pZCkgewogICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpLCB0YWc7CiAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciAodGFnID0gMCwgaSA9IDA7IGkgPCBjOyBpKyspIHRhZyA9IHRhZyAqIG4gKyBjaG9pY2VbaV07
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YWc7CiAgICAgICAgICAgICAgICB9CgoK
ICAgICAgICAgICAgICAgIGlubGluZSBCT09MIGFkdmFuY2Uodm9pZCkgewogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaSwgbGFzdENob2ljZTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IChpID0gYzsgLS1pID49IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobGFz
dENob2ljZSA9ICsrY2hvaWNlW2ldKSA+IGkgKyAoaW50KShuIC0gYyk7ICk7CiAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpIDwgMCkgcmV0dXJuIE5POwogICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKDsgaSA8IChpbnQpYzsgaSsrLCBsYXN0Q2hvaWNlKyspCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2hvaWNlW2ldID0gbGFzdENob2ljZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIFlFUzsKICAgICAgICAgICAgICAgIH0KCgoKCiAgICAgICAgICAgICAgICBC
T09MIG5leHRBZGplY2VudENob2ljZSh2b2lkKSB7CgogICAgICAgICAgICAgICAgfQp9OwojIDIz
ICJHZW5vdHlwZVNlYXJjaGVyLmgiIDIKIyAxICJNZW1vcnlBcnJheS5oIiAxCiMgMjQgIkdlbm90
eXBlU2VhcmNoZXIuaCIgMgojIDEgIkFic3RyYWN0R2Vub3R5cGVTZWFyY2hlci5oIiAxCiMgMTgg
IkFic3RyYWN0R2Vub3R5cGVTZWFyY2hlci5oIgojZGVmaW5lIEFCU1RSQUNUR0VOT1RZUEVTRUFS
Q0hFUl9ICgojIDEgIkFic3RyYWN0R2Vub3R5cGVTZXQuaCIgMQojIDIxICJBYnN0cmFjdEdlbm90
eXBlU2VhcmNoZXIuaCIgMgojIDEgIkNob2ljZUl0ZXJhdG9yLmgiIDEKIyAyMiAiQWJzdHJhY3RH
ZW5vdHlwZVNlYXJjaGVyLmgiIDIKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1bnNpZ25lZCBj
aG9pY2VJZDsKICAgICAgICB1bnNpZ25lZCBjb21iaW5hdGlvbklkOwogICAgICAgIHVuc2lnbmVk
IHRoaXNQb3NDb3VudCwgdGhpc05lZ0NvdW50OwogICAgICAgIHVuc2lnbmVkIGFsbFBvc0NvdW50
LCBhbGxOZWdDb3VudDsKCgoKfSBBbGxlbGVDb21iaW5hdGlvbjsKCnR5cGVkZWYgc3RydWN0IHsK
CiAgICAgICAgdW5zaWduZWQgY1syXTsKfSBBQ2NvbGxlY3Rpb247Cgp0eXBlZGVmIHN0cnVjdCB7
CiAgICAgICAgdW5zaWduZWQgY29wOwogICAgICAgIHVuc2lnbmVkIGNvdW50MTsKICAgICAgICB1
bnNpZ25lZCBjb3VudDI7CiAgICAgICAgQUNjb2xsZWN0aW9uICpjOwp9IEFDY291bnRzRGVzY3Jp
cHRpb247Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdW5zaWduZWQgbWluQ291bnQ7CiAgICAg
ICAgZG91YmxlIGN1dE9mZl9MLCBjdXRPZmZfSDsKICAgICAgICBCT09MIGlnbm9yZUV4dHJlbWVz
Owp9IE1GU2VhcmNoUGFyYW1ldGVyczsKCgoKCgoKY2xhc3MgQWJzdHJhY3RHZW5vdHlwZVNlYXJj
aGVyIHsKcHJvdGVjdGVkOgogICAgICAgIEFic3RyYWN0R2Vub3R5cGVTZXQgKmdlbm90eXBlczsK
ICAgICAgICB1bnNpZ25lZCBfY2FyZGluYWxpdHk7CiAgICAgICAgTUZTZWFyY2hQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CiAgICAgICAgTWVtb3J5QXJyYXk8QWxsZWxlQ29tYmluYXRpb24+ICphY3M7
CgoKICAgICAgICBDaG9pY2VJdGVyYXRvciAqbG9jaTsKICAgICAgICB1bnNpZ25lZCAqYWNDb3Vu
dDsKCgogICAgICAgIHVuc2lnbmVkIHBvc0NvdW50LCBuZWdDb3VudDsKICAgICAgICBBQ2NvbGxl
Y3Rpb24gKmFjQ291bnRzOwoKCiAgICAgICAgdW5zaWduZWQgbG9jdXNUb1N0YXJ0OwoKcHVibGlj
OgogICAgICAgIEFic3RyYWN0R2Vub3R5cGVTZWFyY2hlcigpIHt9CiAgICAgICAgQWJzdHJhY3RH
ZW5vdHlwZVNlYXJjaGVyKEFic3RyYWN0R2Vub3R5cGVTZXQgKnNldCwgaW50IGNhcmRpbmFsaXR5
LCBNRlNlYXJjaFBhcmFtZXRlcnMgcCkgewogICAgICAgICAgICAgICAgc2V0U2V0UGFyYW1ldGVy
c0NhcmRpbmFsaXR5KHNldCwgY2FyZGluYWxpdHksIHApOwogICAgICAgIH0KICAgICAgICB2aXJ0
dWFsIH5BYnN0cmFjdEdlbm90eXBlU2VhcmNoZXIoKTsKCgogICAgICAgIHZpcnR1YWwgdm9pZCBz
ZXRTZXRDYXJkaW5hbGl0eUxvY3VzVG9TdGFydChBYnN0cmFjdEdlbm90eXBlU2V0ICpzZXQsIGlu
dCBjYXJkaW5hbGl0eSA9IDEsIHVuc2lnbmVkIGxvY3VzVG9TdGFydCA9IDApOwogICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRTZXRQYXJhbWV0ZXJzQ2FyZGluYWxpdHkoQWJzdHJhY3RHZW5vdHlwZVNl
dCAqc2V0LCBpbnQgY2FyZGluYWxpdHkgPSAxLAogICAgICAgICAgICAgICAgTUZTZWFyY2hQYXJh
bWV0ZXJzIHAgPSAoKE1GU2VhcmNoUGFyYW1ldGVycyl7MiwxLDEsMX0pKTsKCiAgICAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVTaW5nbGVEYXRhKHZvaWQpIHt9CiAgICAgICAgdmlydHVhbCB2b2lk
IGRpZ2VzdFNpbmdsZURhdGEodW5zaWduZWQgaSkgPSAwOwogICAgICAgIHZpcnR1YWwgdm9pZCBj
b25jbHVkZVNpbmdsZURhdGEodm9pZCkge30KCgoKICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
ZGljYXRvclNjb3JlRm9yR1RTTGluZShHVFNMaW5lIGxpbmUsIHVuc2lnbmVkIGFjKSA9IDA7CgoK
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVNpbmdsZUNob2ljZSh2b2lkKTsKCgoKICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2luZ2xlQ2hvaWNlKENob2ljZUl0ZXJhdG9yICpsb2NpKTsKICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlU2luZ2xlQ2hvaWNlKHZvaWQpOwoKCiAgICAgICAgdmly
dHVhbCB2b2lkIHNjcnV0aW5pemVTaW5nbGVDaG9pY2Uodm9pZCk7CgogICAgICAgIHZpcnR1YWwg
dm9pZCBzdG9yZVJlc3VsdHNGcm9tU2luZ2xlQ2hvaWNlKHZvaWQpOwoKICAgICAgICB2aXJ0dWFs
IHZvaWQgY29uY2x1ZGVTaW5nbGVDaG9pY2Uodm9pZCk7CgoKICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVN0YXRpc3RpY3Modm9pZCk7CgogICAgICAgIHZpcnR1YWwgdm9pZCBjb25jbHVkZVN0
YXRpc3RpY3Modm9pZCk7CgogICAgICAgIHZpcnR1YWwgQk9PTCBhZHZhbmNlKHZvaWQpOwoKICAg
ICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlU3RhdGlzdGljcyh2b2lkKTsKCgogICAgICAgIGlu
bGluZSB1bnNpZ25lZCBjYXJkaW5hbGl0eSh2b2lkKSB7IHJldHVybiBfY2FyZGluYWxpdHk7IH0K
ICAgICAgICBpbmxpbmUgQWJzdHJhY3RHZW5vdHlwZVNldCAqZ2Vub3R5cGVTZXQodm9pZCkgeyBy
ZXR1cm4gZ2Vub3R5cGVzOyB9CiAgICAgICAgaW5saW5lIE1lbW9yeUFycmF5PEFsbGVsZUNvbWJp
bmF0aW9uPiAqcmVzdWx0KHZvaWQpIHsgcmV0dXJuIGFjczsgfQogICAgICAgIHZpcnR1YWwgdm9p
ZCBzb3J0UmVzdWx0KHZvaWQpOwoKCiAgICAgICAgdmlydHVhbCBBQ2NvdW50c0Rlc2NyaXB0aW9u
IGludGVybWVkaWF0ZVJlc3VsdCh2b2lkKTsKCgoKICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIG1h
eGltYWxTY29yZSh2b2lkKSA9IDA7CiAgICAgICAgdmlydHVhbCBjb25zdCBjaGFyICptb2RlbE5h
bWUodm9pZCkgPSAwOwp9OwojIDI1ICJHZW5vdHlwZVNlYXJjaGVyLmgiIDIKCmNsYXNzIEdlbm90
eXBlU2VhcmNoZXIgOiBwdWJsaWMgQWJzdHJhY3RHZW5vdHlwZVNlYXJjaGVyIHsKICAgICAgICBw
cml2YXRlOgogICAgICAgIGlubGluZSB1bnNpZ25lZCBHZW5vdHlwZVNlYXJjaGVyOjppbmNDb3Vu
dHNGb3JBQyh1bnNpZ25lZCBhY0Nob2ljZSwgR1RTTGluZSBsaW5lKTsKICAgICAgICBpbmxpbmUg
dW5zaWduZWQgR2Vub3R5cGVTZWFyY2hlcjo6bG9jdXNGcm9tSWQodW5zaWduZWQgaWQsIHVuc2ln
bmVkIHBvcyk7CgogICAgICAgIHB1YmxpYzoKICAgICAgICBHZW5vdHlwZVNlYXJjaGVyKEFic3Ry
YWN0R2Vub3R5cGVTZXQgKnNldCwgaW50IGNhcmRpbmFsaXR5ID0gMSwgTUZTZWFyY2hQYXJhbWV0
ZXJzIHAgPSAoKE1GU2VhcmNoUGFyYW1ldGVycyl7MiwxLDEsMX0pKTsKICAgICAgICBHZW5vdHlw
ZVNlYXJjaGVyKHZvaWQpOwogICAgICAgIHZpcnR1YWwgfkdlbm90eXBlU2VhcmNoZXIodm9pZCk7
CgogICAgICAgIHVuc2lnbmVkIGluZGljYXRvclNjb3JlRm9yR1RTTGluZShHVFNMaW5lIGdlbm90
eXBlLCB1bnNpZ25lZCBJYWMpOwogICAgICAgIHZvaWQgZGlnZXN0U2luZ2xlRGF0YSh1bnNpZ25l
ZCBpKTsKICAgICAgICBjb25zdCBjaGFyICptb2RlbE5hbWUodm9pZCkgeyByZXR1cm4gIkFkZGl0
aXZlIjsgfQogICAgICAgIHVuc2lnbmVkIG1heGltYWxTY29yZSh2b2lkKSB7IHJldHVybiAxIDw8
IF9jYXJkaW5hbGl0eTsgfTsKfTsKIyAyMiAiRnVsbEdlbm90eXBlU2VhcmNoZXIuaCIgMgoKCgoK
CmNsYXNzIEZ1bGxHZW5vdHlwZVNlYXJjaGVyIDogcHVibGljIEFic3RyYWN0R2Vub3R5cGVTZWFy
Y2hlciB7CnByaXZhdGU6CiAgICAgICAgaW5saW5lIHVuc2lnbmVkIEZ1bGxHZW5vdHlwZVNlYXJj
aGVyOjppbmNDb3VudHNGb3JBQyhjb25zdCBjaGFyICpsaW5lMSwgY29uc3QgY2hhciAqbGluZTIp
OwoKcHJvdGVjdGVkOgoKICAgICAgICBpbnQgKmFsbGVsZUNvdW50OwpwdWJsaWM6CiAgICAgICAg
RnVsbEdlbm90eXBlU2VhcmNoZXI6OkZ1bGxHZW5vdHlwZVNlYXJjaGVyKEFic3RyYWN0R2Vub3R5
cGVTZXQgKnNldCwgaW50IGNhcmRpbmFsaXR5ID0gMSwgTUZTZWFyY2hQYXJhbWV0ZXJzIHAgPSAo
KE1GU2VhcmNoUGFyYW1ldGVycyl7MiwxLDEsMX0pKTsKICAgICAgICBGdWxsR2Vub3R5cGVTZWFy
Y2hlcjo6RnVsbEdlbm90eXBlU2VhcmNoZXIodm9pZCk7CiAgICAgICAgfkZ1bGxHZW5vdHlwZVNl
YXJjaGVyKCk7CgogICAgICAgIHZpcnR1YWwgdW5zaWduZWQgaW5kaWNhdG9yU2NvcmVGb3JHVFNM
aW5lKEdUU0xpbmUgbGluZSwgdW5zaWduZWQgYWMpOwogICAgICAgIHZvaWQgRnVsbEdlbm90eXBl
U2VhcmNoZXI6OmRpZ2VzdFNpbmdsZURhdGEodW5zaWduZWQgaSk7CiAgICAgICAgdm9pZCBGdWxs
R2Vub3R5cGVTZWFyY2hlcjo6cHJlcGFyZVNpbmdsZUNob2ljZSh2b2lkKTsKCiAgICAgICAgdmly
dHVhbCB2b2lkIHNldFNldFBhcmFtZXRlcnNDYXJkaW5hbGl0eShBYnN0cmFjdEdlbm90eXBlU2V0
ICpzZXQsIGludCBjYXJkaW5hbGl0eSwgTUZTZWFyY2hQYXJhbWV0ZXJzIHApOwogICAgICAgIHZp
cnR1YWwgY29uc3QgY2hhciAqbW9kZWxOYW1lKHZvaWQpIHsgcmV0dXJuICJHZW5vdHlwZXMiOyB9
CgogICAgICAgIHZpcnR1YWwgdW5zaWduZWQgbWF4aW1hbFNjb3JlKHZvaWQpIHsgcmV0dXJuIDE7
IH0KfTsKIyAxOSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIiAyCiMgMSAic3RhdGlzdGljcy9z
dGF0aXN0aWNzLmgiIDEKCgoKI2RlZmluZSBfU1RBVElTVElDU19ICgoKZXh0ZXJuICJDIiB7CgoK
ZmxvYXQgYmV0YWkoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgeCk7CmZsb2F0IGJldGFjZihmbG9h
dCBhLCBmbG9hdCBiLCBmbG9hdCB4KTsKZmxvYXQgZ2FtbWxuKGZsb2F0IHh4KTsKZmxvYXQgZ2Ft
bXEoZmxvYXQgYSwgZmxvYXQgeCk7CmZsb2F0IGVyZmZjKGZsb2F0IHgpOwpmbG9hdCBlcmZmKGZs
b2F0IHgpOwoKZmxvYXQgY2RmX0YoZmxvYXQgZiwgaW50IGRmMSwgaW50IGRmMik7CmZsb2F0IGNk
Zl9DaGlTcXVhcmUoZmxvYXQgYywgaW50IGRmKTsKZmxvYXQgY2RmX05vcm1hbChmbG9hdCBuKTsK
CgppbmxpbmUgZmxvYXQgT2Rkc1JhdGlvUyhpbnQgbjEsIGludCBuMVMsIGludCBuMiwgaW50IG4y
UykKewogICAgICAgIGZsb2F0IGYxID0gKGZsb2F0KSBuMSAvIG4xUywgZjIgPSAoZmxvYXQpIG4y
IC8gbjJTOwogICAgICAgIHJldHVybiAoZjEgLyAoMSAtIGYxKSkgLyAoZjIgLyAoMSAtIGYyKSk7
Cn0KCgppbmxpbmUgZmxvYXQgT2Rkc1JhdGlvKGludCBuMTEsIGludCBuMTIsIGludCBuMjEsIGlu
dCBuMjIpCnsKICAgICAgICByZXR1cm4gT2Rkc1JhdGlvUyhuMTEsIG4xMSArIG4xMiwgbjIxLCBu
MjEgKyBuMjIpOwp9Cgp2b2lkIGNudGFiMShpbnQgKipubiwgaW50IG5pLCBpbnQgbmosIGZsb2F0
ICpjaGlzcSwgZmxvYXQgKmRmLCBmbG9hdCAqcHJvYiwgZmxvYXQgKmNyYW1ydiwgZmxvYXQgKmNj
Yyk7CnZvaWQgVHdvQnlUd29Db250aW5nZW5jeVRhYmxlKGludCBuMTEsIGludCBuMTIsIGludCBu
MjEsIGludCBuMjIsIGZsb2F0ICpjaGlzcSwgZmxvYXQgKnByb2IsIGZsb2F0ICpjcmFtcnYsIGZs
b2F0ICpjY2MsIGZsb2F0ICpPUik7CgoKCnN0YXRpYyBpbmxpbmUgaW50IG9yZGVyZWRDb3VudChp
bnQgbikKewogICAgICAgIHJldHVybiAobiAqIG4gKyBuKSAvIDI7Cn0KCgoKZG91YmxlIHJhbmRv
bUdhbW1hKGRvdWJsZSBuLCBkb3VibGUgbGFtYmRhKTsKCgoKCnZvaWQgcmFuZG9tRGlyaWNobGV0
KGNvbnN0IGRvdWJsZSAqIGEsIGNvbnN0IGludCBrLCBkb3VibGUgKiBiKTsKbG9uZyByYW5kb21Q
b2lzc29uKGRvdWJsZSBsYW1iZGEpOwpkb3VibGUgcmFuZG9tTm9ybWFsKGRvdWJsZSBtdSxkb3Vi
bGUgc2lnc3EpOwojZGVmaW5lIHJhbmRvbVN0YW5kYXJkTm9ybWFsKCkgcmFuZG9tTm9ybWFsKDAs
IDEpCmRvdWJsZSByYW5kb21FeHBvbmVudGlhbChkb3VibGUgbGFtYmRhKTsKbG9uZyByYW5kb21Q
b2lzc29uKGRvdWJsZSBtdSk7CgoKCn0KIyAyMCAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIiAy
CiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMKIyAyNSAiL3Vzci9pbmNsdWRlL2Fzc2Vy
dC5oIiAzCiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9J
RF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKIyAx
ICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzCiMgMzcgIi91c3IvaW5jbHVkZS9hc3NlcnQu
aCIgMiAzCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA2
NSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzCmV4dGVybiAiQyIgewoKCmV4dGVybiB2b2lkIF9f
YXNzZXJ0X2ZhaWwgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sIF9fY29uc3QgY2hhciAqX19m
aWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX19saW5lLCBfX2Nv
bnN0IGNoYXIgKl9fZnVuY3Rpb24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9y
ZXR1cm5fXykpOwoKCmV4dGVybiB2b2lkIF9fYXNzZXJ0X3BlcnJvcl9mYWlsIChpbnQgX19lcnJu
dW0sIF9fY29uc3QgY2hhciAqX19maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IF9fbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9fY29uc3QgY2hhciAqX19mdW5jdGlvbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo
X19ub3JldHVybl9fKSk7CgoKCgpleHRlcm4gdm9pZCBfX2Fzc2VydCAoY29uc3QgY2hhciAqX19h
c3NlcnRpb24sIGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fbGluZSkKICAgICB0aHJvdyAoKSBf
X2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKfQoKI2RlZmluZSBhc3NlcnQoZXhwcikg
KF9fQVNTRVJUX1ZPSURfQ0FTVCAoKGV4cHIpID8gMCA6IChfX2Fzc2VydF9mYWlsIChfX1NUUklO
RyhleHByKSwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTiksIDApKSkKCgoK
CgojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9DQVNUICghKGVy
cm51bSkgPyAwIDogKF9fYXNzZXJ0X3BlcnJvcl9mYWlsICgoZXJybnVtKSwgX19GSUxFX18sIF9f
TElORV9fLCBfX0FTU0VSVF9GVU5DVElPTiksIDApKSkKIyAxMDUgIi91c3IvaW5jbHVkZS9hc3Nl
cnQuaCIgMwojZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OIF9fUFJFVFRZX0ZVTkNUSU9OX18KIyAy
MSAiRnVsbEdlbm90eXBlU2VhcmNoZXIuY3BwIiAyCgpGdWxsR2Vub3R5cGVTZWFyY2hlcjo6RnVs
bEdlbm90eXBlU2VhcmNoZXIoQWJzdHJhY3RHZW5vdHlwZVNldCAqc2V0LCBpbnQgY2FyZGluYWxp
dHksIE1GU2VhcmNoUGFyYW1ldGVycyBwKQogICAgICAgIDogQWJzdHJhY3RHZW5vdHlwZVNlYXJj
aGVyKHNldCwgY2FyZGluYWxpdHksIHApCnsKICAgICAgICBhbGxlbGVDb3VudCA9IG5ldyBpbnRb
X2NhcmRpbmFsaXR5XTsKfQoKRnVsbEdlbm90eXBlU2VhcmNoZXI6OkZ1bGxHZW5vdHlwZVNlYXJj
aGVyKHZvaWQpCiAgICAgICAgOiBBYnN0cmFjdEdlbm90eXBlU2VhcmNoZXIoKQp7Cn0KCkZ1bGxH
ZW5vdHlwZVNlYXJjaGVyOjp+RnVsbEdlbm90eXBlU2VhcmNoZXIoKXsKICAgICAgICBkZWxldGUg
YWxsZWxlQ291bnQ7Cn0KCnZvaWQgRnVsbEdlbm90eXBlU2VhcmNoZXI6OnNldFNldFBhcmFtZXRl
cnNDYXJkaW5hbGl0eShBYnN0cmFjdEdlbm90eXBlU2V0ICpzZXQsIGludCBjYXJkaW5hbGl0eSwg
TUZTZWFyY2hQYXJhbWV0ZXJzIHApCnsKICAgICAgICBBYnN0cmFjdEdlbm90eXBlU2VhcmNoZXI6
OnNldFNldFBhcmFtZXRlcnNDYXJkaW5hbGl0eShzZXQsIGNhcmRpbmFsaXR5LCBwKTsKICAgICAg
ICBhbGxlbGVDb3VudCA9IG5ldyBpbnRbX2NhcmRpbmFsaXR5XTsKfQoKaW5saW5lIHVuc2lnbmVk
IEZ1bGxHZW5vdHlwZVNlYXJjaGVyOjppbmNDb3VudHNGb3JBQyhjb25zdCBjaGFyICpsaW5lMSwg
Y29uc3QgY2hhciAqbGluZTIpCnsKICAgICAgICB1bnNpZ25lZCBpLCBhYzsKICAgICAgICBjaGFy
IGExLCBhMjsKCgogICAgICAgIGZvciAoaSA9IGFjID0gMDsgaSA8IF9jYXJkaW5hbGl0eTsgaSsr
KQogICAgICAgIHsKICAgICAgICAgICAgICAgIGExID0gbGluZTFbbG9jaS0+Y2hvaWNlQXRJbmRl
eChpKV07CiAgICAgICAgICAgICAgICBhMiA9IGxpbmUyW2xvY2ktPmNob2ljZUF0SW5kZXgoaSld
OwogICAgICAgICAgICAgICAgaWYgKGExID09ICgtMSkgfHwgYTIgPT0gKC0xKSkgcmV0dXJuICgo
dW5zaWduZWQpLTEpOwoKICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoKGExIDw9
IGEyKSA/IDAgOiAoX19hc3NlcnRfZmFpbCAoImExIDw9IGEyIiwgIkZ1bGxHZW5vdHlwZVNlYXJj
aGVyLmNwcCIsIDU1LCBfX1BSRVRUWV9GVU5DVElPTl9fKSwgMCkpKTsKCiAgICAgICAgICAgICAg
ICBhYyArPSBhY0NvdW50W2kgKyAxXSAqIChvcmRlcmVkQ291bnQoYTIpICsgYTEpOwogICAgICAg
IH0KCiAgICAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgoYWMgPCBhY0NvdW50WzBdKSA/IDAgOiAo
X19hc3NlcnRfZmFpbCAoImFjIDwgYWNDb3VudFswXSIsICJGdWxsR2Vub3R5cGVTZWFyY2hlci5j
cHAiLCA2MCwgX19QUkVUVFlfRlVOQ1RJT05fXyksIDApKSk7CiAgICAgICAgcmV0dXJuIGFjOwp9
Cgp2b2lkIEZ1bGxHZW5vdHlwZVNlYXJjaGVyOjpkaWdlc3RTaW5nbGVEYXRhKHVuc2lnbmVkIGkp
CnsKICAgICAgICBHVFNMaW5lIGdlbm90eXBlID0gZ2Vub3R5cGVzLT5nZW5vdHlwZUF0SW5kZXgo
aSk7CiAgICAgICAgQk9PTCBwaGVub3R5cGUgPSBnZW5vdHlwZXMtPnBoZW5vdHlwZUF0SW5kZXgo
aSk7CgogICAgICAgIHVuc2lnbmVkIGFjID0gaW5jQ291bnRzRm9yQUMoZ2Vub3R5cGUubFswXSwg
Z2Vub3R5cGUubFsxXSk7CiAgICAgICAgaWYgKHBoZW5vdHlwZSkKICAgICAgICB7IGFjQ291bnRz
W2FjXS5jWzFdKys7CiAgICAgICAgICAgICAgICBwb3NDb3VudCsrOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICBhY0NvdW50c1thY10uY1swXSsrOwogICAgICAgICAgICAgICAgbmVn
Q291bnQrKzsKICAgICAgICB9Cn0KCnVuc2lnbmVkIEZ1bGxHZW5vdHlwZVNlYXJjaGVyOjppbmRp
Y2F0b3JTY29yZUZvckdUU0xpbmUoR1RTTGluZSBsaW5lLCB1bnNpZ25lZCBJYWMpCnsKICAgICAg
ICB1bnNpZ25lZCBhYyA9IGluY0NvdW50c0ZvckFDKGxpbmUubFswXSwgbGluZS5sWzFdKTsKCiAg
ICAgICAgcmV0dXJuIGFjID09IElhYz8gMTogMDsKfQoKdm9pZCBGdWxsR2Vub3R5cGVTZWFyY2hl
cjo6cHJlcGFyZVNpbmdsZUNob2ljZSh2b2lkKQp7IGludCBpOwoKCiAgICAgICAgZm9yIChhY0Nv
dW50W2kgPSBfY2FyZGluYWxpdHldID0gMTsgLS1pID49IDA7ICkKICAgICAgICB7CiAgICAgICAg
ICAgICAgICBhbGxlbGVDb3VudFtpXSA9IGdlbm90eXBlcy0+YWxsZWxlQ291bnRGb3JMb2N1cyhs
b2NpLT5jaG9pY2VBdEluZGV4KGkpKTsKICAgICAgICAgICAgICAgIGFjQ291bnRbaV0gPSBvcmRl
cmVkQ291bnQoYWxsZWxlQ291bnRbaV0pICogYWNDb3VudFtpICsgMV07CiAgICAgICAgfQogICAg
ICAgIHBvc0NvdW50ID0gbmVnQ291bnQgPSAwOwogICAgICAgIGFjQ291bnRzID0gKEFDY29sbGVj
dGlvbiAqKWNhbGxvYyhzaXplb2YoQUNjb2xsZWN0aW9uKSwgYWNDb3VudFswXSk7Cn0K


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: c++/4153: internal compiler error
@ 2001-08-31 11:20 lerdsuwa
  0 siblings, 0 replies; 2+ messages in thread
From: lerdsuwa @ 2001-08-31 11:20 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, nobody, stefan.boehringer+usenet

Synopsis: internal compiler error

State-Changed-From-To: open->closed
State-Changed-By: lerdsuwa
State-Changed-When: Fri Aug 31 11:20:15 2001
State-Changed-Why:
    Fixed in the gcc CVS main trunk.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view&pr=4153&database=gcc


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2001-08-31 11:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-28  0:26 c++/4153: internal compiler error stefan.boehringer+usenet
2001-08-31 11:20 lerdsuwa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).