public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* other/3051: Internal compiler error compiling Asmutils
@ 2001-06-04 23:26 c.williams
  0 siblings, 0 replies; 4+ messages in thread
From: c.williams @ 2001-06-04 23:26 UTC (permalink / raw)
  To: gcc-gnats; +Cc: dl

>Number:         3051
>Category:       other
>Synopsis:       Internal compiler error compiling Asmutils
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Jun 04 23:26:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     GCC
>Release:        2.96
>Organization:
>Environment:
Red Hat Linux 7.0 on AMD K6-2
>Description:
gcc ver: gcc version 2.96 20000731 (Red Hat Linux 7.0)
process begun using gmake, dump:
gcc -Wall -O1 -m386 -g -c -o libm.o libm.c
libm.c: In function `fmodf':
libm.c:224: Internal compiler error in subst_stack_regs_pat, at reg-stack.c:1395
Please submit a full bug report.
See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
gmake[1]: *** [libm.o] Error 1
gmake[1]: Leaving directory `/root/download/asmutils-0.14/lib'
make: *** [all] Error 2
(preprocessed file attached)
>How-To-Repeat:
Compile section as stand-alone:
gcc -Wall -O1 -m386 -g -c -o tst.o tst.c --save-temp

#define IEEE754_FMOD(ret,x,y)\
  asm("1:\n"\
      " fprem\n"\
      " fstsw   %%ax\n"\
      " sahf\n"\
      " jp      1b\n":\
      "=t"(ret):\
      "u"(y),\
      "0"(x):\
      "eax","st") 


float fmodf(float x,float y)
{
  register float ret;
  IEEE754_FMOD(ret,x,y);
  return ret;
}  
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-csrc; name="libm.i"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="libm.i"

IyAxICJsaWJtLmMiCiMgMzAgImxpYm0uYyIKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7
CgoKCiMgNDYgImxpYm0uYyIKZmxvYXQgYWNvc2YoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0
IHJldDsKICBhc20oImZsZAklMFxuIiAiCWZtdWwJJTBcbiIgIglmbGQxXG4iICIJZnN1YnBcbiIg
Iglmc3FydFxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZwYXRhbiIgOiAiPXQiKHJldCkgOiAiMCIo
eCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgYWNvcyhkb3VibGUgeCkKewog
IHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmbGQJJTBcbiIgIglmbXVsCSUwXG4iICIJZmxk
MVxuIiAiCWZzdWJwXG4iICIJZnNxcnRcbiIgIglmeGNoCSUlc3QoMSlcbiIgIglmcGF0YW4iIDog
Ij10IihyZXQpIDogIjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3Vi
bGUgYWNvc2wobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBh
c20oImZsZAklMFxuIiAiCWZtdWwJJTBcbiIgIglmbGQxXG4iICIJZnN1YnBcbiIgIglmc3FydFxu
IiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZwYXRhbiIgOiAiPXQiKHJldCkgOiAiMCIoeCkgOiAic3Qo
MSkiKTsKICByZXR1cm4gcmV0Owp9CgoKCiMgODAgImxpYm0uYyIKZmxvYXQgYXNpbmYoZmxvYXQg
eCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZsZAklMFxuIiAiCWZtdWwJJTBcbiIg
IglmbGQxXG4iICIJZnN1YnBcbiIgIglmc3FydFxuIiAiCWZwYXRhbiIgOiAiPXQiKHJldCkgOiAi
MCIoeCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgYXNpbihkb3VibGUgeCkK
ewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmbGQJJTBcbiIgIglmbXVsCSUwXG4iICIJ
ZmxkMVxuIiAiCWZzdWJwXG4iICIJZnNxcnRcbiIgIglmcGF0YW4iIDogIj10IihyZXQpIDogIjAi
KHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgYXNpbmwobG9uZyBk
b3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZsZAklMFxuIiAi
CWZtdWwJJTBcbiIgIglmbGQxXG4iICIJZnN1YnBcbiIgIglmc3FydFxuIiAiCWZwYXRhbiIgOiAi
PXQiKHJldCkgOiAiMCIoeCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKZmxv
YXQgYXRhbjJmKGZsb2F0IHksZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20o
ImZwYXRhbiIgOiAiPXQiKHJldCk6ICJ1Iih5KSwgIjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJu
IHJldDsKfQoKZG91YmxlIGF0YW4yKGRvdWJsZSB5LGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91
YmxlIHJldDsKICBhc20oImZwYXRhbiIgOiAiPXQiKHJldCk6ICJ1Iih5KSwgIjAiKHgpIDogInN0
KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgYXRhbjJsKGxvbmcgZG91YmxlIHks
bG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZwYXRh
biIgOiAiPXQiKHJldCk6ICJ1Iih5KSwgIjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsK
fQoKCiMgMTQ3ICJsaWJtLmMiCmZsb2F0IGV4cGYoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0
IHJldDsKICBhc20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0
CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglm
MnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlc
biI6ICI9dCIocmV0KTogIjAiKHgpOiAic3QoMikiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUg
ZXhwKGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsKICBhc20oImZsZGwyZVxuIiAi
CWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5kaW50XG4i
ICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIgIglmYWRk
cFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0KTogIjAiKHgpOiAi
c3QoMikiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJsZSBleHBsKGxvbmcgZG91YmxlIHgp
CnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmbGRsMmVcbiIgIglmeGNoCSUl
c3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAklJXN0KDEpXG4iICIJZnJuZGludFxuIiAiCWZzdAkl
JXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4bTFcbiIgIglmbGQxXG4iICIJZmFkZHBcbiIgIglm
c2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4iOiAiPXQiKHJldCk6ICIwIih4KTogInN0KDIpIik7
CiAgcmV0dXJuIHJldDsKfQoKCgojIDE4NyAibGlibS5jIgpmbG9hdCBleHAxMGYoZmxvYXQgeCkK
ewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZsZGwydFxuIiAiCWZ4Y2gJJSVzdCgxKVxu
IiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilc
biIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxu
IiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0KTogIjAiKHgpOiAic3QoMikiKTsKICByZXR1
cm4gcmV0Owp9Cgpkb3VibGUgZXhwMTAoZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0
OwogIGFzbSgiZmxkbDJ0XG4iICIJZnhjaAklJXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJJSVz
dCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYyeG0x
XG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxuIjog
Ij10IihyZXQpOiAiMCIoeCk6ICJzdCgyKSIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91Ymxl
IGV4cDEwbChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFz
bSgiZmxkbDJ0XG4iICIJZnhjaAklJXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJJSVzdCgxKVxu
IiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYyeG0xXG4iICIJ
ZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxuIjogIj10Iihy
ZXQpOiAiMCIoeCk6ICJzdCgyKSIpOwogIHJldHVybiByZXQ7Cn0KCiMgMjE5ICJsaWJtLmMiCmZs
b2F0IGZtb2RmKGZsb2F0IHgsZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20o
IjE6XG4iICIJZnByZW1cbiIgIglmc3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpwICAJMWJcbiI6
ICI9dCIocmV0KTogInUiKHkpLCAiMCIoeCk6ICJlYXgiLCJzdCIpOwogIHJldHVybiByZXQ7Cn0K
CmRvdWJsZSBmbW9kKGRvdWJsZSB4LGRvdWJsZSB5KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsK
ICBhc20oIjE6XG4iICIJZnByZW1cbiIgIglmc3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpwICAJ
MWJcbiI6ICI9dCIocmV0KTogInUiKHkpLCAiMCIoeCk6ICJlYXgiLCJzdCIpOwogIHJldHVybiBy
ZXQ7Cn0KCmxvbmcgZG91YmxlIGZtb2RsKGxvbmcgZG91YmxlIHgsbG9uZyBkb3VibGUgeSkKewog
IGxvbmcgZG91YmxlIHJldDsKICBhc20oIjE6XG4iICIJZnByZW1cbiIgIglmc3RzdwklJWF4XG4i
ICIJc2FoZlxuIiAiCWpwICAJMWJcbiI6ICI9dCIocmV0KTogInUiKHkpLCAiMCIoeCk6ICJlYXgi
LCJzdCIpOwogIHJldHVybiByZXQ7Cn0KCgoKIyAyODIgImxpYm0uYyIKZmxvYXQgaHlwb3RmKGZs
b2F0IHgsZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldHZhbDsKICBhc20gKCAiZnhhbVxu
IiAiCWZuc3Rzd1xuIiAiCW1vdmIJJSVhaCwgJSVjaFxuIiAiCWZ4Y2gJJTJcbiIgIglmbGQJJTBc
biIgIglmc3RwCSUwXG4iICIJZnhhbVxuIiAiCWZuc3Rzd1xuIiAiCW1vdmIJJSVhaCwgJSVhbFxu
IiAiCW9yYgklJWNoLCAlJWFoXG4iICIJc2FoZlxuIiAiCWpjCTFmXG4iICIJZnhjaAklMlxuIiAi
CWZtdWwJJTBcbiIgIglmeGNoXG4iICIJZm11bAklMFxuIiAiCWZhZGRwXG4iICIJZnNxcnRcbiIg
IglqbXAJMmZcbiIiMToJYW5kYgkkMHg0NSwgJSVhbFxuIiAiCWNtcGIJJDUsICUlYWxcbiIgIglq
ZQkzZlxuIiAiCWFuZGIJJDB4NDUsICUlY2hcbiIgIgljbXBiCSQ1LCAlJWNoXG4iICIJam5lCTRm
XG4iICIJZnhjaFxuIiIzOglmc3RwCSUyXG4iICIJZmFic1xuIiAiCWptcAkyZlxuIiI0Ogl0ZXN0
YgkkMSwgJSVhbFxuIiAiCWpuegk1ZlxuIiAiCWZ4Y2hcbiIiNToJZnN0cAklMlxuIiIyOiI6ICI9
dCIocmV0dmFsKSA6ICIwIih4KSwidSIoeSkgOiAiZWF4IiwiZWN4Iiwic3QoMSkiKTsKICByZXR1
cm4gcmV0dmFsOwp9Cgpkb3VibGUgaHlwb3QoZG91YmxlIHgsZG91YmxlIHkpCnsKICByZWdpc3Rl
ciBkb3VibGUgcmV0dmFsOwogIGFzbSAoICJmeGFtXG4iICIJZm5zdHN3XG4iICIJbW92YgklJWFo
LCAlJWNoXG4iICIJZnhjaAklMlxuIiAiCWZsZAklMFxuIiAiCWZzdHAJJTBcbiIgIglmeGFtXG4i
ICIJZm5zdHN3XG4iICIJbW92YgklJWFoLCAlJWFsXG4iICIJb3JiCSUlY2gsICUlYWhcbiIgIglz
YWhmXG4iICIJamMJMWZcbiIgIglmeGNoCSUyXG4iICIJZm11bAklMFxuIiAiCWZ4Y2hcbiIgIglm
bXVsCSUwXG4iICIJZmFkZHBcbiIgIglmc3FydFxuIiAiCWptcAkyZlxuIiIxOglhbmRiCSQweDQ1
LCAlJWFsXG4iICIJY21wYgkkNSwgJSVhbFxuIiAiCWplCTNmXG4iICIJYW5kYgkkMHg0NSwgJSVj
aFxuIiAiCWNtcGIJJDUsICUlY2hcbiIgIglqbmUJNGZcbiIgIglmeGNoXG4iIjM6CWZzdHAJJTJc
biIgIglmYWJzXG4iICIJam1wCTJmXG4iIjQ6CXRlc3RiCSQxLCAlJWFsXG4iICIJam56CTVmXG4i
ICIJZnhjaFxuIiI1Oglmc3RwCSUyXG4iIjI6IjogIj10IihyZXR2YWwpIDogIjAiKHgpLCJ1Iih5
KSA6ICJlYXgiLCJlY3giLCJzdCgxKSIpOwogIHJldHVybiByZXR2YWw7Cn0KCmxvbmcgZG91Ymxl
IGh5cG90bChsb25nIGRvdWJsZSB4LGxvbmcgZG91YmxlIHkpCnsKICByZWdpc3RlciBsb25nIGRv
dWJsZSByZXR2YWw7CiAgYXNtICggImZ4YW1cbiIgIglmbnN0c3dcbiIgIgltb3ZiCSUlYWgsICUl
Y2hcbiIgIglmeGNoCSUyXG4iICIJZmxkCSUwXG4iICIJZnN0cAklMFxuIiAiCWZ4YW1cbiIgIglm
bnN0c3dcbiIgIgltb3ZiCSUlYWgsICUlYWxcbiIgIglvcmIJJSVjaCwgJSVhaFxuIiAiCXNhaGZc
biIgIglqYwkxZlxuIiAiCWZ4Y2gJJTJcbiIgIglmbXVsCSUwXG4iICIJZnhjaFxuIiAiCWZtdWwJ
JTBcbiIgIglmYWRkcFxuIiAiCWZzcXJ0XG4iICIJam1wCTJmXG4iIjE6CWFuZGIJJDB4NDUsICUl
YWxcbiIgIgljbXBiCSQ1LCAlJWFsXG4iICIJamUJM2ZcbiIgIglhbmRiCSQweDQ1LCAlJWNoXG4i
ICIJY21wYgkkNSwgJSVjaFxuIiAiCWpuZQk0ZlxuIiAiCWZ4Y2hcbiIiMzoJZnN0cAklMlxuIiAi
CWZhYnNcbiIgIglqbXAJMmZcbiIiNDoJdGVzdGIJJDEsICUlYWxcbiIgIglqbnoJNWZcbiIgIglm
eGNoXG4iIjU6CWZzdHAJJTJcbiIiMjoiOiAiPXQiKHJldHZhbCkgOiAiMCIoeCksInUiKHkpIDog
ImVheCIsImVjeCIsInN0KDEpIik7CiAgcmV0dXJuIHJldHZhbDsKfQoKCgoKCgoKCgoKCgoKZmxv
YXQgbG9nZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZmxkbG4yXG4i
ICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXQpOiAiMCIoeCkpOwogIHJldHVybiByZXQ7Cn0K
CmRvdWJsZSBsb2coZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZmxk
bG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXQpOiAiMCIoeCkpOwogIHJldHVybiBy
ZXQ7Cn0KCmxvbmcgZG91YmxlIGxvZ2wobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcg
ZG91YmxlIHJldDsKICBhc20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0
KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKZmxvYXQgbG9nMTBmKGZsb2F0IHgp
CnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmbGRsZzJcbiIgIglmeGNoXG4iICIJZnls
MngiOiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGxvZzEwKGRv
dWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsKICBhc20oImZsZGxnMlxuIiAiCWZ4Y2hc
biIgIglmeWwyeCI6ICI9dCIocmV0KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRv
dWJsZSBsb2cxMGwobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsK
ICBhc20oImZsZGxnMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0KTogIjAiKHgpKTsK
ICByZXR1cm4gcmV0Owp9CgojIDM3NSAibGlibS5jIgpmbG9hdCByZW1haW5kZXJmKGZsb2F0IHgs
ZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oIlxuMToJZnByZW0xXG4iICIJ
ZnN0c3cJJSVheFxuIiAiCXNhaGZcbiIgIglqcAkxYlxuIiAiCWZzdHAJJTIiIDogIj10IihyZXQp
IDogIjAiKHgpLCAidSIoeSk6ICJzdCgxKSIsImVheCIpOwogIHJldHVybiByZXQ7Cn0KCmRvdWJs
ZSByZW1haW5kZXIoZG91YmxlIHgsZG91YmxlIHkpCnsKICByZWdpc3RlciBkb3VibGUgcmV0Owog
IGFzbSgiXG4xOglmcHJlbTFcbiIgIglmc3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpwCTFiXG4i
ICIJZnN0cAklMiIgOiAiPXQiKHJldCkgOiAiMCIoeCksICJ1Iih5KTogInN0KDEpIiwiZWF4Iik7
CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgcmVtYWluZGVybChsb25nIGRvdWJsZSB4LGxv
bmcgZG91YmxlIHkpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJcbjE6CWZw
cmVtMVxuIiAiCWZzdHN3CSUlYXhcbiIgIglzYWhmXG4iICIJanAJMWJcbiIgIglmc3RwCSUyIiA6
ICI9dCIocmV0KSA6ICIwIih4KSwgInUiKHkpOiAic3QoMSkiLCJlYXgiKTsKICByZXR1cm4gcmV0
Owp9CgoKCgoKCmZsb2F0IHNxcnRmKGZsb2F0IHgpCnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAg
YXNtKCJmc3FydCIgOiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91Ymxl
IHNxcnQoZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnNxcnQiIDog
Ij10IihyZXQpOiAiMCIoeCkpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91YmxlIHNxcnRsKGxv
bmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmc3FydCIg
OiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgoKZmxvYXQgYXRhbmYo
ZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZsZDFcbiIgIglmcGF0YW4i
OiAiPXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGF0YW4oZG91Ymxl
IHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZmxkMVxuIiAiCWZwYXRhbiI6ICI9
dCIocmV0KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJsZSBhdGFubChsb25n
IGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFzbSgiZmxkMVxuIiAi
CWZwYXRhbiI6ICI9dCIocmV0KTogIjAiKHgpKTsKICByZXR1cm4gcmV0Owp9CgojIDQ2MCAibGli
bS5jIgpmbG9hdCBjZWlsZihmbG9hdCB2YWwpCnsKICB1bnNpZ25lZCBpbnQgY3c7CiAgdW5zaWdu
ZWQgaW50IG5ld19jdzsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmc3RjdwklMCI6Ij1t
Iihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3ID0gKGN3IHwgMHg4MDApICYgMHhmYmZmOyBhc20oImZs
ZGN3CSUzXG4iICIJZnJuZGludFxuIiAiCWZsZGN3CSUyIiA6Ij10IihyZXQpIDoiMCIodmFsKSwg
Im0iKGN3KSwgIm0iKG5ld19jdykpOwogIHJldHVybiByZXQ7Cn0KCmRvdWJsZSBjZWlsKGRvdWJs
ZSB2YWwpCnsKICB1bnNpZ25lZCBpbnQgY3c7CiAgdW5zaWduZWQgaW50IG5ld19jdzsKICByZWdp
c3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoY3cpOjoibWVtb3J5Iik7IG5l
d19jdyA9IChjdyB8IDB4ODAwKSAmIDB4ZmJmZjsgYXNtKCJmbGRjdwklM1xuIiAiCWZybmRpbnRc
biIgIglmbGRjdwklMiIgOiI9dCIocmV0KSA6IjAiKHZhbCksICJtIihjdyksICJtIihuZXdfY3cp
KTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJsZSBjZWlsbChsb25nIGRvdWJsZSB2YWwpCnsK
ICB1bnNpZ25lZCBpbnQgY3c7CiAgdW5zaWduZWQgaW50IG5ld19jdzsKICByZWdpc3RlciBsb25n
IGRvdWJsZSByZXQ7CiAgYXNtKCJmc3RjdwklMCI6Ij1tIihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3
ID0gKGN3IHwgMHg4MDApICYgMHhmYmZmOyBhc20oImZsZGN3CSUzXG4iICIJZnJuZGludFxuIiAi
CWZsZGN3CSUyIiA6Ij10IihyZXQpIDoiMCIodmFsKSwgIm0iKGN3KSwgIm0iKG5ld19jdykpOwog
IHJldHVybiByZXQ7Cn0KCmZsb2F0IGNvcHlzaWduZihmbG9hdCB4LGZsb2F0IHkpCnsKICByZXR1
cm4geSA+IDAgPyB4IDogLXg7Cn0KCmRvdWJsZSBjb3B5c2lnbihkb3VibGUgeCxkb3VibGUgeSkK
ewogIHJldHVybiB5ID4gMCA/IHggOiAteDsKfQoKbG9uZyBkb3VibGUgY29weXNpZ25sKGxvbmcg
ZG91YmxlIHgsbG9uZyBkb3VibGUgeSkKewogIHJldHVybiB5ID4gMCA/IHggOiAteDsKfQoKIyA1
MjEgImxpYm0uYyIKZmxvYXQgY29zZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0Owog
IGFzbSgiZmNvc1xuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVheFxuIiAi
CWplCTJmXG4iICIJZmxkcGlcbiIgIglmYWRkCSUwXG4iICIJZnhjaAklJXN0KDEpXG4iIjE6CWZw
cmVtMVxuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVheFxuIiAiCWpuZQkx
YlxuIiAiCWZzdHAJJSVzdCgxKVxuIiAiCSIiZmNvc1xuIiIyOiI6ICI9dCIocmV0KSA6ICIwIih4
KTogInN0KDEpIiwiZWF4Iik7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGNvcyhkb3VibGUgeCkK
ewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmY29zXG4iICIJZm5zdHN3CSUlYXhcbiIg
Igl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJJTBc
biIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0
bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4iICIJIiJmY29z
XG4iIjI6IjogIj10IihyZXQpIDogIjAiKHgpOiAic3QoMSkiLCJlYXgiKTsKICByZXR1cm4gcmV0
Owp9Cgpsb25nIGRvdWJsZSBjb3NsKGxvbmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBsb25nIGRv
dWJsZSByZXQ7CiAgYXNtKCJmY29zXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAs
ICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJJTBcbiIgIglmeGNoCSUlc3Qo
MSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4
XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4iICIJIiJmY29zXG4iIjI6IjogIj10Iihy
ZXQpIDogIjAiKHgpOiAic3QoMSkiLCJlYXgiKTsKICByZXR1cm4gcmV0Owp9CgpmbG9hdCBzaW5m
KGZsb2F0IHgpCnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmc2luXG4iICIJZm5zdHN3
CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAi
CWZhZGQJJTBcbiIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhc
biIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4i
ICIJIiJmc2luXG4iIjI6IjogIj10IihyZXQpIDogIjAiKHgpOiAic3QoMSkiLCJlYXgiKTsKICBy
ZXR1cm4gcmV0Owp9Cgpkb3VibGUgc2luKGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJl
dDsKICBhc20oImZzaW5cbiIgIglmbnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhc
biIgIglqZQkyZlxuIiAiCWZsZHBpXG4iICIJZmFkZAklMFxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiIx
OglmcHJlbTFcbiIgIglmbnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhcbiIgIglq
bmUJMWJcbiIgIglmc3RwCSUlc3QoMSlcbiIgIgkiImZzaW5cbiIiMjoiOiAiPXQiKHJldCkgOiAi
MCIoeCk6ICJzdCgxKSIsImVheCIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91YmxlIHNpbmwo
bG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZzaW5c
biIgIglmbnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhcbiIgIglqZQkyZlxuIiAi
CWZsZHBpXG4iICIJZmFkZAklMFxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiIxOglmcHJlbTFcbiIgIglm
bnN0c3cJJSVheFxuIiAiCXRlc3RsCSQweDQwMCwgJSVlYXhcbiIgIglqbmUJMWJcbiIgIglmc3Rw
CSUlc3QoMSlcbiIgIgkiImZzaW5cbiIiMjoiOiAiPXQiKHJldCkgOiAiMCIoeCk6ICJzdCgxKSIs
ImVheCIpOwogIHJldHVybiByZXQ7Cn0KCiMgNTgyICJsaWJtLmMiCmZsb2F0IHRhbmYoZmxvYXQg
eCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZwdGFuXG4iICIJZm5zdHN3CSUlYXhc
biIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJamUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJ
JTBcbiIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnByZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0
ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFiXG4iICIJZnN0cAklJXN0KDEpXG4iICIJZnB0
YW5cbiIiMjoJZnN0cAklMCI6ICI9dCIocmV0KSA6ICIwIih4KTogInN0KDEpIiwiZWF4Iik7CiAg
cmV0dXJuIHJldDsKfQoKZG91YmxlIHRhbihkb3VibGUgeCkKewogIHJlZ2lzdGVyIGRvdWJsZSBy
ZXQ7CiAgYXNtKCJmcHRhblxuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVh
eFxuIiAiCWplCTJmXG4iICIJZmxkcGlcbiIgIglmYWRkCSUwXG4iICIJZnhjaAklJXN0KDEpXG4i
IjE6CWZwcmVtMVxuIiAiCWZuc3RzdwklJWF4XG4iICIJdGVzdGwJJDB4NDAwLCAlJWVheFxuIiAi
CWpuZQkxYlxuIiAiCWZzdHAJJSVzdCgxKVxuIiAiCWZwdGFuXG4iIjI6CWZzdHAJJTAiOiAiPXQi
KHJldCkgOiAiMCIoeCk6ICJzdCgxKSIsImVheCIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgZG91
YmxlIHRhbmwobG9uZyBkb3VibGUgeCkKewogIHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBh
c20oImZwdGFuXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJ
amUJMmZcbiIgIglmbGRwaVxuIiAiCWZhZGQJJTBcbiIgIglmeGNoCSUlc3QoMSlcbiIiMToJZnBy
ZW0xXG4iICIJZm5zdHN3CSUlYXhcbiIgIgl0ZXN0bAkkMHg0MDAsICUlZWF4XG4iICIJam5lCTFi
XG4iICIJZnN0cAklJXN0KDEpXG4iICIJZnB0YW5cbiIiMjoJZnN0cAklMCI6ICI9dCIocmV0KSA6
ICIwIih4KTogInN0KDEpIiwiZWF4Iik7CiAgcmV0dXJuIHJldDsKfQoKIyA2MjkgImxpYm0uYyIK
ZmxvYXQgZXhwMmYoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZ4YW1c
biIgIglmc3RzdwklJWF4XG4iICIJbW92YgkkMHg0NSwgJSVkaFxuIiAiCWFuZGIJJSVhaCwgJSVk
aFxuIiAiCWNtcGIJJDB4MDUsICUlZGhcbiIgIglqZQkxZlxuIiAiCWZsZAklMFxuIiAiCWZybmRp
bnRcbiIgIglmc3VicgklMCwgJSVzdCgxKVxuIiAiCWZ4Y2hcbiIgIglmMnhtMVxuIiAiCWZsZDFc
biIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZzdHAJJSVzdCgxKVxuIiAiCWptcAkyZlxuIiIx
Ogl0ZXN0bAkkMHgyMDAsICUlZWF4XG4iICIJanoJMmZcbiIgIglmc3RwCSUwXG4iICIJZmxkelxu
IiIyOiI6ICI9dCIocmV0KTogIjAiKHgpOiAiZWF4IiwiZWR4Iik7CiAgcmV0dXJuIHJldDsKfQoK
ZG91YmxlIGV4cDIoZG91YmxlIHgpCnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnhh
bVxuIiAiCWZzdHN3CSUlYXhcbiIgIgltb3ZiCSQweDQ1LCAlJWRoXG4iICIJYW5kYgklJWFoLCAl
JWRoXG4iICIJY21wYgkkMHgwNSwgJSVkaFxuIiAiCWplCTFmXG4iICIJZmxkCSUwXG4iICIJZnJu
ZGludFxuIiAiCWZzdWJyCSUwLCAlJXN0KDEpXG4iICIJZnhjaFxuIiAiCWYyeG0xXG4iICIJZmxk
MVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0KDEpXG4iICIJam1wCTJmXG4i
IjE6CXRlc3RsCSQweDIwMCwgJSVlYXhcbiIgIglqegkyZlxuIiAiCWZzdHAJJTBcbiIgIglmbGR6
XG4iIjI6IjogIj10IihyZXQpOiAiMCIoeCk6ICJlYXgiLCJlZHgiKTsKICByZXR1cm4gcmV0Owp9
Cgpsb25nIGRvdWJsZSBleHAybChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgcmV0OwogIGFzbSgiZnhhbVxuIiAiCWZzdHN3CSUlYXhcbiIgIgltb3ZiCSQweDQ1LCAlJWRo
XG4iICIJYW5kYgklJWFoLCAlJWRoXG4iICIJY21wYgkkMHgwNSwgJSVkaFxuIiAiCWplCTFmXG4i
ICIJZmxkCSUwXG4iICIJZnJuZGludFxuIiAiCWZzdWJyCSUwLCAlJXN0KDEpXG4iICIJZnhjaFxu
IiAiCWYyeG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0
KDEpXG4iICIJam1wCTJmXG4iIjE6CXRlc3RsCSQweDIwMCwgJSVlYXhcbiIgIglqegkyZlxuIiAi
CWZzdHAJJTBcbiIgIglmbGR6XG4iIjI6IjogIj10IihyZXQpOiAiMCIoeCk6ICJlYXgiLCJlZHgi
KTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKZmxvYXQgZmRpbWYoZmxvYXQgeCwgZmxvYXQgeSkK
ewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZzdWJwCSUyXG4iICIJZmFicyI6ICI9dCIo
cmV0KTogIjAiKHkpLCAidSIoeCkpOwogIHJldHVybiByZXQ7Cn0KCmRvdWJsZSBmZGltKGRvdWJs
ZSB4LCBkb3VibGUgeSkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgYXNtKCJmc3VicAklMlxu
IiAiCWZhYnMiOiAiPXQiKHJldCk6ICIwIih5KSwgInUiKHgpKTsKICByZXR1cm4gcmV0Owp9Cgps
b25nIGRvdWJsZSBmZGltbChsb25nIGRvdWJsZSB4LCBsb25nIGRvdWJsZSB5KQp7CiAgcmVnaXN0
ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFzbSgiZnN1YnAJJTJcbiIgIglmYWJzIjogIj10IihyZXQp
OiAiMCIoeSksICJ1Iih4KSk7CiAgcmV0dXJuIHJldDsKfQoKaW50IGZpbml0ZWYoZmxvYXQgdmFs
KQp7CiAgY29uc3QgdWludDMyX3QgKmNvbnRlbnRzOwogIHJlZ2lzdGVyIHVpbnQzMl90IG1hZ2lj
OwogIGNvbnRlbnRzID0gKGNvbnN0IHVpbnQzMl90ICopJnZhbDsKICBtYWdpYyA9IDB4RkY3RkZG
RkZMOwogIHJldHVybiAoKG1hZ2ljLWNvbnRlbnRzWzBdKV5tYWdpYykgPj4gMzE7Cn0KCmludCBm
aW5pdGUoZG91YmxlIHZhbCkKewogIGNvbnN0IHVpbnQzMl90ICpjb250ZW50czsKICByZWdpc3Rl
ciB1aW50MzJfdCBtYWdpYzsKICBjb250ZW50cyA9IChjb25zdCB1aW50MzJfdCAqKSZ2YWw7CiAg
bWFnaWMgPSAweEZGRUZGRkZGTDsKICByZXR1cm4gKChtYWdpYy1jb250ZW50c1sxXSlebWFnaWMp
ID4+IDMxOwp9CgppbnQgZmluaXRlbChsb25nIGRvdWJsZSB2YWwpCnsKICBjb25zdCB1aW50MzJf
dCAqY29udGVudHM7CiAgcmVnaXN0ZXIgdWludDMyX3QgcmV0dmFsOwogIGNvbnRlbnRzID0gKGNv
bnN0IHVpbnQzMl90ICopJnZhbDsKICByZXR2YWwgPSAweEZGRkY4MDAwTCB8IGNvbnRlbnRzWzJd
OwogIHJldHVybiAoKytyZXR2YWwpID4+IDMxOwp9CgojIDcxNiAibGlibS5jIgpmbG9hdCBmbG9v
cmYoZmxvYXQgdmFsKQp7CiAgdW5zaWduZWQgaW50IGN3OwogIHVuc2lnbmVkIGludCBuZXdfY3c7
CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoY3cpOjoibWVtb3J5
Iik7IG5ld19jdyA9IChjdyB8IDB4NDAwKSAmIDB4ZjdmZjsgYXNtKCJmbGRjdwklM1xuIiAiCWZy
bmRpbnRcbiIgIglmbGRjdwklMiIgOiI9dCIocmV0KSA6IjAiKHZhbCksICJtIihjdyksICJtIihu
ZXdfY3cpKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgZmxvb3IoZG91YmxlIHZhbCkKewogIHVu
c2lnbmVkIGludCBjdzsKICB1bnNpZ25lZCBpbnQgbmV3X2N3OwogIHJlZ2lzdGVyIGRvdWJsZSBy
ZXQ7CiAgYXNtKCJmc3RjdwklMCI6Ij1tIihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3ID0gKGN3IHwg
MHg0MDApICYgMHhmN2ZmOyBhc20oImZsZGN3CSUzXG4iICIJZnJuZGludFxuIiAiCWZsZGN3CSUy
IiA6Ij10IihyZXQpIDoiMCIodmFsKSwgIm0iKGN3KSwgIm0iKG5ld19jdykpOwogIHJldHVybiBy
ZXQ7Cn0KCmxvbmcgZG91YmxlIGZsb29ybChsb25nIGRvdWJsZSB2YWwpCnsKICB1bnNpZ25lZCBp
bnQgY3c7CiAgdW5zaWduZWQgaW50IG5ld19jdzsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7
CiAgYXNtKCJmc3RjdwklMCI6Ij1tIihjdyk6OiJtZW1vcnkiKTsgbmV3X2N3ID0gKGN3IHwgMHg0
MDApICYgMHhmN2ZmOyBhc20oImZsZGN3CSUzXG4iICIJZnJuZGludFxuIiAiCWZsZGN3CSUyIiA6
Ij10IihyZXQpIDoiMCIodmFsKSwgIm0iKGN3KSwgIm0iKG5ld19jdykpOwogIHJldHVybiByZXQ7
Cn0KCgoKZmxvYXQgZm1hZihmbG9hdCB4LGZsb2F0IHksZmxvYXQgeikKewogIHJldHVybiAoKHgq
eSkreik7Cn0KCmRvdWJsZSBmbWEoZG91YmxlIHgsZG91YmxlIHksZG91YmxlIHopCnsKICByZXR1
cm4gKCh4KnkpK3opOwp9Cgpsb25nIGRvdWJsZSBmbWFsKGxvbmcgZG91YmxlIHgsbG9uZyBkb3Vi
bGUgeSxsb25nIGRvdWJsZSB6KQp7CiAgcmV0dXJuICgoeCp5KSt6KTsKfQoKIyA3NzggImxpYm0u
YyIKZmxvYXQgZm1heGYoZmxvYXQgeCwgZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsK
ICBhc20oImZ4YW1cbiIgIglmbnN0c3dcbiIgIglhbmRiCSQweDQ1LCAlJWFoXG4iICIJZnhjaAkl
MlxuIiAiCWNtcGIJJDB4MDEsICUlYWhcbiIgIglqZQkxZlxuIiAiCWZ1Y29tCSUyXG4iICIJZm5z
dHN3XG4iICIJc2FoZlxuIiAiCWpuYwkxZlxuIiAiCWZ4Y2gJJTJcbiIiMToJZnN0cAklMiI6ICI9
dCIocmV0KTogIjAiKHkpLCAidSIoeCk6ICJlYXgiLCJzdCgxKSIpOwogIHJldHVybiByZXQ7Cn0K
CmRvdWJsZSBmbWF4KGRvdWJsZSB4LCBkb3VibGUgeSkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7
CiAgYXNtKCJmeGFtXG4iICIJZm5zdHN3XG4iICIJYW5kYgkkMHg0NSwgJSVhaFxuIiAiCWZ4Y2gJ
JTJcbiIgIgljbXBiCSQweDAxLCAlJWFoXG4iICIJamUJMWZcbiIgIglmdWNvbQklMlxuIiAiCWZu
c3Rzd1xuIiAiCXNhaGZcbiIgIglqbmMJMWZcbiIgIglmeGNoCSUyXG4iIjE6CWZzdHAJJTIiOiAi
PXQiKHJldCk6ICIwIih5KSwgInUiKHgpOiAiZWF4Iiwic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9
Cgpsb25nIGRvdWJsZSBmbWF4bChsb25nIGRvdWJsZSB4LCBsb25nIGRvdWJsZSB5KQp7CiAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFzbSgiZnhhbVxuIiAiCWZuc3Rzd1xuIiAiCWFuZGIJ
JDB4NDUsICUlYWhcbiIgIglmeGNoCSUyXG4iICIJY21wYgkkMHgwMSwgJSVhaFxuIiAiCWplCTFm
XG4iICIJZnVjb20JJTJcbiIgIglmbnN0c3dcbiIgIglzYWhmXG4iICIJam5jCTFmXG4iICIJZnhj
aAklMlxuIiIxOglmc3RwCSUyIjogIj10IihyZXQpOiAiMCIoeSksICJ1Iih4KTogImVheCIsInN0
KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKIyA4MTYgImxpYm0uYyIKZmxvYXQgZm1pbmYoZmxvYXQg
eCwgZmxvYXQgeSkKewogIHJlZ2lzdGVyIGZsb2F0IHJldDsKICBhc20oImZ4YW1cbiIgIglmbnN0
c3dcbiIgIglhbmRiCSQweDQ1LCAlJWFoXG4iICIJY21wYgkkMHgwMSwgJSVhaFxuIiAiCWplCTFm
XG4iICIJZnVjb20JJTJcbiIgIglmbnN0c3dcbiIgIglzYWhmXG4iICIJamMJMmZcbiIiMToJZnhj
aAklMlxuIiIyOglmc3RwCSUyXG4iOiAiPXQiKHJldCk6ICIwIih5KSwgInUiKHgpOiAiZWF4Iiwi
c3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgZm1pbihkb3VibGUgeCwgZG91YmxlIHkp
CnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnhhbVxuIiAiCWZuc3Rzd1xuIiAiCWFu
ZGIJJDB4NDUsICUlYWhcbiIgIgljbXBiCSQweDAxLCAlJWFoXG4iICIJamUJMWZcbiIgIglmdWNv
bQklMlxuIiAiCWZuc3Rzd1xuIiAiCXNhaGZcbiIgIglqYwkyZlxuIiIxOglmeGNoCSUyXG4iIjI6
CWZzdHAJJTJcbiI6ICI9dCIocmV0KTogIjAiKHkpLCAidSIoeCk6ICJlYXgiLCJzdCgxKSIpOwog
IHJldHVybiByZXQ7Cn0KCmxvbmcgZG91YmxlIGZtaW5sKGxvbmcgZG91YmxlIHgsIGxvbmcgZG91
YmxlIHkpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmeGFtXG4iICIJZm5z
dHN3XG4iICIJYW5kYgkkMHg0NSwgJSVhaFxuIiAiCWNtcGIJJDB4MDEsICUlYWhcbiIgIglqZQkx
ZlxuIiAiCWZ1Y29tCSUyXG4iICIJZm5zdHN3XG4iICIJc2FoZlxuIiAiCWpjCTJmXG4iIjE6CWZ4
Y2gJJTJcbiIiMjoJZnN0cAklMlxuIjogIj10IihyZXQpOiAiMCIoeSksICJ1Iih4KTogImVheCIs
InN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgojIDg2NiAibGlibS5jIgpmbG9hdCBmcmV4
cGYoZmxvYXQgeCwgaW50ICplcHRyKQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0dmFsOwogIHsgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgbWludXNfb25lOyBhc20oImZsZDFcbiIgIglmY2hzIjogIj10Iiht
aW51c19vbmUpKTsgKmVwdHIgPSAwOyBhc20oImZ0c3RcbiIgIglmc3RzdwklJWF4XG4iICIJYW5k
YgkkMHg0MSwgJSVhaFxuIiAiCXhvcmIJJDB4NDAsICUlYWhcbiIgIglqegkxZlxuIiAiCWZ4dHJh
Y3RcbiIgIglmeGNoCSUyXG4iICIJZmlzdHBsCSglMylcbiIgIglmc2NhbGVcbiIgIglpbmNsCSgl
MylcbiIiMToJZnN0cAklMiI6ICI9dCIocmV0dmFsKTogIjAiKHgpLCAidSIobWludXNfb25lKSwg
InIiKGVwdHIpOiAiZWF4IiwibWVtb3J5Iiwic3QoMSkiKTt9OwogIHJldHVybiByZXR2YWw7Cn0K
CmRvdWJsZSBmcmV4cChkb3VibGUgeCwgaW50ICplcHRyKQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJl
dHZhbDsKICB7IHJlZ2lzdGVyIGxvbmcgZG91YmxlIG1pbnVzX29uZTsgYXNtKCJmbGQxXG4iICIJ
ZmNocyI6ICI9dCIobWludXNfb25lKSk7ICplcHRyID0gMDsgYXNtKCJmdHN0XG4iICIJZnN0c3cJ
JSVheFxuIiAiCWFuZGIJJDB4NDEsICUlYWhcbiIgIgl4b3JiCSQweDQwLCAlJWFoXG4iICIJanoJ
MWZcbiIgIglmeHRyYWN0XG4iICIJZnhjaAklMlxuIiAiCWZpc3RwbAkoJTMpXG4iICIJZnNjYWxl
XG4iICIJaW5jbAkoJTMpXG4iIjE6CWZzdHAJJTIiOiAiPXQiKHJldHZhbCk6ICIwIih4KSwgInUi
KG1pbnVzX29uZSksICJyIihlcHRyKTogImVheCIsIm1lbW9yeSIsInN0KDEpIik7fTsKICByZXR1
cm4gcmV0dmFsOwp9Cgpsb25nIGRvdWJsZSBmcmV4cGwobG9uZyBkb3VibGUgeCwgaW50ICplcHRy
KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0dmFsOwogIHsgcmVnaXN0ZXIgbG9uZyBkb3Vi
bGUgbWludXNfb25lOyBhc20oImZsZDFcbiIgIglmY2hzIjogIj10IihtaW51c19vbmUpKTsgKmVw
dHIgPSAwOyBhc20oImZ0c3RcbiIgIglmc3RzdwklJWF4XG4iICIJYW5kYgkkMHg0MSwgJSVhaFxu
IiAiCXhvcmIJJDB4NDAsICUlYWhcbiIgIglqegkxZlxuIiAiCWZ4dHJhY3RcbiIgIglmeGNoCSUy
XG4iICIJZmlzdHBsCSglMylcbiIgIglmc2NhbGVcbiIgIglpbmNsCSglMylcbiIiMToJZnN0cAkl
MiI6ICI9dCIocmV0dmFsKTogIjAiKHgpLCAidSIobWludXNfb25lKSwgInIiKGVwdHIpOiAiZWF4
IiwibWVtb3J5Iiwic3QoMSkiKTt9OwogIHJldHVybiByZXR2YWw7Cn0KCiMgODk1ICJsaWJtLmMi
CmludCBpbG9nYmYoZmxvYXQgeCkKewogIGludCByZXQ7CiAgYXNtKCJmeHRyYWN0XG4iICIJZnN0
cAklMVxuIiAiCWZpc3RwbAklMFxuIiAiCWZ3YWl0IiA6ICI9bSIocmV0KTogInQiKHgpKTsKICBy
ZXR1cm4gcmV0Owp9Cgpkb3VibGUgaWxvZ2IoZG91YmxlIHgpCnsKICBpbnQgcmV0OwogIGFzbSgi
Znh0cmFjdFxuIiAiCWZzdHAJJTFcbiIgIglmaXN0cGwJJTBcbiIgIglmd2FpdCIgOiAiPW0iKHJl
dCk6ICJ0Iih4KSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgaWxvZ2JsKGxvbmcgZG91
YmxlIHgpCnsKICBpbnQgcmV0OwogIGFzbSgiZnh0cmFjdFxuIiAiCWZzdHAJJTFcbiIgIglmaXN0
cGwJJTBcbiIgIglmd2FpdCIgOiAiPW0iKHJldCk6ICJ0Iih4KSk7CiAgcmV0dXJuIHJldDsKfQoK
CgoKCgoKCmxvbmcgbG9uZyBpbnQgbGxyaW50ZihmbG9hdCB4KQp7CiAgbG9uZyBsb25nIGludCBy
ZXQ7CiAgYXNtKCJmaXN0cGxsCSUwXG4iICIJZndhaXQiIDogIj1tIihyZXQpOiAidCIoeCkgOiAi
c3QiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGxvbmcgaW50IGxscmludChkb3VibGUgeCkKewog
IGxvbmcgbG9uZyBpbnQgcmV0OwogIGFzbSgiZmlzdHBsbAklMFxuIiAiCWZ3YWl0IiA6ICI9bSIo
cmV0KTogInQiKHgpIDogInN0Iik7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBsb25nIGludCBsbHJp
bnRsKGxvbmcgZG91YmxlIHgpCnsKICBsb25nIGxvbmcgaW50IHJldDsKICBhc20oImZpc3RwbGwJ
JTBcbiIgIglmd2FpdCIgOiAiPW0iKHJldCk6ICJ0Iih4KSA6ICJzdCIpOwogIHJldHVybiByZXQ7
Cn0KIyA5NTQgImxpYm0uYyIKIyA5NjMgImxpYm0uYyIKZmxvYXQgbG9nMXBmKGZsb2F0IHgpCnsK
ICByZWdpc3RlciBmbG9hdCByZXR2YWw7CiAgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZmxk
MVxuIiAiCWZhZGRwICUlc3QoMSlcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsK
ICByZXR1cm4gcmV0dmFsOwp9Cgpkb3VibGUgbG9nMXAoZG91YmxlIHgpCnsKICByZWdpc3RlciBk
b3VibGUgcmV0dmFsOwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZsZDFcbiIgIglmYWRk
cCAlJXN0KDEpXG4iICIJZnlsMngiOiAiPXQiKHJldHZhbCk6ICIwIih4KSk7CiAgcmV0dXJuIHJl
dHZhbDsKfQoKbG9uZyBkb3VibGUgbG9nMXBsKGxvbmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBs
b25nIGRvdWJsZSByZXR2YWw7CiAgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZmxkMVxuIiAi
CWZhZGRwICUlc3QoMSlcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICByZXR1
cm4gcmV0dmFsOwp9CgoKCgoKCgoKZmxvYXQgbG9nMmYoZmxvYXQgeCkKewogIHJlZ2lzdGVyIGZs
b2F0IHJldHZhbDsKICBhc20oImZsZDFcbiIgIglmeGNoXG4iICIJZnlsMngiOiAiPXQiKHJldHZh
bCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldHZhbDsKfQoKZG91YmxlIGxvZzIoZG91YmxlIHgpCnsK
ICByZWdpc3RlciBkb3VibGUgcmV0dmFsOwogIGFzbSgiZmxkMVxuIiAiCWZ4Y2hcbiIgIglmeWwy
eCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICByZXR1cm4gcmV0dmFsOwp9Cgpsb25nIGRvdWJs
ZSBsb2cybChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0dmFsOwog
IGFzbSgiZmxkMVxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsK
ICByZXR1cm4gcmV0dmFsOwp9CgoKCgoKCgoKZmxvYXQgbG9nYmYoZmxvYXQgeCkKewogIHJlZ2lz
dGVyIGZsb2F0IHJldDsKICBhc20oImZ4dHJhY3RcbiIgIglmc3RwCSUwIjogIj10IihyZXQpIDog
IjAiKHgpIDogInN0KDEpIik7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGxvZ2IoZG91YmxlIHgp
CnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnh0cmFjdFxuIiAiCWZzdHAJJTAiOiAi
PXQiKHJldCkgOiAiMCIoeCkgOiAic3QoMSkiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGRvdWJs
ZSBsb2dibChsb25nIGRvdWJsZSB4KQp7CiAgcmVnaXN0ZXIgbG9uZyBkb3VibGUgcmV0OwogIGFz
bSgiZnh0cmFjdFxuIiAiCWZzdHAJJTAiOiAiPXQiKHJldCkgOiAiMCIoeCkgOiAic3QoMSkiKTsK
ICByZXR1cm4gcmV0Owp9CgoKCgoKCgoKbG9uZyBpbnQgbHJpbnRmKGZsb2F0IHgpCnsKICBsb25n
IGludCByZXQ7CiAgYXNtKCJmaXN0cGwJJTBcbiIgIglmd2FpdCIgOiAiPW0iKHJldCk6ICJ0Iih4
KSA6ICJzdCIpOwogIHJldHVybiByZXQ7Cn0KCmxvbmcgaW50IGxyaW50KGRvdWJsZSB4KQp7CiAg
bG9uZyBpbnQgcmV0OwogIGFzbSgiZmlzdHBsCSUwXG4iICIJZndhaXQiIDogIj1tIihyZXQpOiAi
dCIoeCkgOiAic3QiKTsKICByZXR1cm4gcmV0Owp9Cgpsb25nIGludCBscmludGwobG9uZyBkb3Vi
bGUgeCkKewogIGxvbmcgaW50IHJldDsKICBhc20oImZpc3RwbAklMFxuIiAiCWZ3YWl0IiA6ICI9
bSIocmV0KTogInQiKHgpIDogInN0Iik7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgpmbG9hdCByaW50
ZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZnJuZGludCI6ICI9dCIo
cmV0KSA6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIHJpbnQoZG91YmxlIHgpCnsK
ICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZnJuZGludCI6ICI9dCIocmV0KSA6ICIwIih4
KSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgcmludGwobG9uZyBkb3VibGUgeCkKewog
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZybmRpbnQiOiAiPXQiKHJldCkgOiAi
MCIoeCkpOwogIHJldHVybiByZXQ7Cn0KCgoKCgoKCgpmbG9hdCBzY2FsYm5mKGZsb2F0IHgsaW50
IG4pCnsKICByZWdpc3RlciBmbG9hdCByZXQ7CiAgYXNtKCJmc2NhbGUiIDogIj10IihyZXQpIDog
IjAiKHgpLCAidSIoKGZsb2F0KW4pOiAic3QiKTsKICByZXR1cm4gcmV0Owp9Cgpkb3VibGUgc2Nh
bGJuKGRvdWJsZSB4LGludCBuKQp7CiAgcmVnaXN0ZXIgZG91YmxlIHJldDsKICBhc20oImZzY2Fs
ZSIgOiAiPXQiKHJldCkgOiAiMCIoeCksICJ1IigoZG91YmxlKW4pOiAic3QiKTsKICByZXR1cm4g
cmV0Owp9Cgpsb25nIGRvdWJsZSBzY2FsYm5sKGxvbmcgZG91YmxlIHgsaW50IG4pCnsKICByZWdp
c3RlciBsb25nIGRvdWJsZSByZXQ7CiAgYXNtKCJmc2NhbGUiIDogIj10IihyZXQpIDogIjAiKHgp
LCAidSIoKGxvbmcgZG91YmxlKW4pOiAic3QiKTsKICByZXR1cm4gcmV0Owp9CgoKCgoKCmZsb2F0
IHNpZ25pZmljYW5kZihmbG9hdCB4KQp7CiAgZmxvYXQgcmV0OwogIGFzbSgiZnh0cmFjdFxuIiAi
CWZzdHAJJSVzdCgxKSI6ICI9dCIocmV0KSA6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91
YmxlIHNpZ25pZmljYW5kKGRvdWJsZSB4KQp7CiAgZG91YmxlIHJldDsKICBhc20oImZ4dHJhY3Rc
biIgIglmc3RwCSUlc3QoMSkiOiAiPXQiKHJldCkgOiAiMCIoeCkpOwogIHJldHVybiByZXQ7Cn0K
CmxvbmcgZG91YmxlIHNpZ25pZmljYW5kbChsb25nIGRvdWJsZSB4KQp7CiAgbG9uZyBkb3VibGUg
cmV0OwogIGFzbSgiZnh0cmFjdFxuIiAiCWZzdHAJJSVzdCgxKSI6ICI9dCIocmV0KSA6ICIwIih4
KSk7CiAgcmV0dXJuIHJldDsKfQoKIyAxMTU2ICJsaWJtLmMiCnZvaWQgc2luY29zZihmbG9hdCB4
LGZsb2F0ICpzaW5wdHIsZmxvYXQgKmNvc3B0cikKewogIHsgcmVnaXN0ZXIgbG9uZyBkb3VibGUg
c3YsY3Y7IGFzbSgiZnNpbmNvcyI6Ij10IihjdiksIj11Iihzdik6IjAiKHgpOiJzdCIsInN0KDEp
Iik7ICpjb3NwdHIgPSBjdjsgKnNpbnB0ciA9IHN2O307Cn0KCnZvaWQgc2luY29zKGRvdWJsZSB4
LGRvdWJsZSAqc2lucHRyLGRvdWJsZSAqY29zcHRyKQp7CiAgeyByZWdpc3RlciBsb25nIGRvdWJs
ZSBzdixjdjsgYXNtKCJmc2luY29zIjoiPXQiKGN2KSwiPXUiKHN2KToiMCIoeCk6InN0Iiwic3Qo
MSkiKTsgKmNvc3B0ciA9IGN2OyAqc2lucHRyID0gc3Y7fTsKfQoKdm9pZCBzaW5jb3NsKGxvbmcg
ZG91YmxlIHgsbG9uZyBkb3VibGUgKnNpbnB0cixsb25nIGRvdWJsZSAqY29zcHRyKQp7CiAgeyBy
ZWdpc3RlciBsb25nIGRvdWJsZSBzdixjdjsgYXNtKCJmc2luY29zIjoiPXQiKGN2KSwiPXUiKHN2
KToiMCIoeCk6InN0Iiwic3QoMSkiKTsgKmNvc3B0ciA9IGN2OyAqc2lucHRyID0gc3Y7fTsKfQoK
IyAxMTgyICJsaWJtLmMiCmZsb2F0IHRydW5jZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQg
cmV0OwogIGludCBpMSxpMjsKICBhc20oImZzdGN3CSUwIjoiPW0iKGkxKTo6Im1lbW9yeSIpOyBp
MiA9IGkxIHwgMHhjMDA7IGFzbSgiZmxkY3cJJTNcbiIgIglmcm5kaW50XG4iICIJZmxkY3cJJTIi
OiAiPXQiKHJldCkgOiAiMCIoeCksICJtIihpMSksICJtIihpMikpOwogIHJldHVybiByZXQ7Cn0K
CmRvdWJsZSB0cnVuYyhkb3VibGUgeCkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXQ7CiAgaW50IGkx
LGkyOwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoaTEpOjoibWVtb3J5Iik7IGkyID0gaTEgfCAweGMw
MDsgYXNtKCJmbGRjdwklM1xuIiAiCWZybmRpbnRcbiIgIglmbGRjdwklMiI6ICI9dCIocmV0KSA6
ICIwIih4KSwgIm0iKGkxKSwgIm0iKGkyKSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUg
dHJ1bmNsKGxvbmcgZG91YmxlIHgpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXQ7CiAgaW50
IGkxLGkyOwogIGFzbSgiZnN0Y3cJJTAiOiI9bSIoaTEpOjoibWVtb3J5Iik7IGkyID0gaTEgfCAw
eGMwMDsgYXNtKCJmbGRjdwklM1xuIiAiCWZybmRpbnRcbiIgIglmbGRjdwklMiI6ICI9dCIocmV0
KSA6ICIwIih4KSwgIm0iKGkxKSwgIm0iKGkyKSk7CiAgcmV0dXJuIHJldDsKfQoKCgoKCgpmbG9h
dCBmYWJzZihmbG9hdCB4KQp7CiAgcmVnaXN0ZXIgZmxvYXQgcmV0OwogIGFzbSgiZmFicyIgOiAi
PXQiKHJldCk6ICIwIih4KSk7CiAgcmV0dXJuIHJldDsKfQoKZG91YmxlIGZhYnMoZG91YmxlIHgp
CnsKICByZWdpc3RlciBkb3VibGUgcmV0OwogIGFzbSgiZmFicyIgOiAiPXQiKHJldCk6ICIwIih4
KSk7CiAgcmV0dXJuIHJldDsKfQoKbG9uZyBkb3VibGUgZmFic2wobG9uZyBkb3VibGUgeCkKewog
IHJlZ2lzdGVyIGxvbmcgZG91YmxlIHJldDsKICBhc20oImZhYnMiIDogIj10IihyZXQpOiAiMCIo
eCkpOwogIHJldHVybiByZXQ7Cn0KCnN0YXRpYyB2b2lkIGZyYWMoIHZvaWQgKQp7CiAgc2hvcnQg
Y3cxLGN3MjsKICAgYXNtKCJmbnN0Y3cJJTBcbiIKICAgICAgIglmd2FpdCIKICAgICAgOiI9bSIo
Y3cxKSk7CiAgY3cyID0gKGN3MSAmIDB4ZjNmZikgfCAweDA0MDA7CiAgIGFzbSgiZmxkY3cJJTFc
biIKICAgICAgIglmbGQJJSVzdFxuIgogICAgICAiCWZybmRpbnRcbiIKICAgICAgIglmbGRjdwkl
MFxuIgogICAgICAiCWZ4Y2gJJSVzdCgxKVxuIgogICAgICAiCWZzdWIJJSVzdCgxKSwgJSVzdCIK
ICAgICAgOjoibSIoY3cxKSwibSIoY3cyKToibWVtb3J5Iik7Cn0KCnN0YXRpYyB2b2lkIExwb3cy
KCB2b2lkICkKewogIGRvdWJsZSBvbmU7CiAgIGFzbSgiZmxkMSI6Ij10IihvbmUpOjoic3QoMSki
KTsKICAgYXNtKCJjYWxsCWZyYWNcbiIKICAgICAgIglmMnhtMVxuIgogICAgICAiCWZhZGRsCSUw
XG4iCiAgICAgICIJZnNjYWxlXG4iCiAgICAgICIJZnN0cAklJXN0KDEpXG4iCiAgICAgIDo6ICJt
IihvbmUpOiAibWVtb3J5Iik7Cn0KCiMgMTMyNCAibGlibS5jIgpmbG9hdCBwb3dmKGZsb2F0IHgs
IGZsb2F0IHkpCnsKICByZWdpc3RlciBmbG9hdCByZXR2YWw7CiAgaWYoeCA9PSAoZmxvYXQpMTAu
KSB7IGRvdWJsZSBvbmU7IGFzbSgiZmxkMSI6Ij10IihvbmUpOjoic3QoMSkiKTsgYXNtKCJmbGRs
MnRcbiIgIglmbXVscFxuIiAiCWNhbGwJZnJhY1xuIiAiCWYyeG0xXG4iICIJZmFkZGwJJTJcbiIg
Iglmc2NhbGVcbiIgIglmc3RwCSUlc3QoMSlcbiIgOiI9dCIocmV0dmFsKSA6IjAiKHkpLCAibSIo
b25lKSk7fQogIGVsc2UgeyBpbnQgeWludDsgYXNtKCJmdHN0XG4iICIJZm5zdHN3CSUlYXhcbiIg
IglzYWhmXG4iICIJamJlCTFmXG4iICIJZnlsMnhcbiIgIgljYWxsCUxwb3cyXG4iICIJam1wCTZm
XG4iIjE6CWpiCTRmXG4iICIJZnN0cAklMFxuIiAiCWZ0c3RcbiIgIglmbnN0c3cJJSVheFxuIiAi
CXNhaGZcbiIgIglqYQkzZlxuIiAiCWpiCTJmXG4iICIJZnN0cAklMFxuIiAiCWZsZDFcbiIgIglm
Y2hzXG4iIjI6CWZzcXJ0XG4iICIJam1wICAgICA2ZlxuIiIzOglmc3RwCSUwXG4iICIJZmxkelxu
IiAiCWptcAk2ZlxuIiI0OglmYWJzXG4iICIJZnhjaAklMlxuIiAiCWNhbGwJZnJhY1xuIiAiCWZ0
c3RcbiIgIglmbnN0c3cJJSVheFxuIiAiCWZzdHAJJTBcbiIgIglzYWhmXG4iICIJamUJNWZcbiIg
Iglmc3RwCSUwXG4iICIJZmNoc1xuIiAiCWptcAkyYlxuIiI1OglmaXN0bAklM1xuIiAiCWZ4Y2gJ
JTJcbiIgIglmeWwyeFxuIiAiCWNhbGwJTHBvdzJcbiIgIglhbmRsCSQxLCAlM1xuIiAiCWp6CTZm
XG4iICIJZmNoc1xuIiI2OiIgOiI9dCIocmV0dmFsKSA6IjAiKHgpLCJ1Iih5KSwibSIoeWludCkg
OiJlYXgiLCJtZW1vcnkiLCJzdCgxKSIpO30KICByZXR1cm4gcmV0dmFsOwp9Cgpkb3VibGUgcG93
KGRvdWJsZSB4LCBkb3VibGUgeSkKewogIHJlZ2lzdGVyIGRvdWJsZSByZXR2YWw7CiAgaWYoeCA9
PSAoZG91YmxlKTEwLikgeyBkb3VibGUgb25lOyBhc20oImZsZDEiOiI9dCIob25lKTo6InN0KDEp
Iik7IGFzbSgiZmxkbDJ0XG4iICIJZm11bHBcbiIgIgljYWxsCWZyYWNcbiIgIglmMnhtMVxuIiAi
CWZhZGRsCSUyXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0KDEpXG4iIDoiPXQiKHJldHZhbCkg
OiIwIih5KSwgIm0iKG9uZSkpO30KICBlbHNlIHsgaW50IHlpbnQ7IGFzbSgiZnRzdFxuIiAiCWZu
c3RzdwklJWF4XG4iICIJc2FoZlxuIiAiCWpiZQkxZlxuIiAiCWZ5bDJ4XG4iICIJY2FsbAlMcG93
MlxuIiAiCWptcAk2ZlxuIiIxOglqYgk0ZlxuIiAiCWZzdHAJJTBcbiIgIglmdHN0XG4iICIJZm5z
dHN3CSUlYXhcbiIgIglzYWhmXG4iICIJamEJM2ZcbiIgIglqYgkyZlxuIiAiCWZzdHAJJTBcbiIg
IglmbGQxXG4iICIJZmNoc1xuIiIyOglmc3FydFxuIiAiCWptcCAgICAgNmZcbiIiMzoJZnN0cAkl
MFxuIiAiCWZsZHpcbiIgIglqbXAJNmZcbiIiNDoJZmFic1xuIiAiCWZ4Y2gJJTJcbiIgIgljYWxs
CWZyYWNcbiIgIglmdHN0XG4iICIJZm5zdHN3CSUlYXhcbiIgIglmc3RwCSUwXG4iICIJc2FoZlxu
IiAiCWplCTVmXG4iICIJZnN0cAklMFxuIiAiCWZjaHNcbiIgIglqbXAJMmJcbiIiNToJZmlzdGwJ
JTNcbiIgIglmeGNoCSUyXG4iICIJZnlsMnhcbiIgIgljYWxsCUxwb3cyXG4iICIJYW5kbAkkMSwg
JTNcbiIgIglqegk2ZlxuIiAiCWZjaHNcbiIiNjoiIDoiPXQiKHJldHZhbCkgOiIwIih4KSwidSIo
eSksIm0iKHlpbnQpIDoiZWF4IiwibWVtb3J5Iiwic3QoMSkiKTt9CiAgcmV0dXJuIHJldHZhbDsK
fQoKbG9uZyBkb3VibGUgcG93bChsb25nIGRvdWJsZSB4LCBsb25nIGRvdWJsZSB5KQp7CiAgcmVn
aXN0ZXIgbG9uZyBkb3VibGUgcmV0dmFsOwogIGlmKHggPT0gKGxvbmcgZG91YmxlKTEwLikgeyBk
b3VibGUgb25lOyBhc20oImZsZDEiOiI9dCIob25lKTo6InN0KDEpIik7IGFzbSgiZmxkbDJ0XG4i
ICIJZm11bHBcbiIgIgljYWxsCWZyYWNcbiIgIglmMnhtMVxuIiAiCWZhZGRsCSUyXG4iICIJZnNj
YWxlXG4iICIJZnN0cAklJXN0KDEpXG4iIDoiPXQiKHJldHZhbCkgOiIwIih5KSwgIm0iKG9uZSkp
O30KICBlbHNlIHsgaW50IHlpbnQ7IGFzbSgiZnRzdFxuIiAiCWZuc3RzdwklJWF4XG4iICIJc2Fo
ZlxuIiAiCWpiZQkxZlxuIiAiCWZ5bDJ4XG4iICIJY2FsbAlMcG93MlxuIiAiCWptcAk2ZlxuIiIx
OglqYgk0ZlxuIiAiCWZzdHAJJTBcbiIgIglmdHN0XG4iICIJZm5zdHN3CSUlYXhcbiIgIglzYWhm
XG4iICIJamEJM2ZcbiIgIglqYgkyZlxuIiAiCWZzdHAJJTBcbiIgIglmbGQxXG4iICIJZmNoc1xu
IiIyOglmc3FydFxuIiAiCWptcCAgICAgNmZcbiIiMzoJZnN0cAklMFxuIiAiCWZsZHpcbiIgIglq
bXAJNmZcbiIiNDoJZmFic1xuIiAiCWZ4Y2gJJTJcbiIgIgljYWxsCWZyYWNcbiIgIglmdHN0XG4i
ICIJZm5zdHN3CSUlYXhcbiIgIglmc3RwCSUwXG4iICIJc2FoZlxuIiAiCWplCTVmXG4iICIJZnN0
cAklMFxuIiAiCWZjaHNcbiIgIglqbXAJMmJcbiIiNToJZmlzdGwJJTNcbiIgIglmeGNoCSUyXG4i
ICIJZnlsMnhcbiIgIgljYWxsCUxwb3cyXG4iICIJYW5kbAkkMSwgJTNcbiIgIglqegk2ZlxuIiAi
CWZjaHNcbiIiNjoiIDoiPXQiKHJldHZhbCkgOiIwIih4KSwidSIoeSksIm0iKHlpbnQpIDoiZWF4
IiwibWVtb3J5Iiwic3QoMSkiKTt9CiAgcmV0dXJuIHJldHZhbDsKfQoKZmxvYXQgcG93MTBmKGZs
b2F0IHkpCnsKICByZWdpc3RlciBmbG9hdCByZXR2YWw7CiAgeyBkb3VibGUgb25lOyBhc20oImZs
ZDEiOiI9dCIob25lKTo6InN0KDEpIik7IGFzbSgiZmxkbDJ0XG4iICIJZm11bHBcbiIgIgljYWxs
CWZyYWNcbiIgIglmMnhtMVxuIiAiCWZhZGRsCSUyXG4iICIJZnNjYWxlXG4iICIJZnN0cAklJXN0
KDEpXG4iIDoiPXQiKHJldHZhbCkgOiIwIih5KSwgIm0iKG9uZSkpO30KICByZXR1cm4gcmV0dmFs
Owp9Cgpkb3VibGUgcG93MTAoZG91YmxlIHkpCnsKICByZWdpc3RlciBkb3VibGUgcmV0dmFsOwog
IHsgZG91YmxlIG9uZTsgYXNtKCJmbGQxIjoiPXQiKG9uZSk6OiJzdCgxKSIpOyBhc20oImZsZGwy
dFxuIiAiCWZtdWxwXG4iICIJY2FsbAlmcmFjXG4iICIJZjJ4bTFcbiIgIglmYWRkbAklMlxuIiAi
CWZzY2FsZVxuIiAiCWZzdHAJJSVzdCgxKVxuIiA6Ij10IihyZXR2YWwpIDoiMCIoeSksICJtIihv
bmUpKTt9CiAgcmV0dXJuIHJldHZhbDsKfQoKbG9uZyBkb3VibGUgcG93MTBsKGxvbmcgZG91Ymxl
IHkpCnsKICByZWdpc3RlciBsb25nIGRvdWJsZSByZXR2YWw7CiAgeyBkb3VibGUgb25lOyBhc20o
ImZsZDEiOiI9dCIob25lKTo6InN0KDEpIik7IGFzbSgiZmxkbDJ0XG4iICIJZm11bHBcbiIgIglj
YWxsCWZyYWNcbiIgIglmMnhtMVxuIiAiCWZhZGRsCSUyXG4iICIJZnNjYWxlXG4iICIJZnN0cAkl
JXN0KDEpXG4iIDoiPXQiKHJldHZhbCkgOiIwIih5KSwgIm0iKG9uZSkpO30KICByZXR1cm4gcmV0
dmFsOwp9CgoKCgoKZmxvYXQgY2JydGYgKGZsb2F0IHgpCnsKICBpZiAoeCA+PSAwKQogICAgcmV0
dXJuIHBvd2YgKHgsIDEuMCAvIDMuMCk7CiAgZWxzZQogICAgcmV0dXJuIC1wb3dmICgteCwgMS4w
IC8gMy4wKTsKfQoKZG91YmxlIGNicnQgKGRvdWJsZSB4KQp7CiAgaWYgKHggPj0gMCkKICAgIHJl
dHVybiBwb3cgKHgsIDEuMCAvIDMuMCk7CiAgZWxzZQogICAgcmV0dXJuIC1wb3cgKC14LCAxLjAg
LyAzLjApOwp9Cgpsb25nIGRvdWJsZSBjYnJ0bCAobG9uZyBkb3VibGUgeCkKewogIGlmICh4ID49
IDApCiAgICByZXR1cm4gcG93bCAoeCwgMS4wIC8gMy4wKTsKICBlbHNlCiAgICByZXR1cm4gLXBv
d2wgKC14LCAxLjAgLyAzLjApOwp9CgpmbG9hdCBhY29zaGYoZmxvYXQgeCkKewoKICBmbG9hdCBy
ZXR2YWw7CiAgYXNtKCJmc3FydCIgOiAiPXQiKHJldHZhbCk6ICIwIih4KngtMSkpOwogIGFzbSgi
ZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAiMCIoeCArIHJldHZh
bCkpOwogIHJldHVybiByZXR2YWw7Cn0KCmRvdWJsZSBhY29zaChkb3VibGUgeCkKewoKICBkb3Vi
bGUgcmV0dmFsOwogIGFzbSgiZnNxcnQiIDogIj10IihyZXR2YWwpOiAiMCIoeCp4LTEpKTsKICBh
c20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHggKyBy
ZXR2YWwpKTsKICByZXR1cm4gcmV0dmFsOwp9Cgpsb25nIGRvdWJsZSBhY29zaGwobG9uZyBkb3Vi
bGUgeCkKewoKICBsb25nIGRvdWJsZSByZXR2YWw7CiAgYXNtKCJmc3FydCIgOiAiPXQiKHJldHZh
bCk6ICIwIih4KngtMSkpOwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10
IihyZXR2YWwpOiAiMCIoeCArIHJldHZhbCkpOwogIHJldHVybiByZXR2YWw7Cn0KCmZsb2F0IGFz
aW5oZihmbG9hdCB4KQp7CgogIGZsb2F0IHJldHZhbDsKICBhc20oImZzcXJ0IiA6ICI9dCIocmV0
dmFsKTogIjAiKHgqeCsxKSk7CiAgaWYoeD4wKSBhc20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglm
eWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHggKyByZXR2YWwpKTsKICBlbHNlCiAgewogICAgYXNt
KCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZnlsMngiOiAiPXQiKHJldHZhbCk6ICIwIihyZXR2YWwt
eCkpOwogICAgcmV0dmFsID0gLXJldHZhbDsKICB9CiAgcmV0dXJuIHJldHZhbDsKfQoKZG91Ymxl
IGFzaW5oKGRvdWJsZSB4KQp7CgogIGRvdWJsZSByZXR2YWw7CiAgYXNtKCJmc3FydCIgOiAiPXQi
KHJldHZhbCk6ICIwIih4KngrMSkpOwogIGlmKHg+MCkgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4i
ICIJZnlsMngiOiAiPXQiKHJldHZhbCk6ICIwIih4ICsgcmV0dmFsKSk7CiAgZWxzZQogIHsKICAg
IGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAiMCIocmV0
dmFsLXgpKTsKICAgIHJldHZhbCA9IC1yZXR2YWw7CiAgfQogIHJldHVybiByZXR2YWw7Cn0KCmxv
bmcgZG91YmxlIGFzaW5obChsb25nIGRvdWJsZSB4KQp7CgogIGxvbmcgZG91YmxlIHJldHZhbDsK
ICBhc20oImZzcXJ0IiA6ICI9dCIocmV0dmFsKTogIjAiKHgqeCsxKSk7CiAgaWYoeD4wKSBhc20o
ImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwyeCI6ICI9dCIocmV0dmFsKTogIjAiKHggKyByZXR2
YWwpKTsKICBlbHNlCiAgewogICAgYXNtKCJmbGRsbjJcbiIgIglmeGNoXG4iICIJZnlsMngiOiAi
PXQiKHJldHZhbCk6ICIwIihyZXR2YWwteCkpOwogICAgcmV0dmFsID0gLXJldHZhbDsKICB9CiAg
cmV0dXJuIHJldHZhbDsKfQoKZmxvYXQgYXRhbmhmKGZsb2F0IHgpCnsKCiAgZmxvYXQgcmV0dmFs
OwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAiMCIo
KDEreCkvKDEteCkpKTsKICByZXR1cm4gcmV0dmFsLzIuOwp9Cgpkb3VibGUgYXRhbmgoZG91Ymxl
IHgpCnsKCiAgZG91YmxlIHJldHZhbDsKICBhc20oImZsZGxuMlxuIiAiCWZ4Y2hcbiIgIglmeWwy
eCI6ICI9dCIocmV0dmFsKTogIjAiKCgxK3gpLygxLXgpKSk7CiAgcmV0dXJuIHJldHZhbC8yLjsK
fQoKbG9uZyBkb3VibGUgYXRhbmhsKGxvbmcgZG91YmxlIHgpCnsKCiAgbG9uZyBkb3VibGUgcmV0
dmFsOwogIGFzbSgiZmxkbG4yXG4iICIJZnhjaFxuIiAiCWZ5bDJ4IjogIj10IihyZXR2YWwpOiAi
MCIoKDEreCkvKDEteCkpKTsKICByZXR1cm4gcmV0dmFsLzIuOwp9CgpmbG9hdCBjb3NoZihmbG9h
dCB4KQp7CiAgZmxvYXQgcmV0dmFsOwogIGFzbSgiZmFicyIgOiAiPXQiKHJldHZhbCk6ICIwIih4
KSk7CiAgYXNtKCJmbGRsMmVcbiIgIglmeGNoCSUlc3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAkl
JXN0KDEpXG4iICIJZnJuZGludFxuIiAiCWZzdAklJXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4
bTFcbiIgIglmbGQxXG4iICIJZmFkZHBcbiIgIglmc2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4i
OiAiPXQiKHJldHZhbCk6ICIwIihyZXR2YWwpOiAic3QoMikiKTsKICByZXR1cm4gKHJldHZhbCAr
IDEuMC9yZXR2YWwpIC8gMi4wOwp9Cgpkb3VibGUgY29zaChkb3VibGUgeCkKewogIGRvdWJsZSBy
ZXR2YWw7CiAgYXNtKCJmYWJzIiA6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICBhc20oImZsZGwy
ZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5k
aW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIg
IglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0dmFsKTog
IjAiKHJldHZhbCk6ICJzdCgyKSIpOwogIHJldHVybiAocmV0dmFsICsgMS4wL3JldHZhbCkgLyAy
LjA7Cn0KCmxvbmcgZG91YmxlIGNvc2hsKGxvbmcgZG91YmxlIHgpCnsKICBsb25nIGRvdWJsZSBy
ZXR2YWw7CiAgYXNtKCJmYWJzIiA6ICI9dCIocmV0dmFsKTogIjAiKHgpKTsKICBhc20oImZsZGwy
ZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5k
aW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIg
IglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIocmV0dmFsKTog
IjAiKHJldHZhbCk6ICJzdCgyKSIpOwogIHJldHVybiAocmV0dmFsICsgMS4wL3JldHZhbCkgLyAy
LjA7Cn0KCmZsb2F0IHNpbmhmKGZsb2F0IHgpCnsKIGlmKHggPj0gMC4wKQogewogICBmbG9hdCBl
cG9zOwogICBhc20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0
CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglm
MnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlc
biI6ICI9dCIoZXBvcyk6ICIwIih4KTogInN0KDIpIik7CiAgIHJldHVybiAoZXBvcyAtIDEuMC9l
cG9zKSAvIDIuMDsKIH0KIGVsc2UKIHsKICAgZmxvYXQgZW5lZzsKICAgYXNtKCJmbGRsMmVcbiIg
IglmeGNoCSUlc3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAklJXN0KDEpXG4iICIJZnJuZGludFxu
IiAiCWZzdAklJXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4bTFcbiIgIglmbGQxXG4iICIJZmFk
ZHBcbiIgIglmc2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4iOiAiPXQiKGVuZWcpOiAiMCIoLXgp
OiAic3QoMikiKTsKICAgcmV0dXJuICgxLjAvZW5lZyAtIGVuZWcpIC8gMi4wOwogfQp9Cgpkb3Vi
bGUgc2luaChkb3VibGUgeCkKewogaWYoeCA+PSAwLjApCiB7CiAgIGRvdWJsZSBlcG9zOwogICBh
c20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlc
biIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAi
CWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIo
ZXBvcyk6ICIwIih4KTogInN0KDIpIik7CiAgIHJldHVybiAoZXBvcyAtIDEuMC9lcG9zKSAvIDIu
MDsKIH0KIGVsc2UKIHsKICAgZG91YmxlIGVuZWc7CiAgIGFzbSgiZmxkbDJlXG4iICIJZnhjaAkl
JXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJJSVzdCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJ
JSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYyeG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJ
ZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxuIjogIj10IihlbmVnKTogIjAiKC14KTogInN0KDIp
Iik7CiAgIHJldHVybiAoMS4wL2VuZWcgLSBlbmVnKSAvIDIuMDsKIH0KfQoKbG9uZyBkb3VibGUg
c2luaGwobG9uZyBkb3VibGUgeCkKewogaWYoeCA+PSAwLjApCiB7CiAgIGxvbmcgZG91YmxlIGVw
b3M7CiAgIGFzbSgiZmxkbDJlXG4iICIJZnhjaAklJXN0KDEpXG4iICIJZm11bHBcbiIgIglmc3QJ
JSVzdCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAiCWZzdWJycFxuIiAiCWYy
eG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJZmZyZWUJJSVzdCgxKVxu
IjogIj10IihlcG9zKTogIjAiKHgpOiAic3QoMikiKTsKICAgcmV0dXJuIChlcG9zIC0gMS4wL2Vw
b3MpIC8gMi4wOwogfQogZWxzZQogewogICBsb25nIGRvdWJsZSBlbmVnOwogICBhc20oImZsZGwy
ZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0CSUlc3QoMSlcbiIgIglmcm5k
aW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglmMnhtMVxuIiAiCWZsZDFcbiIg
IglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlcbiI6ICI9dCIoZW5lZyk6ICIw
IigteCk6ICJzdCgyKSIpOwogICByZXR1cm4gKDEuMC9lbmVnIC0gZW5lZykgLyAyLjA7CiB9Cn0K
CmZsb2F0IHRhbmhmKGZsb2F0IHgpCnsKICBpZiAoeCA+IDUwKQogICAgcmV0dXJuIDE7CiAgZWxz
ZSBpZiAoeCA8IC01MCkKICAgIHJldHVybiAtMTsKICBlbHNlCiAgewogICAgZmxvYXQgZWJpZzsK
ICAgIGZsb2F0IGVzbWFsbDsKICAgIGFzbSgiZmxkbDJlXG4iICIJZnhjaAklJXN0KDEpXG4iICIJ
Zm11bHBcbiIgIglmc3QJJSVzdCgxKVxuIiAiCWZybmRpbnRcbiIgIglmc3QJJSVzdCgyKVxuIiAi
CWZzdWJycFxuIiAiCWYyeG0xXG4iICIJZmxkMVxuIiAiCWZhZGRwXG4iICIJZnNjYWxlXG4iICIJ
ZmZyZWUJJSVzdCgxKVxuIjogIj10IihlYmlnKTogIjAiKHgpOiAic3QoMikiKTsKICAgIGVzbWFs
bCA9IDEuL2ViaWc7CiAgICByZXR1cm4gKGViaWcgLSBlc21hbGwpIC8gKGViaWcgKyBlc21hbGwp
OwogIH0KfQoKZG91YmxlIHRhbmgoZG91YmxlIHgpCnsKICBpZiAoeCA+IDUwKQogICAgcmV0dXJu
IDE7CiAgZWxzZSBpZiAoeCA8IC01MCkKICAgIHJldHVybiAtMTsKICBlbHNlCiAgewogICAgZG91
YmxlIGViaWc7CiAgICBkb3VibGUgZXNtYWxsOwogICAgYXNtKCJmbGRsMmVcbiIgIglmeGNoCSUl
c3QoMSlcbiIgIglmbXVscFxuIiAiCWZzdAklJXN0KDEpXG4iICIJZnJuZGludFxuIiAiCWZzdAkl
JXN0KDIpXG4iICIJZnN1YnJwXG4iICIJZjJ4bTFcbiIgIglmbGQxXG4iICIJZmFkZHBcbiIgIglm
c2NhbGVcbiIgIglmZnJlZQklJXN0KDEpXG4iOiAiPXQiKGViaWcpOiAiMCIoeCk6ICJzdCgyKSIp
OwogICAgZXNtYWxsID0gMS4vZWJpZzsKICAgIHJldHVybiAoZWJpZyAtIGVzbWFsbCkgLyAoZWJp
ZyArIGVzbWFsbCk7CiAgfQp9Cgpsb25nIGRvdWJsZSB0YW5obChsb25nIGRvdWJsZSB4KQp7CiAg
aWYgKHggPiA1MCkKICAgIHJldHVybiAxOwogIGVsc2UgaWYgKHggPCAtNTApCiAgICByZXR1cm4g
LTE7CiAgZWxzZQogIHsKICAgIGxvbmcgZG91YmxlIGViaWc7CiAgICBsb25nIGRvdWJsZSBlc21h
bGw7CiAgICBhc20oImZsZGwyZVxuIiAiCWZ4Y2gJJSVzdCgxKVxuIiAiCWZtdWxwXG4iICIJZnN0
CSUlc3QoMSlcbiIgIglmcm5kaW50XG4iICIJZnN0CSUlc3QoMilcbiIgIglmc3VicnBcbiIgIglm
MnhtMVxuIiAiCWZsZDFcbiIgIglmYWRkcFxuIiAiCWZzY2FsZVxuIiAiCWZmcmVlCSUlc3QoMSlc
biI6ICI9dCIoZWJpZyk6ICIwIih4KTogInN0KDIpIik7CiAgICBlc21hbGwgPSAxLi9lYmlnOwog
ICAgcmV0dXJuIChlYmlnIC0gZXNtYWxsKSAvIChlYmlnICsgZXNtYWxsKTsKICB9Cn0K


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

* Re: other/3051: Internal compiler error compiling Asmutils
@ 2002-03-02 18:46 Craig Rodrigues
  0 siblings, 0 replies; 4+ messages in thread
From: Craig Rodrigues @ 2002-03-02 18:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR other/3051; it has been noted by GNATS.

From: Craig Rodrigues <rodrigc@mediaone.net>
To: dl@gazeta.ru, c.williams@swflug.org, gcc-gnats@gcc.gnu.org,
   gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: other/3051: Internal compiler error compiling Asmutils
Date: Sat, 02 Mar 2002 21:43:27 -0500

 This is a multi-part message in MIME format.
 --------------D9FB5DA03BF1EF0BE65D5412
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=3051
 
 I have submitted this patch to the asmutils maintainer which
 allows asmutils to compile under gcc 3.0.4 and gcc 3.1 (prerelease)
 
 
 --
 Craig Rodrigues
 http://www.gis.net/~craigr
 rodrigc@attbi.com
 
 
 
 --------------D9FB5DA03BF1EF0BE65D5412
 Content-Type: text/plain; charset=us-ascii;
  name="1.txt"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="1.txt"
 
 Index: libm.c
 ===================================================================
 RCS file: /cvsroot/asm/asmutils/lib/libm.c,v
 retrieving revision 1.5
 diff -u -r1.5 libm.c
 --- libm.c	2 Mar 2002 20:23:14 -0000	1.5
 +++ libm.c	3 Mar 2002 02:36:31 -0000
 @@ -719,7 +719,7 @@
        "=t"(ret):\
        "u"(y),\
        "0"(x):\
 -      "eax","st")
 +      "eax","st(1)")
  
  float (fmodf)(float x,float y)
  {
 @@ -1642,7 +1642,7 @@
        "=t"(ret)   :\
        "0"(x),\
        "u"(n):\
 -      "st")
 +      "st(1)")
  
  float (scalbnf)(float x,int n)
  {
 @@ -1716,7 +1716,7 @@
  #define __SINCOS(x,cosptr,sinptr)\
  {\
    register long double sv,cv;\
 -  asm("fsincos":"=t"(cv),"=u"(sv):"0"(x):"st","st(1)");\
 +  asm("fsincos":"=t"(cv),"=u"(sv):"0"(x):"st(2)","st(3)");\
    *cosptr = cv;\
    *sinptr = sv;\
  }
 
 --------------D9FB5DA03BF1EF0BE65D5412--
 


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

* Re: other/3051: Internal compiler error compiling Asmutils
@ 2001-12-11 22:56 rodrigc
  0 siblings, 0 replies; 4+ messages in thread
From: rodrigc @ 2001-12-11 22:56 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

The following reply was made to PR other/3051; it has been noted by GNATS.

From: rodrigc@gcc.gnu.org
To: c.williams@swflug.org, dl@gazeta.ru, gcc-bugs@gcc.gnu.org,
  gcc-gnats@gcc.gnu.org, gcc-prs@gcc.gnu.org, nobody@gcc.gnu.org
Cc:  
Subject: Re: other/3051: Internal compiler error compiling Asmutils
Date: 12 Dec 2001 06:51:41 -0000

 Synopsis: Internal compiler error compiling Asmutils
 
 State-Changed-From-To: open->analyzed
 State-Changed-By: rodrigc
 State-Changed-When: Tue Dec 11 22:51:41 2001
 State-Changed-Why:
     If you wish to use the Red Hat version of gcc,
     you should report errors to Red Hat at http://bugzilla.redhat.com/bugzilla/
     
     
     FSF gcc 3.0.3 still exhibits the ICE.
     
     FSF gcc 3.1 does not ICE, and produces the following compilation
     errors:
     
     libm.c: In function `fmodf':
     libm.c:222: output constraint 0 cannot be specified together with "st" clobber
     libm.c:224: confused by earlier errors, bailing out
 
 http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=3051&database=gcc


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

* Re: other/3051: Internal compiler error compiling Asmutils
@ 2001-12-11 22:51 rodrigc
  0 siblings, 0 replies; 4+ messages in thread
From: rodrigc @ 2001-12-11 22:51 UTC (permalink / raw)
  To: c.williams, dl, gcc-bugs, gcc-gnats, gcc-prs, nobody

Synopsis: Internal compiler error compiling Asmutils

State-Changed-From-To: open->analyzed
State-Changed-By: rodrigc
State-Changed-When: Tue Dec 11 22:51:41 2001
State-Changed-Why:
    If you wish to use the Red Hat version of gcc,
    you should report errors to Red Hat at http://bugzilla.redhat.com/bugzilla/
    
    
    FSF gcc 3.0.3 still exhibits the ICE.
    
    FSF gcc 3.1 does not ICE, and produces the following compilation
    errors:
    
    libm.c: In function `fmodf':
    libm.c:222: output constraint 0 cannot be specified together with "st" clobber
    libm.c:224: confused by earlier errors, bailing out

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=3051&database=gcc


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

end of thread, other threads:[~2002-03-03  2:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-04 23:26 other/3051: Internal compiler error compiling Asmutils c.williams
2001-12-11 22:51 rodrigc
2001-12-11 22:56 rodrigc
2002-03-02 18:46 Craig Rodrigues

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