Re: xml-parse: file position of elements
Joseph Donaldson <[email protected]> Sun, 6 Feb 2022 01:00:12 +0000 (UTC)
| Newsgroups | gmane.lisp.scheme.bigloo |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_596826_531442580.1644109212236
Content-Type: multipart/alternative;
boundary="----=_Part_596825_2080977285.1644109212199"
------=_Part_596825_2080977285.1644109212199
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Hello, Sven,
Here is another version of xml.scm that I believe addresses the problem you=
pointed out. Let me know how it works for you.
Best Regards,Joe
On Thursday, February 3, 2022, 11:27:18 PM PST, Sven Hartrumpf <hartrum=
[email protected]> wrote: =20
=20
Hello Joe=20
Joseph Donaldson, 2022-02-01 18:21:
> Hello, Sven,
> Here is an updated version that moves the start-position parameter to pos=
ition 4 and has the value of the element's starting < character.
> I also removed some debugging print statements that were erroneously left=
in place. Let me know how it works for you.
Thanks for the new version!
I removed the (+ . 1) in your helper function update-start-position!
because file offsets and string offsets are normally 0-based in Scheme.
The following code
=C2=A0 (call-with-input-string
=C2=A0 =C2=A0 "<doc><itm></itm></doc><doc><itm></itm></doc>"
=C2=A0 =C2=A0 (lambda (port)
=C2=A0 =C2=A0 =C2=A0 (pp (xml-parse port :procedure list :encoding 'UTF-8))=
))
outputs:
((doc () ((itm () () 0)) 0)
(doc () ((itm () () 22)) 22))
The offsets for the doc-elements are correct,
the ones for the itm-elements are not?
Best regards
Sven
=20
------=_Part_596825_2080977285.1644109212199
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<html><head></head><body><div class=3D"ydp9a1b08a7yahoo-style-wrap" style=
=3D"font-family:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px=
;"><div></div>
<div dir=3D"ltr" data-setdir=3D"false">Hello, Sven,</div><div dir=
=3D"ltr" data-setdir=3D"false"><br></div><div dir=3D"ltr" data-setdir=3D"fa=
lse">Here is another version of xml.scm that I believe addresses the proble=
m you pointed out. Let me know how it works for you.</div><div dir=3D"ltr" =
data-setdir=3D"false"><br></div><div dir=3D"ltr" data-setdir=3D"false">Best=
Regards,</div><div dir=3D"ltr" data-setdir=3D"false">Joe<br></div><div><br=
></div><div><br></div>
=20
</div><div id=3D"ydpb0211516yahoo_quoted_4681323844" class=3D"ydpb0=
211516yahoo_quoted">
<div style=3D"font-family:'Helvetica Neue', Helvetica, Arial, s=
ans-serif;font-size:13px;color:#26282a;">
=20
<div>
On Thursday, February 3, 2022, 11:27:18 PM PST, Sven Ha=
rtrumpf <[email protected]> wrote:
</div>
<div><br></div>
<div><br></div>
<div><div dir=3D"ltr">Hello Joe <br clear=3D"none"><br clea=
r=3D"none">Joseph Donaldson, 2022-02-01 18:21:<br clear=3D"none">> Hello=
, Sven,<br clear=3D"none">> Here is an updated version that moves the st=
art-position parameter to position 4 and has the value of the element's sta=
rting < character.<br clear=3D"none">> I also removed some debugging =
print statements that were erroneously left in place. Let me know how it wo=
rks for you.<br clear=3D"none"><br clear=3D"none">Thanks for the new versio=
n!<br clear=3D"none"><br clear=3D"none">I removed the (+ . 1) in your helpe=
r function update-start-position!<br clear=3D"none">because file offsets an=
d string offsets are normally 0-based in Scheme.<br clear=3D"none">The foll=
owing code<br clear=3D"none"><br clear=3D"none"> (call-with-input-str=
ing<br clear=3D"none"> "<doc><itm></itm><=
/doc><doc><itm></itm></doc>"<br clear=3D"none">&=
nbsp; (lambda (port)<br clear=3D"none"> (pp (xml=
-parse port :procedure list :encoding 'UTF-8))))<br clear=3D"none"><br clea=
r=3D"none">outputs:<br clear=3D"none"><br clear=3D"none">((doc () ((itm () =
() 0)) 0)<br clear=3D"none"> (doc () ((itm () () 22)) 22))<br clear=3D"none=
"><br clear=3D"none">The offsets for the doc-elements are correct,<br clear=
=3D"none">the ones for the itm-elements are not?<br clear=3D"none"><br clea=
r=3D"none">Best regards<div class=3D"ydpb0211516yqt5443927987" id=3D"ydpb02=
11516yqtfd77879"><br clear=3D"none">Sven<br clear=3D"none"></div></div></di=
v>
</div>
</div></body></html>
------=_Part_596825_2080977285.1644109212199--
------=_Part_596826_531442580.1644109212236
Content-Type: text/x-scheme
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="xml.scm"
Content-ID: <[email protected]>
Oyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0qLwo7KiAgICBzZXJyYW5vL3ByZ20vcHJvamVjdC9iaWdsb28vYmlnbG9v
L2FwaS93ZWIvc3JjL0xsaWIveG1sLnNjbSAgICAgICovCjsqICAgIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gICAgKi8KOyogICAg
QXV0aG9yICAgICAgOiAgTWFudWVsIFNlcnJhbm8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLwo7KiAgICBDcmVhdGlvbiAgICA6ICBGcmkgTWFyIDExIDE2OjIzOjUzIDIwMDUg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqICAgIExhc3QgY2hhbmdlIDogIFN1biBPY3Qg
IDcgMDg6NDY6MDMgMjAxOCAoc2VycmFubykgICAgICAgICAgICAgICAgKi8KOyogICAgQ29weXJp
Z2h0ICAgOiAgMjAwNS0xOCBNYW51ZWwgU2VycmFubyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLwo7KiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tICAgICovCjsqICAgIFhNTCBwYXJzaW5nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KOyo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoK
OyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwo7KiAgICBUaGUgbW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKG1vZHVs
ZSBfX3dlYl94bWwKCiAgIChvcHRpb24gKHNldCEgKmRsb3Blbi1pbml0LWdjKiAjdCkpCiAgIAog
ICAoZXhwb3J0ICh4bWwtcGFyc2U6OnBhaXItbmlsIHBvcnQ6OmlucHV0LXBvcnQKCQkJCSMha2V5
CgkJCQkoY29udGVudC1sZW5ndGggMCkKCQkJCShwcm9jZWR1cmUgKGxhbWJkYSAodGFnIGF0dHJp
YnMgYm9keSBzdGFydC1wb3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAobGlzdCB0YWcgYXR0cmlicyBib2R5KSkpCgkJCQkoc3BlY2lhbHMgJygpKQoJCQkJ
KHN0cmljdCAjdCkKCQkJCShlbmNvZGluZyAnVVRGLTgpCgkJCQkoZW9pICNmKSkKCSAgICh4bWwt
c3RyaW5nLWRlY29kZTo6YnN0cmluZyA6OmJzdHJpbmcpCgkgICAoeG1sLXN0cmluZy1kZWNvZGUh
Ojpic3RyaW5nIDo6YnN0cmluZykKCSAgICh4bWwtc3RyaW5nLWVuY29kZTo6YnN0cmluZyA6OmJz
dHJpbmcpCgkgICAocmVhZC14bWwgIyFvcHRpb25hbCAocG9ydDo6aW5wdXQtcG9ydCAoY3VycmVu
dC1pbnB1dC1wb3J0KSkpCgkgICAoeG1sLW1ldGFkYXRhIHhtbC10cmVlOjpwYWlyLW5pbCkpKQoK
OyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0qLwo7KiAgICB4bWwtcGFyc2UgLi4uICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmlu
ZSAoeG1sLXBhcnNlOjpwYWlyLW5pbCBwb3J0OjppbnB1dC1wb3J0CgkJCSAgICAgIyFrZXkKCQkJ
ICAgICAoY29udGVudC1sZW5ndGggMCkKCQkJICAgICAocHJvY2VkdXJlIChsYW1iZGEgKHRhZyBh
dHRyaWJzIGJvZHkgc3RhcnQtcG9zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGxpc3QgdGFnIGF0dHJpYnMgYm9keSkpKQoJCQkgICAgIChzcGVjaWFscyAn
KCkpCgkJCSAgICAgKHN0cmljdCAjdCkKCQkJICAgICAoZW5jb2RpbmcgJ1VURi04KQoJCQkgICAg
IChlb2kgI2YpKQogICAod2hlbiAoZWxvbmc/IGNvbnRlbnQtbGVuZ3RoKQogICAgICAoc2V0ISBj
b250ZW50LWxlbmd0aCAoZWxvbmctPmZpeG51bSBjb250ZW50LWxlbmd0aCkpKQogICAod2hlbiAo
YW5kIChmaXhudW0/IGNvbnRlbnQtbGVuZ3RoKSAoPmZ4IGNvbnRlbnQtbGVuZ3RoIDApKQogICAg
ICAoaW5wdXQtcG9ydC1maWxsLWJhcnJpZXItc2V0ISBwb3J0IGNvbnRlbnQtbGVuZ3RoKSkKICAg
KHdoZW4gKD5meCBjb250ZW50LWxlbmd0aCAwKQogICAgICAoc2V0ISBjb250ZW50LWxlbmd0aCAo
K2Z4IGNvbnRlbnQtbGVuZ3RoIChpbnB1dC1wb3J0LXBvc2l0aW9uIHBvcnQpKSkpCiAgIChsZXQg
bG9vcCAoKGRlY29kZXIgKGxhbWJkYSAoeCkgeCkpKQogICAgICAobGV0ICgob2JqIChyZWFkL3Jw
IHhtbC1ncmFtbWFyIHBvcnQgcHJvY2VkdXJlIHByb2NlZHVyZSBzcGVjaWFscyBzdHJpY3QgZGVj
b2RlciBlbmNvZGluZyAoaW5wdXQtcG9ydC1wb3NpdGlvbiBwb3J0KSkpKQoJICh3aGVuIChhbmQg
KGZpeG51bT8gY29udGVudC1sZW5ndGgpICg+ZnggY29udGVudC1sZW5ndGggMCkpCgkgICAgKGlu
cHV0LXBvcnQtZmlsbC1iYXJyaWVyLXNldCEgcG9ydCAtMSkpCgkgKGNvbmQKCSAgICAoKGVvZi1v
YmplY3Q/IG9iaikKCSAgICAgJygpKQoJICAgICgob3IgKGFuZCAocHJvY2VkdXJlPyBlb2kpIChl
b2kgb2JqKSkKCQkgKGFuZCAoPmZ4IGNvbnRlbnQtbGVuZ3RoIDApCgkJICAgICAgKD49ZnggKGlu
cHV0LXBvcnQtcG9zaXRpb24gcG9ydCkgY29udGVudC1sZW5ndGgpKSkKCSAgICAgKGxpc3Qgb2Jq
KSkKCSAgICAoKGFuZCAocGFpcj8gb2JqKSAoZXE/ICd4bWwtZGVjbCAoY2FyIG9iaikpKQoJICAg
ICAobGV0ICgoZW5jIChhc3NxICdlbmNvZGluZyAoY2RyIG9iaikpKSkKCQkoaWYgZW5jCgkJICAg
IChjb25zIG9iaiAobG9vcCAoZ2V0LWRlY29kZXIgKGNkciBlbmMpIGVuY29kaW5nKSkpCgkJICAg
IChjb25zIG9iaiAobG9vcCBkZWNvZGVyKSkpKSkKCSAgICAoZWxzZQoJICAgICAoY29ucyBvYmog
KGxvb3AgZGVjb2RlcikpKSkpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgeG1sLXBhcnNlLWVy
cm9yIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKHhtbC1wYXJzZS1lcnJvciBtc2cgb2JqIG5hbWUgcG9z
KQogICAocmFpc2UKICAgIChpbnN0YW50aWF0ZTo6JmlvLXBhcnNlLWVycm9yCiAgICAgICAocHJv
YyAneG1sLXBhcnNlKQogICAgICAgKG1zZyBtc2cpCiAgICAgICAob2JqIG9iaikKICAgICAgIChm
bmFtZSBuYW1lKQogICAgICAgKGxvY2F0aW9uIHBvcykpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyog
ICAgZXJyb3ItbGluZSAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKGVycm9yLWxpbmUgYyBwb3J0
KQogICAobGV0ICgobGluZSAocmVhZC1saW5lIHBvcnQpKSkKICAgICAgKHN0cmluZy1hcHBlbmQg
InsiIChzdHJpbmcgYykgIn0iIChpZiAoc3RyaW5nPyBsaW5lKSBsaW5lICIiKSkpKQoKOyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0qLwo7KiAgICBzcGVjaWFsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmluZS1zdHJ1
Y3Qgc3BlY2lhbCB0YWcgYXR0cmlidXRlcyBib2R5IG93bmVyKQoKCjsqLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8K
OyogICAgY29sbGVjdC11cC10byAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKGNvbGxlY3QtdXAtdG8g
c3RhcnQtcG9zIGlnbm9yZSB0YWcgYXR0cmlidXRlcyBwb3J0IG1ha2Ugc3BlY2lhbHMgc3RyaWN0
IGRlY29kZXIgZW5jb2RpbmcpCiAgIAogICAoZGVmaW5lIChjb2xsZWN0IGlnbm9yZSB0YWdzKQog
ICAgICAobGV0ICgobmFtZSAoaW5wdXQtcG9ydC1uYW1lIHBvcnQpKQoJICAgIChwbyAoaW5wdXQt
cG9ydC1wb3NpdGlvbiBwb3J0KSkpCgkgKGxldCBsb29wICgoYWNjICcoKSkKCQkgICAgKGl0ZW0g
KGlnbm9yZSkpKQoJICAgIChjb25kCgkgICAgICAgKChzeW1ib2w/IGl0ZW0pCgkJKGNvbmQKCQkg
ICAoKGVxPyBpdGVtIHRhZykKCQkgICAgKG1ha2UgdGFnIGF0dHJpYnV0ZXMgKHJldmVyc2UhIGFj
Yykgc3RhcnQtcG9zKSkKCQkgICAoc3RyaWN0CgkJICAgICh4bWwtcGFyc2UtZXJyb3IgIklsbGVn
YWwgY2xvc2luZyB0YWciCgkJICAgICAgIChmb3JtYXQgImB+YScgZXhwZWN0ZWQsIGB+YScgcHJv
dmlkZWQiCgkJCSAgdGFnIGl0ZW0pCgkJICAgICAgIG5hbWUgcG8pKQoJCSAgIChlbHNlCgkJICAg
IChtYWtlIHRhZyBhdHRyaWJ1dGVzIChyZXZlcnNlISBhY2MpIHN0YXJ0LXBvcykpKSkKCSAgICAg
ICAoKHNwZWNpYWw/IGl0ZW0pCgkJKGxldCAoKG5pdGVtIChtYWtlIChzcGVjaWFsLXRhZyBpdGVt
KQoJCQkJKHNwZWNpYWwtYXR0cmlidXRlcyBpdGVtKQoJCQkJKHNwZWNpYWwtYm9keSBpdGVtKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LXBvcykpKQoJCSAgIChpZiAobWVt
cSAoc3BlY2lhbC10YWcgaXRlbSkgdGFncykKCQkgICAgICAgKGxvb3AgYWNjIG5pdGVtKQoJCSAg
ICAgICAobGlzdCAobWFrZSB0YWcgYXR0cmlidXRlcyAocmV2ZXJzZSEgYWNjKSBzdGFydC1wb3Mp
IG5pdGVtKSkpKQoJICAgICAgICgoZW9mLW9iamVjdD8gaXRlbSkKCQkoaWYgc3RyaWN0CgkJICAg
ICh4bWwtcGFyc2UtZXJyb3IKCQkgICAgICAgKGZvcm1hdCAiUHJlbWF0dXJlIGVuZCBvZiBsaW5l
LCBleHBlY3RpbmcgdGFnIGB+YSciCgkJCSAgdGFnKQoJCSAgICAgICBpdGVtIG5hbWUgcG8pCgkJ
ICAgIChtYWtlIHRhZyBhdHRyaWJ1dGVzIChyZXZlcnNlISBhY2MpIHN0YXJ0LXBvcykpKQoJICAg
ICAgIChlbHNlCgkJKGxldCAoKHBvIChpbnB1dC1wb3J0LWxhc3QtdG9rZW4tcG9zaXRpb24gcG9y
dCkpKQoJCSAgIChsb29wIChlY29ucyBpdGVtIGFjYyAobGlzdCAnYXQgbmFtZSBwbykpIChpZ25v
cmUpKSkpKSkpKQoKICAgKGxldCAoKHNwZWMgKGFzc3EgdGFnIHNwZWNpYWxzKSkpCiAgICAgIChj
b25kCgkgKChub3Qgc3BlYykKCSAgKGNvbGxlY3QgaWdub3JlICcoKSkpCgkgKChudWxsPyAoY2Ry
IHNwZWMpKQoJICAobWFrZSB0YWcgYXR0cmlidXRlcyAnKCkgc3RhcnQtcG9zKSkKCSAoKHByb2Nl
ZHVyZT8gKGNkciBzcGVjKSkKCSAgKG1ha2UgdGFnIGF0dHJpYnV0ZXMgKChjZHIgc3BlYykgcG9y
dCkgc3RhcnQtcG9zKSkKCSAoKHBhaXI/IChjZHIgc3BlYykpCgkgIChsZXQgKChpZ25vcmUgKGxh
bWJkYSAoKQoJCQkgICAocmVhZC9ycCB4bWwtZ3JhbW1hciBwb3J0CgkJCQkgICAgKGxhbWJkYSAo
dCBhIGIpIChzcGVjaWFsIHQgYSBiIHRhZykpCgkJCQkgICAgbWFrZQoJCQkJICAgIHNwZWNpYWxz
IHN0cmljdCBkZWNvZGVyIGVuY29kaW5nIChpbnB1dC1wb3J0LXBvc2l0aW9uIHBvcnQpKSkpKSAK
CSAgICAgKGNvbGxlY3QgaWdub3JlIChjZHIgc3BlYykpKSkKCSAoZWxzZQoJICAoZXJyb3IgInht
bC1wYXJzZSIgIklsbGVnYWwgc3BlY2lhbCBoYW5kbGVyIiBzcGVjKSkpKSkKCjsqLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KOyogICAgYXR0cmlidXRlLXZhbHVlLWdyYW1tYXIgLi4uICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgYXR0cmlidXRl
LXZhbHVlLWdyYW1tYXIKICAgKHJlZ3VsYXItZ3JhbW1hciAoc3RyaWN0IHRhZykKICAgICAgKCgr
IChpbiAiIFx0XG5cciIpKQogICAgICAgKGlnbm9yZSkpCiAgICAgICgoOiAjXCIgKCogKG9yIChv
dXQgI1xcICNcIikgKDogI1xcIGFsbCkpKSAjXCIpCiAgICAgICAodGhlLXN1YnN0cmluZyAxICgt
ZnggKHRoZS1sZW5ndGgpIDEpKSkKICAgICAgKCg6ICNcJyAoKiAob3IgKG91dCAjXFwgI1wnKSAo
OiAjXFwgYWxsKSkpICNcJykKICAgICAgICh0aGUtc3Vic3RyaW5nIDEgKC1meCAodGhlLWxlbmd0
aCkgMSkpKQogICAgICAoKDogKCsgZGlnaXQpICg/IChvciAiJSIgInB4IiAiY20iICJlbSIgIm1t
IiAiaW5jaCIpKSkKICAgICAgIChpZiBzdHJpY3QKCSAgICh4bWwtcGFyc2UtZXJyb3IgKGZvcm1h
dCAiSWxsZWdhbCBgfmEnIGF0dHJpYnV0ZSB2YWx1ZSIgdGFnKQoJCQkgICAgKHRoZS1zdHJpbmcp
CgkJCSAgICAoaW5wdXQtcG9ydC1uYW1lICh0aGUtcG9ydCkpCgkJCSAgICAoaW5wdXQtcG9ydC1w
b3NpdGlvbiAodGhlLXBvcnQpKSkKCSAgICh0aGUtc3RyaW5nKSkpCiAgICAgICgoKyAob3V0ICIg
XHRcblxyPD4oKXt9W11AIVwiJy8iKSkKICAgICAgIChpZiBzdHJpY3QKCSAgICh4bWwtcGFyc2Ut
ZXJyb3IgKGZvcm1hdCAiSWxsZWdhbCBgfmEnIGF0dHJpYnV0ZSBjaGFyYWN0ZXIiIHRhZykKCQkJ
ICAgICh0aGUtc3RyaW5nKQoJCQkgICAgKGlucHV0LXBvcnQtbmFtZSAodGhlLXBvcnQpKQoJCQkg
ICAgKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkpCgkgICAodGhlLXN0cmluZykpKQog
ICAgICAoZWxzZQogICAgICAgKGxldCAoKGMgKHRoZS1mYWlsdXJlKSkpCgkgIChpZiAobm90IChl
b2Ytb2JqZWN0PyBjKSkKCSAgICAgIChpZiAob3Igc3RyaWN0CgkJICAgICAgKG5vdCAob3IgKGNo
YXI9PyBjICNcc3BhY2UpCgkJCSAgICAgICAoY2hhcj0/IGMgI1xOZXdsaW5lKQoJCQkgICAgICAg
KGNoYXI9PyBjICNcPikpKSkKCQkgICh4bWwtcGFyc2UtZXJyb3IKCQkgICAoZm9ybWF0ICJJbGxl
Z2FsIGB+YScgYXR0cmlidXRlIGNoYXJhY3RlciIgdGFnKQoJCSAgIChlcnJvci1saW5lIGMgKHRo
ZS1wb3J0KSkKCQkgICAoaW5wdXQtcG9ydC1uYW1lICh0aGUtcG9ydCkpCgkJICAgKGlucHV0LXBv
cnQtcG9zaXRpb24gKHRoZS1wb3J0KSkpCgkJICAiICIpCgkgICAgICAoeG1sLXBhcnNlLWVycm9y
CgkgICAgICAgKGZvcm1hdCAiUHJlbWF0dXJlIGVuZCBvZiBsaW5lIGZvciB0YWcgYH5hJyBhdHRy
aWJ1dGUiIHRhZykKCSAgICAgICBjCgkgICAgICAgKGlucHV0LXBvcnQtbmFtZSAodGhlLXBvcnQp
KQoJICAgICAgICgtZnggKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkgMSkpKSkpKSkK
ICAgICAgCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgYXR0cmlidXRlLWdyYW1tYXIgLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
CihkZWZpbmUgYXR0cmlidXRlLWdyYW1tYXIKICAgKHJlZ3VsYXItZ3JhbW1hciAoKGlkICg6IChp
biAoImF6QVoiKSAiXyIpICgqIChpbiAoImF6QVowOSIpICI6Xy0iKSkpKQoJCSAgICAgdGFnCgkJ
ICAgICBzdHJpY3QKCQkgICAgIGRlY29kZXIpCiAgICAgICgoKyAoaW4gIiBcdFxuXHIiKSkKICAg
ICAgIChpZ25vcmUpKQogICAgICAoKDogaWQgIj0iKQogICAgICAgKGxldCogKChrZXkgKHRoZS1z
dWJzdHJpbmcgMCAoLWZ4ICh0aGUtbGVuZ3RoKSAxKSkpCgkgICAgICAodmFsIChyZWFkL3JwIGF0
dHJpYnV0ZS12YWx1ZS1ncmFtbWFyICh0aGUtcG9ydCkgc3RyaWN0IHRhZykpKQoJICAoY29ucyAo
c3RyaW5nLT5zeW1ib2wgKGRlY29kZXIga2V5KSkgKGRlY29kZXIgdmFsKSkpKQogICAgICAoKDog
aWQgKCsgYmxhbmspICI9IikKICAgICAgIChsZXQqICgoa2V5ICh0aGUtc3Vic3RyaW5nIDAgKC1m
eCAodGhlLWxlbmd0aCkgMikpKQoJICAgICAgKHZhbCAocmVhZC9ycCBhdHRyaWJ1dGUtdmFsdWUt
Z3JhbW1hciAodGhlLXBvcnQpIHN0cmljdCB0YWcpKSkKCSAgKGxldCBsb29wICgoaSAoLWZ4IChz
dHJpbmctbGVuZ3RoIGtleSkgMSkpKQoJICAgICAoY2FzZSAoc3RyaW5nLXJlZiBrZXkgaSkKCQko
KCNcc3BhY2UgI1x0YWIgI1xOZXdsaW5lKQoJCSAobG9vcCAoLWZ4IGkgMSkpKQoJCShlbHNlCgkJ
IChzZXQhIGtleSAoc3Vic3RyaW5nIGtleSAwICgrIGkgMSkpKSkpKQoJICAoY29ucyAoc3RyaW5n
LT5zeW1ib2wgKGRlY29kZXIga2V5KSkgKGRlY29kZXIgdmFsKSkpKQogICAgICAoKDogaWQpCiAg
ICAgICAobGV0KiAoKGtleSAoZGVjb2RlciAodGhlLXN0cmluZykpKSkKCSAgKGNvbnMgKHN0cmlu
Zy0+c3ltYm9sIGtleSkga2V5KSkpCiAgICAgICgob3IgIi8+IiAiPiIpCiAgICAgICAodGhlLXN5
bWJvbCkpCiAgICAgIChlbHNlCiAgICAgICAobGV0ICgoYyAodGhlLWZhaWx1cmUpKSkKCSAgKGlm
IChub3QgKGVvZi1vYmplY3Q/IGMpKQoJICAgICAgKHhtbC1wYXJzZS1lcnJvciAiSWxsZWdhbCBh
dHRyaWJ1dGUgY2hhcmFjdGVyIgoJCQkgICAgICAgKGVycm9yLWxpbmUgYyAodGhlLXBvcnQpKQoJ
CQkgICAgICAgKGlucHV0LXBvcnQtbmFtZSAodGhlLXBvcnQpKQoJCQkgICAgICAgKGlucHV0LXBv
cnQtcG9zaXRpb24gKHRoZS1wb3J0KSkpCgkgICAgICAoeG1sLXBhcnNlLWVycm9yCgkgICAgICAg
KGZvcm1hdCAiUHJlbWF0dXJlIGVuZCBvZiBsaW5lLCBleHBlY3RpbmcgdGFnIGB+YSciIHRhZykK
CSAgICAgICBjCgkgICAgICAgKGlucHV0LXBvcnQtbmFtZSAodGhlLXBvcnQpKQoJICAgICAgICgt
ZnggKGlucHV0LXBvcnQtcG9zaXRpb24gKHRoZS1wb3J0KSkgMSkpKSkpKSkKCjsqLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KOyogICAgY2RhdGEtZ3JhbW1hciAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgY2RhdGEtZ3Jh
bW1hcgogICAocmVndWxhci1ncmFtbWFyIChkZWNvZGVyKQogICAgICAoKCogKG91dCAiXSIpKQog
ICAgICAgKGxldCogKChyZXMgKGRlY29kZXIgKHRoZS1zdHJpbmcpKSkKCSAgICAgIChyZXN0IChp
Z25vcmUpKSkKCSAgKHN0cmluZy1hcHBlbmQgcmVzIHJlc3QpKSkKICAgICAgKCJdIgogICAgICAg
KHN0cmluZy1hcHBlbmQgIl0iIChpZ25vcmUpKSkKICAgICAgKCg6ICJdXT4iICg/ICJcbiIpKQog
ICAgICAgIiIpCiAgICAgIChlbHNlCiAgICAgICAobGV0KiAoKGMgKHRoZS1mYWlsdXJlKSkKCSAg
ICAgIChtc2cgKGlmIChub3QgKGVvZi1vYmplY3Q/IGMpKQoJCSAgICAgICAiSWxsZWdhbCA8IVtD
REFUQVsgY2hhcmFjdGVyIgoJCSAgICAgICAiUHJlbWF0dXJlIGVuZCBvZiBsaW5lLCBleHBlY3Rp
bmcgdGFnIGBdXT4nIikpKQoJICAoeG1sLXBhcnNlLWVycm9yIG1zZwoJCQkgICBjCgkJCSAgIChp
bnB1dC1wb3J0LW5hbWUgKHRoZS1wb3J0KSkKCQkJICAgKGlucHV0LXBvcnQtcG9zaXRpb24gKHRo
ZS1wb3J0KSkpKSkpKQoKOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo7KiAgICBnZXQtZGVjb2RlciAuLi4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KKGRlZmluZSAoZ2V0LWRlY29kZXI6OnByb2NlZHVyZSBlbmM6OmJzdHJpbmcgZHN0
LWVuYykKICAgKGxldCAoKHNyYy1lbmMgKHN0cmluZy0+c3ltYm9sIChzdHJpbmctdXBjYXNlIGVu
YykpKSkKICAgICAgKGNvbmQKCSAoKG9yIChub3Qgc3JjLWVuYykgKGVxPyBzcmMtZW5jIGRzdC1l
bmMpKQoJICAobGFtYmRhICh4KSB4KSkKCSAoKGVxPyBzcmMtZW5jICdVVEYtOCkKCSAgKGNvbmQK
CSAgICAgKChtZW1xIGRzdC1lbmMgJyhJU08tODg1OS0xIElTTy04ODU5LTIgSVNPLTg4NTktMTUp
KQoJICAgICAgdXRmOC0+aXNvLWxhdGluKQoJICAgICAoKGVxPyBkc3QtZW5jICdVQ1MtMikKCSAg
ICAgIHV0Zjgtc3RyaW5nLT51Y3MyLXN0cmluZykKCSAgICAgKGVsc2UKCSAgICAgIChsYW1iZGEg
KHgpIHgpKSkpCgkgKChtZW1xIHNyYy1lbmMgJyhJU08tODg1OS0xIElTTy04ODU5LTIgSVNPLTg4
NTktMTUpKQoJICAoY29uZAoJICAgICAoKGVxPyBkc3QtZW5jICdVVEYtOCkKCSAgICAgIGlzby1s
YXRpbi0+dXRmOCkKCSAgICAgKChlcT8gZHN0LWVuYyAnVUNTLTIpCgkgICAgICAobGFtYmRhICh4
KQoJCSAodXRmOC1zdHJpbmctPnVjczItc3RyaW5nIChpc28tbGF0aW4tPnV0ZjggeCkpKSkKCSAg
ICAgKGVsc2UKCSAgICAgIChsYW1iZGEgKHgpIHgpKSkpCgkgKGVsc2UKCSAgKGxhbWJkYSAoeCkg
eCkpKSkpCiAgICAgIAo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCjsqICAgIHhtbC1ncmFtbWFyIC4uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KOyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwooZGVmaW5lIHhtbC1ncmFtbWFyCiAgIChyZWd1bGFyLWdyYW1tYXIgKChpZCAoOiAo
aW4gKCJhekFaIikgIiE/IikgKCogKGluICgiYXpBWjA5IikgIjpfLSIpKSkpCgkJICAgICBuZXh0
CgkJICAgICBtYWtlCgkJICAgICBzcGVjaWFscwoJCSAgICAgc3RyaWN0CgkJICAgICBkZWNvZGVy
CgkJICAgICBlbmNvZGluZwogICAgICAgICAgICAgICAgICAgICBwb3MpCiAgICAgIAogICAgICAo
ZGVmaW5lICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgKHNldCEgcG9zIChpbnB1dC1w
b3J0LXBvc2l0aW9uICh0aGUtcG9ydCkpKSkKCiAgICAgIChkZWZpbmUgKGlnbm9yZS13Ly1wb3Mt
dXBkYXRlISkKICAgICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgKGlnbm9yZSkp
CiAgICAgIAogICAgICAoKCsgKGluICIgXHRcblxyIikpCiAgICAgICAodXBkYXRlLXN0YXJ0LXBv
c2l0aW9uISkKICAgICAgICh0aGUtc3RyaW5nKSkKICAgICAgKCg6ICI8IS0tIgoJICAoKiAob3Ig
KG91dCAiLSIpICg6ICItIiAob3V0ICItIikpICg6ICItLSIgKG91dCAiPiIpKSkpCgkgICItLT4i
KQogICAgICAgKHVwZGF0ZS1zdGFydC1wb3NpdGlvbiEpCiAgICAgICAoY29ucyAnY29tbWVudCAo
dGhlLXN0cmluZykpKQogICAgICAoKDogIjwhIiAoOiAob3IgKG91dCAiWy0iKSAoOiAiLSIgKG91
dCAiLSIpKSkKCQkgICgqIChvdXQgIj5dIikpCgkJICAoPyAoOiAiWyIgKCogKG91dCAiXSIpKSAi
XSIpKQoJCSAgKCogKG91dCAiPiIpKSkgIj4iKQogICAgICAgKHVwZGF0ZS1zdGFydC1wb3NpdGlv
biEpCiAgICAgICAoY29ucyAnZGVjbGFyYXRpb24gKHRoZS1zdHJpbmcpKSkKICAgICAgKCI8IVtD
REFUQVsiCiAgICAgICAobGV0ICgoY2RhdGEgKHJlYWQvcnAgY2RhdGEtZ3JhbW1hciAodGhlLXBv
cnQpIGRlY29kZXIpKSkKICAgICAgICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAg
ICAgKGNvbnMgJ2NkYXRhIGNkYXRhKSkpCiAgICAgICgoOiAiPD94bWwgIiAoKiAob3V0ICI/PiIp
KSAiPz4iKQogICAgICAgKGxldCAoKHMgKHRoZS1zdWJzdHJpbmcgNiAodGhlLWxlbmd0aCkpKSkK
CSAgKHN0cmluZy1zZXQhIHMgKC1meCAoc3RyaW5nLWxlbmd0aCBzKSAyKSAjXHNwYWNlKQoJICAo
bGV0ICgocCAob3Blbi1pbnB1dC1zdHJpbmcgcykpKQoJICAgICAobGV0IGxvb3AgKChhdHRyICco
KSkpCgkJKGxldCAoKG9iaiAocmVhZC9ycCBhdHRyaWJ1dGUtZ3JhbW1hciBwICd4bWwgI3QgZGVj
b2RlcikpKQoJCSAgIChjb25kCgkJICAgICAgKChwYWlyPyBvYmopCgkJICAgICAgIChsb29wIChj
b25zIG9iaiBhdHRyKSkpCgkJICAgICAgKChlcT8gb2JqICc+KQogICAgICAgICAgICAgICAgICAg
ICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQoJCSAgICAgICAoY29ucyAneG1sLWRlY2wgYXR0
cikpKSkpKSkpCiAgICAgICgoOiAiPD8iICgqIChvdXQgIj4iKSkgIj4iKQogICAgICAgKHVwZGF0
ZS1zdGFydC1wb3NpdGlvbiEpCiAgICAgICAoY29ucyAnaW5zdHJ1Y3Rpb24gKHRoZS1zdHJpbmcp
KSkKICAgICAgKCg6ICI8IiBpZCAiPiIpCiAgICAgICAobGV0KiAoKHQgKHRoZS1zdWJzdHJpbmcg
MSAoLWZ4ICh0aGUtbGVuZ3RoKSAxKSkpCgkgICAgICAodHMgKHN0cmluZy0+c3ltYm9sIHQpKQoJ
ICAgICAgKHAgKHRoZS1wb3J0KSkpCgkgIChsZXQgKChlbGVtZW50IChjb2xsZWN0LXVwLXRvIHBv
cyBpZ25vcmUtdy8tcG9zLXVwZGF0ZSEgdHMgJygpIHAgbWFrZSBzcGVjaWFscyBzdHJpY3QgZGVj
b2RlciBlbmNvZGluZykpKQogICAgICAgICAgICAgKHVwZGF0ZS1zdGFydC1wb3NpdGlvbiEpCiAg
ICAgICAgICAgICBlbGVtZW50KSkpCiAgICAgICgoOiAiPCIgaWQgIi8+IikKICAgICAgIChsZXQg
KCh0ICh0aGUtc3Vic3RyaW5nIDEgKC1meCAodGhlLWxlbmd0aCkgMikpKSkKICAgICAgICAgIChs
ZXQgKChwIHBvcykpCiAgICAgICAgICAgICAodXBkYXRlLXN0YXJ0LXBvc2l0aW9uISkKICAgICAg
ICAgICAgIChtYWtlIHAgKHN0cmluZy0+c3ltYm9sIHQpICcoKSAnKCkpKSkpCiAgICAgICgoOiAi
PCIgaWQgKGluICIgXG5cdFxyIikpCiAgICAgICAobGV0KiAoKHQgKHRoZS1zdWJzdHJpbmcgMSAo
LWZ4ICh0aGUtbGVuZ3RoKSAxKSkpCgkgICAgICAodHMgKHN0cmluZy0+c3ltYm9sIHQpKQoJICAg
ICAgKHAgKHRoZS1wb3J0KSkpCgkgIChsZXQgbG9vcCAoKGF0dHIgJygpKSkKCSAgICAgKGxldCAo
KG9iaiAocmVhZC9ycCBhdHRyaWJ1dGUtZ3JhbW1hciBwIHQgc3RyaWN0IGRlY29kZXIpKSkKCQko
Y29uZAoJCSAgICgocGFpcj8gb2JqKQoJCSAgICAobG9vcCAoY29ucyBvYmogYXR0cikpKQoJCSAg
ICgoZXE/IG9iaiAnPikKCQkgICAgKGxldCAoKGVsZW1lbnQgKGNvbGxlY3QtdXAtdG8gcG9zIGln
bm9yZS13Ly1wb3MtdXBkYXRlISB0cyAocmV2ZXJzZSEgYXR0cikgcCBtYWtlIHNwZWNpYWxzIHN0
cmljdCBkZWNvZGVyIGVuY29kaW5nKSkpCiAgICAgICAgICAgICAgICAgICAgICAgKHVwZGF0ZS1z
dGFydC1wb3NpdGlvbiEpCiAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudCkpCgkJICAgKChl
cT8gb2JqICcvPikKICAgICAgICAgICAgICAgICAgICAobGV0ICgocCBwb3MpKQogICAgICAgICAg
ICAgICAgICAgICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgICAgICAgICAgICAg
ICAgIChtYWtlIHAgdHMgKHJldmVyc2UhIGF0dHIpICcoKSkpKSkpKSkpCiAgICAgICgoOiAiPC8i
IGlkICI+IikKICAgICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgKHN0cmluZy0+
c3ltYm9sICh0aGUtc3Vic3RyaW5nIDIgKC1meCAodGhlLWxlbmd0aCkgMSkpKSkKICAgICAgKCgr
IChvdXQgIjwiKSkKICAgICAgICh1cGRhdGUtc3RhcnQtcG9zaXRpb24hKQogICAgICAgKGRlY29k
ZXIgKHRoZS1zdHJpbmcpKSkKICAgICAgKGVsc2UKICAgICAgIChsZXQgKChjICh0aGUtZmFpbHVy
ZSkpKQoJICAoY29uZAoJICAgICAoKG5vdCAoZW9mLW9iamVjdD8gYykpCgkgICAgICAoeG1sLXBh
cnNlLWVycm9yICJJbGxlZ2FsIGNoYXJhY3RlciIKCQkJICAgICAgIChlcnJvci1saW5lIGMgKHRo
ZS1wb3J0KSkKCQkJICAgICAgIChpbnB1dC1wb3J0LW5hbWUgKHRoZS1wb3J0KSkKCQkJICAgICAg
IChpbnB1dC1wb3J0LXBvc2l0aW9uICh0aGUtcG9ydCkpKSkKCSAgICAgKGVsc2UKCSAgICAgIGMp
KSkpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgY2hhci1oZXhudW1lcmljPyAuLi4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSov
CihkZWZpbmUgKGNoYXItaGV4bnVtZXJpYz8gYykKICAgKG9yIChjaGFyLW51bWVyaWM/IGMpCiAg
ICAgICAoYW5kIChjaGFyPj0/IGMgI1xBKSAoY2hhcjw9PyBjICNcRikpCiAgICAgICAoYW5kIChj
aGFyPj0/IGMgI1xhKSAoY2hhcjw9PyBjICNcZikpKSkKCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAg
eG1sLXN0cmluZy1kZWNvZGUtaW5uZXIhIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKHhtbC1zdHJpbmctZGVjb2RlLWlu
bmVyISBzdHIgb2wgbmwgcmVzKQogICAoZGVmaW5lIChjaGFyLXZhbHVlIGMpCiAgICAgIChjb25k
CgkgKChjaGFyLW51bWVyaWM/IGMpCgkgICgtZnggKGNoYXItPmludGVnZXIgYykgKGNoYXItPmlu
dGVnZXIgI1wwKSkpCgkgKChjaGFyPD0/IGMgI1xGKQoJICAoK2Z4IDEwICgtZnggKGNoYXItPmlu
dGVnZXIgYykgKGNoYXItPmludGVnZXIgI1xBKSkpKQoJIChlbHNlCgkgICgrZnggMTAgKC1meCAo
Y2hhci0+aW50ZWdlciBjKSAoY2hhci0+aW50ZWdlciAjXGEpKSkpKSkKICAgKGxldCAoKG9sLTIg
KC1meCBvbCAyKSkpCiAgICAgIChsZXQgbG9vcCAoKGkgMCkKCQkgKGogMCkpCgkgKGlmICg9Zngg
aiBubCkKCSAgICAgcmVzCgkgICAgIChsZXQgKChjIChzdHJpbmctcmVmIHN0ciBpKSkpCgkJKGlm
IChhbmQgKGNoYXI9PyBjICNcJSkgKDxmeCBpIG9sLTIpKQoJCSAgICAobGV0ICgoYzEgKHN0cmlu
Zy1yZWYgc3RyICgrZnggaSAxKSkpCgkJCSAgKGMyIChzdHJpbmctcmVmIHN0ciAoK2Z4IGkgMikp
KSkKCQkgICAgICAgKGlmIChhbmQgKGNoYXItaGV4bnVtZXJpYz8gYzEpIChjaGFyLWhleG51bWVy
aWM/IGMyKSkKCQkJICAgKGxldCogKCh2MSAoY2hhci12YWx1ZSBjMSkpCgkJCQkgICh2MiAoY2hh
ci12YWx1ZSBjMikpCgkJCQkgIChkIChpbnRlZ2VyLT5jaGFyICgrZnggKCpmeCB2MSAxNikgdjIp
KSkpCgkJCSAgICAgIChzdHJpbmctc2V0ISByZXMgaiBkKQoJCQkgICAgICAobG9vcCAoK2Z4IGkg
MykgKCtmeCBqIDEpKSkKCQkJICAgKGJlZ2luCgkJCSAgICAgIChzdHJpbmctc2V0ISByZXMgaiBj
KQoJCQkgICAgICAobG9vcCAoK2Z4IGkgMSkgKCtmeCBqIDEpKSkpKQoJCSAgICAoYmVnaW4KCQkg
ICAgICAgKHN0cmluZy1zZXQhIHJlcyBqIGMpCgkJICAgICAgIChsb29wICgrZnggaSAxKSAoK2Z4
IGogMSkpKSkpKSkpKQoKOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo7KiAgICB4bWwtY291bnQgLi4uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KKGRlZmluZSAoeG1sLWNvdW50IHN0ciBvbCkKICAgKGxldCBsb29wICgoaSAwKQoJ
ICAgICAgKGMgMCkpCiAgICAgIChjb25kCgkgKCg9ZnggaSBvbCkKCSAgYykKCSAoKGNoYXI9PyAo
c3RyaW5nLXJlZiBzdHIgaSkgI1wmKQoJICAoY29uZAoJICAgICAoKHN1YnN0cmluZy1hdD8gc3Ry
ICImbHQ7IiBpKQoJICAgICAgKGxvb3AgKCtmeCBpIDQpICgrZnggYyAxKSkpCgkgICAgICgoc3Vi
c3RyaW5nLWF0PyBzdHIgIiZndDsiIGkpCgkgICAgICAobG9vcCAoK2Z4IGkgNCkgKCtmeCBjIDEp
KSkKCSAgICAgKChzdWJzdHJpbmctYXQ/IHN0ciAiJmFtcDsiIGkpCgkgICAgICAobG9vcCAoK2Z4
IGkgNSkgKCtmeCBjIDEpKSkKCSAgICAgKChzdWJzdHJpbmctYXQ/IHN0ciAiJnF1b3Q7IiBpKQoJ
ICAgICAgKGxvb3AgKCtmeCBpIDYpICgrZnggYyAxKSkpCgkgICAgICgoc3Vic3RyaW5nLWF0PyBz
dHIgIiZuYnNwOyIgaSkKCSAgICAgIChsb29wICgrZnggaSA2KSAoK2Z4IGMgMSkpKQoJICAgICAo
KHN1YnN0cmluZy1hdD8gc3RyICImIyIgaSkKCSAgICAgIChsZXQgbGlpcCAoKGkgKCtmeCBpIDIp
KSkKCQkgKGNvbmQKCQkgICAgKCg9ZnggaSBvbCkKCQkgICAgIGMpCgkJICAgICgoY2hhci1udW1l
cmljPyAoc3RyaW5nLXJlZiBzdHIgaSkpCgkJICAgICAobGlpcCAoK2Z4IGkgMSkpKQoJCSAgICAo
ZWxzZQoJCSAgICAgKGxvb3AgKCtmeCBpIDEpICgrZnggYyAxKSkpKSkpCgkgICAgIChlbHNlCgkg
ICAgICAobG9vcCAoK2Z4IGkgMSkgKCtmeCBjIDEpKSkpKQoJIChlbHNlCgkgIChsb29wICgrZngg
aSAxKSAoK2Z4IGMgMSkpKSkpKQoKOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo7KiAgICB4bWwtZGVjb2RlIC4u
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCjsq
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KKGRlZmluZSAoeG1sLWRlY29kZSEgc3RyIHJlcyBvbCBubCkKICAgKGxl
dCBsb29wICgoaSAwKQoJICAgICAgKGogMCkpCiAgICAgIChjb25kCgkgKCg9ZnggaSBvbCkKCSAg
cmVzKQoJICgoY2hhcj0/IChzdHJpbmctcmVmIHN0ciBpKSAjXCYpCgkgIChjb25kCgkgICAgICgo
c3Vic3RyaW5nLWF0PyBzdHIgIiZsdDsiIGkpCgkgICAgICAoc3RyaW5nLXNldCEgcmVzIGogI1w8
KQoJICAgICAgKGxvb3AgKCtmeCBpIDQpICgrZnggaiAxKSkpCgkgICAgICgoc3Vic3RyaW5nLWF0
PyBzdHIgIiZndDsiIGkpCgkgICAgICAoc3RyaW5nLXNldCEgcmVzIGogI1w+KQoJICAgICAgKGxv
b3AgKCtmeCBpIDQpICgrZnggaiAxKSkpCgkgICAgICgoc3Vic3RyaW5nLWF0PyBzdHIgIiZhbXA7
IiBpKQoJICAgICAgKHN0cmluZy1zZXQhIHJlcyBqICNcJikKCSAgICAgIChsb29wICgrZnggaSA1
KSAoK2Z4IGogMSkpKQoJICAgICAoKHN1YnN0cmluZy1hdD8gc3RyICImcXVvdDsiIGkpCgkgICAg
ICAoc3RyaW5nLXNldCEgcmVzIGogI1wiKQoJICAgICAgKGxvb3AgKCtmeCBpIDYpICgrZnggaiAx
KSkpCgkgICAgICgoc3Vic3RyaW5nLWF0PyBzdHIgIiZuYnNwOyIgaSkKCSAgICAgIChzdHJpbmct
c2V0ISByZXMgaiAjXHNwYWNlKQoJICAgICAgKGxvb3AgKCtmeCBpIDYpICgrZnggaiAxKSkpCgkg
ICAgICgoc3Vic3RyaW5nLWF0PyBzdHIgIiYjIiBpKQoJICAgICAgKGxldCBsaWlwICgoaSAoK2Z4
IGkgMikpCgkJCSAobiAwKSkKCQkgKGlmICg9ZnggaSBvbCkKCQkgICAgIHJlcwoJCSAgICAgKGxl
dCAoKGMgKHN0cmluZy1yZWYgc3RyIGkpKSkKCQkJKGlmIChjaGFyLW51bWVyaWM/IGMpCgkJCSAg
ICAobGlpcCAoK2Z4IGkgMSkKCQkJICAgICAgICgrZnggKCpmeCBuIDEwKQoJCQkJICAoLWZ4IChj
aGFyLT5pbnRlZ2VyIGMpCgkJCQkgICAgIChjaGFyLT5pbnRlZ2VyICNcMCkpKSkKCQkJICAgIChi
ZWdpbgoJCQkgICAgICAgKHN0cmluZy1zZXQhIHJlcyBqIChpbnRlZ2VyLT5jaGFyIG4pKQoJCQkg
ICAgICAgKGxvb3AgKCtmeCBpIDEpICgrZnggaiAxKSkpKSkpKSkKCSAgICAgKGVsc2UKCSAgICAg
IChzdHJpbmctc2V0ISByZXMgaiAoc3RyaW5nLXJlZiBzdHIgaSkpCgkgICAgICAobG9vcCAoK2Z4
IGkgMSkgKCtmeCBqIDEpKSkpKQoJIChlbHNlCgkgIChzdHJpbmctc2V0ISByZXMgaiAoc3RyaW5n
LXJlZiBzdHIgaSkpCgkgIChsb29wICgrZnggaSAxKSAoK2Z4IGogMSkpKSkpKQoKOyotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwo7KiAgICB4bWwtc3RyaW5nLWRlY29kZSAuLi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmluZSAoeG1sLXN0
cmluZy1kZWNvZGUgc3RyKQogICAobGV0ICgob2wgKHN0cmluZy1sZW5ndGggc3RyKSkpCiAgICAg
IChpZiAoPj1meCBvbCAzKQoJICAobGV0ICgobmwgKHhtbC1jb3VudCBzdHIgb2wpKSkKCSAgICAg
KGlmICg9Znggbmwgb2wpCgkJIChzdHJpbmctY29weSBzdHIpCgkJIChsZXQgKChyZXMgKG1ha2Ut
c3RyaW5nIG5sKSkpCgkJICAgICh4bWwtZGVjb2RlISBzdHIgcmVzIG9sIG5sKQoJCSAgICByZXMp
KSkKCSAgKHN0cmluZy1jb3B5IHN0cikpKSkKICAgCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgeG1s
LXN0cmluZy1kZWNvZGUhIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihkZWZpbmUgKHhtbC1zdHJpbmctZGVjb2RlISBzdHIp
CiAgIChsZXQgKChvbCAoc3RyaW5nLWxlbmd0aCBzdHIpKSkKICAgICAgKGlmICg+PWZ4IG9sIDMp
CgkgIChsZXQgKChubCAoeG1sLWNvdW50IHN0ciBvbCkpKQoJICAgICAoaWYgKD1meCBubCBvbCkK
CQkgc3RyCgkJIChiZWdpbgoJCSAgICAoeG1sLWRlY29kZSEgc3RyIHN0ciBvbCBubCkKCQkgICAg
KHN0cmluZy1zaHJpbmshIHN0ciBubCkpKSkKCSAgc3RyKSkpCgo7Ki0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCjsq
ICAgIHhtbC1zdHJpbmctZW5jb2RlIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKi8KOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwooZGVmaW5lICh4bWwtc3RyaW5nLWVuY29k
ZSBzdHIpCiAgIChkZWZpbmUgKGNvdW50IHN0ciBvbCkKICAgICAgKGxldCBsb29wICgoaSAwKQoJ
CSAobiAwKSkKCSAoaWYgKD1meCBpIG9sKQoJICAgICBuCgkgICAgIChsZXQgKChjIChzdHJpbmct
cmVmIHN0ciBpKSkpCgkJKGNhc2UgYwoJCSAgICgoI1wiKQoJCSAgICAobG9vcCAoK2Z4IGkgMSkg
KCtmeCBuIDYpKSkKCQkgICAoKCNcJikKCQkgICAgKGxvb3AgKCtmeCBpIDEpICgrZnggbiA1KSkp
CgkJICAgKCgjXDwgI1w+KQoJCSAgICAobG9vcCAoK2Z4IGkgMSkgKCtmeCBuIDQpKSkKCQkgICAo
ZWxzZQoJCSAgICAobG9vcCAoK2Z4IGkgMSkgKCtmeCBuIDEpKSkpKSkpKQogICAoZGVmaW5lIChl
bmNvZGUgc3RyIG9sIG5sKQogICAgICAoaWYgKD1meCBubCBvbCkKCSAgc3RyCgkgIChsZXQgKChy
ZXMgKG1ha2Utc3RyaW5nIG5sKSkpCgkgICAgIChsZXQgbG9vcCAoKGkgMCkKCQkJKGogMCkpCgkJ
KGlmICg9ZnggaiBubCkKCQkgICAgcmVzCgkJICAgIChsZXQgKChjIChzdHJpbmctcmVmIHN0ciBp
KSkpCgkJICAgICAgIChjYXNlIGMKCQkJICAoKCNcPCkKCQkJICAgKGJsaXQtc3RyaW5nISAiJmx0
OyIgMCByZXMgaiA0KQoJCQkgICAobG9vcCAoK2Z4IGkgMSkgKCtmeCBqIDQpKSkKCQkJICAoKCNc
PikKCQkJICAgKGJsaXQtc3RyaW5nISAiJmd0OyIgMCByZXMgaiA0KQoJCQkgICAobG9vcCAoK2Z4
IGkgMSkgKCtmeCBqIDQpKSkKCQkJICAoKCNcJikKCQkJICAgKGJsaXQtc3RyaW5nISAiJmFtcDsi
IDAgcmVzIGogNSkKCQkJICAgKGxvb3AgKCtmeCBpIDEpICgrZnggaiA1KSkpCgkJCSAgKCgjXCIp
CgkJCSAgIChibGl0LXN0cmluZyEgIiZxdW90OyIgMCByZXMgaiA2KQoJCQkgICAobG9vcCAoK2Z4
IGkgMSkgKCtmeCBqIDYpKSkKCQkJICAoZWxzZQoJCQkgICAoc3RyaW5nLXNldCEgcmVzIGogYykK
CQkJICAgKGxvb3AgKCtmeCBpIDEpICgrZnggaiAxKSkpKSkpKSkpKQogICAobGV0ICgob2wgKHN0
cmluZy1sZW5ndGggc3RyKSkpCiAgICAgIChlbmNvZGUgc3RyIG9sIChjb3VudCBzdHIgb2wpKSkp
CgkgCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKi8KOyogICAgcmVhZC14bWwgLi4uICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwo7Ki0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCihk
ZWZpbmUgKHJlYWQteG1sICMhb3B0aW9uYWwgKHBvcnQ6OmlucHV0LXBvcnQgKGN1cnJlbnQtaW5w
dXQtcG9ydCkpKQogICAoeG1sLXBhcnNlIHBvcnQpKQoKOyotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwo7KiAgICB4
bWwtbWV0YWRhdGEgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICovCjsqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKGRlZmluZSAoeG1sLW1ldGFkYXRhIHhtbCkKICAg
KGxldCAoKHhtbC12ZXIgI2YpCgkgKHhtbC1lbmMgI2YpCgkgKHhtbC1sYW5nICNmKQoJIChyb290
LXZlciAwLjApCgkgKHhtbC1yb290ICNmKQoJICh4bWwtbnMgJygpKSkKICAgICAgKGxldCBsb29w
MSAoKGwgeG1sKSkKCSAod2hlbiAocGFpcj8gbCkKCSAgICAobWF0Y2gtY2FzZSAoY2FyIGwpCgkg
ICAgICAgKCh4bWwtZGVjbCAuIChhbmQgP2F0dHIgKD8tIC4gPy0pKSkKCQkoZm9yLWVhY2ggKGxh
bWJkYSAoYXQpCgkJCSAgICAgKGNhc2UgKGNhciBhdCkKCQkJCSgodmVyc2lvbikgKHNldCEgeG1s
LXZlciAoY2RyIGF0dHIpKSkKCQkJCSgoZW5jb2RpbmcpIChzZXQhIHhtbC1lbmMgKGNkciBhdHRy
KSkpKSkKCQkJICBhdHRyKSkKCSAgICAgICAoKD9tYXJrID9sYXR0ciAuID8tKQoJCShsZXQgbG9v
cDMgKChsYXR0ciBsYXR0cikpCgkJICAgKHVubGVzcyB4bWwtcm9vdCAoc2V0ISB4bWwtcm9vdCBt
YXJrKSkKCQkgICAod2hlbiAocGFpcj8gbGF0dHIpCgkJICAgICAgKGxldCAoKGF0dHIgKGNhciBs
YXR0cikpKQoJCQkgKGNhc2UgKGNhciBhdHRyKQoJCQkgICAgKCh4bWw6bGFuZykKCQkJICAgICAo
c2V0ISB4bWwtbGFuZyAoY2RyIGF0dHIpKSkKCQkJICAgICgoeG1sbnMpCgkJCSAgICAgKHNldCEg
eG1sLXJvb3QgKGNvbnMgKGNkciBhdHRyKSB4bWwtcm9vdCkpKQoJCQkgICAgKCh2ZXJzaW9uKQoJ
CQkgICAgIChzZXQhIHJvb3QtdmVyIChzdHJpbmctPm51bWJlciAoY2RyIGF0dHIpKSkpCgkJCSAg
ICAoZWxzZQoJCQkgICAgIChsZXQgKChzdHIgKHN5bWJvbC0+c3RyaW5nIChjYXIgYXR0cikpKSkK
CQkJCSh3aGVuIChzdWJzdHJpbmc9PyBzdHIgInhtbG5zOiIgNikKCQkJCSAgIChsZXQqICgobCAo
c3RyaW5nLWxlbmd0aCBzdHIpKQoJCQkJCSAgKHMgKHN1YnN0cmluZyBzdHIgNiBsKSkKCQkJCQkg
IChzaSAoc3RyaW5nLT5zeW1ib2wgcykpKQoJCQkJICAgICAgKHNldCEgeG1sLW5zCgkJCQkJICAg
IChjb25zIChjb25zIChjZHIgYXR0cikgc2kpCgkJCQkJCSAgeG1sLW5zKSkpKSkpKQoJCQkgKGxv
b3AzIChjZHIgbGF0dHIpKSkpKSkpCgkgICAgKGxvb3AxIChjZHIgbCkpKSkKICAgICAgKHVubGVz
cyB4bWwtcm9vdAoJIChlcnJvciAieG1sLW1ldGFkYXRhIiAiRW1wdHkgWE1MIGRvY3VtZW50ICEi
IHhtbCkpCiAgICAgIDs7IFZhbHVlcyBhcmUgOgogICAgICA7OyAtIFhNTCBWZXJzaW9uICgxLjAg
b3IgMS4xKSBvciAjZgogICAgICA7OyAtIFhNTCBFbmNvZGluZyAoI2YgaWYgdW5rbm93bikKICAg
ICAgOzsgLSB4bWw6bGFuZyB2YWx1ZQogICAgICA7OyAtIFBhaXIsIHdoaWNoIGNhciBpcyB0aGUg
Zmlyc3QgZGF0YSBtYXJrdXAsIGFuZAogICAgICA7OyAgIGNkciB0aGUgZGVmYXVsdCBuYW1lc3Bh
Y2UKICAgICAgOzsgLSB4bWwgZmlyc3QgZGF0YSBtYXJrdXAgdmVyc2lvbiBhdHRyaWJ1dGUgKDAg
aWYgdW5zcGVjaWZpZWQpCiAgICAgIDs7IC0gbGlzdCBvZiBwcmVmaXhlZCBuYW1lc3BhY2VzIChw
cmVmaXggLiBwYXRoKQogICAgICAodmFsdWVzIHhtbC12ZXIgeG1sLWVuYyB4bWwtbGFuZyB4bWwt
cm9vdCByb290LXZlciB4bWwtbnMpKSkK
------=_Part_596826_531442580.1644109212236--