public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* c++/4602: error message suggests use of typename in /usr/include/g++-3/stl_iterator.h
@ 2001-10-17 23:26 magarwal
  0 siblings, 0 replies; 2+ messages in thread
From: magarwal @ 2001-10-17 23:26 UTC (permalink / raw)
  To: gcc-gnats; +Cc: skjain

>Number:         4602
>Category:       c++
>Synopsis:       error message suggests use of typename in /usr/include/g++-3/stl_iterator.h
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 17 23:26:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Mohit Agarwal
>Release:        g++-3
>Organization:
>Environment:
GNU/LINUX
>Description:
I was trying to compile Rougewave on linux. I got following error message :

/******************************

/usr/include/g++-3/stl_iterator.h:102: `_Iterator::iterator_category' 
is not a valid declarator
/usr/include/g++-3/stl_iterator.h:102:   perhaps you want `typename 
_Iterator::iterator_category' to make it a type
/usr/include/g++-3/stl_iterator.h:102: parse error before `;'
/usr/include/g++-3/stl_iterator.h:103: `_Iterator::value_type' is not a 
valid declarator
/usr/include/g++-3/stl_iterator.h:103:   perhaps you want `typename 
_Iterator::value_type' to make it a type
/usr/include/g++-3/stl_iterator.h:103: parse error before `;'
/usr/include/g++-3/stl_iterator.h:104: `_Iterator::difference_type' is 
not a valid declarator
/usr/include/g++-3/stl_iterator.h:104:   perhaps you want `typename 
_Iterator::difference_type' to make it a type
/usr/include/g++-3/stl_iterator.h:104: parse error before `;'
/usr/include/g++-3/stl_iterator.h:105: `_Iterator::pointer' is not a 
valid declarator
/usr/include/g++-3/stl_iterator.h:105:   perhaps you want `typename 
_Iterator::pointer' to make it a type
/usr/include/g++-3/stl_iterator.h:105: parse error before `;'
/usr/include/g++-3/stl_iterator.h:106: `_Iterator::reference' is not a 
valid declarator
/usr/include/g++-3/stl_iterator.h:106:   perhaps you want `typename 
_Iterator::reference' to make it a type
/usr/include/g++-3/stl_iterator.h:106: parse error before `;'
/usr/include/g++-3/stl_iterator.h:136: syntax error before `('
/usr/include/g++-3/stl_iterator.h:136: Internal error #19990916.
/usr/include/g++-3/stl_iterator.h:136: Internal compiler error in 
poplevel, at ../gcc/cp/decl.c:1315
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
/*********************************8

Please suggest the cause and solution of the error. I am working in Cadence 
Design Systems. I took your address from url given in error message. Hoping to 
receive your help ASAP.
>How-To-Repeat:
try compiling rougewave with g++-3 on gnu/linux.
>Fix:
expected
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="stl_iterator.h"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="stl_iterator.h"

LyoKICoKICogQ29weXJpZ2h0IChjKSAxOTk0CiAqIEhld2xldHQtUGFja2FyZCBDb21wYW55CiAq
CiAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwg
dGhpcyBzb2Z0d2FyZQogKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlz
IGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLAogKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAogKiB0aGF0IGJvdGggdGhh
dCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhcgogKiBp
biBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24uICBIZXdsZXR0LVBhY2thcmQgQ29tcGFueSBtYWtl
cyBubwogKiByZXByZXNlbnRhdGlvbnMgYWJvdXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29m
dHdhcmUgZm9yIGFueQogKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0
IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KICoKICoKICogQ29weXJpZ2h0IChjKSAxOTk2
LTE5OTgKICogU2lsaWNvbiBHcmFwaGljcyBDb21wdXRlciBTeXN0ZW1zLCBJbmMuCiAqCiAqIFBl
cm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUgYW5kIHNlbGwgdGhpcyBz
b2Z0d2FyZQogKiBhbmQgaXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVi
eSBncmFudGVkIHdpdGhvdXQgZmVlLAogKiBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmln
aHQgbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzIGFuZAogKiB0aGF0IGJvdGggdGhhdCBjb3B5
cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhcgogKiBpbiBzdXBw
b3J0aW5nIGRvY3VtZW50YXRpb24uICBTaWxpY29uIEdyYXBoaWNzIG1ha2VzIG5vCiAqIHJlcHJl
c2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55
CiAqIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvciBp
bXBsaWVkIHdhcnJhbnR5LgogKi8KCi8qIE5PVEU6IFRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVy
IGZpbGUsIGluY2x1ZGVkIGJ5IG90aGVyIFNUTCBoZWFkZXJzLgogKiAgIFlvdSBzaG91bGQgbm90
IGF0dGVtcHQgdG8gdXNlIGl0IGRpcmVjdGx5LgogKi8KCiNpZm5kZWYgX19TR0lfU1RMX0lOVEVS
TkFMX0lURVJBVE9SX0gKI2RlZmluZSBfX1NHSV9TVExfSU5URVJOQUxfSVRFUkFUT1JfSAoKX19T
VExfQkVHSU5fTkFNRVNQQUNFCgpzdHJ1Y3QgaW5wdXRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3Qg
b3V0cHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IGZvcndhcmRfaXRlcmF0b3JfdGFnIDogcHVi
bGljIGlucHV0X2l0ZXJhdG9yX3RhZyB7fTsKc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf
dGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHt9OwpzdHJ1Y3QgcmFuZG9tX2FjY2Vz
c19pdGVyYXRvcl90YWcgOiBwdWJsaWMgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcge307Cgov
LyBUaGUgYmFzZSBjbGFzc2VzIGlucHV0X2l0ZXJhdG9yLCBvdXRwdXRfaXRlcmF0b3IsIGZvcndh
cmRfaXRlcmF0b3IsCi8vIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3IsIGFuZCByYW5kb21fYWNjZXNz
X2l0ZXJhdG9yIGFyZSBub3QgcGFydCBvZgovLyB0aGUgQysrIHN0YW5kYXJkLiAgKHRoZXkgaGF2
ZSBiZWVuIHJlcGxhY2VkIGJ5IHN0cnVjdCBpdGVyYXRvci4pCi8vIFRoZXkgYXJlIGluY2x1ZGVk
IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIEhQIFNUTC4KCnRlbXBsYXRlIDxj
bGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gc3RydWN0IGlucHV0X2l0ZXJhdG9yIHsKICB0eXBl
ZGVmIGlucHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAg
ICAgICAgICAgICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAgICAgIGRp
ZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICBwb2ludGVyOwogIHR5
cGVkZWYgX1RwJiAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKfTsKCnN0cnVjdCBvdXRwdXRfaXRl
cmF0b3IgewogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsK
ICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHZvaWQg
ICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAg
ICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07
Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IHN0cnVjdCBmb3J3YXJkX2l0
ZXJhdG9yIHsKICB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5
OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9E
aXN0YW5jZSAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAg
ICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBfVHAmICAgICAgICAgICAgICAgICByZWZlcmVu
Y2U7Cn07CgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgYmlk
aXJlY3Rpb25hbF9pdGVyYXRvciB7CiAgdHlwZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3Rh
ZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAgICAgICAgICBkaWZmZXJl
bmNlX3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwog
IHR5cGVkZWYgX1RwJiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxh
dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiBzdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVy
YXRvciB7CiAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRl
Z29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAg
dHlwZWRlZiBfRGlzdGFuY2UgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAgdHlw
ZWRlZiBfVHAqICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgX1RwJiAg
ICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKdGVtcGxhdGUgPGNsYXNzIF9DYXRl
Z29yeSwgY2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2UgPSBwdHJkaWZmX3QsCiAgICAgICAgICBj
bGFzcyBfUG9pbnRlciA9IF9UcCosIGNsYXNzIF9SZWZlcmVuY2UgPSBfVHAmPgpzdHJ1Y3QgaXRl
cmF0b3IgewogIHR5cGVkZWYgX0NhdGVnb3J5ICBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVm
IF9UcCAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgZGlmZmVyZW5jZV90
eXBlOwogIHR5cGVkZWYgX1BvaW50ZXIgICBwb2ludGVyOwogIHR5cGVkZWYgX1JlZmVyZW5jZSBy
ZWZlcmVuY2U7Cn07CgojaWZkZWYgX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTgoK
dGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4Kc3RydWN0IGl0ZXJhdG9yX3RyYWl0cyB7CiAgdHlw
ZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6Oml0ZXJhdG9yX2NhdGVnb3J5IGl0ZXJhdG9yX2NhdGVn
b3J5OwogIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjp2YWx1ZV90eXBlICAgICAgICB2YWx1
ZV90eXBlOwogIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUgICBk
aWZmZXJlbmNlX3R5cGU7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnBvaW50ZXIgICAg
ICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnJlZmVyZW5jZSAg
ICAgICAgIHJlZmVyZW5jZTsKfTsKCnRlbXBsYXRlIDxjbGFzcyBfVHA+CnN0cnVjdCBpdGVyYXRv
cl90cmFpdHM8X1RwKj4gewogIHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgaXRl
cmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICAgICAgICAgdmFs
dWVfdHlwZTsKICB0eXBlZGVmIHB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNl
X3R5cGU7CiAgdHlwZWRlZiBfVHAqICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKICB0
eXBlZGVmIF9UcCYgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Cn07Cgp0ZW1wbGF0
ZSA8Y2xhc3MgX1RwPgpzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPGNvbnN0IF9UcCo+IHsKICB0eXBl
ZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVk
ZWYgX1RwICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRlZiBwdHJk
aWZmX3QgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgY29uc3Qg
X1RwKiAgICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiBjb25zdCBfVHAmICAgICAg
ICAgICAgICAgICAgcmVmZXJlbmNlOwp9OwoKLy8gVGhlIG92ZXJsb2FkZWQgZnVuY3Rpb25zIGl0
ZXJhdG9yX2NhdGVnb3J5LCBkaXN0YW5jZV90eXBlLCBhbmQKLy8gdmFsdWVfdHlwZSBhcmUgbm90
IHBhcnQgb2YgdGhlIEMrKyBzdGFuZGFyZC4gIChUaGV5IGhhdmUgYmVlbgovLyByZXBsYWNlZCBi
eSBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzLikgIFRoZXkgYXJlIGluY2x1ZGVkIGZvcgovLyBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIEhQIFNUTC4KCi8vIFdlIGludHJvZHVjZSBpbnRl
cm5hbCBuYW1lcyBmb3IgdGhlc2UgZnVuY3Rpb25zLgoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgpp
bmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6aXRlcmF0b3JfY2F0ZWdvcnkK
X19pdGVyYXRvcl9jYXRlZ29yeShjb25zdCBfSXRlciYpCnsKICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRlZ29yeTsKICByZXR1
cm4gX0NhdGVnb3J5KCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OmRpZmZlcmVuY2VfdHlwZSoKX19kaXN0YW5jZV90eXBl
KGNvbnN0IF9JdGVyJikKewogIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBpdGVyYXRvcl90
cmFpdHM8X0l0ZXI+OjpkaWZmZXJlbmNlX3R5cGUqPigwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9J
dGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyPjo6dmFsdWVfdHlwZSoK
X192YWx1ZV90eXBlKGNvbnN0IF9JdGVyJikKewogIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFt
ZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXI+Ojp2YWx1ZV90eXBlKj4oMCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfSXRlcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46Oml0ZXJh
dG9yX2NhdGVnb3J5Cml0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IF9JdGVyJiBfX2kpIHsgcmV0dXJu
IF9faXRlcmF0b3JfY2F0ZWdvcnkoX19pKTsgfQoKCnRlbXBsYXRlIDxjbGFzcyBfSXRlcj4KaW5s
aW5lIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46OmRpZmZlcmVuY2VfdHlwZSoKZGlz
dGFuY2VfdHlwZShjb25zdCBfSXRlciYgX19pKSB7IHJldHVybiBfX2Rpc3RhbmNlX3R5cGUoX19p
KTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJh
aXRzPF9JdGVyPjo6dmFsdWVfdHlwZSoKdmFsdWVfdHlwZShjb25zdCBfSXRlciYgX19pKSB7IHJl
dHVybiBfX3ZhbHVlX3R5cGUoX19pKTsgfQoKI2RlZmluZSBfX0lURVJBVE9SX0NBVEVHT1JZKF9f
aSkgX19pdGVyYXRvcl9jYXRlZ29yeShfX2kpCiNkZWZpbmUgX19ESVNUQU5DRV9UWVBFKF9faSkg
ICAgIF9fZGlzdGFuY2VfdHlwZShfX2kpCiNkZWZpbmUgX19WQUxVRV9UWVBFKF9faSkgICAgICAg
IF9fdmFsdWVfdHlwZShfX2kpCgojZWxzZSAvKiBfX1NUTF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJ
WkFUSU9OICovCgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IAppbmxpbmUg
aW5wdXRfaXRlcmF0b3JfdGFnIAppdGVyYXRvcl9jYXRlZ29yeShjb25zdCBpbnB1dF9pdGVyYXRv
cjxfVHAsIF9EaXN0YW5jZT4mKQogIHsgcmV0dXJuIGlucHV0X2l0ZXJhdG9yX3RhZygpOyB9Cgpp
bmxpbmUgb3V0cHV0X2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeShjb25zdCBvdXRwdXRf
aXRlcmF0b3ImKQogIHsgcmV0dXJuIG91dHB1dF9pdGVyYXRvcl90YWcoKTsgfQoKdGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiAKaW5saW5lIGZvcndhcmRfaXRlcmF0b3JfdGFn
Cml0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IGZvcndhcmRfaXRlcmF0b3I8X1RwLCBfRGlzdGFuY2U+
JikKICB7IHJldHVybiBmb3J3YXJkX2l0ZXJhdG9yX3RhZygpOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3Mg
X1RwLCBjbGFzcyBfRGlzdGFuY2U+IAppbmxpbmUgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcK
aXRlcmF0b3JfY2F0ZWdvcnkoY29uc3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcjxfVHAsIF9EaXN0
YW5jZT4mKQogIHsgcmV0dXJuIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnKCk7IH0KCnRlbXBs
YXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gCmlubGluZSByYW5kb21fYWNjZXNzX2l0
ZXJhdG9yX3RhZwppdGVyYXRvcl9jYXRlZ29yeShjb25zdCByYW5kb21fYWNjZXNzX2l0ZXJhdG9y
PF9UcCwgX0Rpc3RhbmNlPiYpCiAgeyByZXR1cm4gcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWco
KTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3Jf
dGFnIGl0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IF9UcCopCiAgeyByZXR1cm4gcmFuZG9tX2FjY2Vz
c19pdGVyYXRvcl90YWcoKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNl
PiAKaW5saW5lIF9UcCogdmFsdWVfdHlwZShjb25zdCBpbnB1dF9pdGVyYXRvcjxfVHAsIF9EaXN0
YW5jZT4mKQogIHsgcmV0dXJuIChfVHAqKSgwKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xh
c3MgX0Rpc3RhbmNlPiAKaW5saW5lIF9UcCogdmFsdWVfdHlwZShjb25zdCBmb3J3YXJkX2l0ZXJh
dG9yPF9UcCwgX0Rpc3RhbmNlPiYpCiAgeyByZXR1cm4gKF9UcCopKDApOyB9Cgp0ZW1wbGF0ZSA8
Y2xhc3MgX1RwLCBjbGFzcyBfRGlzdGFuY2U+IAppbmxpbmUgX1RwKiB2YWx1ZV90eXBlKGNvbnN0
IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X1RwLCBfRGlzdGFuY2U+JikKICB7IHJldHVybiAoX1Rw
KikoMCk7IH0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gCmlubGluZSBf
VHAqIHZhbHVlX3R5cGUoY29uc3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxfVHAsIF9EaXN0YW5j
ZT4mKQogIHsgcmV0dXJuIChfVHAqKSgwKTsgfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5l
IF9UcCogdmFsdWVfdHlwZShjb25zdCBfVHAqKSB7IHJldHVybiAoX1RwKikoMCk7IH0KCnRlbXBs
YXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5jZT4gCmlubGluZSBfRGlzdGFuY2UqIGRpc3Rh
bmNlX3R5cGUoY29uc3QgaW5wdXRfaXRlcmF0b3I8X1RwLCBfRGlzdGFuY2U+JikKewogIHJldHVy
biAoX0Rpc3RhbmNlKikoMCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHAsIGNsYXNzIF9EaXN0YW5j
ZT4gCmlubGluZSBfRGlzdGFuY2UqIGRpc3RhbmNlX3R5cGUoY29uc3QgZm9yd2FyZF9pdGVyYXRv
cjxfVHAsIF9EaXN0YW5jZT4mKQp7CiAgcmV0dXJuIChfRGlzdGFuY2UqKSgwKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3RhbmNlPiAKaW5saW5lIF9EaXN0YW5jZSogCmRpc3Rh
bmNlX3R5cGUoY29uc3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mKQp7
CiAgcmV0dXJuIChfRGlzdGFuY2UqKSgwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xhc3Mg
X0Rpc3RhbmNlPiAKaW5saW5lIF9EaXN0YW5jZSogCmRpc3RhbmNlX3R5cGUoY29uc3QgcmFuZG9t
X2FjY2Vzc19pdGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mKQp7CiAgcmV0dXJuIChfRGlzdGFuY2Uq
KSgwKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9UcD4KaW5saW5lIHB0cmRpZmZfdCogZGlzdGFuY2Vf
dHlwZShjb25zdCBfVHAqKSB7IHJldHVybiAocHRyZGlmZl90KikoMCk7IH0KCi8vIFdpdGhvdXQg
cGFydGlhbCBzcGVjaWFsaXphdGlvbiB3ZSBjYW4ndCB1c2UgaXRlcmF0b3JfdHJhaXRzLCBzbwov
LyB3ZSBtdXN0IGtlZXAgdGhlIG9sZCBpdGVyYXRvciBxdWVyeSBmdW5jdGlvbnMgYXJvdW5kLiAg
CgojZGVmaW5lIF9fSVRFUkFUT1JfQ0FURUdPUlkoX19pKSBpdGVyYXRvcl9jYXRlZ29yeShfX2kp
CiNkZWZpbmUgX19ESVNUQU5DRV9UWVBFKF9faSkgICAgIGRpc3RhbmNlX3R5cGUoX19pKQojZGVm
aW5lIF9fVkFMVUVfVFlQRShfX2kpICAgICAgICB2YWx1ZV90eXBlKF9faSkKCiNlbmRpZiAvKiBf
X1NUTF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICovCgp0ZW1wbGF0ZSA8Y2xhc3MgX0lu
cHV0SXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19kaXN0YW5jZShfSW5w
dXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgX0Rpc3RhbmNlJiBfX24sIGlucHV0X2l0ZXJhdG9yX3RhZykKewogIHdoaWxlIChf
X2ZpcnN0ICE9IF9fbGFzdCkgeyArK19fZmlyc3Q7ICsrX19uOyB9Cn0KCnRlbXBsYXRlIDxjbGFz
cyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19k
aXN0YW5jZShfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19maXJzdCwgCiAgICAgICAgICAgICAgICAg
ICAgICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yIF9fbGFzdCwgCiAgICAgICAgICAgICAgICAgICAg
ICAgX0Rpc3RhbmNlJiBfX24sIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQp7CiAgX19uICs9
IF9fbGFzdCAtIF9fZmlyc3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xh
c3MgX0Rpc3RhbmNlPgppbmxpbmUgdm9pZCBkaXN0YW5jZShfSW5wdXRJdGVyYXRvciBfX2ZpcnN0
LCAKICAgICAgICAgICAgICAgICAgICAgX0lucHV0SXRlcmF0b3IgX19sYXN0LCBfRGlzdGFuY2Um
IF9fbikKewogIF9fZGlzdGFuY2UoX19maXJzdCwgX19sYXN0LCBfX24sIGl0ZXJhdG9yX2NhdGVn
b3J5KF9fZmlyc3QpKTsKfQoKI2lmZGVmIF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BFQ0lBTElaQVRJ
T04KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0ZXJh
dG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9J
bnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCwgaW5wdXRfaXRlcmF0
b3JfdGFnKQp7CiAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlm
ZmVyZW5jZV90eXBlIF9fbiA9IDA7CiAgd2hpbGUgKF9fZmlyc3QgIT0gX19sYXN0KSB7CiAgICAr
K19fZmlyc3Q7ICsrX19uOwogIH0KICByZXR1cm4gX19uOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yPgppbmxpbmUgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9SYW5k
b21BY2Nlc3NJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpfX2Rpc3RhbmNlKF9SYW5kb21BY2Nl
c3NJdGVyYXRvciBfX2ZpcnN0LCBfUmFuZG9tQWNjZXNzSXRlcmF0b3IgX19sYXN0LAogICAgICAg
ICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKSB7CiAgcmV0dXJuIF9fbGFzdCAtIF9fZmly
c3Q7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvcj4KaW5saW5lIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQpkaXN0YW5jZShf
SW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QpIHsKICB0eXBlZGVm
IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVn
b3J5IAogICAgX0NhdGVnb3J5OwogIHJldHVybiBfX2Rpc3RhbmNlKF9fZmlyc3QsIF9fbGFzdCwg
X0NhdGVnb3J5KCkpOwp9CgojZW5kaWYgLyogX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpB
VElPTiAqLwoKdGVtcGxhdGUgPGNsYXNzIF9JbnB1dEl0ZXIsIGNsYXNzIF9EaXN0YW5jZT4KaW5s
aW5lIHZvaWQgX19hZHZhbmNlKF9JbnB1dEl0ZXImIF9faSwgX0Rpc3RhbmNlIF9fbiwgaW5wdXRf
aXRlcmF0b3JfdGFnKSB7CiAgd2hpbGUgKF9fbi0tKSArK19faTsKfQoKI2lmIGRlZmluZWQoX19z
Z2kpICYmICFkZWZpbmVkKF9fR05VQ19fKSAmJiAoX01JUFNfU0lNICE9IF9NSVBTX1NJTV9BQkkz
MikKI3ByYWdtYSBzZXQgd29mZiAxMTgzCiNlbmRpZgoKdGVtcGxhdGUgPGNsYXNzIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHZvaWQgX19hZHZhbmNlKF9C
aWRpcmVjdGlvbmFsSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwgCiAgICAgICAgICAgICAg
ICAgICAgICBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZykgewogIGlmIChfX24gPj0gMCkKICAg
IHdoaWxlIChfX24tLSkgKytfX2k7CiAgZWxzZQogICAgd2hpbGUgKF9fbisrKSAtLV9faTsKfQoK
I2lmIGRlZmluZWQoX19zZ2kpICYmICFkZWZpbmVkKF9fR05VQ19fKSAmJiAoX01JUFNfU0lNICE9
IF9NSVBTX1NJTV9BQkkzMikKI3ByYWdtYSByZXNldCB3b2ZmIDExODMKI2VuZGlmCgp0ZW1wbGF0
ZSA8Y2xhc3MgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyBfRGlzdGFuY2U+CmlubGluZSB2
b2lkIF9fYWR2YW5jZShfUmFuZG9tQWNjZXNzSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwg
CiAgICAgICAgICAgICAgICAgICAgICByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykgewogIF9f
aSArPSBfX247Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSW5wdXRJdGVyYXRvciwgY2xhc3MgX0Rpc3Rh
bmNlPgppbmxpbmUgdm9pZCBhZHZhbmNlKF9JbnB1dEl0ZXJhdG9yJiBfX2ksIF9EaXN0YW5jZSBf
X24pIHsKICBfX2FkdmFuY2UoX19pLCBfX24sIGl0ZXJhdG9yX2NhdGVnb3J5KF9faSkpOwp9Cgp0
ZW1wbGF0ZSA8Y2xhc3MgX0NvbnRhaW5lcj4KY2xhc3MgYmFja19pbnNlcnRfaXRlcmF0b3Igewpw
cm90ZWN0ZWQ6CiAgX0NvbnRhaW5lciogY29udGFpbmVyOwpwdWJsaWM6CiAgdHlwZWRlZiBfQ29u
dGFpbmVyICAgICAgICAgIGNvbnRhaW5lcl90eXBlOwogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9y
X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFs
dWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwog
IHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAg
ICAgICAgICAgICByZWZlcmVuY2U7CgogIGV4cGxpY2l0IGJhY2tfaW5zZXJ0X2l0ZXJhdG9yKF9D
b250YWluZXImIF9feCkgOiBjb250YWluZXIoJl9feCkge30KICBiYWNrX2luc2VydF9pdGVyYXRv
cjxfQ29udGFpbmVyPiYKICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUgX0NvbnRhaW5lcjo6dmFs
dWVfdHlwZSYgX192YWx1ZSkgeyAKICAgIGNvbnRhaW5lci0+cHVzaF9iYWNrKF9fdmFsdWUpOwog
ICAgcmV0dXJuICp0aGlzOwogIH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYg
b3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29u
dGFpbmVyPiYgb3BlcmF0b3IrKygpIHsgcmV0dXJuICp0aGlzOyB9CiAgYmFja19pbnNlcnRfaXRl
cmF0b3I8X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfQp9OwoK
I2lmbmRlZiBfX1NUTF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCgp0ZW1wbGF0ZSA8Y2xh
c3MgX0NvbnRhaW5lcj4KaW5saW5lIG91dHB1dF9pdGVyYXRvcl90YWcKaXRlcmF0b3JfY2F0ZWdv
cnkoY29uc3QgYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mKQp7CiAgcmV0dXJuIG91
dHB1dF9pdGVyYXRvcl90YWcoKTsKfQoKI2VuZGlmIC8qIF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BF
Q0lBTElaQVRJT04gKi8KCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgppbmxpbmUgYmFja19p
bnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4gYmFja19pbnNlcnRlcihfQ29udGFpbmVyJiBfX3gp
IHsKICByZXR1cm4gYmFja19pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194KTsKfQoKdGVt
cGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmNsYXNzIGZyb250X2luc2VydF9pdGVyYXRvciB7CnBy
b3RlY3RlZDoKICBfQ29udGFpbmVyKiBjb250YWluZXI7CnB1YmxpYzoKICB0eXBlZGVmIF9Db250
YWluZXIgICAgICAgICAgY29udGFpbmVyX3R5cGU7CiAgdHlwZWRlZiBvdXRwdXRfaXRlcmF0b3Jf
dGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICB2YWx1
ZV90eXBlOwogIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7CiAg
dHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHBvaW50ZXI7CiAgdHlwZWRlZiB2b2lkICAgICAg
ICAgICAgICAgIHJlZmVyZW5jZTsKCiAgZXhwbGljaXQgZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yKF9D
b250YWluZXImIF9feCkgOiBjb250YWluZXIoJl9feCkge30KICBmcm9udF9pbnNlcnRfaXRlcmF0
b3I8X0NvbnRhaW5lcj4mCiAgb3BlcmF0b3I9KGNvbnN0IHR5cGVuYW1lIF9Db250YWluZXI6OnZh
bHVlX3R5cGUmIF9fdmFsdWUpIHsgCiAgICBjb250YWluZXItPnB1c2hfZnJvbnQoX192YWx1ZSk7
CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBmcm9udF9pbnNlcnRfaXRlcmF0b3I8
X0NvbnRhaW5lcj4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQogIGZyb250X2luc2Vy
dF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9
Cn07CgojaWZuZGVmIF9fU1RMX0NMQVNTX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KCnRlbXBsYXRl
IDxjbGFzcyBfQ29udGFpbmVyPgppbmxpbmUgb3V0cHV0X2l0ZXJhdG9yX3RhZwppdGVyYXRvcl9j
YXRlZ29yeShjb25zdCBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4mKQp7CiAgcmV0
dXJuIG91dHB1dF9pdGVyYXRvcl90YWcoKTsKfQoKI2VuZGlmIC8qIF9fU1RMX0NMQVNTX1BBUlRJ
QUxfU1BFQ0lBTElaQVRJT04gKi8KCnRlbXBsYXRlIDxjbGFzcyBfQ29udGFpbmVyPgppbmxpbmUg
ZnJvbnRfaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+IGZyb250X2luc2VydGVyKF9Db250YWlu
ZXImIF9feCkgewogIHJldHVybiBmcm9udF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4oX194
KTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmNsYXNzIGluc2VydF9pdGVyYXRvciB7
CnByb3RlY3RlZDoKICBfQ29udGFpbmVyKiBjb250YWluZXI7CiAgdHlwZW5hbWUgX0NvbnRhaW5l
cjo6aXRlcmF0b3IgaXRlcjsKcHVibGljOgogIHR5cGVkZWYgX0NvbnRhaW5lciAgICAgICAgICBj
b250YWluZXJfdHlwZTsKICB0eXBlZGVmIG91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0
ZWdvcnk7CiAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7CiAgdHlwZWRl
ZiB2b2lkICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAg
ICAgICAgICAgICAgcG9pbnRlcjsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgcmVmZXJl
bmNlOwoKICBpbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194LCB0eXBlbmFtZSBfQ29udGFp
bmVyOjppdGVyYXRvciBfX2kpIAogICAgOiBjb250YWluZXIoJl9feCksIGl0ZXIoX19pKSB7fQog
IGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYKICBvcGVyYXRvcj0oY29uc3QgdHlwZW5hbWUg
X0NvbnRhaW5lcjo6dmFsdWVfdHlwZSYgX192YWx1ZSkgeyAKICAgIGl0ZXIgPSBjb250YWluZXIt
Pmluc2VydChpdGVyLCBfX3ZhbHVlKTsKICAgICsraXRlcjsKICAgIHJldHVybiAqdGhpczsKICB9
CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhp
czsgfQogIGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPiYgb3BlcmF0b3IrKygpIHsgcmV0dXJu
ICp0aGlzOyB9CiAgaW5zZXJ0X2l0ZXJhdG9yPF9Db250YWluZXI+JiBvcGVyYXRvcisrKGludCkg
eyByZXR1cm4gKnRoaXM7IH0KfTsKCiNpZm5kZWYgX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFM
SVpBVElPTgoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWluZXI+CmlubGluZSBvdXRwdXRfaXRlcmF0
b3JfdGFnCml0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IGluc2VydF9pdGVyYXRvcjxfQ29udGFpbmVy
PiYpCnsKICByZXR1cm4gb3V0cHV0X2l0ZXJhdG9yX3RhZygpOwp9CgojZW5kaWYgLyogX19TVExf
Q0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAqLwoKdGVtcGxhdGUgPGNsYXNzIF9Db250YWlu
ZXIsIGNsYXNzIF9JdGVyYXRvcj4KaW5saW5lIAppbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4g
aW5zZXJ0ZXIoX0NvbnRhaW5lciYgX194LCBfSXRlcmF0b3IgX19pKQp7CiAgdHlwZWRlZiB0eXBl
bmFtZSBfQ29udGFpbmVyOjppdGVyYXRvciBfX2l0ZXI7CiAgcmV0dXJuIGluc2VydF9pdGVyYXRv
cjxfQ29udGFpbmVyPihfX3gsIF9faXRlcihfX2kpKTsKfQoKI2lmbmRlZiBfX1NUTF9MSU1JVEVE
X0RFRkFVTFRfVEVNUExBVEVTCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25hbEl0ZXJhdG9y
LCBjbGFzcyBfVHAsIGNsYXNzIF9SZWZlcmVuY2UgPSBfVHAmLCAKICAgICAgICAgIGNsYXNzIF9E
aXN0YW5jZSA9IHB0cmRpZmZfdD4gCiNlbHNlCnRlbXBsYXRlIDxjbGFzcyBfQmlkaXJlY3Rpb25h
bEl0ZXJhdG9yLCBjbGFzcyBfVHAsIGNsYXNzIF9SZWZlcmVuY2UsIAogICAgICAgICAgY2xhc3Mg
X0Rpc3RhbmNlPiAKI2VuZGlmCmNsYXNzIHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvciB7
CiAgdHlwZWRlZiByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJ
dGVyYXRvciwgX1RwLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBf
UmVmZXJlbmNlLCBfRGlzdGFuY2U+ICBfU2VsZjsKcHJvdGVjdGVkOgogIF9CaWRpcmVjdGlvbmFs
SXRlcmF0b3IgY3VycmVudDsKcHVibGljOgogIHR5cGVkZWYgYmlkaXJlY3Rpb25hbF9pdGVyYXRv
cl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiBfVHAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZV90eXBlOwogIHR5cGVkZWYgX0Rpc3RhbmNlICAgICAgICAgICAgICAgICAgZGlm
ZmVyZW5jZV90eXBlOwogIHR5cGVkZWYgX1RwKiAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRl
cjsKICB0eXBlZGVmIF9SZWZlcmVuY2UgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKCiAgcmV2
ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yKCkge30KICBleHBsaWNpdCByZXZlcnNlX2JpZGly
ZWN0aW9uYWxfaXRlcmF0b3IoX0JpZGlyZWN0aW9uYWxJdGVyYXRvciBfX3gpCiAgICA6IGN1cnJl
bnQoX194KSB7fQogIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IgYmFzZSgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnQ7IH0KICBfUmVmZXJlbmNlIG9wZXJhdG9yKigpIGNvbnN0IHsKICAgIF9CaWRpcmVj
dGlvbmFsSXRlcmF0b3IgX190bXAgPSBjdXJyZW50OwogICAgcmV0dXJuICotLV9fdG1wOwogIH0K
I2lmbmRlZiBfX1NHSV9TVExfTk9fQVJST1dfT1BFUkFUT1IKICBwb2ludGVyIG9wZXJhdG9yLT4o
KSBjb25zdCB7IHJldHVybiAmKG9wZXJhdG9yKigpKTsgfQojZW5kaWYgLyogX19TR0lfU1RMX05P
X0FSUk9XX09QRVJBVE9SICovCiAgX1NlbGYmIG9wZXJhdG9yKysoKSB7CiAgICAtLWN1cnJlbnQ7
CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yKysoaW50KSB7CiAgICBfU2Vs
ZiBfX3RtcCA9ICp0aGlzOwogICAgLS1jdXJyZW50OwogICAgcmV0dXJuIF9fdG1wOwogIH0KICBf
U2VsZiYgb3BlcmF0b3ItLSgpIHsKICAgICsrY3VycmVudDsKICAgIHJldHVybiAqdGhpczsKICB9
CiAgX1NlbGYgb3BlcmF0b3ItLShpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRoaXM7CiAgICAr
K2N1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQp9OwoKI2lmbmRlZiBfX1NUTF9DTEFTU19Q
QVJUSUFMX1NQRUNJQUxJWkFUSU9OCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVy
YXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmZXJlbmNlLCAKICAgICAgICAgIGNsYXNzIF9EaXN0
YW5jZT4KaW5saW5lIGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnCml0ZXJhdG9yX2NhdGVnb3J5
KGNvbnN0IHJldmVyc2VfYmlkaXJlY3Rpb25hbF9pdGVyYXRvcjxfQmlkaXJlY3Rpb25hbEl0ZXJh
dG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgX1RwLCBfUmVmZXJlbmNlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9EaXN0YW5jZT4mKSAKewogIHJldHVybiBiaWRpcmVjdGlvbmFs
X2l0ZXJhdG9yX3RhZygpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyYXRv
ciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmZXJlbmNlLCAKICAgICAgICAgIGNsYXNzIF9EaXN0YW5j
ZT4KaW5saW5lIF9UcCoKdmFsdWVfdHlwZShjb25zdCByZXZlcnNlX2JpZGlyZWN0aW9uYWxfaXRl
cmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgX1RwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZlcmVuY2UsIF9EaXN0YW5jZT4mKQp7CiAgcmV0
dXJuIChfVHAqKSAwOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpZGlyZWN0aW9uYWxJdGVyYXRvciwg
Y2xhc3MgX1RwLCBjbGFzcyBfUmVmZXJlbmNlLCAKICAgICAgICAgIGNsYXNzIF9EaXN0YW5jZT4K
aW5saW5lIF9EaXN0YW5jZSoKZGlzdGFuY2VfdHlwZShjb25zdCByZXZlcnNlX2JpZGlyZWN0aW9u
YWxfaXRlcmF0b3I8X0JpZGlyZWN0aW9uYWxJdGVyYXRvciwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JlZmVyZW5jZSwgX0Rpc3RhbmNlPiYpCnsK
ICByZXR1cm4gKF9EaXN0YW5jZSopIDA7Cn0KCiNlbmRpZiAvKiBfX1NUTF9DTEFTU19QQVJUSUFM
X1NQRUNJQUxJWkFUSU9OICovCgp0ZW1wbGF0ZSA8Y2xhc3MgX0JpSXRlciwgY2xhc3MgX1RwLCBj
bGFzcyBfUmVmLAogICAgICAgICAgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCBvcGVyYXRv
cj09KAogICAgY29uc3QgcmV2ZXJzZV9iaWRpcmVjdGlvbmFsX2l0ZXJhdG9yPF9CaUl0ZXIsIF9U
cCwgX1JlZiwgX0Rpc3RhbmNlPiYgX194LCAKICAgIGNvbnN0IHJldmVyc2VfYmlkaXJlY3Rpb25h
bF9pdGVyYXRvcjxfQmlJdGVyLCBfVHAsIF9SZWYsIF9EaXN0YW5jZT4mIF9feSkKewogIHJldHVy
biBfX3guYmFzZSgpID09IF9feS5iYXNlKCk7Cn0KCiNpZmRlZiBfX1NUTF9DTEFTU19QQVJUSUFM
X1NQRUNJQUxJWkFUSU9OCgovLyBUaGlzIGlzIHRoZSBuZXcgdmVyc2lvbiBvZiByZXZlcnNlX2l0
ZXJhdG9yLCBhcyBkZWZpbmVkIGluIHRoZQovLyAgZHJhZnQgQysrIHN0YW5kYXJkLiAgSXQgcmVs
aWVzIG9uIHRoZSBpdGVyYXRvcl90cmFpdHMgdGVtcGxhdGUsCi8vICB3aGljaCBpbiB0dXJuIHJl
bGllcyBvbiBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uLiAgVGhlIGNsYXNzCi8vICByZXZlcnNlX2Jp
ZGlyZWN0aW9uYWxfaXRlcmF0b3IgaXMgbm8gbG9uZ2VyIHBhcnQgb2YgdGhlIGRyYWZ0Ci8vICBz
dGFuZGFyZCwgYnV0IGl0IGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoK
dGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4KY2xhc3MgcmV2ZXJzZV9pdGVyYXRvciAKewpwcm90
ZWN0ZWQ6CiAgX0l0ZXJhdG9yIGN1cnJlbnQ7CnB1YmxpYzoKICB0eXBlZGVmIHR5cGVuYW1lIGl0
ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjppdGVyYXRvcl9jYXRlZ29yeQogICAgICAgICAgaXRl
cmF0b3JfY2F0ZWdvcnk7CiAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJh
dG9yPjo6dmFsdWVfdHlwZQogICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1l
IGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgICAgICAgIGRp
ZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0
b3I+Ojpwb2ludGVyCiAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0
b3JfdHJhaXRzPF9JdGVyYXRvcj46OnJlZmVyZW5jZQogICAgICAgICAgcmVmZXJlbmNlOwoKICB0
eXBlZGVmIF9JdGVyYXRvciBpdGVyYXRvcl90eXBlOwogIHR5cGVkZWYgcmV2ZXJzZV9pdGVyYXRv
cjxfSXRlcmF0b3I+IF9TZWxmOwoKcHVibGljOgogIHJldmVyc2VfaXRlcmF0b3IoKSB7fQogIGV4
cGxpY2l0IHJldmVyc2VfaXRlcmF0b3IoaXRlcmF0b3JfdHlwZSBfX3gpIDogY3VycmVudChfX3gp
IHt9CgogIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgX1NlbGYmIF9feCkgOiBjdXJyZW50KF9feC5j
dXJyZW50KSB7fQojaWZkZWYgX19TVExfTUVNQkVSX1RFTVBMQVRFUwogIHRlbXBsYXRlIDxjbGFz
cyBfSXRlcj4KICByZXZlcnNlX2l0ZXJhdG9yKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXI+
JiBfX3gpCiAgICA6IGN1cnJlbnQoX194LmJhc2UoKSkge30KI2VuZGlmIC8qIF9fU1RMX01FTUJF
Ul9URU1QTEFURVMgKi8KICAgIAogIGl0ZXJhdG9yX3R5cGUgYmFzZSgpIGNvbnN0IHsgcmV0dXJu
IGN1cnJlbnQ7IH0KICByZWZlcmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgewogICAgX0l0ZXJhdG9y
IF9fdG1wID0gY3VycmVudDsKICAgIHJldHVybiAqLS1fX3RtcDsKICB9CiNpZm5kZWYgX19TR0lf
U1RMX05PX0FSUk9XX09QRVJBVE9SCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1
cm4gJihvcGVyYXRvciooKSk7IH0KI2VuZGlmIC8qIF9fU0dJX1NUTF9OT19BUlJPV19PUEVSQVRP
UiAqLwoKICBfU2VsZiYgb3BlcmF0b3IrKygpIHsKICAgIC0tY3VycmVudDsKICAgIHJldHVybiAq
dGhpczsKICB9CiAgX1NlbGYgb3BlcmF0b3IrKyhpbnQpIHsKICAgIF9TZWxmIF9fdG1wID0gKnRo
aXM7CiAgICAtLWN1cnJlbnQ7CiAgICByZXR1cm4gX190bXA7CiAgfQogIF9TZWxmJiBvcGVyYXRv
ci0tKCkgewogICAgKytjdXJyZW50OwogICAgcmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVy
YXRvci0tKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAgICsrY3VycmVudDsKICAg
IHJldHVybiBfX3RtcDsKICB9CgogIF9TZWxmIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUgX19u
KSBjb25zdCB7CiAgICByZXR1cm4gX1NlbGYoY3VycmVudCAtIF9fbik7CiAgfQogIF9TZWxmJiBv
cGVyYXRvcis9KGRpZmZlcmVuY2VfdHlwZSBfX24pIHsKICAgIGN1cnJlbnQgLT0gX19uOwogICAg
cmV0dXJuICp0aGlzOwogIH0KICBfU2VsZiBvcGVyYXRvci0oZGlmZmVyZW5jZV90eXBlIF9fbikg
Y29uc3QgewogICAgcmV0dXJuIF9TZWxmKGN1cnJlbnQgKyBfX24pOwogIH0KICBfU2VsZiYgb3Bl
cmF0b3ItPShkaWZmZXJlbmNlX3R5cGUgX19uKSB7CiAgICBjdXJyZW50ICs9IF9fbjsKICAgIHJl
dHVybiAqdGhpczsKICB9CiAgcmVmZXJlbmNlIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIF9f
bikgY29uc3QgeyByZXR1cm4gKigqdGhpcyArIF9fbik7IH0gIAp9OyAKIAp0ZW1wbGF0ZSA8Y2xh
c3MgX0l0ZXJhdG9yPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X0l0ZXJhdG9yPiYgX194LCAKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXZlcnNl
X2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVybiBfX3guYmFzZSgpID09IF9feS5i
YXNlKCk7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfSXRlcmF0b3I+CmlubGluZSBib29sIG9wZXJhdG9y
PChjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwgCiAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVy
biBfX3kuYmFzZSgpIDwgX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4K
aW5saW5lIHR5cGVuYW1lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90
eXBlCm9wZXJhdG9yLShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwgCiAg
ICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feSkgewogIHJldHVy
biBfX3kuYmFzZSgpIC0gX194LmJhc2UoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9JdGVyYXRvcj4K
aW5saW5lIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiAKb3BlcmF0b3IrKHR5cGVuYW1lIHJl
dmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIF9fbiwKICAgICAgICAg
IGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194KSB7CiAgcmV0dXJuIHJldmVy
c2VfaXRlcmF0b3I8X0l0ZXJhdG9yPihfX3guYmFzZSgpIC0gX19uKTsKfQoKI2Vsc2UgLyogX19T
VExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAqLwoKLy8gVGhpcyBpcyB0aGUgb2xkIHZl
cnNpb24gb2YgcmV2ZXJzZV9pdGVyYXRvciwgYXMgZm91bmQgaW4gdGhlIG9yaWdpbmFsCi8vICBI
UCBTVEwuICBJdCBkb2VzIG5vdCB1c2UgcGFydGlhbCBzcGVjaWFsaXphdGlvbi4KCiNpZm5kZWYg
X19TVExfTElNSVRFRF9ERUZBVUxUX1RFTVBMQVRFUwp0ZW1wbGF0ZSA8Y2xhc3MgX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yLCBjbGFzcyBfVHAsIGNsYXNzIF9SZWZlcmVuY2UgPSBfVHAmLAogICAgICAg
ICAgY2xhc3MgX0Rpc3RhbmNlID0gcHRyZGlmZl90PiAKI2Vsc2UKdGVtcGxhdGUgPGNsYXNzIF9S
YW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLCBjbGFzcyBfUmVmZXJlbmNlLAogICAgICAg
ICAgY2xhc3MgX0Rpc3RhbmNlPiAKI2VuZGlmCmNsYXNzIHJldmVyc2VfaXRlcmF0b3IgewogIHR5
cGVkZWYgcmV2ZXJzZV9pdGVyYXRvcjxfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIF9UcCwgX1JlZmVy
ZW5jZSwgX0Rpc3RhbmNlPgogICAgICAgIF9TZWxmOwpwcm90ZWN0ZWQ6CiAgX1JhbmRvbUFjY2Vz
c0l0ZXJhdG9yIGN1cnJlbnQ7CnB1YmxpYzoKICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0
b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwogIHR5cGVkZWYgX1RwICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0YW5jZSAgICAgICAgICAgICAgICAgIGRp
ZmZlcmVuY2VfdHlwZTsKICB0eXBlZGVmIF9UcCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50
ZXI7CiAgdHlwZWRlZiBfUmVmZXJlbmNlICAgICAgICAgICAgICAgICByZWZlcmVuY2U7CgogIHJl
dmVyc2VfaXRlcmF0b3IoKSB7fQogIGV4cGxpY2l0IHJldmVyc2VfaXRlcmF0b3IoX1JhbmRvbUFj
Y2Vzc0l0ZXJhdG9yIF9feCkgOiBjdXJyZW50KF9feCkge30KICBfUmFuZG9tQWNjZXNzSXRlcmF0
b3IgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnQ7IH0KICBfUmVmZXJlbmNlIG9wZXJhdG9y
KigpIGNvbnN0IHsgcmV0dXJuICooY3VycmVudCAtIDEpOyB9CiNpZm5kZWYgX19TR0lfU1RMX05P
X0FSUk9XX09QRVJBVE9SCiAgcG9pbnRlciBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4gJihv
cGVyYXRvciooKSk7IH0KI2VuZGlmIC8qIF9fU0dJX1NUTF9OT19BUlJPV19PUEVSQVRPUiAqLwog
IF9TZWxmJiBvcGVyYXRvcisrKCkgewogICAgLS1jdXJyZW50OwogICAgcmV0dXJuICp0aGlzOwog
IH0KICBfU2VsZiBvcGVyYXRvcisrKGludCkgewogICAgX1NlbGYgX190bXAgPSAqdGhpczsKICAg
IC0tY3VycmVudDsKICAgIHJldHVybiBfX3RtcDsKICB9CiAgX1NlbGYmIG9wZXJhdG9yLS0oKSB7
CiAgICArK2N1cnJlbnQ7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9TZWxmIG9wZXJhdG9yLS0o
aW50KSB7CiAgICBfU2VsZiBfX3RtcCA9ICp0aGlzOwogICAgKytjdXJyZW50OwogICAgcmV0dXJu
IF9fdG1wOwogIH0KICBfU2VsZiBvcGVyYXRvcisoX0Rpc3RhbmNlIF9fbikgY29uc3QgewogICAg
cmV0dXJuIF9TZWxmKGN1cnJlbnQgLSBfX24pOwogIH0KICBfU2VsZiYgb3BlcmF0b3IrPShfRGlz
dGFuY2UgX19uKSB7CiAgICBjdXJyZW50IC09IF9fbjsKICAgIHJldHVybiAqdGhpczsKICB9CiAg
X1NlbGYgb3BlcmF0b3ItKF9EaXN0YW5jZSBfX24pIGNvbnN0IHsKICAgIHJldHVybiBfU2VsZihj
dXJyZW50ICsgX19uKTsKICB9CiAgX1NlbGYmIG9wZXJhdG9yLT0oX0Rpc3RhbmNlIF9fbikgewog
ICAgY3VycmVudCArPSBfX247CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIF9SZWZlcmVuY2Ugb3Bl
cmF0b3JbXShfRGlzdGFuY2UgX19uKSBjb25zdCB7IHJldHVybiAqKCp0aGlzICsgX19uKTsgfQp9
OwoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLCAKICAg
ICAgICAgIGNsYXNzIF9SZWZlcmVuY2UsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIHJhbmRvbV9h
Y2Nlc3NfaXRlcmF0b3JfdGFnCml0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0IHJldmVyc2VfaXRlcmF0
b3I8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBfVHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX1JlZmVyZW5jZSwgX0Rpc3RhbmNlPiYpCnsKICByZXR1cm4gcmFuZG9t
X2FjY2Vzc19pdGVyYXRvcl90YWcoKTsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgY2xhc3MgX1RwLAogICAgICAgICAgY2xhc3MgX1JlZmVyZW5jZSwgY2xhc3MgX0Rp
c3RhbmNlPgppbmxpbmUgX1RwKiB2YWx1ZV90eXBlKGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X1Jh
bmRvbUFjY2Vzc0l0ZXJhdG9yLCBfVHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfUmVmZXJlbmNlLCBfRGlzdGFuY2U+JikKewogIHJldHVybiAoX1RwKikg
MDsKfQoKdGVtcGxhdGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLAog
ICAgICAgICAgY2xhc3MgX1JlZmVyZW5jZSwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgX0Rpc3Rh
bmNlKiAKZGlzdGFuY2VfdHlwZShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9SYW5kb21BY2Nlc3NJ
dGVyYXRvciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVHAsIF9SZWZl
cmVuY2UsIF9EaXN0YW5jZT4mKQp7CiAgcmV0dXJuIChfRGlzdGFuY2UqKSAwOwp9CgoKdGVtcGxh
dGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLAogICAgICAgICAgY2xh
c3MgX1JlZmVyZW5jZSwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCAKb3BlcmF0b3I9PShj
b25zdCByZXZlcnNlX2l0ZXJhdG9yPF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgX1RwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JlZmVyZW5jZSwgX0Rpc3RhbmNlPiYgX194LCAK
ICAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg
X1RwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1JlZmVyZW5jZSwgX0Rpc3Rh
bmNlPiYgX195KQp7CiAgcmV0dXJuIF9feC5iYXNlKCkgPT0gX195LmJhc2UoKTsKfQoKdGVtcGxh
dGUgPGNsYXNzIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgX1RwLAogICAgICAgICAgY2xh
c3MgX1JlZmVyZW5jZSwgY2xhc3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCAKb3BlcmF0b3I8KGNv
bnN0IHJldmVyc2VfaXRlcmF0b3I8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBfVHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZlcmVuY2UsIF9EaXN0YW5jZT4mIF9feCwgCiAg
ICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgX1Rw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmVmZXJlbmNlLCBfRGlzdGFuY2U+
JiBfX3kpCnsKICByZXR1cm4gX195LmJhc2UoKSA8IF9feC5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIF9UcCwKICAgICAgICAgIGNsYXNzIF9S
ZWZlcmVuY2UsIGNsYXNzIF9EaXN0YW5jZT4KaW5saW5lIF9EaXN0YW5jZSAKb3BlcmF0b3ItKGNv
bnN0IHJldmVyc2VfaXRlcmF0b3I8X1JhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBfVHAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF9SZWZlcmVuY2UsIF9EaXN0YW5jZT4mIF9feCwgCiAg
ICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9SYW5kb21BY2Nlc3NJdGVyYXRvciwgX1Rw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUmVmZXJlbmNlLCBfRGlzdGFuY2U+
JiBfX3kpCnsKICByZXR1cm4gX195LmJhc2UoKSAtIF9feC5iYXNlKCk7Cn0KCnRlbXBsYXRlIDxj
bGFzcyBfUmFuZEFjY0l0ZXIsIGNsYXNzIF9UcCwgY2xhc3MgX1JlZiwgY2xhc3MgX0Rpc3Q+Cmlu
bGluZSByZXZlcnNlX2l0ZXJhdG9yPF9SYW5kQWNjSXRlciwgX1RwLCBfUmVmLCBfRGlzdD4gCm9w
ZXJhdG9yKyhfRGlzdCBfX24sCiAgICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9SYW5k
QWNjSXRlciwgX1RwLCBfUmVmLCBfRGlzdD4mIF9feCkKewogIHJldHVybiByZXZlcnNlX2l0ZXJh
dG9yPF9SYW5kQWNjSXRlciwgX1RwLCBfUmVmLCBfRGlzdD4oX194LmJhc2UoKSAtIF9fbik7Cn0K
CiNlbmRpZiAvKiBfX1NUTF9DTEFTU19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICovCgovLyBXaGVu
IHdlIGhhdmUgdGVtcGxhdGl6ZWQgaW9zdHJlYW1zLCBpc3RyZWFtX2l0ZXJhdG9yIGFuZCBvc3Ry
ZWFtX2l0ZXJhdG9yCi8vIG11c3QgYmUgcmV3cml0dGVuLgoKdGVtcGxhdGUgPGNsYXNzIF9UcCwg
Y2xhc3MgX0Rpc3QgPSBwdHJkaWZmX3Q+IApjbGFzcyBpc3RyZWFtX2l0ZXJhdG9yIHsKICBmcmll
bmQgYm9vbCBvcGVyYXRvcj09IF9fU1RMX05VTExfVE1QTF9BUkdTIChjb25zdCBpc3RyZWFtX2l0
ZXJhdG9yJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpc3RyZWFtX2l0ZXJhdG9yJik7CnByb3RlY3RlZDoKICBpc3RyZWFtKiBfTV9zdHJlYW07
CiAgX1RwIF9NX3ZhbHVlOwogIGJvb2wgX01fZW5kX21hcmtlcjsKICB2b2lkIF9NX3JlYWQoKSB7
CiAgICBfTV9lbmRfbWFya2VyID0gKCpfTV9zdHJlYW0pID8gdHJ1ZSA6IGZhbHNlOwogICAgaWYg
KF9NX2VuZF9tYXJrZXIpICpfTV9zdHJlYW0gPj4gX01fdmFsdWU7CiAgICBfTV9lbmRfbWFya2Vy
ID0gKCpfTV9zdHJlYW0pID8gdHJ1ZSA6IGZhbHNlOwogIH0KcHVibGljOgogIHR5cGVkZWYgaW5w
dXRfaXRlcmF0b3JfdGFnICBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIF9UcCAgICAgICAg
ICAgICAgICAgdmFsdWVfdHlwZTsKICB0eXBlZGVmIF9EaXN0ICAgICAgICAgICAgICAgZGlmZmVy
ZW5jZV90eXBlOwogIHR5cGVkZWYgY29uc3QgX1RwKiAgICAgICAgICBwb2ludGVyOwogIHR5cGVk
ZWYgY29uc3QgX1RwJiAgICAgICAgICByZWZlcmVuY2U7CgogIGlzdHJlYW1faXRlcmF0b3IoKSA6
IF9NX3N0cmVhbSgmY2luKSwgX01fZW5kX21hcmtlcihmYWxzZSkge30KICBpc3RyZWFtX2l0ZXJh
dG9yKGlzdHJlYW0mIF9fcykgOiBfTV9zdHJlYW0oJl9fcykgeyBfTV9yZWFkKCk7IH0KICByZWZl
cmVuY2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gX01fdmFsdWU7IH0KI2lmbmRlZiBfX1NH
SV9TVExfTk9fQVJST1dfT1BFUkFUT1IKICBwb2ludGVyIG9wZXJhdG9yLT4oKSBjb25zdCB7IHJl
dHVybiAmKG9wZXJhdG9yKigpKTsgfQojZW5kaWYgLyogX19TR0lfU1RMX05PX0FSUk9XX09QRVJB
VE9SICovCiAgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0PiYgb3BlcmF0b3IrKygpIHsgCiAg
ICBfTV9yZWFkKCk7IAogICAgcmV0dXJuICp0aGlzOwogIH0KICBpc3RyZWFtX2l0ZXJhdG9yPF9U
cCwgX0Rpc3Q+IG9wZXJhdG9yKysoaW50KSAgewogICAgaXN0cmVhbV9pdGVyYXRvcjxfVHAsIF9E
aXN0PiBfX3RtcCA9ICp0aGlzOwogICAgX01fcmVhZCgpOwogICAgcmV0dXJuIF9fdG1wOwogIH0K
fTsKCiNpZm5kZWYgX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTgoKdGVtcGxhdGUg
PGNsYXNzIF9UcCwgY2xhc3MgX0Rpc3Q+CmlubGluZSBpbnB1dF9pdGVyYXRvcl90YWcgCml0ZXJh
dG9yX2NhdGVnb3J5KGNvbnN0IGlzdHJlYW1faXRlcmF0b3I8X1RwLCBfRGlzdD4mKQp7CiAgcmV0
dXJuIGlucHV0X2l0ZXJhdG9yX3RhZygpOwp9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFzcyBf
RGlzdD4KaW5saW5lIF9UcCogCnZhbHVlX3R5cGUoY29uc3QgaXN0cmVhbV9pdGVyYXRvcjxfVHAs
IF9EaXN0PiYpIHsgcmV0dXJuIChfVHAqKSAwOyB9Cgp0ZW1wbGF0ZSA8Y2xhc3MgX1RwLCBjbGFz
cyBfRGlzdD4KaW5saW5lIF9EaXN0KiAKZGlzdGFuY2VfdHlwZShjb25zdCBpc3RyZWFtX2l0ZXJh
dG9yPF9UcCwgX0Rpc3Q+JikgeyByZXR1cm4gKF9EaXN0KikwOyB9CgojZW5kaWYgLyogX19TVExf
Q0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAqLwoKdGVtcGxhdGUgPGNsYXNzIF9UcCwgY2xh
c3MgX0Rpc3RhbmNlPgppbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGlzdHJlYW1faXRlcmF0
b3I8X1RwLCBfRGlzdGFuY2U+JiBfX3gsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXN0
cmVhbV9pdGVyYXRvcjxfVHAsIF9EaXN0YW5jZT4mIF9feSkgewogIHJldHVybiAoX194Ll9NX3N0
cmVhbSA9PSBfX3kuX01fc3RyZWFtICYmCiAgICAgICAgICBfX3guX01fZW5kX21hcmtlciA9PSBf
X3kuX01fZW5kX21hcmtlcikgfHwKICAgICAgICAgX194Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2Ug
JiYgX195Ll9NX2VuZF9tYXJrZXIgPT0gZmFsc2U7Cn0KCnRlbXBsYXRlIDxjbGFzcyBfVHA+CmNs
YXNzIG9zdHJlYW1faXRlcmF0b3Igewpwcm90ZWN0ZWQ6CiAgb3N0cmVhbSogX01fc3RyZWFtOwog
IGNvbnN0IGNoYXIqIF9NX3N0cmluZzsKcHVibGljOgogIHR5cGVkZWYgb3V0cHV0X2l0ZXJhdG9y
X3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgdmFs
dWVfdHlwZTsKICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwog
IHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICBwb2ludGVyOwogIHR5cGVkZWYgdm9pZCAgICAg
ICAgICAgICAgICByZWZlcmVuY2U7CgogIG9zdHJlYW1faXRlcmF0b3Iob3N0cmVhbSYgX19zKSA6
IF9NX3N0cmVhbSgmX19zKSwgX01fc3RyaW5nKDApIHt9CiAgb3N0cmVhbV9pdGVyYXRvcihvc3Ry
ZWFtJiBfX3MsIGNvbnN0IGNoYXIqIF9fYykgCiAgICA6IF9NX3N0cmVhbSgmX19zKSwgX01fc3Ry
aW5nKF9fYykgIHt9CiAgb3N0cmVhbV9pdGVyYXRvcjxfVHA+JiBvcGVyYXRvcj0oY29uc3QgX1Rw
JiBfX3ZhbHVlKSB7IAogICAgKl9NX3N0cmVhbSA8PCBfX3ZhbHVlOwogICAgaWYgKF9NX3N0cmlu
ZykgKl9NX3N0cmVhbSA8PCBfTV9zdHJpbmc7CiAgICByZXR1cm4gKnRoaXM7CiAgfQogIG9zdHJl
YW1faXRlcmF0b3I8X1RwPiYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KICBvc3RyZWFt
X2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfSAKICBvc3RyZWFt
X2l0ZXJhdG9yPF9UcD4mIG9wZXJhdG9yKysoaW50KSB7IHJldHVybiAqdGhpczsgfSAKfTsKCiNp
Zm5kZWYgX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTgoKdGVtcGxhdGUgPGNsYXNz
IF9UcD4KaW5saW5lIG91dHB1dF9pdGVyYXRvcl90YWcgCml0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0
IG9zdHJlYW1faXRlcmF0b3I8X1RwPiYpIHsKICByZXR1cm4gb3V0cHV0X2l0ZXJhdG9yX3RhZygp
Owp9CgojZW5kaWYgLyogX19TVExfQ0xBU1NfUEFSVElBTF9TUEVDSUFMSVpBVElPTiAqLwoKX19T
VExfRU5EX05BTUVTUEFDRQoKI2VuZGlmIC8qIF9fU0dJX1NUTF9JTlRFUk5BTF9JVEVSQVRPUl9I
ICovCgovLyBMb2NhbCBWYXJpYWJsZXM6Ci8vIG1vZGU6QysrCi8vIEVuZDoK


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

* Re: c++/4602: error message suggests use of typename in /usr/include/g++-3/stl_iterator.h
@ 2001-10-18  1:30 ljrittle
  0 siblings, 0 replies; 2+ messages in thread
From: ljrittle @ 2001-10-18  1:30 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, magarwal, nobody, skjain

Synopsis: error message suggests use of typename in /usr/include/g++-3/stl_iterator.h

State-Changed-From-To: open->closed
State-Changed-By: ljrittle
State-Changed-When: Thu Oct 18 01:30:31 2001
State-Changed-Why:
    From the path involved, it looks like you are using GCC
    as packaged by a vendor.  Please contact them for ASAP
    response.  If you are willing to rebuild gcc, your problem
    is fixed in the most recent release of gcc from GNU
    (3.0, 3.0.1 and the soon to be released 3.0.2 all have
    this problem licked).

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


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

end of thread, other threads:[~2001-10-18  1:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-10-17 23:26 c++/4602: error message suggests use of typename in /usr/include/g++-3/stl_iterator.h magarwal
2001-10-18  1:30 ljrittle

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).