public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* Re: debug/7092: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++
@ 2002-06-25 16:46 Mark Mentovai
  0 siblings, 0 replies; 5+ messages in thread
From: Mark Mentovai @ 2002-06-25 16:46 UTC (permalink / raw)
  To: nobody; +Cc: gcc-prs

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

From: Mark Mentovai <mark@moxienet.com>
To: <davem@gcc.gnu.org>, <gcc-bugs@gcc.gnu.org>,
	<gcc-gnats@gcc.gnu.org>
Cc:  
Subject: Re: debug/7092: Bootstrap fails with ICE on sparc-solaris,
	CFLAGS="-g1" when building 64-bit libsupc++
Date: Tue, 25 Jun 2002 18:58:54 -0400

 > This message is in MIME format. Since your mail reader does not understand
 this format, some or all of this message may not be legible.
 
 --B_3107876338_6023326
 Content-type: text/plain; charset="US-ASCII"
 Content-transfer-encoding: 7bit
 
 davem@gcc.gnu.org wrote:
 > State-Changed-From-To: open->feedback
 > State-Changed-By: davem
 > State-Changed-When: Tue Jun 25 12:34:41 2002
 > State-Changed-Why:
 >   There are control characters and zero's in the attachment
 >   file, it appears very corrupted.  Can you make a new one?
 
 Gladly.  This eh_personality.ii was prepared from the current gcc-3_1-branch
 CVS source.
 
 More information: -g1 causes an internal compiler error with this source
 whenever DWARF-2 is selected as the debugging format.  DWARF-2 is the
 default for 64-bit sparcv9 operation on Solaris.
 
 Compile with:
 
 gcc -m64 -g1 -fno-implicit-templates -fdiagnostics-show-location=once
 -ffunction-sections -fdata-sections -c eh_personality.ii -fPIC -DPIC -o
 eh_personality.o  # -m64 implies -gdwarf-2
 
 Or:
 
 gcc -m32 -gdwarf-2 -g1 -fno-implicit-templates
 -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -c
 eh_personality.ii -fPIC -DPIC -o eh_personality.o  # for 32-bit code,
 specify -gdwarf-2 explicitly
 
 The error, once more:
 
 ../../../../../gcc-3.1.1-200206251600/libstdc++-v3/libsupc++/eh_personality.
 cc:53: Internal
    compiler error in dwarf2out_finish, at dwarf2out.c:12184
 
 Mark    
 
 
 --B_3107876338_6023326
 Content-type: application/octet-stream; name="eh_personality.ii"
 Content-disposition: attachment
 Content-transfer-encoding: base64
 
 IyAxICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12
 My9saWJzdXBjKysvZWhfcGVyc29uYWxpdHkuY2MiCiMgMSAiPGJ1aWx0LWluPiIKIyAxICI8
 Y29tbWFuZCBsaW5lPiIKIyAxICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLjEtMjAwMjA2MjUx
 NjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZWhfcGVyc29uYWxpdHkuY2MiCiMgMzEgIi4u
 Ly4uLy4uLy4uLy4uL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAvbGlic3RkYysrLXYzL2xpYnN1
 cGMrKy9laF9wZXJzb25hbGl0eS5jYyIKIyAxICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0
 b3JpdW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL3NwYXJjLXN1bi1zb2xhcmlz
 Mi44L3NwYXJjdjkvbGlic3RkYysrLXYzL2luY2x1ZGUvc3BhcmMtc3VuLXNvbGFyaXMyLjgv
 Yml0cy9jKytjb25maWcuaCIgMQojIDM0ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3Jp
 dW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL3NwYXJjLXN1bi1zb2xhcmlzMi44
 L3NwYXJjdjkvbGlic3RkYysrLXYzL2luY2x1ZGUvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0
 cy9jKytjb25maWcuaCIKIyAxICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2Nj
 L2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL3NwYXJjLXN1bi1zb2xhcmlzMi44L3NwYXJj
 djkvbGlic3RkYysrLXYzL2luY2x1ZGUvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0cy9vc19k
 ZWZpbmVzLmgiIDEKIyAzNSAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9n
 Y2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9iai9zcGFyYy1zdW4tc29sYXJpczIuOC9zcGFyY3Y5
 L2xpYnN0ZGMrKy12My9pbmNsdWRlL3NwYXJjLXN1bi1zb2xhcmlzMi44L2JpdHMvYysrY29u
 ZmlnLmgiIDIKIyAzMiAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC9s
 aWJzdGRjKystdjMvbGlic3VwYysrL2VoX3BlcnNvbmFsaXR5LmNjIiAyCiMgMSAiL3NwYWNl
 L2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9i
 ai9zcGFyYy1zdW4tc29sYXJpczIuOC9zcGFyY3Y5L2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nz
 dGRsaWIiIDEKIyA0OCAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2Mt
 My4xLjEtMjAwMjA2MjUxNjAwLm9iai9zcGFyYy1zdW4tc29sYXJpczIuOC9zcGFyY3Y5L2xp
 YnN0ZGMrKy12My9pbmNsdWRlL2NzdGRsaWIiIDMKCgojIDEgIi9zcGFjZS9ob21lL21hcmsv
 Y29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovc3BhcmMtc3Vu
 LXNvbGFyaXMyLjgvc3BhcmN2OS9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkZGVmIiAxIDMK
 IyA0NyAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAw
 MjA2MjUxNjAwLm9iai9zcGFyYy1zdW4tc29sYXJpczIuOC9zcGFyY3Y5L2xpYnN0ZGMrKy12
 My9pbmNsdWRlL2NzdGRkZWYiIDMKCiMgMSAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9y
 aXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9zdGRkZWYu
 aCIgMSAzIDQKIyAxNDcgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2Nj
 LTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBl
 ZGVmIGxvbmcgaW50IHB0cmRpZmZfdDsKIyAyMDEgIi9zcGFjZS9ob21lL21hcmsvY29tcGls
 YXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3Rk
 ZGVmLmgiIDMgNAp0eXBlZGVmIGxvbmcgdW5zaWduZWQgaW50IHNpemVfdDsKIyA0OSAiL3Nw
 YWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAw
 Lm9iai9zcGFyYy1zdW4tc29sYXJpczIuOC9zcGFyY3Y5L2xpYnN0ZGMrKy12My9pbmNsdWRl
 L2NzdGRkZWYiIDIgMwoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjpwdHJkaWZmX3Q7CiAg
 dXNpbmcgOjpzaXplX3Q7Cn0KIyA1MSAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVt
 L2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9iai9zcGFyYy1zdW4tc29sYXJpczIuOC9z
 cGFyY3Y5L2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRsaWIiIDIgMwoKIyAxICIvdXNyL2lu
 Y2x1ZGUvc3RkbGliLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0
 CiNwcmFnbWEgaWRlbnQgIkAoIylzdGRsaWIuaAkxLjQ3CTk5LzExLzAzIFNNSSIgCgojIDEg
 Ii9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1
 MTYwMC5vYmovZ2NjL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMSAzIDQKIyAzNyAiL3Nw
 YWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAw
 Lm9iai9nY2MvaW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAzIDQKI3ByYWdtYSBpZGVudCAi
 QCgjKXN0ZGxpYl9pc28uaAkxLjIJOTkvMTIvMjEgU01JIiAKCiMgMSAiL3Vzci9pbmNsdWRl
 L3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDEgMyA0CiMgMTMgIi91c3IvaW5jbHVkZS9zeXMvZmVh
 dHVyZV90ZXN0cy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWZlYXR1cmVfdGVzdHMuaAkx
 LjE4CTk5LzA3LzI2IFNNSSIKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9pc2FfZGVmcy5oIiAx
 IDMgNAojIDkgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMyA0CiNwcmFnbWEgaWRl
 bnQgIkAoIylpc2FfZGVmcy5oCTEuMjAJOTkvMDUvMDQgU01JIgojIDE1OCAiL3Vzci9pbmNs
 dWRlL3N5cy9pc2FfZGVmcy5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgMzgwICIvdXNyL2luY2x1
 ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNAp9CiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvZmVhdHVy
 ZV90ZXN0cy5oIiAyIDMgNAoKCmV4dGVybiAiQyIgewojIDE4MSAiL3Vzci9pbmNsdWRlL3N5
 cy9mZWF0dXJlX3Rlc3RzLmgiIDMgNAp9CiMgNDAgIi9zcGFjZS9ob21lL21hcmsvY29tcGls
 YXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvaXNv
 L3N0ZGxpYl9pc28uaCIgMiAzIDQKCgpleHRlcm4gIkMiIHsKCgoKZXh0ZXJuIHVuc2lnbmVk
 IGNoYXIgX19jdHlwZVtdOwojIDU3ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0v
 Z2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2djYy9pbmNsdWRlL2lzby9zdGRsaWJf
 aXNvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgaW50IHF1b3Q7CiAgICAgICAg
 aW50IHJlbTsKfSBkaXZfdDsKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIHF1b3Q7
 CiAgICAgICAgbG9uZyByZW07Cn0gbGRpdl90OwojIDEwMyAiL3NwYWNlL2hvbWUvbWFyay9j
 b21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVk
 ZS9pc28vc3RkbGliX2lzby5oIiAzIDQKZXh0ZXJuIHZvaWQgYWJvcnQodm9pZCk7CmV4dGVy
 biBpbnQgYWJzKGludCk7CmV4dGVybiBpbnQgYXRleGl0KHZvaWQgKCopKHZvaWQpKTsKZXh0
 ZXJuIGRvdWJsZSBhdG9mKGNvbnN0IGNoYXIgKik7CmV4dGVybiBpbnQgYXRvaShjb25zdCBj
 aGFyICopOwpleHRlcm4gbG9uZyBpbnQgYXRvbChjb25zdCBjaGFyICopOwpleHRlcm4gdm9p
 ZCAqYnNlYXJjaChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBzaXplX3Qs
 CiAgICAgICAgaW50ICgqKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpOwpleHRlcm4g
 dm9pZCAqY2FsbG9jKHNpemVfdCwgc2l6ZV90KTsKZXh0ZXJuIGRpdl90IGRpdihpbnQsIGlu
 dCk7CmV4dGVybiB2b2lkIGV4aXQoaW50KTsKZXh0ZXJuIHZvaWQgZnJlZSh2b2lkICopOwpl
 eHRlcm4gY2hhciAqZ2V0ZW52KGNvbnN0IGNoYXIgKik7CmV4dGVybiBsb25nIGludCBsYWJz
 KGxvbmcpOwpleHRlcm4gbGRpdl90IGxkaXYobG9uZywgbG9uZyk7CmV4dGVybiB2b2lkICpt
 YWxsb2Moc2l6ZV90KTsKZXh0ZXJuIGludCBtYmxlbihjb25zdCBjaGFyICosIHNpemVfdCk7
 CmV4dGVybiBzaXplX3QgbWJzdG93Y3Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVf
 dCk7CmV4dGVybiBpbnQgbWJ0b3djKHdjaGFyX3QgKiwgY29uc3QgY2hhciAqLCBzaXplX3Qp
 OwpleHRlcm4gdm9pZCBxc29ydCh2b2lkICosIHNpemVfdCwgc2l6ZV90LAogICAgICAgIGlu
 dCAoKikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKTsKZXh0ZXJuIGludCByYW5kKHZv
 aWQpOwpleHRlcm4gdm9pZCAqcmVhbGxvYyh2b2lkICosIHNpemVfdCk7CmV4dGVybiB2b2lk
 IHNyYW5kKHVuc2lnbmVkIGludCk7CmV4dGVybiBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIg
 KiwgY2hhciAqKik7CmV4dGVybiBsb25nIGludCBzdHJ0b2woY29uc3QgY2hhciAqLCBjaGFy
 ICoqLCBpbnQpOwpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bChjb25zdCBjaGFy
 ICosIGNoYXIgKiosIGludCk7CmV4dGVybiBpbnQgc3lzdGVtKGNvbnN0IGNoYXIgKik7CmV4
 dGVybiBpbnQgd2N0b21iKGNoYXIgKiwgd2NoYXJfdCk7CmV4dGVybiBzaXplX3Qgd2NzdG9t
 YnMoY2hhciAqLCBjb25zdCB3Y2hhcl90ICosIHNpemVfdCk7CiMgMTcyICIvc3BhY2UvaG9t
 ZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2dj
 Yy9pbmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMgNAp9CiMgMTkgIi91c3IvaW5jbHVkZS9z
 dGRsaWIuaCIgMiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMSAzIDQK
 IyAxNiAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMp
 d2FpdC5oCTEuMjEJOTcvMDQvMDggU01JIiAKCgoKIyAxICIvc3BhY2UvaG9tZS9tYXJrL2Nv
 bXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2djYy9pbmNsdWRl
 L3N5cy90eXBlcy5oIiAxIDMgNAojIDI1ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3Jp
 dW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBl
 cy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXR5cGVzLmgJMS42NwkwMS8wNy8wNyBTTUki
 CgoKCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgiIDEgMyA0CiMgMTYg
 Ii91c3IvaW5jbHVkZS9zeXMvbWFjaHR5cGVzLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMp
 bWFjaHR5cGVzLmgJMS4xMwk5OS8wNS8wNCBTTUkiCgoKCgpleHRlcm4gIkMiIHsKIyAzMyAi
 L3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMuaCIgMyA0CnR5cGVkZWYgc3RydWN0IF9sYWJl
 bF90IHsgbG9uZyB2YWxbMl07IH0gbGFiZWxfdDsKCgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFy
 IGxvY2tfdDsKCgp9CiMgMzQgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2Mv
 Z2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIg
 MyA0CiMgNDUgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4x
 LTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojIDEgIi91
 c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N5
 cy9pbnRfdHlwZXMuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylpbnRfdHlwZXMuaAkxLjYJ
 OTcvMDgvMjAgU01JIgojIDQ1ICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzIDQK
 ZXh0ZXJuICJDIiB7CiMgNjIgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDMgNAp0
 eXBlZGVmIGNoYXIgaW50OF90OwoKCgoKCnR5cGVkZWYgc2hvcnQgaW50MTZfdDsKdHlwZWRl
 ZiBpbnQgaW50MzJfdDsKCnR5cGVkZWYgbG9uZyBpbnQ2NF90OwoKCgoKCgp0eXBlZGVmIHVu
 c2lnbmVkIGNoYXIgdWludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsK
 dHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7Cgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcg
 dWludDY0X3Q7CiMgOTQgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDMgNAp0eXBl
 ZGVmIGludDY0X3QgaW50bWF4X3Q7CnR5cGVkZWYgdWludDY0X3QgdWludG1heF90OwojIDEw
 NyAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyBpbnRw
 dHJfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnRwdHJfdDsKIyAxMTkgIi91c3IvaW5j
 bHVkZS9zeXMvaW50X3R5cGVzLmgiIDMgNAp0eXBlZGVmIGNoYXIgaW50X2xlYXN0OF90OwoK
 CgoKCnR5cGVkZWYgc2hvcnQgaW50X2xlYXN0MTZfdDsKdHlwZWRlZiBpbnQgaW50X2xlYXN0
 MzJfdDsKCnR5cGVkZWYgbG9uZyBpbnRfbGVhc3Q2NF90OwoKCgoKCgp0eXBlZGVmIHVuc2ln
 bmVkIGNoYXIgdWludF9sZWFzdDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50X2xl
 YXN0MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludF9sZWFzdDMyX3Q7Cgp0eXBlZGVm
 IHVuc2lnbmVkIGxvbmcgdWludF9sZWFzdDY0X3Q7CgoKCgoKCgp9CiMgNDYgIi9zcGFjZS9o
 b21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmov
 Z2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCgoKCgpleHRlcm4gIkMiIHsKIyA2
 MiAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2
 MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyBs
 b25nIGxvbmdsb25nX3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHVfbG9uZ2xvbmdf
 dDsKIyA4MiAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEt
 MjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYg
 aW50MzJfdCB0X3NjYWxhcl90Owp0eXBlZGVmIHVpbnQzMl90IHRfdXNjYWxhcl90OwojIDky
 ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYy
 NTE2MDAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNpZ25l
 ZCBjaGFyIHVjaGFyX3Q7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdXNob3J0X3Q7CnR5cGVk
 ZWYgdW5zaWduZWQgaW50IHVpbnRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nX3Q7
 Cgp0eXBlZGVmIGNoYXIgKmNhZGRyX3Q7CnR5cGVkZWYgbG9uZyBkYWRkcl90Owp0eXBlZGVm
 IHNob3J0IGNudF90OwojIDEyNyAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2dj
 Yy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIg
 MyA0CnR5cGVkZWYgdWxvbmdfdCBwZm5fdDsKdHlwZWRlZiB1bG9uZ190IHBnY250X3Q7CnR5
 cGVkZWYgbG9uZyBzcGdjbnRfdDsKCnR5cGVkZWYgdWNoYXJfdCB1c2VfdDsKdHlwZWRlZiBz
 aG9ydCBzeXNpZF90Owp0eXBlZGVmIHNob3J0IGluZGV4X3Q7CnR5cGVkZWYgdm9pZCAqdGlt
 ZW91dF9pZF90Owp0eXBlZGVmIHZvaWQgKmJ1ZmNhbGxfaWRfdDsKIyAxNDkgIi9zcGFjZS9o
 b21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmov
 Z2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcgb2ZmX3Q7CgoKCgoK
 CnR5cGVkZWYgb2ZmX3Qgb2ZmNjRfdDsKIyAxNjUgIi9zcGFjZS9ob21lL21hcmsvY29tcGls
 YXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3lz
 L3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVsb25nX3QgaW5vX3Q7CnR5cGVkZWYgbG9uZyBibGtj
 bnRfdDsKdHlwZWRlZiB1bG9uZ190IGZzYmxrY250X3Q7CnR5cGVkZWYgdWxvbmdfdCBmc2Zp
 bGNudF90OwojIDE3OCAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2Mt
 My4xLjEtMjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5
 cGVkZWYgaW5vX3QgaW5vNjRfdDsKdHlwZWRlZiBibGtjbnRfdCBibGtjbnQ2NF90Owp0eXBl
 ZGVmIGZzYmxrY250X3QgZnNibGtjbnQ2NF90Owp0eXBlZGVmIGZzZmlsY250X3QgZnNmaWxj
 bnQ2NF90OwojIDE5MSAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2Mt
 My4xLjEtMjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5
 cGVkZWYgaW50IGJsa3NpemVfdDsKCgoKCgp0eXBlZGVmIGVudW0geyBfQl9GQUxTRSwgX0Jf
 VFJVRSB9IGJvb2xlYW5fdDsKIyAyMTAgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1
 bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVz
 LmgiIDMgNAp0eXBlZGVmIGludDY0X3QgcGFkNjRfdDsKdHlwZWRlZiB1aW50NjRfdCB1cGFk
 NjRfdDsKIyAyMjMgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMu
 MS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBl
 ZGVmIGxvbmdsb25nX3Qgb2Zmc2V0X3Q7CnR5cGVkZWYgdV9sb25nbG9uZ190IHVfb2Zmc2V0
 X3Q7CnR5cGVkZWYgdV9sb25nbG9uZ190IGxlbl90Owp0eXBlZGVmIGxvbmdsb25nX3QgZGlz
 a2FkZHJfdDsKIyAyNDQgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2Nj
 LTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0
 eXBlZGVmIHVuaW9uIHsKICAgICAgICBvZmZzZXRfdCBfZjsKICAgICAgICBzdHJ1Y3Qgewog
 ICAgICAgICAgICAgICAgaW50MzJfdCBfdTsKICAgICAgICAgICAgICAgIGludDMyX3QgX2w7
 CiAgICAgICAgfSBfcDsKfSBsbG9mZl90OwojIDI2NCAiL3NwYWNlL2hvbWUvbWFyay9jb21w
 aWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9z
 eXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5pb24gewogICAgICAgIGRpc2thZGRyX3QgX2Y7
 CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgIGludDMyX3QgX3U7CiAgICAgICAg
 ICAgICAgICBpbnQzMl90IF9sOwogICAgICAgIH0gX3A7Cn0gbGxkYWRkcl90OwoKCnR5cGVk
 ZWYgdWludF90IGtfZmx0c2V0X3Q7CiMgMjg1ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0
 b3JpdW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2djYy9pbmNsdWRlL3N5cy90
 eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgaWRfdDsKIyAyOTQgIi9zcGFjZS9ob21lL21hcmsv
 Y29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1
 ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVpbnRfdCB1c2Vjb25kc190OwoKCgp0eXBl
 ZGVmIGxvbmcgc3VzZWNvbmRzX3Q7CgoKCgoKCnR5cGVkZWYgdWludF90IG1ham9yX3Q7CnR5
 cGVkZWYgdWludF90IG1pbm9yX3Q7CiMgMzE1ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0
 b3JpdW0vZ2NjL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2djYy9pbmNsdWRlL3N5cy90
 eXBlcy5oIiAzIDQKdHlwZWRlZiBzaG9ydCBwcmlfdDsKIyAzMjggIi9zcGFjZS9ob21lL21h
 cmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2lu
 Y2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVzaG9ydF90IG9fbW9kZV90Owp0eXBl
 ZGVmIHNob3J0IG9fZGV2X3Q7CnR5cGVkZWYgdXNob3J0X3Qgb191aWRfdDsKdHlwZWRlZiBv
 X3VpZF90IG9fZ2lkX3Q7CnR5cGVkZWYgc2hvcnQgb19ubGlua190Owp0eXBlZGVmIHNob3J0
 IG9fcGlkX3Q7CnR5cGVkZWYgdXNob3J0X3Qgb19pbm9fdDsKCgoKCgp0eXBlZGVmIGludCBr
 ZXlfdDsKCnR5cGVkZWYgdWludF90IG1vZGVfdDsKCgoKCgoKCnR5cGVkZWYgaW50IHVpZF90
 OwoKCgoKCnR5cGVkZWYgdWlkX3QgZ2lkX3Q7Cgp0eXBlZGVmIGlkX3QgdGFza2lkX3Q7CnR5
 cGVkZWYgaWRfdCBwcm9qaWRfdDsKCgoKCgoKdHlwZWRlZiB1aW50X3QgcHRocmVhZF90Owp0
 eXBlZGVmIHVpbnRfdCBwdGhyZWFkX2tleV90OwoKdHlwZWRlZiBzdHJ1Y3QgX3B0aHJlYWRf
 bXV0ZXggewogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICB1aW50MTZfdCBfX3B0
 aHJlYWRfbXV0ZXhfZmxhZzE7CiAgICAgICAgICAgICAgICB1aW50OF90IF9fcHRocmVhZF9t
 dXRleF9mbGFnMjsKICAgICAgICAgICAgICAgIHVpbnQ4X3QgX19wdGhyZWFkX211dGV4X2Nl
 aWxpbmc7CiAgICAgICAgICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfbXV0ZXhfdHlwZTsK
 ICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9tdXRleF9tYWdpYzsKICAgICAg
 ICB9IF9fcHRocmVhZF9tdXRleF9mbGFnczsKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAg
 ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IF9fcHRocmVh
 ZF9tdXRleF9wYWRbOF07CiAgICAgICAgICAgICAgICB9IF9fcHRocmVhZF9tdXRleF9sb2Nr
 NjQ7CiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB1
 aW50MzJfdCBfX3B0aHJlYWRfb3duZXJwaWQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHVp
 bnQzMl90IF9fcHRocmVhZF9sb2Nrd29yZDsKICAgICAgICAgICAgICAgIH0gX19wdGhyZWFk
 X211dGV4X2xvY2szMjsKICAgICAgICAgICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9tdXRl
 eF9vd25lcjY0OwogICAgICAgIH0gX19wdGhyZWFkX211dGV4X2xvY2s7CiAgICAgICAgdXBh
 ZDY0X3QgX19wdGhyZWFkX211dGV4X2RhdGE7Cn0gcHRocmVhZF9tdXRleF90OwoKdHlwZWRl
 ZiBzdHJ1Y3QgX3B0aHJlYWRfY29uZCB7CiAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAg
 ICAgIHVpbnQ4X3QgX19wdGhyZWFkX2NvbmRfZmxhZ1s0XTsKICAgICAgICAgICAgICAgIHVp
 bnQxNl90IF9fcHRocmVhZF9jb25kX3R5cGU7CiAgICAgICAgICAgICAgICB1aW50MTZfdCBf
 X3B0aHJlYWRfY29uZF9tYWdpYzsKICAgICAgICB9IF9fcHRocmVhZF9jb25kX2ZsYWdzOwog
 ICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9jb25kX2RhdGE7Cn0gcHRocmVhZF9jb25kX3Q7
 CgoKCgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9yd2xvY2sgewogICAgICAgIGludDMyX3Qg
 X19wdGhyZWFkX3J3bG9ja19yZWFkZXJzOwogICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9y
 d2xvY2tfdHlwZTsKICAgICAgICB1aW50MTZfdCBfX3B0aHJlYWRfcndsb2NrX21hZ2ljOwog
 ICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkMVszXTsKICAgICAgICB1cGFk
 NjRfdCBfX3B0aHJlYWRfcndsb2NrX3BhZDJbMl07CiAgICAgICAgdXBhZDY0X3QgX19wdGhy
 ZWFkX3J3bG9ja19wYWQzWzJdOwp9IHB0aHJlYWRfcndsb2NrX3Q7CgoKCgp0eXBlZGVmIHN0
 cnVjdCB7CiAgICAgICAgdm9pZCAqX19wdGhyZWFkX2F0dHJwOwp9IHB0aHJlYWRfYXR0cl90
 OwoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIHZvaWQgKl9fcHRocmVhZF9tdXRleGF0
 dHJwOwp9IHB0aHJlYWRfbXV0ZXhhdHRyX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAg
 ICAgdm9pZCAqX19wdGhyZWFkX2NvbmRhdHRycDsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoK
 Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX29uY2VfcGFk
 WzRdOwp9IHB0aHJlYWRfb25jZV90OwoKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2
 b2lkICpfX3B0aHJlYWRfcndsb2NrYXR0cnA7Cn0gcHRocmVhZF9yd2xvY2thdHRyX3Q7Cgp0
 eXBlZGVmIHVsb25nX3QgZGV2X3Q7CgoKdHlwZWRlZiB1aW50X3QgbmxpbmtfdDsKdHlwZWRl
 ZiBpbnQgcGlkX3Q7CiMgNDc3ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2Nj
 L2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAz
 IDQKdHlwZWRlZiBsb25nIHNzaXplX3Q7CgoKCgoKCgp0eXBlZGVmIGxvbmcgdGltZV90OwoK
 CgoKdHlwZWRlZiBsb25nIGNsb2NrX3Q7CgoKCgp0eXBlZGVmIGludCBjbG9ja2lkX3Q7CgoK
 Cgp0eXBlZGVmIGludCB0aW1lcl90OwoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdW5j
 aGFyOwp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVzaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
 bnQgdWludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVsb25nOwojIDU2MSAiL3NwYWNlL2hv
 bWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwLm9iai9n
 Y2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5zaWduZWQgY2hhciB1X2No
 YXI7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiB1bnNpZ25lZCBp
 bnQgdV9pbnQ7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1X2xvbmc7CnR5cGVkZWYgc3RydWN0
 IF9xdWFkIHsgaW50IHZhbFsyXTsgfSBxdWFkX3Q7CnR5cGVkZWYgcXVhZF90IHF1YWQ7CgoK
 CgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzIDQKIyAxMiAiL3Vzci9p
 bmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylzZWxlY3QuaAkx
 LjE2CTk4LzA0LzI3IFNNSSIgCgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAx
 IDMgNAojIDIyICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiNwcmFnbWEgaWRlbnQg
 IkAoIyl0aW1lLmgJMi42NgkwMS8wMS8xNyBTTUkiIAojIDMyICIvdXNyL2luY2x1ZGUvc3lz
 L3RpbWUuaCIgMyA0CmV4dGVybiAiQyIgewojIDQ5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUu
 aCIgMyA0CnN0cnVjdCB0aW1ldmFsIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAg
 IHN1c2Vjb25kc190IHR2X3VzZWM7Cn07CiMgODIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5o
 IiAzIDQKc3RydWN0IHRpbWV6b25lIHsKICAgICAgICBpbnQgdHpfbWludXRlc3dlc3Q7CiAg
 ICAgICAgaW50IHR6X2RzdHRpbWU7Cn07CgoKCgoKfQojIDEwMCAiL3Vzci9pbmNsdWRlL3N5
 cy90aW1lLmgiIDMgNAojIDEgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2Mv
 Z2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDEg
 MyA0CiMgMTAxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzIDQKCgoKZXh0ZXJuICJD
 IiB7CiMgMTU1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CnN0cnVjdCBpdGltZXJ2
 YWwgewogICAgICAgIHN0cnVjdCB0aW1ldmFsIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVj
 dCB0aW1ldmFsIGl0X3ZhbHVlOwp9OwojIDIwMyAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgi
 IDMgNAp0eXBlZGVmIGxvbmdsb25nX3QgaHJ0aW1lX3Q7CiMgMzIwICIvdXNyL2luY2x1ZGUv
 c3lzL3RpbWUuaCIgMyA0CmludCBhZGp0aW1lKHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0
 aW1ldmFsICopOwojIDMzMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAppbnQgZ2V0
 aXRpbWVyKGludCwgc3RydWN0IGl0aW1lcnZhbCAqKTsKaW50IHV0aW1lcyhjb25zdCBjaGFy
 ICosIGNvbnN0IHN0cnVjdCB0aW1ldmFsICopOwoKaW50IHNldGl0aW1lcihpbnQsIGNvbnN0
 IHN0cnVjdCBpdGltZXJ2YWwgKiwgc3RydWN0IGl0aW1lcnZhbCAqKTsKIyAzNjkgIi91c3Iv
 aW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKaW50IHNldHRpbWVvZmRheShzdHJ1Y3QgdGltZXZh
 bCAqLCB2b2lkICopOwoKaHJ0aW1lX3QgZ2V0aHJ0aW1lKHZvaWQpOwpocnRpbWVfdCBnZXRo
 cnZ0aW1lKHZvaWQpOwojIDM4OSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNAppbnQg
 Z2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQgKik7CiMgNDEwICIvdXNyL2lu
 Y2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMSAzIDQK
 IyAxNiAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIyl0aW1l
 LmgJMS4zOQk5OS8wOC8xMCBTTUkiIAoKCgojIDEgIi91c3IvaW5jbHVkZS9pc28vdGltZV9p
 c28uaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAzIDQKI3By
 YWdtYSBpZGVudCAiQCgjKXRpbWVfaXNvLmgJMS4xCTk5LzA4LzA5IFNNSSIgCgoKCgpleHRl
 cm4gIkMiIHsKIyA2OSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAzIDQKc3RydWN0
 IHRtIHsKICAgICAgICBpbnQgdG1fc2VjOwogICAgICAgIGludCB0bV9taW47CiAgICAgICAg
 aW50IHRtX2hvdXI7CiAgICAgICAgaW50IHRtX21kYXk7CiAgICAgICAgaW50IHRtX21vbjsK
 ICAgICAgICBpbnQgdG1feWVhcjsKICAgICAgICBpbnQgdG1fd2RheTsKICAgICAgICBpbnQg
 dG1feWRheTsKICAgICAgICBpbnQgdG1faXNkc3Q7Cn07CgoKCgpleHRlcm4gY2hhciAqYXNj
 dGltZShjb25zdCBzdHJ1Y3QgdG0gKik7CmV4dGVybiBjbG9ja190IGNsb2NrKHZvaWQpOwpl
 eHRlcm4gY2hhciAqY3RpbWUoY29uc3QgdGltZV90ICopOwpleHRlcm4gZG91YmxlIGRpZmZ0
 aW1lKHRpbWVfdCwgdGltZV90KTsKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lKGNvbnN0IHRp
 bWVfdCAqKTsKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lKGNvbnN0IHRpbWVfdCAqKTsK
 ZXh0ZXJuIHRpbWVfdCBta3RpbWUoc3RydWN0IHRtICopOwpleHRlcm4gdGltZV90IHRpbWUo
 dGltZV90ICopOwpleHRlcm4gc2l6ZV90IHN0cmZ0aW1lKGNoYXIgKiwgc2l6ZV90LCBjb25z
 dCBjaGFyICosIGNvbnN0IHN0cnVjdCB0bSAqKTsKIyAxMTMgIi91c3IvaW5jbHVkZS9pc28v
 dGltZV9pc28uaCIgMyA0Cn0KIyAyMSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMiAzIDQKIyA0
 MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiAiQyIgewojIDYwICIvdXNyL2lu
 Y2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIHN0cnVjdCB0bSAqZ210aW1lX3IoY29uc3QgdGlt
 ZV90ICosIHN0cnVjdCB0bSAqKTsKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IoY29u
 c3QgdGltZV90ICosIHN0cnVjdCB0bSAqKTsKCgoKCgpleHRlcm4gY2hhciAqc3RycHRpbWUo
 Y29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB0bSAqKTsKIyA4MyAiL3Vzci9p
 bmNsdWRlL3RpbWUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIg
 MSAzIDQKIyAxNSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMyA0CiNwcmFnbWEg
 aWRlbnQgIkAoIyl0aW1lX2ltcGwuaAkxLjUJOTkvMTAvMDUgU01JIgoKCgoKZXh0ZXJuICJD
 IiB7CiMgMzYgIi91c3IvaW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDMgNAp0eXBlZGVmIHN0
 cnVjdCB0aW1lc3BlYyB7CiAgICAgICAgdGltZV90IHR2X3NlYzsKICAgICAgICBsb25nIHR2
 X25zZWM7Cn0gdGltZXNwZWNfdDsKIyA2MCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwu
 aCIgMyA0CnR5cGVkZWYgc3RydWN0IHRpbWVzcGVjIHRpbWVzdHJ1Y190OwojIDc5ICIvdXNy
 L2luY2x1ZGUvc3lzL3RpbWVfaW1wbC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgaXRpbWVyc3Bl
 YyB7CiAgICAgICAgc3RydWN0IHRpbWVzcGVjIGl0X2ludGVydmFsOwogICAgICAgIHN0cnVj
 dCB0aW1lc3BlYyBpdF92YWx1ZTsKfSBpdGltZXJzcGVjX3Q7CiMgMTM2ICIvdXNyL2luY2x1
 ZGUvc3lzL3RpbWVfaW1wbC5oIiAzIDQKfQojIDg0ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAy
 IDMgNAojIDk4ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKdW5pb24gc2lndmFsIHsKICAg
 ICAgICBpbnQgc2l2YWxfaW50OwogICAgICAgIHZvaWQgKnNpdmFsX3B0cjsKfTsKCgoKCnN0
 cnVjdCBzaWdldmVudCB7CiAgICAgICAgaW50IHNpZ2V2X25vdGlmeTsKICAgICAgICBpbnQg
 c2lnZXZfc2lnbm87CiAgICAgICAgdW5pb24gc2lndmFsIHNpZ2V2X3ZhbHVlOwogICAgICAg
 IHZvaWQgKCpzaWdldl9ub3RpZnlfZnVuY3Rpb24pKHVuaW9uIHNpZ3ZhbCk7CiAgICAgICAg
 cHRocmVhZF9hdHRyX3QgKnNpZ2V2X25vdGlmeV9hdHRyaWJ1dGVzOwogICAgICAgIGludCBf
 X3NpZ2V2X3BhZDI7Cn07CgoKZXh0ZXJuIGludCBjbG9ja19nZXRyZXMoY2xvY2tpZF90LCBz
 dHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBpbnQgY2xvY2tfZ2V0dGltZShjbG9ja2lkX3Qs
 IHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBjbG9ja19zZXR0aW1lKGNsb2NraWRf
 dCwgY29uc3Qgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IHRpbWVyX2NyZWF0ZShj
 bG9ja2lkX3QsIHN0cnVjdCBzaWdldmVudCAqLCB0aW1lcl90ICopOwpleHRlcm4gaW50IHRp
 bWVyX2RlbGV0ZSh0aW1lcl90KTsKZXh0ZXJuIGludCB0aW1lcl9nZXRvdmVycnVuKHRpbWVy
 X3QpOwpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUodGltZXJfdCwgc3RydWN0IGl0aW1lcnNw
 ZWMgKik7CmV4dGVybiBpbnQgdGltZXJfc2V0dGltZSh0aW1lcl90LCBpbnQsIGNvbnN0IHN0
 cnVjdCBpdGltZXJzcGVjICosCiAgICAgICAgICAgICAgICBzdHJ1Y3QgaXRpbWVyc3BlYyAq
 KTsKZXh0ZXJuIGludCBuYW5vc2xlZXAoY29uc3Qgc3RydWN0IHRpbWVzcGVjICosIHN0cnVj
 dCB0aW1lc3BlYyAqKTsKCgoKCmV4dGVybiB2b2lkIHR6c2V0KHZvaWQpOwoKZXh0ZXJuIGNo
 YXIgKnR6bmFtZVsyXTsKCgpleHRlcm4gbG9uZyBfc3lzY29uZihpbnQpOwoKCgoKCgpleHRl
 cm4gbG9uZyB0aW1lem9uZTsKZXh0ZXJuIGludCBkYXlsaWdodDsKIyAxNTYgIi91c3IvaW5j
 bHVkZS90aW1lLmgiIDMgNApleHRlcm4gc3RydWN0IHRtICpnZXRkYXRlKGNvbnN0IGNoYXIg
 Kik7CgoKCgoKCmV4dGVybiBpbnQgZ2V0ZGF0ZV9lcnI7CiMgMjUwICIvdXNyL2luY2x1ZGUv
 dGltZS5oIiAzIDQKZXh0ZXJuIGNoYXIgKmFzY3RpbWVfcihjb25zdCBzdHJ1Y3QgdG0gKiwg
 Y2hhciAqKTsKZXh0ZXJuIGNoYXIgKmN0aW1lX3IoY29uc3QgdGltZV90ICosIGNoYXIgKik7
 CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBjdGltZV9yIF9fcG9zaXhfY3RpbWVfcgojcHJh
 Z21hIHJlZGVmaW5lX2V4dG5hbWUgYXNjdGltZV9yIF9fcG9zaXhfYXNjdGltZV9yCiMgMzE4
 ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKfQojIDQxMSAiL3Vzci9pbmNsdWRlL3N5cy90
 aW1lLmgiIDIgMyA0CiMgNDIzICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiMgMSAi
 L3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMSAzIDQKIyA0MjQgIi91c3IvaW5jbHVkZS9z
 eXMvdGltZS5oIiAyIDMgNAoKCgoKCn0KIyAxOCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3Qu
 aCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7CiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0
 LmgiIDMgNAp0eXBlZGVmIGxvbmcgZmRfbWFzazsKCnR5cGVkZWYgbG9uZyBmZHNfbWFzazsK
 IyA3MyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgc3RydWN0IGZk
 X3NldCB7CgoKCiAgICAgICAgbG9uZyBmZHNfYml0c1soKCg2NTUzNikrKCgoc2l6ZW9mIChm
 ZHNfbWFzaykgKiA4KSktMSkpLygoc2l6ZW9mIChmZHNfbWFzaykgKiA4KSkpXTsKfSBmZF9z
 ZXQ7CiMgOTcgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNApleHRlcm4gaW50IHNl
 bGVjdChpbnQsIGZkX3NldCAqLCBmZF9zZXQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFs
 ICopOwoKCgoKCgp9CiMgNTc0ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2Nj
 L2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAy
 IDMgNAojIDU5MCAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4x
 LjEtMjAwMjA2MjUxNjAwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0Cn0KIyAy
 MSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRl
 L3N5cy9yZXNvdXJjZS5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNl
 LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpcmVzb3VyY2UuaAkxLjI1CTk4LzA2LzMwIFNN
 SSIgCgoKCgoKCgpleHRlcm4gIkMiIHsKIyA1MyAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJj
 ZS5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHJsaW1fdDsKIyAxMDIgIi91c3IvaW5j
 bHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CnN0cnVjdCBybGltaXQgewogICAgICAgIHJsaW1f
 dCBybGltX2N1cjsKICAgICAgICBybGltX3QgcmxpbV9tYXg7Cn07CgoKCgp0eXBlZGVmIHVf
 bG9uZ2xvbmdfdCBybGltNjRfdDsKCgoKCgpzdHJ1Y3QgcmxpbWl0NjQgewogICAgICAgIHJs
 aW02NF90IHJsaW1fY3VyOwogICAgICAgIHJsaW02NF90IHJsaW1fbWF4Owp9OwojIDE0MyAi
 L3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKc3RydWN0IHJ1c2FnZSB7CiAgICAg
 ICAgc3RydWN0IHRpbWV2YWwgcnVfdXRpbWU7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgcnVf
 c3RpbWU7CiAgICAgICAgbG9uZyBydV9tYXhyc3M7CiAgICAgICAgbG9uZyBydV9peHJzczsK
 ICAgICAgICBsb25nIHJ1X2lkcnNzOwogICAgICAgIGxvbmcgcnVfaXNyc3M7CiAgICAgICAg
 bG9uZyBydV9taW5mbHQ7CiAgICAgICAgbG9uZyBydV9tYWpmbHQ7CiAgICAgICAgbG9uZyBy
 dV9uc3dhcDsKICAgICAgICBsb25nIHJ1X2luYmxvY2s7CiAgICAgICAgbG9uZyBydV9vdWJs
 b2NrOwogICAgICAgIGxvbmcgcnVfbXNnc25kOwogICAgICAgIGxvbmcgcnVfbXNncmN2Owog
 ICAgICAgIGxvbmcgcnVfbnNpZ25hbHM7CiAgICAgICAgbG9uZyBydV9udmNzdzsKICAgICAg
 ICBsb25nIHJ1X25pdmNzdzsKfTsKIyAxODIgIi91c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2Uu
 aCIgMyA0CiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBzZXRybGltaXQ2NCBzZXRybGltaXQK
 I3ByYWdtYSByZWRlZmluZV9leHRuYW1lIGdldHJsaW1pdDY0IGdldHJsaW1pdAojIDE5MyAi
 L3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKZXh0ZXJuIGludCBzZXRybGltaXQo
 aW50LCBjb25zdCBzdHJ1Y3QgcmxpbWl0ICopOwpleHRlcm4gaW50IGdldHJsaW1pdChpbnQs
 IHN0cnVjdCBybGltaXQgKik7CgoKCgpleHRlcm4gaW50IHNldHJsaW1pdDY0KGludCwgY29u
 c3Qgc3RydWN0IHJsaW1pdDY0ICopOwpleHRlcm4gaW50IGdldHJsaW1pdDY0KGludCwgc3Ry
 dWN0IHJsaW1pdDY0ICopOwoKCmV4dGVybiBpbnQgZ2V0cHJpb3JpdHkoaW50LCBpZF90KTsK
 ZXh0ZXJuIGludCBzZXRwcmlvcml0eShpbnQsIGlkX3QsIGludCk7CmV4dGVybiBpbnQgZ2V0
 cnVzYWdlKGludCwgc3RydWN0IHJ1c2FnZSAqKTsKIyAyMjggIi91c3IvaW5jbHVkZS9zeXMv
 cmVzb3VyY2UuaCIgMyA0Cn0KIyAyNSAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDIgMyA0
 CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDEgMyA0CiMgMTYgIi91c3IvaW5j
 bHVkZS9zeXMvc2lnaW5mby5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXNpZ2luZm8uaAkx
 LjU0CTk4LzAzLzI3IFNNSSIgCgoKCgoKZXh0ZXJuICJDIiB7CiMgMTI2ICIvdXNyL2luY2x1
 ZGUvc3lzL3NpZ2luZm8uaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9tYWNoc2lnLmgi
 IDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvbWFjaHNpZy5oIiAzIDQKI3ByYWdtYSBp
 ZGVudCAiQCgjKW1hY2hzaWcuaAkxLjE1CTk5LzA4LzE1IFNNSSIKCgoKCmV4dGVybiAiQyIg
 ewojIDEwNyAiL3Vzci9pbmNsdWRlL3N5cy9tYWNoc2lnLmgiIDMgNAp9CiMgMTI3ICIvdXNy
 L2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMiAzIDQKIyAyMjEgIi91c3IvaW5jbHVkZS9zeXMv
 c2lnaW5mby5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qgc2lnaW5mbyB7CgoKCiAgICAgICAgaW50
 IHNpX3NpZ25vOwogICAgICAgIGludCBzaV9jb2RlOwogICAgICAgIGludCBzaV9lcnJubzsK
 CiAgICAgICAgaW50IHNpX3BhZDsKCiAgICAgICAgdW5pb24gewoKICAgICAgICAgICAgICAg
 IGludCBfX3BhZFsoKDI1NiAvIHNpemVvZiAoaW50KSkgLSA0KV07CgogICAgICAgICAgICAg
 ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgX19waWQ7CiAgICAg
 ICAgICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 dWlkX3QgX191aWQ7CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 IHVuaW9uIHNpZ3ZhbCBfX3ZhbHVlOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgIH0gX19raWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7
 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF9fdXRp
 bWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19zdGF0
 dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF9f
 c3RpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBfX2NsZDsKICAgICAg
 ICAgICAgICAgICAgICAgICAgfSBfX3BkYXRhOwogICAgICAgICAgICAgICAgfSBfX3Byb2M7
 CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9p
 ZCAqX19hZGRyOwogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX190cmFwbm87CiAgICAg
 ICAgICAgICAgICAgICAgICAgIGNhZGRyX3QgX19wYzsKICAgICAgICAgICAgICAgIH0gX19m
 YXVsdDsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewoKICAgICAgICAgICAgICAgICAgICAg
 ICAgaW50IF9fZmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX19iYW5kOwogICAg
 ICAgICAgICAgICAgfSBfX2ZpbGU7CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAg
 ICAgICAgICAgICAgICAgICAgY2FkZHJfdCBfX2ZhZGRyOwoKCiAgICAgICAgICAgICAgICAg
 ICAgICAgIHRpbWVzdHJ1Y190IF9fdHN0YW1wOwoKCgogICAgICAgICAgICAgICAgICAgICAg
 ICBzaG9ydCBfX3N5c2NhbGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19uc3lz
 YXJnOwogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fZmF1bHQ7CiAgICAgICAgICAg
 ICAgICAgICAgICAgIGxvbmcgX19zeXNhcmdbOF07CiAgICAgICAgICAgICAgICAgICAgICAg
 IGludCBfX21zdGF0ZVsxMF07CiAgICAgICAgICAgICAgICB9IF9fcHJvZjsKCiAgICAgICAg
 fSBfX2RhdGE7Cgp9IHNpZ2luZm9fdDsKIyAzNTQgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5m
 by5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3Qga19zaWdpbmZvIHsKICAgICAgICBpbnQgc2lfc2ln
 bm87CiAgICAgICAgaW50IHNpX2NvZGU7CiAgICAgICAgaW50IHNpX2Vycm5vOwoKICAgICAg
 ICBpbnQgc2lfcGFkOwoKICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICBzdHJ1Y3Qg
 ewogICAgICAgICAgICAgICAgICAgICAgICBwaWRfdCBfX3BpZDsKICAgICAgICAgICAgICAg
 ICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj
 dCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aWRfdCBfX3Vp
 ZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uIHNpZ3Zh
 bCBfX3ZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gX19raWxsOwog
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF9fdXRpbWU7CiAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19zdGF0dXM7CiAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja190IF9fc3RpbWU7CiAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgfSBfX2NsZDsKICAgICAgICAgICAgICAgICAgICAg
 ICAgfSBfX3BkYXRhOwogICAgICAgICAgICAgICAgfSBfX3Byb2M7CgogICAgICAgICAgICAg
 ICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqX19hZGRyOwogICAg
 ICAgICAgICAgICAgICAgICAgICBpbnQgX190cmFwbm87CiAgICAgICAgICAgICAgICAgICAg
 ICAgIGNhZGRyX3QgX19wYzsKICAgICAgICAgICAgICAgIH0gX19mYXVsdDsKCiAgICAgICAg
 ICAgICAgICBzdHJ1Y3QgewoKICAgICAgICAgICAgICAgICAgICAgICAgaW50IF9fZmQ7CiAg
 ICAgICAgICAgICAgICAgICAgICAgIGxvbmcgX19iYW5kOwogICAgICAgICAgICAgICAgfSBf
 X2ZpbGU7CgogICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAg
 ICAgY2FkZHJfdCBfX2ZhZGRyOwoKCgogICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3Ry
 dWNfdCBfX3RzdGFtcDsKCgoKICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnQgX19zeXNj
 YWxsOwogICAgICAgICAgICAgICAgICAgICAgICBjaGFyIF9fbnN5c2FyZzsKICAgICAgICAg
 ICAgICAgICAgICAgICAgY2hhciBfX2ZhdWx0OwoKCgogICAgICAgICAgICAgICAgfSBfX3By
 b2Y7CgogICAgICAgIH0gX19kYXRhOwoKfSBrX3NpZ2luZm9fdDsKCnR5cGVkZWYgc3RydWN0
 IHNpZ3F1ZXVlIHsKICAgICAgICBzdHJ1Y3Qgc2lncXVldWUgKnNxX25leHQ7CiAgICAgICAg
 a19zaWdpbmZvX3Qgc3FfaW5mbzsKICAgICAgICB2b2lkICgqc3FfZnVuYykoc3RydWN0IHNp
 Z3F1ZXVlICopOwogICAgICAgIHZvaWQgKnNxX2JhY2twdHI7Cgp9IHNpZ3F1ZXVlX3Q7CiMg
 NDU0ICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMyA0Cn0KIyAyNiAiL3Vzci9pbmNs
 dWRlL3N5cy93YWl0LmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0Lmgi
 IDEgMyA0CiMgMTYgIi91c3IvaW5jbHVkZS9zeXMvcHJvY3NldC5oIiAzIDQKI3ByYWdtYSBp
 ZGVudCAiQCgjKXByb2NzZXQuaAkxLjIwCTAwLzAyLzE0IFNNSSIgCgoKZXh0ZXJuICJDIiB7
 CiMgNDEgIi91c3IvaW5jbHVkZS9zeXMvcHJvY3NldC5oIiAzIDQKdHlwZWRlZiBlbnVtCgog
 ICAgICAgIGlkdHlwZQoKICAgICAgICAgICAgICAgIHsKICAgICAgICBQX1BJRCwKICAgICAg
 ICBQX1BQSUQsCiAgICAgICAgUF9QR0lELAoKICAgICAgICBQX1NJRCwKICAgICAgICBQX0NJ
 RCwKICAgICAgICBQX1VJRCwKICAgICAgICBQX0dJRCwKICAgICAgICBQX0FMTCwKICAgICAg
 ICBQX0xXUElELAogICAgICAgIFBfVEFTS0lELAogICAgICAgIFBfUFJPSklECn0gaWR0eXBl
 X3Q7CiMgNjcgIi91c3IvaW5jbHVkZS9zeXMvcHJvY3NldC5oIiAzIDQKdHlwZWRlZiBlbnVt
 IGlkb3AgewogICAgICAgIFBPUF9ESUZGLAoKCiAgICAgICAgUE9QX0FORCwKCgogICAgICAg
 IFBPUF9PUiwKCgogICAgICAgIFBPUF9YT1IKCgp9IGlkb3BfdDsKCgoKCgoKCnR5cGVkZWYg
 c3RydWN0IHByb2NzZXQgewogICAgICAgIGlkb3BfdCBwX29wOwoKCgoKICAgICAgICBpZHR5
 cGVfdCBwX2xpZHR5cGU7CgoKICAgICAgICBpZF90IHBfbGlkOwoKICAgICAgICBpZHR5cGVf
 dCBwX3JpZHR5cGU7CgoKICAgICAgICBpZF90IHBfcmlkOwp9IHByb2NzZXRfdDsKIyAxMzIg
 Ii91c3IvaW5jbHVkZS9zeXMvcHJvY3NldC5oIiAzIDQKfQojIDI3ICIvdXNyL2luY2x1ZGUv
 c3lzL3dhaXQuaCIgMiAzIDQKCgoKZXh0ZXJuICJDIiB7CiMgODYgIi91c3IvaW5jbHVkZS9z
 eXMvd2FpdC5oIiAzIDQKZXh0ZXJuIHBpZF90IHdhaXQoaW50ICopOwpleHRlcm4gcGlkX3Qg
 d2FpdHBpZChwaWRfdCwgaW50ICosIGludCk7CgoKZXh0ZXJuIGludCB3YWl0aWQoaWR0eXBl
 X3QsIGlkX3QsIHNpZ2luZm9fdCAqLCBpbnQpOwpleHRlcm4gcGlkX3Qgd2FpdDMoaW50ICos
 IGludCwgc3RydWN0IHJ1c2FnZSAqKTsKCgoKCmV4dGVybiBwaWRfdCB3YWl0NChwaWRfdCwg
 aW50ICosIGludCwgc3RydWN0IHJ1c2FnZSAqKTsKIyAxMTggIi91c3IvaW5jbHVkZS9zeXMv
 d2FpdC5oIiAzIDQKfQojIDIzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CiMgNjQg
 Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiAiQyIgewoKCgp0eXBlZGVmIHN0
 cnVjdCB7CiAgICAgICAgbG9uZyBsb25nIHF1b3Q7CiAgICAgICAgbG9uZyBsb25nIHJlbTsK
 fSBsbGRpdl90OwojIDEwMCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKI3ByYWdtYSBy
 ZWRlZmluZV9leHRuYW1lIG1rc3RlbXA2NCBta3N0ZW1wCiMgMTA5ICIvdXNyL2luY2x1ZGUv
 c3RkbGliLmgiIDMgNApleHRlcm4gaW50IHJhbmRfcih1bnNpZ25lZCBpbnQgKik7CgoKZXh0
 ZXJuIHZvaWQgX2V4aXRoYW5kbGUodm9pZCk7CgoKCgpleHRlcm4gZG91YmxlIGRyYW5kNDgo
 dm9pZCk7CmV4dGVybiBkb3VibGUgZXJhbmQ0OCh1bnNpZ25lZCBzaG9ydCAqKTsKZXh0ZXJu
 IGxvbmcganJhbmQ0OCh1bnNpZ25lZCBzaG9ydCAqKTsKZXh0ZXJuIHZvaWQgbGNvbmc0OCh1
 bnNpZ25lZCBzaG9ydCAqKTsKZXh0ZXJuIGxvbmcgbHJhbmQ0OCh2b2lkKTsKZXh0ZXJuIGxv
 bmcgbXJhbmQ0OCh2b2lkKTsKZXh0ZXJuIGxvbmcgbnJhbmQ0OCh1bnNpZ25lZCBzaG9ydCAq
 KTsKZXh0ZXJuIHVuc2lnbmVkIHNob3J0ICpzZWVkNDgodW5zaWduZWQgc2hvcnQgKik7CmV4
 dGVybiB2b2lkIHNyYW5kNDgobG9uZyk7CmV4dGVybiBpbnQgcHV0ZW52KGNoYXIgKik7CmV4
 dGVybiB2b2lkIHNldGtleShjb25zdCBjaGFyICopOwojIDE1MCAiL3Vzci9pbmNsdWRlL3N0
 ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta3N0ZW1wKGNoYXIgKik7CgoKCgpleHRlcm4gaW50
 IG1rc3RlbXA2NChjaGFyICopOwoKCgoKCmV4dGVybiBsb25nIGE2NGwoY29uc3QgY2hhciAq
 KTsKZXh0ZXJuIGNoYXIgKmVjdnQoZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4dGVy
 biBjaGFyICpmY3Z0KGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpleHRlcm4gY2hhciAq
 Z2N2dChkb3VibGUsIGludCwgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRzdWJvcHQoY2hhciAq
 KiwgY2hhciAqY29uc3QgKiwgY2hhciAqKik7CmV4dGVybiBpbnQgZ3JhbnRwdChpbnQpOwpl
 eHRlcm4gY2hhciAqaW5pdHN0YXRlKHVuc2lnbmVkLCBjaGFyICosIHNpemVfdCk7CmV4dGVy
 biBjaGFyICpsNjRhKGxvbmcpOwpleHRlcm4gY2hhciAqbWt0ZW1wKGNoYXIgKik7CmV4dGVy
 biBjaGFyICpwdHNuYW1lKGludCk7CmV4dGVybiBsb25nIHJhbmRvbSh2b2lkKTsKZXh0ZXJu
 IGNoYXIgKnJlYWxwYXRoKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnNl
 dHN0YXRlKGNvbnN0IGNoYXIgKik7CmV4dGVybiB2b2lkIHNyYW5kb20odW5zaWduZWQpOwpl
 eHRlcm4gaW50IHR0eXNsb3Qodm9pZCk7CmV4dGVybiBpbnQgdW5sb2NrcHQoaW50KTsKZXh0
 ZXJuIHZvaWQgKnZhbGxvYyhzaXplX3QpOwoKCgoKZXh0ZXJuIGludCBkdXAyKGludCwgaW50
 KTsKZXh0ZXJuIGNoYXIgKnFlY3Z0KGxvbmcgZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7
 CmV4dGVybiBjaGFyICpxZmN2dChsb25nIGRvdWJsZSwgaW50LCBpbnQgKiwgaW50ICopOwpl
 eHRlcm4gY2hhciAqcWdjdnQobG9uZyBkb3VibGUsIGludCwgY2hhciAqKTsKZXh0ZXJuIGNo
 YXIgKmdldGN3ZChjaGFyICosIHNpemVfdCk7CmV4dGVybiBjb25zdCBjaGFyICpnZXRleGVj
 bmFtZSh2b2lkKTsKZXh0ZXJuIGNoYXIgKmdldGxvZ2luKHZvaWQpOwpleHRlcm4gaW50IGdl
 dG9wdChpbnQsIGNoYXIgKmNvbnN0ICosIGNvbnN0IGNoYXIgKik7CmV4dGVybiBjaGFyICpv
 cHRhcmc7CmV4dGVybiBpbnQgb3B0aW5kLCBvcHRlcnIsIG9wdG9wdDsKZXh0ZXJuIGNoYXIg
 KmdldHBhc3MoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKmdldHBhc3NwaHJhc2UoY29u
 c3QgY2hhciAqKTsKZXh0ZXJuIGludCBnZXRwdyh1aWRfdCwgY2hhciAqKTsKZXh0ZXJuIGlu
 dCBpc2F0dHkoaW50KTsKZXh0ZXJuIHZvaWQgKm1lbWFsaWduKHNpemVfdCwgc2l6ZV90KTsK
 ZXh0ZXJuIGNoYXIgKnR0eW5hbWUoaW50KTsKCgpleHRlcm4gbG9uZyBsb25nIGF0b2xsKGNv
 bnN0IGNoYXIgKik7CmV4dGVybiBsb25nIGxvbmcgbGxhYnMobG9uZyBsb25nKTsKZXh0ZXJu
 IGxsZGl2X3QgbGxkaXYobG9uZyBsb25nLCBsb25nIGxvbmcpOwpleHRlcm4gY2hhciAqbGx0
 b3N0cihsb25nIGxvbmcsIGNoYXIgKik7CmV4dGVybiBsb25nIGxvbmcgc3RydG9sbChjb25z
 dCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgc3Ry
 dG91bGwoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOwpleHRlcm4gY2hhciAqdWxsdG9z
 dHIodW5zaWduZWQgbG9uZyBsb25nLCBjaGFyICopOwojIDMwOCAiL3Vzci9pbmNsdWRlL3N0
 ZGxpYi5oIiAzIDQKfQojIDUzICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2Nj
 L2djYy0zLjEuMS0yMDAyMDYyNTE2MDAub2JqL3NwYXJjLXN1bi1zb2xhcmlzMi44L3NwYXJj
 djkvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGxpYiIgMiAzCiMgODQgIi9zcGFjZS9ob21l
 L21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC5vYmovc3Bh
 cmMtc3VuLXNvbGFyaXMyLjgvc3BhcmN2OS9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkbGli
 IiAzCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6ZGl2X3Q7CiAgdXNpbmcgOjpsZGl2X3Q7
 CgogIHVzaW5nIDo6YWJvcnQ7CiAgdXNpbmcgOjphYnM7CiAgdXNpbmcgOjphdGV4aXQ7CiAg
 dXNpbmcgOjphdG9mOwogIHVzaW5nIDo6YXRvaTsKICB1c2luZyA6OmF0b2w7CiAgdXNpbmcg
 Ojpic2VhcmNoOwogIHVzaW5nIDo6Y2FsbG9jOwogIHVzaW5nIDo6ZGl2OwogIHVzaW5nIDo6
 ZXhpdDsKICB1c2luZyA6OmZyZWU7CiAgdXNpbmcgOjpnZXRlbnY7CiAgdXNpbmcgOjpsYWJz
 OwogIHVzaW5nIDo6bGRpdjsKICB1c2luZyA6Om1hbGxvYzsKICB1c2luZyA6Om1ibGVuOwog
 IHVzaW5nIDo6bWJzdG93Y3M7CiAgdXNpbmcgOjptYnRvd2M7CiAgdXNpbmcgOjpxc29ydDsK
 ICB1c2luZyA6OnJhbmQ7CiAgdXNpbmcgOjpyZWFsbG9jOwogIHVzaW5nIDo6c3JhbmQ7CiAg
 dXNpbmcgOjpzdHJ0b2Q7CiAgdXNpbmcgOjpzdHJ0b2w7CiAgdXNpbmcgOjpzdHJ0b3VsOwog
 IHVzaW5nIDo6c3lzdGVtOwogIHVzaW5nIDo6d2NzdG9tYnM7CiAgdXNpbmcgOjp3Y3RvbWI7
 CgogIGlubGluZSBsb25nCiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBsYWJzKF9faSk7IH0K
 CiAgaW5saW5lIGxkaXZfdAogIGRpdihsb25nIF9faSwgbG9uZyBfX2opIHsgcmV0dXJuIGxk
 aXYoX19pLCBfX2opOyB9Cn0KIyAzMyAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIw
 NjI1MTYwMC9saWJzdGRjKystdjMvbGlic3VwYysrL2VoX3BlcnNvbmFsaXR5LmNjIiAyCiMg
 MSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC9saWJzdGRjKystdjMv
 bGlic3VwYysrL2V4Y2VwdGlvbl9kZWZpbmVzLmgiIDEKIyAzNCAiLi4vLi4vLi4vLi4vLi4v
 Z2NjLTMuMS4xLTIwMDIwNjI1MTYwMC9saWJzdGRjKystdjMvbGlic3VwYysrL2VoX3BlcnNv
 bmFsaXR5LmNjIiAyCiMgMSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIwNjI1MTYw
 MC9saWJzdGRjKystdjMvbGlic3VwYysrL3Vud2luZC1jeHguaCIgMQojIDM4ICIuLi8uLi8u
 Li8uLi8uLi9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysv
 dW53aW5kLWN4eC5oIgojIDEgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEuMS0yMDAyMDYyNTE2
 MDAvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90eXBlaW5mbyIgMQojIDM4ICIuLi8uLi8uLi8u
 Li8uLi9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvdHlw
 ZWluZm8iCiMgMSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC9saWJz
 dGRjKystdjMvbGlic3VwYysrL2V4Y2VwdGlvbiIgMQojIDQwICIuLi8uLi8uLi8uLi8uLi9n
 Y2MtMy4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZXhjZXB0aW9u
 IgpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIHN0ZAp7CgoKCgoKCiAgY2xhc3MgZXhjZXB0
 aW9uCiAgewogIHB1YmxpYzoKICAgIGV4Y2VwdGlvbigpIHRocm93KCkgeyB9CiAgICB2aXJ0
 dWFsIH5leGNlcHRpb24oKSB0aHJvdygpOwoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdo
 YXQoKSBjb25zdCB0aHJvdygpOwogIH07CgoKCiAgY2xhc3MgYmFkX2V4Y2VwdGlvbiA6IHB1
 YmxpYyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgYmFkX2V4Y2VwdGlvbigpIHRocm93
 KCkgeyB9CgoKICAgIHZpcnR1YWwgfmJhZF9leGNlcHRpb24oKSB0aHJvdygpOwogIH07CgoK
 ICB0eXBlZGVmIHZvaWQgKCp0ZXJtaW5hdGVfaGFuZGxlcikgKCk7CgogIHR5cGVkZWYgdm9p
 ZCAoKnVuZXhwZWN0ZWRfaGFuZGxlcikgKCk7CgoKICB0ZXJtaW5hdGVfaGFuZGxlciBzZXRf
 dGVybWluYXRlKHRlcm1pbmF0ZV9oYW5kbGVyKSB0aHJvdygpOwoKCiAgdm9pZCB0ZXJtaW5h
 dGUoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKICB1bmV4cGVjdGVkX2hh
 bmRsZXIgc2V0X3VuZXhwZWN0ZWQodW5leHBlY3RlZF9oYW5kbGVyKSB0aHJvdygpOwoKCiAg
 dm9pZCB1bmV4cGVjdGVkKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwojIDk4
 ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12My9s
 aWJzdXBjKysvZXhjZXB0aW9uIgogIGJvb2wgdW5jYXVnaHRfZXhjZXB0aW9uKCkgdGhyb3co
 KTsKfQoKbmFtZXNwYWNlIF9fZ251X2N4eAp7CiMgMTExICIuLi8uLi8uLi8uLi8uLi9nY2Mt
 My4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZXhjZXB0aW9uIgog
 IHZvaWQgX192ZXJib3NlX3Rlcm1pbmF0ZV9oYW5kbGVyICgpOwp9Cgp9CiMgMzkgIi4uLy4u
 Ly4uLy4uLy4uL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAvbGlic3RkYysrLXYzL2xpYnN1cGMr
 Ky90eXBlaW5mbyIgMgoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBfX2N4eGFiaXYxCnsK
 ICBjbGFzcyBfX2NsYXNzX3R5cGVfaW5mbzsKfQojIDU1ICIuLi8uLi8uLi8uLi8uLi9nY2Mt
 My4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvdHlwZWluZm8iCm5h
 bWVzcGFjZSBzdGQKewoKCgogIGNsYXNzIHR5cGVfaW5mbwogIHsKICBwdWJsaWM6CgoKCgog
 ICAgdmlydHVhbCB+dHlwZV9pbmZvKCk7CgogIHByaXZhdGU6CgogICAgdHlwZV9pbmZvJiBv
 cGVyYXRvcj0oY29uc3QgdHlwZV9pbmZvJik7CiAgICB0eXBlX2luZm8oY29uc3QgdHlwZV9p
 bmZvJik7CgogIHByb3RlY3RlZDoKICAgIGNvbnN0IGNoYXIgKl9fbmFtZTsKCiAgcHJvdGVj
 dGVkOgogICAgZXhwbGljaXQgdHlwZV9pbmZvKGNvbnN0IGNoYXIgKl9fbik6IF9fbmFtZShf
 X24pIHsgfQoKICBwdWJsaWM6CgoKCiAgICBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QKICAg
 IHsgcmV0dXJuIF9fbmFtZTsgfQojIDk4ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLjEtMjAw
 MjA2MjUxNjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvdHlwZWluZm8iCiAgICBib29sIGJl
 Zm9yZShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBjb25zdAogICAgeyByZXR1cm4gX19uYW1l
 IDwgX19hcmcuX19uYW1lOyB9CiAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgdHlwZV9pbmZv
 JiBfX2FyZykgY29uc3QKICAgIHsgcmV0dXJuIF9fbmFtZSA9PSBfX2FyZy5fX25hbWU7IH0K
 CiAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgdHlwZV9pbmZvJiBfX2FyZykgY29uc3QKICAg
 IHsgcmV0dXJuICFvcGVyYXRvcj09KF9fYXJnKTsgfQoKCiAgcHVibGljOgoKICAgIHZpcnR1
 YWwgYm9vbCBfX2lzX3BvaW50ZXJfcCgpIGNvbnN0OwoKICAgIHZpcnR1YWwgYm9vbCBfX2lz
 X2Z1bmN0aW9uX3AoKSBjb25zdDsKCgoKCgoKCiAgICB2aXJ0dWFsIGJvb2wgX19kb19jYXRj
 aChjb25zdCB0eXBlX2luZm8gKl9fdGhyX3R5cGUsIHZvaWQgKipfX3Rocl9vYmosCiAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX291dGVyKSBjb25zdDsKCgogICAg
 dmlydHVhbCBib29sIF9fZG9fdXBjYXN0KGNvbnN0IF9fY3h4YWJpdjE6Ol9fY2xhc3NfdHlw
 ZV9pbmZvICpfX3RhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoq
 X19vYmpfcHRyKSBjb25zdDsKICB9OwoKCgogIGNsYXNzIGJhZF9jYXN0IDogcHVibGljIGV4
 Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBiYWRfY2FzdCgpIHRocm93KCkgeyB9CgoKICAg
 IHZpcnR1YWwgfmJhZF9jYXN0KCkgdGhyb3coKTsKICB9OwoKCiAgY2xhc3MgYmFkX3R5cGVp
 ZCA6IHB1YmxpYyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgYmFkX3R5cGVpZCAoKSB0
 aHJvdygpIHsgfQoKCiAgICB2aXJ0dWFsIH5iYWRfdHlwZWlkKCkgdGhyb3coKTsKICB9Owp9
 Cgp9CiMgMzkgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAvbGlic3Rk
 YysrLXYzL2xpYnN1cGMrKy91bndpbmQtY3h4LmgiIDIKCgojIDEgIi4uLy4uLy4uLy4uLy4u
 L2djYy0zLjEuMS0yMDAyMDYyNTE2MDAvZ2NjL3Vud2luZC5oIiAxCiMgMjUgIi4uLy4uLy4u
 Ly4uLy4uL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAvZ2NjL3Vud2luZC5oIgpleHRlcm4gIkMi
 IHsKCgoKCgoKdHlwZWRlZiB1bnNpZ25lZCBfVW53aW5kX1dvcmQgX19hdHRyaWJ1dGVfXygo
 X19tb2RlX18oX193b3JkX18pKSk7CnR5cGVkZWYgc2lnbmVkIF9VbndpbmRfU3dvcmQgX19h
 dHRyaWJ1dGVfXygoX19tb2RlX18oX193b3JkX18pKSk7CnR5cGVkZWYgdW5zaWduZWQgX1Vu
 d2luZF9QdHIgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19wb2ludGVyX18pKSk7CgoKCgoK
 dHlwZWRlZiB1bnNpZ25lZCBfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcyBfX2F0dHJpYnV0ZV9f
 KChfX21vZGVfXyhfX0RJX18pKSk7CgoKCnR5cGVkZWYgZW51bQp7CiAgX1VSQ19OT19SRUFT
 T04gPSAwLAogIF9VUkNfRk9SRUlHTl9FWENFUFRJT05fQ0FVR0hUID0gMSwKICBfVVJDX0ZB
 VEFMX1BIQVNFMl9FUlJPUiA9IDIsCiAgX1VSQ19GQVRBTF9QSEFTRTFfRVJST1IgPSAzLAog
 IF9VUkNfTk9STUFMX1NUT1AgPSA0LAogIF9VUkNfRU5EX09GX1NUQUNLID0gNSwKICBfVVJD
 X0hBTkRMRVJfRk9VTkQgPSA2LAogIF9VUkNfSU5TVEFMTF9DT05URVhUID0gNywKICBfVVJD
 X0NPTlRJTlVFX1VOV0lORCA9IDgKfSBfVW53aW5kX1JlYXNvbl9Db2RlOwojIDY0ICIuLi8u
 Li8uLi8uLi8uLi9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwL2djYy91bndpbmQuaCIKc3RydWN0
 IF9VbndpbmRfRXhjZXB0aW9uOwoKdHlwZWRlZiB2b2lkICgqX1Vud2luZF9FeGNlcHRpb25f
 Q2xlYW51cF9GbikgKF9VbndpbmRfUmVhc29uX0NvZGUsCiAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7
 CgpzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24KewogIF9VbndpbmRfRXhjZXB0aW9uX0NsYXNz
 IGV4Y2VwdGlvbl9jbGFzczsKICBfVW53aW5kX0V4Y2VwdGlvbl9DbGVhbnVwX0ZuIGV4Y2Vw
 dGlvbl9jbGVhbnVwOwogIF9VbndpbmRfV29yZCBwcml2YXRlXzE7CiAgX1Vud2luZF9Xb3Jk
 IHByaXZhdGVfMjsKCgoKCn0gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18pKTsKCgoKCnR5
 cGVkZWYgaW50IF9VbndpbmRfQWN0aW9uOwojIDk2ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4x
 LjEtMjAwMjA2MjUxNjAwL2djYy91bndpbmQuaCIKc3RydWN0IF9VbndpbmRfQ29udGV4dDsK
 CgpleHRlcm4gX1Vud2luZF9SZWFzb25fQ29kZSBfVW53aW5kX1JhaXNlRXhjZXB0aW9uIChz
 dHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7CgoKCnR5cGVkZWYgX1Vud2luZF9SZWFzb25f
 Q29kZSAoKl9VbndpbmRfU3RvcF9GbikKICAgICAoaW50LCBfVW53aW5kX0FjdGlvbiwgX1Vu
 d2luZF9FeGNlcHRpb25fQ2xhc3MsCiAgICAgIHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAq
 LCBzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICosIHZvaWQgKik7CgpleHRlcm4gX1Vud2luZF9S
 ZWFzb25fQ29kZSBfVW53aW5kX0ZvcmNlZFVud2luZCAoc3RydWN0IF9VbndpbmRfRXhjZXB0
 aW9uICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICBfVW53aW5kX1N0b3BfRm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgICB2b2lkICopOwoKCmV4dGVybiB2b2lkIF9VbndpbmRfRGVsZXRlRXhj
 ZXB0aW9uIChzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7CgoKCmV4dGVybiB2b2lkIF9V
 bndpbmRfUmVzdW1lIChzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7CgoKCgoKCmV4dGVy
 biBfVW53aW5kX1dvcmQgX1Vud2luZF9HZXRHUiAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAq
 LCBpbnQpOwpleHRlcm4gdm9pZCBfVW53aW5kX1NldEdSIChzdHJ1Y3QgX1Vud2luZF9Db250
 ZXh0ICosIGludCwgX1Vud2luZF9Xb3JkKTsKCmV4dGVybiBfVW53aW5kX1B0ciBfVW53aW5k
 X0dldElQIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOwpleHRlcm4gdm9pZCBfVW53aW5k
 X1NldElQIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICosIF9VbndpbmRfUHRyKTsKCmV4dGVy
 biB2b2lkICpfVW53aW5kX0dldExhbmd1YWdlU3BlY2lmaWNEYXRhIChzdHJ1Y3QgX1Vud2lu
 ZF9Db250ZXh0ICopOwoKZXh0ZXJuIF9VbndpbmRfUHRyIF9VbndpbmRfR2V0UmVnaW9uU3Rh
 cnQgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CiMgMTQ4ICIuLi8uLi8uLi8uLi8uLi9n
 Y2MtMy4xLjEtMjAwMjA2MjUxNjAwL2djYy91bndpbmQuaCIKdHlwZWRlZiBfVW53aW5kX1Jl
 YXNvbl9Db2RlICgqX1Vud2luZF9QZXJzb25hbGl0eV9GbikKICAgICAoaW50LCBfVW53aW5k
 X0FjdGlvbiwgX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MsCiAgICAgIHN0cnVjdCBfVW53aW5k
 X0V4Y2VwdGlvbiAqLCBzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICopOwoKCgoKc3RydWN0IFNq
 TGpfRnVuY3Rpb25fQ29udGV4dDsKZXh0ZXJuIHZvaWQgX1Vud2luZF9TakxqX1JlZ2lzdGVy
 IChzdHJ1Y3QgU2pMal9GdW5jdGlvbl9Db250ZXh0ICopOwpleHRlcm4gdm9pZCBfVW53aW5k
 X1NqTGpfVW5yZWdpc3RlciAoc3RydWN0IFNqTGpfRnVuY3Rpb25fQ29udGV4dCAqKTsKCmV4
 dGVybiBfVW53aW5kX1JlYXNvbl9Db2RlIF9VbndpbmRfU2pMal9SYWlzZUV4Y2VwdGlvbgog
 ICAgIChzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7CmV4dGVybiBfVW53aW5kX1JlYXNv
 bl9Db2RlIF9VbndpbmRfU2pMal9Gb3JjZWRVbndpbmQKICAgICAoc3RydWN0IF9VbndpbmRf
 RXhjZXB0aW9uICosIF9VbndpbmRfU3RvcF9Gbiwgdm9pZCAqKTsKZXh0ZXJuIHZvaWQgX1Vu
 d2luZF9TakxqX1Jlc3VtZSAoc3RydWN0IF9VbndpbmRfRXhjZXB0aW9uICopOwojIDE4NiAi
 Li4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC9nY2MvdW53aW5kLmgiCmV4
 dGVybiBfVW53aW5kX1B0ciBfVW53aW5kX0dldERhdGFSZWxCYXNlIChzdHJ1Y3QgX1Vud2lu
 ZF9Db250ZXh0ICopOwpleHRlcm4gX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFz
 ZSAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCgoKfQojIDQyICIuLi8uLi8uLi8uLi8u
 Li9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvdW53aW5k
 LWN4eC5oIiAyCgpuYW1lc3BhY2UgX19jeHhhYml2MQp7CgoKCgoKc3RydWN0IF9fY3hhX2V4
 Y2VwdGlvbgp7CgogIHN0ZDo6dHlwZV9pbmZvICpleGNlcHRpb25UeXBlOwogIHZvaWQgKCpl
 eGNlcHRpb25EZXN0cnVjdG9yKSh2b2lkICopOwoKCgogIHN0ZDo6dW5leHBlY3RlZF9oYW5k
 bGVyIHVuZXhwZWN0ZWRIYW5kbGVyOwogIHN0ZDo6dGVybWluYXRlX2hhbmRsZXIgdGVybWlu
 YXRlSGFuZGxlcjsKCgogIF9fY3hhX2V4Y2VwdGlvbiAqbmV4dEV4Y2VwdGlvbjsKCgoKICBp
 bnQgaGFuZGxlckNvdW50OwoKCgogIGludCBoYW5kbGVyU3dpdGNoVmFsdWU7CiAgY29uc3Qg
 dW5zaWduZWQgY2hhciAqYWN0aW9uUmVjb3JkOwogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmxh
 bmd1YWdlU3BlY2lmaWNEYXRhOwogIHZvaWQgKmNhdGNoVGVtcDsKICB2b2lkICphZGp1c3Rl
 ZFB0cjsKCgogIF9VbndpbmRfRXhjZXB0aW9uIHVud2luZEhlYWRlcjsKfTsKCgpzdHJ1Y3Qg
 X19jeGFfZWhfZ2xvYmFscwp7CiAgX19jeGFfZXhjZXB0aW9uICpjYXVnaHRFeGNlcHRpb25z
 OwogIHVuc2lnbmVkIGludCB1bmNhdWdodEV4Y2VwdGlvbnM7Cn07CgoKCgoKCmV4dGVybiAi
 QyIgX19jeGFfZWhfZ2xvYmFscyAqX19jeGFfZ2V0X2dsb2JhbHMgKCkgdGhyb3coKTsKZXh0
 ZXJuICJDIiBfX2N4YV9laF9nbG9iYWxzICpfX2N4YV9nZXRfZ2xvYmFsc19mYXN0ICgpIHRo
 cm93KCk7CgoKZXh0ZXJuICJDIiB2b2lkICpfX2N4YV9hbGxvY2F0ZV9leGNlcHRpb24oc3Rk
 OjpzaXplX3QgdGhyb3duX3NpemUpIHRocm93KCk7CgoKZXh0ZXJuICJDIiB2b2lkIF9fY3hh
 X2ZyZWVfZXhjZXB0aW9uKHZvaWQgKnRocm93bl9leGNlcHRpb24pIHRocm93KCk7CgoKZXh0
 ZXJuICJDIiB2b2lkIF9fY3hhX3Rocm93ICh2b2lkICp0aHJvd25fZXhjZXB0aW9uLAogICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dHlwZV9pbmZvICp0aW5mbywKICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqZGVzdCkgKHZvaWQgKikpCiAgICAgX19h
 dHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKCgpleHRlcm4gIkMiIHZvaWQgKl9fY3hhX2JlZ2lu
 X2NhdGNoICh2b2lkICopIHRocm93KCk7CmV4dGVybiAiQyIgdm9pZCBfX2N4YV9lbmRfY2F0
 Y2ggKCk7CmV4dGVybiAiQyIgdm9pZCBfX2N4YV9yZXRocm93ICgpIF9fYXR0cmlidXRlX18o
 KG5vcmV0dXJuKSk7CgoKZXh0ZXJuICJDIiB2b2lkIF9fY3hhX2JhZF9jYXN0ICgpOwpleHRl
 cm4gIkMiIHZvaWQgX19jeGFfYmFkX3R5cGVpZCAoKTsKCgoKCgoKZXh0ZXJuICJDIiB2b2lk
 IF9fY3hhX2NhbGxfdW5leHBlY3RlZCAodm9pZCAqKSBfX2F0dHJpYnV0ZV9fKChub3JldHVy
 bikpOwoKCgpleHRlcm4gdm9pZCBfX3Rlcm1pbmF0ZShzdGQ6OnRlcm1pbmF0ZV9oYW5kbGVy
 KSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwpleHRlcm4gdm9pZCBfX3VuZXhwZWN0ZWQo
 c3RkOjp1bmV4cGVjdGVkX2hhbmRsZXIpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CgoK
 ZXh0ZXJuIHN0ZDo6dGVybWluYXRlX2hhbmRsZXIgX190ZXJtaW5hdGVfaGFuZGxlcjsKZXh0
 ZXJuIHN0ZDo6dW5leHBlY3RlZF9oYW5kbGVyIF9fdW5leHBlY3RlZF9oYW5kbGVyOwoKCgoK
 Y29uc3QgX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MgX19neHhfZXhjZXB0aW9uX2NsYXNzCj0g
 KCgoKCgoKChfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcykgJ0cnCiAgICAgICAgIDw8IDggfCAo
 X1Vud2luZF9FeGNlcHRpb25fQ2xhc3MpICdOJykKICAgICAgICA8PCA4IHwgKF9VbndpbmRf
 RXhjZXB0aW9uX0NsYXNzKSAnVScpCiAgICAgICA8PCA4IHwgKF9VbndpbmRfRXhjZXB0aW9u
 X0NsYXNzKSAnQycpCiAgICAgIDw8IDggfCAoX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MpICdD
 JykKICAgICA8PCA4IHwgKF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzKSAnKycpCiAgICA8PCA4
 IHwgKF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzKSAnKycpCiAgIDw8IDggfCAoX1Vud2luZF9F
 eGNlcHRpb25fQ2xhc3MpICdcMCcpOwoKCmV4dGVybiAiQyIgX1Vud2luZF9SZWFzb25fQ29k
 ZSBfX2d4eF9wZXJzb25hbGl0eV92MAogICAgIChpbnQsIF9VbndpbmRfQWN0aW9uLCBfVW53
 aW5kX0V4Y2VwdGlvbl9DbGFzcywKICAgICAgc3RydWN0IF9VbndpbmRfRXhjZXB0aW9uICos
 IHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CgoKZXh0ZXJuICJDIiBfVW53aW5kX1JlYXNv
 bl9Db2RlIF9fZ3h4X3BlcnNvbmFsaXR5X3NqMAogICAgIChpbnQsIF9VbndpbmRfQWN0aW9u
 LCBfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcywKICAgICAgc3RydWN0IF9VbndpbmRfRXhjZXB0
 aW9uICosIHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CgoKc3RhdGljIGlubGluZSBfX2N4
 YV9leGNlcHRpb24gKgpfX2dldF9leGNlcHRpb25faGVhZGVyX2Zyb21fb2JqICh2b2lkICpw
 dHIpCnsKICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxfX2N4YV9leGNlcHRpb24gKj4ocHRy
 KSAtIDE7Cn0KCgpzdGF0aWMgaW5saW5lIF9fY3hhX2V4Y2VwdGlvbiAqCl9fZ2V0X2V4Y2Vw
 dGlvbl9oZWFkZXJfZnJvbV91ZSAoX1Vud2luZF9FeGNlcHRpb24gKmV4YykKewogIHJldHVy
 biByZWludGVycHJldF9jYXN0PF9fY3hhX2V4Y2VwdGlvbiAqPihleGMgKyAxKSAtIDE7Cn0K
 Cn0KIyAzNSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIwNjI1MTYwMC9saWJzdGRj
 KystdjMvbGlic3VwYysrL2VoX3BlcnNvbmFsaXR5LmNjIiAyCgp1c2luZyBuYW1lc3BhY2Ug
 X19jeHhhYml2MTsKCiMgMSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIwMDIwNjI1MTYw
 MC9nY2MvdW53aW5kLXBlLmgiIDEKIyA1OSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS4xLTIw
 MDIwNjI1MTYwMC9nY2MvdW53aW5kLXBlLmgiCnN0YXRpYyB1bnNpZ25lZCBpbnQKc2l6ZV9v
 Zl9lbmNvZGVkX3ZhbHVlICh1bnNpZ25lZCBjaGFyIGVuY29kaW5nKQp7CiAgaWYgKGVuY29k
 aW5nID09IDB4ZmYpCiAgICByZXR1cm4gMDsKCiAgc3dpdGNoIChlbmNvZGluZyAmIDB4MDcp
 CiAgICB7CiAgICBjYXNlIDB4MDA6CiAgICAgIHJldHVybiBzaXplb2YgKHZvaWQgKik7CiAg
 ICBjYXNlIDB4MDI6CiAgICAgIHJldHVybiAyOwogICAgY2FzZSAweDAzOgogICAgICByZXR1
 cm4gNDsKICAgIGNhc2UgMHgwNDoKICAgICAgcmV0dXJuIDg7CiAgICB9CiAgc3RkOjphYm9y
 dCAoKTsKfQojIDg2ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLjEtMjAwMjA2MjUxNjAwL2dj
 Yy91bndpbmQtcGUuaCIKc3RhdGljIF9VbndpbmRfUHRyCmJhc2Vfb2ZfZW5jb2RlZF92YWx1
 ZSAodW5zaWduZWQgY2hhciBlbmNvZGluZywgc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29u
 dGV4dCkKewogIGlmIChlbmNvZGluZyA9PSAweGZmKQogICAgcmV0dXJuIDA7CgogIHN3aXRj
 aCAoZW5jb2RpbmcgJiAweDcwKQogICAgewogICAgY2FzZSAweDAwOgogICAgY2FzZSAweDEw
 OgogICAgY2FzZSAweDUwOgogICAgICByZXR1cm4gMDsKCiAgICBjYXNlIDB4MjA6CiAgICAg
 IHJldHVybiBfVW53aW5kX0dldFRleHRSZWxCYXNlIChjb250ZXh0KTsKICAgIGNhc2UgMHgz
 MDoKICAgICAgcmV0dXJuIF9VbndpbmRfR2V0RGF0YVJlbEJhc2UgKGNvbnRleHQpOwogICAg
 Y2FzZSAweDQwOgogICAgICByZXR1cm4gX1Vud2luZF9HZXRSZWdpb25TdGFydCAoY29udGV4
 dCk7CiAgICB9CiAgc3RkOjphYm9ydCAoKTsKfQojIDExNiAiLi4vLi4vLi4vLi4vLi4vZ2Nj
 LTMuMS4xLTIwMDIwNjI1MTYwMC9nY2MvdW53aW5kLXBlLmgiCnN0YXRpYyBjb25zdCB1bnNp
 Z25lZCBjaGFyICoKcmVhZF91bGViMTI4IChjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBfVW53
 aW5kX1dvcmQgKnZhbCkKewogIHVuc2lnbmVkIGludCBzaGlmdCA9IDA7CiAgdW5zaWduZWQg
 Y2hhciBieXRlOwogIF9VbndpbmRfV29yZCByZXN1bHQ7CgogIHJlc3VsdCA9IDA7CiAgZG8K
 ICAgIHsKICAgICAgYnl0ZSA9ICpwKys7CiAgICAgIHJlc3VsdCB8PSAoYnl0ZSAmIDB4N2Yp
 IDw8IHNoaWZ0OwogICAgICBzaGlmdCArPSA3OwogICAgfQogIHdoaWxlIChieXRlICYgMHg4
 MCk7CgogICp2YWwgPSByZXN1bHQ7CiAgcmV0dXJuIHA7Cn0KCgoKc3RhdGljIGNvbnN0IHVu
 c2lnbmVkIGNoYXIgKgpyZWFkX3NsZWIxMjggKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIF9V
 bndpbmRfU3dvcmQgKnZhbCkKewogIHVuc2lnbmVkIGludCBzaGlmdCA9IDA7CiAgdW5zaWdu
 ZWQgY2hhciBieXRlOwogIF9VbndpbmRfV29yZCByZXN1bHQ7CgogIHJlc3VsdCA9IDA7CiAg
 ZG8KICAgIHsKICAgICAgYnl0ZSA9ICpwKys7CiAgICAgIHJlc3VsdCB8PSAoYnl0ZSAmIDB4
 N2YpIDw8IHNoaWZ0OwogICAgICBzaGlmdCArPSA3OwogICAgfQogIHdoaWxlIChieXRlICYg
 MHg4MCk7CgoKICBpZiAoc2hpZnQgPCA4ICogc2l6ZW9mKHJlc3VsdCkgJiYgKGJ5dGUgJiAw
 eDQwKSAhPSAwKQogICAgcmVzdWx0IHw9IC0oMUwgPDwgc2hpZnQpOwoKICAqdmFsID0gKF9V
 bndpbmRfU3dvcmQpIHJlc3VsdDsKICByZXR1cm4gcDsKfQoKCgoKCnN0YXRpYyBjb25zdCB1
 bnNpZ25lZCBjaGFyICoKcmVhZF9lbmNvZGVkX3ZhbHVlX3dpdGhfYmFzZSAodW5zaWduZWQg
 Y2hhciBlbmNvZGluZywgX1Vud2luZF9QdHIgYmFzZSwKICAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcCwgX1Vud2luZF9QdHIgKnZhbCkKewog
 IHVuaW9uIHVuYWxpZ25lZAogICAgewogICAgICB2b2lkICpwdHI7CiAgICAgIHVuc2lnbmVk
 IHUyIF9fYXR0cmlidXRlX18gKChtb2RlIChISSkpKTsKICAgICAgdW5zaWduZWQgdTQgX19h
 dHRyaWJ1dGVfXyAoKG1vZGUgKFNJKSkpOwogICAgICB1bnNpZ25lZCB1OCBfX2F0dHJpYnV0
 ZV9fICgobW9kZSAoREkpKSk7CiAgICAgIHNpZ25lZCBzMiBfX2F0dHJpYnV0ZV9fICgobW9k
 ZSAoSEkpKSk7CiAgICAgIHNpZ25lZCBzNCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoU0kpKSk7
 CiAgICAgIHNpZ25lZCBzOCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoREkpKSk7CiAgICB9IF9f
 YXR0cmlidXRlX18oKF9fcGFja2VkX18pKTsKCiAgdW5pb24gdW5hbGlnbmVkICp1ID0gKHVu
 aW9uIHVuYWxpZ25lZCAqKSBwOwogIF9VbndpbmRfUHRyIHJlc3VsdDsKCiAgaWYgKGVuY29k
 aW5nID09IDB4NTApCiAgICB7CiAgICAgIF9VbndpbmRfUHRyIGEgPSAoX1Vud2luZF9QdHIp
 IHA7CiAgICAgIGEgPSAoYSArIHNpemVvZiAodm9pZCAqKSAtIDEpICYgLSBzaXplb2Yodm9p
 ZCAqKTsKICAgICAgcmVzdWx0ID0gKihfVW53aW5kX1B0ciAqKSBhOwogICAgICBwID0gKGNv
 bnN0IHVuc2lnbmVkIGNoYXIgKikgKGEgKyBzaXplb2YgKHZvaWQgKikpOwogICAgfQogIGVs
 c2UKICAgIHsKICAgICAgc3dpdGNoIChlbmNvZGluZyAmIDB4MGYpCiAgICAgICAgewogICAg
 ICAgIGNhc2UgMHgwMDoKICAgICAgICAgIHJlc3VsdCA9IChfVW53aW5kX1B0cikgdS0+cHRy
 OwogICAgICAgICAgcCArPSBzaXplb2YgKHZvaWQgKik7CiAgICAgICAgICBicmVhazsKCiAg
 ICAgICAgY2FzZSAweDAxOgogICAgICAgICAgewogICAgICAgICAgICBfVW53aW5kX1dvcmQg
 dG1wOwogICAgICAgICAgICBwID0gcmVhZF91bGViMTI4IChwLCAmdG1wKTsKICAgICAgICAg
 ICAgcmVzdWx0ID0gKF9VbndpbmRfUHRyKSB0bXA7CiAgICAgICAgICB9CiAgICAgICAgICBi
 cmVhazsKCiAgICAgICAgY2FzZSAweDA5OgogICAgICAgICAgewogICAgICAgICAgICBfVW53
 aW5kX1N3b3JkIHRtcDsKICAgICAgICAgICAgcCA9IHJlYWRfc2xlYjEyOCAocCwgJnRtcCk7
 CiAgICAgICAgICAgIHJlc3VsdCA9IChfVW53aW5kX1B0cikgdG1wOwogICAgICAgICAgfQog
 ICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMHgwMjoKICAgICAgICAgIHJlc3VsdCA9
 IHUtPnUyOwogICAgICAgICAgcCArPSAyOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2Fz
 ZSAweDAzOgogICAgICAgICAgcmVzdWx0ID0gdS0+dTQ7CiAgICAgICAgICBwICs9IDQ7CiAg
 ICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDB4MDQ6CiAgICAgICAgICByZXN1bHQgPSB1
 LT51ODsKICAgICAgICAgIHAgKz0gODsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNl
 IDB4MEE6CiAgICAgICAgICByZXN1bHQgPSB1LT5zMjsKICAgICAgICAgIHAgKz0gMjsKICAg
 ICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMHgwQjoKICAgICAgICAgIHJlc3VsdCA9IHUt
 PnM0OwogICAgICAgICAgcCArPSA0OwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAw
 eDBDOgogICAgICAgICAgcmVzdWx0ID0gdS0+czg7CiAgICAgICAgICBwICs9IDg7CiAgICAg
 ICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHN0ZDo6YWJvcnQgKCk7
 CiAgICAgICAgfQoKICAgICAgaWYgKHJlc3VsdCAhPSAwKQogICAgICAgIHsKICAgICAgICAg
 IHJlc3VsdCArPSAoKGVuY29kaW5nICYgMHg3MCkgPT0gMHgxMAogICAgICAgICAgICAgICAg
 ICAgICA/IChfVW53aW5kX1B0cikgdSA6IGJhc2UpOwogICAgICAgICAgaWYgKGVuY29kaW5n
 ICYgMHg4MCkKICAgICAgICAgICAgcmVzdWx0ID0gKihfVW53aW5kX1B0ciAqKSByZXN1bHQ7
 CiAgICAgICAgfQogICAgfQoKICAqdmFsID0gcmVzdWx0OwogIHJldHVybiBwOwp9CgoKCgoK
 CnN0YXRpYyBpbmxpbmUgY29uc3QgdW5zaWduZWQgY2hhciAqCnJlYWRfZW5jb2RlZF92YWx1
 ZSAoc3RydWN0IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgdW5zaWduZWQgY2hhciBlbmNv
 ZGluZywKICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBfVW53
 aW5kX1B0ciAqdmFsKQp7CiAgcmV0dXJuIHJlYWRfZW5jb2RlZF92YWx1ZV93aXRoX2Jhc2Ug
 KGVuY29kaW5nLAogICAgICAgICAgICAgICAgYmFzZV9vZl9lbmNvZGVkX3ZhbHVlIChlbmNv
 ZGluZywgY29udGV4dCksCiAgICAgICAgICAgICAgICBwLCB2YWwpOwp9CiMgMzkgIi4uLy4u
 Ly4uLy4uLy4uL2djYy0zLjEuMS0yMDAyMDYyNTE2MDAvbGlic3RkYysrLXYzL2xpYnN1cGMr
 Ky9laF9wZXJzb25hbGl0eS5jYyIgMgoKCnN0cnVjdCBsc2RhX2hlYWRlcl9pbmZvCnsKICBf
 VW53aW5kX1B0ciBTdGFydDsKICBfVW53aW5kX1B0ciBMUFN0YXJ0OwogIF9VbndpbmRfUHRy
 IHR0eXBlX2Jhc2U7CiAgY29uc3QgdW5zaWduZWQgY2hhciAqVFR5cGU7CiAgY29uc3QgdW5z
 aWduZWQgY2hhciAqYWN0aW9uX3RhYmxlOwogIHVuc2lnbmVkIGNoYXIgdHR5cGVfZW5jb2Rp
 bmc7CiAgdW5zaWduZWQgY2hhciBjYWxsX3NpdGVfZW5jb2Rpbmc7Cn07CgpzdGF0aWMgY29u
 c3QgdW5zaWduZWQgY2hhciAqCnBhcnNlX2xzZGFfaGVhZGVyIChfVW53aW5kX0NvbnRleHQg
 KmNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsCiAgICAgICAgICAgICAgICAgICBs
 c2RhX2hlYWRlcl9pbmZvICppbmZvKQp7CiAgX1Vud2luZF9Xb3JkIHRtcDsKICB1bnNpZ25l
 ZCBjaGFyIGxwc3RhcnRfZW5jb2Rpbmc7CgogIGluZm8tPlN0YXJ0ID0gKGNvbnRleHQgPyBf
 VW53aW5kX0dldFJlZ2lvblN0YXJ0IChjb250ZXh0KSA6IDApOwoKCiAgbHBzdGFydF9lbmNv
 ZGluZyA9ICpwKys7CiAgaWYgKGxwc3RhcnRfZW5jb2RpbmcgIT0gMHhmZikKICAgIHAgPSBy
 ZWFkX2VuY29kZWRfdmFsdWUgKGNvbnRleHQsIGxwc3RhcnRfZW5jb2RpbmcsIHAsICZpbmZv
 LT5MUFN0YXJ0KTsKICBlbHNlCiAgICBpbmZvLT5MUFN0YXJ0ID0gaW5mby0+U3RhcnQ7CgoK
 ICBpbmZvLT50dHlwZV9lbmNvZGluZyA9ICpwKys7CiAgaWYgKGluZm8tPnR0eXBlX2VuY29k
 aW5nICE9IDB4ZmYpCiAgICB7CiAgICAgIHAgPSByZWFkX3VsZWIxMjggKHAsICZ0bXApOwog
 ICAgICBpbmZvLT5UVHlwZSA9IHAgKyB0bXA7CiAgICB9CiAgZWxzZQogICAgaW5mby0+VFR5
 cGUgPSAwOwoKCgogIGluZm8tPmNhbGxfc2l0ZV9lbmNvZGluZyA9ICpwKys7CiAgcCA9IHJl
 YWRfdWxlYjEyOCAocCwgJnRtcCk7CiAgaW5mby0+YWN0aW9uX3RhYmxlID0gcCArIHRtcDsK
 CiAgcmV0dXJuIHA7Cn0KCnN0YXRpYyBjb25zdCBzdGQ6OnR5cGVfaW5mbyAqCmdldF90dHlw
 ZV9lbnRyeSAobHNkYV9oZWFkZXJfaW5mbyAqaW5mbywgX1Vud2luZF9Xb3JkIGkpCnsKICBf
 VW53aW5kX1B0ciBwdHI7CgogIGkgKj0gc2l6ZV9vZl9lbmNvZGVkX3ZhbHVlIChpbmZvLT50
 dHlwZV9lbmNvZGluZyk7CiAgcmVhZF9lbmNvZGVkX3ZhbHVlX3dpdGhfYmFzZSAoaW5mby0+
 dHR5cGVfZW5jb2RpbmcsIGluZm8tPnR0eXBlX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAg
 ICAgICAgICAgICAgaW5mby0+VFR5cGUgLSBpLCAmcHRyKTsKCiAgcmV0dXJuIHJlaW50ZXJw
 cmV0X2Nhc3Q8Y29uc3Qgc3RkOjp0eXBlX2luZm8gKj4ocHRyKTsKfQoKCgoKCgpzdGF0aWMg
 Ym9vbApnZXRfYWRqdXN0ZWRfcHRyIChjb25zdCBzdGQ6OnR5cGVfaW5mbyAqY2F0Y2hfdHlw
 ZSwKICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gKnRocm93X3R5cGUs
 CiAgICAgICAgICAgICAgICAgIHZvaWQgKip0aHJvd25fcHRyX3ApCnsKICB2b2lkICp0aHJv
 d25fcHRyID0gKnRocm93bl9wdHJfcDsKCgoKCgogIGlmICh0aHJvd190eXBlLT5fX2lzX3Bv
 aW50ZXJfcCAoKSkKICAgIHRocm93bl9wdHIgPSAqKHZvaWQgKiopIHRocm93bl9wdHI7Cgog
 IGlmIChjYXRjaF90eXBlLT5fX2RvX2NhdGNoICh0aHJvd190eXBlLCAmdGhyb3duX3B0ciwg
 MSkpCiAgICB7CiAgICAgICp0aHJvd25fcHRyX3AgPSB0aHJvd25fcHRyOwogICAgICByZXR1
 cm4gdHJ1ZTsKICAgIH0KCiAgcmV0dXJuIGZhbHNlOwp9CgpzdGF0aWMgYm9vbApjaGVja19l
 eGNlcHRpb25fc3BlYyAobHNkYV9oZWFkZXJfaW5mbyAqaW5mbywgY29uc3Qgc3RkOjp0eXBl
 X2luZm8gKnRocm93X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0aHJvd25f
 cHRyLCBfVW53aW5kX1N3b3JkIGZpbHRlcl92YWx1ZSkKewogIGNvbnN0IHVuc2lnbmVkIGNo
 YXIgKmUgPSBpbmZvLT5UVHlwZSAtIGZpbHRlcl92YWx1ZSAtIDE7CgogIHdoaWxlICgxKQog
 ICAgewogICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAqY2F0Y2hfdHlwZTsKICAgICAgX1Vu
 d2luZF9Xb3JkIHRtcDsKCiAgICAgIGUgPSByZWFkX3VsZWIxMjggKGUsICZ0bXApOwoKCgog
 ICAgICBpZiAodG1wID09IDApCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKCiAgICAgIGNhdGNo
 X3R5cGUgPSBnZXRfdHR5cGVfZW50cnkgKGluZm8sIHRtcCk7CgoKCgoKICAgICAgaWYgKGdl
 dF9hZGp1c3RlZF9wdHIgKGNhdGNoX3R5cGUsIHRocm93X3R5cGUsICZ0aHJvd25fcHRyKSkK
 ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQojIDE2NiAiLi4vLi4vLi4vLi4vLi4vZ2Nj
 LTMuMS4xLTIwMDIwNjI1MTYwMC9saWJzdGRjKystdjMvbGlic3VwYysrL2VoX3BlcnNvbmFs
 aXR5LmNjIgpleHRlcm4gIkMiIF9VbndpbmRfUmVhc29uX0NvZGUKX19neHhfcGVyc29uYWxp
 dHlfdjAgKGludCB2ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgX1Vud2luZF9BY3Rp
 b24gYWN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgIF9VbndpbmRfRXhjZXB0aW9uX0Ns
 YXNzIGV4Y2VwdGlvbl9jbGFzcywKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfVW53
 aW5kX0V4Y2VwdGlvbiAqdWVfaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgc3RydWN0
 IF9VbndpbmRfQ29udGV4dCAqY29udGV4dCkKewogIF9fY3hhX2V4Y2VwdGlvbiAqeGggPSBf
 X2dldF9leGNlcHRpb25faGVhZGVyX2Zyb21fdWUgKHVlX2hlYWRlcik7CgogIGVudW0gZm91
 bmRfaGFuZGxlcl90eXBlCiAgewogICAgZm91bmRfbm90aGluZywKICAgIGZvdW5kX3Rlcm1p
 bmF0ZSwKICAgIGZvdW5kX2NsZWFudXAsCiAgICBmb3VuZF9oYW5kbGVyCiAgfSBmb3VuZF90
 eXBlOwoKICBsc2RhX2hlYWRlcl9pbmZvIGluZm87CiAgY29uc3QgdW5zaWduZWQgY2hhciAq
 bGFuZ3VhZ2Vfc3BlY2lmaWNfZGF0YTsKICBjb25zdCB1bnNpZ25lZCBjaGFyICphY3Rpb25f
 cmVjb3JkOwogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CiAgX1Vud2luZF9QdHIgbGFuZGlu
 Z19wYWQsIGlwOwogIGludCBoYW5kbGVyX3N3aXRjaF92YWx1ZTsKICB2b2lkICp0aHJvd25f
 cHRyID0geGggKyAxOwoKCiAgaWYgKHZlcnNpb24gIT0gMSkKICAgIHJldHVybiBfVVJDX0ZB
 VEFMX1BIQVNFMV9FUlJPUjsKCgogIGlmIChhY3Rpb25zID09ICgyIHwgNCkKICAgICAgJiYg
 ZXhjZXB0aW9uX2NsYXNzID09IF9fZ3h4X2V4Y2VwdGlvbl9jbGFzcykKICAgIHsKICAgICAg
 aGFuZGxlcl9zd2l0Y2hfdmFsdWUgPSB4aC0+aGFuZGxlclN3aXRjaFZhbHVlOwogICAgICBs
 YW5kaW5nX3BhZCA9IChfVW53aW5kX1B0cikgeGgtPmNhdGNoVGVtcDsKICAgICAgZm91bmRf
 dHlwZSA9IChsYW5kaW5nX3BhZCA9PSAwID8gZm91bmRfdGVybWluYXRlIDogZm91bmRfaGFu
 ZGxlcik7CiAgICAgIGdvdG8gaW5zdGFsbF9jb250ZXh0OwogICAgfQoKICBsYW5ndWFnZV9z
 cGVjaWZpY19kYXRhID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikKICAgIF9VbndpbmRfR2V0
 TGFuZ3VhZ2VTcGVjaWZpY0RhdGEgKGNvbnRleHQpOwoKCiAgaWYgKCEgbGFuZ3VhZ2Vfc3Bl
 Y2lmaWNfZGF0YSkKICAgIHJldHVybiBfVVJDX0NPTlRJTlVFX1VOV0lORDsKCgogIHAgPSBw
 YXJzZV9sc2RhX2hlYWRlciAoY29udGV4dCwgbGFuZ3VhZ2Vfc3BlY2lmaWNfZGF0YSwgJmlu
 Zm8pOwogIGluZm8udHR5cGVfYmFzZSA9IGJhc2Vfb2ZfZW5jb2RlZF92YWx1ZSAoaW5mby50
 dHlwZV9lbmNvZGluZywgY29udGV4dCk7CiAgaXAgPSBfVW53aW5kX0dldElQIChjb250ZXh0
 KSAtIDE7CiAgbGFuZGluZ19wYWQgPSAwOwogIGFjdGlvbl9yZWNvcmQgPSAwOwogIGhhbmRs
 ZXJfc3dpdGNoX3ZhbHVlID0gMDsKIyAyNTAgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEuMS0y
 MDAyMDYyNTE2MDAvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9laF9wZXJzb25hbGl0eS5jYyIK
 ICB3aGlsZSAocCA8IGluZm8uYWN0aW9uX3RhYmxlKQogICAgewogICAgICBfVW53aW5kX1B0
 ciBjc19zdGFydCwgY3NfbGVuLCBjc19scDsKICAgICAgX1Vud2luZF9Xb3JkIGNzX2FjdGlv
 bjsKCgogICAgICBwID0gcmVhZF9lbmNvZGVkX3ZhbHVlICgwLCBpbmZvLmNhbGxfc2l0ZV9l
 bmNvZGluZywgcCwgJmNzX3N0YXJ0KTsKICAgICAgcCA9IHJlYWRfZW5jb2RlZF92YWx1ZSAo
 MCwgaW5mby5jYWxsX3NpdGVfZW5jb2RpbmcsIHAsICZjc19sZW4pOwogICAgICBwID0gcmVh
 ZF9lbmNvZGVkX3ZhbHVlICgwLCBpbmZvLmNhbGxfc2l0ZV9lbmNvZGluZywgcCwgJmNzX2xw
 KTsKICAgICAgcCA9IHJlYWRfdWxlYjEyOCAocCwgJmNzX2FjdGlvbik7CgoKICAgICAgaWYg
 KGlwIDwgaW5mby5TdGFydCArIGNzX3N0YXJ0KQogICAgICAgIHAgPSBpbmZvLmFjdGlvbl90
 YWJsZTsKICAgICAgZWxzZSBpZiAoaXAgPCBpbmZvLlN0YXJ0ICsgY3Nfc3RhcnQgKyBjc19s
 ZW4pCiAgICAgICAgewogICAgICAgICAgaWYgKGNzX2xwKQogICAgICAgICAgICBsYW5kaW5n
 X3BhZCA9IGluZm8uTFBTdGFydCArIGNzX2xwOwogICAgICAgICAgaWYgKGNzX2FjdGlvbikK
 ICAgICAgICAgICAgYWN0aW9uX3JlY29yZCA9IGluZm8uYWN0aW9uX3RhYmxlICsgY3NfYWN0
 aW9uIC0gMTsKICAgICAgICAgIGdvdG8gZm91bmRfc29tZXRoaW5nOwogICAgICAgIH0KICAg
 IH0KCgoKCgogIGZvdW5kX3R5cGUgPSAoYWN0aW9ucyAmIDggPyBmb3VuZF9ub3RoaW5nIDog
 Zm91bmRfdGVybWluYXRlKTsKICBnb3RvIGRvX3NvbWV0aGluZzsKCiBmb3VuZF9zb21ldGhp
 bmc6CiAgaWYgKGxhbmRpbmdfcGFkID09IDApCiAgICB7CgoKICAgICAgZm91bmRfdHlwZSA9
 IGZvdW5kX25vdGhpbmc7CiAgICB9CiAgZWxzZSBpZiAoYWN0aW9uX3JlY29yZCA9PSAwKQog
 ICAgewoKCgogICAgICBmb3VuZF90eXBlID0gZm91bmRfY2xlYW51cDsKICAgIH0KICBlbHNl
 CiAgICB7CgoKICAgICAgX1Vud2luZF9Td29yZCBhcl9maWx0ZXIsIGFyX2Rpc3A7CiAgICAg
 IGNvbnN0IHN0ZDo6dHlwZV9pbmZvICp0aHJvd190eXBlLCAqY2F0Y2hfdHlwZTsKICAgICAg
 Ym9vbCBzYXdfY2xlYW51cCA9IGZhbHNlOwogICAgICBib29sIHNhd19oYW5kbGVyID0gZmFs
 c2U7CgoKCgoKICAgICAgaWYgKChhY3Rpb25zICYgOCkKICAgICAgICAgIHx8IGV4Y2VwdGlv
 bl9jbGFzcyAhPSBfX2d4eF9leGNlcHRpb25fY2xhc3MpCiAgICAgICAgdGhyb3dfdHlwZSA9
 IDA7CiAgICAgIGVsc2UKICAgICAgICB0aHJvd190eXBlID0geGgtPmV4Y2VwdGlvblR5cGU7
 CgogICAgICB3aGlsZSAoMSkKICAgICAgICB7CiAgICAgICAgICBwID0gYWN0aW9uX3JlY29y
 ZDsKICAgICAgICAgIHAgPSByZWFkX3NsZWIxMjggKHAsICZhcl9maWx0ZXIpOwogICAgICAg
 ICAgcmVhZF9zbGViMTI4IChwLCAmYXJfZGlzcCk7CgogICAgICAgICAgaWYgKGFyX2ZpbHRl
 ciA9PSAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgIHNhd19jbGVhbnVwID0gdHJ1
 ZTsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoYXJfZmlsdGVyID4gMCkKICAg
 ICAgICAgICAgewoKICAgICAgICAgICAgICBjYXRjaF90eXBlID0gZ2V0X3R0eXBlX2VudHJ5
 ICgmaW5mbywgYXJfZmlsdGVyKTsKCgoKICAgICAgICAgICAgICBpZiAoISBjYXRjaF90eXBl
 KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBpZiAoIShhY3Rpb25zICYg
 OCkpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgc2F3X2hh
 bmRsZXIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
 ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgaWYgKHRo
 cm93X3R5cGUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGlmIChnZXRf
 YWRqdXN0ZWRfcHRyIChjYXRjaF90eXBlLCB0aHJvd190eXBlLCAmdGhyb3duX3B0cikpCiAg
 ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgc2F3X2hhbmRsZXIg
 PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
 ICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAg
 ICAgICAgICAgIHsKCgoKCiAgICAgICAgICAgICAgaWYgKHRocm93X3R5cGUKICAgICAgICAg
 ICAgICAgICAgJiYgISBjaGVja19leGNlcHRpb25fc3BlYyAoJmluZm8sIHRocm93X3R5cGUs
 IHRocm93bl9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
 ICAgIGFyX2ZpbHRlcikpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHNh
 d19oYW5kbGVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
 ICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICBpZiAoYXJfZGlzcCA9PSAwKQogICAg
 ICAgICAgICBicmVhazsKICAgICAgICAgIGFjdGlvbl9yZWNvcmQgPSBwICsgYXJfZGlzcDsK
 ICAgICAgICB9CgogICAgICBpZiAoc2F3X2hhbmRsZXIpCiAgICAgICAgewogICAgICAgICAg
 aGFuZGxlcl9zd2l0Y2hfdmFsdWUgPSBhcl9maWx0ZXI7CiAgICAgICAgICBmb3VuZF90eXBl
 ID0gZm91bmRfaGFuZGxlcjsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICBmb3VuZF90
 eXBlID0gKHNhd19jbGVhbnVwID8gZm91bmRfY2xlYW51cCA6IGZvdW5kX25vdGhpbmcpOwog
 ICAgfQoKIGRvX3NvbWV0aGluZzoKICAgaWYgKGZvdW5kX3R5cGUgPT0gZm91bmRfbm90aGlu
 ZykKICAgICByZXR1cm4gX1VSQ19DT05USU5VRV9VTldJTkQ7CgogIGlmIChhY3Rpb25zICYg
 MSkKICAgIHsKICAgICAgaWYgKGZvdW5kX3R5cGUgPT0gZm91bmRfY2xlYW51cCkKICAgICAg
 ICByZXR1cm4gX1VSQ19DT05USU5VRV9VTldJTkQ7CgoKICAgICAgaWYgKGV4Y2VwdGlvbl9j
 bGFzcyA9PSBfX2d4eF9leGNlcHRpb25fY2xhc3MpCiAgICAgICAgewogICAgICAgICAgeGgt
 PmhhbmRsZXJTd2l0Y2hWYWx1ZSA9IGhhbmRsZXJfc3dpdGNoX3ZhbHVlOwogICAgICAgICAg
 eGgtPmFjdGlvblJlY29yZCA9IGFjdGlvbl9yZWNvcmQ7CiAgICAgICAgICB4aC0+bGFuZ3Vh
 Z2VTcGVjaWZpY0RhdGEgPSBsYW5ndWFnZV9zcGVjaWZpY19kYXRhOwogICAgICAgICAgeGgt
 PmFkanVzdGVkUHRyID0gdGhyb3duX3B0cjsKCgoKICAgICAgICAgIHhoLT5jYXRjaFRlbXAg
 PSAodm9pZCAqKSAoX1Vud2luZF9QdHIpIGxhbmRpbmdfcGFkOwogICAgICAgIH0KICAgICAg
 cmV0dXJuIF9VUkNfSEFORExFUl9GT1VORDsKICAgIH0KCiBpbnN0YWxsX2NvbnRleHQ6CiAg
 aWYgKGZvdW5kX3R5cGUgPT0gZm91bmRfdGVybWluYXRlKQogICAgewogICAgICBfX2N4YV9i
 ZWdpbl9jYXRjaCAoJnhoLT51bndpbmRIZWFkZXIpOwogICAgICBfX3Rlcm1pbmF0ZSAoeGgt
 PnRlcm1pbmF0ZUhhbmRsZXIpOwogICAgfQoKCgogIGlmIChoYW5kbGVyX3N3aXRjaF92YWx1
 ZSA8IDApCiAgICB7CiAgICAgIHBhcnNlX2xzZGFfaGVhZGVyIChjb250ZXh0LCB4aC0+bGFu
 Z3VhZ2VTcGVjaWZpY0RhdGEsICZpbmZvKTsKICAgICAgeGgtPmNhdGNoVGVtcCA9ICh2b2lk
 ICopIGJhc2Vfb2ZfZW5jb2RlZF92YWx1ZSAoaW5mby50dHlwZV9lbmNvZGluZywKICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
 dCk7CiAgICB9CgogIF9VbndpbmRfU2V0R1IgKGNvbnRleHQsIF9fYnVpbHRpbl9laF9yZXR1
 cm5fZGF0YV9yZWdubyAoMCksCiAgICAgICAgICAgICAgICAgKF9VbndpbmRfUHRyKSAmeGgt
 PnVud2luZEhlYWRlcik7CiAgX1Vud2luZF9TZXRHUiAoY29udGV4dCwgX19idWlsdGluX2Vo
 X3JldHVybl9kYXRhX3JlZ25vICgxKSwKICAgICAgICAgICAgICAgICBoYW5kbGVyX3N3aXRj
 aF92YWx1ZSk7CiAgX1Vud2luZF9TZXRJUCAoY29udGV4dCwgbGFuZGluZ19wYWQpOwogIHJl
 dHVybiBfVVJDX0lOU1RBTExfQ09OVEVYVDsKfQoKZXh0ZXJuICJDIiB2b2lkCl9fY3hhX2Nh
 bGxfdW5leHBlY3RlZCAodm9pZCAqZXhjX29ial9pbikKewogIF9VbndpbmRfRXhjZXB0aW9u
 ICpleGNfb2JqCiAgICA9IHJlaW50ZXJwcmV0X2Nhc3QgPF9VbndpbmRfRXhjZXB0aW9uICo+
 KGV4Y19vYmpfaW4pOwoKICBfX2N4YV9iZWdpbl9jYXRjaCAoZXhjX29iaik7CgoKCiAgc3Ry
 dWN0IGVuZF9jYXRjaF9wcm90ZWN0CiAgewogICAgZW5kX2NhdGNoX3Byb3RlY3QoKSB7IH0K
 ICAgIH5lbmRfY2F0Y2hfcHJvdGVjdCgpIHsgX19jeGFfZW5kX2NhdGNoKCk7IH0KICB9IGVu
 ZF9jYXRjaF9wcm90ZWN0X29iajsKCiAgbHNkYV9oZWFkZXJfaW5mbyBpbmZvOwogIF9fY3hh
 X2V4Y2VwdGlvbiAqeGggPSBfX2dldF9leGNlcHRpb25faGVhZGVyX2Zyb21fdWUgKGV4Y19v
 YmopOwogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnhoX2xzZGE7CiAgX1Vud2luZF9Td29yZCB4
 aF9zd2l0Y2hfdmFsdWU7CiAgc3RkOjp0ZXJtaW5hdGVfaGFuZGxlciB4aF90ZXJtaW5hdGVf
 aGFuZGxlcjsKCgoKICB4aF9sc2RhID0geGgtPmxhbmd1YWdlU3BlY2lmaWNEYXRhOwogIHho
 X3N3aXRjaF92YWx1ZSA9IHhoLT5oYW5kbGVyU3dpdGNoVmFsdWU7CiAgeGhfdGVybWluYXRl
 X2hhbmRsZXIgPSB4aC0+dGVybWluYXRlSGFuZGxlcjsKICBpbmZvLnR0eXBlX2Jhc2UgPSAo
 X1Vud2luZF9QdHIpIHhoLT5jYXRjaFRlbXA7CgogIHRyeQogICAgeyBfX3VuZXhwZWN0ZWQg
 KHhoLT51bmV4cGVjdGVkSGFuZGxlcik7IH0KICBjYXRjaCguLi4pCiAgICB7CgoKCiAgICAg
 IF9fY3hhX2VoX2dsb2JhbHMgKmdsb2JhbHMgPSBfX2N4YV9nZXRfZ2xvYmFsc19mYXN0ICgp
 OwogICAgICBfX2N4YV9leGNlcHRpb24gKm5ld194aCA9IGdsb2JhbHMtPmNhdWdodEV4Y2Vw
 dGlvbnM7CiAgICAgIHZvaWQgKm5ld19wdHIgPSBuZXdfeGggKyAxOwoKCiAgICAgIHBhcnNl
 X2xzZGFfaGVhZGVyICgwLCB4aF9sc2RhLCAmaW5mbyk7CgoKICAgICAgaWYgKGNoZWNrX2V4
 Y2VwdGlvbl9zcGVjICgmaW5mbywgbmV3X3hoLT5leGNlcHRpb25UeXBlLAogICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgIG5ld19wdHIsIHhoX3N3aXRjaF92YWx1ZSkpCiAgICAg
 ICAgdGhyb3c7CgoKCgoKICAgICAgY29uc3Qgc3RkOjp0eXBlX2luZm8gJmJhZF9leGMgPSB0
 eXBlaWQgKHN0ZDo6YmFkX2V4Y2VwdGlvbik7CiAgICAgIGlmIChjaGVja19leGNlcHRpb25f
 c3BlYyAoJmluZm8sICZiYWRfZXhjLCAwLCB4aF9zd2l0Y2hfdmFsdWUpKQogICAgICAgIHRo
 cm93IHN0ZDo6YmFkX2V4Y2VwdGlvbigpOwoKCiAgICAgIF9fdGVybWluYXRlICh4aF90ZXJt
 aW5hdGVfaGFuZGxlcik7CiAgICB9Cn0K
 
 --B_3107876338_6023326--
 
 


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

* Re: debug/7092: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++
@ 2002-06-25 18:06 davem
  0 siblings, 0 replies; 5+ messages in thread
From: davem @ 2002-06-25 18:06 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, mark, rth

Synopsis: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++

State-Changed-From-To: feedback->analyzed
State-Changed-By: davem
State-Changed-When: Tue Jun 25 17:46:56 2002
State-Changed-Why:
    See discussion in audit trail.

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


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

* Re: debug/7092: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++
@ 2002-06-25 17:46 davem
  0 siblings, 0 replies; 5+ messages in thread
From: davem @ 2002-06-25 17:46 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, mark, nobody, rth

Synopsis: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++

Responsible-Changed-From-To: unassigned->rth
Responsible-Changed-By: davem
Responsible-Changed-When: Tue Jun 25 17:42:27 2002
Responsible-Changed-Why:
    You wrote this limbo_node code and I have no idea how these
    bits are supposed to work :-)

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


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

* Re: debug/7092: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++
@ 2002-06-25 12:36 davem
  0 siblings, 0 replies; 5+ messages in thread
From: davem @ 2002-06-25 12:36 UTC (permalink / raw)
  To: gcc-bugs, gcc-prs, mark, nobody

Synopsis: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++

State-Changed-From-To: open->feedback
State-Changed-By: davem
State-Changed-When: Tue Jun 25 12:34:41 2002
State-Changed-Why:
    There are control characters and zero's in the attachment
    file, it appears very corrupted.  Can you make a new one?

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


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

* debug/7092: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++
@ 2002-06-20 21:26 mark
  0 siblings, 0 replies; 5+ messages in thread
From: mark @ 2002-06-20 21:26 UTC (permalink / raw)
  To: gcc-gnats


>Number:         7092
>Category:       debug
>Synopsis:       Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jun 20 20:06:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Mark Mentovai
>Release:        3.1 and gcc-3_1-branch 3.1.1 20020620 (prerelease)
>Organization:
>Environment:
System: SunOS s2 5.8 Generic_108528-15 sun4u sparc SUNW,UltraAX-i2
Architecture: sun4
Sun Netra T1 200, 500MHz UltraSPARC IIe, 1GB, 2x18GB
Sun Solaris 7/01 MU 7
host: sparc-sun-solaris2.8
build: sparc-sun-solaris2.8
target: sparc-sun-solaris2.8
configured with: ../gcc-3.1-20020620/configure --enable-shared --with-gnu-as --with-gnu-ld --enable-threads --with-cpu=ultrasparc --enable-libgcj --with-system-zlib
>Description:
When gcc is configured with CFLAGS including "-g1", the bootstrap process fails with an internal compiler error when compiling the 64-bit (sparcv9 "-m64") version of eh_personality.cc in libstdc++/libsupc++.  The 32-bit version is compiled properly with -g1 without error.

/bin/sh ../libtool --tag CXX --tag disable-shared --mode=compile /space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/gcc/xgcc -shared-libgcc -B/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/gcc/ -nostdinc++ -L/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/src -L/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/src/.libs -B/usr/local/sparc-sun-solaris2.8/bin/ -B/usr/local/sparc-sun-solaris2.8/lib/ -isystem /usr/local/sparc-sun-solaris2.8/include  -m64 -I../../../../../gcc-3.1-20020620/libstdc++-v3/../gcc -I../../../../../gcc-3.1-20020620/libstdc++-v3/../include -I/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/include/sparc-sun-solaris2.8 -I/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/include -I../../../../../gcc-3.1-20020620/libstdc++-v3/libsupc++   -O3 -g1  -m64 -fno-implicit-templates -prefer-pic -Wall -Wno-format -W -Wwrite-strings -Winline  -fdiagnostics-show-location=once  -ffunction-sections -fdata-sections  -g    -c ../../../../../gcc-3.1-20020620/libstdc++-v3/libsupc++/eh_personality.cc
/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/gcc/xgcc -shared-libgcc -B/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/gcc/ -nostdinc++ -L/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/src -L/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/src/.libs -B/usr/local/sparc-sun-solaris2.8/bin/ -B/usr/local/sparc-sun-solaris2.8/lib/ -isystem /usr/local/sparc-sun-solaris2.8/include -m64 -I../../../../../gcc-3.1-20020620/libstdc++-v3/../gcc -I../../../../../gcc-3.1-20020620/libstdc++-v3/../include -I/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/include/sparc-sun-solaris2.8 -I/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/include -I../../../../../gcc-3.1-20020620/libstdc++-v3/libsupc++ -O3 -g1 -m64 -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -g -c ../../../../../gcc-3.1-20020620/libstdc++-v3/libsupc++/eh_personality.cc  -fPIC -DPIC -o eh_personality.o
../../../../../gcc-3.1-20020620/gcc/unwind-pe.h: In function `const unsigned 
   char* read_encoded_value_with_base(unsigned char, long unsigned int, const 
   unsigned char*, _Unwind_Ptr*)':
../../../../../gcc-3.1-20020620/gcc/unwind-pe.h:182: warning: `_Unwind_Ptr 
   result' might be used uninitialized in this function
../../../../../gcc-3.1-20020620/libstdc++-v3/libsupc++/eh_personality.cc: At 
   global scope:
../../../../../gcc-3.1-20020620/libstdc++-v3/libsupc++/eh_personality.cc:155: Internal
   compiler error in dwarf2out_finish, at dwarf2out.c:12183
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[8]: *** [eh_personality.lo] Error 1
make[8]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3/libsupc++'
make[7]: *** [all-recursive] Error 1
make[7]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3'
make[6]: *** [all-recursive-am] Error 2
make[6]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/sparcv9/libstdc++-v3'
make[5]: *** [multi-do] Error 1
make[5]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/libstdc++-v3'
make[4]: *** [all-multi] Error 2
make[4]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/libstdc++-v3'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/libstdc++-v3'
make[2]: *** [all-recursive-am] Error 2
make[2]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj/sparc-sun-solaris2.8/libstdc++-v3'
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory `/space/home/mark/compilatorium/gcc/gcc-3.1-20020620.obj'
make: *** [bootstrap] Error 2
>How-To-Repeat:
gcc -m64 -g1 -fno-implicit-templates -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -c eh_personality.ii -fPIC -DPIC -o eh_personality.o

For complete bootstrap, on sparc-sun-solaris2.8:
env CC="gcc" CFLAGS="-O3 -g1" sh ../gcc-3.1-20020620/configure --enable-shared --with-gnu-as --with-gnu-ld --enable-threads --with-cpu=ultrasparc --enable-libgcj --with-system-zlib
make bootstrap
>Fix:
No fix.

Workaround: use -g0, -g2, or -g3.
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/x-macbinary; name="eh_personality.ii"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="eh_personality.ii"

ABFlaF9wZXJzb25hbGl0eS5paQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMKUAAAAALk4CLO5OAizAAAAbUJJTgAAAAAAAAAA
AAAAAAAAAACCgY4AAAAjIDEgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvbGlic3Rk
YysrLXYzL2xpYnN1cGMrKy9laF9wZXJzb25hbGl0eS5jYyIKIyAxICI8YnVpbHQtaW4+IgojIDEg
Ijxjb21tYW5kIGxpbmU+IgojIDEgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvbGli
c3RkYysrLXYzL2xpYnN1cGMrKy9laF9wZXJzb25hbGl0eS5jYyIKIyAzMSAiLi4vLi4vLi4vLi4v
Li4vZ2NjLTMuMS0yMDAyMDYyMC9saWJzdGRjKystdjMvbGlic3VwYysrL2VoX3BlcnNvbmFsaXR5
LmNjIgojIDEgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS0yMDAy
MDYyMC5vYmovc3BhcmMtc3VuLXNvbGFyaXMyLjgvc3BhcmN2OS9saWJzdGRjKystdjMvaW5jbHVk
ZS9zcGFyYy1zdW4tc29sYXJpczIuOC9iaXRzL2MrK2NvbmZpZy5oIiAxCiMgMzQgIi9zcGFjZS9o
b21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS0yMDAyMDYyMC5vYmovc3BhcmMtc3Vu
LXNvbGFyaXMyLjgvc3BhcmN2OS9saWJzdGRjKystdjMvaW5jbHVkZS9zcGFyYy1zdW4tc29sYXJp
czIuOC9iaXRzL2MrK2NvbmZpZy5oIgojIDEgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1
bS9nY2MvZ2NjLTMuMS0yMDAyMDYyMC5vYmovc3BhcmMtc3VuLXNvbGFyaXMyLjgvc3BhcmN2OS9s
aWJzdGRjKystdjMvaW5jbHVkZS9zcGFyYy1zdW4tc29sYXJpczIuOC9iaXRzL29zX2RlZmluZXMu
aCIgMQojIDM1ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAw
MjA2MjAub2JqL3NwYXJjLXN1bi1zb2xhcmlzMi44L3NwYXJjdjkvbGlic3RkYysrLXYzL2luY2x1
ZGUvc3BhcmMtc3VuLXNvbGFyaXMyLjgvYml0cy9jKytjb25maWcuaCIgMgojIDMyICIuLi8uLi8u
Li8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZWhfcGVyc29u
YWxpdHkuY2MiIDIKIyAxICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0z
LjEtMjAwMjA2MjAub2JqL3NwYXJjLXN1bi1zb2xhcmlzMi44L3NwYXJjdjkvbGlic3RkYysrLXYz
L2luY2x1ZGUvY3N0ZGxpYiIgMQojIDQ4ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0v
Z2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL3NwYXJjLXN1bi1zb2xhcmlzMi44L3NwYXJjdjkvbGli
c3RkYysrLXYzL2luY2x1ZGUvY3N0ZGxpYiIgMwoKCiMgMSAiL3NwYWNlL2hvbWUvbWFyay9jb21w
aWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9zcGFyYy1zdW4tc29sYXJpczIuOC9z
cGFyY3Y5L2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRkZWYiIDEgMwojIDQ3ICIvc3BhY2UvaG9t
ZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL3NwYXJjLXN1bi1z
b2xhcmlzMi44L3NwYXJjdjkvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGRlZiIgMwoKIyAxICIv
c3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL2dj
Yy9pbmNsdWRlL3N0ZGRlZi5oIiAxIDMgNAojIDE0NyAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxh
dG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zdGRkZWYuaCIgMyA0
CnR5cGVkZWYgbG9uZyBpbnQgcHRyZGlmZl90OwojIDIwMSAiL3NwYWNlL2hvbWUvbWFyay9jb21w
aWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zdGRkZWYuaCIg
MyA0CnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDQ5ICIvc3BhY2UvaG9tZS9t
YXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL3NwYXJjLXN1bi1zb2xh
cmlzMi44L3NwYXJjdjkvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGRlZiIgMiAzCgpuYW1lc3Bh
Y2Ugc3RkCnsKICB1c2luZyA6OnB0cmRpZmZfdDsKICB1c2luZyA6OnNpemVfdDsKfQojIDUxICIv
c3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL3Nw
YXJjLXN1bi1zb2xhcmlzMi44L3NwYXJjdjkvbGlic3RkYysrLXYzL2luY2x1ZGUvY3N0ZGxpYiIg
MiAzCgojIDEgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNsdWRl
L3N0ZGxpYi5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXN0ZGxpYi5oCTEuNDcJOTkvMTEvMDMg
U01JIiAKCiMgMSAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIw
MDIwNjIwLm9iai9nY2MvaW5jbHVkZS9pc28vc3RkbGliX2lzby5oIiAxIDMgNAojIDM3ICIvc3Bh
Y2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL2djYy9p
bmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc3RkbGliX2lz
by5oCTEuMgk5OS8xMi8yMSBTTUkiIAoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVz
dHMuaCIgMSAzIDQKIyAxMyAiL3Vzci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDMgNAoj
cHJhZ21hIGlkZW50ICJAKCMpZmVhdHVyZV90ZXN0cy5oCTEuMTgJOTkvMDcvMjYgU01JIgoKIyAx
ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDEgMyA0CiMgOSAiL3Vzci9pbmNsdWRlL3N5
cy9pc2FfZGVmcy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWlzYV9kZWZzLmgJMS4yMAk5OS8w
NS8wNCBTTUkiCiMgMTU4ICIvdXNyL2luY2x1ZGUvc3lzL2lzYV9kZWZzLmgiIDMgNApleHRlcm4g
IkMiIHsKIyAzODAgIi91c3IvaW5jbHVkZS9zeXMvaXNhX2RlZnMuaCIgMyA0Cn0KIyAxNiAiL3Vz
ci9pbmNsdWRlL3N5cy9mZWF0dXJlX3Rlc3RzLmgiIDIgMyA0CgoKZXh0ZXJuICJDIiB7CiMgMTgx
ICIvdXNyL2luY2x1ZGUvc3lzL2ZlYXR1cmVfdGVzdHMuaCIgMyA0Cn0KIyA0MCAiL3NwYWNlL2hv
bWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVk
ZS9pc28vc3RkbGliX2lzby5oIiAyIDMgNAoKCmV4dGVybiAiQyIgewoKCgpleHRlcm4gdW5zaWdu
ZWQgY2hhciBfX2N0eXBlW107CiMgNTcgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9n
Y2MvZ2NjLTMuMS0yMDAyMDYyMC5vYmovZ2NjL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMyA0
CnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBpbnQgcXVvdDsKICAgICAgICBpbnQgcmVtOwp9IGRp
dl90OwoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgIGxvbmcgcXVvdDsKICAgICAgICBsb25nIHJl
bTsKfSBsZGl2X3Q7CiMgMTAzICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2dj
Yy0zLjEtMjAwMjA2MjAub2JqL2djYy9pbmNsdWRlL2lzby9zdGRsaWJfaXNvLmgiIDMgNApleHRl
cm4gdm9pZCBhYm9ydCh2b2lkKTsKZXh0ZXJuIGludCBhYnMoaW50KTsKZXh0ZXJuIGludCBhdGV4
aXQodm9pZCAoKikodm9pZCkpOwpleHRlcm4gZG91YmxlIGF0b2YoY29uc3QgY2hhciAqKTsKZXh0
ZXJuIGludCBhdG9pKGNvbnN0IGNoYXIgKik7CmV4dGVybiBsb25nIGludCBhdG9sKGNvbnN0IGNo
YXIgKik7CmV4dGVybiB2b2lkICpic2VhcmNoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBz
aXplX3QsIHNpemVfdCwKICAgICAgICBpbnQgKCopKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAq
KSk7CmV4dGVybiB2b2lkICpjYWxsb2Moc2l6ZV90LCBzaXplX3QpOwpleHRlcm4gZGl2X3QgZGl2
KGludCwgaW50KTsKZXh0ZXJuIHZvaWQgZXhpdChpbnQpOwpleHRlcm4gdm9pZCBmcmVlKHZvaWQg
Kik7CmV4dGVybiBjaGFyICpnZXRlbnYoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgaW50IGxh
YnMobG9uZyk7CmV4dGVybiBsZGl2X3QgbGRpdihsb25nLCBsb25nKTsKZXh0ZXJuIHZvaWQgKm1h
bGxvYyhzaXplX3QpOwpleHRlcm4gaW50IG1ibGVuKGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0
ZXJuIHNpemVfdCBtYnN0b3djcyh3Y2hhcl90ICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKZXh0
ZXJuIGludCBtYnRvd2Mod2NoYXJfdCAqLCBjb25zdCBjaGFyICosIHNpemVfdCk7CmV4dGVybiB2
b2lkIHFzb3J0KHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsCiAgICAgICAgaW50ICgqKShjb25zdCB2
b2lkICosIGNvbnN0IHZvaWQgKikpOwpleHRlcm4gaW50IHJhbmQodm9pZCk7CmV4dGVybiB2b2lk
ICpyZWFsbG9jKHZvaWQgKiwgc2l6ZV90KTsKZXh0ZXJuIHZvaWQgc3JhbmQodW5zaWduZWQgaW50
KTsKZXh0ZXJuIGRvdWJsZSBzdHJ0b2QoY29uc3QgY2hhciAqLCBjaGFyICoqKTsKZXh0ZXJuIGxv
bmcgaW50IHN0cnRvbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4dGVybiB1bnNpZ25l
ZCBsb25nIGludCBzdHJ0b3VsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIGlu
dCBzeXN0ZW0oY29uc3QgY2hhciAqKTsKZXh0ZXJuIGludCB3Y3RvbWIoY2hhciAqLCB3Y2hhcl90
KTsKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyhjaGFyICosIGNvbnN0IHdjaGFyX3QgKiwgc2l6ZV90
KTsKIyAxNzIgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS0yMDAy
MDYyMC5vYmovZ2NjL2luY2x1ZGUvaXNvL3N0ZGxpYl9pc28uaCIgMyA0Cn0KIyAxOSAiL3Vzci9p
bmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5oIiAx
IDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAo
Iyl3YWl0LmgJMS4yMQk5Ny8wNC8wOCBTTUkiIAoKCgojIDEgIi9zcGFjZS9ob21lL21hcmsvY29t
cGlsYXRvcml1bS9nY2MvZ2NjLTMuMS0yMDAyMDYyMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVz
LmgiIDEgMyA0CiMgMjUgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMu
MS0yMDAyMDYyMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAojcHJhZ21hIGlkZW50
ICJAKCMpdHlwZXMuaAkxLjY3CTAxLzA3LzA3IFNNSSIKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl
L3N5cy9tYWNodHlwZXMuaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNsdWRlL3N5cy9tYWNodHlwZXMu
aCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIyltYWNodHlwZXMuaAkxLjEzCTk5LzA1LzA0IFNNSSIK
CgoKCmV4dGVybiAiQyIgewojIDMzICIvdXNyL2luY2x1ZGUvc3lzL21hY2h0eXBlcy5oIiAzIDQK
dHlwZWRlZiBzdHJ1Y3QgX2xhYmVsX3QgeyBsb25nIHZhbFsyXTsgfSBsYWJlbF90OwoKCgp0eXBl
ZGVmIHVuc2lnbmVkIGNoYXIgbG9ja190OwoKCn0KIyAzNCAiL3NwYWNlL2hvbWUvbWFyay9jb21w
aWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMu
aCIgMiAzIDQKIyA0NSAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4x
LTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNs
dWRlL3N5cy9pbnRfdHlwZXMuaCIgMSAzIDQKIyA5ICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBl
cy5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKWludF90eXBlcy5oCTEuNgk5Ny8wOC8yMCBTTUki
CiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvaW50X3R5cGVzLmgiIDMgNApleHRlcm4gIkMiIHsKIyA2
MiAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgY2hhciBpbnQ4X3Q7
CgoKCgoKdHlwZWRlZiBzaG9ydCBpbnQxNl90Owp0eXBlZGVmIGludCBpbnQzMl90OwoKdHlwZWRl
ZiBsb25nIGludDY0X3Q7CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90Owp0eXBl
ZGVmIHVuc2lnbmVkIHNob3J0IHVpbnQxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50MzJf
dDsKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyB1aW50NjRfdDsKIyA5NCAiL3Vzci9pbmNsdWRlL3N5
cy9pbnRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgaW50NjRfdCBpbnRtYXhfdDsKdHlwZWRlZiB1aW50
NjRfdCB1aW50bWF4X3Q7CiMgMTA3ICIvdXNyL2luY2x1ZGUvc3lzL2ludF90eXBlcy5oIiAzIDQK
dHlwZWRlZiBsb25nIGludHB0cl90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90Owoj
IDExOSAiL3Vzci9pbmNsdWRlL3N5cy9pbnRfdHlwZXMuaCIgMyA0CnR5cGVkZWYgY2hhciBpbnRf
bGVhc3Q4X3Q7CgoKCgoKdHlwZWRlZiBzaG9ydCBpbnRfbGVhc3QxNl90Owp0eXBlZGVmIGludCBp
bnRfbGVhc3QzMl90OwoKdHlwZWRlZiBsb25nIGludF9sZWFzdDY0X3Q7CgoKCgoKCnR5cGVkZWYg
dW5zaWduZWQgY2hhciB1aW50X2xlYXN0OF90Owp0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVpbnRf
bGVhc3QxNl90Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50X2xlYXN0MzJfdDsKCnR5cGVkZWYg
dW5zaWduZWQgbG9uZyB1aW50X2xlYXN0NjRfdDsKCgoKCgoKCn0KIyA0NiAiL3NwYWNlL2hvbWUv
bWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9z
eXMvdHlwZXMuaCIgMiAzIDQKCgoKCgoKCmV4dGVybiAiQyIgewojIDYyICIvc3BhY2UvaG9tZS9t
YXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL2djYy9pbmNsdWRlL3N5
cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBsb25nIGxvbmcgbG9uZ2xvbmdfdDsKdHlwZWRlZiB1bnNp
Z25lZCBsb25nIGxvbmcgdV9sb25nbG9uZ190OwojIDgyICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBp
bGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBlcy5o
IiAzIDQKdHlwZWRlZiBpbnQzMl90IHRfc2NhbGFyX3Q7CnR5cGVkZWYgdWludDMyX3QgdF91c2Nh
bGFyX3Q7CiMgOTIgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS0y
MDAyMDYyMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVk
IGNoYXIgdWNoYXJfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1c2hvcnRfdDsKdHlwZWRlZiB1
bnNpZ25lZCBpbnQgdWludF90Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWxvbmdfdDsKCnR5cGVk
ZWYgY2hhciAqY2FkZHJfdDsKdHlwZWRlZiBsb25nIGRhZGRyX3Q7CnR5cGVkZWYgc2hvcnQgY250
X3Q7CiMgMTI3ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAw
MjA2MjAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bG9uZ190IHBm
bl90Owp0eXBlZGVmIHVsb25nX3QgcGdjbnRfdDsKdHlwZWRlZiBsb25nIHNwZ2NudF90OwoKdHlw
ZWRlZiB1Y2hhcl90IHVzZV90Owp0eXBlZGVmIHNob3J0IHN5c2lkX3Q7CnR5cGVkZWYgc2hvcnQg
aW5kZXhfdDsKdHlwZWRlZiB2b2lkICp0aW1lb3V0X2lkX3Q7CnR5cGVkZWYgdm9pZCAqYnVmY2Fs
bF9pZF90OwojIDE0OSAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4x
LTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZyBv
ZmZfdDsKCgoKCgoKdHlwZWRlZiBvZmZfdCBvZmY2NF90OwojIDE2NSAiL3NwYWNlL2hvbWUvbWFy
ay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMyA0CnR5cGVkZWYgdWxvbmdfdCBpbm9fdDsKdHlwZWRlZiBsb25nIGJsa2NudF90
Owp0eXBlZGVmIHVsb25nX3QgZnNibGtjbnRfdDsKdHlwZWRlZiB1bG9uZ190IGZzZmlsY250X3Q7
CiMgMTc4ICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2
MjAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbm9fdCBpbm82NF90
Owp0eXBlZGVmIGJsa2NudF90IGJsa2NudDY0X3Q7CnR5cGVkZWYgZnNibGtjbnRfdCBmc2Jsa2Nu
dDY0X3Q7CnR5cGVkZWYgZnNmaWxjbnRfdCBmc2ZpbGNudDY0X3Q7CiMgMTkxICIvc3BhY2UvaG9t
ZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL2djYy9pbmNsdWRl
L3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiBpbnQgYmxrc2l6ZV90OwoKCgoKCnR5cGVkZWYgZW51
bSB7IF9CX0ZBTFNFLCBfQl9UUlVFIH0gYm9vbGVhbl90OwojIDIxMCAiL3NwYWNlL2hvbWUvbWFy
ay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zeXMv
dHlwZXMuaCIgMyA0CnR5cGVkZWYgaW50NjRfdCBwYWQ2NF90Owp0eXBlZGVmIHVpbnQ2NF90IHVw
YWQ2NF90OwojIDIyMyAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4x
LTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgbG9uZ2xv
bmdfdCBvZmZzZXRfdDsKdHlwZWRlZiB1X2xvbmdsb25nX3QgdV9vZmZzZXRfdDsKdHlwZWRlZiB1
X2xvbmdsb25nX3QgbGVuX3Q7CnR5cGVkZWYgbG9uZ2xvbmdfdCBkaXNrYWRkcl90OwojIDI0NCAi
L3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9n
Y2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdW5pb24gewogICAgICAgIG9mZnNl
dF90IF9mOwogICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICBpbnQzMl90IF91OwogICAg
ICAgICAgICAgICAgaW50MzJfdCBfbDsKICAgICAgICB9IF9wOwp9IGxsb2ZmX3Q7CiMgMjY0ICIv
c3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL2dj
Yy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgZGlza2Fk
ZHJfdCBfZjsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgaW50MzJfdCBfdTsKICAg
ICAgICAgICAgICAgIGludDMyX3QgX2w7CiAgICAgICAgfSBfcDsKfSBsbGRhZGRyX3Q7CgoKdHlw
ZWRlZiB1aW50X3Qga19mbHRzZXRfdDsKIyAyODUgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRv
cml1bS9nY2MvZ2NjLTMuMS0yMDAyMDYyMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMg
NAp0eXBlZGVmIGludCBpZF90OwojIDI5NCAiL3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVt
L2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5
cGVkZWYgdWludF90IHVzZWNvbmRzX3Q7CgoKCnR5cGVkZWYgbG9uZyBzdXNlY29uZHNfdDsKCgoK
CgoKdHlwZWRlZiB1aW50X3QgbWFqb3JfdDsKdHlwZWRlZiB1aW50X3QgbWlub3JfdDsKIyAzMTUg
Ii9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMuMS0yMDAyMDYyMC5vYmov
Z2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIHNob3J0IHByaV90OwojIDMyOCAi
L3NwYWNlL2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9n
Y2MvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMyA0CnR5cGVkZWYgdXNob3J0X3Qgb19tb2RlX3Q7CnR5
cGVkZWYgc2hvcnQgb19kZXZfdDsKdHlwZWRlZiB1c2hvcnRfdCBvX3VpZF90Owp0eXBlZGVmIG9f
dWlkX3Qgb19naWRfdDsKdHlwZWRlZiBzaG9ydCBvX25saW5rX3Q7CnR5cGVkZWYgc2hvcnQgb19w
aWRfdDsKdHlwZWRlZiB1c2hvcnRfdCBvX2lub190OwoKCgoKCnR5cGVkZWYgaW50IGtleV90OwoK
dHlwZWRlZiB1aW50X3QgbW9kZV90OwoKCgoKCgoKdHlwZWRlZiBpbnQgdWlkX3Q7CgoKCgoKdHlw
ZWRlZiB1aWRfdCBnaWRfdDsKCnR5cGVkZWYgaWRfdCB0YXNraWRfdDsKdHlwZWRlZiBpZF90IHBy
b2ppZF90OwoKCgoKCgp0eXBlZGVmIHVpbnRfdCBwdGhyZWFkX3Q7CnR5cGVkZWYgdWludF90IHB0
aHJlYWRfa2V5X3Q7Cgp0eXBlZGVmIHN0cnVjdCBfcHRocmVhZF9tdXRleCB7CiAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9tdXRleF9mbGFnMTsKICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgX19wdGhyZWFkX211dGV4X2ZsYWcyOwogICAgICAgICAgICAg
ICAgdWludDhfdCBfX3B0aHJlYWRfbXV0ZXhfY2VpbGluZzsKICAgICAgICAgICAgICAgIHVpbnQx
Nl90IF9fcHRocmVhZF9tdXRleF90eXBlOwogICAgICAgICAgICAgICAgdWludDE2X3QgX19wdGhy
ZWFkX211dGV4X21hZ2ljOwogICAgICAgIH0gX19wdGhyZWFkX211dGV4X2ZsYWdzOwogICAgICAg
IHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgX19wdGhyZWFkX211dGV4X3BhZFs4XTsKICAgICAgICAgICAgICAgIH0gX19wdGhy
ZWFkX211dGV4X2xvY2s2NDsKICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IF9fcHRocmVhZF9vd25lcnBpZDsKICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgX19wdGhyZWFkX2xvY2t3b3JkOwogICAgICAgICAgICAgICAgfSBfX3B0
aHJlYWRfbXV0ZXhfbG9jazMyOwogICAgICAgICAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX211
dGV4X293bmVyNjQ7CiAgICAgICAgfSBfX3B0aHJlYWRfbXV0ZXhfbG9jazsKICAgICAgICB1cGFk
NjRfdCBfX3B0aHJlYWRfbXV0ZXhfZGF0YTsKfSBwdGhyZWFkX211dGV4X3Q7Cgp0eXBlZGVmIHN0
cnVjdCBfcHRocmVhZF9jb25kIHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgdWlu
dDhfdCBfX3B0aHJlYWRfY29uZF9mbGFnWzRdOwogICAgICAgICAgICAgICAgdWludDE2X3QgX19w
dGhyZWFkX2NvbmRfdHlwZTsKICAgICAgICAgICAgICAgIHVpbnQxNl90IF9fcHRocmVhZF9jb25k
X21hZ2ljOwogICAgICAgIH0gX19wdGhyZWFkX2NvbmRfZmxhZ3M7CiAgICAgICAgdXBhZDY0X3Qg
X19wdGhyZWFkX2NvbmRfZGF0YTsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKCnR5cGVkZWYgc3RydWN0
IF9wdGhyZWFkX3J3bG9jayB7CiAgICAgICAgaW50MzJfdCBfX3B0aHJlYWRfcndsb2NrX3JlYWRl
cnM7CiAgICAgICAgdWludDE2X3QgX19wdGhyZWFkX3J3bG9ja190eXBlOwogICAgICAgIHVpbnQx
Nl90IF9fcHRocmVhZF9yd2xvY2tfbWFnaWM7CiAgICAgICAgdXBhZDY0X3QgX19wdGhyZWFkX3J3
bG9ja19wYWQxWzNdOwogICAgICAgIHVwYWQ2NF90IF9fcHRocmVhZF9yd2xvY2tfcGFkMlsyXTsK
ICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfcndsb2NrX3BhZDNbMl07Cn0gcHRocmVhZF9yd2xv
Y2tfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB2b2lkICpfX3B0aHJlYWRfYXR0cnA7
Cn0gcHRocmVhZF9hdHRyX3Q7CgoKCgp0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgdm9pZCAqX19w
dGhyZWFkX211dGV4YXR0cnA7Cn0gcHRocmVhZF9tdXRleGF0dHJfdDsKCgoKCnR5cGVkZWYgc3Ry
dWN0IHsKICAgICAgICB2b2lkICpfX3B0aHJlYWRfY29uZGF0dHJwOwp9IHB0aHJlYWRfY29uZGF0
dHJfdDsKCgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICB1cGFkNjRfdCBfX3B0aHJlYWRfb25j
ZV9wYWRbNF07Cn0gcHRocmVhZF9vbmNlX3Q7CgoKCgoKdHlwZWRlZiBzdHJ1Y3QgewogICAgICAg
IHZvaWQgKl9fcHRocmVhZF9yd2xvY2thdHRycDsKfSBwdGhyZWFkX3J3bG9ja2F0dHJfdDsKCnR5
cGVkZWYgdWxvbmdfdCBkZXZfdDsKCgp0eXBlZGVmIHVpbnRfdCBubGlua190Owp0eXBlZGVmIGlu
dCBwaWRfdDsKIyA0NzcgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMu
MS0yMDAyMDYyMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIGxvbmcg
c3NpemVfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZyB0aW1lX3Q7CgoKCgp0eXBlZGVmIGxvbmcgY2xv
Y2tfdDsKCgoKCnR5cGVkZWYgaW50IGNsb2NraWRfdDsKCgoKCnR5cGVkZWYgaW50IHRpbWVyX3Q7
CgoKCgoKCnR5cGVkZWYgdW5zaWduZWQgY2hhciB1bmNoYXI7CnR5cGVkZWYgdW5zaWduZWQgc2hv
cnQgdXNob3J0Owp0eXBlZGVmIHVuc2lnbmVkIGludCB1aW50Owp0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgdWxvbmc7CiMgNTYxICIvc3BhY2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0z
LjEtMjAwMjA2MjAub2JqL2djYy9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKdHlwZWRlZiB1bnNp
Z25lZCBjaGFyIHVfY2hhcjsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1X3Nob3J0Owp0eXBlZGVm
IHVuc2lnbmVkIGludCB1X2ludDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVfbG9uZzsKdHlwZWRl
ZiBzdHJ1Y3QgX3F1YWQgeyBpbnQgdmFsWzJdOyB9IHF1YWRfdDsKdHlwZWRlZiBxdWFkX3QgcXVh
ZDsKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMgNAojIDEyICIvdXNy
L2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXNlbGVjdC5oCTEu
MTYJOTgvMDQvMjcgU01JIiAKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDEgMyA0
CiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXRp
bWUuaAkyLjY2CTAxLzAxLzE3IFNNSSIgCiMgMzIgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAz
IDQKZXh0ZXJuICJDIiB7CiMgNDkgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQKc3RydWN0
IHRpbWV2YWwgewogICAgICAgIHRpbWVfdCB0dl9zZWM7CiAgICAgICAgc3VzZWNvbmRzX3QgdHZf
dXNlYzsKfTsKIyA4MiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDMgNApzdHJ1Y3QgdGltZXpv
bmUgewogICAgICAgIGludCB0el9taW51dGVzd2VzdDsKICAgICAgICBpbnQgdHpfZHN0dGltZTsK
fTsKCgoKCgp9CiMgMTAwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CiMgMSAiL3NwYWNl
L2hvbWUvbWFyay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9nY2MvaW5j
bHVkZS9zeXMvdHlwZXMuaCIgMSAzIDQKIyAxMDEgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAy
IDMgNAoKCgpleHRlcm4gIkMiIHsKIyAxNTUgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQK
c3RydWN0IGl0aW1lcnZhbCB7CiAgICAgICAgc3RydWN0IHRpbWV2YWwgaXRfaW50ZXJ2YWw7CiAg
ICAgICAgc3RydWN0IHRpbWV2YWwgaXRfdmFsdWU7Cn07CiMgMjAzICIvdXNyL2luY2x1ZGUvc3lz
L3RpbWUuaCIgMyA0CnR5cGVkZWYgbG9uZ2xvbmdfdCBocnRpbWVfdDsKIyAzMjAgIi91c3IvaW5j
bHVkZS9zeXMvdGltZS5oIiAzIDQKaW50IGFkanRpbWUoc3RydWN0IHRpbWV2YWwgKiwgc3RydWN0
IHRpbWV2YWwgKik7CiMgMzMxICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CmludCBnZXRp
dGltZXIoaW50LCBzdHJ1Y3QgaXRpbWVydmFsICopOwppbnQgdXRpbWVzKGNvbnN0IGNoYXIgKiwg
Y29uc3Qgc3RydWN0IHRpbWV2YWwgKik7CgppbnQgc2V0aXRpbWVyKGludCwgY29uc3Qgc3RydWN0
IGl0aW1lcnZhbCAqLCBzdHJ1Y3QgaXRpbWVydmFsICopOwojIDM2OSAiL3Vzci9pbmNsdWRlL3N5
cy90aW1lLmgiIDMgNAppbnQgc2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHZvaWQgKik7
CgpocnRpbWVfdCBnZXRocnRpbWUodm9pZCk7CmhydGltZV90IGdldGhydnRpbWUodm9pZCk7CiMg
Mzg5ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMyA0CmludCBnZXR0aW1lb2ZkYXkoc3RydWN0
IHRpbWV2YWwgKiwgdm9pZCAqKTsKIyA0MTAgIi91c3IvaW5jbHVkZS9zeXMvdGltZS5oIiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAxIDMgNAojIDE2ICIvdXNyL2luY2x1ZGUvdGltZS5o
IiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWUuaAkxLjM5CTk5LzA4LzEwIFNNSSIgCgoKCiMg
MSAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAxIDMgNAojIDI4ICIvdXNyL2luY2x1ZGUv
aXNvL3RpbWVfaXNvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpdGltZV9pc28uaAkxLjEJOTkv
MDgvMDkgU01JIiAKCgoKCmV4dGVybiAiQyIgewojIDY5ICIvdXNyL2luY2x1ZGUvaXNvL3RpbWVf
aXNvLmgiIDMgNApzdHJ1Y3QgdG0gewogICAgICAgIGludCB0bV9zZWM7CiAgICAgICAgaW50IHRt
X21pbjsKICAgICAgICBpbnQgdG1faG91cjsKICAgICAgICBpbnQgdG1fbWRheTsKICAgICAgICBp
bnQgdG1fbW9uOwogICAgICAgIGludCB0bV95ZWFyOwogICAgICAgIGludCB0bV93ZGF5OwogICAg
ICAgIGludCB0bV95ZGF5OwogICAgICAgIGludCB0bV9pc2RzdDsKfTsKCgoKCmV4dGVybiBjaGFy
ICphc2N0aW1lKGNvbnN0IHN0cnVjdCB0bSAqKTsKZXh0ZXJuIGNsb2NrX3QgY2xvY2sodm9pZCk7
CmV4dGVybiBjaGFyICpjdGltZShjb25zdCB0aW1lX3QgKik7CmV4dGVybiBkb3VibGUgZGlmZnRp
bWUodGltZV90LCB0aW1lX3QpOwpleHRlcm4gc3RydWN0IHRtICpnbXRpbWUoY29uc3QgdGltZV90
ICopOwpleHRlcm4gc3RydWN0IHRtICpsb2NhbHRpbWUoY29uc3QgdGltZV90ICopOwpleHRlcm4g
dGltZV90IG1rdGltZShzdHJ1Y3QgdG0gKik7CmV4dGVybiB0aW1lX3QgdGltZSh0aW1lX3QgKik7
CmV4dGVybiBzaXplX3Qgc3RyZnRpbWUoY2hhciAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKiwgY29u
c3Qgc3RydWN0IHRtICopOwojIDExMyAiL3Vzci9pbmNsdWRlL2lzby90aW1lX2lzby5oIiAzIDQK
fQojIDIxICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNAojIDQzICIvdXNyL2luY2x1ZGUvdGlt
ZS5oIiAzIDQKZXh0ZXJuICJDIiB7CiMgNjAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRl
cm4gc3RydWN0IHRtICpnbXRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICopOwpleHRl
cm4gc3RydWN0IHRtICpsb2NhbHRpbWVfcihjb25zdCB0aW1lX3QgKiwgc3RydWN0IHRtICopOwoK
CgoKCmV4dGVybiBjaGFyICpzdHJwdGltZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc3Ry
dWN0IHRtICopOwojIDgzICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKIyAxICIvdXNyL2luY2x1
ZGUvc3lzL3RpbWVfaW1wbC5oIiAxIDMgNAojIDE1ICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVfaW1w
bC5oIiAzIDQKI3ByYWdtYSBpZGVudCAiQCgjKXRpbWVfaW1wbC5oCTEuNQk5OS8xMC8wNSBTTUki
CgoKCgpleHRlcm4gIkMiIHsKIyAzNiAiL3Vzci9pbmNsdWRlL3N5cy90aW1lX2ltcGwuaCIgMyA0
CnR5cGVkZWYgc3RydWN0IHRpbWVzcGVjIHsKICAgICAgICB0aW1lX3QgdHZfc2VjOwogICAgICAg
IGxvbmcgdHZfbnNlYzsKfSB0aW1lc3BlY190OwojIDYwICIvdXNyL2luY2x1ZGUvc3lzL3RpbWVf
aW1wbC5oIiAzIDQKdHlwZWRlZiBzdHJ1Y3QgdGltZXNwZWMgdGltZXN0cnVjX3Q7CiMgNzkgIi91
c3IvaW5jbHVkZS9zeXMvdGltZV9pbXBsLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBpdGltZXJzcGVj
IHsKICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgaXRfaW50ZXJ2YWw7CiAgICAgICAgc3RydWN0IHRp
bWVzcGVjIGl0X3ZhbHVlOwp9IGl0aW1lcnNwZWNfdDsKIyAxMzYgIi91c3IvaW5jbHVkZS9zeXMv
dGltZV9pbXBsLmgiIDMgNAp9CiMgODQgIi91c3IvaW5jbHVkZS90aW1lLmgiIDIgMyA0CiMgOTgg
Ii91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAp1bmlvbiBzaWd2YWwgewogICAgICAgIGludCBzaXZh
bF9pbnQ7CiAgICAgICAgdm9pZCAqc2l2YWxfcHRyOwp9OwoKCgoKc3RydWN0IHNpZ2V2ZW50IHsK
ICAgICAgICBpbnQgc2lnZXZfbm90aWZ5OwogICAgICAgIGludCBzaWdldl9zaWdubzsKICAgICAg
ICB1bmlvbiBzaWd2YWwgc2lnZXZfdmFsdWU7CiAgICAgICAgdm9pZCAoKnNpZ2V2X25vdGlmeV9m
dW5jdGlvbikodW5pb24gc2lndmFsKTsKICAgICAgICBwdGhyZWFkX2F0dHJfdCAqc2lnZXZfbm90
aWZ5X2F0dHJpYnV0ZXM7CiAgICAgICAgaW50IF9fc2lnZXZfcGFkMjsKfTsKCgpleHRlcm4gaW50
IGNsb2NrX2dldHJlcyhjbG9ja2lkX3QsIHN0cnVjdCB0aW1lc3BlYyAqKTsKZXh0ZXJuIGludCBj
bG9ja19nZXR0aW1lKGNsb2NraWRfdCwgc3RydWN0IHRpbWVzcGVjICopOwpleHRlcm4gaW50IGNs
b2NrX3NldHRpbWUoY2xvY2tpZF90LCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKik7CmV4dGVybiBp
bnQgdGltZXJfY3JlYXRlKGNsb2NraWRfdCwgc3RydWN0IHNpZ2V2ZW50ICosIHRpbWVyX3QgKik7
CmV4dGVybiBpbnQgdGltZXJfZGVsZXRlKHRpbWVyX3QpOwpleHRlcm4gaW50IHRpbWVyX2dldG92
ZXJydW4odGltZXJfdCk7CmV4dGVybiBpbnQgdGltZXJfZ2V0dGltZSh0aW1lcl90LCBzdHJ1Y3Qg
aXRpbWVyc3BlYyAqKTsKZXh0ZXJuIGludCB0aW1lcl9zZXR0aW1lKHRpbWVyX3QsIGludCwgY29u
c3Qgc3RydWN0IGl0aW1lcnNwZWMgKiwKICAgICAgICAgICAgICAgIHN0cnVjdCBpdGltZXJzcGVj
ICopOwpleHRlcm4gaW50IG5hbm9zbGVlcChjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKiwgc3RydWN0
IHRpbWVzcGVjICopOwoKCgoKZXh0ZXJuIHZvaWQgdHpzZXQodm9pZCk7CgpleHRlcm4gY2hhciAq
dHpuYW1lWzJdOwoKCmV4dGVybiBsb25nIF9zeXNjb25mKGludCk7CgoKCgoKCmV4dGVybiBsb25n
IHRpbWV6b25lOwpleHRlcm4gaW50IGRheWxpZ2h0OwojIDE1NiAiL3Vzci9pbmNsdWRlL3RpbWUu
aCIgMyA0CmV4dGVybiBzdHJ1Y3QgdG0gKmdldGRhdGUoY29uc3QgY2hhciAqKTsKCgoKCgoKZXh0
ZXJuIGludCBnZXRkYXRlX2VycjsKIyAyNTAgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRl
cm4gY2hhciAqYXNjdGltZV9yKGNvbnN0IHN0cnVjdCB0bSAqLCBjaGFyICopOwpleHRlcm4gY2hh
ciAqY3RpbWVfcihjb25zdCB0aW1lX3QgKiwgY2hhciAqKTsKI3ByYWdtYSByZWRlZmluZV9leHRu
YW1lIGN0aW1lX3IgX19wb3NpeF9jdGltZV9yCiNwcmFnbWEgcmVkZWZpbmVfZXh0bmFtZSBhc2N0
aW1lX3IgX19wb3NpeF9hc2N0aW1lX3IKIyAzMTggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAp9
CiMgNDExICIvdXNyL2luY2x1ZGUvc3lzL3RpbWUuaCIgMiAzIDQKIyA0MjMgIi91c3IvaW5jbHVk
ZS9zeXMvdGltZS5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAxIDMgNAoj
IDQyNCAiL3Vzci9pbmNsdWRlL3N5cy90aW1lLmgiIDIgMyA0CgoKCgoKfQojIDE4ICIvdXNyL2lu
Y2x1ZGUvc3lzL3NlbGVjdC5oIiAyIDMgNAoKCgpleHRlcm4gIkMiIHsKIyA0NSAiL3Vzci9pbmNs
dWRlL3N5cy9zZWxlY3QuaCIgMyA0CnR5cGVkZWYgbG9uZyBmZF9tYXNrOwoKdHlwZWRlZiBsb25n
IGZkc19tYXNrOwojIDczICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5oIiAzIDQKdHlwZWRlZiBz
dHJ1Y3QgZmRfc2V0IHsKCgoKICAgICAgICBsb25nIGZkc19iaXRzWygoKDY1NTM2KSsoKChzaXpl
b2YgKGZkc19tYXNrKSAqIDgpKS0xKSkvKChzaXplb2YgKGZkc19tYXNrKSAqIDgpKSldOwp9IGZk
X3NldDsKIyA5NyAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMyA0CmV4dGVybiBpbnQgc2Vs
ZWN0KGludCwgZmRfc2V0ICosIGZkX3NldCAqLCBmZF9zZXQgKiwgc3RydWN0IHRpbWV2YWwgKik7
CgoKCgoKCn0KIyA1NzQgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRvcml1bS9nY2MvZ2NjLTMu
MS0yMDAyMDYyMC5vYmovZ2NjL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgNTkwICIvc3Bh
Y2UvaG9tZS9tYXJrL2NvbXBpbGF0b3JpdW0vZ2NjL2djYy0zLjEtMjAwMjA2MjAub2JqL2djYy9p
bmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKfQojIDIxICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIg
MiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDEgMyA0CiMgMTYgIi91
c3IvaW5jbHVkZS9zeXMvcmVzb3VyY2UuaCIgMyA0CiNwcmFnbWEgaWRlbnQgIkAoIylyZXNvdXJj
ZS5oCTEuMjUJOTgvMDYvMzAgU01JIiAKCgoKCgoKCmV4dGVybiAiQyIgewojIDUzICIvdXNyL2lu
Y2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNAp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgcmxpbV90Owoj
IDEwMiAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKc3RydWN0IHJsaW1pdCB7CiAg
ICAgICAgcmxpbV90IHJsaW1fY3VyOwogICAgICAgIHJsaW1fdCBybGltX21heDsKfTsKCgoKCnR5
cGVkZWYgdV9sb25nbG9uZ190IHJsaW02NF90OwoKCgoKCnN0cnVjdCBybGltaXQ2NCB7CiAgICAg
ICAgcmxpbTY0X3QgcmxpbV9jdXI7CiAgICAgICAgcmxpbTY0X3QgcmxpbV9tYXg7Cn07CiMgMTQz
ICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMgNApzdHJ1Y3QgcnVzYWdlIHsKICAgICAg
ICBzdHJ1Y3QgdGltZXZhbCBydV91dGltZTsKICAgICAgICBzdHJ1Y3QgdGltZXZhbCBydV9zdGlt
ZTsKICAgICAgICBsb25nIHJ1X21heHJzczsKICAgICAgICBsb25nIHJ1X2l4cnNzOwogICAgICAg
IGxvbmcgcnVfaWRyc3M7CiAgICAgICAgbG9uZyBydV9pc3JzczsKICAgICAgICBsb25nIHJ1X21p
bmZsdDsKICAgICAgICBsb25nIHJ1X21hamZsdDsKICAgICAgICBsb25nIHJ1X25zd2FwOwogICAg
ICAgIGxvbmcgcnVfaW5ibG9jazsKICAgICAgICBsb25nIHJ1X291YmxvY2s7CiAgICAgICAgbG9u
ZyBydV9tc2dzbmQ7CiAgICAgICAgbG9uZyBydV9tc2dyY3Y7CiAgICAgICAgbG9uZyBydV9uc2ln
bmFsczsKICAgICAgICBsb25nIHJ1X252Y3N3OwogICAgICAgIGxvbmcgcnVfbml2Y3N3Owp9Owoj
IDE4MiAiL3Vzci9pbmNsdWRlL3N5cy9yZXNvdXJjZS5oIiAzIDQKI3ByYWdtYSByZWRlZmluZV9l
eHRuYW1lIHNldHJsaW1pdDY0IHNldHJsaW1pdAojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgZ2V0
cmxpbWl0NjQgZ2V0cmxpbWl0CiMgMTkzICIvdXNyL2luY2x1ZGUvc3lzL3Jlc291cmNlLmgiIDMg
NApleHRlcm4gaW50IHNldHJsaW1pdChpbnQsIGNvbnN0IHN0cnVjdCBybGltaXQgKik7CmV4dGVy
biBpbnQgZ2V0cmxpbWl0KGludCwgc3RydWN0IHJsaW1pdCAqKTsKCgoKCmV4dGVybiBpbnQgc2V0
cmxpbWl0NjQoaW50LCBjb25zdCBzdHJ1Y3QgcmxpbWl0NjQgKik7CmV4dGVybiBpbnQgZ2V0cmxp
bWl0NjQoaW50LCBzdHJ1Y3QgcmxpbWl0NjQgKik7CgoKZXh0ZXJuIGludCBnZXRwcmlvcml0eShp
bnQsIGlkX3QpOwpleHRlcm4gaW50IHNldHByaW9yaXR5KGludCwgaWRfdCwgaW50KTsKZXh0ZXJu
IGludCBnZXRydXNhZ2UoaW50LCBzdHJ1Y3QgcnVzYWdlICopOwojIDIyOCAiL3Vzci9pbmNsdWRl
L3N5cy9yZXNvdXJjZS5oIiAzIDQKfQojIDI1ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAz
IDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL3NpZ2luZm8uaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNs
dWRlL3N5cy9zaWdpbmZvLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpc2lnaW5mby5oCTEuNTQJ
OTgvMDMvMjcgU01JIiAKCgoKCgpleHRlcm4gIkMiIHsKIyAxMjYgIi91c3IvaW5jbHVkZS9zeXMv
c2lnaW5mby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvc3lzL21hY2hzaWcuaCIgMSAzIDQKIyAx
NiAiL3Vzci9pbmNsdWRlL3N5cy9tYWNoc2lnLmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpbWFj
aHNpZy5oCTEuMTUJOTkvMDgvMTUgU01JIgoKCgoKZXh0ZXJuICJDIiB7CiMgMTA3ICIvdXNyL2lu
Y2x1ZGUvc3lzL21hY2hzaWcuaCIgMyA0Cn0KIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvc2lnaW5m
by5oIiAyIDMgNAojIDIyMSAiL3Vzci9pbmNsdWRlL3N5cy9zaWdpbmZvLmgiIDMgNAp0eXBlZGVm
IHN0cnVjdCBzaWdpbmZvIHsKCgoKICAgICAgICBpbnQgc2lfc2lnbm87CiAgICAgICAgaW50IHNp
X2NvZGU7CiAgICAgICAgaW50IHNpX2Vycm5vOwoKICAgICAgICBpbnQgc2lfcGFkOwoKICAgICAg
ICB1bmlvbiB7CgogICAgICAgICAgICAgICAgaW50IF9fcGFkWygoMjU2IC8gc2l6ZW9mIChpbnQp
KSAtIDQpXTsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAg
ICBwaWRfdCBfX3BpZDsKICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aWRfdCBfX3VpZDsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pb24gc2lndmFsIF9fdmFsdWU7CgoKCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBfX2tpbGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
dWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3QgX191
dGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3N0YXR1
czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb2NrX3QgX19zdGlt
ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF9fY2xkOwogICAgICAgICAgICAg
ICAgICAgICAgICB9IF9fcGRhdGE7CiAgICAgICAgICAgICAgICB9IF9fcHJvYzsKCiAgICAgICAg
ICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpfX2FkZHI7CiAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBfX3RyYXBubzsKICAgICAgICAgICAgICAgICAgICAg
ICAgY2FkZHJfdCBfX3BjOwogICAgICAgICAgICAgICAgfSBfX2ZhdWx0OwoKICAgICAgICAgICAg
ICAgIHN0cnVjdCB7CgogICAgICAgICAgICAgICAgICAgICAgICBpbnQgX19mZDsKICAgICAgICAg
ICAgICAgICAgICAgICAgbG9uZyBfX2JhbmQ7CiAgICAgICAgICAgICAgICB9IF9fZmlsZTsKCiAg
ICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBjYWRkcl90IF9f
ZmFkZHI7CgoKICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0cnVjX3QgX190c3RhbXA7CgoK
CiAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IF9fc3lzY2FsbDsKICAgICAgICAgICAgICAg
ICAgICAgICAgY2hhciBfX25zeXNhcmc7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19m
YXVsdDsKICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBfX3N5c2FyZ1s4XTsKICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IF9fbXN0YXRlWzEwXTsKICAgICAgICAgICAgICAgIH0gX19wcm9m
OwoKICAgICAgICB9IF9fZGF0YTsKCn0gc2lnaW5mb190OwojIDM1NCAiL3Vzci9pbmNsdWRlL3N5
cy9zaWdpbmZvLmgiIDMgNAp0eXBlZGVmIHN0cnVjdCBrX3NpZ2luZm8gewogICAgICAgIGludCBz
aV9zaWdubzsKICAgICAgICBpbnQgc2lfY29kZTsKICAgICAgICBpbnQgc2lfZXJybm87CgogICAg
ICAgIGludCBzaV9wYWQ7CgogICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgIHN0cnVjdCB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IF9fcGlkOwogICAgICAgICAgICAgICAgICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpZF90IF9fdWlkOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb24gc2lndmFsIF9fdmFsdWU7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBfX2tpbGw7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsb2NrX3QgX191dGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBfX3N0YXR1czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsb2NrX3QgX19zdGltZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IF9f
Y2xkOwogICAgICAgICAgICAgICAgICAgICAgICB9IF9fcGRhdGE7CiAgICAgICAgICAgICAgICB9
IF9fcHJvYzsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkICpfX2FkZHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGludCBfX3RyYXBubzsKICAg
ICAgICAgICAgICAgICAgICAgICAgY2FkZHJfdCBfX3BjOwogICAgICAgICAgICAgICAgfSBfX2Zh
dWx0OwoKICAgICAgICAgICAgICAgIHN0cnVjdCB7CgogICAgICAgICAgICAgICAgICAgICAgICBp
bnQgX19mZDsKICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBfX2JhbmQ7CiAgICAgICAgICAg
ICAgICB9IF9fZmlsZTsKCiAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAg
ICAgICAgICBjYWRkcl90IF9fZmFkZHI7CgoKCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVz
dHJ1Y190IF9fdHN0YW1wOwoKCgogICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBfX3N5c2Nh
bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgX19uc3lzYXJnOwogICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyIF9fZmF1bHQ7CgoKCiAgICAgICAgICAgICAgICB9IF9fcHJvZjsKCiAg
ICAgICAgfSBfX2RhdGE7Cgp9IGtfc2lnaW5mb190OwoKdHlwZWRlZiBzdHJ1Y3Qgc2lncXVldWUg
ewogICAgICAgIHN0cnVjdCBzaWdxdWV1ZSAqc3FfbmV4dDsKICAgICAgICBrX3NpZ2luZm9fdCBz
cV9pbmZvOwogICAgICAgIHZvaWQgKCpzcV9mdW5jKShzdHJ1Y3Qgc2lncXVldWUgKik7CiAgICAg
ICAgdm9pZCAqc3FfYmFja3B0cjsKCn0gc2lncXVldWVfdDsKIyA0NTQgIi91c3IvaW5jbHVkZS9z
eXMvc2lnaW5mby5oIiAzIDQKfQojIDI2ICIvdXNyL2luY2x1ZGUvc3lzL3dhaXQuaCIgMiAzIDQK
IyAxICIvdXNyL2luY2x1ZGUvc3lzL3Byb2NzZXQuaCIgMSAzIDQKIyAxNiAiL3Vzci9pbmNsdWRl
L3N5cy9wcm9jc2V0LmgiIDMgNAojcHJhZ21hIGlkZW50ICJAKCMpcHJvY3NldC5oCTEuMjAJMDAv
MDIvMTQgU01JIiAKCgpleHRlcm4gIkMiIHsKIyA0MSAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0
LmgiIDMgNAp0eXBlZGVmIGVudW0KCiAgICAgICAgaWR0eXBlCgogICAgICAgICAgICAgICAgewog
ICAgICAgIFBfUElELAogICAgICAgIFBfUFBJRCwKICAgICAgICBQX1BHSUQsCgogICAgICAgIFBf
U0lELAogICAgICAgIFBfQ0lELAogICAgICAgIFBfVUlELAogICAgICAgIFBfR0lELAogICAgICAg
IFBfQUxMLAogICAgICAgIFBfTFdQSUQsCiAgICAgICAgUF9UQVNLSUQsCiAgICAgICAgUF9QUk9K
SUQKfSBpZHR5cGVfdDsKIyA2NyAiL3Vzci9pbmNsdWRlL3N5cy9wcm9jc2V0LmgiIDMgNAp0eXBl
ZGVmIGVudW0gaWRvcCB7CiAgICAgICAgUE9QX0RJRkYsCgoKICAgICAgICBQT1BfQU5ELAoKCiAg
ICAgICAgUE9QX09SLAoKCiAgICAgICAgUE9QX1hPUgoKCn0gaWRvcF90OwoKCgoKCgoKdHlwZWRl
ZiBzdHJ1Y3QgcHJvY3NldCB7CiAgICAgICAgaWRvcF90IHBfb3A7CgoKCgogICAgICAgIGlkdHlw
ZV90IHBfbGlkdHlwZTsKCgogICAgICAgIGlkX3QgcF9saWQ7CgogICAgICAgIGlkdHlwZV90IHBf
cmlkdHlwZTsKCgogICAgICAgIGlkX3QgcF9yaWQ7Cn0gcHJvY3NldF90OwojIDEzMiAiL3Vzci9p
bmNsdWRlL3N5cy9wcm9jc2V0LmgiIDMgNAp9CiMgMjcgIi91c3IvaW5jbHVkZS9zeXMvd2FpdC5o
IiAyIDMgNAoKCgpleHRlcm4gIkMiIHsKIyA4NiAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMg
NApleHRlcm4gcGlkX3Qgd2FpdChpbnQgKik7CmV4dGVybiBwaWRfdCB3YWl0cGlkKHBpZF90LCBp
bnQgKiwgaW50KTsKCgpleHRlcm4gaW50IHdhaXRpZChpZHR5cGVfdCwgaWRfdCwgc2lnaW5mb190
ICosIGludCk7CmV4dGVybiBwaWRfdCB3YWl0MyhpbnQgKiwgaW50LCBzdHJ1Y3QgcnVzYWdlICop
OwoKCgoKZXh0ZXJuIHBpZF90IHdhaXQ0KHBpZF90LCBpbnQgKiwgaW50LCBzdHJ1Y3QgcnVzYWdl
ICopOwojIDExOCAiL3Vzci9pbmNsdWRlL3N5cy93YWl0LmgiIDMgNAp9CiMgMjMgIi91c3IvaW5j
bHVkZS9zdGRsaWIuaCIgMiAzIDQKIyA2NCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0
ZXJuICJDIiB7CgoKCnR5cGVkZWYgc3RydWN0IHsKICAgICAgICBsb25nIGxvbmcgcXVvdDsKICAg
ICAgICBsb25nIGxvbmcgcmVtOwp9IGxsZGl2X3Q7CiMgMTAwICIvdXNyL2luY2x1ZGUvc3RkbGli
LmgiIDMgNAojcHJhZ21hIHJlZGVmaW5lX2V4dG5hbWUgbWtzdGVtcDY0IG1rc3RlbXAKIyAxMDkg
Ii91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgcmFuZF9yKHVuc2lnbmVkIGlu
dCAqKTsKCgpleHRlcm4gdm9pZCBfZXhpdGhhbmRsZSh2b2lkKTsKCgoKCmV4dGVybiBkb3VibGUg
ZHJhbmQ0OCh2b2lkKTsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpl
eHRlcm4gbG9uZyBqcmFuZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gdm9pZCBsY29uZzQ4
KHVuc2lnbmVkIHNob3J0ICopOwpleHRlcm4gbG9uZyBscmFuZDQ4KHZvaWQpOwpleHRlcm4gbG9u
ZyBtcmFuZDQ4KHZvaWQpOwpleHRlcm4gbG9uZyBucmFuZDQ4KHVuc2lnbmVkIHNob3J0ICopOwpl
eHRlcm4gdW5zaWduZWQgc2hvcnQgKnNlZWQ0OCh1bnNpZ25lZCBzaG9ydCAqKTsKZXh0ZXJuIHZv
aWQgc3JhbmQ0OChsb25nKTsKZXh0ZXJuIGludCBwdXRlbnYoY2hhciAqKTsKZXh0ZXJuIHZvaWQg
c2V0a2V5KGNvbnN0IGNoYXIgKik7CiMgMTUwICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApl
eHRlcm4gaW50IG1rc3RlbXAoY2hhciAqKTsKCgoKCmV4dGVybiBpbnQgbWtzdGVtcDY0KGNoYXIg
Kik7CgoKCgoKZXh0ZXJuIGxvbmcgYTY0bChjb25zdCBjaGFyICopOwpleHRlcm4gY2hhciAqZWN2
dChkb3VibGUsIGludCwgaW50ICosIGludCAqKTsKZXh0ZXJuIGNoYXIgKmZjdnQoZG91YmxlLCBp
bnQsIGludCAqLCBpbnQgKik7CmV4dGVybiBjaGFyICpnY3Z0KGRvdWJsZSwgaW50LCBjaGFyICop
OwpleHRlcm4gaW50IGdldHN1Ym9wdChjaGFyICoqLCBjaGFyICpjb25zdCAqLCBjaGFyICoqKTsK
ZXh0ZXJuIGludCBncmFudHB0KGludCk7CmV4dGVybiBjaGFyICppbml0c3RhdGUodW5zaWduZWQs
IGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGNoYXIgKmw2NGEobG9uZyk7CmV4dGVybiBjaGFyICpt
a3RlbXAoY2hhciAqKTsKZXh0ZXJuIGNoYXIgKnB0c25hbWUoaW50KTsKZXh0ZXJuIGxvbmcgcmFu
ZG9tKHZvaWQpOwpleHRlcm4gY2hhciAqcmVhbHBhdGgoY29uc3QgY2hhciAqLCBjaGFyICopOwpl
eHRlcm4gY2hhciAqc2V0c3RhdGUoY29uc3QgY2hhciAqKTsKZXh0ZXJuIHZvaWQgc3JhbmRvbSh1
bnNpZ25lZCk7CmV4dGVybiBpbnQgdHR5c2xvdCh2b2lkKTsKZXh0ZXJuIGludCB1bmxvY2twdChp
bnQpOwpleHRlcm4gdm9pZCAqdmFsbG9jKHNpemVfdCk7CgoKCgpleHRlcm4gaW50IGR1cDIoaW50
LCBpbnQpOwpleHRlcm4gY2hhciAqcWVjdnQobG9uZyBkb3VibGUsIGludCwgaW50ICosIGludCAq
KTsKZXh0ZXJuIGNoYXIgKnFmY3Z0KGxvbmcgZG91YmxlLCBpbnQsIGludCAqLCBpbnQgKik7CmV4
dGVybiBjaGFyICpxZ2N2dChsb25nIGRvdWJsZSwgaW50LCBjaGFyICopOwpleHRlcm4gY2hhciAq
Z2V0Y3dkKGNoYXIgKiwgc2l6ZV90KTsKZXh0ZXJuIGNvbnN0IGNoYXIgKmdldGV4ZWNuYW1lKHZv
aWQpOwpleHRlcm4gY2hhciAqZ2V0bG9naW4odm9pZCk7CmV4dGVybiBpbnQgZ2V0b3B0KGludCwg
Y2hhciAqY29uc3QgKiwgY29uc3QgY2hhciAqKTsKZXh0ZXJuIGNoYXIgKm9wdGFyZzsKZXh0ZXJu
IGludCBvcHRpbmQsIG9wdGVyciwgb3B0b3B0OwpleHRlcm4gY2hhciAqZ2V0cGFzcyhjb25zdCBj
aGFyICopOwpleHRlcm4gY2hhciAqZ2V0cGFzc3BocmFzZShjb25zdCBjaGFyICopOwpleHRlcm4g
aW50IGdldHB3KHVpZF90LCBjaGFyICopOwpleHRlcm4gaW50IGlzYXR0eShpbnQpOwpleHRlcm4g
dm9pZCAqbWVtYWxpZ24oc2l6ZV90LCBzaXplX3QpOwpleHRlcm4gY2hhciAqdHR5bmFtZShpbnQp
OwoKCmV4dGVybiBsb25nIGxvbmcgYXRvbGwoY29uc3QgY2hhciAqKTsKZXh0ZXJuIGxvbmcgbG9u
ZyBsbGFicyhsb25nIGxvbmcpOwpleHRlcm4gbGxkaXZfdCBsbGRpdihsb25nIGxvbmcsIGxvbmcg
bG9uZyk7CmV4dGVybiBjaGFyICpsbHRvc3RyKGxvbmcgbG9uZywgY2hhciAqKTsKZXh0ZXJuIGxv
bmcgbG9uZyBzdHJ0b2xsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKZXh0ZXJuIHVuc2ln
bmVkIGxvbmcgbG9uZyBzdHJ0b3VsbChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CmV4dGVy
biBjaGFyICp1bGx0b3N0cih1bnNpZ25lZCBsb25nIGxvbmcsIGNoYXIgKik7CiMgMzA4ICIvdXNy
L2luY2x1ZGUvc3RkbGliLmgiIDMgNAp9CiMgNTMgIi9zcGFjZS9ob21lL21hcmsvY29tcGlsYXRv
cml1bS9nY2MvZ2NjLTMuMS0yMDAyMDYyMC5vYmovc3BhcmMtc3VuLXNvbGFyaXMyLjgvc3BhcmN2
OS9saWJzdGRjKystdjMvaW5jbHVkZS9jc3RkbGliIiAyIDMKIyA4NCAiL3NwYWNlL2hvbWUvbWFy
ay9jb21waWxhdG9yaXVtL2djYy9nY2MtMy4xLTIwMDIwNjIwLm9iai9zcGFyYy1zdW4tc29sYXJp
czIuOC9zcGFyY3Y5L2xpYnN0ZGMrKy12My9pbmNsdWRlL2NzdGRsaWIiIDMKbmFtZXNwYWNlIHN0
ZAp7CiAgdXNpbmcgOjpkaXZfdDsKICB1c2luZyA6OmxkaXZfdDsKCiAgdXNpbmcgOjphYm9ydDsK
ICB1c2luZyA6OmFiczsKICB1c2luZyA6OmF0ZXhpdDsKICB1c2luZyA6OmF0b2Y7CiAgdXNpbmcg
OjphdG9pOwogIHVzaW5nIDo6YXRvbDsKICB1c2luZyA6OmJzZWFyY2g7CiAgdXNpbmcgOjpjYWxs
b2M7CiAgdXNpbmcgOjpkaXY7CiAgdXNpbmcgOjpleGl0OwogIHVzaW5nIDo6ZnJlZTsKICB1c2lu
ZyA6OmdldGVudjsKICB1c2luZyA6OmxhYnM7CiAgdXNpbmcgOjpsZGl2OwogIHVzaW5nIDo6bWFs
bG9jOwogIHVzaW5nIDo6bWJsZW47CiAgdXNpbmcgOjptYnN0b3djczsKICB1c2luZyA6Om1idG93
YzsKICB1c2luZyA6OnFzb3J0OwogIHVzaW5nIDo6cmFuZDsKICB1c2luZyA6OnJlYWxsb2M7CiAg
dXNpbmcgOjpzcmFuZDsKICB1c2luZyA6OnN0cnRvZDsKICB1c2luZyA6OnN0cnRvbDsKICB1c2lu
ZyA6OnN0cnRvdWw7CiAgdXNpbmcgOjpzeXN0ZW07CiAgdXNpbmcgOjp3Y3N0b21iczsKICB1c2lu
ZyA6OndjdG9tYjsKCiAgaW5saW5lIGxvbmcKICBhYnMobG9uZyBfX2kpIHsgcmV0dXJuIGxhYnMo
X19pKTsgfQoKICBpbmxpbmUgbGRpdl90CiAgZGl2KGxvbmcgX19pLCBsb25nIF9faikgeyByZXR1
cm4gbGRpdihfX2ksIF9faik7IH0KfQojIDMzICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIw
NjIwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZWhfcGVyc29uYWxpdHkuY2MiIDIKIyAxICIuLi8u
Li8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZXhjZXB0
aW9uX2RlZmluZXMuaCIgMQojIDM0ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2xp
YnN0ZGMrKy12My9saWJzdXBjKysvZWhfcGVyc29uYWxpdHkuY2MiIDIKIyAxICIuLi8uLi8uLi8u
Li8uLi9nY2MtMy4xLTIwMDIwNjIwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvdW53aW5kLWN4eC5o
IiAxCiMgMzggIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvbGlic3RkYysrLXYzL2xp
YnN1cGMrKy91bndpbmQtY3h4LmgiCiMgMSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS0yMDAyMDYy
MC9saWJzdGRjKystdjMvbGlic3VwYysrL3R5cGVpbmZvIiAxCiMgMzggIi4uLy4uLy4uLy4uLy4u
L2djYy0zLjEtMjAwMjA2MjAvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90eXBlaW5mbyIKIyAxICIu
Li8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2xpYnN0ZGMrKy12My9saWJzdXBjKysvZXhj
ZXB0aW9uIiAxCiMgNDAgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvbGlic3RkYysr
LXYzL2xpYnN1cGMrKy9leGNlcHRpb24iCmV4dGVybiAiQysrIiB7CgpuYW1lc3BhY2Ugc3RkCnsK
CgoKCgoKICBjbGFzcyBleGNlcHRpb24KICB7CiAgcHVibGljOgogICAgZXhjZXB0aW9uKCkgdGhy
b3coKSB7IH0KICAgIHZpcnR1YWwgfmV4Y2VwdGlvbigpIHRocm93KCk7CgoKICAgIHZpcnR1YWwg
Y29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgfTsKCgoKICBjbGFzcyBiYWRfZXhj
ZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6CiAgICBiYWRfZXhjZXB0aW9u
KCkgdGhyb3coKSB7IH0KCgogICAgdmlydHVhbCB+YmFkX2V4Y2VwdGlvbigpIHRocm93KCk7CiAg
fTsKCgogIHR5cGVkZWYgdm9pZCAoKnRlcm1pbmF0ZV9oYW5kbGVyKSAoKTsKCiAgdHlwZWRlZiB2
b2lkICgqdW5leHBlY3RlZF9oYW5kbGVyKSAoKTsKCgogIHRlcm1pbmF0ZV9oYW5kbGVyIHNldF90
ZXJtaW5hdGUodGVybWluYXRlX2hhbmRsZXIpIHRocm93KCk7CgoKICB2b2lkIHRlcm1pbmF0ZSgp
IF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgogIHVuZXhwZWN0ZWRfaGFuZGxlciBz
ZXRfdW5leHBlY3RlZCh1bmV4cGVjdGVkX2hhbmRsZXIpIHRocm93KCk7CgoKICB2b2lkIHVuZXhw
ZWN0ZWQoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CiMgOTggIi4uLy4uLy4uLy4u
Ly4uL2djYy0zLjEtMjAwMjA2MjAvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9leGNlcHRpb24iCiAg
Ym9vbCB1bmNhdWdodF9leGNlcHRpb24oKSB0aHJvdygpOwp9CgpuYW1lc3BhY2UgX19nbnVfY3h4
CnsKIyAxMTEgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvbGlic3RkYysrLXYzL2xp
YnN1cGMrKy9leGNlcHRpb24iCiAgdm9pZCBfX3ZlcmJvc2VfdGVybWluYXRlX2hhbmRsZXIgKCk7
Cn0KCn0KIyAzOSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS0yMDAyMDYyMC9saWJzdGRjKystdjMv
bGlic3VwYysrL3R5cGVpbmZvIiAyCgpleHRlcm4gIkMrKyIgewoKbmFtZXNwYWNlIF9fY3h4YWJp
djEKewogIGNsYXNzIF9fY2xhc3NfdHlwZV9pbmZvOwp9CiMgNTUgIi4uLy4uLy4uLy4uLy4uL2dj
Yy0zLjEtMjAwMjA2MjAvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90eXBlaW5mbyIKbmFtZXNwYWNl
IHN0ZAp7CgoKCiAgY2xhc3MgdHlwZV9pbmZvCiAgewogIHB1YmxpYzoKCgoKCiAgICB2aXJ0dWFs
IH50eXBlX2luZm8oKTsKCiAgcHJpdmF0ZToKCiAgICB0eXBlX2luZm8mIG9wZXJhdG9yPShjb25z
dCB0eXBlX2luZm8mKTsKICAgIHR5cGVfaW5mbyhjb25zdCB0eXBlX2luZm8mKTsKCiAgcHJvdGVj
dGVkOgogICAgY29uc3QgY2hhciAqX19uYW1lOwoKICBwcm90ZWN0ZWQ6CiAgICBleHBsaWNpdCB0
eXBlX2luZm8oY29uc3QgY2hhciAqX19uKTogX19uYW1lKF9fbikgeyB9CgogIHB1YmxpYzoKCgoK
ICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdAogICAgeyByZXR1cm4gX19uYW1lOyB9CiMgOTgg
Ii4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvbGlic3RkYysrLXYzL2xpYnN1cGMrKy90
eXBlaW5mbyIKICAgIGJvb2wgYmVmb3JlKGNvbnN0IHR5cGVfaW5mbyYgX19hcmcpIGNvbnN0CiAg
ICB7IHJldHVybiBfX25hbWUgPCBfX2FyZy5fX25hbWU7IH0KICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCB0eXBlX2luZm8mIF9fYXJnKSBjb25zdAogICAgeyByZXR1cm4gX19uYW1lID09IF9fYXJn
Ll9fbmFtZTsgfQoKICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB0eXBlX2luZm8mIF9fYXJnKSBj
b25zdAogICAgeyByZXR1cm4gIW9wZXJhdG9yPT0oX19hcmcpOyB9CgoKICBwdWJsaWM6CgogICAg
dmlydHVhbCBib29sIF9faXNfcG9pbnRlcl9wKCkgY29uc3Q7CgogICAgdmlydHVhbCBib29sIF9f
aXNfZnVuY3Rpb25fcCgpIGNvbnN0OwoKCgoKCgoKICAgIHZpcnR1YWwgYm9vbCBfX2RvX2NhdGNo
KGNvbnN0IHR5cGVfaW5mbyAqX190aHJfdHlwZSwgdm9pZCAqKl9fdGhyX29iaiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9fb3V0ZXIpIGNvbnN0OwoKCiAgICB2aXJ0dWFs
IGJvb2wgX19kb191cGNhc3QoY29uc3QgX19jeHhhYml2MTo6X19jbGFzc190eXBlX2luZm8gKl9f
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipfX29ial9wdHIpIGNv
bnN0OwogIH07CgoKCiAgY2xhc3MgYmFkX2Nhc3QgOiBwdWJsaWMgZXhjZXB0aW9uCiAgewogIHB1
YmxpYzoKICAgIGJhZF9jYXN0KCkgdGhyb3coKSB7IH0KCgogICAgdmlydHVhbCB+YmFkX2Nhc3Qo
KSB0aHJvdygpOwogIH07CgoKICBjbGFzcyBiYWRfdHlwZWlkIDogcHVibGljIGV4Y2VwdGlvbgog
IHsKICBwdWJsaWM6CiAgICBiYWRfdHlwZWlkICgpIHRocm93KCkgeyB9CgoKICAgIHZpcnR1YWwg
fmJhZF90eXBlaWQoKSB0aHJvdygpOwogIH07Cn0KCn0KIyAzOSAiLi4vLi4vLi4vLi4vLi4vZ2Nj
LTMuMS0yMDAyMDYyMC9saWJzdGRjKystdjMvbGlic3VwYysrL3Vud2luZC1jeHguaCIgMgoKCiMg
MSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS0yMDAyMDYyMC9nY2MvdW53aW5kLmgiIDEKIyAyNSAi
Li4vLi4vLi4vLi4vLi4vZ2NjLTMuMS0yMDAyMDYyMC9nY2MvdW53aW5kLmgiCmV4dGVybiAiQyIg
ewoKCgoKCgp0eXBlZGVmIHVuc2lnbmVkIF9VbndpbmRfV29yZCBfX2F0dHJpYnV0ZV9fKChfX21v
ZGVfXyhfX3dvcmRfXykpKTsKdHlwZWRlZiBzaWduZWQgX1Vud2luZF9Td29yZCBfX2F0dHJpYnV0
ZV9fKChfX21vZGVfXyhfX3dvcmRfXykpKTsKdHlwZWRlZiB1bnNpZ25lZCBfVW53aW5kX1B0ciBf
X2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX3BvaW50ZXJfXykpKTsKCgoKCgp0eXBlZGVmIHVuc2ln
bmVkIF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElf
XykpKTsKCgoKdHlwZWRlZiBlbnVtCnsKICBfVVJDX05PX1JFQVNPTiA9IDAsCiAgX1VSQ19GT1JF
SUdOX0VYQ0VQVElPTl9DQVVHSFQgPSAxLAogIF9VUkNfRkFUQUxfUEhBU0UyX0VSUk9SID0gMiwK
ICBfVVJDX0ZBVEFMX1BIQVNFMV9FUlJPUiA9IDMsCiAgX1VSQ19OT1JNQUxfU1RPUCA9IDQsCiAg
X1VSQ19FTkRfT0ZfU1RBQ0sgPSA1LAogIF9VUkNfSEFORExFUl9GT1VORCA9IDYsCiAgX1VSQ19J
TlNUQUxMX0NPTlRFWFQgPSA3LAogIF9VUkNfQ09OVElOVUVfVU5XSU5EID0gOAp9IF9VbndpbmRf
UmVhc29uX0NvZGU7CiMgNjQgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvZ2NjL3Vu
d2luZC5oIgpzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb247Cgp0eXBlZGVmIHZvaWQgKCpfVW53aW5k
X0V4Y2VwdGlvbl9DbGVhbnVwX0ZuKSAoX1Vud2luZF9SZWFzb25fQ29kZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlv
biAqKTsKCnN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbgp7CiAgX1Vud2luZF9FeGNlcHRpb25fQ2xh
c3MgZXhjZXB0aW9uX2NsYXNzOwogIF9VbndpbmRfRXhjZXB0aW9uX0NsZWFudXBfRm4gZXhjZXB0
aW9uX2NsZWFudXA7CiAgX1Vud2luZF9Xb3JkIHByaXZhdGVfMTsKICBfVW53aW5kX1dvcmQgcHJp
dmF0ZV8yOwoKCgoKfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXykpOwoKCgoKdHlwZWRlZiBp
bnQgX1Vud2luZF9BY3Rpb247CiMgOTYgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAv
Z2NjL3Vud2luZC5oIgpzdHJ1Y3QgX1Vud2luZF9Db250ZXh0OwoKCmV4dGVybiBfVW53aW5kX1Jl
YXNvbl9Db2RlIF9VbndpbmRfUmFpc2VFeGNlcHRpb24gKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlv
biAqKTsKCgoKdHlwZWRlZiBfVW53aW5kX1JlYXNvbl9Db2RlICgqX1Vud2luZF9TdG9wX0ZuKQog
ICAgIChpbnQsIF9VbndpbmRfQWN0aW9uLCBfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcywKICAgICAg
c3RydWN0IF9VbndpbmRfRXhjZXB0aW9uICosIHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgdm9p
ZCAqKTsKCmV4dGVybiBfVW53aW5kX1JlYXNvbl9Db2RlIF9VbndpbmRfRm9yY2VkVW53aW5kIChz
dHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9VbndpbmRfU3RvcF9GbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKik7CgoKZXh0ZXJuIHZvaWQgX1Vud2lu
ZF9EZWxldGVFeGNlcHRpb24gKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKCgoKZXh0ZXJu
IHZvaWQgX1Vud2luZF9SZXN1bWUgKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKCgoKCgoK
ZXh0ZXJuIF9VbndpbmRfV29yZCBfVW53aW5kX0dldEdSIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0
ICosIGludCk7CmV4dGVybiB2b2lkIF9VbndpbmRfU2V0R1IgKHN0cnVjdCBfVW53aW5kX0NvbnRl
eHQgKiwgaW50LCBfVW53aW5kX1dvcmQpOwoKZXh0ZXJuIF9VbndpbmRfUHRyIF9VbndpbmRfR2V0
SVAgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CmV4dGVybiB2b2lkIF9VbndpbmRfU2V0SVAg
KHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKiwgX1Vud2luZF9QdHIpOwoKZXh0ZXJuIHZvaWQgKl9V
bndpbmRfR2V0TGFuZ3VhZ2VTcGVjaWZpY0RhdGEgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7
CgpleHRlcm4gX1Vud2luZF9QdHIgX1Vud2luZF9HZXRSZWdpb25TdGFydCAoc3RydWN0IF9Vbndp
bmRfQ29udGV4dCAqKTsKIyAxNDggIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvZ2Nj
L3Vud2luZC5oIgp0eXBlZGVmIF9VbndpbmRfUmVhc29uX0NvZGUgKCpfVW53aW5kX1BlcnNvbmFs
aXR5X0ZuKQogICAgIChpbnQsIF9VbndpbmRfQWN0aW9uLCBfVW53aW5kX0V4Y2VwdGlvbl9DbGFz
cywKICAgICAgc3RydWN0IF9VbndpbmRfRXhjZXB0aW9uICosIHN0cnVjdCBfVW53aW5kX0NvbnRl
eHQgKik7CgoKCgpzdHJ1Y3QgU2pMal9GdW5jdGlvbl9Db250ZXh0OwpleHRlcm4gdm9pZCBfVW53
aW5kX1NqTGpfUmVnaXN0ZXIgKHN0cnVjdCBTakxqX0Z1bmN0aW9uX0NvbnRleHQgKik7CmV4dGVy
biB2b2lkIF9VbndpbmRfU2pMal9VbnJlZ2lzdGVyIChzdHJ1Y3QgU2pMal9GdW5jdGlvbl9Db250
ZXh0ICopOwoKZXh0ZXJuIF9VbndpbmRfUmVhc29uX0NvZGUgX1Vud2luZF9TakxqX1JhaXNlRXhj
ZXB0aW9uCiAgICAgKHN0cnVjdCBfVW53aW5kX0V4Y2VwdGlvbiAqKTsKZXh0ZXJuIF9VbndpbmRf
UmVhc29uX0NvZGUgX1Vud2luZF9TakxqX0ZvcmNlZFVud2luZAogICAgIChzdHJ1Y3QgX1Vud2lu
ZF9FeGNlcHRpb24gKiwgX1Vud2luZF9TdG9wX0ZuLCB2b2lkICopOwpleHRlcm4gdm9pZCBfVW53
aW5kX1NqTGpfUmVzdW1lIChzdHJ1Y3QgX1Vud2luZF9FeGNlcHRpb24gKik7CiMgMTg2ICIuLi8u
Li8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2djYy91bndpbmQuaCIKZXh0ZXJuIF9VbndpbmRf
UHRyIF9VbndpbmRfR2V0RGF0YVJlbEJhc2UgKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CmV4
dGVybiBfVW53aW5kX1B0ciBfVW53aW5kX0dldFRleHRSZWxCYXNlIChzdHJ1Y3QgX1Vud2luZF9D
b250ZXh0ICopOwoKCgp9CiMgNDIgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvbGli
c3RkYysrLXYzL2xpYnN1cGMrKy91bndpbmQtY3h4LmgiIDIKCm5hbWVzcGFjZSBfX2N4eGFiaXYx
CnsKCgoKCgpzdHJ1Y3QgX19jeGFfZXhjZXB0aW9uCnsKCiAgc3RkOjp0eXBlX2luZm8gKmV4Y2Vw
dGlvblR5cGU7CiAgdm9pZCAoKmV4Y2VwdGlvbkRlc3RydWN0b3IpKHZvaWQgKik7CgoKCiAgc3Rk
Ojp1bmV4cGVjdGVkX2hhbmRsZXIgdW5leHBlY3RlZEhhbmRsZXI7CiAgc3RkOjp0ZXJtaW5hdGVf
aGFuZGxlciB0ZXJtaW5hdGVIYW5kbGVyOwoKCiAgX19jeGFfZXhjZXB0aW9uICpuZXh0RXhjZXB0
aW9uOwoKCgogIGludCBoYW5kbGVyQ291bnQ7CgoKCiAgaW50IGhhbmRsZXJTd2l0Y2hWYWx1ZTsK
ICBjb25zdCB1bnNpZ25lZCBjaGFyICphY3Rpb25SZWNvcmQ7CiAgY29uc3QgdW5zaWduZWQgY2hh
ciAqbGFuZ3VhZ2VTcGVjaWZpY0RhdGE7CiAgdm9pZCAqY2F0Y2hUZW1wOwogIHZvaWQgKmFkanVz
dGVkUHRyOwoKCiAgX1Vud2luZF9FeGNlcHRpb24gdW53aW5kSGVhZGVyOwp9OwoKCnN0cnVjdCBf
X2N4YV9laF9nbG9iYWxzCnsKICBfX2N4YV9leGNlcHRpb24gKmNhdWdodEV4Y2VwdGlvbnM7CiAg
dW5zaWduZWQgaW50IHVuY2F1Z2h0RXhjZXB0aW9uczsKfTsKCgoKCgoKZXh0ZXJuICJDIiBfX2N4
YV9laF9nbG9iYWxzICpfX2N4YV9nZXRfZ2xvYmFscyAoKSB0aHJvdygpOwpleHRlcm4gIkMiIF9f
Y3hhX2VoX2dsb2JhbHMgKl9fY3hhX2dldF9nbG9iYWxzX2Zhc3QgKCkgdGhyb3coKTsKCgpleHRl
cm4gIkMiIHZvaWQgKl9fY3hhX2FsbG9jYXRlX2V4Y2VwdGlvbihzdGQ6OnNpemVfdCB0aHJvd25f
c2l6ZSkgdGhyb3coKTsKCgpleHRlcm4gIkMiIHZvaWQgX19jeGFfZnJlZV9leGNlcHRpb24odm9p
ZCAqdGhyb3duX2V4Y2VwdGlvbikgdGhyb3coKTsKCgpleHRlcm4gIkMiIHZvaWQgX19jeGFfdGhy
b3cgKHZvaWQgKnRocm93bl9leGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjp0eXBlX2luZm8gKnRpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KCpkZXN0KSAodm9pZCAqKSkKICAgICBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOwoKCmV4dGVy
biAiQyIgdm9pZCAqX19jeGFfYmVnaW5fY2F0Y2ggKHZvaWQgKikgdGhyb3coKTsKZXh0ZXJuICJD
IiB2b2lkIF9fY3hhX2VuZF9jYXRjaCAoKTsKZXh0ZXJuICJDIiB2b2lkIF9fY3hhX3JldGhyb3cg
KCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKCgpleHRlcm4gIkMiIHZvaWQgX19jeGFfYmFk
X2Nhc3QgKCk7CmV4dGVybiAiQyIgdm9pZCBfX2N4YV9iYWRfdHlwZWlkICgpOwoKCgoKCgpleHRl
cm4gIkMiIHZvaWQgX19jeGFfY2FsbF91bmV4cGVjdGVkICh2b2lkICopIF9fYXR0cmlidXRlX18o
KG5vcmV0dXJuKSk7CgoKCmV4dGVybiB2b2lkIF9fdGVybWluYXRlKHN0ZDo6dGVybWluYXRlX2hh
bmRsZXIpIF9fYXR0cmlidXRlX18oKG5vcmV0dXJuKSk7CmV4dGVybiB2b2lkIF9fdW5leHBlY3Rl
ZChzdGQ6OnVuZXhwZWN0ZWRfaGFuZGxlcikgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKCgpl
eHRlcm4gc3RkOjp0ZXJtaW5hdGVfaGFuZGxlciBfX3Rlcm1pbmF0ZV9oYW5kbGVyOwpleHRlcm4g
c3RkOjp1bmV4cGVjdGVkX2hhbmRsZXIgX191bmV4cGVjdGVkX2hhbmRsZXI7CgoKCgpjb25zdCBf
VW53aW5kX0V4Y2VwdGlvbl9DbGFzcyBfX2d4eF9leGNlcHRpb25fY2xhc3MKPSAoKCgoKCgoKF9V
bndpbmRfRXhjZXB0aW9uX0NsYXNzKSAnRycKICAgICAgICAgPDwgOCB8IChfVW53aW5kX0V4Y2Vw
dGlvbl9DbGFzcykgJ04nKQogICAgICAgIDw8IDggfCAoX1Vud2luZF9FeGNlcHRpb25fQ2xhc3Mp
ICdVJykKICAgICAgIDw8IDggfCAoX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MpICdDJykKICAgICAg
PDwgOCB8IChfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcykgJ0MnKQogICAgIDw8IDggfCAoX1Vud2lu
ZF9FeGNlcHRpb25fQ2xhc3MpICcrJykKICAgIDw8IDggfCAoX1Vud2luZF9FeGNlcHRpb25fQ2xh
c3MpICcrJykKICAgPDwgOCB8IChfVW53aW5kX0V4Y2VwdGlvbl9DbGFzcykgJ1wwJyk7CgoKZXh0
ZXJuICJDIiBfVW53aW5kX1JlYXNvbl9Db2RlIF9fZ3h4X3BlcnNvbmFsaXR5X3YwCiAgICAgKGlu
dCwgX1Vud2luZF9BY3Rpb24sIF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzLAogICAgICBzdHJ1Y3Qg
X1Vud2luZF9FeGNlcHRpb24gKiwgc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCgpleHRlcm4g
IkMiIF9VbndpbmRfUmVhc29uX0NvZGUgX19neHhfcGVyc29uYWxpdHlfc2owCiAgICAgKGludCwg
X1Vud2luZF9BY3Rpb24sIF9VbndpbmRfRXhjZXB0aW9uX0NsYXNzLAogICAgICBzdHJ1Y3QgX1Vu
d2luZF9FeGNlcHRpb24gKiwgc3RydWN0IF9VbndpbmRfQ29udGV4dCAqKTsKCgpzdGF0aWMgaW5s
aW5lIF9fY3hhX2V4Y2VwdGlvbiAqCl9fZ2V0X2V4Y2VwdGlvbl9oZWFkZXJfZnJvbV9vYmogKHZv
aWQgKnB0cikKewogIHJldHVybiByZWludGVycHJldF9jYXN0PF9fY3hhX2V4Y2VwdGlvbiAqPihw
dHIpIC0gMTsKfQoKCnN0YXRpYyBpbmxpbmUgX19jeGFfZXhjZXB0aW9uICoKX19nZXRfZXhjZXB0
aW9uX2hlYWRlcl9mcm9tX3VlIChfVW53aW5kX0V4Y2VwdGlvbiAqZXhjKQp7CiAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8X19jeGFfZXhjZXB0aW9uICo+KGV4YyArIDEpIC0gMTsKfQoKfQojIDM1
ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2xpYnN0ZGMrKy12My9saWJzdXBjKysv
ZWhfcGVyc29uYWxpdHkuY2MiIDIKCnVzaW5nIG5hbWVzcGFjZSBfX2N4eGFiaXYxOwoKIyAxICIu
Li8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2djYy91bndpbmQtcGUuaCIgMQojIDU5ICIu
Li8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2djYy91bndpbmQtcGUuaCIKc3RhdGljIHVu
c2lnbmVkIGludApzaXplX29mX2VuY29kZWRfdmFsdWUgKHVuc2lnbmVkIGNoYXIgZW5jb2Rpbmcp
CnsKICBpZiAoZW5jb2RpbmcgPT0gMHhmZikKICAgIHJldHVybiAwOwoKICBzd2l0Y2ggKGVuY29k
aW5nICYgMHgwNykKICAgIHsKICAgIGNhc2UgMHgwMDoKICAgICAgcmV0dXJuIHNpemVvZiAodm9p
ZCAqKTsKICAgIGNhc2UgMHgwMjoKICAgICAgcmV0dXJuIDI7CiAgICBjYXNlIDB4MDM6CiAgICAg
IHJldHVybiA0OwogICAgY2FzZSAweDA0OgogICAgICByZXR1cm4gODsKICAgIH0KICBzdGQ6OmFi
b3J0ICgpOwp9CiMgODYgIi4uLy4uLy4uLy4uLy4uL2djYy0zLjEtMjAwMjA2MjAvZ2NjL3Vud2lu
ZC1wZS5oIgpzdGF0aWMgX1Vud2luZF9QdHIKYmFzZV9vZl9lbmNvZGVkX3ZhbHVlICh1bnNpZ25l
ZCBjaGFyIGVuY29kaW5nLCBzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0KQp7CiAgaWYg
KGVuY29kaW5nID09IDB4ZmYpCiAgICByZXR1cm4gMDsKCiAgc3dpdGNoIChlbmNvZGluZyAmIDB4
NzApCiAgICB7CiAgICBjYXNlIDB4MDA6CiAgICBjYXNlIDB4MTA6CiAgICBjYXNlIDB4NTA6CiAg
ICAgIHJldHVybiAwOwoKICAgIGNhc2UgMHgyMDoKICAgICAgcmV0dXJuIF9VbndpbmRfR2V0VGV4
dFJlbEJhc2UgKGNvbnRleHQpOwogICAgY2FzZSAweDMwOgogICAgICByZXR1cm4gX1Vud2luZF9H
ZXREYXRhUmVsQmFzZSAoY29udGV4dCk7CiAgICBjYXNlIDB4NDA6CiAgICAgIHJldHVybiBfVW53
aW5kX0dldFJlZ2lvblN0YXJ0IChjb250ZXh0KTsKICAgIH0KICBzdGQ6OmFib3J0ICgpOwp9CiMg
MTE2ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2djYy91bndpbmQtcGUuaCIKc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKgpyZWFkX3VsZWIxMjggKGNvbnN0IHVuc2lnbmVkIGNo
YXIgKnAsIF9VbndpbmRfV29yZCAqdmFsKQp7CiAgdW5zaWduZWQgaW50IHNoaWZ0ID0gMDsKICB1
bnNpZ25lZCBjaGFyIGJ5dGU7CiAgX1Vud2luZF9Xb3JkIHJlc3VsdDsKCiAgcmVzdWx0ID0gMDsK
ICBkbwogICAgewogICAgICBieXRlID0gKnArKzsKICAgICAgcmVzdWx0IHw9IChieXRlICYgMHg3
ZikgPDwgc2hpZnQ7CiAgICAgIHNoaWZ0ICs9IDc7CiAgICB9CiAgd2hpbGUgKGJ5dGUgJiAweDgw
KTsKCiAgKnZhbCA9IHJlc3VsdDsKICByZXR1cm4gcDsKfQoKCgpzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2hhciAqCnJlYWRfc2xlYjEyOCAoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgX1Vud2luZF9T
d29yZCAqdmFsKQp7CiAgdW5zaWduZWQgaW50IHNoaWZ0ID0gMDsKICB1bnNpZ25lZCBjaGFyIGJ5
dGU7CiAgX1Vud2luZF9Xb3JkIHJlc3VsdDsKCiAgcmVzdWx0ID0gMDsKICBkbwogICAgewogICAg
ICBieXRlID0gKnArKzsKICAgICAgcmVzdWx0IHw9IChieXRlICYgMHg3ZikgPDwgc2hpZnQ7CiAg
ICAgIHNoaWZ0ICs9IDc7CiAgICB9CiAgd2hpbGUgKGJ5dGUgJiAweDgwKTsKCgogIGlmIChzaGlm
dCA8IDggKiBzaXplb2YocmVzdWx0KSAmJiAoYnl0ZSAmIDB4NDApICE9IDApCiAgICByZXN1bHQg
fD0gLSgxTCA8PCBzaGlmdCk7CgogICp2YWwgPSAoX1Vud2luZF9Td29yZCkgcmVzdWx0OwogIHJl
dHVybiBwOwp9CgoKCgoKc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKgpyZWFkX2VuY29kZWRf
dmFsdWVfd2l0aF9iYXNlICh1bnNpZ25lZCBjaGFyIGVuY29kaW5nLCBfVW53aW5kX1B0ciBiYXNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBf
VW53aW5kX1B0ciAqdmFsKQp7CiAgdW5pb24gdW5hbGlnbmVkCiAgICB7CiAgICAgIHZvaWQgKnB0
cjsKICAgICAgdW5zaWduZWQgdTIgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKEhJKSkpOwogICAgICB1
bnNpZ25lZCB1NCBfX2F0dHJpYnV0ZV9fICgobW9kZSAoU0kpKSk7CiAgICAgIHVuc2lnbmVkIHU4
IF9fYXR0cmlidXRlX18gKChtb2RlIChESSkpKTsKICAgICAgc2lnbmVkIHMyIF9fYXR0cmlidXRl
X18gKChtb2RlIChISSkpKTsKICAgICAgc2lnbmVkIHM0IF9fYXR0cmlidXRlX18gKChtb2RlIChT
SSkpKTsKICAgICAgc2lnbmVkIHM4IF9fYXR0cmlidXRlX18gKChtb2RlIChESSkpKTsKICAgIH0g
X19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpOwoKICB1bmlvbiB1bmFsaWduZWQgKnUgPSAodW5p
b24gdW5hbGlnbmVkICopIHA7CiAgX1Vud2luZF9QdHIgcmVzdWx0OwoKICBpZiAoZW5jb2Rpbmcg
PT0gMHg1MCkKICAgIHsKICAgICAgX1Vud2luZF9QdHIgYSA9IChfVW53aW5kX1B0cikgcDsKICAg
ICAgYSA9IChhICsgc2l6ZW9mICh2b2lkICopIC0gMSkgJiAtIHNpemVvZih2b2lkICopOwogICAg
ICByZXN1bHQgPSAqKF9VbndpbmRfUHRyICopIGE7CiAgICAgIHAgPSAoY29uc3QgdW5zaWduZWQg
Y2hhciAqKSAoYSArIHNpemVvZiAodm9pZCAqKSk7CiAgICB9CiAgZWxzZQogICAgewogICAgICBz
d2l0Y2ggKGVuY29kaW5nICYgMHgwZikKICAgICAgICB7CiAgICAgICAgY2FzZSAweDAwOgogICAg
ICAgICAgcmVzdWx0ID0gKF9VbndpbmRfUHRyKSB1LT5wdHI7CiAgICAgICAgICBwICs9IHNpemVv
ZiAodm9pZCAqKTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDE6CiAgICAgICAg
ICB7CiAgICAgICAgICAgIF9VbndpbmRfV29yZCB0bXA7CiAgICAgICAgICAgIHAgPSByZWFkX3Vs
ZWIxMjggKHAsICZ0bXApOwogICAgICAgICAgICByZXN1bHQgPSAoX1Vud2luZF9QdHIpIHRtcDsK
ICAgICAgICAgIH0KICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlIDB4MDk6CiAgICAgICAg
ICB7CiAgICAgICAgICAgIF9VbndpbmRfU3dvcmQgdG1wOwogICAgICAgICAgICBwID0gcmVhZF9z
bGViMTI4IChwLCAmdG1wKTsKICAgICAgICAgICAgcmVzdWx0ID0gKF9VbndpbmRfUHRyKSB0bXA7
CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAweDAyOgogICAgICAg
ICAgcmVzdWx0ID0gdS0+dTI7CiAgICAgICAgICBwICs9IDI7CiAgICAgICAgICBicmVhazsKICAg
ICAgICBjYXNlIDB4MDM6CiAgICAgICAgICByZXN1bHQgPSB1LT51NDsKICAgICAgICAgIHAgKz0g
NDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgMHgwNDoKICAgICAgICAgIHJlc3VsdCA9
IHUtPnU4OwogICAgICAgICAgcCArPSA4OwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2Ug
MHgwQToKICAgICAgICAgIHJlc3VsdCA9IHUtPnMyOwogICAgICAgICAgcCArPSAyOwogICAgICAg
ICAgYnJlYWs7CiAgICAgICAgY2FzZSAweDBCOgogICAgICAgICAgcmVzdWx0ID0gdS0+czQ7CiAg
ICAgICAgICBwICs9IDQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDB4MEM6CiAgICAg
ICAgICByZXN1bHQgPSB1LT5zODsKICAgICAgICAgIHAgKz0gODsKICAgICAgICAgIGJyZWFrOwoK
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgc3RkOjphYm9ydCAoKTsKICAgICAgICB9CgogICAg
ICBpZiAocmVzdWx0ICE9IDApCiAgICAgICAgewogICAgICAgICAgcmVzdWx0ICs9ICgoZW5jb2Rp
bmcgJiAweDcwKSA9PSAweDEwCiAgICAgICAgICAgICAgICAgICAgID8gKF9VbndpbmRfUHRyKSB1
IDogYmFzZSk7CiAgICAgICAgICBpZiAoZW5jb2RpbmcgJiAweDgwKQogICAgICAgICAgICByZXN1
bHQgPSAqKF9VbndpbmRfUHRyICopIHJlc3VsdDsKICAgICAgICB9CiAgICB9CgogICp2YWwgPSBy
ZXN1bHQ7CiAgcmV0dXJuIHA7Cn0KCgoKCgoKc3RhdGljIGlubGluZSBjb25zdCB1bnNpZ25lZCBj
aGFyICoKcmVhZF9lbmNvZGVkX3ZhbHVlIChzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0
LCB1bnNpZ25lZCBjaGFyIGVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGNoYXIgKnAsIF9VbndpbmRfUHRyICp2YWwpCnsKICByZXR1cm4gcmVhZF9lbmNvZGVkX3Zh
bHVlX3dpdGhfYmFzZSAoZW5jb2RpbmcsCiAgICAgICAgICAgICAgICBiYXNlX29mX2VuY29kZWRf
dmFsdWUgKGVuY29kaW5nLCBjb250ZXh0KSwKICAgICAgICAgICAgICAgIHAsIHZhbCk7Cn0KIyAz
OSAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMuMS0yMDAyMDYyMC9saWJzdGRjKystdjMvbGlic3VwYysr
L2VoX3BlcnNvbmFsaXR5LmNjIiAyCgoKc3RydWN0IGxzZGFfaGVhZGVyX2luZm8KewogIF9Vbndp
bmRfUHRyIFN0YXJ0OwogIF9VbndpbmRfUHRyIExQU3RhcnQ7CiAgX1Vud2luZF9QdHIgdHR5cGVf
YmFzZTsKICBjb25zdCB1bnNpZ25lZCBjaGFyICpUVHlwZTsKICBjb25zdCB1bnNpZ25lZCBjaGFy
ICphY3Rpb25fdGFibGU7CiAgdW5zaWduZWQgY2hhciB0dHlwZV9lbmNvZGluZzsKICB1bnNpZ25l
ZCBjaGFyIGNhbGxfc2l0ZV9lbmNvZGluZzsKfTsKCnN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
ICoKcGFyc2VfbHNkYV9oZWFkZXIgKF9VbndpbmRfQ29udGV4dCAqY29udGV4dCwgY29uc3QgdW5z
aWduZWQgY2hhciAqcCwKICAgICAgICAgICAgICAgICAgIGxzZGFfaGVhZGVyX2luZm8gKmluZm8p
CnsKICBfVW53aW5kX1dvcmQgdG1wOwogIHVuc2lnbmVkIGNoYXIgbHBzdGFydF9lbmNvZGluZzsK
CiAgaW5mby0+U3RhcnQgPSAoY29udGV4dCA/IF9VbndpbmRfR2V0UmVnaW9uU3RhcnQgKGNvbnRl
eHQpIDogMCk7CgoKICBscHN0YXJ0X2VuY29kaW5nID0gKnArKzsKICBpZiAobHBzdGFydF9lbmNv
ZGluZyAhPSAweGZmKQogICAgcCA9IHJlYWRfZW5jb2RlZF92YWx1ZSAoY29udGV4dCwgbHBzdGFy
dF9lbmNvZGluZywgcCwgJmluZm8tPkxQU3RhcnQpOwogIGVsc2UKICAgIGluZm8tPkxQU3RhcnQg
PSBpbmZvLT5TdGFydDsKCgogIGluZm8tPnR0eXBlX2VuY29kaW5nID0gKnArKzsKICBpZiAoaW5m
by0+dHR5cGVfZW5jb2RpbmcgIT0gMHhmZikKICAgIHsKICAgICAgcCA9IHJlYWRfdWxlYjEyOCAo
cCwgJnRtcCk7CiAgICAgIGluZm8tPlRUeXBlID0gcCArIHRtcDsKICAgIH0KICBlbHNlCiAgICBp
bmZvLT5UVHlwZSA9IDA7CgoKCiAgaW5mby0+Y2FsbF9zaXRlX2VuY29kaW5nID0gKnArKzsKICBw
ID0gcmVhZF91bGViMTI4IChwLCAmdG1wKTsKICBpbmZvLT5hY3Rpb25fdGFibGUgPSBwICsgdG1w
OwoKICByZXR1cm4gcDsKfQoKc3RhdGljIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICoKZ2V0X3R0eXBl
X2VudHJ5IChsc2RhX2hlYWRlcl9pbmZvICppbmZvLCBfVW53aW5kX1dvcmQgaSkKewogIF9Vbndp
bmRfUHRyIHB0cjsKCiAgaSAqPSBzaXplX29mX2VuY29kZWRfdmFsdWUgKGluZm8tPnR0eXBlX2Vu
Y29kaW5nKTsKICByZWFkX2VuY29kZWRfdmFsdWVfd2l0aF9iYXNlIChpbmZvLT50dHlwZV9lbmNv
ZGluZywgaW5mby0+dHR5cGVfYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmZvLT5UVHlwZSAtIGksICZwdHIpOwoKICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBz
dGQ6OnR5cGVfaW5mbyAqPihwdHIpOwp9CgoKCgoKCnN0YXRpYyBib29sCmdldF9hZGp1c3RlZF9w
dHIgKGNvbnN0IHN0ZDo6dHlwZV9pbmZvICpjYXRjaF90eXBlLAogICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnR5cGVfaW5mbyAqdGhyb3dfdHlwZSwKICAgICAgICAgICAgICAgICAgdm9pZCAq
KnRocm93bl9wdHJfcCkKewogIHZvaWQgKnRocm93bl9wdHIgPSAqdGhyb3duX3B0cl9wOwoKCgoK
CiAgaWYgKHRocm93X3R5cGUtPl9faXNfcG9pbnRlcl9wICgpKQogICAgdGhyb3duX3B0ciA9ICoo
dm9pZCAqKikgdGhyb3duX3B0cjsKCiAgaWYgKGNhdGNoX3R5cGUtPl9fZG9fY2F0Y2ggKHRocm93
X3R5cGUsICZ0aHJvd25fcHRyLCAxKSkKICAgIHsKICAgICAgKnRocm93bl9wdHJfcCA9IHRocm93
bl9wdHI7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICByZXR1cm4gZmFsc2U7Cn0KCnN0YXRp
YyBib29sCmNoZWNrX2V4Y2VwdGlvbl9zcGVjIChsc2RhX2hlYWRlcl9pbmZvICppbmZvLCBjb25z
dCBzdGQ6OnR5cGVfaW5mbyAqdGhyb3dfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgIHZvaWQg
KnRocm93bl9wdHIsIF9VbndpbmRfU3dvcmQgZmlsdGVyX3ZhbHVlKQp7CiAgY29uc3QgdW5zaWdu
ZWQgY2hhciAqZSA9IGluZm8tPlRUeXBlIC0gZmlsdGVyX3ZhbHVlIC0gMTsKCiAgd2hpbGUgKDEp
CiAgICB7CiAgICAgIGNvbnN0IHN0ZDo6dHlwZV9pbmZvICpjYXRjaF90eXBlOwogICAgICBfVW53
aW5kX1dvcmQgdG1wOwoKICAgICAgZSA9IHJlYWRfdWxlYjEyOCAoZSwgJnRtcCk7CgoKCiAgICAg
IGlmICh0bXAgPT0gMCkKICAgICAgICByZXR1cm4gZmFsc2U7CgoKICAgICAgY2F0Y2hfdHlwZSA9
IGdldF90dHlwZV9lbnRyeSAoaW5mbywgdG1wKTsKCgoKCgogICAgICBpZiAoZ2V0X2FkanVzdGVk
X3B0ciAoY2F0Y2hfdHlwZSwgdGhyb3dfdHlwZSwgJnRocm93bl9wdHIpKQogICAgICAgIHJldHVy
biB0cnVlOwogICAgfQp9CiMgMTY2ICIuLi8uLi8uLi8uLi8uLi9nY2MtMy4xLTIwMDIwNjIwL2xp
YnN0ZGMrKy12My9saWJzdXBjKysvZWhfcGVyc29uYWxpdHkuY2MiCmV4dGVybiAiQyIgX1Vud2lu
ZF9SZWFzb25fQ29kZQpfX2d4eF9wZXJzb25hbGl0eV92MCAoaW50IHZlcnNpb24sCiAgICAgICAg
ICAgICAgICAgICAgICBfVW53aW5kX0FjdGlvbiBhY3Rpb25zLAogICAgICAgICAgICAgICAgICAg
ICAgX1Vud2luZF9FeGNlcHRpb25fQ2xhc3MgZXhjZXB0aW9uX2NsYXNzLAogICAgICAgICAgICAg
ICAgICAgICAgc3RydWN0IF9VbndpbmRfRXhjZXB0aW9uICp1ZV9oZWFkZXIsCiAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QgX1Vud2luZF9Db250ZXh0ICpjb250ZXh0KQp7CiAgX19jeGFfZXhj
ZXB0aW9uICp4aCA9IF9fZ2V0X2V4Y2VwdGlvbl9oZWFkZXJfZnJvbV91ZSAodWVfaGVhZGVyKTsK
CiAgZW51bSBmb3VuZF9oYW5kbGVyX3R5cGUKICB7CiAgICBmb3VuZF9ub3RoaW5nLAogICAgZm91
bmRfdGVybWluYXRlLAogICAgZm91bmRfY2xlYW51cCwKICAgIGZvdW5kX2hhbmRsZXIKICB9IGZv
dW5kX3R5cGU7CgogIGxzZGFfaGVhZGVyX2luZm8gaW5mbzsKICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpsYW5ndWFnZV9zcGVjaWZpY19kYXRhOwogIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFjdGlvbl9y
ZWNvcmQ7CiAgY29uc3QgdW5zaWduZWQgY2hhciAqcDsKICBfVW53aW5kX1B0ciBsYW5kaW5nX3Bh
ZCwgaXA7CiAgaW50IGhhbmRsZXJfc3dpdGNoX3ZhbHVlOwogIHZvaWQgKnRocm93bl9wdHIgPSB4
aCArIDE7CgoKICBpZiAodmVyc2lvbiAhPSAxKQogICAgcmV0dXJuIF9VUkNfRkFUQUxfUEhBU0Ux
X0VSUk9SOwoKCiAgaWYgKGFjdGlvbnMgPT0gKDIgfCA0KQogICAgICAmJiBleGNlcHRpb25fY2xh
c3MgPT0gX19neHhfZXhjZXB0aW9uX2NsYXNzKQogICAgewogICAgICBoYW5kbGVyX3N3aXRjaF92
YWx1ZSA9IHhoLT5oYW5kbGVyU3dpdGNoVmFsdWU7CiAgICAgIGxhbmRpbmdfcGFkID0gKF9Vbndp
bmRfUHRyKSB4aC0+Y2F0Y2hUZW1wOwogICAgICBmb3VuZF90eXBlID0gKGxhbmRpbmdfcGFkID09
IDAgPyBmb3VuZF90ZXJtaW5hdGUgOiBmb3VuZF9oYW5kbGVyKTsKICAgICAgZ290byBpbnN0YWxs
X2NvbnRleHQ7CiAgICB9CgogIGxhbmd1YWdlX3NwZWNpZmljX2RhdGEgPSAoY29uc3QgdW5zaWdu
ZWQgY2hhciAqKQogICAgX1Vud2luZF9HZXRMYW5ndWFnZVNwZWNpZmljRGF0YSAoY29udGV4dCk7
CgoKICBpZiAoISBsYW5ndWFnZV9zcGVjaWZpY19kYXRhKQogICAgcmV0dXJuIF9VUkNfQ09OVElO
VUVfVU5XSU5EOwoKCiAgcCA9IHBhcnNlX2xzZGFfaGVhZGVyIChjb250ZXh0LCBsYW5ndWFnZV9z
cGVjaWZpY19kYXRhLCAmaW5mbyk7CiAgaW5mby50dHlwZV9iYXNlID0gYmFzZV9vZl9lbmNvZGVk
X3ZhbHVlIChpbmZvLnR0eXBlX2VuY29kaW5nLCBjb250ZXh0KTsKICBpcCA9IF9VbndpbmRfR2V0
SVAgKGNvbnRleHQpIC0gMTsKICBsYW5kaW5nX3BhZCA9IDA7CiAgYWN0aW9uX3JlY29yZCA9IDA7
CiAgaGFuZGxlcl9zd2l0Y2hfdmFsdWUgPSAwOwojIDI1MCAiLi4vLi4vLi4vLi4vLi4vZ2NjLTMu
MS0yMDAyMDYyMC9saWJzdGRjKystdjMvbGlic3VwYysrL2VoX3BlcnNvbmFsaXR5LmNjIgogIHdo
aWxlIChwIDwgaW5mby5hY3Rpb25fdGFibGUpCiAgICB7CiAgICAgIF9VbndpbmRfUHRyIGNzX3N0
YXJ0LCBjc19sZW4sIGNzX2xwOwogICAgICBfVW53aW5kX1dvcmQgY3NfYWN0aW9uOwoKCiAgICAg
IHAgPSByZWFkX2VuY29kZWRfdmFsdWUgKDAsIGluZm8uY2FsbF9zaXRlX2VuY29kaW5nLCBwLCAm
Y3Nfc3RhcnQpOwogICAgICBwID0gcmVhZF9lbmNvZGVkX3ZhbHVlICgwLCBpbmZvLmNhbGxfc2l0
ZV9lbmNvZGluZywgcCwgJmNzX2xlbik7CiAgICAgIHAgPSByZWFkX2VuY29kZWRfdmFsdWUgKDAs
IGluZm8uY2FsbF9zaXRlX2VuY29kaW5nLCBwLCAmY3NfbHApOwogICAgICBwID0gcmVhZF91bGVi
MTI4IChwLCAmY3NfYWN0aW9uKTsKCgogICAgICBpZiAoaXAgPCBpbmZvLlN0YXJ0ICsgY3Nfc3Rh
cnQpCiAgICAgICAgcCA9IGluZm8uYWN0aW9uX3RhYmxlOwogICAgICBlbHNlIGlmIChpcCA8IGlu
Zm8uU3RhcnQgKyBjc19zdGFydCArIGNzX2xlbikKICAgICAgICB7CiAgICAgICAgICBpZiAoY3Nf
bHApCiAgICAgICAgICAgIGxhbmRpbmdfcGFkID0gaW5mby5MUFN0YXJ0ICsgY3NfbHA7CiAgICAg
ICAgICBpZiAoY3NfYWN0aW9uKQogICAgICAgICAgICBhY3Rpb25fcmVjb3JkID0gaW5mby5hY3Rp
b25fdGFibGUgKyBjc19hY3Rpb24gLSAxOwogICAgICAgICAgZ290byBmb3VuZF9zb21ldGhpbmc7
CiAgICAgICAgfQogICAgfQoKCgoKCiAgZm91bmRfdHlwZSA9IChhY3Rpb25zICYgOCA/IGZvdW5k
X25vdGhpbmcgOiBmb3VuZF90ZXJtaW5hdGUpOwogIGdvdG8gZG9fc29tZXRoaW5nOwoKIGZvdW5k
X3NvbWV0aGluZzoKICBpZiAobGFuZGluZ19wYWQgPT0gMCkKICAgIHsKCgogICAgICBmb3VuZF90
eXBlID0gZm91bmRfbm90aGluZzsKICAgIH0KICBlbHNlIGlmIChhY3Rpb25fcmVjb3JkID09IDAp
CiAgICB7CgoKCiAgICAgIGZvdW5kX3R5cGUgPSBmb3VuZF9jbGVhbnVwOwogICAgfQogIGVsc2UK
ICAgIHsKCgogICAgICBfVW53aW5kX1N3b3JkIGFyX2ZpbHRlciwgYXJfZGlzcDsKICAgICAgY29u
c3Qgc3RkOjp0eXBlX2luZm8gKnRocm93X3R5cGUsICpjYXRjaF90eXBlOwogICAgICBib29sIHNh
d19jbGVhbnVwID0gZmFsc2U7CiAgICAgIGJvb2wgc2F3X2hhbmRsZXIgPSBmYWxzZTsKCgoKCgog
ICAgICBpZiAoKGFjdGlvbnMgJiA4KQogICAgICAgICAgfHwgZXhjZXB0aW9uX2NsYXNzICE9IF9f
Z3h4X2V4Y2VwdGlvbl9jbGFzcykKICAgICAgICB0aHJvd190eXBlID0gMDsKICAgICAgZWxzZQog
ICAgICAgIHRocm93X3R5cGUgPSB4aC0+ZXhjZXB0aW9uVHlwZTsKCiAgICAgIHdoaWxlICgxKQog
ICAgICAgIHsKICAgICAgICAgIHAgPSBhY3Rpb25fcmVjb3JkOwogICAgICAgICAgcCA9IHJlYWRf
c2xlYjEyOCAocCwgJmFyX2ZpbHRlcik7CiAgICAgICAgICByZWFkX3NsZWIxMjggKHAsICZhcl9k
aXNwKTsKCiAgICAgICAgICBpZiAoYXJfZmlsdGVyID09IDApCiAgICAgICAgICAgIHsKCiAgICAg
ICAgICAgICAgc2F3X2NsZWFudXAgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICBlbHNl
IGlmIChhcl9maWx0ZXIgPiAwKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgIGNhdGNoX3R5
cGUgPSBnZXRfdHR5cGVfZW50cnkgKCZpbmZvLCBhcl9maWx0ZXIpOwoKCgogICAgICAgICAgICAg
IGlmICghIGNhdGNoX3R5cGUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGlm
ICghKGFjdGlvbnMgJiA4KSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
ICAgICBzYXdfaGFuZGxlciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBp
ZiAodGhyb3dfdHlwZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgaWYgKGdl
dF9hZGp1c3RlZF9wdHIgKGNhdGNoX3R5cGUsIHRocm93X3R5cGUsICZ0aHJvd25fcHRyKSkKICAg
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBzYXdfaGFuZGxlciA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ewoKCgoKICAgICAgICAgICAgICBpZiAodGhyb3dfdHlwZQogICAgICAgICAgICAgICAgICAmJiAh
IGNoZWNrX2V4Y2VwdGlvbl9zcGVjICgmaW5mbywgdGhyb3dfdHlwZSwgdGhyb3duX3B0ciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJfZmlsdGVyKSkKICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgc2F3X2hhbmRsZXIgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAg
ICAgICAgIGlmIChhcl9kaXNwID09IDApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgYWN0
aW9uX3JlY29yZCA9IHAgKyBhcl9kaXNwOwogICAgICAgIH0KCiAgICAgIGlmIChzYXdfaGFuZGxl
cikKICAgICAgICB7CiAgICAgICAgICBoYW5kbGVyX3N3aXRjaF92YWx1ZSA9IGFyX2ZpbHRlcjsK
ICAgICAgICAgIGZvdW5kX3R5cGUgPSBmb3VuZF9oYW5kbGVyOwogICAgICAgIH0KICAgICAgZWxz
ZQogICAgICAgIGZvdW5kX3R5cGUgPSAoc2F3X2NsZWFudXAgPyBmb3VuZF9jbGVhbnVwIDogZm91
bmRfbm90aGluZyk7CiAgICB9CgogZG9fc29tZXRoaW5nOgogICBpZiAoZm91bmRfdHlwZSA9PSBm
b3VuZF9ub3RoaW5nKQogICAgIHJldHVybiBfVVJDX0NPTlRJTlVFX1VOV0lORDsKCiAgaWYgKGFj
dGlvbnMgJiAxKQogICAgewogICAgICBpZiAoZm91bmRfdHlwZSA9PSBmb3VuZF9jbGVhbnVwKQog
ICAgICAgIHJldHVybiBfVVJDX0NPTlRJTlVFX1VOV0lORDsKCgogICAgICBpZiAoZXhjZXB0aW9u
X2NsYXNzID09IF9fZ3h4X2V4Y2VwdGlvbl9jbGFzcykKICAgICAgICB7CiAgICAgICAgICB4aC0+
aGFuZGxlclN3aXRjaFZhbHVlID0gaGFuZGxlcl9zd2l0Y2hfdmFsdWU7CiAgICAgICAgICB4aC0+
YWN0aW9uUmVjb3JkID0gYWN0aW9uX3JlY29yZDsKICAgICAgICAgIHhoLT5sYW5ndWFnZVNwZWNp
ZmljRGF0YSA9IGxhbmd1YWdlX3NwZWNpZmljX2RhdGE7CiAgICAgICAgICB4aC0+YWRqdXN0ZWRQ
dHIgPSB0aHJvd25fcHRyOwoKCgogICAgICAgICAgeGgtPmNhdGNoVGVtcCA9ICh2b2lkICopIChf
VW53aW5kX1B0cikgbGFuZGluZ19wYWQ7CiAgICAgICAgfQogICAgICByZXR1cm4gX1VSQ19IQU5E
TEVSX0ZPVU5EOwogICAgfQoKIGluc3RhbGxfY29udGV4dDoKICBpZiAoZm91bmRfdHlwZSA9PSBm
b3VuZF90ZXJtaW5hdGUpCiAgICB7CiAgICAgIF9fY3hhX2JlZ2luX2NhdGNoICgmeGgtPnVud2lu
ZEhlYWRlcik7CiAgICAgIF9fdGVybWluYXRlICh4aC0+dGVybWluYXRlSGFuZGxlcik7CiAgICB9
CgoKCiAgaWYgKGhhbmRsZXJfc3dpdGNoX3ZhbHVlIDwgMCkKICAgIHsKICAgICAgcGFyc2VfbHNk
YV9oZWFkZXIgKGNvbnRleHQsIHhoLT5sYW5ndWFnZVNwZWNpZmljRGF0YSwgJmluZm8pOwogICAg
ICB4aC0+Y2F0Y2hUZW1wID0gKHZvaWQgKikgYmFzZV9vZl9lbmNvZGVkX3ZhbHVlIChpbmZvLnR0
eXBlX2VuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0KTsKICAgIH0KCiAgX1Vud2luZF9TZXRHUiAoY29udGV4dCwgX19i
dWlsdGluX2VoX3JldHVybl9kYXRhX3JlZ25vICgwKSwKICAgICAgICAgICAgICAgICAoX1Vud2lu
ZF9QdHIpICZ4aC0+dW53aW5kSGVhZGVyKTsKICBfVW53aW5kX1NldEdSIChjb250ZXh0LCBfX2J1
aWx0aW5fZWhfcmV0dXJuX2RhdGFfcmVnbm8gKDEpLAogICAgICAgICAgICAgICAgIGhhbmRsZXJf
c3dpdGNoX3ZhbHVlKTsKICBfVW53aW5kX1NldElQIChjb250ZXh0LCBsYW5kaW5nX3BhZCk7CiAg
cmV0dXJuIF9VUkNfSU5TVEFMTF9DT05URVhUOwp9CgpleHRlcm4gIkMiIHZvaWQKX19jeGFfY2Fs
bF91bmV4cGVjdGVkICh2b2lkICpleGNfb2JqX2luKQp7CiAgX1Vud2luZF9FeGNlcHRpb24gKmV4
Y19vYmoKICAgID0gcmVpbnRlcnByZXRfY2FzdCA8X1Vud2luZF9FeGNlcHRpb24gKj4oZXhjX29i
al9pbik7CgogIF9fY3hhX2JlZ2luX2NhdGNoIChleGNfb2JqKTsKCgoKICBzdHJ1Y3QgZW5kX2Nh
dGNoX3Byb3RlY3QKICB7CiAgICBlbmRfY2F0Y2hfcHJvdGVjdCgpIHsgfQogICAgfmVuZF9jYXRj
aF9wcm90ZWN0KCkgeyBfX2N4YV9lbmRfY2F0Y2goKTsgfQogIH0gZW5kX2NhdGNoX3Byb3RlY3Rf
b2JqOwoKICBsc2RhX2hlYWRlcl9pbmZvIGluZm87CiAgX19jeGFfZXhjZXB0aW9uICp4aCA9IF9f
Z2V0X2V4Y2VwdGlvbl9oZWFkZXJfZnJvbV91ZSAoZXhjX29iaik7CiAgY29uc3QgdW5zaWduZWQg
Y2hhciAqeGhfbHNkYTsKICBfVW53aW5kX1N3b3JkIHhoX3N3aXRjaF92YWx1ZTsKICBzdGQ6OnRl
cm1pbmF0ZV9oYW5kbGVyIHhoX3Rlcm1pbmF0ZV9oYW5kbGVyOwoKCgogIHhoX2xzZGEgPSB4aC0+
bGFuZ3VhZ2VTcGVjaWZpY0RhdGE7CiAgeGhfc3dpdGNoX3ZhbHVlID0geGgtPmhhbmRsZXJTd2l0
Y2hWYWx1ZTsKICB4aF90ZXJtaW5hdGVfaGFuZGxlciA9IHhoLT50ZXJtaW5hdGVIYW5kbGVyOwog
IGluZm8udHR5cGVfYmFzZSA9IChfVW53aW5kX1B0cikgeGgtPmNhdGNoVGVtcDsKCiAgdHJ5CiAg
ICB7IF9fdW5leHBlY3RlZCAoeGgtPnVuZXhwZWN0ZWRIYW5kbGVyKTsgfQogIGNhdGNoKC4uLikK
ICAgIHsKCgoKICAgICAgX19jeGFfZWhfZ2xvYmFscyAqZ2xvYmFscyA9IF9fY3hhX2dldF9nbG9i
YWxzX2Zhc3QgKCk7CiAgICAgIF9fY3hhX2V4Y2VwdGlvbiAqbmV3X3hoID0gZ2xvYmFscy0+Y2F1
Z2h0RXhjZXB0aW9uczsKICAgICAgdm9pZCAqbmV3X3B0ciA9IG5ld194aCArIDE7CgoKICAgICAg
cGFyc2VfbHNkYV9oZWFkZXIgKDAsIHhoX2xzZGEsICZpbmZvKTsKCgogICAgICBpZiAoY2hlY2tf
ZXhjZXB0aW9uX3NwZWMgKCZpbmZvLCBuZXdfeGgtPmV4Y2VwdGlvblR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3X3B0ciwgeGhfc3dpdGNoX3ZhbHVlKSkKICAgICAgICB0
aHJvdzsKCgoKCgogICAgICBjb25zdCBzdGQ6OnR5cGVfaW5mbyAmYmFkX2V4YyA9IHR5cGVpZCAo
c3RkOjpiYWRfZXhjZXB0aW9uKTsKICAgICAgaWYgKGNoZWNrX2V4Y2VwdGlvbl9zcGVjICgmaW5m
bywgJmJhZF9leGMsIDAsIHhoX3N3aXRjaF92YWx1ZSkpCiAgICAgICAgdGhyb3cgc3RkOjpiYWRf
ZXhjZXB0aW9uKCk7CgoKICAgICAgX190ZXJtaW5hdGUgKHhoX3Rlcm1pbmF0ZV9oYW5kbGVyKTsK
ICAgIH0KfQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAA=


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

end of thread, other threads:[~2002-06-26  0:46 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-06-25 16:46 debug/7092: Bootstrap fails with ICE on sparc-solaris, CFLAGS="-g1" when building 64-bit libsupc++ Mark Mentovai
  -- strict thread matches above, loose matches on Subject: below --
2002-06-25 18:06 davem
2002-06-25 17:46 davem
2002-06-25 12:36 davem
2002-06-20 21:26 mark

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