c++/3564: g++ fails to initialize template member variables

pabrabbin@hotmail.com pabrabbin@hotmail.com
Wed Jul 4 11:06:00 GMT 2001


>Number:         3564
>Category:       c++
>Synopsis:       g++ fails to initialize template member variables
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 04 11:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Phil Brabbin
>Release:        3.0
>Organization:
>Environment:
System: SunOS svr-bri-space0 5.6 Generic_105181-26 sun4u sparc SUNW,Ultra-250
Architecture: sun4
>Description:
g++ fails to initialize a static const template member variable when it is instantiated as part of another template.

Compiling with "-frepo" forced gcc 2.95.2 to do this correctly, but flag no longer forces the correct behaviour.
>How-To-Repeat:
g++ -frepo -c bug.ii
g++ bug.o
./a.out

Should print "0.300000" instead of "0.000000".
>Fix:

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

IyA1ICJidWcuQyIKIyAxICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi8uLi8uLi9pbmNsdWRl
L2crKy12My9jbWF0aCIgMSAzCiMgMzEgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliLy4uLy4u
L2luY2x1ZGUvZysrLXYzL2NtYXRoIiAzCiMgMSAiL2hvbWUvYnJhYmJpbnAvbGliL2djYy1saWIv
Li4vLi4vaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMSAzCiMgMzcgIi9ob21lL2Jy
YWJiaW5wL2xpYi9nY2MtbGliLy4uLy4uL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgi
IDMKIyAxICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi8uLi8uLi9pbmNsdWRlL2crKy12My9z
cGFyYy1zdW4tc29sYXJpczIuNi9iaXRzL2MrK2NvbmZpZy5oIiAxIDMKIyAzNCAiL2hvbWUvYnJh
YmJpbnAvbGliL2djYy1saWIvLi4vLi4vaW5jbHVkZS9nKystdjMvc3BhcmMtc3VuLXNvbGFyaXMy
LjYvYml0cy9jKytjb25maWcuaCIgMwojIDEgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliLy4u
Ly4uL2luY2x1ZGUvZysrLXYzL3NwYXJjLXN1bi1zb2xhcmlzMi42L2JpdHMvb3NfZGVmaW5lcy5o
IiAxIDMKIyAzNSAiL2hvbWUvYnJhYmJpbnAvbGliL2djYy1saWIvLi4vLi4vaW5jbHVkZS9nKyst
djMvc3BhcmMtc3VuLXNvbGFyaXMyLjYvYml0cy9jKytjb25maWcuaCIgMiAzCiMgMzggIi9ob21l
L2JyYWJiaW5wL2xpYi9nY2MtbGliLy4uLy4uL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRo
LmgiIDIgMwojIDQwICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi8uLi8uLi9pbmNsdWRlL2cr
Ky12My9iaXRzL3N0ZF9jbWF0aC5oIiAzCiMgMSAiL2hvbWUvYnJhYmJpbnAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjYvMy4wL2luY2x1ZGUvbWF0aC5oIiAxIDMgNAojIDI0ICIvaG9t
ZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8zLjAvaW5jbHVkZS9t
YXRoLmgiIDMgNApleHRlcm4gIkMiIHsKCgojcHJhZ21hIGlkZW50ICJAKCMpbWF0aC5oCTIuNgk5
Ny8wNi8wNSIKIyA0NiAiL2hvbWUvYnJhYmJpbnAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFy
aXMyLjYvMy4wL2luY2x1ZGUvbWF0aC5oIiAzIDQKdHlwZWRlZiB1bmlvbiBfaF92YWwgewogICAg
ICAgIHVuc2lnbmVkIGxvbmcgX2lbc2l6ZW9mKGRvdWJsZSkgLyBzaXplb2YodW5zaWduZWQgbG9u
ZyldOwogICAgICAgIGRvdWJsZSBfZDsKfSBfaF92YWw7CgoKZXh0ZXJuIGNvbnN0IF9oX3ZhbCBf
X2h1Z2VfdmFsOwojIDgwICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuNi8zLjAvaW5jbHVkZS9tYXRoLmgiIDMgNApleHRlcm4gaW50IHNpZ25nYW07CgoKCgoK
CgplbnVtIHZlcnNpb24ge2xpYm1faWVlZSA9IC0xLCBjX2lzc3VlXzQsIGFuc2lfMSwgc3RyaWN0
X2Fuc2l9OwoKCmV4dGVybiBjb25zdCBlbnVtIHZlcnNpb24gX2xpYl92ZXJzaW9uOwoKCgoKc3Ry
dWN0IF9fbWF0aF9leGNlcHRpb24gewogICAgICAgIGludCB0eXBlOwogICAgICAgIGNoYXIgKm5h
bWU7CiAgICAgICAgZG91YmxlIGFyZzE7CiAgICAgICAgZG91YmxlIGFyZzI7CiAgICAgICAgZG91
YmxlIHJldHZhbDsKfTsKIyAxMzQgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL21hdGguaCIgMyA0CmV4dGVybiBkb3VibGUgYWNvcyAo
ZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGF0YW4g
KGRvdWJsZSk7CmV4dGVybiBkb3VibGUgYXRhbjIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRv
dWJsZSBjb3MgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgc2luIChkb3VibGUpOwpleHRlcm4gZG91
YmxlIHRhbiAoZG91YmxlKTsKCmV4dGVybiBkb3VibGUgY29zaCAoZG91YmxlKTsKZXh0ZXJuIGRv
dWJsZSBzaW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIHRhbmggKGRvdWJsZSk7CgpleHRlcm4g
ZG91YmxlIGV4cCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmcmV4cCAoZG91YmxlLCBpbnQgKik7
CmV4dGVybiBkb3VibGUgbGRleHAgKGRvdWJsZSwgaW50KTsKZXh0ZXJuIGRvdWJsZSBsb2cgKGRv
dWJsZSk7CmV4dGVybiBkb3VibGUgbG9nMTAgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbW9kZiAo
ZG91YmxlLCBkb3VibGUgKik7CgpleHRlcm4gZG91YmxlIHBvdyAoZG91YmxlLCBkb3VibGUpOwpl
eHRlcm4gZG91YmxlIHNxcnQgKGRvdWJsZSk7CgpleHRlcm4gZG91YmxlIGNlaWwgKGRvdWJsZSk7
CmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBmbG9vciAoZG91Ymxl
KTsKZXh0ZXJuIGRvdWJsZSBmbW9kIChkb3VibGUsIGRvdWJsZSk7CgoKCgoKCmV4dGVybiBkb3Vi
bGUgZXJmIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGVyZmMgKGRvdWJsZSk7CmV4dGVybiBkb3Vi
bGUgZ2FtbWEgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgaHlwb3QgKGRvdWJsZSwgZG91YmxlKTsK
ZXh0ZXJuIGludCBpc25hbiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqMCAoZG91YmxlKTsKZXh0
ZXJuIGRvdWJsZSBqMSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBqbiAoaW50LCBkb3VibGUpOwpl
eHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5MCAoZG91YmxlKTsK
ZXh0ZXJuIGRvdWJsZSB5MSAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSB5biAoaW50LCBkb3VibGUp
OwoKCgoKCgpleHRlcm4gZG91YmxlIGFjb3NoIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGFzaW5o
IChkb3VibGUpOwpleHRlcm4gZG91YmxlIGF0YW5oIChkb3VibGUpOwpleHRlcm4gZG91YmxlIGNi
cnQgKGRvdWJsZSk7CmV4dGVybiBkb3VibGUgbG9nYiAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBu
ZXh0YWZ0ZXIgKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJs
ZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYiAoZG91YmxlLCBkb3VibGUpOwoKCgoKZXh0
ZXJuIGRvdWJsZSBleHBtMSAoZG91YmxlKTsKZXh0ZXJuIGludCBpbG9nYiAoZG91YmxlKTsKZXh0
ZXJuIGRvdWJsZSBsb2cxcCAoZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSByaW50IChkb3VibGUpOwoK
CgoKCgpleHRlcm4gaW50IG1hdGhlcnIgKHN0cnVjdCBfX21hdGhfZXhjZXB0aW9uICopOwoKCgoK
ZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91YmxlKTsKCgoKCmV4dGVybiBkb3VibGUgY29w
eXNpZ24gKGRvdWJsZSwgZG91YmxlKTsKZXh0ZXJuIGRvdWJsZSBzY2FsYm4gKGRvdWJsZSwgaW50
KTsKIyAyMzEgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42
LzMuMC9pbmNsdWRlL21hdGguaCIgMyA0CmV4dGVybiBmbG9hdCBtb2RmZiAoZmxvYXQsIGZsb2F0
ICopOwoKIyAxICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIu
Ni8zLjAvaW5jbHVkZS9mbG9hdGluZ3BvaW50LmgiIDEgMyA0CiMgMjEgIi9ob21lL2JyYWJiaW5w
L2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL2Zsb2F0aW5ncG9p
bnQuaCIgMyA0CmV4dGVybiAiQyIgewoKCiNwcmFnbWEgaWRlbnQgIkAoIylmbG9hdGluZ3BvaW50
LmgJMi40IDk0LzA2LzA5IgojIDQyICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuNi8zLjAvaW5jbHVkZS9mbG9hdGluZ3BvaW50LmgiIDMgNAojIDEgIi9ob21l
L2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0
ZGlvLmgiIDEgMyA0CiMgMTQgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1z
b2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojIDEgIi9ob21lL2JyYWJiaW5wL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGFyZy5oIiAxIDMg
NAojIDQzICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8z
LjAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CnR5cGVkZWYgX19idWlsdGluX3ZhX2xpc3QgX19nbnVj
X3ZhX2xpc3Q7CiMgMTUgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xh
cmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CiMgMjkgIi9ob21lL2JyYWJiaW5wL2xp
Yi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAoj
cHJhZ21hIGlkZW50ICJAKCMpc3RkaW8uaAkxLjQ5CTk3LzA1LzA5IFNNSSIKCiMgMSAiL3Vzci9p
bmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMyA0CiMgMTEgIi91c3IvaW5jbHVkZS9zeXMv
ZmVhdHVyZV90ZXN0cy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWZlYXR1cmVfdGVzdHMuaAkx
LjEzCTk3LzA2LzI2IFNNSSIKCgpleHRlcm4gIkMiIHsKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMv
ZmVhdHVyZV90ZXN0cy5oIiAzIDQKfQojIDMyICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9z
cGFyYy1zdW4tc29sYXJpczIuNi8zLjAvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDEgIi91c3Iv
aW5jbHVkZS9zeXMvdmFfbGlzdC5oIiAxIDMgNAojIDkgIi91c3IvaW5jbHVkZS9zeXMvdmFfbGlz
dC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXZhX2xpc3QuaAkxLjYJOTYvMDEvMjYgU01JIgoj
IDIyICIvdXNyL2luY2x1ZGUvc3lzL3ZhX2xpc3QuaCIgMyA0CmV4dGVybiAiQyIgewojIDQ0ICIv
dXNyL2luY2x1ZGUvc3lzL3ZhX2xpc3QuaCIgMyA0CnR5cGVkZWYgdm9pZCAqX192YV9saXN0OwoK
CgoKCgoKfQojIDMzICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJp
czIuNi8zLjAvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAojIDQzICIvaG9tZS9icmFiYmlucC9saWIv
Z2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8zLjAvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0
ZXJuICJDIiB7CgoKCgp0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CiMgNTggIi9ob21lL2Jy
YWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlv
LmgiIDMgNAp0eXBlZGVmIGxvbmcgbG9uZyBfX2xvbmdsb25nX3Q7CiMgNzIgIi9ob21lL2JyYWJi
aW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgi
IDMgNAp0eXBlZGVmIGxvbmcgb2ZmX3Q7CgoKCgp0eXBlZGVmIF9fbG9uZ2xvbmdfdCBvZmY2NF90
OwoKCgoKCnR5cGVkZWYgbG9uZyBmcG9zX3Q7CgoKCgp0eXBlZGVmIF9fbG9uZ2xvbmdfdCBmcG9z
NjRfdDsKIyAxODggIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlz
Mi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdAp7CgoKCgogICAgICAg
IGludCBfY250OwogICAgICAgIHVuc2lnbmVkIGNoYXIgKl9wdHI7CgogICAgICAgIHVuc2lnbmVk
IGNoYXIgKl9iYXNlOwogICAgICAgIHVuc2lnbmVkIGNoYXIgX2ZsYWc7CiAgICAgICAgdW5zaWdu
ZWQgY2hhciBfZmlsZTsKfSBGSUxFOwoKCmV4dGVybiBGSUxFIF9faW9iWzIwXTsKCgoKZXh0ZXJu
IEZJTEUgKl9sYXN0YnVmOwpleHRlcm4gdW5zaWduZWQgY2hhciAqX2J1ZmVuZHRhYltdOwoKZXh0
ZXJuIHVuc2lnbmVkIGNoYXIgX3NpYnVmW10sIF9zb2J1ZltdOwojIDI0MCAiL2hvbWUvYnJhYmJp
bnAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMy4wL2luY2x1ZGUvc3RkaW8uaCIg
MyA0CmV4dGVybiBpbnQgcmVtb3ZlKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgcmVuYW1lKGNv
bnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJTEUgKnRtcGZpbGUodm9pZCk7CmV4
dGVybiBjaGFyICp0bXBuYW0oY2hhciAqKTsKCmV4dGVybiBjaGFyICp0bXBuYW1fcihjaGFyICop
OwoKZXh0ZXJuIGludCBmY2xvc2UoRklMRSAqKTsKZXh0ZXJuIGludCBmZmx1c2goRklMRSAqKTsK
ZXh0ZXJuIEZJTEUgKmZvcGVuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIEZJ
TEUgKmZyZW9wZW4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIEZJTEUgKik7CmV4dGVybiB2
b2lkIHNldGJ1ZihGSUxFICosIGNoYXIgKik7CgoKZXh0ZXJuIHZvaWQgc2V0YnVmZmVyKEZJTEUg
KiwgY2hhciAqLCBzaXplX3QpOwpleHRlcm4gaW50IHNldGxpbmVidWYoRklMRSAqKTsKCmV4dGVy
biBpbnQgc2V0dmJ1ZihGSUxFICosIGNoYXIgKiwgaW50LCBzaXplX3QpOwoKZXh0ZXJuIGludCBm
cHJpbnRmKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOwoKZXh0ZXJuIGludCBmc2NhbmYoRklM
RSAqLCBjb25zdCBjaGFyICosIC4uLik7CgpleHRlcm4gaW50IHByaW50Zihjb25zdCBjaGFyICos
IC4uLik7CgpleHRlcm4gaW50IHNjYW5mKGNvbnN0IGNoYXIgKiwgLi4uKTsKCgoKZXh0ZXJuIGlu
dCBzbnByaW50ZihjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwoKCmV4dGVybiBp
bnQgc3ByaW50ZihjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKCmV4dGVybiBpbnQgc3NjYW5m
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCAuLi4pOwpleHRlcm4gaW50IHZmcHJpbnRmKEZJ
TEUgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQgdnByaW50Zihj
b25zdCBjaGFyICosIF9fZ251Y192YV9saXN0KTsKCgpleHRlcm4gaW50IHZzbnByaW50ZihjaGFy
ICosIHNpemVfdCwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CgpleHRlcm4gaW50IHZz
cHJpbnRmKGNoYXIgKiwgY29uc3QgY2hhciAqLCBfX2dudWNfdmFfbGlzdCk7CmV4dGVybiBpbnQg
ZmdldGMoRklMRSAqKTsKZXh0ZXJuIGNoYXIgKmZnZXRzKGNoYXIgKiwgaW50LCBGSUxFICopOwpl
eHRlcm4gaW50IGZwdXRjKGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBmcHV0cyhjb25zdCBjaGFy
ICosIEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0YyhGSUxFICopOwpleHRlcm4gaW50IGdldGNoYXIo
dm9pZCk7CmV4dGVybiBjaGFyICpnZXRzKGNoYXIgKik7CmV4dGVybiBpbnQgcHV0YyhpbnQsIEZJ
TEUgKik7CmV4dGVybiBpbnQgcHV0Y2hhcihpbnQpOwpleHRlcm4gaW50IHB1dHMoY29uc3QgY2hh
ciAqKTsKZXh0ZXJuIGludCB1bmdldGMoaW50LCBGSUxFICopOwpleHRlcm4gc2l6ZV90IGZyZWFk
KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBzaXplX3QgZndyaXRlKGNv
bnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7CmV4dGVybiBpbnQgZmdldHBvcyhG
SUxFICosIGZwb3NfdCAqKTsKZXh0ZXJuIGludCBmc2VlayhGSUxFICosIGxvbmcsIGludCk7CmV4
dGVybiBpbnQgZnNldHBvcyhGSUxFICosIGNvbnN0IGZwb3NfdCAqKTsKZXh0ZXJuIGxvbmcgZnRl
bGwoRklMRSAqKTsKZXh0ZXJuIHZvaWQgcmV3aW5kKEZJTEUgKik7CmV4dGVybiB2b2lkIGNsZWFy
ZXJyKEZJTEUgKik7CmV4dGVybiBpbnQgZmVvZihGSUxFICopOwpleHRlcm4gaW50IGZlcnJvcihG
SUxFICopOwpleHRlcm4gdm9pZCBwZXJyb3IoY29uc3QgY2hhciAqKTsKCmV4dGVybiBpbnQgX19m
aWxidWYoRklMRSAqKTsKZXh0ZXJuIGludCBfX2Zsc2J1ZihpbnQsIEZJTEUgKik7CgoKCgoKCgpl
eHRlcm4gRklMRSAqZmRvcGVuKGludCwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmN0ZXJt
aWQoY2hhciAqKTsKZXh0ZXJuIGludCBmaWxlbm8oRklMRSAqKTsKIyAzMjUgIi9ob21lL2JyYWJi
aW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgi
IDMgNApleHRlcm4gdm9pZCBmbG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIGludCBmdHJ5bG9ja2Zp
bGUoRklMRSAqKTsKZXh0ZXJuIHZvaWQgZnVubG9ja2ZpbGUoRklMRSAqKTsKZXh0ZXJuIGludCBn
ZXRjX3VubG9ja2VkKEZJTEUgKik7CmV4dGVybiBpbnQgZ2V0Y2hhcl91bmxvY2tlZCh2b2lkKTsK
ZXh0ZXJuIGludCBwdXRjX3VubG9ja2VkKGludCwgRklMRSAqKTsKZXh0ZXJuIGludCBwdXRjaGFy
X3VubG9ja2VkKGludCk7CiMgMzQwICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1z
dW4tc29sYXJpczIuNi8zLjAvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKnBvcGVu
KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmN1c2VyaWQoY2hhciAq
KTsKZXh0ZXJuIGNoYXIgKnRlbXBuYW0oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gaW50IGdldG9wdChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7CgoKCmV4dGVy
biBjaGFyICpvcHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9wdG9wdDsKZXh0ZXJu
IGludCBnZXR3KEZJTEUgKik7CmV4dGVybiBpbnQgcHV0dyhpbnQsIEZJTEUgKik7CmV4dGVybiBp
bnQgcGNsb3NlKEZJTEUgKik7CgoKCgoKCgpleHRlcm4gaW50IGZzZWVrbyhGSUxFICosIG9mZl90
LCBpbnQpOwpleHRlcm4gb2ZmX3QgZnRlbGxvKEZJTEUgKik7CiMgMzY5ICIvaG9tZS9icmFiYmlu
cC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8zLjAvaW5jbHVkZS9zdGRpby5oIiAz
IDQKZXh0ZXJuIEZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwpleHRl
cm4gRklMRSAqZnJlb3BlbjY0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBGSUxFICopOwpl
eHRlcm4gRklMRSAqdG1wZmlsZTY0KHZvaWQpOwpleHRlcm4gaW50IGZnZXRwb3M2NChGSUxFICos
IGZwb3M2NF90ICopOwpleHRlcm4gaW50IGZzZXRwb3M2NChGSUxFICosIGNvbnN0IGZwb3M2NF90
ICopOwpleHRlcm4gaW50IGZzZWVrbzY0KEZJTEUgKiwgb2ZmNjRfdCwgaW50KTsKZXh0ZXJuIG9m
ZjY0X3QgZnRlbGxvNjQoRklMRSAqKTsKIyA1MzQgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGli
L3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDMgNAp9CiMgNDMgIi9o
b21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRl
L2Zsb2F0aW5ncG9pbnQuaCIgMiAzIDQKCiMgMSAiL2hvbWUvYnJhYmJpbnAvbGliL2djYy1saWIv
c3BhcmMtc3VuLXNvbGFyaXMyLjYvMy4wL2luY2x1ZGUvc3lzL2llZWVmcC5oIiAxIDMgNAojIDE3
ICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29sYXJpczIuNi8zLjAvaW5j
bHVkZS9zeXMvaWVlZWZwLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpaWVlZWZwLmgJMi43IDk0
LzExLzA5IgoKCmV4dGVybiAiQyIgewoKCgoKCgplbnVtIGZwX2RpcmVjdGlvbl90eXBlIHsKICAg
ICAgICBmcF9uZWFyZXN0ID0gMCwKICAgICAgICBmcF90b3plcm8gPSAxLAogICAgICAgIGZwX3Bv
c2l0aXZlID0gMiwKICAgICAgICBmcF9uZWdhdGl2ZSA9IDMKfTsKCmVudW0gZnBfcHJlY2lzaW9u
X3R5cGUgewogICAgICAgIGZwX2V4dGVuZGVkID0gMCwKICAgICAgICBmcF9zaW5nbGUgPSAxLAog
ICAgICAgIGZwX2RvdWJsZSA9IDIsCiAgICAgICAgZnBfcHJlY2lzaW9uXzMgPSAzCn07CgplbnVt
IGZwX2V4Y2VwdGlvbl90eXBlIHsKICAgICAgICBmcF9pbmV4YWN0ID0gMCwKICAgICAgICBmcF9k
aXZpc2lvbiA9IDEsCiAgICAgICAgZnBfdW5kZXJmbG93ID0gMiwKICAgICAgICBmcF9vdmVyZmxv
dyA9IDMsCiAgICAgICAgZnBfaW52YWxpZCA9IDQKfTsKCmVudW0gZnBfdHJhcF9lbmFibGVfdHlw
ZSB7CiAgICAgICAgZnBfdHJhcF9pbmV4YWN0ID0gMCwKICAgICAgICBmcF90cmFwX2RpdmlzaW9u
ID0gMSwKICAgICAgICBmcF90cmFwX3VuZGVyZmxvdyA9IDIsCiAgICAgICAgZnBfdHJhcF9vdmVy
ZmxvdyA9IDMsCiAgICAgICAgZnBfdHJhcF9pbnZhbGlkID0gNAp9OwojIDEzMyAiL2hvbWUvYnJh
YmJpbnAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMy4wL2luY2x1ZGUvc3lzL2ll
ZWVmcC5oIiAzIDQKZW51bSBmcF9jbGFzc190eXBlIHsKICAgICAgICBmcF96ZXJvID0gMCwKICAg
ICAgICBmcF9zdWJub3JtYWwgPSAxLAogICAgICAgIGZwX25vcm1hbCA9IDIsCiAgICAgICAgZnBf
aW5maW5pdHkgPSAzLAogICAgICAgIGZwX3F1aWV0ID0gNCwKICAgICAgICBmcF9zaWduYWxpbmcg
PSA1Cn07CgoKfQojIDQ1ICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi9zcGFyYy1zdW4tc29s
YXJpczIuNi8zLjAvaW5jbHVkZS9mbG9hdGluZ3BvaW50LmgiIDIgMyA0CiMgNTggIi9ob21lL2Jy
YWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL2Zsb2F0
aW5ncG9pbnQuaCIgMyA0CnR5cGVkZWYgaW50IHNpZ2ZwZV9jb2RlX3R5cGU7Cgp0eXBlZGVmIHZv
aWQgKCpzaWdmcGVfaGFuZGxlcl90eXBlKSgpOwoKCgoKCmV4dGVybiBzaWdmcGVfaGFuZGxlcl90
eXBlIHNpZ2ZwZSAoc2lnZnBlX2NvZGVfdHlwZSwgc2lnZnBlX2hhbmRsZXJfdHlwZSk7CgoKCgp0
eXBlZGVmIGZsb2F0IHNpbmdsZTsKCgoKdHlwZWRlZiB1bnNpZ25lZCBleHRlbmRlZFszXTsKCgp0
eXBlZGVmIGxvbmcgZG91YmxlIHF1YWRydXBsZTsKCnR5cGVkZWYgdW5zaWduZWQgZnBfZXhjZXB0
aW9uX2ZpZWxkX3R5cGU7CiMgOTAgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJjLXN1
bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL2Zsb2F0aW5ncG9pbnQuaCIgMyA0CnR5cGVkZWYgY2hh
ciBkZWNpbWFsX3N0cmluZ1s1MTJdOwoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBlbnVtIGZw
X2NsYXNzX3R5cGUgZnBjbGFzczsKICAgICAgICBpbnQgc2lnbjsKICAgICAgICBpbnQgZXhwb25l
bnQ7CiAgICAgICAgZGVjaW1hbF9zdHJpbmcgZHM7CgoKICAgICAgICBpbnQgbW9yZTsKCgogICAg
ICAgIGludCBuZGlnaXRzOwoKCn0gZGVjaW1hbF9yZWNvcmQ7CgplbnVtIGRlY2ltYWxfZm9ybSB7
CiAgICAgICAgZml4ZWRfZm9ybSwKCgogICAgICAgIGZsb2F0aW5nX2Zvcm0KCn07Cgp0eXBlZGVm
IHN0cnVjdCB7CiAgICAgICAgZW51bSBmcF9kaXJlY3Rpb25fdHlwZSByZDsKCiAgICAgICAgZW51
bSBkZWNpbWFsX2Zvcm0gZGY7CgogICAgICAgIGludCBuZGlnaXRzOwp9IGRlY2ltYWxfbW9kZTsK
CmVudW0gZGVjaW1hbF9zdHJpbmdfZm9ybSB7CiAgICAgICAgaW52YWxpZF9mb3JtLAogICAgICAg
IHdoaXRlc3BhY2VfZm9ybSwKICAgICAgICBmaXhlZF9pbnRfZm9ybSwKICAgICAgICBmaXhlZF9p
bnRkb3RfZm9ybSwKICAgICAgICBmaXhlZF9kb3RmcmFjX2Zvcm0sCiAgICAgICAgZml4ZWRfaW50
ZG90ZnJhY19mb3JtLAogICAgICAgIGZsb2F0aW5nX2ludF9mb3JtLAogICAgICAgIGZsb2F0aW5n
X2ludGRvdF9mb3JtLAogICAgICAgIGZsb2F0aW5nX2RvdGZyYWNfZm9ybSwKICAgICAgICBmbG9h
dGluZ19pbnRkb3RmcmFjX2Zvcm0sCiAgICAgICAgaW5mX2Zvcm0sCiAgICAgICAgaW5maW5pdHlf
Zm9ybSwKICAgICAgICBuYW5fZm9ybSwKICAgICAgICBuYW5zdHJpbmdfZm9ybQp9OwoKZXh0ZXJu
IHZvaWQgc2luZ2xlX3RvX2RlY2ltYWwgKHNpbmdsZSAqLCBkZWNpbWFsX21vZGUgKiwgZGVjaW1h
bF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKik7CgpleHRlcm4gdm9pZCBkb3Vi
bGVfdG9fZGVjaW1hbCAoZG91YmxlICosIGRlY2ltYWxfbW9kZSAqLCBkZWNpbWFsX3JlY29yZCAq
LCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAqKTsKCmV4dGVybiB2b2lkIGV4dGVuZGVkX3RvX2Rl
Y2ltYWwgKGV4dGVuZGVkICosIGRlY2ltYWxfbW9kZSAqLCBkZWNpbWFsX3JlY29yZCAqLCBmcF9l
eGNlcHRpb25fZmllbGRfdHlwZSAqKTsKCmV4dGVybiB2b2lkIHF1YWRydXBsZV90b19kZWNpbWFs
IChxdWFkcnVwbGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZwX2V4Y2Vw
dGlvbl9maWVsZF90eXBlICopOwoKCmV4dGVybiB2b2lkIGRlY2ltYWxfdG9fc2luZ2xlIChzaW5n
bGUgKiwgZGVjaW1hbF9tb2RlICosIGRlY2ltYWxfcmVjb3JkICosIGZwX2V4Y2VwdGlvbl9maWVs
ZF90eXBlICopOwoKZXh0ZXJuIHZvaWQgZGVjaW1hbF90b19kb3VibGUgKGRvdWJsZSAqLCBkZWNp
bWFsX21vZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKik7
CgpleHRlcm4gdm9pZCBkZWNpbWFsX3RvX2V4dGVuZGVkIChleHRlbmRlZCAqLCBkZWNpbWFsX21v
ZGUgKiwgZGVjaW1hbF9yZWNvcmQgKiwgZnBfZXhjZXB0aW9uX2ZpZWxkX3R5cGUgKik7CgpleHRl
cm4gdm9pZCBkZWNpbWFsX3RvX3F1YWRydXBsZSAocXVhZHJ1cGxlICosIGRlY2ltYWxfbW9kZSAq
LCBkZWNpbWFsX3JlY29yZCAqLCBmcF9leGNlcHRpb25fZmllbGRfdHlwZSAqKTsKCgpleHRlcm4g
dm9pZCBzdHJpbmdfdG9fZGVjaW1hbCAoY2hhciAqKiwgaW50LCBpbnQsIGRlY2ltYWxfcmVjb3Jk
ICosIGVudW0gZGVjaW1hbF9zdHJpbmdfZm9ybSAqLCBjaGFyICoqKTsKCmV4dGVybiB2b2lkIGZ1
bmNfdG9fZGVjaW1hbCAoY2hhciAqKiwgaW50LCBpbnQsIGRlY2ltYWxfcmVjb3JkICosIGVudW0g
ZGVjaW1hbF9zdHJpbmdfZm9ybSAqLCBjaGFyICoqLCBpbnQgKCopKHZvaWQpLCBpbnQgKiwgaW50
ICgqKShpbnQpKTsKCgpleHRlcm4gdm9pZCBmaWxlX3RvX2RlY2ltYWwgKGNoYXIgKiosIGludCwg
aW50LCBkZWNpbWFsX3JlY29yZCAqLCBlbnVtIGRlY2ltYWxfc3RyaW5nX2Zvcm0gKiwgY2hhciAq
KiwgRklMRSAqLCBpbnQgKik7CgoKCmV4dGVybiBjaGFyICpzZWNvbnZlcnQgKHNpbmdsZSAqLCBp
bnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNmY29udmVydCAoc2luZ2xl
ICosIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4gY2hhciAqc2djb252ZXJ0IChz
aW5nbGUgKiwgaW50LCBpbnQsIGNoYXIgKik7CmV4dGVybiBjaGFyICplY29udmVydCAoZG91Ymxl
LCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmZjb252ZXJ0IChkb3Vi
bGUsIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4gY2hhciAqZ2NvbnZlcnQgKGRv
dWJsZSwgaW50LCBpbnQsIGNoYXIgKik7CmV4dGVybiBjaGFyICpxZWNvbnZlcnQgKHF1YWRydXBs
ZSAqLCBpbnQsIGludCAqLCBpbnQgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnFmY29udmVydCAo
cXVhZHJ1cGxlICosIGludCwgaW50ICosIGludCAqLCBjaGFyICopOwpleHRlcm4gY2hhciAqcWdj
b252ZXJ0IChxdWFkcnVwbGUgKiwgaW50LCBpbnQsIGNoYXIgKik7CgpleHRlcm4gY2hhciAqZWN2
dCAoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpmY3Z0IChkb3VibGUs
IGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKmdjdnQgKGRvdWJsZSwgaW50LCBjaGFy
ICopOwoKCgoKCmV4dGVybiBkb3VibGUgYXRvZiAoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGRvdWJs
ZSBzdHJ0b2QgKGNvbnN0IGNoYXIgKiwgY2hhciAqKik7CgoKfQojIDIzNCAiL2hvbWUvYnJhYmJp
bnAvbGliL2djYy1saWIvc3BhcmMtc3VuLXNvbGFyaXMyLjYvMy4wL2luY2x1ZGUvbWF0aC5oIiAy
IDMgNAoKCgoKfQojIDQxICIvaG9tZS9icmFiYmlucC9saWIvZ2NjLWxpYi8uLi8uLi9pbmNsdWRl
L2crKy12My9iaXRzL3N0ZF9jbWF0aC5oIiAyIDMKIyA2OCAiL2hvbWUvYnJhYmJpbnAvbGliL2dj
Yy1saWIvLi4vLi4vaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMwpuYW1lc3BhY2Ug
c3RkCnsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4gX1RwIF9fY21hdGhfcG93ZXIoX1RwLCB1
bnNpZ25lZCBpbnQpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgaW5saW5lIF9UcAogICAg
X19jbWF0aF9hYnMoX1RwIF9feCkKICAgIHsKICAgICAgcmV0dXJuIF9feCA8IF9UcCgpID8gLV9f
eCA6IF9feDsKICAgIH0KCiAgaW5saW5lIGZsb2F0CiAgYWJzKGZsb2F0IF9feCkKICB7IHJldHVy
biBfX2J1aWx0aW5fZmFic2YoX194KTsgfQoKICBpbmxpbmUgZG91YmxlCiAgYWJzKGRvdWJsZSBf
X3gpCiAgeyByZXR1cm4gX19idWlsdGluX2ZhYnMoX194KTsgfQoKICBpbmxpbmUgbG9uZyBkb3Vi
bGUKICBhYnMobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mYWJzbChfX3gp
OyB9CgoKCgoKICBpbmxpbmUgZmxvYXQKICBhY29zKGZsb2F0IF9feCkgeyByZXR1cm4gOjphY29z
KHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KCgogIHVzaW5nIDo6YWNvczsKCgoKCgogIGlu
bGluZSBsb25nIGRvdWJsZQogIGFjb3MobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmFjb3Mo
c3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGFzaW4o
ZmxvYXQgX194KSB7IHJldHVybiA6OmFzaW4oc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQoK
CiAgdXNpbmcgOjphc2luOwoKCgoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgYXNpbihsb25nIGRv
dWJsZSBfX3gpIHsgcmV0dXJuIDo6YXNpbihzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CgoK
CgoKCiAgaW5saW5lIGZsb2F0CiAgYXRhbihmbG9hdCBfX3gpIHsgcmV0dXJuIDo6YXRhbihzdGF0
aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CgoKICB1c2luZyA6OmF0YW47CgoKCgoKICBpbmxpbmUg
bG9uZyBkb3VibGUKICBhdGFuKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjphdGFuKHN0YXRp
Y19jYXN0PGRvdWJsZT4oX194KSk7IH0KCgoKCgoKICBpbmxpbmUgZmxvYXQKICBhdGFuMihmbG9h
dCBfX3ksIGZsb2F0IF9feCkKICB7IHJldHVybiA6OmF0YW4yKHN0YXRpY19jYXN0PGRvdWJsZT4o
X195KSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQoKCiAgdXNpbmcgOjphdGFuMjsKCgoK
CgogIGlubGluZSBsb25nIGRvdWJsZQogIGF0YW4yKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3Vi
bGUgX194KQogIHsgcmV0dXJuIDo6YXRhbjIoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3kpLCBzdGF0
aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CgoKCgoKCiAgaW5saW5lIGZsb2F0CiAgY2VpbChmbG9h
dCBfX3gpIHsgcmV0dXJuIDo6Y2VpbChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CgoKICB1
c2luZyA6OmNlaWw7CgoKCgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBjZWlsKGxvbmcgZG91Ymxl
IF9feCkgeyByZXR1cm4gOjpjZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KCgogIGlu
bGluZSBmbG9hdAogIGNvcyhmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Nvc2YoX194
KTsgfQoKICB1c2luZyA6OmNvczsKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgY29zKGxvbmcgZG91
YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fY29zbChfX3gpOyB9CgoKCgoKICBpbmxpbmUg
ZmxvYXQKICBjb3NoKGZsb2F0IF9feCkgeyByZXR1cm4gOjpjb3NoKHN0YXRpY19jYXN0PGRvdWJs
ZT4oX194KSk7IH0KCgogIHVzaW5nIDo6Y29zaDsKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQog
IGNvc2gobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OmNvc2goc3RhdGljX2Nhc3Q8ZG91Ymxl
PihfX3gpKTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGV4cChmbG9hdCBfX3gpIHsgcmV0dXJu
IDo6ZXhwKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KCgogIHVzaW5nIDo6ZXhwOwoKCgoK
CiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZXhwKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpl
eHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQoKCiAgaW5saW5lIGZsb2F0CiAgZmFicyhm
bG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmKF9feCk7IH0KCiAgdXNpbmcgOjpm
YWJzOwoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBmYWJzKGxvbmcgZG91YmxlIF9feCkKICB7IHJl
dHVybiBfX2J1aWx0aW5fZmFic2woX194KTsgfQoKCgoKCiAgaW5saW5lIGZsb2F0CiAgZmxvb3Io
ZmxvYXQgX194KSB7IHJldHVybiA6OmZsb29yKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0K
CgogIHVzaW5nIDo6Zmxvb3I7CgoKCgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBmbG9vcihsb25n
IGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6Zmxvb3Ioc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsg
fQoKCgoKCgogIGlubGluZSBmbG9hdAogIGZtb2QoZmxvYXQgX194LCBmbG9hdCBfX3kpCiAgeyBy
ZXR1cm4gOjpmbW9kKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSwgc3RhdGljX2Nhc3Q8ZG91Ymxl
PihfX3kpKTsgfQoKCiAgdXNpbmcgOjpmbW9kOwoKCgoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAg
Zm1vZChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiA6OmZtb2Qo
c3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpLCBzdGF0aWNfY2FzdDxkb3VibGU+KF9feSkpOyB9CgoK
CgoKCiAgaW5saW5lIGZsb2F0CiAgZnJleHAoZmxvYXQgX194LCBpbnQqIF9fZXhwKSB7IHJldHVy
biA6OmZyZXhwKF9feCwgX19leHApOyB9CgoKICB1c2luZyA6OmZyZXhwOwoKCgoKCiAgaW5saW5l
IGxvbmcgZG91YmxlCiAgZnJleHAobG9uZyBkb3VibGUgX194LCBpbnQqIF9fZXhwKQogIHsgcmV0
dXJuIDo6ZnJleHAoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpLCBfX2V4cCk7IH0KCgoKCgoKICBp
bmxpbmUgZmxvYXQKICBsZGV4cChmbG9hdCBfX3gsIGludCBfX2V4cCkKICB7IHJldHVybiA6Omxk
ZXhwKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSwgX19leHApOyB9CgoKICB1c2luZyA6OmxkZXhw
OwoKCgoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgbGRleHAobG9uZyBkb3VibGUgX194LCBpbnQg
X19leHApCiAgeyByZXR1cm4gOjpsZGV4cChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCksIF9fZXhw
KTsgfQoKCgoKCgogIGlubGluZSBmbG9hdCBsb2coZmxvYXQgX194KQogIHsgcmV0dXJuIDo6bG9n
KHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KCgogIHVzaW5nIDo6bG9nOwoKCgoKCiAgaW5s
aW5lIGxvbmcgZG91YmxlCiAgbG9nKGxvbmcgZG91YmxlIF9feCkgeyByZXR1cm4gOjpsb2coc3Rh
dGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQoKCgoKCgogIGlubGluZSBmbG9hdAogIGxvZzEwKGZs
b2F0IF9feCkgeyByZXR1cm4gOjpsb2cxMChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CgoK
ICB1c2luZyA6OmxvZzEwOwoKCgoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgbG9nMTAobG9uZyBk
b3VibGUgX194KSB7IHJldHVybiA6OmxvZzEwKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0K
CgoKICBpbmxpbmUgZmxvYXQKICBtb2RmKGZsb2F0IF9feCwgZmxvYXQqIF9faXB0cikgeyByZXR1
cm4gOjptb2RmZihfX3gsIF9faXB0cik7IH0KIyAzNjggIi9ob21lL2JyYWJiaW5wL2xpYi9nY2Mt
bGliLy4uLy4uL2luY2x1ZGUvZysrLXYzL2JpdHMvc3RkX2NtYXRoLmgiIDMKICB1c2luZyA6Om1v
ZGY7CgoKCgoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBtb2RmKGxvbmcgZG91YmxlIF9feCwgbG9u
ZyBkb3VibGUqIF9faXB0cikKICB7CiAgICBkb3VibGUgX190bXA7CiAgICBkb3VibGUgX19yZXMg
PSA6Om1vZGYoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpLCAmX190bXApOwogICAgKiBfX2lwdHIg
PSBzdGF0aWNfY2FzdDxsb25nIGRvdWJsZT4oX190bXApOwogICAgcmV0dXJuIF9fcmVzOwogIH0K
CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAKICAgIF9fcG93X2hlbHBl
cihfVHAgX194LCBpbnQgX19uKQogICAgewogICAgICByZXR1cm4gX19uIDwgMAogICAgICAgID8g
X1RwKDEpL19fY21hdGhfcG93ZXIoX194LCAtX19uKQogICAgICAgIDogX19jbWF0aF9wb3dlcihf
X3gsIF9fbik7CiAgICB9CgoKCgoKICBpbmxpbmUgZmxvYXQKICBwb3coZmxvYXQgX194LCBmbG9h
dCBfX3kpCiAgeyByZXR1cm4gOjpwb3coc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpLCBzdGF0aWNf
Y2FzdDxkb3VibGU+KF9feSkpOyB9CgoKICB1c2luZyA6OnBvdzsKCgoKCgogIGlubGluZSBsb25n
IGRvdWJsZQogIHBvdyhsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVy
biA6OnBvdyhzdGF0aWNfY2FzdDxkb3VibGU+KF9feCksIHN0YXRpY19jYXN0PGRvdWJsZT4oX195
KSk7IH0KCgogIGlubGluZSBmbG9hdAogIHBvdyhmbG9hdCBfX3gsIGludCBfX24pCiAgeyByZXR1
cm4gX19wb3dfaGVscGVyKF9feCwgX19uKTsgfQoKICBpbmxpbmUgZG91YmxlCiAgcG93KGRvdWJs
ZSBfX3gsIGludCBfX2kpCiAgeyByZXR1cm4gX19wb3dfaGVscGVyKF9feCwgX19pKTsgfQoKICBp
bmxpbmUgbG9uZyBkb3VibGUKICBwb3cobG9uZyBkb3VibGUgX194LCBpbnQgX19uKQogIHsgcmV0
dXJuIF9fcG93X2hlbHBlcihfX3gsIF9fbik7IH0KCiAgaW5saW5lIGZsb2F0CiAgc2luKGZsb2F0
IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fc2luZihfX3gpOyB9CgogIHVzaW5nIDo6c2luOwoK
ICBpbmxpbmUgbG9uZyBkb3VibGUKICBzaW4obG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9f
YnVpbHRpbl9zaW5sKF9feCk7IH0KCgoKCgogIGlubGluZSBmbG9hdAogIHNpbmgoZmxvYXQgX194
KSB7IHJldHVybiA6OnNpbmgoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQoKCiAgdXNpbmcg
OjpzaW5oOwoKCgoKCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgc2luaChsb25nIGRvdWJsZSBfX3gp
IHsgcmV0dXJuIDo6c2luaChzdGF0aWNfY2FzdDxkb3VibGU+KF9feCkpOyB9CgoKICBpbmxpbmUg
ZmxvYXQKICBzcXJ0KGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fc3FydGYoX194KTsg
fQoKICB1c2luZyA6OnNxcnQ7CgogIGlubGluZSBsb25nIGRvdWJsZQogIHNxcnQobG9uZyBkb3Vi
bGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0bChfX3gpOyB9CgoKCgoKICBpbmxpbmUg
ZmxvYXQKICB0YW4oZmxvYXQgX194KSB7IHJldHVybiA6OnRhbihzdGF0aWNfY2FzdDxkb3VibGU+
KF9feCkpOyB9CgoKICB1c2luZyA6OnRhbjsKCgoKCgogIGlubGluZSBsb25nIGRvdWJsZQogIHRh
bihsb25nIGRvdWJsZSBfX3gpIHsgcmV0dXJuIDo6dGFuKHN0YXRpY19jYXN0PGRvdWJsZT4oX194
KSk7IH0KCgoKCgoKICBpbmxpbmUgZmxvYXQKICB0YW5oKGZsb2F0IF9feCkgeyByZXR1cm4gOjp0
YW5oKHN0YXRpY19jYXN0PGRvdWJsZT4oX194KSk7IH0KCgogIHVzaW5nIDo6dGFuaDsKCgoKCgog
IGlubGluZSBsb25nIGRvdWJsZQogIHRhbmgobG9uZyBkb3VibGUgX194KSB7IHJldHVybiA6OnRh
bmgoc3RhdGljX2Nhc3Q8ZG91YmxlPihfX3gpKTsgfQoKfQojIDY1MCAiL2hvbWUvYnJhYmJpbnAv
bGliL2djYy1saWIvLi4vLi4vaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMwojIDEg
Ii9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliLy4uLy4uL2luY2x1ZGUvZysrLXYzL2JpdHMvY21h
dGgudGNjIiAxIDMKIyAzNSAiL2hvbWUvYnJhYmJpbnAvbGliL2djYy1saWIvLi4vLi4vaW5jbHVk
ZS9nKystdjMvYml0cy9jbWF0aC50Y2MiIDMKbmFtZXNwYWNlIHN0ZAp7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIF9UcD4KICAgIF9UcAogICAgX19jbWF0aF9wb3dlcihfVHAgX194LCB1bnNp
Z25lZCBpbnQgX19uKQogICAgewogICAgICBfVHAgX195ID0gX19uICUgMiA/IF9feCA6IDE7Cgog
ICAgICB3aGlsZSAoX19uID4+PSAxKQogICAgICAgIHsKICAgICAgICAgIF9feCA9IF9feCAqIF9f
eDsKICAgICAgICAgIGlmIChfX24gJSAyKQogICAgICAgICAgICBfX3kgPSBfX3kgKiBfX3g7CiAg
ICAgICAgfQoKICAgICAgcmV0dXJuIF9feTsKICAgIH0KfQojIDY1MSAiL2hvbWUvYnJhYmJpbnAv
bGliL2djYy1saWIvLi4vLi4vaW5jbHVkZS9nKystdjMvYml0cy9zdGRfY21hdGguaCIgMiAzCiMg
MzIgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliLy4uLy4uL2luY2x1ZGUvZysrLXYzL2NtYXRo
IiAyIDMKIyA2ICJidWcuQyIgMgojIDEgIi9ob21lL2JyYWJiaW5wL2xpYi9nY2MtbGliL3NwYXJj
LXN1bi1zb2xhcmlzMi42LzMuMC9pbmNsdWRlL3N0ZGlvLmgiIDEgMyA0CiMgNyAiYnVnLkMiIDIK
Cgp0ZW1wbGF0ZSA8Y2xhc3MgVD4Kc3RydWN0IFZhbHVlIHsKICAgIHN0YXRpYyBjb25zdCBkb3Vi
bGUgdmFsdWUgOwp9Owp0ZW1wbGF0ZSA8Y2xhc3MgVD4KY29uc3QgZG91YmxlIFZhbHVlPFQ+Ojp2
YWx1ZSA9IFQ6OnRvU0kgOwoKCgp0ZW1wbGF0ZSA8aW50IE4+CnN0cnVjdCBGb290CnsKICAgIHN0
YXRpYyBjb25zdCBkb3VibGUgdG9TSSA7Cn0gOwoKdGVtcGxhdGUgPGludCBOPgpjb25zdCBkb3Vi
bGUgRm9vdDxOPjo6dG9TSSA9IHN0ZDo6cG93ICggMC4zLCBOICkgOwoKCgoKCmludCBtYWluICgp
CnsKCgoKICAgIHByaW50ZiAoICIlZlxuIiwgVmFsdWU8Rm9vdDwxPiA+Ojp2YWx1ZSApIDsKfQo=



More information about the Gcc-bugs mailing list