<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>30981</bug_id>
          
          <creation_ts>2015-04-30 11:42:10 +0300</creation_ts>
          <short_desc>gfortran segmentation fault</short_desc>
          <delta_ts>2018-07-13 04:07:18 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>gcc4.9-fortran</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="real@altlinux.org">real.altlinux.org</reporter>
          <assigned_to name="Gleb F-Malinovskiy">glebfm</assigned_to>
          <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>nbr</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>151360</commentid>
    <comment_count>0</comment_count>
    <who name="real@altlinux.org">real.altlinux.org</who>
    <bug_when>2015-04-30 11:42:10 +0300</bug_when>
    <thetext>http://git.altlinux.org/tasks/143894/build/100/x86_64/log

&quot;preprocessed source&quot; - во вложении, получено командой:

gfortran -fPIC -DPIC -pipe -Wall -g -fPIC -DPIC -O -fno-second-underscore -DPETSC_HAVE_HYPRE -I/usr/include -c grid_io.f90 -E -cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151361</commentid>
    <comment_count>1</comment_count>
      <attachid>6279</attachid>
    <who name="real@altlinux.org">real.altlinux.org</who>
    <bug_when>2015-04-30 11:43:00 +0300</bug_when>
    <thetext>Created attachment 6279
preprocessed source</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151389</commentid>
    <comment_count>2</comment_count>
    <who name="real@altlinux.org">real.altlinux.org</who>
    <bug_when>2015-05-05 05:21:28 +0300</bug_when>
    <thetext>Забавно, если из опций убрать &quot;-O&quot;, файл успешно компилируется.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151843</commentid>
    <comment_count>3</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2015-06-20 00:57:05 +0300</bug_when>
    <thetext>Неплохо бы проверить с gcc5-fortran.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151848</commentid>
    <comment_count>4</comment_count>
    <who name="real@altlinux.org">real.altlinux.org</who>
    <bug_when>2015-06-20 08:32:01 +0300</bug_when>
    <thetext>Не ранее, чем будет осуществлён перевод на gcc5 пакетов trilinos10 и petsc-*. Вряд ли в ближайшее время я найду для этого возможности... Разве только к осени.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>172609</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2018-07-13 04:07:18 +0300</bug_when>
    <thetext>gcc4.9-fortran никто исправлять не будет</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>6279</attachid>
            <date>2015-04-30 11:43:00 +0300</date>
            <delta_ts>2015-04-30 11:43:00 +0300</delta_ts>
            <desc>preprocessed source</desc>
            <filename>grid_io.f90.cpp</filename>
            <type>text/x-c++src</type>
            <size>101624</size>
            <attacher name="real@altlinux.org">real.altlinux.org</attacher>
            
              <data encoding="base64">IyAxICJncmlkX2lvLmY5MCIKIyAxICI8YnVpbHQtaW4+IgojIDEgIjxjb21tYW5kLWxpbmU+Igoj
IDEgIi91c3Ivc3JjL1JQTS9CVUlMRC9waGFtbC0xLjE0LjAvc3JjLy8iCiMgMSAiZ3JpZF9pby5m
OTAiCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0hCiEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBIQU1M
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhCiEgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhCiEgVGhlIFBh
cmFsbGVsIEhpZXJhcmNoaWNhbCBBZGFwdGl2ZSBNdWx0aUxldmVsIGNvZGUgZm9yIHNvbHZpbmcg
ICAgICAhCiEgbGluZWFyIGVsbGlwdGljIHBhcnRpYWwgZGlmZmVyZW50aWFsIGVxdWF0aW9ucyBv
ZiB0aGUgZm9ybSAgICAgICAgICAhCiEgKFBVeCl4ICsgKFFVeSl5ICsgUlUgPSBGIG9uIDJEIHBv
bHlnb25hbCBkb21haW5zIHdpdGggbWl4ZWQgICAgICAgICAhCiEgYm91bmRhcnkgY29uZGl0aW9u
cywgYW5kIGVpZ2VudmFsdWUgcHJvYmxlbXMgd2hlcmUgRiBpcyBsYW1iZGEqVS4gICAhCiEgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAhCiEgUEhBTUwgaXMgcHVibGljIGRvbWFpbiBzb2Z0d2FyZS4gIEl0IHdhcyBwcm9k
dWNlZCBhcyBwYXJ0IG9mIHdvcmsgICAhCiEgZG9uZSBieSB0aGUgVS5TLiBHb3Zlcm5tZW50LCBh
bmQgaXMgbm90IHN1YmplY3QgdG8gY29weXJpZ2h0IGluICAgICAhCiEgdGhlIFVuaXRlZCBTdGF0
ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhCiEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAhCiEgICAgIFdpbGxpYW0gRi4gTWl0Y2hlbGwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAhCiEgICAgIEFwcGxpZWQgYW5kIENvbXB1dGF0aW9u
YWwgTWF0aGVtYXRpY3MgRGl2aXNpb24gICAgICAgICAgICAgICAgICAhCiEgICAgIE5hdGlvbmFs
IEluc3RpdHV0ZSBvZiBTdGFuZGFyZHMgYW5kIFRlY2hub2xvZ3kgICAgICAgICAgICAgICAgICAh
CiEgICAgIHdpbGxpYW0ubWl0Y2hlbGxAbmlzdC5nb3YgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAhCiEgICAgIGh0dHA6Ly9tYXRoLm5pc3QuZ292L3BoYW1sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhCiEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhCiEtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0hCgptb2R1bGUgZ3JpZF9pbwoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KISBUaGlzIG1vZHVsZSBjb250YWlucyBwcmludGVkIGFuZCBncmFw
aGljYWwgaS9vIGZvciBncmlkcwohCiEgY29tbXVuaWNhdGlvbiB0YWdzIGluIHRoaXMgbW9kdWxl
IGFyZSBvZiB0aGUgZm9ybSA3eHgKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KCnVzZSBnbG9iYWwKdXNlIG1lc3NhZ2VfcGFzc2luZwp1c2UgaGFz
aF9tb2QKdXNlIGdyaWR0eXBlX21vZAp1c2UgZ3JpZF91dGlsCnVzZSBzdG9wd2F0Y2gKdXNlIHpv
bHRhbl9pbnRlcmYKdXNlIGVycm9yX2VzdGltYXRvcnMKdXNlIHNvcnRfbW9kCnVzZSBsaW5zeXN0
eXBlX21vZAohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQoKaW1wbGljaXQgbm9uZQpwcml2YXRlCnB1YmxpYyBkcmF3X2dyaWQsIHByaW50X2VsZW1l
bnQsIHByaW50X3ZlcnRleCwgcHJpbnRfZWRnZSwgcHJpbnRfZmFjZSwgJgogICAgICAgcHJpbnRf
YWxsX2VsZW1lbnRzLCBwcmludF9hbGxfdmVydGljZXMsIHByaW50X2FsbF9lZGdlcywgJgogICAg
ICAgcHJpbnRfYWxsX2ZhY2VzLCBwcmludF9lbnRpcmVfZ3JpZCwgcHJpbnRfZ3JpZF9pbmZvLCBz
dG9yZV9ncmlkCgpjb250YWlucwoKISAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0Kc3Vicm91
dGluZSBwcmludF9hbGxfZWxlbWVudHMoZ3JpZCkKISAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0t
LS0KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiEgVGhpcyBzdWJyb3V0aW5lIHByaW50cyB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIGFsbCB0aGUg
ZWxlbWVudHMKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQohIER1bW15IGFyZ3VtZW50cwogCnR5cGUgKGdyaWRfdHlwZSksIGludGVudChpbikgOjog
Z3JpZAohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQohIExvY2FsIHZhcmlhYmxlcwoKaW50ZWdlciA6OiBsZXYsIGVsZW0KCiEtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgQmVnaW4gZXhlY3V0YWJs
ZSBjb2RlCgpkbyBsZXY9MSxncmlkJW5sZXYKICAgZWxlbSA9IGdyaWQlaGVhZF9sZXZlbF9lbGVt
KGxldikKICAgZG8gd2hpbGUgKGVsZW0gLz0gRU5EX09GX0xJU1QpCiAgICAgIGNhbGwgcHJpbnRf
ZWxlbWVudChncmlkLGVsZW0pCiAgICAgIGVsZW0gPSBncmlkJWVsZW1lbnQoZWxlbSklbmV4dAog
ICBlbmQgZG8KZW5kIGRvCgplbmQgc3Vicm91dGluZSBwcmludF9hbGxfZWxlbWVudHMKCiEgICAg
ICAgICAgLS0tLS0tLS0tLS0tLS0tCnN1YnJvdXRpbmUgcHJpbnRfYWxsX2ZhY2VzKGdyaWQpCiEg
ICAgICAgICAgLS0tLS0tLS0tLS0tLS0tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIFRoaXMgc3Vicm91dGluZSBwcmludHMgdGhlIGRhdGEg
c3RydWN0dXJlIGZvciBhbGwgdGhlIGZhY2VzCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBEdW1teSBhcmd1bWVudHMKIAp0eXBlIChncmlkX3R5
cGUpLCBpbnRlbnQoaW4pIDo6IGdyaWQKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KISBMb2NhbCB2YXJpYWJsZXMKCmludGVnZXIgOjogbGV2LCBl
bGVtLCBmYWNlLCBpCmxvZ2ljYWwoc21hbGxfbG9naWNhbCkgOjogcHJpbnRlZChncmlkJWJpZ2dl
c3RfZmFjZSkKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiEgQmVnaW4gZXhlY3V0YWJsZSBjb2RlCgohIGdvIHRocm91Z2ggZWxlbWVudHMgYW5k
IHByaW50IGFueSBmYWNlcyB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHByaW50ZWQKCnByaW50
ZWQgPSAuZmFsc2UuCmRvIGxldj0xLGdyaWQlbmxldgogICBlbGVtID0gZ3JpZCVoZWFkX2xldmVs
X2VsZW0obGV2KQogICBkbyB3aGlsZSAoZWxlbSAvPSBFTkRfT0ZfTElTVCkKICAgICAgZG8gaT0x
LEZBQ0VTX1BFUl9FTEVNRU5UCiAgICAgICAgIGZhY2UgPSBncmlkJWVsZW1lbnQoZWxlbSklZmFj
ZShpKQogICAgICAgICBpZiAoLm5vdC4gcHJpbnRlZChmYWNlKSkgdGhlbgogICAgICAgICAgICBj
YWxsIHByaW50X2ZhY2UoZ3JpZCxmYWNlKQogICAgICAgICAgICBwcmludGVkKGZhY2UpID0gLnRy
dWUuCiAgICAgICAgIGVuZGlmCiAgICAgIGVuZCBkbwogICAgICBlbGVtID0gZ3JpZCVlbGVtZW50
KGVsZW0pJW5leHQKICAgZW5kIGRvCmVuZCBkbwoKZW5kIHN1YnJvdXRpbmUgcHJpbnRfYWxsX2Zh
Y2VzCgohICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLQpzdWJyb3V0aW5lIHByaW50X2FsbF9lZGdl
cyhncmlkKQohICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBUaGlzIHN1YnJvdXRpbmUgcHJpbnRz
IHRoZSBkYXRhIHN0cnVjdHVyZSBmb3IgYWxsIHRoZSBlZGdlcwohLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiEtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgRHVtbXkgYXJndW1lbnRzCiAKdHlw
ZSAoZ3JpZF90eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwgdmFyaWFibGVzCgppbnRlZ2Vy
IDo6IGxldiwgZWxlbSwgZWRnZSwgaQpsb2dpY2FsKHNtYWxsX2xvZ2ljYWwpIDo6IHByaW50ZWQo
Z3JpZCViaWdnZXN0X2VkZ2UpCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQohIEJlZ2luIGV4ZWN1dGFibGUgY29kZQoKISBnbyB0aHJvdWdoIGVs
ZW1lbnRzIGFuZCBwcmludCBhbnkgZWRnZXMgdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiBwcmlu
dGVkCgpwcmludGVkID0gLmZhbHNlLgpkbyBsZXY9MSxncmlkJW5sZXYKICAgZWxlbSA9IGdyaWQl
aGVhZF9sZXZlbF9lbGVtKGxldikKICAgZG8gd2hpbGUgKGVsZW0gLz0gRU5EX09GX0xJU1QpCiAg
ICAgIGRvIGk9MSxFREdFU19QRVJfRUxFTUVOVAogICAgICAgICBlZGdlID0gZ3JpZCVlbGVtZW50
KGVsZW0pJWVkZ2UoaSkKICAgICAgICAgaWYgKC5ub3QuIHByaW50ZWQoZWRnZSkpIHRoZW4KICAg
ICAgICAgICAgY2FsbCBwcmludF9lZGdlKGdyaWQsZWRnZSkKICAgICAgICAgICAgcHJpbnRlZChl
ZGdlKSA9IC50cnVlLgogICAgICAgICBlbmRpZgogICAgICBlbmQgZG8KICAgICAgZWxlbSA9IGdy
aWQlZWxlbWVudChlbGVtKSVuZXh0CiAgIGVuZCBkbwplbmQgZG8KCmVuZCBzdWJyb3V0aW5lIHBy
aW50X2FsbF9lZGdlcwoKISAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0Kc3Vicm91dGluZSBw
cmludF9hbGxfdmVydGljZXMoZ3JpZCkKISAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KCiEt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgVGhp
cyBzdWJyb3V0aW5lIHByaW50cyB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIGFsbCB0aGUgdmVydGlj
ZXMKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoh
IER1bW15IGFyZ3VtZW50cwogCnR5cGUgKGdyaWRfdHlwZSksIGludGVudChpbikgOjogZ3JpZAoh
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIExv
Y2FsIHZhcmlhYmxlcwoKaW50ZWdlciBsZXYsIHZlcnQsIGVsZW0sIGl2ZXJ0CmxvZ2ljYWwoc21h
bGxfbG9naWNhbCkgOjogdmlzaXRlZF92ZXJ0KGdyaWQlYmlnZ2VzdF92ZXJ0KQohLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIEJlZ2luIGV4ZWN1
dGFibGUgY29kZQoKdmlzaXRlZF92ZXJ0ID0gLmZhbHNlLgpkbyBsZXY9MSxncmlkJW5sZXYKICAg
ZWxlbSA9IGdyaWQlaGVhZF9sZXZlbF9lbGVtKGxldikKICAgZG8gd2hpbGUgKGVsZW0gLz0gRU5E
X09GX0xJU1QpCiAgICAgIGRvIGl2ZXJ0PTEsVkVSVElDRVNfUEVSX0VMRU1FTlQKICAgICAgICAg
dmVydCA9IGdyaWQlZWxlbWVudChlbGVtKSV2ZXJ0ZXgoaXZlcnQpCiAgICAgICAgIGlmICh2aXNp
dGVkX3ZlcnQodmVydCkpIGN5Y2xlCiAgICAgICAgIHZpc2l0ZWRfdmVydCh2ZXJ0KSA9IC50cnVl
LgogICAgICAgICBjYWxsIHByaW50X3ZlcnRleChncmlkLHZlcnQpCiAgICAgIGVuZCBkbwogICAg
ICBlbGVtID0gZ3JpZCVlbGVtZW50KGVsZW0pJW5leHQKICAgZW5kIGRvCmVuZCBkbwoKZW5kIHN1
YnJvdXRpbmUgcHJpbnRfYWxsX3ZlcnRpY2VzCgohICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0t
CnN1YnJvdXRpbmUgcHJpbnRfZW50aXJlX2dyaWQoZ3JpZCkKISAgICAgICAgICAtLS0tLS0tLS0t
LS0tLS0tLQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KISBUaGlzIHN1YnJvdXRpbmUgcHJpbnRzIHRoZSBkYXRhIHN0cnVjdHVyZXMgZm9yIHRo
ZSB3aG9sZSBncmlkCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KISBEdW1teSBhcmd1bWVudHMKIAp0eXBlIChncmlkX3R5cGUpLCBpbnRlbnQoaW4p
IDo6IGdyaWQKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KISBCZWdpbiBleGVjdXRhYmxlIGNvZGUKCmNhbGwgcHJpbnRfYWxsX3ZlcnRpY2VzKGdy
aWQpCmNhbGwgcHJpbnRfYWxsX2VkZ2VzKGdyaWQpCmlmIChnbG9iYWxfZWxlbWVudF9raW5kID09
IFRFVFJBSEVEUkFMX0VMRU1FTlQpIGNhbGwgcHJpbnRfYWxsX2ZhY2VzKGdyaWQpCmNhbGwgcHJp
bnRfYWxsX2VsZW1lbnRzKGdyaWQpCgplbmQgc3Vicm91dGluZSBwcmludF9lbnRpcmVfZ3JpZAoK
ISAgICAgICAgICAtLS0tLS0tLS0tLS0tCnN1YnJvdXRpbmUgcHJpbnRfZWxlbWVudChncmlkLGVs
ZW0pCiEgICAgICAgICAgLS0tLS0tLS0tLS0tLQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBUaGlzIHN1YnJvdXRpbmUgcHJpbnRzIHRoZSBk
YXRhIHN0cnVjdHVyZSBmb3IgZWxlbWVudCBlbGVtCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIER1bW15IGFyZ3VtZW50cwoKdHlwZSAoZ3JpZF90
eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCmludGVnZXIsIGludGVudChpbikgOjogZWxlbQoKIS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBCZWdp
biBleGVjdXRhYmxlIGNvZGUKCndyaXRlKG91dHVuaXQsIihBKSIpICctLS0tLS0tLS0tLS0tLS0t
LS0tLScKd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICdFbGVtZW50IG51bWJlciAnLGVsZW0Kd3Jp
dGUob3V0dW5pdCwiKEEpIikgJy0tLS0tLS0tLS0tLS0tLS0tLS0tJwpjYWxsIGhhc2hfcHJpbnRf
a2V5KGdyaWQlZWxlbWVudChlbGVtKSVnaWQsb3V0dW5pdCwiR2xvYmFsIElEOiAiKQp3cml0ZShv
dXR1bml0LCIoQSw0STExKSIpICdWZXJ0aWNlczogICcsZ3JpZCVlbGVtZW50KGVsZW0pJXZlcnRl
eAp3cml0ZShvdXR1bml0LCIoQSw2STExKSIpICdFZGdlczogICAgICcsZ3JpZCVlbGVtZW50KGVs
ZW0pJWVkZ2UKY2FsbCBoYXNoX3ByaW50X2tleShncmlkJWVsZW1lbnQoZWxlbSklbmVpZ2hib3Jf
aGludCxvdXR1bml0LCJOZWlnaGJvciBoaW50OiAiKQppZiAoZ2xvYmFsX2VsZW1lbnRfa2luZCA9
PSBURVRSQUhFRFJBTF9FTEVNRU5UKSB0aGVuCiAgIHdyaXRlKG91dHVuaXQsIihBLDRJMTEpIikg
J0ZhY2VzOiAgICAgJyxncmlkJWVsZW1lbnQoZWxlbSklZmFjZQogICB3cml0ZShvdXR1bml0LCIo
QSxJMTEpIikgJ1JlZmluZW1lbnQgZWRnZTogJyxncmlkJWVsZW1lbnQoZWxlbSklcmVmaW5lbWVu
dF9lZGdlCiAgIHdyaXRlKG91dHVuaXQsIigyQSkiKSAnVHlwZTogJyxncmlkJWVsZW1lbnQoZWxl
bSkldHlwZQplbmQgaWYKaWYgKGdsb2JhbF9lbGVtZW50X2tpbmQgPT0gVFJJQU5HVUxBUl9FTEVN
RU5UKSB0aGVuCiAgIGNhbGwgaGFzaF9wcmludF9rZXkoZ3JpZCVlbGVtZW50KGVsZW0pJW1hdGUs
b3V0dW5pdCwiTWF0ZSBHSUQ6ICIpCmVuZGlmCndyaXRlKG91dHVuaXQsIihBLEkxMSkiKSAnTGV2
ZWw6ICAgICAnLGdyaWQlZWxlbWVudChlbGVtKSVsZXZlbAp3cml0ZShvdXR1bml0LCIoQSxJMTEp
IikgJ0RlZ3JlZTogICAgJyxncmlkJWVsZW1lbnQoZWxlbSklZGVncmVlCmlmIChzaXplX2VsZW1f
c29sbihncmlkLGVsZW0pLz0wKSB0aGVuCiAgIHdyaXRlKG91dHVuaXQsIihTUywxUCxBLDEwMEUx
OC4xMEUyKSIpICdTb2x1dGlvbjogICcsZ2V0X2VsZW1fc29sbihncmlkLCAmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbSxjb2xvbixj
b2xvbixjb2xvbikKZWxzZQogICB3cml0ZShvdXR1bml0LCIoQSkiKSAnU29sdXRpb246ICBkaXNh
c3NvY2lhdGVkJwplbmRpZgppZiAoc2l6ZV9lbGVtX2V4YWN0KGdyaWQsZWxlbSkvPTApIHRoZW4K
ICAgd3JpdGUob3V0dW5pdCwiKFNTLDFQLEEsMTAwRTE4LjEwRTIpIikgJ0V4YWN0OiAgICAgJyxn
ZXRfZWxlbV9leGFjdChncmlkLCAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbSxjb2xvbixjb2xvbixjb2xvbikKZWxzZQogICB3cml0
ZShvdXR1bml0LCIoQSkiKSAnRXhhY3Q6ICAgICBkaXNhc3NvY2lhdGVkJwplbmRpZgppZiAoc2l6
ZV9lbGVtX29sZHNvbG4oZ3JpZCxlbGVtKS89MCkgdGhlbgogICB3cml0ZShvdXR1bml0LCIoU1Ms
MVAsQSwxMDBFMTguMTBFMikiKSAnT2xkc29sbjogICAnLGdldF9lbGVtX29sZHNvbG4oZ3JpZCwg
JgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVsZW0sY29sb24sY29sb24sY29sb24pCmVsc2UKICAgd3JpdGUob3V0dW5pdCwiKEEpIikgJ09s
ZHNvbG46ICAgZGlzYXNzb2NpYXRlZCcKZW5kaWYKd3JpdGUob3V0dW5pdCwiKEEsTDEpIikgJ093
bmVyOiAgICAgJyxncmlkJWVsZW1lbnQoZWxlbSklaW93bgp3cml0ZShvdXR1bml0LCIoQSwySTEx
KSIpICdOZXh0L1ByZXY6ICcsZ3JpZCVlbGVtZW50KGVsZW0pJW5leHQsZ3JpZCVlbGVtZW50KGVs
ZW0pJXByZXZpb3VzCndyaXRlKG91dHVuaXQsIihBLDJJMTEpIikgJ0luL091dDogICAgJyxncmlk
JWVsZW1lbnQoZWxlbSklaW4sZ3JpZCVlbGVtZW50KGVsZW0pJW91dAppZiAoZ3JpZCVlbGVtZW50
KGVsZW0pJWxldmVsID09IDEpIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKEEsNEkxMSkiKSAnTmVp
Z2hib3JzOiAnLGdyaWQlaW5pdGlhbF9uZWlnaGJvcig6LGVsZW0pCmVuZGlmCndyaXRlKG91dHVu
aXQsIihBLDEwMEkxMSkiKSAnVGFnczogICAgICAnLGdyaWQlZWxlbWVudChlbGVtKSV0YWdzCndy
aXRlKG91dHVuaXQsIihBLDEwMEkxMSkiKSAnVHlwZTogICAgICAnLGdyaWQlZWxlbWVudF90eXBl
KGVsZW0sOikKCmVuZCBzdWJyb3V0aW5lIHByaW50X2VsZW1lbnQKCiEgICAgICAgICAgLS0tLS0t
LS0tLQpzdWJyb3V0aW5lIHByaW50X2ZhY2UoZ3JpZCxmYWNlKQohICAgICAgICAgIC0tLS0tLS0t
LS0KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiEgVGhpcyBzdWJyb3V0aW5lIHByaW50cyB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIGZhY2UgZmFj
ZQohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK
IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBE
dW1teSBhcmd1bWVudHMKCnR5cGUgKGdyaWRfdHlwZSksIGludGVudChpbikgOjogZ3JpZAppbnRl
Z2VyLCBpbnRlbnQoaW4pIDo6IGZhY2UKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgQmVnaW4gZXhlY3V0YWJsZSBjb2RlCgp3cml0ZShvdXR1
bml0LCIoQSkiKSAnLS0tLS0tLS0tLS0tLS0tLS0tJwp3cml0ZShvdXR1bml0LCIoQSxJMTEpIikg
J0ZhY2UgbnVtYmVyICcsZmFjZQp3cml0ZShvdXR1bml0LCIoQSkiKSAnLS0tLS0tLS0tLS0tLS0t
LS0tJwpjYWxsIGhhc2hfcHJpbnRfa2V5KGdyaWQlZmFjZShmYWNlKSVnaWQsb3V0dW5pdCwiR2xv
YmFsIElEOiAiKQp3cml0ZShvdXR1bml0LCIoQSwzSTExKSIpICdWZXJ0aWNlczogICAgICAgICAg
ICcsZ3JpZCVmYWNlKGZhY2UpJXZlcnRleAp3cml0ZShvdXR1bml0LCIoQSwzSTExKSIpICdFZGdl
czogICAgICAgICAgICAgICcsZ3JpZCVmYWNlKGZhY2UpJWVkZ2UKaWYgKHNpemVfZmFjZV9zb2xu
KGdyaWQsZmFjZSkvPTApIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKFNTLDFQLEEsMTAwRTE4LjEw
RTIpIikgJ1NvbHV0aW9uOiAgICAgICAgICAgJywgJgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldF9mYWNlX3NvbG4oZ3JpZCxmYWNlLGNvbG9uLGNvbG9uLGNvbG9uKQpl
bHNlCiAgIHdyaXRlKG91dHVuaXQsIihBKSIpICdTb2x1dGlvbjogICAgICAgICAgIGRpc2Fzc29j
aWF0ZWQnCmVuZGlmCmlmIChzaXplX2ZhY2VfZXhhY3QoZ3JpZCxmYWNlKS89MCkgdGhlbgogICB3
cml0ZShvdXR1bml0LCIoU1MsMVAsQSwxMDBFMTguMTBFMikiKSAnRXhhY3Q6ICAgICAgICAgICAg
ICAnLCAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZmFjZV9leGFj
dChncmlkLGZhY2UsY29sb24sY29sb24sY29sb24pCmVsc2UKICAgd3JpdGUob3V0dW5pdCwiKEEp
IikgJ0V4YWN0OiAgICAgICAgICAgICAgZGlzYXNzb2NpYXRlZCcKZW5kaWYKaWYgKHNpemVfZmFj
ZV9vbGRzb2xuKGdyaWQsZmFjZSkvPTApIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKFNTLDFQLEEs
MTAwRTE4LjEwRTIpIikgJ09sZHNvbG46ICAgICAgICAgICAgJywgJgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldF9mYWNlX29sZHNvbG4oZ3JpZCxmYWNlLGNvbG9uLGNvbG9u
LGNvbG9uKQplbHNlCiAgIHdyaXRlKG91dHVuaXQsIihBKSIpICdPbGRzb2xuOiAgICAgICAgICAg
IGRpc2Fzc29jaWF0ZWQnCmVuZGlmCndyaXRlKG91dHVuaXQsIihBLEkxMSkiKSAnQm1hcms6ICAg
ICAgICAgICAgICAnLGdyaWQlZmFjZShmYWNlKSVibWFyawp3cml0ZShvdXR1bml0LCIoQSwxMDBJ
MTEpIikgJ1R5cGU6ICAgICAgICAgICAgICAgJyxncmlkJWZhY2VfdHlwZShmYWNlLDopCndyaXRl
KG91dHVuaXQsIihBLEkxMSkiKSAnRGVncmVlOiAgICAgICAgICAgICAnLGdyaWQlZmFjZShmYWNl
KSVkZWdyZWUKd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICdBc3NvY2lhdGVkIGVsZW1lbnQ6ICcs
Z3JpZCVmYWNlKGZhY2UpJWFzc29jX2VsZW0Kd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICdNYXJr
ZWQgZWRnZTogICAgICAgICcsZ3JpZCVmYWNlKGZhY2UpJW1hcmtlZF9lZGdlCndyaXRlKG91dHVu
aXQsIihBLEkxMSkiKSAnTmV4dDogICAgICAgICAgICAgICAnLGdyaWQlZmFjZShmYWNlKSVuZXh0
CndyaXRlKG91dHVuaXQsIihBLDEwMEkxMSkiKSAnVGFnczogICAgICAgICAgICAgICAnLGdyaWQl
ZmFjZShmYWNlKSV0YWdzCgplbmQgc3Vicm91dGluZSBwcmludF9mYWNlCgohICAgICAgICAgIC0t
LS0tLS0tLS0Kc3Vicm91dGluZSBwcmludF9lZGdlKGdyaWQsZWRnZSkKISAgICAgICAgICAtLS0t
LS0tLS0tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQohIFRoaXMgc3Vicm91dGluZSBwcmludHMgdGhlIGRhdGEgc3RydWN0dXJlIGZvciBlZGdl
IGVkZ2UKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiEgRHVtbXkgYXJndW1lbnRzCgp0eXBlIChncmlkX3R5cGUpLCBpbnRlbnQoaW4pIDo6IGdyaWQK
aW50ZWdlciwgaW50ZW50KGluKSA6OiBlZGdlCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIEJlZ2luIGV4ZWN1dGFibGUgY29kZQoKd3JpdGUo
b3V0dW5pdCwiKEEpIikgJy0tLS0tLS0tLS0tLS0tLS0tLScKd3JpdGUob3V0dW5pdCwiKEEsSTEx
KSIpICdFZGdlIG51bWJlciAnLGVkZ2UKd3JpdGUob3V0dW5pdCwiKEEpIikgJy0tLS0tLS0tLS0t
LS0tLS0tLScKY2FsbCBoYXNoX3ByaW50X2tleShncmlkJWVkZ2UoZWRnZSklZ2lkLG91dHVuaXQs
Ikdsb2JhbCBJRDogIikKd3JpdGUob3V0dW5pdCwiKEEsMkkxMSkiKSAnVmVydGljZXM6ICAgICAg
ICAgICAnLGdyaWQlZWRnZShlZGdlKSV2ZXJ0ZXgKaWYgKHNpemVfZWRnZV9zb2xuKGdyaWQsZWRn
ZSkvPTApIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKFNTLDFQLEEsMTAwRTE4LjEwRTIpIikgJ1Nv
bHV0aW9uOiAgICAgICAgICAgJywgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldF9lZGdlX3NvbG4oZ3JpZCxlZGdlLGNvbG9uLGNvbG9uLGNvbG9uKQplbHNlCiAgIHdy
aXRlKG91dHVuaXQsIihBKSIpICdTb2x1dGlvbjogICAgICAgICAgIGRpc2Fzc29jaWF0ZWQnCmVu
ZGlmCmlmIChzaXplX2VkZ2VfZXhhY3QoZ3JpZCxlZGdlKS89MCkgdGhlbgogICB3cml0ZShvdXR1
bml0LCIoU1MsMVAsQSwxMDBFMTguMTBFMikiKSAnRXhhY3Q6ICAgICAgICAgICAgICAnLCAmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfZWRnZV9leGFjdChncmlkLGVk
Z2UsY29sb24sY29sb24sY29sb24pCmVsc2UKICAgd3JpdGUob3V0dW5pdCwiKEEpIikgJ0V4YWN0
OiAgICAgICAgICAgICAgZGlzYXNzb2NpYXRlZCcKZW5kaWYKaWYgKHNpemVfZWRnZV9vbGRzb2xu
KGdyaWQsZWRnZSkvPTApIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKFNTLDFQLEEsMTAwRTE4LjEw
RTIpIikgJ09sZHNvbG46ICAgICAgICAgICAgJywgJgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdldF9lZGdlX29sZHNvbG4oZ3JpZCxlZGdlLGNvbG9uLGNvbG9uLGNvbG9uKQpl
bHNlCiAgIHdyaXRlKG91dHVuaXQsIihBKSIpICdPbGRzb2xuOiAgICAgICAgICAgIGRpc2Fzc29j
aWF0ZWQnCmVuZGlmCndyaXRlKG91dHVuaXQsIihBLEkxMSkiKSAnQm1hcms6ICAgICAgICAgICAg
ICAnLGdyaWQlZWRnZShlZGdlKSVibWFyawp3cml0ZShvdXR1bml0LCIoQSwxMDBJMTEpIikgJ1R5
cGU6ICAgICAgICAgICAgICAgJyxncmlkJWVkZ2VfdHlwZShlZGdlLDopCndyaXRlKG91dHVuaXQs
IihBLEkxMSkiKSAnRGVncmVlOiAgICAgICAgICAgICAnLGdyaWQlZWRnZShlZGdlKSVkZWdyZWUK
d3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICdBc3NvY2lhdGVkIGVsZW1lbnQ6ICcsZ3JpZCVlZGdl
KGVkZ2UpJWFzc29jX2VsZW0Kd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICdOZXh0OiAgICAgICAg
ICAgICAgICcsZ3JpZCVlZGdlKGVkZ2UpJW5leHQKd3JpdGUob3V0dW5pdCwiKEEsMTAwSTExKSIp
ICdUYWdzOiAgICAgICAgICAgICAgICcsZ3JpZCVlZGdlKGVkZ2UpJXRhZ3MKCmVuZCBzdWJyb3V0
aW5lIHByaW50X2VkZ2UKCiEgICAgICAgICAgLS0tLS0tLS0tLS0tCnN1YnJvdXRpbmUgcHJpbnRf
dmVydGV4KGdyaWQsdmVydCkKISAgICAgICAgICAtLS0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgVGhpcyBzdWJyb3V0aW5l
IHByaW50cyB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yIHZlcnRleCB2ZXJ0ZXgKIS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgRHVtbXkgYXJndW1lbnRz
Cgp0eXBlIChncmlkX3R5cGUpLCBpbnRlbnQoaW4pIDo6IGdyaWQKaW50ZWdlciwgaW50ZW50KGlu
KSA6OiB2ZXJ0CgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQohIEJlZ2luIGV4ZWN1dGFibGUgY29kZQoKd3JpdGUob3V0dW5pdCwiKEEpIikgJy0t
LS0tLS0tLS0tLS0tLS0tLS0tJwp3cml0ZShvdXR1bml0LCIoQSxJMTEpIikgJ1ZlcnRleCBudW1i
ZXIgJyx2ZXJ0CndyaXRlKG91dHVuaXQsIihBKSIpICctLS0tLS0tLS0tLS0tLS0tLS0tLScKY2Fs
bCBoYXNoX3ByaW50X2tleShncmlkJXZlcnRleCh2ZXJ0KSVnaWQsb3V0dW5pdCwiR2xvYmFsIElE
OiAiKQp3cml0ZShvdXR1bml0LCIoU1MsMVAsQSwzRTE4LjEwRTIpIikgJ0Nvb3JkaW5hdGVzOiAg
ICAgICAgJyxncmlkJXZlcnRleCh2ZXJ0KSVjb29yZAp3cml0ZShvdXR1bml0LCIoU1MsMVAsQSwx
MDBFMTguMTBFMikiKSAnU29sdXRpb246ICAgICAgICAgICAnLGdldF92ZXJ0X3NvbG4oZ3JpZCx2
ZXJ0LGNvbG9uLGNvbG9uKQppZiAoc2l6ZV92ZXJ0X2V4YWN0KGdyaWQpLz0wKSB0aGVuCiAgIHdy
aXRlKG91dHVuaXQsIihTUywxUCxBLDEwMEUxOC4xMEUyKSIpICdFeGFjdDogICAgICAgICAgICAg
ICcsZ2V0X3ZlcnRfZXhhY3QoZ3JpZCx2ZXJ0LGNvbG9uLGNvbG9uKQplbHNlCiAgIHdyaXRlKG91
dHVuaXQsIihBKSIpICdFeGFjdDogICAgICAgICAgICAgIGRpc2Fzc29jaWF0ZWQnCmVuZGlmCmlm
IChzaXplX3ZlcnRfb2xkc29sbihncmlkKS89MCkgdGhlbgogICB3cml0ZShvdXR1bml0LCIoU1Ms
MVAsQSwxMDBFMTguMTBFMikiKSAnT2xkc29sbjogICAgICAgICAgICAnLGdldF92ZXJ0X29sZHNv
bG4oZ3JpZCx2ZXJ0LGNvbG9uLGNvbG9uKQplbHNlCiAgIHdyaXRlKG91dHVuaXQsIihBKSIpICdP
bGRzb2xuOiAgICAgICAgICAgIGRpc2Fzc29jaWF0ZWQnCmVuZGlmCndyaXRlKG91dHVuaXQsIihB
LEkxMSkiKSAnQm1hcms6ICAgICAgICAgICAgICAnLGdyaWQldmVydGV4KHZlcnQpJWJtYXJrCndy
aXRlKG91dHVuaXQsIihBLDEwMEkxMSkiKSAnVHlwZTogICAgICAgICAgICAgICAnLGdyaWQldmVy
dGV4X3R5cGUodmVydCw6KQp3cml0ZShvdXR1bml0LCIoQSxJMTEpIikgJ0Fzc29jaWF0ZWQgZWxl
bWVudDogJyxncmlkJXZlcnRleCh2ZXJ0KSVhc3NvY19lbGVtCndyaXRlKG91dHVuaXQsIihBLEkx
MSkiKSAnTmV4dDogICAgICAgICAgICAgICAnLGdyaWQldmVydGV4KHZlcnQpJW5leHQKd3JpdGUo
b3V0dW5pdCwiKEEsMTAwSTExKSIpICdUYWdzOiAgICAgICAgICAgICAgICcsZ3JpZCV2ZXJ0ZXgo
dmVydCkldGFncwoKcmV0dXJuCmVuZCBzdWJyb3V0aW5lIHByaW50X3ZlcnRleAoKISAgICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0Kc3Vicm91dGluZSBwcmludF9ncmlkX2luZm8oZ3JpZCxwcm9jcyxp
b19jb250cm9sLHN0aWxsX3NlcXVlbnRpYWwsdGhpc190aW1lLCAmCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRhZykKISAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgVGhpcyByb3V0aW5lIHBy
aW50cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ3JpZAohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmltcGxpY2l0IG5vbmUKIAohLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIER1bW15IGFyZ3Vt
ZW50cwogCnR5cGUgKGdyaWRfdHlwZSksIGludGVudChpbikgOjogZ3JpZAp0eXBlIChwcm9jX2lu
Zm8pLCBpbnRlbnQoaW4pIDo6IHByb2NzCnR5cGUgKGlvX29wdGlvbnMpLCBpbnRlbnQoaW4pIDo6
IGlvX2NvbnRyb2wKbG9naWNhbCwgaW50ZW50KGluKSA6OiBzdGlsbF9zZXF1ZW50aWFsCmludGVn
ZXIsIGludGVudChpbikgOjogdGhpc190aW1lKDopLHRhZwohLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwgdmFyaWFibGVzOgogCmludGVn
ZXIgOjogaSxwcm9jLG5wLHdobyx3aGVuLGFzdGF0CmludGVnZXIgOjogbmVsZW0sbmxldixudmVy
dCxudmVydF9vd24sbmVsZW1fb3duLG5lbGVtX2xlYWYsbmVsZW1fbGVhZl9vd24sICYKICAgICAg
ICAgICBtaW5kZWcsbWF4ZGVnLGRvZixkb2Zfb3duCmludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGl2
ZXJ0KDopLGllbGVtKDopLGlsZXYoOiksaWVsZW1fbGVhZig6KSwgJgogICAgICAgICAgICAgICAg
ICAgICAgICBpdmVydF9vd24oOiksaWVsZW1fb3duKDopLGllbGVtX2xlYWZfb3duKDopLCAmCiAg
ICAgICAgICAgICAgICAgICAgICAgIGltaW5kZWcoOiksaW1heGRlZyg6KSxpZG9mKDopLGlkb2Zf
b3duKDopCmludGVnZXIgOjogc2VuZF9pbnQoMTEpLG5pLG5yCnJlYWwgKG15X3JlYWwpIDo6IG5v
X3JlYWxzKDEpCmludGVnZXIsIHBvaW50ZXIgOjogcmVjdl9pbnQoOikKcmVhbCAobXlfcmVhbCks
IHBvaW50ZXIgOjogcmVjdl9yZWFsKDopCiAKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIEJlZ2luIGV4ZWN1dGFibGUgY29kZQogCiEgSWYgdGhp
cyBpcyBub3QgdGhlIHJpZ2h0IHRpbWUgdG8gcHJpbnQsIHJldHVybgoKd2hvID0gaW9fY29udHJv
bCVwcmludF9ncmlkX3dobwp3aGVuID0gaW9fY29udHJvbCVwcmludF9ncmlkX3doZW4KCmlmICgu
bm90LiBhbnkodGhpc190aW1lID09IHdoZW4pIC5vci4gd2hvID09IE5PX09ORSkgcmV0dXJuCgoh
IElmIEknbSB0aGUgbWFzdGVyIGFuZCBvbmx5IHNsYXZlcyBwcmludCB0aGUgZ3JpZCwgcmV0dXJu
CgppZiAobXlfcHJvYyhwcm9jcykgPT0gTUFTVEVSIC5hbmQuIHdobyA9PSBTTEFWRVMpIHJldHVy
bgoKISBzdG9wIHRoZSBjbG9ja3MKCmNhbGwgcGF1c2Vfd2F0Y2goYWxsX3dhdGNoZXMpCgohIElm
IHRoZSBtYXN0ZXIgd2lsbCBwcmludCwgd2FpdCBmb3IgdGhlIG1hc3RlciB0byBnZXQgaGVyZSBz
byB0aGUgc2xhdmVzCiEgZG9uJ3QgcnVuIGF3YXkgZnJvbSBpdAoKaWYgKHdobyA9PSBNQVNURVIg
Lm9yLiB3aG8gPT0gTUFTVEVSX0FMTCAub3IuIHdobyA9PSBFVkVSWU9ORSkgdGhlbgogICBpZiAo
bXlfcHJvYyhwcm9jcykgPT0gTUFTVEVSKSB0aGVuCiAgICAgIGRvIHByb2M9MSxudW1fcHJvYyhw
cm9jcykKICAgICAgICAgY2FsbCBwaGFtbF9zZW5kKHByb2NzLHByb2MsKC8xLyksMSxub19yZWFs
cywwLDcxMSkKICAgICAgZW5kIGRvCiAgIGVsc2UKICAgICAgY2FsbCBwaGFtbF9yZWN2KHByb2Nz
LHByb2MscmVjdl9pbnQsbmkscmVjdl9yZWFsLG5yLDcxMSkKICAgICAgaWYgKGFzc29jaWF0ZWQo
cmVjdl9pbnQpKSBkZWFsbG9jYXRlKHJlY3ZfaW50KQogICBlbmRpZgplbmRpZgoKISBJZiBJJ20g
bm90IHRoZSBtYXN0ZXIsIGNvbGxlY3QgbXkgZ3JpZCBpbmZvCgppZiAobXlfcHJvYyhwcm9jcykg
Lz0gTUFTVEVSKSB0aGVuCiAgIGNhbGwgZ2V0X2dyaWRfaW5mbyhncmlkLHByb2NzLHN0aWxsX3Nl
cXVlbnRpYWwsNzEwLG5lbGVtLG5sZXYsbnZlcnQsICYKICAgICAgICAgICAgICAgICAgICAgIG52
ZXJ0X293bixuZWxlbV9vd24sbmVsZW1fbGVhZixuZWxlbV9sZWFmX293biwgJgogICAgICAgICAg
ICAgICAgICAgICAgZG9mLGRvZl9vd24sbWluZGVnPW1pbmRlZyxtYXhkZWc9bWF4ZGVnLG5vX21h
c3Rlcj0udHJ1ZS4pCmVuZGlmCgohIElmIHRoZSBtYXN0ZXIgd2lsbCBwcmludCwgZ2V0IGl0IHRo
ZSBpbmZvCgppZiAod2hvID09IE1BU1RFUiAub3IuIHdobyA9PSBNQVNURVJfQUxMIC5vci4gd2hv
ID09IEVWRVJZT05FKSB0aGVuCiAgIGlmIChteV9wcm9jKHByb2NzKSAvPSBNQVNURVIpIHRoZW4K
ICAgICAgc2VuZF9pbnQoMSkgPSBudmVydAogICAgICBzZW5kX2ludCgyKSA9IG5lbGVtCiAgICAg
IHNlbmRfaW50KDMpID0gbmxldgogICAgICBzZW5kX2ludCg0KSA9IG5lbGVtX2xlYWYKICAgICAg
c2VuZF9pbnQoNSkgPSBudmVydF9vd24KICAgICAgc2VuZF9pbnQoNikgPSBuZWxlbV9vd24KICAg
ICAgc2VuZF9pbnQoNykgPSBuZWxlbV9sZWFmX293bgogICAgICBzZW5kX2ludCg4KSA9IG1pbmRl
ZwogICAgICBzZW5kX2ludCg5KSA9IG1heGRlZwogICAgICBzZW5kX2ludCgxMCkgPSBkb2YKICAg
ICAgc2VuZF9pbnQoMTEpID0gZG9mX293bgogICAgICBuaSA9IDExCiAgICAgIG5yID0gMAogICAg
ICBjYWxsIHBoYW1sX3NlbmQocHJvY3MsTUFTVEVSLHNlbmRfaW50LG5pLG5vX3JlYWxzLG5yLHRh
ZykKICAgZWxzZQogICAgICBucCA9IG51bV9wcm9jKHByb2NzKQogICAgICBhbGxvY2F0ZShpdmVy
dChucCksaWVsZW0obnApLGlsZXYobnApLGllbGVtX2xlYWYobnApLGl2ZXJ0X293bihucCksICYK
ICAgICAgICAgICAgICAgaWVsZW1fb3duKG5wKSxpZWxlbV9sZWFmX293bihucCksaW1pbmRlZyhu
cCksaW1heGRlZyhucCksICYKICAgICAgICAgICAgICAgaWRvZihucCksaWRvZl9vd24obnApLHN0
YXQ9YXN0YXQpCiAgICAgIGlmIChhc3RhdCAvPSAwKSB0aGVuCiAgICAgICAgIGllcnIgPSBBTExP
Q19GQUlMRUQKICAgICAgICAgY2FsbCBmYXRhbCgiYWxsb2NhdGlvbiBmYWlsZWQgaW4gcHJpbnRf
Z3JpZF9pbmZvIixwcm9jcz1wcm9jcykKICAgICAgICAgcmV0dXJuCiAgICAgIGVuZGlmCiAgICAg
IGRvIGk9MSxucAogICAgICAgICBjYWxsIHBoYW1sX3JlY3YocHJvY3MscHJvYyxyZWN2X2ludCxu
aSxyZWN2X3JlYWwsbnIsdGFnKQogICAgICAgICBpdmVydChwcm9jKSA9IHJlY3ZfaW50KDEpCiAg
ICAgICAgIGllbGVtKHByb2MpID0gcmVjdl9pbnQoMikKICAgICAgICAgaWxldihwcm9jKSA9IHJl
Y3ZfaW50KDMpCiAgICAgICAgIGllbGVtX2xlYWYocHJvYykgPSByZWN2X2ludCg0KQogICAgICAg
ICBpdmVydF9vd24ocHJvYykgPSByZWN2X2ludCg1KQogICAgICAgICBpZWxlbV9vd24ocHJvYykg
PSByZWN2X2ludCg2KQogICAgICAgICBpZWxlbV9sZWFmX293bihwcm9jKSA9IHJlY3ZfaW50KDcp
CiAgICAgICAgIGltaW5kZWcocHJvYykgPSByZWN2X2ludCg4KQogICAgICAgICBpbWF4ZGVnKHBy
b2MpID0gcmVjdl9pbnQoOSkKICAgICAgICAgaWRvZihwcm9jKSA9IHJlY3ZfaW50KDEwKQogICAg
ICAgICBpZG9mX293bihwcm9jKSA9IHJlY3ZfaW50KDExKQogICAgICAgICBkZWFsbG9jYXRlKHJl
Y3ZfaW50LHN0YXQ9YXN0YXQpCiAgICAgIGVuZCBkbwogICAgICBpZiAoc3RpbGxfc2VxdWVudGlh
bCkgdGhlbgogICAgICAgICBudmVydCA9IGl2ZXJ0X293bigxKQogICAgICAgICBuZWxlbSA9IGll
bGVtX293bigxKQogICAgICAgICBubGV2ID0gaWxldigxKQogICAgICAgICBuZWxlbV9sZWFmID0g
aWVsZW1fbGVhZl9vd24oMSkKICAgICAgICAgbWluZGVnID0gaW1pbmRlZygxKQogICAgICAgICBt
YXhkZWcgPSBpbWF4ZGVnKDEpCiAgICAgICAgIGRvZiA9IGlkb2YoMSkKICAgICAgZWxzZQogICAg
ICAgICBudmVydCA9IHN1bShpdmVydF9vd24pCiAgICAgICAgIG5lbGVtID0gc3VtKGllbGVtX293
bikKICAgICAgICAgbmxldiA9IG1heHZhbChpbGV2KQogICAgICAgICBuZWxlbV9sZWFmID0gc3Vt
KGllbGVtX2xlYWZfb3duKQogICAgICAgICBtaW5kZWcgPSBtaW52YWwoaW1pbmRlZykKICAgICAg
ICAgbWF4ZGVnID0gbWF4dmFsKGltYXhkZWcpCiAgICAgICAgIGRvZiA9IHN1bShpZG9mX293bikK
ICAgICAgZW5kaWYKICAgZW5kaWYKZW5kaWYKCiEgcHJpbnQgdGhlIGluZm8sIGlmIHJlcXVlc3Rl
ZAoKaWYgKG15X3Byb2MocHJvY3MpIC89IE1BU1RFUikgdGhlbgogaWYgKHdobyA9PSBTTEFWRVMg
Lm9yLiB3aG8gPT0gRVZFUllPTkUpIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKEEpIikKICAgd3Jp
dGUob3V0dW5pdCwiKEEpIikgJ015IEdyaWQ6JwogICB3cml0ZShvdXR1bml0LCIoQSxJMTEpIikg
JyAgIG51bWJlciBvZiB2ZXJ0aWNlcyAgICAgICA9ICcsbnZlcnQKICAgd3JpdGUob3V0dW5pdCwi
KEEsSTExKSIpICcgICBudW1iZXIgb2YgdmVydGljZXMgSSBvd24gPSAnLG52ZXJ0X293bgogICB3
cml0ZShvdXR1bml0LCIoQSxJMTEpIikgJyAgIG51bWJlciBvZiBlbGVtZW50cyAgICAgICA9ICcs
bmVsZW0KICAgd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICcgICBudW1iZXIgb2YgbGVhZiBlbGVt
ZW50cyAgPSAnLG5lbGVtX2xlYWYKICAgd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICcgICBsZWFm
IGVsZW1lbnRzIEkgb3duICAgICAgPSAnLG5lbGVtX2xlYWZfb3duCiAgIHdyaXRlKG91dHVuaXQs
IihBLEkxMSkiKSAnICAgbnVtYmVyIG9mIGxldmVscyAgICAgICAgID0gJyxubGV2CiAgIHdyaXRl
KG91dHVuaXQsIihBLEkxMSkiKSAnICAgZGVncmVlcyBvZiBmcmVlZG9tICAgICAgID0gJyxkb2YK
ICAgd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICcgICBkZWdyZWVzIG9mIGZyZWVkb20gSSBvd24g
PSAnLGRvZl9vd24KICAgd3JpdGUob3V0dW5pdCwiKEEsMkkxMSkiKSAnICAgbWluIGFuZCBtYXgg
ZGVncmVlICAgICAgID0gJyxtaW5kZWcsbWF4ZGVnCiBlbmRpZgplbHNlCiBpZiAod2hvID09IE1B
U1RFUl9BTEwpIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKEEpIikKICAgd3JpdGUob3V0dW5pdCwi
KEEpIikgJ0luZGl2aWR1YWwgR3JpZHM6JwogICB3cml0ZShvdXR1bml0LCIoQSwxMjhJMTEpIikg
JyAgIG51bWJlciBvZiB2ZXJ0aWNlcyAgICAgICA9ICcsaXZlcnQKICAgd3JpdGUob3V0dW5pdCwi
KEEsMTI4STExKSIpICcgICBudW1iZXIgb2YgdmVydGljZXMgSSBvd24gPSAnLGl2ZXJ0X293bgog
ICB3cml0ZShvdXR1bml0LCIoQSwxMjhJMTEpIikgJyAgIG51bWJlciBvZiBlbGVtZW50cyAgICAg
ICA9ICcsaWVsZW0KICAgd3JpdGUob3V0dW5pdCwiKEEsMTI4STExKSIpICcgICBudW1iZXIgb2Yg
bGVhZiBlbGVtZW50cyAgPSAnLGllbGVtX2xlYWYKICAgd3JpdGUob3V0dW5pdCwiKEEsMTI4STEx
KSIpICcgICBsZWFmIGVsZW1lbnRzIEkgb3duICAgICAgPSAnLGllbGVtX2xlYWZfb3duCiAgIHdy
aXRlKG91dHVuaXQsIihBLDEyOEkxMSkiKSAnICAgbnVtYmVyIG9mIGxldmVscyAgICAgICAgID0g
JyxpbGV2CiAgIHdyaXRlKG91dHVuaXQsIihBLDEyOEkxMSkiKSAnICAgZGVncmVlcyBvZiBmcmVl
ZG9tICAgICAgID0gJyxpZG9mCiAgIHdyaXRlKG91dHVuaXQsIihBLDEyOEkxMSkiKSAnICAgZGVn
cmVlcyBvZiBmcmVlZG9tIEkgb3duID0gJyxpZG9mX293bgogICB3cml0ZShvdXR1bml0LCIoQSwx
MjhJMTEpIikgJyAgIG1pbiBkZWdyZWUgICAgICAgICAgICAgICA9ICcsaW1pbmRlZwogICB3cml0
ZShvdXR1bml0LCIoQSwxMjhJMTEpIikgJyAgIG1heCBkZWdyZWUgICAgICAgICAgICAgICA9ICcs
aW1heGRlZwogZW5kaWYKIGlmICh3aG8gPT0gTUFTVEVSIC5vci4gd2hvID09IEVWRVJZT05FIC5v
ci4gd2hvID09IE1BU1RFUl9BTEwpIHRoZW4KICAgd3JpdGUob3V0dW5pdCwiKEEpIikKICAgd3Jp
dGUob3V0dW5pdCwiKEEpIikgJ1RvdGFsIEdyaWQ6JwogICB3cml0ZShvdXR1bml0LCIoQSxJMTEp
IikgJyAgIG51bWJlciBvZiB2ZXJ0aWNlcyAgICAgID0gJyxudmVydAogICB3cml0ZShvdXR1bml0
LCIoQSxJMTEpIikgJyAgIG51bWJlciBvZiBsZWFmIGVsZW1lbnRzID0gJyxuZWxlbV9sZWFmCiAg
IHdyaXRlKG91dHVuaXQsIihBLEkxMSkiKSAnICAgbnVtYmVyIG9mIGxldmVscyAgICAgICAgPSAn
LG5sZXYKICAgd3JpdGUob3V0dW5pdCwiKEEsSTExKSIpICcgICBkZWdyZWVzIG9mIGZyZWVkb20g
ICAgICA9ICcsZG9mCiAgIHdyaXRlKG91dHVuaXQsIihBLDJJMTEpIikgJyAgIG1pbiBhbmQgbWF4
IGRlZ3JlZSAgICAgID0gJyxtaW5kZWcsbWF4ZGVnCiBlbmRpZgplbmRpZgoKaWYgKGFsbG9jYXRl
ZChpdmVydCkpIHRoZW4KICAgZGVhbGxvY2F0ZShpdmVydCxpZWxlbSxpbGV2LGllbGVtX2xlYWYs
aXZlcnRfb3duLGllbGVtX293bixpZWxlbV9sZWFmX293biwgJgogICAgICAgICAgICAgIGltaW5k
ZWcsaW1heGRlZyxpZG9mLGlkb2Zfb3duLHN0YXQ9YXN0YXQpCmVuZGlmCgpjYWxsIGVuZF9wYXVz
ZV93YXRjaChhbGxfd2F0Y2hlcykKCnJldHVybgplbmQgc3Vicm91dGluZSBwcmludF9ncmlkX2lu
Zm8KCiEgICAgICAgICAgLS0tLS0tLS0tCnN1YnJvdXRpbmUgZHJhd19ncmlkKGdyaWQscHJvY3Ms
aW9fY29udHJvbCxyZWZfY29udHJvbCxpX2RyYXcsbWFzdGVyX2RyYXdzLCAmCiAgICAgICAgICAg
ICAgICAgICAgIHN0aWxsX3NlcXVlbnRpYWwsdGhpc190aW1lLHBhcnRpdGlvbl9tZXRob2QsbGIs
ICYKICAgICAgICAgICAgICAgICAgICAgc29sdmVyX2NvbnRyb2wpCiEgICAgICAgICAgLS0tLS0t
LS0tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQohIFRoaXMgc3Vicm91dGluZSBzZW5kcyBhIG1lc3NhZ2UgdG8gdGhlIGdyYXBoaWNzIHByb2Nl
c3MgdG8gcmVkcmF3IHRoZSBncmlkLgohIElmIHRoZSBncmlkIGRhdGEgaGFzIGNoYW5nZWQsIGl0
IGFsc28gc2VuZHMgdGhlIG5ldyBkYXRhLgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KISBEdW1teSBhcmd1bWVudHMKCnR5cGUgKGdyaWRfdHlwZSks
IGludGVudChpbm91dCkgOjogZ3JpZAp0eXBlIChwcm9jX2luZm8pLCBpbnRlbnQoaW4pIDo6IHBy
b2NzCnR5cGUgKGlvX29wdGlvbnMpLCBpbnRlbnQoaW4pIDo6IGlvX2NvbnRyb2wKdHlwZSAocmVm
aW5lX29wdGlvbnMpLCBpbnRlbnQoaW4pIDo6IHJlZl9jb250cm9sCmxvZ2ljYWwsIGludGVudChp
bikgOjogaV9kcmF3LCBtYXN0ZXJfZHJhd3MsIHN0aWxsX3NlcXVlbnRpYWwKaW50ZWdlciwgaW50
ZW50KGluKSA6OiB0aGlzX3RpbWUoOikKaW50ZWdlciwgaW50ZW50KGluKSA6OiBwYXJ0aXRpb25f
bWV0aG9kCnR5cGUoWm9sdGFuX1N0cnVjdCksIHBvaW50ZXIgOjogbGIKdHlwZSAoc29sdmVyX29w
dGlvbnMpLCBpbnRlbnQoaW4pLCBvcHRpb25hbCA6OiBzb2x2ZXJfY29udHJvbAohLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBMb2NhbCB2YXJpYWJs
ZXM6CgppbnRlZ2VyIDo6IG5pLCBuciwgYXN0YXQsIG1hcmtlcnMKaW50ZWdlciwgcG9pbnRlciA6
OiBpbWVzcyg6KQpyZWFsIChteV9yZWFsKSwgcG9pbnRlciA6OiBybWVzcyg6KQppbnRlZ2VyIDo6
IGltZXNzMSgxKQpyZWFsIChteV9yZWFsKSA6OiBub3JlYWxzKDEpCmludGVnZXIsIGFsbG9jYXRh
YmxlIDo6IGhvbGRfbmV4dCg6KSwgaG9sZF9wcmV2KDopCmludGVnZXIgOjogaG9sZF9oZWFkCiEt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgohLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIEJlZ2lu
IGV4ZWN1dGFibGUgY29kZQoKISBzZWUgaWYgSSBzaG91bGQgZG8gYW55dGhpbmcKCmlmICgubm90
LiAoaV9kcmF3IC5vci4gbWFzdGVyX2RyYXdzKSkgcmV0dXJuCmlmICgubm90LiBhbnkodGhpc190
aW1lID09IGlvX2NvbnRyb2wlZHJhd19ncmlkX3doZW4pKSByZXR1cm4KCmNhbGwgcGF1c2Vfd2F0
Y2goYWxsX3dhdGNoZXMpCgohIHNsYXZlCgppZiAobXlfcHJvYyhwcm9jcykgLz0gTUFTVEVSKSB0
aGVuCgohIGlmIHRoZSBncmlkIGhhcyBjaGFuZ2VkIHNpbmNlIGxhc3Qgc2VudCB0byB0aGUgZ3Jh
cGhpY3MgcHJvY2VzcyAuLi4KCiAgIGlmIChncmlkX2NoYW5nZWQpIHRoZW4KCiEgaWYgdXNpbmcg
Wk9MVEFOX1JFRlRSRUUsICBwcmVzZXJ2ZSB0aGUgbGV2ZWwtYnktbGV2ZWwgZWxlbWVudCBsaW5r
ZWQgbGlzdAohIGFuZCBnZXQgdGhlIGNoaWxkIG9yZGVyIGZyb20gWm9sdGFuCgogICAgICBpZiAo
cGFydGl0aW9uX21ldGhvZCA9PSBaT0xUQU5fUkVGVFJFRSkgdGhlbgoKICAgICAgICAgYWxsb2Nh
dGUoaG9sZF9uZXh0KGdyaWQlYmlnZ2VzdF9lbGVtKSwgJgogICAgICAgICAgICAgICAgICBob2xk
X3ByZXYoZ3JpZCViaWdnZXN0X2VsZW0pLHN0YXQ9YXN0YXQpCiAgICAgICAgIGlmIChhc3RhdCAv
PSAwKSB0aGVuCiAgICAgICAgICAgIGllcnIgPSBBTExPQ19GQUlMRUQKICAgICAgICAgICAgY2Fs
bCBmYXRhbCgiYWxsb2NhdGlvbiBmYWlsZWQgaW4gZHJhd19ncmlkIixwcm9jcz1wcm9jcykKICAg
ICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVuZGlmCiAgICAgICAgIGhvbGRfbmV4dCA9IGdyaWQl
ZWxlbWVudCgxOmdyaWQlYmlnZ2VzdF9lbGVtKSVuZXh0CiAgICAgICAgIGhvbGRfcHJldiA9IGdy
aWQlZWxlbWVudCgxOmdyaWQlYmlnZ2VzdF9lbGVtKSVwcmV2aW91cwogICAgICAgICBob2xkX2hl
YWQgPSBncmlkJWhlYWRfbGV2ZWxfZWxlbSgxKQoKICAgICAgICAgY2FsbCBjaGlsZF9vcmRlcl9m
cm9tX3pvbHRhbihncmlkLHByb2NzLGxiLHBhcnRpdGlvbl9tZXRob2QsICYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlsbF9zZXF1ZW50aWFsKQogICAgICBlbmRpZgoK
ISBpZiBzbGF2ZXMgYXJlIHBsb3R0aW5nLCBzZW5kIHRoZSBncmlkIHRvIHRoZSBncmFwaGljcyBw
cm9jZXNzCgogICAgICBzZWxlY3QgY2FzZSAoZ2xvYmFsX2VsZW1lbnRfa2luZCkKICAgICAgY2Fz
ZSAoVFJJQU5HVUxBUl9FTEVNRU5UKQogICAgICAgICBtYXJrZXJzID0gMwogICAgICBjYXNlIChU
RVRSQUhFRFJBTF9FTEVNRU5UKQogICAgICAgICBtYXJrZXJzID0gNAogICAgICBlbmQgc2VsZWN0
CiAgICAgIGlmIChpX2RyYXcpIHRoZW4KICAgICAgICAgYWxsb2NhdGUoaW1lc3MobWFya2Vycytz
Y2FsYXJfaW1lc3Nfc2l6ZShncmlkKSArICYKICAgICAgICAgICAgICAgICAgICAgICAgZWxlbV9p
bWVzc19zaXplKGdyaWQpKmdyaWQlbmVsZW0gKyAmCiAgICAgICAgICAgICAgICAgICAgICAgIGZh
Y2VfaW1lc3Nfc2l6ZShncmlkKSpncmlkJW5mYWNlICsgJgogICAgICAgICAgICAgICAgICAgICAg
ICBlZGdlX2ltZXNzX3NpemUoZ3JpZCkqZ3JpZCVuZWRnZSArICYKICAgICAgICAgICAgICAgICAg
ICAgICAgdmVydF9pbWVzc19zaXplKGdyaWQpKmdyaWQlbnZlcnQpLCAmCiAgICAgICAgICAgICAg
ICAgIHJtZXNzKHNjYWxhcl9ybWVzc19zaXplKGdyaWQpICsgJgogICAgICAgICAgICAgICAgICAg
ICAgICBlbGVtX3JtZXNzX3NpemUoZ3JpZCkqZ3JpZCVuZWxlbSArICYKICAgICAgICAgICAgICAg
ICAgICAgICAgZmFjZV9ybWVzc19zaXplKGdyaWQpKmdyaWQlbmZhY2UgKyAmCiAgICAgICAgICAg
ICAgICAgICAgICAgIGVkZ2Vfcm1lc3Nfc2l6ZShncmlkKSpncmlkJW5lZGdlICsgJgogICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJ0X3JtZXNzX3NpemUoZ3JpZCkqZ3JpZCVudmVydCksICYKICAg
ICAgICAgICAgICAgICAgc3RhdD1hc3RhdCkKICAgICAgICAgaWYgKGFzdGF0IC89IDApIHRoZW4K
ICAgICAgICAgICAgaWVyciA9IEFMTE9DX0ZBSUxFRAogICAgICAgICAgICBjYWxsIGZhdGFsKCJh
bGxvY2F0aW9uIGZhaWxlZCBpbiBkcmF3X2dyaWQiLHByb2NzPXByb2NzKQogICAgICAgICAgICBy
ZXR1cm4KICAgICAgICAgZW5kaWYKICAgICAgICAgY2FsbCBwYWNrX2dyaWQoZ3JpZCxwcm9jcyxy
ZWZfY29udHJvbCwuZmFsc2UuLHN0aWxsX3NlcXVlbnRpYWwsaW1lc3MsICYKICAgICAgICAgICAg
ICAgICAgICAgICAgcm1lc3MsbmksbnIsc29sdmVyX2NvbnRyb2wpCiAgICAgICAgIGlmIChQQVJB
TExFTCA9PSBTRVFVRU5USUFMKSB0aGVuCiAgICAgICAgICAgIGNhbGwgc2VxdWVudGlhbF9zZW5k
KGltZXNzKDE6bmkpLG5pLHJtZXNzKDE6bnIpLG5yKQogICAgICAgICBlbHNlCiAgICAgICAgICAg
IGNhbGwgcGhhbWxfc2VuZChwcm9jcyxncmFwaGljc19wcm9jKHByb2NzKSxpbWVzcyxuaSxybWVz
cyxuciwxMDEpCiAgICAgICAgIGVuZGlmCiAgICAgICAgIGRlYWxsb2NhdGUoaW1lc3Mscm1lc3Ms
c3RhdD1hc3RhdCkKICAgICAgZW5kaWYKCiEgaWYgbWFzdGVyIGlzIHBsb3R0aW5nLCBzZW5kIHRo
ZSBncmlkIHRvIHRoZSBtYXN0ZXIKCiAgICAgIGlmIChtYXN0ZXJfZHJhd3MpIHRoZW4KICAgICAg
ICAgYWxsb2NhdGUoaW1lc3MobWFya2VycytzY2FsYXJfaW1lc3Nfc2l6ZShncmlkKSArICYKICAg
ICAgICAgICAgICAgICAgICAgICAgZWxlbV9pbWVzc19zaXplKGdyaWQpKmdyaWQlbmVsZW0gKyAm
CiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2VfaW1lc3Nfc2l6ZShncmlkKSpncmlkJW5mYWNl
ICsgJgogICAgICAgICAgICAgICAgICAgICAgICBlZGdlX2ltZXNzX3NpemUoZ3JpZCkqZ3JpZCVu
ZWRnZSArICYKICAgICAgICAgICAgICAgICAgICAgICAgdmVydF9pbWVzc19zaXplKGdyaWQpKmdy
aWQlbnZlcnQpLCAmCiAgICAgICAgICAgICAgICAgIHJtZXNzKHNjYWxhcl9ybWVzc19zaXplKGdy
aWQpICsgJgogICAgICAgICAgICAgICAgICAgICAgICBlbGVtX3JtZXNzX3NpemUoZ3JpZCkqZ3Jp
ZCVuZWxlbSArICYKICAgICAgICAgICAgICAgICAgICAgICAgZmFjZV9ybWVzc19zaXplKGdyaWQp
KmdyaWQlbmZhY2UgKyAmCiAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2Vfcm1lc3Nfc2l6ZShn
cmlkKSpncmlkJW5lZGdlICsgJgogICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0X3JtZXNzX3Np
emUoZ3JpZCkqZ3JpZCVudmVydCksICYKICAgICAgICAgICAgICAgICAgc3RhdD1hc3RhdCkKICAg
ICAgICAgaWYgKGFzdGF0IC89IDApIHRoZW4KICAgICAgICAgICAgaWVyciA9IEFMTE9DX0ZBSUxF
RAogICAgICAgICAgICBjYWxsIGZhdGFsKCJhbGxvY2F0aW9uIGZhaWxlZCBpbiBkcmF3X2dyaWQi
LHByb2NzPXByb2NzKQogICAgICAgICAgICByZXR1cm4KICAgICAgICAgZW5kaWYKICAgICAgICAg
Y2FsbCBwYWNrX2dyaWQoZ3JpZCxwcm9jcyxyZWZfY29udHJvbCwudHJ1ZS4sc3RpbGxfc2VxdWVu
dGlhbCxpbWVzcywgJgogICAgICAgICAgICAgICAgICAgICAgICBybWVzcyxuaSxucixzb2x2ZXJf
Y29udHJvbCkKICAgICAgICAgaWYgKC5ub3Quc3RpbGxfc2VxdWVudGlhbCAub3IuIG15X3Byb2Mo
cHJvY3MpID09IDEpIHRoZW4KICAgICAgICAgICAgY2FsbCBwaGFtbF9zZW5kKHByb2NzLE1BU1RF
UixpbWVzcyxuaSxybWVzcyxuciw3MjApCiAgICAgICAgIGVuZGlmCiAgICAgICAgIGRlYWxsb2Nh
dGUoaW1lc3Mscm1lc3Msc3RhdD1hc3RhdCkKICAgICAgZW5kaWYKCiEgaWYgdXNpbmcgWk9MVEFO
X1JFRlRSRUUsIHJlc3RvcmUgdGhlIGxldmVsLWJ5LWxldmVsIGVsZW1lbnQgbGlua2VkIGxpc3QK
CiAgICAgIGlmIChwYXJ0aXRpb25fbWV0aG9kID09IFpPTFRBTl9SRUZUUkVFKSB0aGVuCiAgICAg
ICAgIGdyaWQlZWxlbWVudCgxOmdyaWQlYmlnZ2VzdF9lbGVtKSVuZXh0ID0gaG9sZF9uZXh0CiAg
ICAgICAgIGdyaWQlZWxlbWVudCgxOmdyaWQlYmlnZ2VzdF9lbGVtKSVwcmV2aW91cyA9IGhvbGRf
cHJldgogICAgICAgICBncmlkJWhlYWRfbGV2ZWxfZWxlbSgxKSA9IGhvbGRfaGVhZAogICAgICAg
ICBkZWFsbG9jYXRlKGhvbGRfbmV4dCwgaG9sZF9wcmV2LCBzdGF0PWFzdGF0KQogICAgICBlbmRp
ZgoKISBpZiB0aGUgZ3JpZCBoYXMgbm90IGNoYW5nZWQsIGp1c3Qgc2VuZCBhIG1lc3NhZ2UgdG8g
cmVkcmF3CgogICBlbHNlCgogICAgICBpZiAoaV9kcmF3KSB0aGVuCiAgICAgICAgIGltZXNzMSgx
KSA9IEdSQVBISUNTX0dSSUQKICAgICAgICAgaWYgKFBBUkFMTEVMID09IFNFUVVFTlRJQUwpIHRo
ZW4KICAgICAgICAgICAgY2FsbCBzZXF1ZW50aWFsX3NlbmQoaW1lc3MxLDEsbm9yZWFscywwKQog
ICAgICAgICBlbHNlCiAgICAgICAgICAgIGNhbGwgcGhhbWxfc2VuZChwcm9jcyxncmFwaGljc19w
cm9jKHByb2NzKSxpbWVzczEsMSxub3JlYWxzLDAsMTAxKQogICAgICAgICBlbmRpZgogICAgICBl
bmRpZgoKICAgZW5kaWYKCiEgbWFzdGVyCgplbHNlCgogICBpZiAobWFzdGVyX2RyYXdzKSB0aGVu
CgohIGlmIHRoZSBncmlkIGhhcyBjaGFuZ2VkIHNpbmNlIGxhc3Qgc2VudCB0byB0aGUgZ3JhcGhp
Y3MgcHJvY2VzcyAuLi4KCiAgICAgIGlmIChncmlkX2NoYW5nZWQpIHRoZW4KCiEgcmVjZWl2ZSB0
aGUgaW5kaXZpZHVhbCBncmlkcyBmcm9tIGFsbCB0aGUgc2xhdmVzIGFuZCBidWlsZCB0aGUgY29t
cG9zaXRlIGdyaWQKCiAgICAgICAgIGNhbGwgbWVyZ2VfZ3JpZHMoZ3JpZCxwcm9jcyxpbWVzcyxu
aSxybWVzcyxucixzdGlsbF9zZXF1ZW50aWFsKQoKISBzZW5kIHRoZSBjb21wb3NpdGUgZ3JpZCB0
byB0aGUgbWFzdGVyJ3MgZ3JhcGhpY3MgcHJvY2VzcwoKICAgICAgICAgaWYgKFBBUkFMTEVMID09
IFNFUVVFTlRJQUwpIHRoZW4KICAgICAgICAgICAgY2FsbCBzZXF1ZW50aWFsX3NlbmQoaW1lc3Mo
MTpuaSksbmkscm1lc3MoMTpuciksbnIpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgY2FsbCBw
aGFtbF9zZW5kKHByb2NzLGdyYXBoaWNzX3Byb2MocHJvY3MpLGltZXNzLG5pLHJtZXNzLG5yLDEw
MSkKICAgICAgICAgZW5kaWYKICAgICAgICAgZGVhbGxvY2F0ZShpbWVzcyxybWVzcyxzdGF0PWFz
dGF0KQoKISBpZiB0aGUgZ3JpZCBoYXMgbm90IGNoYW5nZWQsIGp1c3Qgc2VuZCBhIG1lc3NhZ2Ug
dG8gcmVkcmF3CgogICAgICBlbHNlCgogICAgICAgICBpbWVzczEoMSkgPSBHUkFQSElDU19HUklE
CiAgICAgICAgIGlmIChQQVJBTExFTCA9PSBTRVFVRU5USUFMKSB0aGVuCiAgICAgICAgICAgIGNh
bGwgc2VxdWVudGlhbF9zZW5kKGltZXNzMSwxLG5vcmVhbHMsMCkKICAgICAgICAgZWxzZQogICAg
ICAgICAgICBjYWxsIHBoYW1sX3NlbmQocHJvY3MsZ3JhcGhpY3NfcHJvYyhwcm9jcyksaW1lc3Mx
LDEsbm9yZWFscywwLDEwMSkKICAgICAgICAgZW5kaWYKCiAgICAgIGVuZGlmCiAgIGVuZGlmCgpl
bmRpZiAhIHNsYXZlIG9yIG1hc3RlcgoKZ3JpZF9jaGFuZ2VkID0gLmZhbHNlLiAhIHNheXMgdGhl
IGdyYXBoaWNzIGRhdGEgaGFzIGJlZW4gc2VudCBzaW5jZSBsYXN0IGNoYW5nZQoKISBwYXVzZSwg
aWYgcmVxdWVzdGVkCgpjYWxsIHBhdXNlX3VudGlsX2VudGVyKHByb2NzLGlvX2NvbnRyb2wlcGF1
c2VfYWZ0ZXJfZHJhdyxkb250X3BhdXNld2F0Y2g9LnRydWUuKQoKY2FsbCBlbmRfcGF1c2Vfd2F0
Y2goYWxsX3dhdGNoZXMpCgplbmQgc3Vicm91dGluZSBkcmF3X2dyaWQKCiEgICAgICAgICAgLS0t
LS0tLS0tCnN1YnJvdXRpbmUgcGFja19ncmlkKGdyaWQscHJvY3MscmVmX2NvbnRyb2wsZm9yX21h
c3RlcixzdGlsbF9zZXF1ZW50aWFsLGltZXNzLCAmCiAgICAgICAgICAgICAgICAgICAgIHJtZXNz
LG5pLG5yLHNvbHZlcl9jb250cm9sKQohICAgICAgICAgIC0tLS0tLS0tLQoKIS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBUaGlzIHN1YnJvdXRp
bmUgcGFja3MgdGhlIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgZ3JpZCBhbmQgZmxhZ3MgZm9yCiEg
dGhlIGdyYXBoaWNzIHByb2Nlc3NvcgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQoKaW1wbGljaXQgbm9uZQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBEdW1teSBhcmd1bWVudHMKCnR5cGUo
Z3JpZF90eXBlKSwgaW50ZW50KGlub3V0KSA6OiBncmlkCnR5cGUgKHByb2NfaW5mbyksIGludGVu
dChpbikgOjogcHJvY3MKdHlwZSAocmVmaW5lX29wdGlvbnMpLCBpbnRlbnQoaW4pIDo6IHJlZl9j
b250cm9sCmxvZ2ljYWwsIGludGVudChpbikgOjogZm9yX21hc3Rlciwgc3RpbGxfc2VxdWVudGlh
bAppbnRlZ2VyLCBpbnRlbnQob3V0KSA6OiBpbWVzcyg6KQpyZWFsIChteV9yZWFsKSwgaW50ZW50
KG91dCkgOjogcm1lc3MoOikKaW50ZWdlciwgaW50ZW50KG91dCkgOjogbmksbnIKdHlwZSAoc29s
dmVyX29wdGlvbnMpLCBpbnRlbnQoaW4pLCBvcHRpb25hbCA6OiBzb2x2ZXJfY29udHJvbAoKIS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBMb2Nh
bCB2YXJpYWJsZXM6Cgpsb2dpY2FsKHNtYWxsX2xvZ2ljYWwpLCBhbGxvY2F0YWJsZSA6OiBzZW5k
aXQoOiksIHNlbmRpdGUoOiksIHNlbmRpdGYoOiksICYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2Vlbl9mYWNlKDopLCBzZWVuX2VkZ2UoOikKY2hhcmFjdGVyKGxlbj1I
T1NUTEVOKSA6OiBob3N0CmludGVnZXIgOjogaSxrLGluZCxsZXYsZWxlbSxlZGdlLHJpbmQsdmVy
dCxlbGVtX3Blcl9wcm9jLGVkZ2VfcGVyX3Byb2MsICYKICAgICAgICAgICB2ZXJ0X3Blcl9wcm9j
LG5wcm9jLG15X3Byb2Nlc3NvcixtZWxlbSxtZWRnZSxtdmVydCxhc3RhdCxzc2l6ZSwgJgogICAg
ICAgICAgIG5laWdoX2xpZChORUlHSEJPUlNfUEVSX0VMRU1FTlQpLG1mYWNlLGZhY2VfcGVyX3By
b2MsZmFjZSxpdmVydCwgJgogICAgICAgICAgIGZpeGVkX3NzaXplCnR5cGUoaGFzaF9rZXkpIDo6
IGJvdW5kYXJ5X2dpZApsb2dpY2FsKHNtYWxsX2xvZ2ljYWwpIDo6IHZpc2l0ZWRfdmVydChncmlk
JWJpZ2dlc3RfdmVydCkKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiEgQmVnaW4gZXhlY3V0YWJsZSBjb2RlCgppZiAoLm5vdC4gZ3JpZCVlcnJp
bmRfdXAyZGF0ZSkgdGhlbgogICBjYWxsIGFsbF9lcnJvcl9pbmRpY2F0b3JzKGdyaWQscmVmX2Nv
bnRyb2wlZXJyb3JfZXN0aW1hdG9yLHNvbHZlcl9jb250cm9sKQplbmRpZgoKYm91bmRhcnlfZ2lk
ID0gQk9VTkRBUlkKbXlfcHJvY2Vzc29yID0gbXlfcHJvYyhwcm9jcykKbnByb2MgPSBudW1fcHJv
Yyhwcm9jcykKCmlmIChzdGlsbF9zZXF1ZW50aWFsIC5hbmQuIGZvcl9tYXN0ZXIgLmFuZC4gbXlf
cHJvY2Vzc29yLz0xKSByZXR1cm4KCiEgaWYgcGFja2luZyBmb3IgdGhlIG1hc3RlciwgZGV0ZXJt
aW5lIHdoaWNoIGVsZW1lbnRzIGFuZCBlZGdlcyB0byBzZW5kIHRvIHRoZQohIG1hc3RlciBhcyBh
bGwgdGhhdCBJIG93biBvciBoYXZlIGEgZGVzY2VuZGVudCB0aGF0IEkgb3duCgppZiAoZm9yX21h
c3RlcikgdGhlbgogICBhbGxvY2F0ZShzZW5kaXQoZ3JpZCViaWdnZXN0X2VsZW0pLHNlbmRpdGUo
Z3JpZCViaWdnZXN0X2VkZ2UpLHN0YXQ9YXN0YXQpCiAgIGlmIChhc3RhdCAvPSAwKSB0aGVuCiAg
ICAgIGllcnIgPSBBTExPQ19GQUlMRUQKICAgICAgY2FsbCBmYXRhbCgiYWxsb2NhdGlvbiBmYWls
ZWQgaW4gcGFjayBncmlkIixwcm9jcz1wcm9jcykKICAgICAgcmV0dXJuCiAgIGVuZGlmCiAgIGlm
IChnbG9iYWxfZWxlbWVudF9raW5kID09IFRFVFJBSEVEUkFMX0VMRU1FTlQpIHRoZW4KICAgICAg
YWxsb2NhdGUoc2VuZGl0ZihncmlkJWJpZ2dlc3RfZmFjZSksc3RhdD1hc3RhdCkKICAgZWxzZQog
ICAgICBhbGxvY2F0ZShzZW5kaXRmKDApLHN0YXQ9YXN0YXQpCiAgICAgIGlmIChhc3RhdCAvPSAw
KSB0aGVuCiAgICAgICAgIGllcnIgPSBBTExPQ19GQUlMRUQKICAgICAgICAgY2FsbCBmYXRhbCgi
YWxsb2NhdGlvbiBmYWlsZWQgaW4gcGFjayBncmlkIixwcm9jcz1wcm9jcykKICAgICAgICAgcmV0
dXJuCiAgICAgIGVuZGlmCiAgIGVuZGlmCiAgIGNhbGwgc2V0X3NlbmRpdChncmlkLHNlbmRpdCxz
ZW5kaXRlLHNlbmRpdGYsbXlfcHJvY2Vzc29yKQplbmRpZgoKISBwYWNrIHRoZSBjb21tYW5kIG51
bWJlcgoKaW1lc3MoMSkgPSBHUkFQSElDU19HUklECgohIGRldGVybWluZSB0aGUgZGltZW5zaW9u
IGZvciBlbGVtZW50cywgZmFjZXMsIGVkZ2VzIGFuZCB2ZXJ0aWNlcyBuZWVkZWQgb24KISB0aGUg
Z3JhcGhpY3Mgc2VydmVyCgptZWxlbSA9IDAKbWZhY2UgPSAwCm1lZGdlID0gMAptdmVydCA9IDAK
ZG8gbGV2PTEsZ3JpZCVubGV2CiAgIGVsZW0gPSBncmlkJWhlYWRfbGV2ZWxfZWxlbShsZXYpCiAg
IGRvIHdoaWxlIChlbGVtIC89IEVORF9PRl9MSVNUKQogICAgICBtZWxlbSA9IG1heChtZWxlbSxl
bGVtKQogICAgICBkbyBpPTEsVkVSVElDRVNfUEVSX0VMRU1FTlQKICAgICAgICAgbXZlcnQgPSBt
YXgobXZlcnQsZ3JpZCVlbGVtZW50KGVsZW0pJXZlcnRleChpKSkKICAgICAgZW5kIGRvCiAgICAg
IGRvIGk9MSxFREdFU19QRVJfRUxFTUVOVAogICAgICAgICBtZWRnZSA9IG1heChtZWRnZSxncmlk
JWVsZW1lbnQoZWxlbSklZWRnZShpKSkKICAgICAgZW5kIGRvCiAgICAgIGRvIGk9MSxGQUNFU19Q
RVJfRUxFTUVOVAogICAgICAgICBtZmFjZSA9IG1heChtZmFjZSxncmlkJWVsZW1lbnQoZWxlbSkl
ZmFjZShpKSkKICAgICAgZW5kIGRvCiAgICAgIGVsZW0gPSBncmlkJWVsZW1lbnQoZWxlbSklbmV4
dAogICBlbmQgZG8KZW5kIGRvCgppZiAoZm9yX21hc3RlciAuYW5kLiBucHJvYyA+IDEpIHRoZW4K
ICAgaWYgKHN0aWxsX3NlcXVlbnRpYWwpIHRoZW4KICAgICAgZWxlbV9wZXJfcHJvYz0xMCoqaW50
KGxvZzEwKHJlYWwobWVsZW0sbXlfcmVhbCkpKzEpCiAgICAgIGVkZ2VfcGVyX3Byb2M9MTAqKmlu
dChsb2cxMChyZWFsKG1lZGdlLG15X3JlYWwpKSsxKQogICAgICB2ZXJ0X3Blcl9wcm9jPTEwKipp
bnQobG9nMTAocmVhbChtdmVydCxteV9yZWFsKSkrMSkKICAgICAgc2VsZWN0IGNhc2UgKGdsb2Jh
bF9lbGVtZW50X2tpbmQpCiAgICAgIGNhc2UgKFRSSUFOR1VMQVJfRUxFTUVOVCkKICAgICAgICAg
ZmFjZV9wZXJfcHJvYyA9IDAKICAgICAgY2FzZSAoVEVUUkFIRURSQUxfRUxFTUVOVCkKICAgICAg
ICAgZmFjZV9wZXJfcHJvYz0xMCoqaW50KGxvZzEwKHJlYWwobWZhY2UsbXlfcmVhbCkpKzEpCiAg
ICAgIGVuZCBzZWxlY3QKICAgZWxzZQogICAgICBlbGVtX3Blcl9wcm9jID0gJgogICAgICAgICAg
ICAgIDEwKippbnQobG9nMTAocGhhbWxfZ2xvYmFsX21heChwcm9jcyxyZWFsKG1lbGVtLG15X3Jl
YWwpLDczMCkpKzEpCiAgICAgIGVkZ2VfcGVyX3Byb2MgPSAmCiAgICAgICAgICAgICAgMTAqKmlu
dChsb2cxMChwaGFtbF9nbG9iYWxfbWF4KHByb2NzLHJlYWwobWVkZ2UsbXlfcmVhbCksNzM1KSkr
MSkKICAgICAgdmVydF9wZXJfcHJvYyA9ICYKICAgICAgICAgICAgICAxMCoqaW50KGxvZzEwKHBo
YW1sX2dsb2JhbF9tYXgocHJvY3MscmVhbChtdmVydCxteV9yZWFsKSw3NDApKSsxKQogICAgICBz
ZWxlY3QgY2FzZSAoZ2xvYmFsX2VsZW1lbnRfa2luZCkKICAgICAgY2FzZSAoVFJJQU5HVUxBUl9F
TEVNRU5UKQogICAgICAgICBmYWNlX3Blcl9wcm9jID0gMAogICAgICBjYXNlIChURVRSQUhFRFJB
TF9FTEVNRU5UKQogICAgICAgICBmYWNlX3Blcl9wcm9jID0gJgogICAgICAgICAgICAgIDEwKipp
bnQobG9nMTAocGhhbWxfZ2xvYmFsX21heChwcm9jcyxyZWFsKG1mYWNlLG15X3JlYWwpLDczNikp
KzEpCiAgICAgIGVuZCBzZWxlY3QKICAgZW5kaWYKICAgaW1lc3MoMikgPSAobnByb2MrMSkqZWxl
bV9wZXJfcHJvYwogICBpbWVzcygzKSA9IChucHJvYysxKSplZGdlX3Blcl9wcm9jCiAgIGltZXNz
KDQpID0gKG5wcm9jKzEpKnZlcnRfcGVyX3Byb2MKZWxzZQogICBpbWVzcygyKSA9IG1lbGVtCiAg
IGltZXNzKDMpID0gbWVkZ2UKICAgaW1lc3MoNCkgPSBtdmVydAplbmRpZgppbWVzcyg1KSA9IHNp
emVfdmVydF9zb2xuKGdyaWQsZGltPUNPTVBfRElNKQppbWVzcyg2KSA9IHNpemVfdmVydF9zb2xu
KGdyaWQsZGltPUVJR0VOX0RJTSkKaW1lc3MoNykgPSByZWZfY29udHJvbCVtYXhfZGVnCgohIHBh
Y2sgdGhlIHByb2Nlc3NvciBpbmZvCgppbWVzcyg4KSA9IG5wcm9jCmltZXNzKDkpID0gbXlfcHJv
Y2Vzc29yCgpzZWxlY3QgY2FzZSAoZ2xvYmFsX2VsZW1lbnRfa2luZCkKY2FzZSAoVFJJQU5HVUxB
Ul9FTEVNRU5UKQogICBpbmQgPSA5CmNhc2UgKFRFVFJBSEVEUkFMX0VMRU1FTlQpCiAgIGlmIChm
b3JfbWFzdGVyIC5hbmQuIG5wcm9jID4gMSkgdGhlbgogICAgICBpbWVzcygxMCkgPSAobnByb2Mr
MSkqZmFjZV9wZXJfcHJvYwogICBlbHNlCiAgICAgIGltZXNzKDEwKSA9IG1mYWNlCiAgIGVuZGlm
CiAgIGluZCA9IDEwCmVuZCBzZWxlY3QKCmhvc3QgPSBob3N0bmFtZShwcm9jcykKZG8gaT0xLEhP
U1RMRU4KICAgaW1lc3MoaW5kKyBpKSA9IGljaGFyKGhvc3QoaTppKSkKZW5kIGRvCmluZCA9IGlu
ZCtIT1NUTEVOCgohIHBhY2sgZ3JpZF90eXBlIHZhcmlhYmxlcwoKaW1lc3MoaW5kKzEpID0gZ3Jp
ZCVuc29sbi9ncmlkJXN5c3RlbV9zaXplICEgbnVtYmVyIG9mIHNvbHV0aW9ucyBvciBlaWdlbnZl
Y3RvcnMKaW1lc3MoaW5kKzIpID0gZ3JpZCVzeXN0ZW1fc2l6ZQppbmQgPSBpbmQrMgoKISBwYWNr
IG51bWJlciBvZiBjaGlsZHJlbiBvZiB0aGUgcm9vdAoKaW5kID0gc2NhbGFyX2ltZXNzX3NpemUo
Z3JpZCkKcmluZCA9IDAKCiEgcGFjayB0aGUgZWxlbWVudHMKCmlmIChzaXplX2VsZW1fc29sbihn
cmlkLGRpbT1HUklEX0RJTSkvPTApIHRoZW4KICAgZml4ZWRfc3NpemUgPSBzaXplX2VsZW1fc29s
bihncmlkKS9zaXplX2VsZW1fc29sbihncmlkLGRpbT1HUklEX0RJTSkKZWxzZQogICBmaXhlZF9z
c2l6ZSA9IDAKZW5kaWYKZG8gbGV2PTEsZ3JpZCVubGV2CiAgIGVsZW0gPSBncmlkJWhlYWRfbGV2
ZWxfZWxlbShsZXYpCiAgIGRvIHdoaWxlIChlbGVtIC89IEVORF9PRl9MSVNUKQogICAgICBpZiAo
Zm9yX21hc3RlcikgdGhlbgogICAgICAgICBpZiAoLm5vdC4gc2VuZGl0KGVsZW0pKSB0aGVuCiAg
ICAgICAgICAgIGVsZW0gPSBncmlkJWVsZW1lbnQoZWxlbSklbmV4dAogICAgICAgICAgICBjeWNs
ZQogICAgICAgICBlbmRpZgogICAgICAgICBpZiAobnByb2MgPiAxKSB0aGVuCiAgICAgICAgICAg
IGltZXNzKGluZCsxKSA9IGVsZW0gKyBteV9wcm9jZXNzb3IqZWxlbV9wZXJfcHJvYwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgIGltZXNzKGluZCsxKSA9IGVsZW0KICAgICAgICAgZW5kaWYKICAg
ICAgZWxzZQogICAgICAgICBpbWVzcyhpbmQrMSkgPSBlbGVtCiAgICAgIGVuZGlmCiAgICAgIGlu
ZCA9IGluZCArIDEKICAgICAgaWYgKGFzc29jaWF0ZWRfZWxlbV9zb2xuKGdyaWQpKSB0aGVuCiAg
ICAgICAgIHNzaXplID0gZml4ZWRfc3NpemUKICAgICAgZWxzZWlmIChhc3NvY2lhdGVkX2VsZW1f
c29sbihncmlkLGVsZW0pKSB0aGVuCiAgICAgICAgIHNzaXplID0gc2l6ZV9lbGVtX3NvbG4oZ3Jp
ZCxlbGVtKQogICAgICBlbHNlCiAgICAgICAgIHNzaXplID0gMAogICAgICBlbmRpZgogICAgICBp
bWVzcyhpbmQrMSkgPSBzc2l6ZQogICAgICBpbmQgPSBpbmQgKyAxCiAgICAgIGNhbGwgaGFzaF9w
YWNrX2tleShncmlkJWVsZW1lbnQoZWxlbSklZ2lkLGltZXNzLGluZCsxKQogICAgICBpbmQgPSBp
bmQgKyBLRVlfU0laRQogICAgICBpZiAoZ2xvYmFsX2VsZW1lbnRfa2luZCA9PSBUUklBTkdVTEFS
X0VMRU1FTlQpIHRoZW4KICAgICAgICAgcm1lc3MocmluZCsxKSA9IG1heHZhbChncmlkJWVsZW1l
bnRfZXJyaW5kKGVsZW0sOikpCiAgICAgICAgIHJtZXNzKHJpbmQrMikgPSBncmlkJWVsZW1lbnQo
ZWxlbSkld29yawogICAgICAgICByaW5kID0gcmluZCArIDIKICAgICAgZW5kaWYKICAgICAgaWYg
KHNzaXplIC89IDApIHRoZW4KICAgICAgICAgcm1lc3MocmluZCsxOnJpbmQrc3NpemUpID0gcmVz
aGFwZShnZXRfZWxlbV9zb2xuKGdyaWQsZWxlbSxjb2xvbiwgJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2xvbixjb2xvbiksKC9zc2l6ZS8pKQogICAgICAgICByaW5kID0g
cmluZCArIHNzaXplCiAgICAgICAgIGlmIChncmlkJWhhdmVfdHJ1ZSkgdGhlbgogICAgICAgICAg
ICBybWVzcyhyaW5kKzE6cmluZCtzc2l6ZSkgPSByZXNoYXBlKGdldF9lbGVtX2V4YWN0KGdyaWQs
ZWxlbSxjb2xvbiwgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xv
bixjb2xvbiksKC9zc2l6ZS8pKQogICAgICAgICBlbHNlCiAgICAgICAgICAgIHJtZXNzKHJpbmQr
MTpyaW5kK3NzaXplKSA9IDAuMF9teV9yZWFsCiAgICAgICAgIGVuZGlmCiAgICAgICAgIHdoZXJl
IChybWVzcyhyaW5kKzE6cmluZCtzc2l6ZSkgPT0gaHVnZSgwLjBfbXlfcmVhbCkpCiAgICAgICAg
ICAgIHJtZXNzKHJpbmQrMTpyaW5kK3NzaXplKSA9IDAuMF9teV9yZWFsCiAgICAgICAgIGVuZHdo
ZXJlCiAgICAgICAgIHJpbmQgPSByaW5kICsgc3NpemUKICAgICAgZW5kaWYKICAgICAgZG8gaT0x
LFZFUlRJQ0VTX1BFUl9FTEVNRU5UCiAgICAgICAgIGNhbGwgaGFzaF9wYWNrX2tleShncmlkJXZl
cnRleChncmlkJWVsZW1lbnQoZWxlbSkldmVydGV4KGkpKSVnaWQsICYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGltZXNzLGluZCsxKyhpLTEpKktFWV9TSVpFKQogICAgICBlbmQgZG8KICAg
ICAgaW5kID0gaW5kICsgVkVSVElDRVNfUEVSX0VMRU1FTlQqS0VZX1NJWkUKICAgICAgZG8gaT0x
LEVER0VTX1BFUl9FTEVNRU5UCiAgICAgICAgIGNhbGwgaGFzaF9wYWNrX2tleShncmlkJWVkZ2Uo
Z3JpZCVlbGVtZW50KGVsZW0pJWVkZ2UoaSkpJWdpZCxpbWVzcywgJgogICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmQrMSsoaS0xKSpLRVlfU0laRSkKICAgICAgZW5kIGRvCiAgICAgIGluZCA9
IGluZCArIEVER0VTX1BFUl9FTEVNRU5UKktFWV9TSVpFCiAgICAgIGRvIGk9MSxGQUNFU19QRVJf
RUxFTUVOVAogICAgICAgICBjYWxsIGhhc2hfcGFja19rZXkoZ3JpZCVmYWNlKGdyaWQlZWxlbWVu
dChlbGVtKSVmYWNlKGkpKSVnaWQsaW1lc3MsICYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5kKzErKGktMSkqS0VZX1NJWkUpCiAgICAgIGVuZCBkbwogICAgICBpbmQgPSBpbmQgKyBGQUNF
U19QRVJfRUxFTUVOVCpLRVlfU0laRQogICAgICBpbWVzcyhpbmQrMSkgPSBncmlkJWVsZW1lbnQo
ZWxlbSklZGVncmVlCiAgICAgIGluZCA9IGluZCArIDEKICAgICAgaW1lc3MoaW5kKzEpID0gZ3Jp
ZCVlbGVtZW50KGVsZW0pJWxldmVsCiAgICAgIGluZCA9IGluZCArIDEKICAgICAgaWYgKGdsb2Jh
bF9lbGVtZW50X2tpbmQgPT0gVFJJQU5HVUxBUl9FTEVNRU5UKSB0aGVuCiAgICAgICAgIGNhbGwg
aGFzaF9wYWNrX2tleShncmlkJXZlcnRleChncmlkJWVsZW1lbnQoZWxlbSklaW4pJWdpZCxpbWVz
cywgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kKzEpCiAgICAgICAgIGluZCA9IGlu
ZCArIEtFWV9TSVpFCiAgICAgICAgIGNhbGwgaGFzaF9wYWNrX2tleShncmlkJXZlcnRleChncmlk
JWVsZW1lbnQoZWxlbSklb3V0KSVnaWQsaW1lc3MsICYKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZCsxKQogICAgICAgICBpbmQgPSBpbmQgKyBLRVlfU0laRQogICAgICAgICBpbWVzcyhp
bmQrMTppbmQrTUFYX0NISUxEKSA9IGdyaWQlZWxlbWVudChlbGVtKSVvcmRlcgogICAgICAgICBp
bmQgPSBpbmQgKyBNQVhfQ0hJTEQKICAgICAgZW5kaWYKICAgICAgaWYgKGdyaWQlZWxlbWVudChl
bGVtKSVpc2xlYWYpIHRoZW4KICAgICAgICAgaW1lc3MoaW5kKzEpID0gMQogICAgICBlbHNlCiAg
ICAgICAgIGltZXNzKGluZCsxKSA9IDAKICAgICAgZW5kaWYKICAgICAgaW5kID0gaW5kICsgMQog
ICAgICBpZiAoZ3JpZCVlbGVtZW50KGVsZW0pJWlvd24pIHRoZW4KICAgICAgICAgaW1lc3MoaW5k
KzEpID0gbXlfcHJvYyhwcm9jcykKICAgICAgZWxzZQogICAgICAgICBpbWVzcyhpbmQrMSkgPSAw
CiAgICAgIGVuZGlmCiAgICAgIGluZCA9IGluZCArIDEKICAgICAgaWYgKGdsb2JhbF9lbGVtZW50
X2tpbmQgPT0gVFJJQU5HVUxBUl9FTEVNRU5UKSB0aGVuCiAgICAgICAgIG5laWdoX2xpZCA9IGdl
dF9uZWlnaGJvcnMoZWxlbSxncmlkKQogICAgICAgICBkbyBpPTEsTkVJR0hCT1JTX1BFUl9FTEVN
RU5UCiAgICAgICAgICAgIGlmIChuZWlnaF9saWQoaSkgPT0gQk9VTkRBUlkpIHRoZW4KICAgICAg
ICAgICAgICAgY2FsbCBoYXNoX3BhY2tfa2V5KGJvdW5kYXJ5X2dpZCxpbWVzcyxpbmQrMSsoaS0x
KSpLRVlfU0laRSkKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICBjYWxsIGhhc2hfcGFj
a19rZXkoZ3JpZCVlbGVtZW50KG5laWdoX2xpZChpKSklZ2lkLGltZXNzLCAmCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbmQrMSsoaS0xKSpLRVlfU0laRSkKICAgICAgICAgICAg
ZW5kaWYKICAgICAgICAgZW5kIGRvCiAgICAgICAgIGluZCA9IGluZCArIE5FSUdIQk9SU19QRVJf
RUxFTUVOVCpLRVlfU0laRQogICAgICBlbmRpZgogICAgICBlbGVtID0gZ3JpZCVlbGVtZW50KGVs
ZW0pJW5leHQKICAgZW5kIGRvCmVuZCBkbwoKaW1lc3MoaW5kKzEpID0gRU5EX09GX0VMRU1FTlRT
CmluZCA9IGluZCsxCgohIHBhY2sgdGhlIHZlcnRpY2VzCgp2aXNpdGVkX3ZlcnQgPSAuZmFsc2Uu
CmRvIGxldj0xLGdyaWQlbmxldgogICBlbGVtID0gZ3JpZCVoZWFkX2xldmVsX2VsZW0obGV2KQog
ICBkbyB3aGlsZSAoZWxlbSAvPSBFTkRfT0ZfTElTVCkKICAgICAgZG8gaXZlcnQ9MSxWRVJUSUNF
U19QRVJfRUxFTUVOVAogICAgICAgICB2ZXJ0ID0gZ3JpZCVlbGVtZW50KGVsZW0pJXZlcnRleChp
dmVydCkKICAgICAgICAgaWYgKHZpc2l0ZWRfdmVydCh2ZXJ0KSkgY3ljbGUKICAgICAgICAgdmlz
aXRlZF92ZXJ0KHZlcnQpID0gLnRydWUuCiAgICAgICAgIGlmIChmb3JfbWFzdGVyKSB0aGVuCiAg
ICAgICAgICAgIGlmICgubm90LiBncmlkJWVsZW1lbnQoZ3JpZCV2ZXJ0ZXgodmVydCklYXNzb2Nf
ZWxlbSklaW93bikgY3ljbGUKICAgICAgICAgICAgaWYgKG5wcm9jID4gMSkgdGhlbgogICAgICAg
ICAgICAgICBpbWVzcyhpbmQrMSkgPSB2ZXJ0ICsgdmVydF9wZXJfcHJvYypteV9wcm9jZXNzb3IK
ICAgICAgICAgICAgICAgaW1lc3MoaW5kKzIpID0gZ3JpZCV2ZXJ0ZXgodmVydCklYXNzb2NfZWxl
bSArICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlfcHJvY2Vzc29yKmVsZW1fcGVy
X3Byb2MKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICBpbWVzcyhpbmQrMSkgPSB2ZXJ0
CiAgICAgICAgICAgICAgIGltZXNzKGluZCsyKSA9IGdyaWQldmVydGV4KHZlcnQpJWFzc29jX2Vs
ZW0KICAgICAgICAgICAgZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICBpbWVzcyhpbmQr
MSkgPSB2ZXJ0CiAgICAgICAgICAgIGltZXNzKGluZCsyKSA9IGdyaWQldmVydGV4KHZlcnQpJWFz
c29jX2VsZW0KICAgICAgICAgZW5kaWYKICAgICAgICAgaW5kID0gaW5kICsgMgogICAgICAgICBj
YWxsIGhhc2hfcGFja19rZXkoZ3JpZCV2ZXJ0ZXgodmVydCklZ2lkLGltZXNzLGluZCsxKQogICAg
ICAgICBpbmQgPSBpbmQgKyBLRVlfU0laRQogICAgICAgICBybWVzcyhyaW5kKzEpID0gZ3JpZCV2
ZXJ0ZXgodmVydCklY29vcmQleAogICAgICAgICBybWVzcyhyaW5kKzIpID0gZ3JpZCV2ZXJ0ZXgo
dmVydCklY29vcmQleQogICAgICAgICByaW5kID0gcmluZCArIDIKICAgICAgICAgaWYgKGdsb2Jh
bF9lbGVtZW50X2tpbmQgPT0gVEVUUkFIRURSQUxfRUxFTUVOVCkgdGhlbgogICAgICAgICAgICBy
bWVzcyhyaW5kKzEpID0gemNvb3JkKGdyaWQldmVydGV4KHZlcnQpJWNvb3JkKQogICAgICAgICAg
ICByaW5kID0gcmluZCArIDEKICAgICAgICAgZW5kaWYKICAgICAgICAgcm1lc3MocmluZCsxOnJp
bmQrZ3JpZCVuc29sbikgPSByZXNoYXBlKGdldF92ZXJ0X3NvbG4oZ3JpZCx2ZXJ0LCAmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbixjb2xvbiks
KC9ncmlkJW5zb2xuLykpCiAgICAgICAgIHJpbmQgPSByaW5kICsgZ3JpZCVuc29sbgogICAgICAg
ICBpZiAoc2l6ZV92ZXJ0X2V4YWN0KGdyaWQpLz0wKSB0aGVuCiAgICAgICAgICAgIHJtZXNzKHJp
bmQrMTpyaW5kK2dyaWQlbnNvbG4pID0gcmVzaGFwZShnZXRfdmVydF9leGFjdChncmlkLHZlcnQs
ICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bG9uLGNvbG9uKSwoL2dyaWQlbnNvbG4vKSkKICAgICAgICAgICAgd2hlcmUgKHJtZXNzKHJpbmQr
MTpyaW5kK2dyaWQlbnNvbG4pID09IGh1Z2UoMC4wX215X3JlYWwpKQogICAgICAgICAgICAgICBy
bWVzcyhyaW5kKzE6cmluZCtncmlkJW5zb2xuKSA9IDAuMF9teV9yZWFsCiAgICAgICAgICAgIGVu
ZHdoZXJlCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgcm1lc3MocmluZCsxOnJpbmQrZ3JpZCVu
c29sbikgPSAwLjBfbXlfcmVhbAogICAgICAgICBlbmRpZgogICAgICAgICByaW5kID0gcmluZCAr
IGdyaWQlbnNvbG4KICAgICAgZW5kIGRvCiAgICAgIGVsZW0gPSBncmlkJWVsZW1lbnQoZWxlbSkl
bmV4dAogICBlbmQgZG8KZW5kIGRvCmltZXNzKGluZCsxKSA9IEVORF9PRl9WRVJUSUNFUwppbmQg
PSBpbmQrMQoKISBwYWNrIHRoZSBmYWNlcwoKaWYgKGdsb2JhbF9lbGVtZW50X2tpbmQgPT0gVEVU
UkFIRURSQUxfRUxFTUVOVCkgdGhlbgogICBhbGxvY2F0ZShzZWVuX2ZhY2UobWZhY2UpLHN0YXQ9
YXN0YXQpCiAgIGlmIChhc3RhdCAvPSAwKSB0aGVuCiAgICAgIGllcnIgPSBBTExPQ19GQUlMRUQK
ICAgICAgY2FsbCBmYXRhbCgiYWxsb2NhdGlvbiBmYWlsZWQgaW4gcGFjayBncmlkIixwcm9jcz1w
cm9jcykKICAgICAgcmV0dXJuCiAgIGVuZGlmCiAgIHNlZW5fZmFjZSA9IC5mYWxzZS4KCiAgIGlm
IChzaXplX2ZhY2Vfc29sbihncmlkLGRpbT1HUklEX0RJTSkvPTApIHRoZW4KICAgICAgZml4ZWRf
c3NpemUgPSBzaXplX2ZhY2Vfc29sbihncmlkKS9zaXplX2ZhY2Vfc29sbihncmlkLGRpbT1HUklE
X0RJTSkKICAgZWxzZQogICAgICBmaXhlZF9zc2l6ZSA9IDAKICAgZW5kaWYKICAgZG8gbGV2PTEs
Z3JpZCVubGV2CiAgICAgIGVsZW0gPSBncmlkJWhlYWRfbGV2ZWxfZWxlbShsZXYpCiAgICAgIGRv
IHdoaWxlIChlbGVtIC89IEVORF9PRl9MSVNUKQogICAgICAgICBkbyBrPTEsRkFDRVNfUEVSX0VM
RU1FTlQKICAgICAgICAgICAgZmFjZSA9IGdyaWQlZWxlbWVudChlbGVtKSVmYWNlKGspCiAgICAg
ICAgICAgIGlmIChzZWVuX2ZhY2UoZmFjZSkpIGN5Y2xlCiAgICAgICAgICAgIHNlZW5fZmFjZShm
YWNlKSA9IC50cnVlLgogICAgICAgICAgICBpZiAoYXNzb2NpYXRlZF9mYWNlX3NvbG4oZ3JpZCkp
IHRoZW4KICAgICAgICAgICAgICAgc3NpemUgPSBmaXhlZF9zc2l6ZQogICAgICAgICAgICBlbHNl
aWYgKGFzc29jaWF0ZWRfZmFjZV9zb2xuKGdyaWQsZmFjZSkpIHRoZW4KICAgICAgICAgICAgICAg
c3NpemUgPSBzaXplX2ZhY2Vfc29sbihncmlkLGZhY2UpCiAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgc3NpemUgPSAwCiAgICAgICAgICAgIGVuZGlmCiAgICAgICAgICAgIGlmIChmb3Jf
bWFzdGVyKSB0aGVuCiAgICAgICAgICAgICAgIGlmICgubm90LiBzZW5kaXRmKGZhY2UpKSBjeWNs
ZQogICAgICAgICAgICAgICBpZiAobnByb2MgPiAxKSB0aGVuCiAgICAgICAgICAgICAgICAgIGlt
ZXNzKGluZCsxKSA9IGZhY2UgKyBmYWNlX3Blcl9wcm9jKm15X3Byb2Nlc3NvcgogICAgICAgICAg
ICAgICAgICBpbWVzcyhpbmQrMikgPSBzc2l6ZQogICAgICAgICAgICAgICAgICBpbWVzcyhpbmQr
MykgPSBncmlkJWZhY2UoZmFjZSklYXNzb2NfZWxlbSArICYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbXlfcHJvY2Vzc29yKmVsZW1fcGVyX3Byb2MKICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICBpbWVzcyhpbmQrMSkgPSBmYWNlCiAgICAgICAgICAgICAgICAg
IGltZXNzKGluZCsyKSA9IHNzaXplCiAgICAgICAgICAgICAgICAgIGltZXNzKGluZCszKSA9IGdy
aWQlZmFjZShmYWNlKSVhc3NvY19lbGVtCiAgICAgICAgICAgICAgIGVuZGlmCiAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgaW1lc3MoaW5kKzEpID0gZmFjZQogICAgICAgICAgICAgICBp
bWVzcyhpbmQrMikgPSBzc2l6ZQogICAgICAgICAgICAgICBpbWVzcyhpbmQrMykgPSBncmlkJWZh
Y2UoZmFjZSklYXNzb2NfZWxlbQogICAgICAgICAgICBlbmRpZgogICAgICAgICAgICBpbmQgPSBp
bmQgKyAzCiAgICAgICAgICAgIGNhbGwgaGFzaF9wYWNrX2tleShncmlkJWZhY2UoZmFjZSklZ2lk
LGltZXNzLGluZCsxKQogICAgICAgICAgICBpbmQgPSBpbmQgKyBLRVlfU0laRQogICAgICAgICAg
ICBkbyBpPTEsVkVSVElDRVNfUEVSX0ZBQ0UKICAgICAgICAgICAgICAgY2FsbCBoYXNoX3BhY2tf
a2V5KGdyaWQldmVydGV4KGdyaWQlZmFjZShmYWNlKSV2ZXJ0ZXgoaSkpJWdpZCwgJgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1lc3MsaW5kKzEpCiAgICAgICAgICAgICAgIGlu
ZCA9IGluZCArIEtFWV9TSVpFCiAgICAgICAgICAgIGVuZCBkbwogICAgICAgICAgICBpbWVzcyhp
bmQrMSkgPSBncmlkJWZhY2UoZmFjZSklZGVncmVlCiAgICAgICAgICAgIGluZCA9IGluZCArIDEK
ICAgICAgICAgICAgaWYgKHNzaXplIC89IDApIHRoZW4KICAgICAgICAgICAgICAgcm1lc3Mocmlu
ZCsxOnJpbmQrc3NpemUpID0gcmVzaGFwZShnZXRfZmFjZV9zb2xuKGdyaWQsZmFjZSwgJgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbixjb2xvbixjb2xvbiks
KC9zc2l6ZS8pKQogICAgICAgICAgICAgICByaW5kID0gcmluZCArIHNzaXplCiAgICAgICAgICAg
ICAgIGlmIChncmlkJWhhdmVfdHJ1ZSkgdGhlbgogICAgICAgICAgICAgICAgICBybWVzcyhyaW5k
KzE6cmluZCtzc2l6ZSkgPSByZXNoYXBlKGdldF9mYWNlX2V4YWN0KGdyaWQsZmFjZSwgJgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbixjb2xvbixjb2xv
biksKC9zc2l6ZS8pKQogICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgIHJtZXNz
KHJpbmQrMTpyaW5kK3NzaXplKSA9IDAuMF9teV9yZWFsCiAgICAgICAgICAgICAgIGVuZGlmCiAg
ICAgICAgICAgICAgIHdoZXJlIChybWVzcyhyaW5kKzE6cmluZCtzc2l6ZSkgPT0gaHVnZSgwLjBf
bXlfcmVhbCkpCiAgICAgICAgICAgICAgICAgIHJtZXNzKHJpbmQrMTpyaW5kK3NzaXplKSA9IDAu
MF9teV9yZWFsCiAgICAgICAgICAgICAgIGVuZHdoZXJlCiAgICAgICAgICAgICAgIHJpbmQgPSBy
aW5kICsgc3NpemUKICAgICAgICAgICAgZW5kaWYKICAgICAgICAgZW5kIGRvCiAgICAgICAgIGVs
ZW0gPSBncmlkJWVsZW1lbnQoZWxlbSklbmV4dAogICAgICBlbmQgZG8KICAgZW5kIGRvCgogICBk
ZWFsbG9jYXRlKHNlZW5fZmFjZSxzdGF0PWFzdGF0KQogICBpbWVzcyhpbmQrMSkgPSBFTkRfT0Zf
RkFDRVMKICAgaW5kID0gaW5kKzEKCmVuZGlmCgohIHBhY2sgdGhlIGVkZ2VzCgphbGxvY2F0ZShz
ZWVuX2VkZ2UobWVkZ2UpLHN0YXQ9YXN0YXQpCmlmIChhc3RhdCAvPSAwKSB0aGVuCiAgIGllcnIg
PSBBTExPQ19GQUlMRUQKICAgY2FsbCBmYXRhbCgiYWxsb2NhdGlvbiBmYWlsZWQgaW4gcGFjayBn
cmlkIixwcm9jcz1wcm9jcykKICAgcmV0dXJuCmVuZGlmCnNlZW5fZWRnZSA9IC5mYWxzZS4KCmlm
IChzaXplX2VkZ2Vfc29sbihncmlkLGRpbT1HUklEX0RJTSkvPTApIHRoZW4KICAgZml4ZWRfc3Np
emUgPSBzaXplX2VkZ2Vfc29sbihncmlkKS9zaXplX2VkZ2Vfc29sbihncmlkLGRpbT1HUklEX0RJ
TSkKZWxzZQogICBmaXhlZF9zc2l6ZSA9IDAKZW5kaWYKZG8gbGV2PTEsZ3JpZCVubGV2CiAgIGVs
ZW0gPSBncmlkJWhlYWRfbGV2ZWxfZWxlbShsZXYpCiAgIGRvIHdoaWxlIChlbGVtIC89IEVORF9P
Rl9MSVNUKQogICAgICBkbyBrPTEsRURHRVNfUEVSX0VMRU1FTlQKICAgICAgICAgZWRnZSA9IGdy
aWQlZWxlbWVudChlbGVtKSVlZGdlKGspCiAgICAgICAgIGlmIChzZWVuX2VkZ2UoZWRnZSkpIGN5
Y2xlCiAgICAgICAgIHNlZW5fZWRnZShlZGdlKSA9IC50cnVlLgogICAgICAgICBpZiAoYXNzb2Np
YXRlZF9lZGdlX3NvbG4oZ3JpZCkpIHRoZW4KICAgICAgICAgICAgc3NpemUgPSBmaXhlZF9zc2l6
ZQogICAgICAgICBlbHNlaWYgKGFzc29jaWF0ZWRfZWRnZV9zb2xuKGdyaWQsZWRnZSkpIHRoZW4K
ICAgICAgICAgICAgc3NpemUgPSBzaXplX2VkZ2Vfc29sbihncmlkLGVkZ2UpCiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgc3NpemUgPSAwCiAgICAgICAgIGVuZGlmCiAgICAgICAgIGlmIChmb3Jf
bWFzdGVyKSB0aGVuCiAgICAgICAgICAgIGlmICgubm90LiBzZW5kaXRlKGVkZ2UpKSBjeWNsZQog
ICAgICAgICAgICBpZiAobnByb2MgPiAxKSB0aGVuCiAgICAgICAgICAgICAgIGltZXNzKGluZCsx
KSA9IGVkZ2UgKyBlZGdlX3Blcl9wcm9jKm15X3Byb2Nlc3NvcgogICAgICAgICAgICAgICBpbWVz
cyhpbmQrMikgPSBzc2l6ZQogICAgICAgICAgICAgICBpbWVzcyhpbmQrMykgPSBncmlkJWVkZ2Uo
ZWRnZSklYXNzb2NfZWxlbSArICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXlfcHJv
Y2Vzc29yKmVsZW1fcGVyX3Byb2MKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICBpbWVz
cyhpbmQrMSkgPSBlZGdlCiAgICAgICAgICAgICAgIGltZXNzKGluZCsyKSA9IHNzaXplCiAgICAg
ICAgICAgICAgIGltZXNzKGluZCszKSA9IGdyaWQlZWRnZShlZGdlKSVhc3NvY19lbGVtCiAgICAg
ICAgICAgIGVuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgaW1lc3MoaW5kKzEpID0gZWRn
ZQogICAgICAgICAgICBpbWVzcyhpbmQrMikgPSBzc2l6ZQogICAgICAgICAgICBpbWVzcyhpbmQr
MykgPSBncmlkJWVkZ2UoZWRnZSklYXNzb2NfZWxlbQogICAgICAgICBlbmRpZgogICAgICAgICBp
bmQgPSBpbmQgKyAzCiAgICAgICAgIGNhbGwgaGFzaF9wYWNrX2tleShncmlkJWVkZ2UoZWRnZSkl
Z2lkLGltZXNzLGluZCsxKQogICAgICAgICBpbmQgPSBpbmQgKyBLRVlfU0laRQogICAgICAgICBj
YWxsIGhhc2hfcGFja19rZXkoZ3JpZCV2ZXJ0ZXgoZ3JpZCVlZGdlKGVkZ2UpJXZlcnRleCgxKSkl
Z2lkLCAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWVzcyxpbmQrMSkKICAgICAgICAg
aW5kID0gaW5kICsgS0VZX1NJWkUKICAgICAgICAgY2FsbCBoYXNoX3BhY2tfa2V5KGdyaWQldmVy
dGV4KGdyaWQlZWRnZShlZGdlKSV2ZXJ0ZXgoMikpJWdpZCwgJgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW1lc3MsaW5kKzEpCiAgICAgICAgIGluZCA9IGluZCArIEtFWV9TSVpFCiAgICAg
ICAgIGltZXNzKGluZCsxKSA9IGdyaWQlZWRnZShlZGdlKSVkZWdyZWUKICAgICAgICAgaW5kID0g
aW5kICsgMQogICAgICAgICBpZiAoc3NpemUgLz0gMCkgdGhlbgogICAgICAgICAgICBybWVzcyhy
aW5kKzE6cmluZCtzc2l6ZSkgPSByZXNoYXBlKGdldF9lZGdlX3NvbG4oZ3JpZCxlZGdlLCAmCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uLGNvbG9uLGNvbG9uKSwo
L3NzaXplLykpCiAgICAgICAgICAgIHJpbmQgPSByaW5kICsgc3NpemUKICAgICAgICAgICAgaWYg
KGdyaWQlaGF2ZV90cnVlKSB0aGVuCiAgICAgICAgICAgICAgIHJtZXNzKHJpbmQrMTpyaW5kK3Nz
aXplKSA9IHJlc2hhcGUoZ2V0X2VkZ2VfZXhhY3QoZ3JpZCxlZGdlLCAmCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uLGNvbG9uLGNvbG9uKSwoL3NzaXplLykp
CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgcm1lc3MocmluZCsxOnJpbmQrc3NpemUp
ID0gMC4wX215X3JlYWwKICAgICAgICAgICAgZW5kaWYKICAgICAgICAgICAgd2hlcmUgKHJtZXNz
KHJpbmQrMTpyaW5kK3NzaXplKSA9PSBodWdlKDAuMF9teV9yZWFsKSkKICAgICAgICAgICAgICAg
cm1lc3MocmluZCsxOnJpbmQrc3NpemUpID0gMC4wX215X3JlYWwKICAgICAgICAgICAgZW5kd2hl
cmUKICAgICAgICAgICAgcmluZCA9IHJpbmQgKyBzc2l6ZQogICAgICAgICBlbmRpZgogICAgICBl
bmQgZG8KICAgICAgZWxlbSA9IGdyaWQlZWxlbWVudChlbGVtKSVuZXh0CiAgIGVuZCBkbwplbmQg
ZG8KCmRlYWxsb2NhdGUoc2Vlbl9lZGdlLHN0YXQ9YXN0YXQpCmltZXNzKGluZCsxKSA9IEVORF9P
Rl9FREdFUwoKbmkgPSBpbmQrMQpuciA9IHJpbmQKCmlmIChuaSA+IHNpemUoaW1lc3MpIC5vci4g
bnIgPiBzaXplKHJtZXNzKSkgdGhlbgogICBpZXJyID0gUEhBTUxfSU5URVJOQUxfRVJST1IKICAg
Y2FsbCBmYXRhbCgiSW5jb3JyZWN0IGFsbG9jYXRpb24gZm9yIG1lc3NhZ2UgdG8gZ3JhcGhpY3Mg
cHJvY2Vzcy4iLCAmCiAgICAgICAgICAgICAgaW50bGlzdD0oL25pLHNpemUoaW1lc3MpLG5yLHNp
emUocm1lc3MpLykpCiAgIHN0b3AKZW5kaWYKCmlmIChmb3JfbWFzdGVyKSBkZWFsbG9jYXRlKHNl
bmRpdCxzZW5kaXRlLHNlbmRpdGYsc3RhdD1hc3RhdCkKCmVuZCBzdWJyb3V0aW5lIHBhY2tfZ3Jp
ZAoKISAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLQohIGZ1bmN0aW9uIHNjYWxhcl9pbWVzc19z
aXplIGFuZCBmcmllbmRzCiEgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0KISBUaGVzZSBmdW5j
dGlvbnMgZ2l2ZSB0aGUgc2l6ZSBvZiB0aGUgbWVzc2FnZSBjb250YWluaW5nIHRoZSBncmlkLiAg
VGhleQohIGdpdmUgdGhlIGFtb3VudCBvZiBpbnRlZ2VyIGFuZCByZWFsIHNwYWNlIHVzZWQgZm9y
IHNjYWxhciBpbmZvcm1hdGlvbiBhbmQKISBmb3IgZWFjaCBlbGVtZW50LCBlZGdlIGFuZCB2ZXJ0
ZXguCgppbnRlZ2VyIGZ1bmN0aW9uIHNjYWxhcl9pbWVzc19zaXplKGdyaWQpCnR5cGUoZ3JpZF90
eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCnNlbGVjdCBjYXNlIChnbG9iYWxfZWxlbWVudF9raW5k
KQpjYXNlIChUUklBTkdVTEFSX0VMRU1FTlQpCiAgIHNjYWxhcl9pbWVzc19zaXplID0gMTEgKyBI
T1NUTEVOCmNhc2UgKFRFVFJBSEVEUkFMX0VMRU1FTlQpCiAgIHNjYWxhcl9pbWVzc19zaXplID0g
MTIgKyBIT1NUTEVOCmVuZCBzZWxlY3QKZW5kIGZ1bmN0aW9uIHNjYWxhcl9pbWVzc19zaXplCgpp
bnRlZ2VyIGZ1bmN0aW9uIGVsZW1faW1lc3Nfc2l6ZShncmlkKQp0eXBlKGdyaWRfdHlwZSksIGlu
dGVudChpbikgOjogZ3JpZApzZWxlY3QgY2FzZSAoZ2xvYmFsX2VsZW1lbnRfa2luZCkKY2FzZSAo
VFJJQU5HVUxBUl9FTEVNRU5UKQogICBlbGVtX2ltZXNzX3NpemUgPSA2ICsgTUFYX0NISUxEICsg
JgogICAgICAgICAgICAgICAgICAgICgzICsgRURHRVNfUEVSX0VMRU1FTlQgKyBWRVJUSUNFU19Q
RVJfRUxFTUVOVCArICYKICAgICAgICAgICAgICAgICAgICAgTkVJR0hCT1JTX1BFUl9FTEVNRU5U
KSpLRVlfU0laRQpjYXNlIChURVRSQUhFRFJBTF9FTEVNRU5UKQogICBlbGVtX2ltZXNzX3NpemUg
PSA2ICsgJgogICAgICAgICAgICAgICAgICAgICgxICsgRURHRVNfUEVSX0VMRU1FTlQgKyBWRVJU
SUNFU19QRVJfRUxFTUVOVCArICYKICAgICAgICAgICAgICAgICAgICAgRkFDRVNfUEVSX0VMRU1F
TlQpKktFWV9TSVpFCmVuZCBzZWxlY3QKZW5kIGZ1bmN0aW9uIGVsZW1faW1lc3Nfc2l6ZQoKaW50
ZWdlciBmdW5jdGlvbiBmYWNlX2ltZXNzX3NpemUoZ3JpZCkKdHlwZShncmlkX3R5cGUpLCBpbnRl
bnQoaW4pIDo6IGdyaWQKc2VsZWN0IGNhc2UgKGdsb2JhbF9lbGVtZW50X2tpbmQpCmNhc2UgKFRS
SUFOR1VMQVJfRUxFTUVOVCkKICAgZmFjZV9pbWVzc19zaXplID0gMApjYXNlIChURVRSQUhFRFJB
TF9FTEVNRU5UKQogICBmYWNlX2ltZXNzX3NpemUgPSA0ICsgNCpLRVlfU0laRQplbmQgc2VsZWN0
CmVuZCBmdW5jdGlvbiBmYWNlX2ltZXNzX3NpemUKCmludGVnZXIgZnVuY3Rpb24gZWRnZV9pbWVz
c19zaXplKGdyaWQpCnR5cGUoZ3JpZF90eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCmVkZ2VfaW1l
c3Nfc2l6ZSA9IDQgKyAzKktFWV9TSVpFCmVuZCBmdW5jdGlvbiBlZGdlX2ltZXNzX3NpemUKCmlu
dGVnZXIgZnVuY3Rpb24gdmVydF9pbWVzc19zaXplKGdyaWQpCnR5cGUoZ3JpZF90eXBlKSwgaW50
ZW50KGluKSA6OiBncmlkCnZlcnRfaW1lc3Nfc2l6ZSA9IDIgKyBLRVlfU0laRQplbmQgZnVuY3Rp
b24gdmVydF9pbWVzc19zaXplCgppbnRlZ2VyIGZ1bmN0aW9uIHNjYWxhcl9ybWVzc19zaXplKGdy
aWQpCnR5cGUoZ3JpZF90eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCmxvZ2ljYWwoc21hbGxfbG9n
aWNhbCkgOjogc2Vlbl9mYWNlKGdyaWQlYmlnZ2VzdF9mYWNlKSwgJgogICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlZW5fZWRnZShncmlkJWJpZ2dlc3RfZWRnZSkKaW50ZWdlciA6OiBsZXYsIGVs
ZW0sIGZhY2UsIGVkZ2UsIGksIGZpeGVkX3NzaXplX2VsZW0sIGZpeGVkX3NzaXplX2ZhY2UsICYK
ICAgICAgICAgICBmaXhlZF9zc2l6ZV9lZGdlCnNlZW5fZmFjZSA9IC5mYWxzZS4Kc2Vlbl9lZGdl
ID0gLmZhbHNlLgpzY2FsYXJfcm1lc3Nfc2l6ZSA9IDAKaWYgKHNpemVfZWxlbV9zb2xuKGdyaWQs
ZGltPUdSSURfRElNKS89MCkgdGhlbgogICBmaXhlZF9zc2l6ZV9lbGVtID0gc2l6ZV9lbGVtX3Nv
bG4oZ3JpZCkvc2l6ZV9lbGVtX3NvbG4oZ3JpZCxkaW09R1JJRF9ESU0pCmVuZGlmCmlmIChzaXpl
X2ZhY2Vfc29sbihncmlkLGRpbT1HUklEX0RJTSkvPTApIHRoZW4KICAgZml4ZWRfc3NpemVfZmFj
ZSA9IHNpemVfZmFjZV9zb2xuKGdyaWQpL3NpemVfZmFjZV9zb2xuKGdyaWQsZGltPUdSSURfRElN
KQplbmRpZgppZiAoc2l6ZV9lZGdlX3NvbG4oZ3JpZCxkaW09R1JJRF9ESU0pLz0wKSB0aGVuCiAg
IGZpeGVkX3NzaXplX2VkZ2UgPSBzaXplX2VkZ2Vfc29sbihncmlkKS9zaXplX2VkZ2Vfc29sbihn
cmlkLGRpbT1HUklEX0RJTSkKZW5kaWYKZG8gbGV2PTEsZ3JpZCVubGV2CiAgIGVsZW0gPSBncmlk
JWhlYWRfbGV2ZWxfZWxlbShsZXYpCiAgIGRvIHdoaWxlIChlbGVtIC89IEVORF9PRl9MSVNUKQog
ICAgICBpZiAoYXNzb2NpYXRlZF9lbGVtX3NvbG4oZ3JpZCkpIHRoZW4KICAgICAgICAgc2NhbGFy
X3JtZXNzX3NpemUgPSBzY2FsYXJfcm1lc3Nfc2l6ZSArIDIqZml4ZWRfc3NpemVfZWxlbQogICAg
ICBlbHNlaWYgKGFzc29jaWF0ZWRfZWxlbV9zb2xuKGdyaWQsZWxlbSkpIHRoZW4KICAgICAgICAg
c2NhbGFyX3JtZXNzX3NpemUgPSBzY2FsYXJfcm1lc3Nfc2l6ZSArICYKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAyKnNpemVfZWxlbV9zb2xuKGdyaWQsZWxlbSkKICAgICAgZW5kaWYKICAg
ICAgZG8gaT0xLEZBQ0VTX1BFUl9FTEVNRU5UCiAgICAgICAgIGZhY2UgPSBncmlkJWVsZW1lbnQo
ZWxlbSklZmFjZShpKQogICAgICAgICBpZiAoc2Vlbl9mYWNlKGZhY2UpKSBjeWNsZQogICAgICAg
ICBzZWVuX2ZhY2UoZmFjZSkgPSAudHJ1ZS4KICAgICAgICAgaWYgKGFzc29jaWF0ZWRfZmFjZV9z
b2xuKGdyaWQpKSB0aGVuCiAgICAgICAgICAgIHNjYWxhcl9ybWVzc19zaXplID0gc2NhbGFyX3Jt
ZXNzX3NpemUgKyAyKmZpeGVkX3NzaXplX2ZhY2UKICAgICAgICAgZWxzZWlmIChhc3NvY2lhdGVk
X2ZhY2Vfc29sbihncmlkLGZhY2UpKSB0aGVuCiAgICAgICAgICAgIHNjYWxhcl9ybWVzc19zaXpl
ID0gc2NhbGFyX3JtZXNzX3NpemUgKyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MipzaXplX2ZhY2Vfc29sbihncmlkLGZhY2UpCiAgICAgICAgIGVuZGlmCiAgICAgIGVuZCBkbwog
ICAgICBkbyBpPTEsRURHRVNfUEVSX0VMRU1FTlQKICAgICAgICAgZWRnZSA9IGdyaWQlZWxlbWVu
dChlbGVtKSVlZGdlKGkpCiAgICAgICAgIGlmIChzZWVuX2VkZ2UoZWRnZSkpIGN5Y2xlCiAgICAg
ICAgIHNlZW5fZWRnZShlZGdlKSA9IC50cnVlLgogICAgICAgICBpZiAoYXNzb2NpYXRlZF9lZGdl
X3NvbG4oZ3JpZCkpIHRoZW4KICAgICAgICAgICAgc2NhbGFyX3JtZXNzX3NpemUgPSBzY2FsYXJf
cm1lc3Nfc2l6ZSArIDIqZml4ZWRfc3NpemVfZWRnZQogICAgICAgICBlbHNlaWYgKGFzc29jaWF0
ZWRfZWRnZV9zb2xuKGdyaWQsZWRnZSkpIHRoZW4KICAgICAgICAgICAgc2NhbGFyX3JtZXNzX3Np
emUgPSBzY2FsYXJfcm1lc3Nfc2l6ZSArICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAyKnNpemVfZWRnZV9zb2xuKGdyaWQsZWRnZSkKICAgICAgICAgZW5kaWYKICAgICAgZW5kIGRv
CiAgICAgIGVsZW0gPSBncmlkJWVsZW1lbnQoZWxlbSklbmV4dAogICBlbmQgZG8KZW5kIGRvCmVu
ZCBmdW5jdGlvbiBzY2FsYXJfcm1lc3Nfc2l6ZQoKaW50ZWdlciBmdW5jdGlvbiBlbGVtX3JtZXNz
X3NpemUoZ3JpZCkKdHlwZShncmlkX3R5cGUpLCBpbnRlbnQoaW4pIDo6IGdyaWQKc2VsZWN0IGNh
c2UgKGdsb2JhbF9lbGVtZW50X2tpbmQpCmNhc2UgKFRSSUFOR1VMQVJfRUxFTUVOVCkKICAgZWxl
bV9ybWVzc19zaXplID0gMgpjYXNlIChURVRSQUhFRFJBTF9FTEVNRU5UKQogICBlbGVtX3JtZXNz
X3NpemUgPSAwCmVuZCBzZWxlY3QKZW5kIGZ1bmN0aW9uIGVsZW1fcm1lc3Nfc2l6ZQoKaW50ZWdl
ciBmdW5jdGlvbiBmYWNlX3JtZXNzX3NpemUoZ3JpZCkKdHlwZShncmlkX3R5cGUpLCBpbnRlbnQo
aW4pIDo6IGdyaWQKZmFjZV9ybWVzc19zaXplID0gMAplbmQgZnVuY3Rpb24gZmFjZV9ybWVzc19z
aXplCgppbnRlZ2VyIGZ1bmN0aW9uIGVkZ2Vfcm1lc3Nfc2l6ZShncmlkKQp0eXBlKGdyaWRfdHlw
ZSksIGludGVudChpbikgOjogZ3JpZAplZGdlX3JtZXNzX3NpemUgPSAwCmVuZCBmdW5jdGlvbiBl
ZGdlX3JtZXNzX3NpemUKCmludGVnZXIgZnVuY3Rpb24gdmVydF9ybWVzc19zaXplKGdyaWQpCnR5
cGUoZ3JpZF90eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCnNlbGVjdCBjYXNlIChnbG9iYWxfZWxl
bWVudF9raW5kKQpjYXNlIChUUklBTkdVTEFSX0VMRU1FTlQpCiAgIHZlcnRfcm1lc3Nfc2l6ZSA9
IDIgKyAyKmdyaWQlbnNvbG4KY2FzZSAoVEVUUkFIRURSQUxfRUxFTUVOVCkKICAgdmVydF9ybWVz
c19zaXplID0gMyArIDIqZ3JpZCVuc29sbgplbmQgc2VsZWN0CmVuZCBmdW5jdGlvbiB2ZXJ0X3Jt
ZXNzX3NpemUKCiEgICAgICAgICAgLS0tLS0tLS0tLS0Kc3Vicm91dGluZSBtZXJnZV9ncmlkcyhn
cmlkLHByb2NzLGltZXNzLG5pLHJtZXNzLG5yLHN0aWxsX3NlcXVlbnRpYWwpCiEgICAgICAgICAg
LS0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiEgVGhpcyByb3V0aW5lIGlzIGNhbGxlZCBieSB0aGUgbWFzdGVyIHRvIG1lcmdl
IHRoZSBncmlkcyBmcm9tIGVhY2ggc2xhdmUKISBpbnRvIGEgc2luZ2xlIGdyaWQgZm9yIHRoZSBt
YXN0ZXIncyBncmFwaGljcyBwcm9jZXNzb3IKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmltcGxpY2l0IG5vbmUKCiEtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgRHVtbXkgYXJndW1lbnRzCgp0
eXBlKGdyaWRfdHlwZSksIGludGVudChpbikgOjogZ3JpZAp0eXBlKHByb2NfaW5mbyksIGludGVu
dChpbikgOjogcHJvY3MKaW50ZWdlciwgcG9pbnRlciA6OiBpbWVzcyg6KQpyZWFsIChteV9yZWFs
KSwgcG9pbnRlciA6OiBybWVzcyg6KQppbnRlZ2VyLCBpbnRlbnQob3V0KSA6OiBuaSxucgpsb2dp
Y2FsLCBpbnRlbnQoaW4pIDo6IHN0aWxsX3NlcXVlbnRpYWwKIS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwgdmFyaWFibGVzOgoKY2hhcmFj
dGVyKGxlbj1IT1NUTEVOKSA6OiBob3N0CmludGVnZXIgOjogaSwgaiwgaWluZCwgcmluZCwgcGlp
bmQsIHByaW5kLCBucCwgaXNpemUsIHJzaXplLCBhc3RhdCwgc3NpemUKaW50ZWdlciwgYWxsb2Nh
dGFibGUgOjogb3JkKDopCnR5cGUgcmVjdl90eXBlCiAgIGludGVnZXIsIHBvaW50ZXIgOjogaW1l
c3MoOikKICAgcmVhbChteV9yZWFsKSwgcG9pbnRlciA6OiBybWVzcyg6KQogICBpbnRlZ2VyIDo6
IG5pLG5yLHByb2MsaWluZCxyaW5kCmVuZCB0eXBlIHJlY3ZfdHlwZQp0eXBlIChyZWN2X3R5cGUp
LCBhbGxvY2F0YWJsZSA6OiByZWN2KDopCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQohIEJlZ2luIGV4ZWN1dGFibGUgY29kZQoKISByZWNlaXZlIGFs
bCB0aGUgc2xhdmUgbWVzc2FnZXMKCmlmIChzdGlsbF9zZXF1ZW50aWFsKSB0aGVuCiAgIG5wID0g
MQplbHNlCiAgIG5wID0gbnVtX3Byb2MocHJvY3MpCmVuZGlmCgphbGxvY2F0ZShyZWN2KG5wKSxv
cmQobnApLHN0YXQ9YXN0YXQpCmlmIChhc3RhdCAvPSAwKSB0aGVuCiAgIGllcnIgPSBBTExPQ19G
QUlMRUQKICAgY2FsbCBmYXRhbCgiYWxsb2NhdGlvbiBmYWlsZWQgaW4gbWVyZ2UgZ3JpZHMiLHBy
b2NzPXByb2NzKQogICByZXR1cm4KZW5kaWYKZG8gaT0xLG5wCiAgIGNhbGwgcGhhbWxfcmVjdihw
cm9jcyxyZWN2KGkpJXByb2MscmVjdihpKSVpbWVzcyxyZWN2KGkpJW5pLHJlY3YoaSklcm1lc3Ms
ICYKICAgICAgICAgICAgICAgICAgIHJlY3YoaSklbnIsNzIwKQogICBvcmQocmVjdihpKSVwcm9j
KSA9IGkKZW5kIGRvCgphbGxvY2F0ZShpbWVzcyhzdW0ocmVjdiVuaSkpLHJtZXNzKHN1bShyZWN2
JW5yKSksc3RhdD1hc3RhdCkKaWYgKGFzdGF0IC89IDApIHRoZW4KICAgaWVyciA9IEFMTE9DX0ZB
SUxFRAogICBjYWxsIGZhdGFsKCJhbGxvY2F0aW9uIGZhaWxlZCBpbiBtZXJnZSBncmlkcyIscHJv
Y3M9cHJvY3MpCiAgIHJldHVybgplbmRpZgoKISBwYWNrIHRoZSBzY2FsYXIgaW5mb3JtYXRpb24g
ZnJvbSBwcm9jZXNzb3IgMTsgdGhlIG90aGVycyBzaG91bGQgYmUgdGhlIHNhbWUKCmltZXNzKDE6
c2NhbGFyX2ltZXNzX3NpemUoZ3JpZCkpID0gcmVjdigxKSVpbWVzcygxOnNjYWxhcl9pbWVzc19z
aXplKGdyaWQpKQoKISBjaGFuZ2UgdGhlIHByb2Nlc3NvciB0byB0aGlzIHByb2Nlc3NvcgoKaW1l
c3MoOSkgPSBteV9wcm9jKHByb2NzKQpzZWxlY3QgY2FzZSAoZ2xvYmFsX2VsZW1lbnRfa2luZCkK
Y2FzZSAoVFJJQU5HVUxBUl9FTEVNRU5UKQogICBpaW5kID0gOQpjYXNlIChURVRSQUhFRFJBTF9F
TEVNRU5UKQogICBpaW5kID0gMTAKZW5kIHNlbGVjdApob3N0ID0gaG9zdG5hbWUocHJvY3MpCmRv
IGk9MSxIT1NUTEVOCiAgIGltZXNzKGlpbmQrIGkpID0gaWNoYXIoaG9zdChpOmkpKQplbmQgZG8K
aWluZCA9IHNjYWxhcl9pbWVzc19zaXplKGdyaWQpCnJpbmQgPSAwCgohIHBhY2sgZWxlbWVudHMg
ZnJvbSBlYWNoIHByb2Nlc3NvcgoKaXNpemUgPSBlbGVtX2ltZXNzX3NpemUoZ3JpZCkKcnNpemUg
PSBlbGVtX3JtZXNzX3NpemUoZ3JpZCkKCmRvIGo9MSxucAogICBpID0gb3JkKGopCiAgIHBpaW5k
ID0gc2NhbGFyX2ltZXNzX3NpemUoZ3JpZCkKICAgcHJpbmQgPSAwCiAgIGRvIHdoaWxlIChyZWN2
KGkpJWltZXNzKHBpaW5kKzEpIC89IEVORF9PRl9FTEVNRU5UUykKICAgICAgaW1lc3MoaWluZCsx
OmlpbmQraXNpemUpID0gcmVjdihpKSVpbWVzcyhwaWluZCsxOnBpaW5kK2lzaXplKQogICAgICBz
c2l6ZSA9IGltZXNzKGlpbmQrMikKICAgICAgaWluZCA9IGlpbmQgICArIGlzaXplCiAgICAgIHBp
aW5kID0gcGlpbmQgKyBpc2l6ZQogICAgICBybWVzcyhyaW5kKzE6cmluZCtyc2l6ZSsyKnNzaXpl
KSA9IHJlY3YoaSklcm1lc3MocHJpbmQrMTpwcmluZCtyc2l6ZSsyKnNzaXplKQogICAgICByaW5k
ID0gcmluZCAgICsgcnNpemUgKyAyKnNzaXplCiAgICAgIHByaW5kID0gcHJpbmQgKyByc2l6ZSAr
IDIqc3NpemUKICAgZW5kIGRvCiAgIHJlY3YoaSklaWluZCA9IHBpaW5kICsgMSAhIGJvb2ttYXJr
IGZvciB3aGVuIEkgY29weSB0aGUgdmVydGljZXMKICAgcmVjdihpKSVyaW5kID0gcHJpbmQKZW5k
IGRvCmltZXNzKGlpbmQrMSkgPSBFTkRfT0ZfRUxFTUVOVFMKaWluZCA9IGlpbmQgKyAxCgohIHBh
Y2sgdmVydGljZXMgZnJvbSBlYWNoIHByb2Nlc3NvcgoKaXNpemUgPSB2ZXJ0X2ltZXNzX3NpemUo
Z3JpZCkKcnNpemUgPSB2ZXJ0X3JtZXNzX3NpemUoZ3JpZCkKCmRvIGo9MSxucAogICBpID0gb3Jk
KGopCiAgIHBpaW5kID0gcmVjdihpKSVpaW5kCiAgIHByaW5kID0gcmVjdihpKSVyaW5kCiAgIGRv
IHdoaWxlIChyZWN2KGkpJWltZXNzKHBpaW5kKzEpIC89IEVORF9PRl9WRVJUSUNFUykKICAgICAg
aW1lc3MoaWluZCsxOmlpbmQraXNpemUpID0gcmVjdihpKSVpbWVzcyhwaWluZCsxOnBpaW5kK2lz
aXplKQogICAgICBpaW5kID0gaWluZCAgICsgaXNpemUKICAgICAgcGlpbmQgPSBwaWluZCArIGlz
aXplCiAgICAgIHJtZXNzKHJpbmQrMTpyaW5kK3JzaXplKSA9IHJlY3YoaSklcm1lc3MocHJpbmQr
MTpwcmluZCtyc2l6ZSkKICAgICAgcmluZCA9IHJpbmQgICArIHJzaXplCiAgICAgIHByaW5kID0g
cHJpbmQgKyByc2l6ZQogICBlbmQgZG8KICAgcmVjdihpKSVpaW5kID0gcGlpbmQgKyAxICEgYm9v
a21hcmsgZm9yIHdoZW4gSSBjb3B5IHRoZSBmYWNlcyBvciBlZGdlcwogICByZWN2KGkpJXJpbmQg
PSBwcmluZAplbmQgZG8KaW1lc3MoaWluZCsxKSA9IEVORF9PRl9WRVJUSUNFUwppaW5kID0gaWlu
ZCArIDEKCiEgcGFjayBmYWNlcyBmcm9tIGVhY2ggcHJvY2Vzc29yCgppZiAoZ2xvYmFsX2VsZW1l
bnRfa2luZCA9PSBURVRSQUhFRFJBTF9FTEVNRU5UKSB0aGVuCgogICBpc2l6ZSA9IGZhY2VfaW1l
c3Nfc2l6ZShncmlkKQogICByc2l6ZSA9IGZhY2Vfcm1lc3Nfc2l6ZShncmlkKQoKICAgZG8gaj0x
LG5wCiAgICAgIGkgPSBvcmQoaikKICAgICAgcGlpbmQgPSByZWN2KGkpJWlpbmQKICAgICAgcHJp
bmQgPSByZWN2KGkpJXJpbmQKICAgICAgZG8gd2hpbGUgKHJlY3YoaSklaW1lc3MocGlpbmQrMSkg
Lz0gRU5EX09GX0ZBQ0VTKQogICAgICAgICBpbWVzcyhpaW5kKzE6aWluZCtpc2l6ZSkgPSByZWN2
KGkpJWltZXNzKHBpaW5kKzE6cGlpbmQraXNpemUpCiAgICAgICAgIHNzaXplID0gaW1lc3MoaWlu
ZCsyKQogICAgICAgICBpaW5kID0gaWluZCAgICsgaXNpemUKICAgICAgICAgcGlpbmQgPSBwaWlu
ZCArIGlzaXplCiAgICAgICAgIHJtZXNzKHJpbmQrMTpyaW5kK3JzaXplKzIqc3NpemUpID0gcmVj
dihpKSVybWVzcyhwcmluZCsxOnByaW5kK3JzaXplKzIqc3NpemUpCiAgICAgICAgIHJpbmQgPSBy
aW5kICAgKyByc2l6ZSArIDIqc3NpemUKICAgICAgICAgcHJpbmQgPSBwcmluZCArIHJzaXplICsg
Mipzc2l6ZQogICAgICBlbmQgZG8KICAgICAgcmVjdihpKSVpaW5kID0gcGlpbmQgKyAxICEgYm9v
a21hcmsgZm9yIHdoZW4gSSBjb3B5IHRoZSBlZGdlcwogICAgICByZWN2KGkpJXJpbmQgPSBwcmlu
ZAogICBlbmQgZG8KICAgaW1lc3MoaWluZCsxKSA9IEVORF9PRl9GQUNFUwogICBpaW5kID0gaWlu
ZCArIDEKCmVuZGlmCgohIHBhY2sgZWRnZXMgZnJvbSBlYWNoIHByb2Nlc3NvcgoKaXNpemUgPSBl
ZGdlX2ltZXNzX3NpemUoZ3JpZCkKcnNpemUgPSBlZGdlX3JtZXNzX3NpemUoZ3JpZCkKCmRvIGo9
MSxucAogICBpID0gb3JkKGopCiAgIHBpaW5kID0gcmVjdihpKSVpaW5kCiAgIHByaW5kID0gcmVj
dihpKSVyaW5kCiAgIGRvIHdoaWxlIChyZWN2KGkpJWltZXNzKHBpaW5kKzEpIC89IEVORF9PRl9F
REdFUykKICAgICAgaW1lc3MoaWluZCsxOmlpbmQraXNpemUpID0gcmVjdihpKSVpbWVzcyhwaWlu
ZCsxOnBpaW5kK2lzaXplKQogICAgICBzc2l6ZSA9IGltZXNzKGlpbmQrMikKICAgICAgaWluZCA9
IGlpbmQgICArIGlzaXplCiAgICAgIHBpaW5kID0gcGlpbmQgKyBpc2l6ZQogICAgICBybWVzcyhy
aW5kKzE6cmluZCtyc2l6ZSsyKnNzaXplKSA9IHJlY3YoaSklcm1lc3MocHJpbmQrMTpwcmluZCty
c2l6ZSsyKnNzaXplKQogICAgICByaW5kID0gcmluZCAgICsgcnNpemUgKyAyKnNzaXplCiAgICAg
IHByaW5kID0gcHJpbmQgKyByc2l6ZSArIDIqc3NpemUKICAgZW5kIGRvCmVuZCBkbwppbWVzcyhp
aW5kKzEpID0gRU5EX09GX0VER0VTCgpuaSA9IGlpbmQgKyAxCm5yID0gcmluZAoKZG8gaT0xLG5w
CiAgIGlmIChyZWN2KGkpJW5pIC89IDApIGRlYWxsb2NhdGUocmVjdihpKSVpbWVzcyxzdGF0PWFz
dGF0KQogICBpZiAocmVjdihpKSVuciAvPSAwKSBkZWFsbG9jYXRlKHJlY3YoaSklcm1lc3Msc3Rh
dD1hc3RhdCkKZW5kIGRvCmRlYWxsb2NhdGUocmVjdixvcmQsc3RhdD1hc3RhdCkKCnJldHVybgpl
bmQgc3Vicm91dGluZSBtZXJnZV9ncmlkcwoKISAgICAgICAgICAtLS0tLS0tLS0tCnN1YnJvdXRp
bmUgc2V0X3NlbmRpdChncmlkLHNlbmRpdCxzZW5kaXRlLHNlbmRpdGYsbXlfcHJvY2Vzc29yKQoh
ICAgICAgICAgIC0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiEgVGhpcyByb3V0aW5lIHNldHMgZmxhZ3MgdG8gaW5kaWNhdGUg
d2hldGhlciBvciBub3QgdG8gc2VuZCBhbiBlbGVtZW50CiEgdG8gdGhlIG1hc3RlciBmb3IgdGhl
IGNvbXBvc2l0ZSBncmlkIGdyYXBoaWNzLiAgU2VuZCBpdCBpZiBpdCBvciBhbnkKISBvZiBpdHMg
ZGVzY2VuZGVudHMgYXJlIG93bmVkIGJ5IG15X3Byb2Nlc3NvcgohLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBEdW1teSBhcmd1bWVudHMKCnR5cGUo
Z3JpZF90eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCmxvZ2ljYWwoc21hbGxfbG9naWNhbCksIGlu
dGVudChpbm91dCkgOjogc2VuZGl0KDopLCBzZW5kaXRlKDopLCBzZW5kaXRmKDopCmludGVnZXIs
IGludGVudChpbikgOjogbXlfcHJvY2Vzc29yCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwgdmFyaWFibGVzOgoKaW50ZWdlciA6OiBl
bGVtCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiEgQmVnaW4gZXhlY3V0YWJsZSBjb2RlCgohIFRFTVAzRCBhcyBsb25nIGFzIGl0IGlzIG5vdCBw
YXJhbGxlbCB3ZSBzZW5kIGV2ZXJ5dGhpbmcKCmlmIChnbG9iYWxfZWxlbWVudF9raW5kID09IFRF
VFJBSEVEUkFMX0VMRU1FTlQpIHRoZW4KICAgaWYgKG15X3Byb2Nlc3NvciA9PSAwIC5vci4gbXlf
cHJvY2Vzc29yID09IDEpIHRoZW4KICAgICAgc2VuZGl0ID0gLnRydWUuOyBzZW5kaXRlID0gLnRy
dWUuOyBzZW5kaXRmID0gLnRydWUuCiAgICAgIHJldHVybgogICBlbHNlCiAgICAgIGNhbGwgZmF0
YWwoIm5lZWQgdG8gZmluaXNoIHdyaXRpbmcgc2V0X3NlbmRpdF9yZWN1ciBmb3IgM0QiKQogICAg
ICBzdG9wCiAgIGVuZGlmCmVuZGlmCgplbGVtID0gZ3JpZCVoZWFkX2xldmVsX2VsZW0oMSkKZG8g
d2hpbGUgKGVsZW0gLz0gRU5EX09GX0xJU1QpCiAgIGNhbGwgc2V0X3NlbmRpdF9yZWN1cihncmlk
LHNlbmRpdCxzZW5kaXRlLHNlbmRpdGYsbXlfcHJvY2Vzc29yLGVsZW0pCiAgIGVsZW0gPSBncmlk
JWVsZW1lbnQoZWxlbSklbmV4dAplbmQgZG8KZW5kIHN1YnJvdXRpbmUgc2V0X3NlbmRpdAoKISAg
ICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLQpyZWN1cnNpdmUgc3Vicm91dGluZSBz
ZXRfc2VuZGl0X3JlY3VyKGdyaWQsc2VuZGl0LHNlbmRpdGUsc2VuZGl0ZiwgJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15X3Byb2Nlc3NvcixzdWJyb290KQohICAgICAg
ICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIFRoaXMgcm91dGluZSByZWN1cnNpdmVseSB0
cmF2ZXJzZXMgdGhlIHRyZWUgdG8gZG8gdGhlIHdvcmsgb2Ygc2V0X3NlbmRpdAohLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBEdW1teSBhcmd1bWVu
dHMKCnR5cGUoZ3JpZF90eXBlKSwgaW50ZW50KGluKSA6OiBncmlkCmxvZ2ljYWwoc21hbGxfbG9n
aWNhbCksIGludGVudChpbm91dCkgOjogc2VuZGl0KDopLCBzZW5kaXRlKDopLCBzZW5kaXRmKDop
CmludGVnZXIsIGludGVudChpbikgOjogbXlfcHJvY2Vzc29yLCBzdWJyb290CiEtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwgdmFyaWFi
bGVzOgoKaW50ZWdlciA6OiBjaGlsZChNQVhfQ0hJTEQpLCBpLCBhbGxjKE1BWF9DSElMRCksIGZh
Y2UsIGVkZ2UsIGNlZGdlCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiEgQmVnaW4gZXhlY3V0YWJsZSBjb2RlCgphbGxjID0gQUxMX0NISUxEUkVO
CmNoaWxkID0gZ2V0X2NoaWxkX2xpZChncmlkJWVsZW1lbnQoc3Vicm9vdCklZ2lkLGFsbGMsZ3Jp
ZCVlbGVtX2hhc2gpCgppZiAoY2hpbGQoMSkgPT0gTk9fQ0hJTEQpIHRoZW4KCiEgZm9yIGEgbGVh
ZiwgcmV0dXJuIHdoZXRoZXIgb3Igbm90IEkgb3duIGl0CgogICBzZW5kaXQoc3Vicm9vdCkgPSBn
cmlkJWVsZW1lbnQoc3Vicm9vdCklaW93bgogICBkbyBpPTEsRkFDRVNfUEVSX0VMRU1FTlQKICAg
ICAgZmFjZSA9IGdyaWQlZWxlbWVudChzdWJyb290KSVmYWNlKGkpCiAgICAgIHNlbmRpdGYoZmFj
ZSkgPSBncmlkJWVsZW1lbnQoZ3JpZCVmYWNlKGZhY2UpJWFzc29jX2VsZW0pJWlvd24KICAgZW5k
IGRvCiAgIGRvIGk9MSxFREdFU19QRVJfRUxFTUVOVAogICAgICBlZGdlID0gZ3JpZCVlbGVtZW50
KHN1YnJvb3QpJWVkZ2UoaSkKICAgICAgc2VuZGl0ZShlZGdlKSA9IGdyaWQlZWxlbWVudChncmlk
JWVkZ2UoZWRnZSklYXNzb2NfZWxlbSklaW93bgogICBlbmQgZG8KCmVsc2UKCiEgb3RoZXJ3aXNl
LCBzZWUgaWYgYW55IG9mIHRoZSBjaGlsZHJlbiBhcmUgb3duZWQKISBSRVNUUklDVElPTiBiaXNl
Y3RlZCB0cmlhbmdsZXM7IG9ubHkgdGhlIHRoaXJkIGVkZ2UgbmVlZHMgY2hpbGRyZW4gY2hlY2tl
ZAohIFRFTVAzRCBmb3IgdGV0cmFoZWRyYSwgSSBuZWVkIHRvIGtub3cgd2hpY2ggZWRnZSBpcyB0
aGUgYmlzZWN0aW9uIGVkZ2UgYW5kCiEgICAgICAgIHdoaWNoIHR3byBmYWNlcyBhcmUgYmlzZWN0
ZWQgYW5kIHdoaWNoIGVkZ2VzIGFuZCBmYWNlcyBhcmUgdGhlCiEgICAgICAgIGNoaWxkcmVuIG9m
IHRoZW0KICAgaWYgKGdsb2JhbF9lbGVtZW50X2tpbmQgPT0gVEVUUkFIRURSQUxfRUxFTUVOVCkg
dGhlbgogICAgICBjYWxsIGZhdGFsKCJuZWVkIHRvIGZpbmlzaCB3cml0aW5nIHNldF9zZW5kaXRf
cmVjdXIgZm9yIDNEIikKICAgICAgc3RvcAogICBlbmRpZgoKICAgc2VuZGl0KHN1YnJvb3QpID0g
LmZhbHNlLgogICBlZGdlID0gZ3JpZCVlbGVtZW50KHN1YnJvb3QpJWVkZ2UoMykKICAgc2VuZGl0
ZShlZGdlKSA9IC5mYWxzZS4KICAgZG8gaT0xLE1BWF9DSElMRAogICAgICBpZiAoY2hpbGQoaSkg
Lz0gTk9fQ0hJTEQpIHRoZW4KICAgICAgICAgY2FsbCBzZXRfc2VuZGl0X3JlY3VyKGdyaWQsc2Vu
ZGl0LHNlbmRpdGUsc2VuZGl0ZixteV9wcm9jZXNzb3IsICYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkKGkpKQogICAgICAgICBzZW5kaXQoc3Vicm9vdCkgPSBzZW5kaXQoc3Vi
cm9vdCkgLm9yLiBzZW5kaXQoY2hpbGQoaSkpCiAgICAgICAgIGNlZGdlID0gZ3JpZCVlbGVtZW50
KGNoaWxkKGkpKSVlZGdlKDIpCiAgICAgICAgIGlmIChzZW5kaXRlKGNlZGdlKSkgc2VuZGl0ZShl
ZGdlKSA9IC50cnVlLgogICAgICBlbmRpZgogICBlbmQgZG8KCmVuZGlmCgplbmQgc3Vicm91dGlu
ZSBzZXRfc2VuZGl0X3JlY3VyCgohICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1
YnJvdXRpbmUgY2hpbGRfb3JkZXJfZnJvbV96b2x0YW4oZ3JpZCxwcm9jcyxsYixwYXJ0aXRpb25f
bWV0aG9kLCAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpbGxfc2VxdWVu
dGlhbCkKISAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBUaGlzIHJvdXRpbmUgZ2V0
cyB0aGUgY2hpbGQgb3JkZXIgKGZvciB0aGUgcmVmdHJlZSBzZmMpIGZyb20gWm9sdGFuLgohLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBEdW1teSBh
cmd1bWVudHMKCnR5cGUoZ3JpZF90eXBlKSwgaW50ZW50KGlub3V0KSA6OiBncmlkCnR5cGUgKHBy
b2NfaW5mbyksIGludGVudChpbikgOjogcHJvY3MKdHlwZShab2x0YW5fU3RydWN0KSwgcG9pbnRl
ciA6OiBsYgppbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IHBhcnRpdGlvbl9tZXRob2QKbG9naWNhbCwg
aW50ZW50KGluKSA6OiBzdGlsbF9zZXF1ZW50aWFsCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwgdmFyaWFibGVzOgoKaW50ZWdlciA6
OiBpLCBuZWxlbV9pbml0LCBtYXhlbGVtX2luaXQsIGNoaWxkMSwgY2hpbGQyLCBwYXJlbnQsICYK
ICAgICAgICAgICBhc3RhdCwgamVyciwgYWxsYyhNQVhfQ0hJTEQpLCBjaGlsZHJlbihNQVhfQ0hJ
TEQpCmludGVnZXIsIGFsbG9jYXRhYmxlIDo6IG9yZGVyKDopCnR5cGUoaGFzaF9rZXkpIDo6IHRl
bXBrZXkKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KISBCZWdpbiBleGVjdXRhYmxlIGNvZGUKCiEgbXVzdCBiZSB1c2luZyBab2x0YW4gUkVGVFJF
RSBhcyB0aGUgcGFydGl0aW9uIG1ldGhvZAoKaWYgKHBhcnRpdGlvbl9tZXRob2QgLz0gWk9MVEFO
X1JFRlRSRUUpIHJldHVybgoKISBjb3VudCBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGluaXRp
YWwgZ3JpZAoKbmVsZW1faW5pdCA9IDAKbWF4ZWxlbV9pbml0ID0gMAppID0gZ3JpZCVoZWFkX2xl
dmVsX2VsZW0oMSkKZG8gd2hpbGUgKGkgLz0gRU5EX09GX0xJU1QpCiAgIG5lbGVtX2luaXQgPSBu
ZWxlbV9pbml0ICsgMQogICBtYXhlbGVtX2luaXQgPSBtYXgobWF4ZWxlbV9pbml0LGkpCiAgIGkg
PSBncmlkJWVsZW1lbnQoaSklbmV4dAplbmQgZG8KCiEgc3BhY2UgZm9yIG9yZGVyIHJldHVybmVk
IGJ5IHpvbHRhbiBhbmQgcmV0YWluaW5nIGVsZW1lbnQgbGlua2VkIGxpc3QKCmFsbG9jYXRlKG9y
ZGVyKEtFWV9TSVpFKigxICsgMypuZWxlbV9pbml0ICsgNyooZ3JpZCVuZWxlbS1ncmlkJW5lbGVt
X2xlYWYpKSksICYKICAgICAgICAgc3RhdD1hc3RhdCkKaWYgKGFzdGF0IC89IDApIHRoZW4KICAg
aWVyciA9IEFMTE9DX0ZBSUxFRAogICBjYWxsIGZhdGFsKCJhbGxvY2F0aW9uIGZhaWxlZCBpbiBj
aGlsZF9vcmRlcl9mcm9tX3pvbHRhbiIscHJvY3M9cHJvY3MpCiAgIHJldHVybgplbmRpZgoKISBn
ZXQgdGhlIG9yZGVyIGZyb20gem9sdGFuCgpvcmRlciA9IC0xCmNhbGwgem9sdGFuX2NoaWxkX29y
ZGVyKG9yZGVyLGplcnIsbGIsZ3JpZCxwcm9jcyxzdGlsbF9zZXF1ZW50aWFsKQppZiAoamVyciAv
PSAwKSB0aGVuCiAgIGNhbGwgd2FybmluZygiem9sdGFuX2NoaWxkX29yZGVyIHJldHVybmVkIGVy
cm9yLiIsICYKICAgICAgICAgICAgICAgICJSZXRhaW5pbmcgUEhBTUwncyBjaGlsZCBvcmRlci4i
LCgvamVyci8pKQogICBkZWFsbG9jYXRlKG9yZGVyLHN0YXQ9YXN0YXQpCiAgIHJldHVybgplbmRp
ZgoKISB0aGUgZmlyc3QgMStuZWxlbV9pbml0IGFyZSB0aGUgcm9vdCBhbmQgaXQncyBjaGlsZHJl
biAoaW5pdGlhbCBncmlkKS4gU2tpcAohIHRoZSByb290IGFuZCByZW9yZGVyIHRoZSBpbml0aWFs
IGdyaWQgYnkgcmVzZXR0aW5nIHByZXZpb3VzL25leHQKCmkgPSBLRVlfU0laRSsxCnRlbXBrZXkg
PSBoYXNoX3VucGFja19rZXkob3JkZXIsaSkKY2hpbGQxID0gaGFzaF9kZWNvZGVfa2V5KHRlbXBr
ZXksIGdyaWQlZWxlbV9oYXNoKQppZiAoY2hpbGQxID09IEhBU0hfTk9UX0ZPVU5EKSB0aGVuCiAg
IGNhbGwgZmF0YWwoInpvbHRhbiBjaGlsZCBvcmRlciByZXR1cm5lZCB1bmtub3duIEdJRCIscHJv
Y3M9cHJvY3MpCiAgIHN0b3AKZW5kaWYKZ3JpZCVoZWFkX2xldmVsX2VsZW0oMSkgPSBjaGlsZDEK
Z3JpZCVlbGVtZW50KGNoaWxkMSklcHJldmlvdXMgPSBFTkRfT0ZfTElTVAp0ZW1wa2V5ID0gaGFz
aF91bnBhY2tfa2V5KG9yZGVyLGkrS0VZX1NJWkUpCmdyaWQlZWxlbWVudChjaGlsZDEpJWluID0g
aGFzaF9kZWNvZGVfa2V5KHRlbXBrZXksIGdyaWQldmVydF9oYXNoKQppZiAoZ3JpZCVlbGVtZW50
KGNoaWxkMSklaW4gPT0gSEFTSF9OT1RfRk9VTkQpIHRoZW4KICAgY2FsbCBmYXRhbCgiem9sdGFu
IGNoaWxkIG9yZGVyIHJldHVybmVkIHVua25vd24gR0lEIGZvciBpbiIscHJvY3M9cHJvY3MpCiAg
IHN0b3AKZW5kaWYKdGVtcGtleSA9IGhhc2hfdW5wYWNrX2tleShvcmRlcixpKzIqS0VZX1NJWkUp
CmdyaWQlZWxlbWVudChjaGlsZDEpJW91dCA9IGhhc2hfZGVjb2RlX2tleSh0ZW1wa2V5LCBncmlk
JXZlcnRfaGFzaCkKaWYgKGdyaWQlZWxlbWVudChjaGlsZDEpJW91dCA9PSBIQVNIX05PVF9GT1VO
RCkgdGhlbgogICBjYWxsIGZhdGFsKCJ6b2x0YW4gY2hpbGQgb3JkZXIgcmV0dXJuZWQgdW5rbm93
biBHSUQgZm9yIG91dCIscHJvY3M9cHJvY3MpCiAgIHN0b3AKZW5kaWYKY2hpbGQyID0gY2hpbGQx
CmRvIGk9NCpLRVlfU0laRSsxLCgzKm5lbGVtX2luaXQrMSkqS0VZX1NJWkUsMypLRVlfU0laRQog
ICB0ZW1wa2V5ID0gaGFzaF91bnBhY2tfa2V5KG9yZGVyLGkpCiAgIGNoaWxkMSA9IGhhc2hfZGVj
b2RlX2tleSh0ZW1wa2V5LCBncmlkJWVsZW1faGFzaCkKICAgaWYgKGNoaWxkMSA9PSBIQVNIX05P
VF9GT1VORCkgdGhlbgogICAgICBjYWxsIGZhdGFsKCJ6b2x0YW4gY2hpbGQgb3JkZXIgcmV0dXJu
ZWQgdW5rbm93biBHSUQiLHByb2NzPXByb2NzKQogICAgICBzdG9wCiAgIGVuZGlmCiAgIGdyaWQl
ZWxlbWVudChjaGlsZDIpJW5leHQgPSBjaGlsZDEKICAgZ3JpZCVlbGVtZW50KGNoaWxkMSklcHJl
dmlvdXMgPSBjaGlsZDIKICAgdGVtcGtleSA9IGhhc2hfdW5wYWNrX2tleShvcmRlcixpK0tFWV9T
SVpFKQogICBncmlkJWVsZW1lbnQoY2hpbGQxKSVpbiA9IGhhc2hfZGVjb2RlX2tleSh0ZW1wa2V5
LCBncmlkJXZlcnRfaGFzaCkKICAgaWYgKGdyaWQlZWxlbWVudChjaGlsZDEpJWluID09IEhBU0hf
Tk9UX0ZPVU5EKSB0aGVuCiAgICAgIGNhbGwgZmF0YWwoInpvbHRhbiBjaGlsZCBvcmRlciByZXR1
cm5lZCB1bmtub3duIEdJRCBmb3IgaW4iLHByb2NzPXByb2NzKQogICAgICBzdG9wCiAgIGVuZGlm
CiAgIHRlbXBrZXkgPSBoYXNoX3VucGFja19rZXkob3JkZXIsaSsyKktFWV9TSVpFKQogICBncmlk
JWVsZW1lbnQoY2hpbGQxKSVvdXQgPSBoYXNoX2RlY29kZV9rZXkodGVtcGtleSwgZ3JpZCV2ZXJ0
X2hhc2gpCiAgIGlmIChncmlkJWVsZW1lbnQoY2hpbGQxKSVvdXQgPT0gSEFTSF9OT1RfRk9VTkQp
IHRoZW4KICAgICAgY2FsbCBmYXRhbCgiem9sdGFuIGNoaWxkIG9yZGVyIHJldHVybmVkIHVua25v
d24gR0lEIGZvciBvdXQiLHByb2NzPXByb2NzKQogICAgICBzdG9wCiAgIGVuZGlmCiAgIGNoaWxk
MiA9IGNoaWxkMQplbmQgZG8KZ3JpZCVlbGVtZW50KGNoaWxkMiklbmV4dCA9IEVORF9PRl9MSVNU
CmkgPSAoMypuZWxlbV9pbml0KzEpKktFWV9TSVpFICsgMQoKISBkb24ndCBnZXQgcmVmaW5lbWVu
dHMgaWYgc3RpbGwgc2VxdWVudGlhbCBhbmQgbm90IHByb2Nlc3NvciAxCmlmIChzdGlsbF9zZXF1
ZW50aWFsIC5hbmQuIG15X3Byb2MocHJvY3MpIC89IDEpIGkgPSBzaXplKG9yZGVyKSsxCgohIGdv
IHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGxpc3QgcmV0dXJuZWQgYnkgWm9sdGFuIGFuZCByZXNl
dCBvcmRlcgohIHRvIGNvcnJlc3BvbmQgdG8gdGhlIG9yZGVyIG9mIHRoZSBjaGlsZHJlbgoKZG8g
d2hpbGUgKGkgPCBzaXplKG9yZGVyKSkKISBSRVNUUklDVElPTiBiaXNlY3Rpb24KICAgdGVtcGtl
eSA9IGhhc2hfdW5wYWNrX2tleShvcmRlcixpKQogICBpZiAodGVtcGtleSA9PSAtMSkgdGhlbgog
ICAgICBpID0gaSs3KktFWV9TSVpFCiAgICAgIGN5Y2xlCiAgIGVuZGlmCiAgIHBhcmVudCA9IGhh
c2hfZGVjb2RlX2tleSh0ZW1wa2V5LCBncmlkJWVsZW1faGFzaCkKICAgaWYgKHBhcmVudCA9PSBI
QVNIX05PVF9GT1VORCkgdGhlbgogICAgICBjYWxsIGZhdGFsKCJ6b2x0YW4gY2hpbGQgb3JkZXIg
cmV0dXJuZWQgdW5rbm93biBHSUQgZm9yIHBhcmVudCIscHJvY3M9cHJvY3MpCiAgICAgIHN0b3AK
ICAgZW5kaWYKICAgdGVtcGtleSA9IGhhc2hfdW5wYWNrX2tleShvcmRlcixpK0tFWV9TSVpFKQog
ICBjaGlsZDEgPSBoYXNoX2RlY29kZV9rZXkodGVtcGtleSwgZ3JpZCVlbGVtX2hhc2gpCiAgIGlm
IChjaGlsZDEgPT0gSEFTSF9OT1RfRk9VTkQpIHRoZW4KICAgICAgY2FsbCBmYXRhbCgiem9sdGFu
IGNoaWxkIG9yZGVyIHJldHVybmVkIHVua25vd24gR0lEIGZvciBjaGlsZDEiLHByb2NzPXByb2Nz
KQogICAgICBzdG9wCiAgIGVuZGlmCiAgIHRlbXBrZXkgPSBoYXNoX3VucGFja19rZXkob3JkZXIs
aSsyKktFWV9TSVpFKQogICBncmlkJWVsZW1lbnQoY2hpbGQxKSVpbiA9IGhhc2hfZGVjb2RlX2tl
eSh0ZW1wa2V5LCBncmlkJXZlcnRfaGFzaCkKICAgaWYgKGdyaWQlZWxlbWVudChjaGlsZDEpJWlu
ID09IEhBU0hfTk9UX0ZPVU5EKSB0aGVuCiAgICAgIGNhbGwgZmF0YWwoInpvbHRhbiBjaGlsZCBv
cmRlciByZXR1cm5lZCB1bmtub3duIEdJRCBmb3IgaW4iLHByb2NzPXByb2NzKQogICAgICBzdG9w
CiAgIGVuZGlmCiAgIHRlbXBrZXkgPSBoYXNoX3VucGFja19rZXkob3JkZXIsaSszKktFWV9TSVpF
KQogICBncmlkJWVsZW1lbnQoY2hpbGQxKSVvdXQgPSBoYXNoX2RlY29kZV9rZXkodGVtcGtleSwg
Z3JpZCV2ZXJ0X2hhc2gpCiAgIGlmIChncmlkJWVsZW1lbnQoY2hpbGQxKSVvdXQgPT0gSEFTSF9O
T1RfRk9VTkQpIHRoZW4KICAgICAgY2FsbCBmYXRhbCgiem9sdGFuIGNoaWxkIG9yZGVyIHJldHVy
bmVkIHVua25vd24gR0lEIGZvciBvdXQiLHByb2NzPXByb2NzKQogICAgICBzdG9wCiAgIGVuZGlm
CiAgIHRlbXBrZXkgPSBoYXNoX3VucGFja19rZXkob3JkZXIsaSs0KktFWV9TSVpFKQogICBjaGls
ZDIgPSBoYXNoX2RlY29kZV9rZXkodGVtcGtleSwgZ3JpZCVlbGVtX2hhc2gpCiAgIGlmIChjaGls
ZDIgPT0gSEFTSF9OT1RfRk9VTkQpIHRoZW4KICAgICAgY2FsbCBmYXRhbCgiem9sdGFuIGNoaWxk
IG9yZGVyIHJldHVybmVkIHVua25vd24gR0lEIGZvciBjaGlsZDIiLHByb2NzPXByb2NzKQogICAg
ICBzdG9wCiAgIGVuZGlmCiAgIHRlbXBrZXkgPSBoYXNoX3VucGFja19rZXkob3JkZXIsaSs1KktF
WV9TSVpFKQogICBncmlkJWVsZW1lbnQoY2hpbGQyKSVpbiA9IGhhc2hfZGVjb2RlX2tleSh0ZW1w
a2V5LCBncmlkJXZlcnRfaGFzaCkKICAgaWYgKGdyaWQlZWxlbWVudChjaGlsZDIpJWluID09IEhB
U0hfTk9UX0ZPVU5EKSB0aGVuCiAgICAgIGNhbGwgZmF0YWwoInpvbHRhbiBjaGlsZCBvcmRlciBy
ZXR1cm5lZCB1bmtub3duIEdJRCBmb3IgaW4iLHByb2NzPXByb2NzKQogICAgICBzdG9wCiAgIGVu
ZGlmCiAgIHRlbXBrZXkgPSBoYXNoX3VucGFja19rZXkob3JkZXIsaSs2KktFWV9TSVpFKQogICBn
cmlkJWVsZW1lbnQoY2hpbGQyKSVvdXQgPSBoYXNoX2RlY29kZV9rZXkodGVtcGtleSwgZ3JpZCV2
ZXJ0X2hhc2gpCiAgIGlmIChncmlkJWVsZW1lbnQoY2hpbGQyKSVvdXQgPT0gSEFTSF9OT1RfRk9V
TkQpIHRoZW4KICAgICAgY2FsbCBmYXRhbCgiem9sdGFuIGNoaWxkIG9yZGVyIHJldHVybmVkIHVu
a25vd24gR0lEIGZvciBvdXQiLHByb2NzPXByb2NzKQogICAgICBzdG9wCiAgIGVuZGlmCiAgIGFs
bGMgPSBBTExfQ0hJTERSRU4KICAgY2hpbGRyZW4gPSBnZXRfY2hpbGRfbGlkKGdyaWQlZWxlbWVu
dChwYXJlbnQpJWdpZCxhbGxjLGdyaWQlZWxlbV9oYXNoKQogICBpZiAoY2hpbGQxID09IGNoaWxk
cmVuKDEpIC5hbmQuIGNoaWxkMiA9PSBjaGlsZHJlbigyKSkgdGhlbgogICAgICBncmlkJWVsZW1l
bnQocGFyZW50KSVvcmRlciA9ICgvMSwyLykKICAgZWxzZWlmIChjaGlsZDIgPT0gY2hpbGRyZW4o
MSkgLmFuZC4gY2hpbGQxID09IGNoaWxkcmVuKDIpKSB0aGVuCiAgICAgIGdyaWQlZWxlbWVudChw
YXJlbnQpJW9yZGVyID0gKC8yLDEvKQogICBlbHNlCiAgICAgIGNhbGwgd2FybmluZygiaW4gZHJh
d19ncmlkIHpvbHRhbiBkaWQgbm90IHJldHVybiB0aGUgcmlnaHQgY2hpbGRyZW4iLCAmCiAgICAg
ICAgICAgICAgICAgICAicGFyZW50LCBjaGlsZHJlbiwgem9sdGFuIiwgJgogICAgICAgICAgICAg
ICAgICAgaW50bGlzdD0oL3BhcmVudCxjaGlsZHJlbixjaGlsZDEsY2hpbGQyLykpCiAgIGVuZGlm
CiAgIGkgPSBpKzcqS0VZX1NJWkUKZW5kIGRvCgpkZWFsbG9jYXRlKG9yZGVyLHN0YXQ9YXN0YXQp
CgplbmQgc3Vicm91dGluZSBjaGlsZF9vcmRlcl9mcm9tX3pvbHRhbgoKISAgICAgICAgICAtLS0t
LS0tLS0tCnN1YnJvdXRpbmUgc3RvcmVfZ3JpZChncmlkLHByb2NzLHN0aWxsX3NlcXVlbnRpYWws
dW5pdCxmbXQsY29tcCxlaWdlbiwgJgogICAgICAgICAgICAgICAgICAgICAgbm9ib3VuZGFyeSxu
b3RhZ3Msb25seV9nbXNoKQohICAgICAgICAgIC0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgVGhpcyByb3V0aW5lIGNhbGxz
IHRoZSBhcHByb3ByaWF0ZSByb3V0aW5lIHRvIHNhdmUgdGhlIGdyaWQgdG8gYSBmaWxlCiEgaW4g
dGhlIHJlcXVlc3RlZCBmb3JtYXQKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiEgRHVtbXkgYXJndW1lbnRzCgp0eXBlKGdyaWRfdHlwZSksIGludGVu
dChpbikgOjogZ3JpZAp0eXBlKHByb2NfaW5mbyksIGludGVudChpbikgOjogcHJvY3MKbG9naWNh
bCwgaW50ZW50KGluKSA6OiBzdGlsbF9zZXF1ZW50aWFsCmludGVnZXIsIGludGVudChpbikgOjog
dW5pdCwgZm10LCBjb21wLCBlaWdlbgpsb2dpY2FsLCBpbnRlbnQoaW4pIDo6IG5vYm91bmRhcnks
IG5vdGFncywgb25seV9nbXNoCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwgdmFyaWFibGVzOgoKIS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBCZWdpbiBleGVjdXRhYmxlIGNvZGUK
CnNlbGVjdCBjYXNlKGZtdCkKY2FzZSAoR1JJREZJTEVfUE9MWSwgR1JJREZJTEVfUE9MWV9TT0xO
KQogICBpZiAoZ2xvYmFsX2VsZW1lbnRfa2luZCA9PSBUUklBTkdVTEFSX0VMRU1FTlQpIHRoZW4K
ICAgICAgY2FsbCBzdG9yZV9ncmlkX3BvbHkoZ3JpZCxwcm9jcyxzdGlsbF9zZXF1ZW50aWFsLHVu
aXQsZm10LGNvbXAsZWlnZW4pCiAgIGVsc2UKICAgICAgY2FsbCB3YXJuaW5nKCJjYW4gb25seSBz
YXZlIGEgLnBvbHkgZmlsZSB3aXRoIHRyaWFuZ3VsYXIgZWxlbWVudHM7IGdyaWQgbm90IHNhdmVk
IikKICAgICAgcmV0dXJuCiAgIGVuZGlmCmNhc2UgKEdSSURGSUxFX01TSCwgR1JJREZJTEVfTVNI
X1NPTE4pCiAgIGNhbGwgc3RvcmVfZ3JpZF9tc2goZ3JpZCxwcm9jcyxzdGlsbF9zZXF1ZW50aWFs
LHVuaXQsZm10LGNvbXAsZWlnZW4sICYKICAgICAgICAgICAgICAgICAgICAgICBub2JvdW5kYXJ5
LG5vdGFncyxvbmx5X2dtc2gpCmNhc2UgZGVmYXVsdAogICBpZXJyID0gVVNFUl9JTlBVVF9FUlJP
UgogICBjYWxsIGZhdGFsKCJ1bmtub3duIGZvcm1hdCByZXF1ZXN0ZWQgaW4gc3RvcmVfZ3JpZCIp
CiAgIHN0b3AKZW5kIHNlbGVjdAoKZW5kIHN1YnJvdXRpbmUgc3RvcmVfZ3JpZAoKISAgICAgICAg
ICAtLS0tLS0tLS0tLS0tLS0Kc3Vicm91dGluZSBzdG9yZV9ncmlkX3BvbHkoZ3JpZCxwcm9jcyxz
dGlsbF9zZXF1ZW50aWFsLHVuaXQsZm10LGNvbXAsZWlnZW4pCiEgICAgICAgICAgLS0tLS0tLS0t
LS0tLS0tCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQohIFRoaXMgcm91dGluZSBzdG9yZXMgYSB0cmlhbmdsZSBncmlkIGluIHRyaWFuZ2xlJ3Mg
LnBvbHkgZm9ybWF0LgohIElmIGZtdCBpcyBHUklERklMRV9QT0xZX1NPTE4gdGhlbiBvbmUgb3Ig
bW9yZSBzb2x1dGlvbnMgYXJlIHNhdmVkIGFzCiEgYXR0cmlidXRlcyBvZiB0aGUgdmVydGljZXMu
ICBJZiBjb21wIGlzIC0xLCBhbGwgY29tcG9uZW50cyBhcmUgc2F2ZWQsCiEgb3RoZXJ3aXNlIGNv
bXAgdGVsbHMgd2hpY2ggY29tcG9uZW50IHRvIHNhdmUuICBTYW1lIHdpdGggZWlnZW4uCiEtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgohLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQohIER1bW15IGFy
Z3VtZW50cwoKdHlwZShncmlkX3R5cGUpLCBpbnRlbnQoaW4pIDo6IGdyaWQKdHlwZShwcm9jX2lu
Zm8pLCBpbnRlbnQoaW4pIDo6IHByb2NzCmxvZ2ljYWwsIGludGVudChpbikgOjogc3RpbGxfc2Vx
dWVudGlhbAppbnRlZ2VyLCBpbnRlbnQoaW4pIDo6IHVuaXQsIGZtdCwgY29tcCwgZWlnZW4KIS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBMb2Nh
bCB2YXJpYWJsZXM6CgppbnRlZ2VyIDo6IG15cHJvYywgbmksIG5yLCBhc3RhdCwgaSwgbGV2LCB2
ZXJ0LCBlcnJjb2RlLCBwcm9jLCBuc29sdXQsICYKICAgICAgICAgICBpcG9pbnQsIHJwb2ludCwg
ZWxlbSwgZWRnZSwgbmhvbGUsIGhvbGUsIGssIHBpZWNlLCBpdmVydAppbnRlZ2VyLCBhbGxvY2F0
YWJsZSA6OiB2ZXJ0bGlzdCg6KSwgaXBlcm0oOiksIGVuZF9ob2xlKDopCmxvZ2ljYWwgOjogaXBy
aW50CmxvZ2ljYWwoc21hbGxfbG9naWNhbCksIGFsbG9jYXRhYmxlIDo6IHNlZW5fZWRnZSg6KQpj
aGFyYWN0ZXIobGVuPTI4KSA6OiBmbWF0CmludGVnZXIsIGFsbG9jYXRhYmxlLCB0YXJnZXQgOjog
aXNlbmQoOikKaW50ZWdlciwgcG9pbnRlciA6OiBpcmVjdig6KQpyZWFsKG15X3JlYWwpIDo6IHgx
LCB5MSwgeDIsIHkyCnJlYWwobXlfcmVhbCksIGFsbG9jYXRhYmxlLCB0YXJnZXQgOjogcnNlbmQo
OikKcmVhbChteV9yZWFsKSwgcG9pbnRlciA6OiBycmVjdig6KQpsb2dpY2FsKHNtYWxsX2xvZ2lj
YWwpIDo6IHZpc2l0ZWRfdmVydChncmlkJWJpZ2dlc3RfdmVydCkKIS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KISBCZWdpbiBleGVjdXRhYmxlIGNv
ZGUKCm15cHJvYyA9IG15X3Byb2MocHJvY3MpCgohIFRFTVAgcmVxdWlyZXMgb25lIHByb2Nlc3Nv
ciwgYnV0IGl0IGlzIE9LIGlmIGl0IGlzIHN0aWxsIHNlcXVlbnRpYWwKCmlmIChudW1fcHJvYyhw
cm9jcykgPiAxIC5hbmQuIC5ub3QuIHN0aWxsX3NlcXVlbnRpYWwpIHRoZW4KICAgcHJpbnQgKiwi
b25seSBvbmUgcHJvY2Vzc29yIGlmIHNhdmluZyB0aGUgZ3JpZCBhcyAucG9seSIKICAgc3RvcApl
bmRpZgppZiAobXlwcm9jID4gMSkgcmV0dXJuCgohIFNsYXZlIDEgaGFzIHRoZSBncmlkLiAgRm9y
IGVhY2ggc2VjdGlvbiwgcGFjayBpdCBpbnRvIGEgbWVzc2FnZS4gIElmIHRoZQohIGNvbXBpbGF0
aW9uIGlzIHNlcXVlbnRpYWwsIHRoZW4gc2xhdmUgMSBzZXRzIHJlY3YgdG8gcG9pbnQgdG8gc2Vu
ZCBhbmQKISBwcmludHMuICBJZiBub3QsIHRoZW4gc2xhdmUgMSBzZW5kcyBzZW5kIHRvIHJlY3Yg
b24gdGhlIG1hc3RlciBhbmQgdGhlCiEgbWFzdGVyIHByaW50cy4KCmlwcmludCA9IChwYXJhbGxl
bCA9PSBTRVFVRU5USUFMIC5hbmQuIG15cHJvYyA9PSAxKSAub3IuICYKICAgICAgICAgKHBhcmFs
bGVsIC89IFNFUVVFTlRJQUwgLmFuZC4gbXlwcm9jID09IE1BU1RFUikKbnVsbGlmeShpcmVjdixy
cmVjdikKCiEgVGhlIGRlc2NyaXB0aW9uIG9mIHRyaWFuZ2xlIC5wb2x5IGFuZCAubm9kZSBmaWxl
cyBzYXlzIHRoZSB2ZXJ0aWNlcyBtdXN0CiEgYmUgaW4gaW5jcmVhc2luZyBvcmRlciB3aXRoIG5v
IGdhcHMuICBFeHBlcmltZW50aW5nIGNvbmZpcm1lZCB0aGlzIG11c3QKISBiZSB0aGUgY2FzZSBm
b3Igc2hvd21lIGFuZCB0cmlhbmdsZSB0byB3b3JrIGNvcnJlY3RseS4gIE1ha2Ugc3VyZSB0aGlz
CiEgaXMgbWV0IGJ5IDEpIG1ha2UgYSBsaXN0IG9mIHRoZSB2ZXJ0aWNlcywgMikgc29ydCB0aGUg
dmVydGljZXMsIGFuZAohIDMpIG1ha2Ugc3VyZSB0aGUgbGFzdCB2ZXJ0ZXggaW4gdGhlIGxpc3Qg
aXMgdGhlIGxlbmd0aCBvZiB0aGUgbGlzdAoKaWYgKG15cHJvYyA9PSAxKSB0aGVuCgogICBhbGxv
Y2F0ZSh2ZXJ0bGlzdChncmlkJW52ZXJ0KSxpcGVybShncmlkJW52ZXJ0KSxzdGF0PWFzdGF0KQog
ICBpZiAoYXN0YXQgLz0gMCkgdGhlbgogICAgICBpZXJyID0gQUxMT0NfRkFJTEVECiAgICAgIGNh
bGwgZmF0YWwoImFsbG9jYXRpb24gZmFpbGVkIGluIHN0b3JlX2dyaWRfcG9seSIscHJvY3M9cHJv
Y3MpCiAgICAgIHN0b3AKICAgZW5kaWYKCiAgIGkgPSAwCiAgIHZpc2l0ZWRfdmVydCA9IC5mYWxz
ZS4KICAgZG8gbGV2PTEsZ3JpZCVubGV2CiAgICAgIGVsZW0gPSBncmlkJWhlYWRfbGV2ZWxfZWxl
bShsZXYpCiAgICAgIGRvIHdoaWxlIChlbGVtIC89IEVORF9PRl9MSVNUKQogICAgICAgICBkbyBp
dmVydD0xLFZFUlRJQ0VTX1BFUl9FTEVNRU5UCiAgICAgICAgICAgIHZlcnQgPSBncmlkJWVsZW1l
bnQoZWxlbSkldmVydGV4KGl2ZXJ0KQogICAgICAgICAgICBpZiAodmlzaXRlZF92ZXJ0KHZlcnQp
KSBjeWNsZQogICAgICAgICAgICB2aXNpdGVkX3ZlcnQodmVydCkgPSAudHJ1ZS4KICAgICAgICAg
ICAgaSA9IGkgKyAxCiAgICAgICAgICAgIHZlcnRsaXN0KGkpID0gdmVydAogICAgICAgICBlbmQg
ZG8KICAgICAgICAgZWxlbSA9IGdyaWQlZWxlbWVudChlbGVtKSVuZXh0CiAgICAgIGVuZCBkbwog
ICBlbmQgZG8KCiAgIGNhbGwgc29ydCh2ZXJ0bGlzdCxncmlkJW52ZXJ0LGlwZXJtLDEsZXJyY29k
ZSkKCiAgIGlmICh2ZXJ0bGlzdChpcGVybShncmlkJW52ZXJ0KSkgPT0gZ3JpZCVudmVydCkgdGhl
bgogICAgICBjYWxsIHBoYW1sX3NlbmQocHJvY3MsTUFTVEVSLCgvMC8pLDEsKC8wLjBfbXlfcmVh
bC8pLDAsNzYwKQogICBlbHNlCiAgICAgIGNhbGwgcGhhbWxfc2VuZChwcm9jcyxNQVNURVIsKC8x
LyksMSwoLzAuMF9teV9yZWFsLyksMCw3NjApCiAgICAgIGRlYWxsb2NhdGUodmVydGxpc3QsaXBl
cm0pCiAgICAgIHJldHVybgogICBlbmRpZgoKICAgZGVhbGxvY2F0ZSh2ZXJ0bGlzdCxpcGVybSkK
CmVsc2UgISBtYXN0ZXIKCiAgIGNhbGwgcGhhbWxfcmVjdihwcm9jcyxwcm9jLGlyZWN2LG5pLHJy
ZWN2LG5yLDc2MCkKICAgaWYgKGlyZWN2KDEpID09IDEpIHRoZW4KICAgICAgY2FsbCB3YXJuaW5n
KCJUaGUgbGlzdCBvZiB2ZXJ0ZXggaW5kaWNlcyBoYXMgZ2FwczsgY2Fubm90IGNyZWF0ZSBhIC5w
b2x5IGZpbGUiKQogICAgICBkZWFsbG9jYXRlKGlyZWN2KQogICAgICBpZiAoYXNzb2NpYXRlZChy
cmVjdikpIGRlYWxsb2NhdGUocnJlY3YpCiAgICAgIHJldHVybgogICBlbHNlCiAgICAgIGRlYWxs
b2NhdGUoaXJlY3YpCiAgICAgIGlmIChhc3NvY2lhdGVkKHJyZWN2KSkgZGVhbGxvY2F0ZShycmVj
dikKICAgZW5kaWYKCmVuZGlmCgohIG51bWJlciBvZiBzb2x1dGlvbnMgdG8gaW5jbHVkZSBhcyBh
dHRyaWJ1dGVzCgppZiAoZm10ID09IEdSSURGSUxFX1BPTFlfU09MTikgdGhlbgogICBuc29sdXQg
PSAxCiAgIGlmIChjb21wID09IC0xKSAgbnNvbHV0ID0gbnNvbHV0KnNpemVfdmVydF9zb2xuKGdy
aWQsZGltPUNPTVBfRElNKQogICBpZiAoZWlnZW4gPT0gLTEpIG5zb2x1dCA9IG5zb2x1dCpzaXpl
X3ZlcnRfc29sbihncmlkLGRpbT1FSUdFTl9ESU0pCiAgIGlmIChuc29sdXQgPiA5OTcpIHRoZW4K
ICAgICAgY2FsbCB3YXJuaW5nKCJUb28gbWFueSBzb2x1dGlvbnMgcGVyIHZlcnRleCBpbiBzdG9y
ZV9ncmlkX3BvbHkiLCAmCiAgICAgICAgICAgICAgICAgICAiU29sdXRpb25zIG5vdCBpbmNsdWRl
ZCBpbiBncmlkIGZpbGUiKQogICAgICBuc29sdXQgPSAwCiAgIGVuZGlmCmVsc2UKICAgbnNvbHV0
ID0gMAplbmRpZgoKISB3cml0ZSB0aGUgdmVydGljZXMKCmlmIChteXByb2MgPT0gMSkgdGhlbgog
ICBhbGxvY2F0ZShpc2VuZCgyKmdyaWQlbnZlcnQrMSkscnNlbmQoKDIrbnNvbHV0KSpncmlkJW52
ZXJ0KSxzdGF0PWFzdGF0KQogICBpZiAoYXN0YXQgLz0gMCkgdGhlbgogICAgICBpZXJyID0gQUxM
T0NfRkFJTEVECiAgICAgIGNhbGwgZmF0YWwoImFsbG9jYXRpb24gZmFpbGVkIGluIHN0b3JlX2dy
aWRfcG9seSIscHJvY3M9cHJvY3MpCiAgICAgIHN0b3AKICAgZW5kaWYKICAgaXNlbmQoMSkgPSBn
cmlkJW52ZXJ0CiAgIGlwb2ludCA9IDEKICAgcnBvaW50ID0gMAogICBkbyB2ZXJ0PTEsZ3JpZCVu
dmVydAogICAgICBpc2VuZChpcG9pbnQrMSkgPSB2ZXJ0CiAgICAgIGlzZW5kKGlwb2ludCsyKSA9
IGdyaWQldmVydGV4KHZlcnQpJWJtYXJrCiAgICAgIGlwb2ludCA9IGlwb2ludCArIDIKICAgICAg
cnNlbmQocnBvaW50KzEpID0gZ3JpZCV2ZXJ0ZXgodmVydCklY29vcmQleAogICAgICByc2VuZChy
cG9pbnQrMikgPSBncmlkJXZlcnRleCh2ZXJ0KSVjb29yZCV5CiAgICAgIHJwb2ludCA9IHJwb2lu
dCArIDIKICAgICAgaWYgKG5zb2x1dCAvPSAwKSB0aGVuCiAgICAgICAgIGlmIChjb21wID09IC0x
KSB0aGVuCiAgICAgICAgICAgIGlmIChlaWdlbiA9PSAtMSkgdGhlbgogICAgICAgICAgICAgICBy
c2VuZChycG9pbnQrMTpycG9pbnQrbnNvbHV0KSA9ICYKICAgICAgICAgICAgICAgICAgcmVzaGFw
ZShnZXRfdmVydF9zb2xuKGdyaWQsdmVydCxjb2xvbixjb2xvbiksKC9uc29sdXQvKSkKICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICByc2VuZChycG9pbnQrMTpycG9pbnQrbnNvbHV0KSA9
ICYKICAgICAgICAgICAgICAgICAgZ2V0X3ZlcnRfc29sbihncmlkLHZlcnQsY29sb24sZWlnZW4p
CiAgICAgICAgICAgIGVuZGlmCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgKGVpZ2VuID09
IC0xKSB0aGVuCiAgICAgICAgICAgICAgIHJzZW5kKHJwb2ludCsxOnJwb2ludCtuc29sdXQpID0g
JgogICAgICAgICAgICAgICAgICBnZXRfdmVydF9zb2xuKGdyaWQsdmVydCxjb21wLGNvbG9uKQog
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgIHJzZW5kKHJwb2ludCsxKSA9IGdldF92ZXJ0
X3NvbG4oZ3JpZCx2ZXJ0LGNvbXAsZWlnZW4pCiAgICAgICAgICAgIGVuZGlmCiAgICAgICAgIGVu
ZGlmCiAgICAgICAgIHJwb2ludCA9IHJwb2ludCArIG5zb2x1dAogICAgICBlbmRpZgogICBlbmQg
ZG8KICAgbmkgPSBpcG9pbnQKICAgbnIgPSBycG9pbnQKICAgaWYgKHBhcmFsbGVsID09IFNFUVVF
TlRJQUwpIHRoZW4KICAgICAgaXJlY3YgPT4gaXNlbmQKICAgICAgcnJlY3YgPT4gcnNlbmQKICAg
ZWxzZQogICAgICBjYWxsIHBoYW1sX3NlbmQocHJvY3MsTUFTVEVSLGlzZW5kLG5pLHJzZW5kLG5y
LDc2MSkKICAgZW5kaWYKZWxzZSAhIE1BU1RFUgogICBjYWxsIHBoYW1sX3JlY3YocHJvY3MscHJv
YyxpcmVjdixuaSxycmVjdixuciw3NjEpCmVuZGlmCgppZiAoaXByaW50KSB0aGVuCiAgIGZtYXQg
PSAiKFNTLDFQLEkxMSwgICAgRTIxLjEzRTIsSTExKSIKICAgd3JpdGUoZm1hdCgxMjoxNSksIihJ
MykiKSAyK25zb2x1dAogICB3cml0ZSh1bml0LCIoSTExLEkyLEk0LEkyKSIpIGlyZWN2KDEpLDIs
bnNvbHV0LDEKICAgaXBvaW50ID0gMQogICBycG9pbnQgPSAwCiAgIGRvIGk9MSxpcmVjdigxKQog
ICAgICB3cml0ZSh1bml0LGZtYXQpIGlyZWN2KGlwb2ludCsxKSxycmVjdihycG9pbnQrMTpycG9p
bnQrMituc29sdXQpLCAmCiAgICAgICAgICAgICAgICAgICAgICAgaXJlY3YoaXBvaW50KzIpCiAg
ICAgIGlwb2ludCA9IGlwb2ludCArIDIKICAgICAgcnBvaW50ID0gcnBvaW50ICsgMituc29sdXQK
ICAgZW5kIGRvCmVuZGlmCgppZiAocGFyYWxsZWwgPT0gU0VRVUVOVElBTCkgdGhlbgogICBudWxs
aWZ5KGlyZWN2LHJyZWN2KQogICBkZWFsbG9jYXRlKGlzZW5kLHJzZW5kKQplbHNlCiAgIGlmIChh
bGxvY2F0ZWQoaXNlbmQpKSBkZWFsbG9jYXRlKGlzZW5kKQogICBpZiAoYWxsb2NhdGVkKHJzZW5k
KSkgZGVhbGxvY2F0ZShyc2VuZCkKICAgaWYgKGFzc29jaWF0ZWQoaXJlY3YpKSBkZWFsbG9jYXRl
KGlyZWN2KQogICBpZiAoYXNzb2NpYXRlZChycmVjdikpIGRlYWxsb2NhdGUocnJlY3YpCmVuZGlm
CgohIFRoZSBkZXNjcmlwdGlvbiBvZiB0cmlhbmdsZSAucG9seSBmaWxlcyBkb2VzIG5vdCBzYXkg
dGhlIGVkZ2VzIG11c3QgYmUKISBpbiBpbmNyZWFzaW5nIG9yZGVyIHdpdGggbm8gZ2Fwcy4gIEV4
cGVyaW1lbnRpbmcgd2l0aCBvdXQtb2Ytb3JkZXIgZWRnZXMKISBhbmQgZ2FwcyBpbiB0aGUgZWRn
ZSBudW1iZXJzIHNob3dlZCB0aGF0IHNob3dtZSBnaXZlcyBhIHdhcm5pbmcgYnV0CiEgZGlzcGxh
eXMgY29ycmVjdGx5LCBhbmQgdHJpYW5nbGUgd29ya3MgY29ycmVjdGx5IGJ1dCByZW51bWJlcnMg
dGhlIGVkZ2VzCiEgdG8gYmUgaW5jcmVhc2luZyBhbmQgd2l0aCBubyBnYXBzLiAgU28gd2UgbWln
aHQganVzdCBhcyB3ZWxsIHJlbnVtYmVyIHRoZQohIGVkZ2VzIGhlcmUgYnkgSURpbmcgdGhlIGVk
Z2Ugd2l0aCBhIGNvdW50ZXIgaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGVkZ2UgSUQuCgohIHdyaXRl
IHRoZSBlZGdlcyBieSBnb2luZyB0aHJvdWdoIHRoZSBlbGVtZW50cyBhbmQgd3JpdGluZyBhbnkg
ZWRnZSBub3QKISBhbHJlYWR5IHdyaXR0ZW4KCmlmIChteXByb2MgPT0gMSkgdGhlbgoKICAgYWxs
b2NhdGUoaXNlbmQoNCpncmlkJW5lZGdlKzEpLHNlZW5fZWRnZShncmlkJWJpZ2dlc3RfZWRnZSks
c3RhdD1hc3RhdCkKICAgaWYgKGFzdGF0IC89IDApIHRoZW4KICAgICAgaWVyciA9IEFMTE9DX0ZB
SUxFRAogICAgICBjYWxsIGZhdGFsKCJhbGxvY2F0aW9uIGZhaWxlZCBpbiBzdG9yZV9ncmlkX3Bv
bHkiLHByb2NzPXByb2NzKQogICAgICBzdG9wCiAgIGVuZGlmCiAgIHNlZW5fZWRnZSA9IC5mYWxz
ZS4KCiAgIGlzZW5kKDEpID0gMAogICBpcG9pbnQgPSAxCiAgIGRvIGxldj0xLGdyaWQlbmxldgog
ICAgICBlbGVtID0gZ3JpZCVoZWFkX2xldmVsX2VsZW0obGV2KQogICAgICBkbyB3aGlsZSAoZWxl
bSAvPSBFTkRfT0ZfTElTVCkKICAgICAgICAgaWYgKGdyaWQlZWxlbWVudChlbGVtKSVpc2xlYWYp
IHRoZW4KICAgICAgICAgICAgZG8gaT0xLEVER0VTX1BFUl9FTEVNRU5UCiAgICAgICAgICAgICAg
IGVkZ2UgPSBncmlkJWVsZW1lbnQoZWxlbSklZWRnZShpKQogICAgICAgICAgICAgICBpZiAoc2Vl
bl9lZGdlKGVkZ2UpKSBjeWNsZQogICAgICAgICAgICAgICBzZWVuX2VkZ2UoZWRnZSkgPSAudHJ1
ZS4KICAgICAgICAgICAgICAgaXNlbmQoMSkgPSBpc2VuZCgxKSArIDEKICAgICAgICAgICAgICAg
aXNlbmQoaXBvaW50KzEpID0gaXNlbmQoMSkgISBuZXcgSUQgZm9yIHRoZSBlZGdlCiAgICAgICAg
ICAgICAgIGlzZW5kKGlwb2ludCsyKSA9IGdyaWQlZWRnZShlZGdlKSV2ZXJ0ZXgoMSkKICAgICAg
ICAgICAgICAgaXNlbmQoaXBvaW50KzMpID0gZ3JpZCVlZGdlKGVkZ2UpJXZlcnRleCgyKQogICAg
ICAgICAgICAgICBpc2VuZChpcG9pbnQrNCkgPSBncmlkJWVkZ2UoZWRnZSklYm1hcmsKICAgICAg
ICAgICAgICAgaXBvaW50ID0gaXBvaW50ICsgNAogICAgICAgICAgICBlbmQgZG8KICAgICAgICAg
ZW5kaWYKICAgICAgICAgZWxlbSA9IGdyaWQlZWxlbWVudChlbGVtKSVuZXh0CiAgICAgIGVuZCBk
bwogICBlbmQgZG8KICAgZGVhbGxvY2F0ZShzZWVuX2VkZ2UpCgogICBuaSA9IGlwb2ludAogICBp
ZiAocGFyYWxsZWwgPT0gU0VRVUVOVElBTCkgdGhlbgogICAgICBpcmVjdiA9PiBpc2VuZAogICBl
bHNlCiAgICAgIGNhbGwgcGhhbWxfc2VuZChwcm9jcyxNQVNURVIsaXNlbmQsbmksKC8wLjBfbXlf
cmVhbC8pLDAsNzYyKQogICBlbmRpZgplbHNlICEgTUFTVEVSCiAgIGNhbGwgcGhhbWxfcmVjdihw
cm9jcyxwcm9jLGlyZWN2LG5pLHJyZWN2LG5yLDc2MikKZW5kaWYKCmlmIChpcHJpbnQpIHRoZW4K
ICAgd3JpdGUodW5pdCwiKEkxMSxJMikiKSBpcmVjdigxKSwxCiAgIGlwb2ludCA9IDEKICAgZG8g
aT0xLGlyZWN2KDEpCiAgICAgIHdyaXRlKHVuaXQsIig0STExKSIpIGlyZWN2KGlwb2ludCsxOmlw
b2ludCs0KQogICAgICBpcG9pbnQgPSBpcG9pbnQgKyA0CiAgIGVuZCBkbwplbmRpZgoKaWYgKHBh
cmFsbGVsID09IFNFUVVFTlRJQUwpIHRoZW4KICAgbnVsbGlmeShpcmVjdikKICAgZGVhbGxvY2F0
ZShpc2VuZCkKZWxzZQogICBpZiAoYWxsb2NhdGVkKGlzZW5kKSkgZGVhbGxvY2F0ZShpc2VuZCkK
ICAgaWYgKGFsbG9jYXRlZChyc2VuZCkpIGRlYWxsb2NhdGUocnNlbmQpCiAgIGlmIChhc3NvY2lh
dGVkKGlyZWN2KSkgZGVhbGxvY2F0ZShpcmVjdikKICAgaWYgKGFzc29jaWF0ZWQocnJlY3YpKSBk
ZWFsbG9jYXRlKHJyZWN2KQplbmRpZgoKISB3cml0ZSB0aGUgaG9sZXMKCiEgVGhpcyByZXF1aXJl
cyB0aGF0IGJvdW5kYXJ5X3BvaW50IGFuZCBib3VuZGFyeV9ucGllY2UgYXJlIGF2YWlsYWJsZS4K
ISBGb3IgZWFjaCBob2xlIGNvbXB1dGUgYSBwb2ludCBpbnNpZGUgdGhlIGhvbGUgYXMgdGhlIGF2
ZXJhZ2Ugb2YgdGhlCiEgcGllY2UgZW5kcG9pbnRzIGFuZCBtaWRwb2ludHMuICBUaGlzIGNhbiBm
YWlsIGlmIHRoZSBob2xlIGlzIHRvbyBjb25jYXZlLgoKaWYgKGlwcmludCkgdGhlbgoKISBjb3Vu
dCB0aGUgbnVtYmVyIG9mIGhvbGVzCgogICBuaG9sZSA9IDEKICAgZG8gd2hpbGUgKG15X2JvdW5k
YXJ5X25waWVjZShuaG9sZSkgPiAwKQogICAgICBuaG9sZSA9IG5ob2xlICsgMQogICBlbmQgZG8K
ICAgbmhvbGUgPSBuaG9sZSAtIDEKICAgYWxsb2NhdGUoZW5kX2hvbGUoLTE6bmhvbGUpLHN0YXQ9
YXN0YXQpCiAgIGlmIChhc3RhdCAvPSAwKSB0aGVuCiAgICAgIGllcnIgPSBBTExPQ19GQUlMRUQK
ICAgICAgY2FsbCBmYXRhbCgibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIGluIHN0b3JlX2dyaWRf
cG9seSIpCiAgICAgIHN0b3AKICAgZW5kaWYKICAgd3JpdGUodW5pdCwiKEkxMSkiKSBuaG9sZQoK
ISBnZXQgdGhlIHBpZWNlIHRoYXQgZW5kcyBlYWNoIGhvbGUsIGFuZAohIHBhcmFtZXRlciBsaW1p
dHMKCiAgIGVuZF9ob2xlKC0xKSA9IDAKICAgZG8gaG9sZT0wLG5ob2xlCiAgICAgIGVuZF9ob2xl
KGhvbGUpID0gZW5kX2hvbGUoaG9sZS0xKSArIG15X2JvdW5kYXJ5X25waWVjZShob2xlKQogICBl
bmQgZG8KCiEgY29tcHV0ZSB0aGUgcG9pbnQgZm9yIGVhY2ggaG9sZQoKICAgZG8gaG9sZT0xLG5o
b2xlCiAgICAgIHgyID0gMC4wX215X3JlYWwKICAgICAgeTIgPSAwLjBfbXlfcmVhbAogICAgICBr
ID0gMAogICAgICBkbyBwaWVjZT1lbmRfaG9sZShob2xlLTEpKzEsZW5kX2hvbGUoaG9sZSkKICAg
ICAgICAgY2FsbCBteV9ib3VuZGFyeV9wb2ludChwaWVjZSxncmlkJWJwX3N0YXJ0KHBpZWNlKSx4
MSx5MSkKICAgICAgICAgeDIgPSB4MiArIHgxCiAgICAgICAgIHkyID0geTIgKyB5MQogICAgICAg
ICBjYWxsIG15X2JvdW5kYXJ5X3BvaW50KHBpZWNlLCAmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGdyaWQlYnBfc3RhcnQocGllY2UpK2dyaWQlYnBfZmluaXNoKHBpZWNlKSkvMiwm
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEseTEpCiAgICAgICAgIHgyID0geDIg
KyB4MQogICAgICAgICB5MiA9IHkyICsgeTEKICAgICAgICAgayA9IGsrMgogICAgICBlbmQgZG8K
ICAgICAgeDIgPSB4Mi9rCiAgICAgIHkyID0geTIvawogICAgICB3cml0ZSh1bml0LCIoSTExLFNT
LDFQLDJFMjEuMTNFMikiKSBob2xlLHgyLHkyCiAgIGVuZCBkbwoKICAgZGVhbGxvY2F0ZShlbmRf
aG9sZSkKCmVuZGlmCgplbmQgc3Vicm91dGluZSBzdG9yZV9ncmlkX3BvbHkKCiEgICAgICAgICAg
LS0tLS0tLS0tLS0tLS0Kc3Vicm91dGluZSBzdG9yZV9ncmlkX21zaChncmlkLHByb2NzLHN0aWxs
X3NlcXVlbnRpYWwsdW5pdCxmbXQsY29tcCxlaWdlbiwgJgogICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vYm91bmRhcnksbm90YWdzLG9ubHlfZ21zaCkKISAgICAgICAgICAtLS0tLS0tLS0tLS0t
LQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
ISBUaGlzIHJvdXRpbmUgc2F2ZXMgdGhlIGdyaWQgaW4gR21zaCdzIC5tc2ggZm9ybWF0CiEgVGhp
cyByb3V0aW5lIHN0b3JlcyBhIHRyaWFuZ2xlIG9yIHRldHJhaGVkcmFsIGdyaWQgaW4gR21zaCdz
IC5tc2ggZm9ybWF0LgohIElmIGZtdCBpcyBHUklERklMRV9NU0hfU09MTiB0aGVuIG9uZSBvciBt
b3JlIHNvbHV0aW9ucyBhcmUgc2F2ZWQgYXMKISBhIE5vZGVEYXRhIHNlY3Rpb24uICBJZiBjb21w
IGlzIC0xLCBhbGwgY29tcG9uZW50cyBhcmUgc2F2ZWQsCiEgb3RoZXJ3aXNlIGNvbXAgdGVsbHMg
d2hpY2ggY29tcG9uZW50IHRvIHNhdmUuICBTYW1lIHdpdGggZWlnZW4uCiEgVGFncyBhcmUgaW5j
bHVkZWQgdW5sZXNzIG5vdGFncyBpcyAudHJ1ZS4sIGV4Y2VwdCB0aGUgYm91bmRhcnkgZW50aXRp
ZXMgd2lsbAohIGFsd2F5cyBpbmNsdWRlIGJtYXJrIGFzIGEgdGFnLgohIG5vYm91bmRhcnkgYW5k
IG9ubHlfZ21zaCBkZXRlcm1pbmUgaWYgYW55IHZlcnRpY2VzLCBlZGdlcyBvciBmYWNlcyBhcmUK
ISBpbmNsdWRlZCBhcyAiZWxlbWVudHMiOgohICBub2JvdW5kYXJ5IG9ubHlfZ21zaAohICAgZmFs
c2UgICAgICBmYWxzZSAgICBhbGwgYm91bmRhcnkgZW50aXRpZXMgYXJlIGluY2x1ZGVkCiEgICB0
cnVlICAgICAgIFQgb3IgRiAgIG5vIGJvdW5kYXJ5IGVudGl0aWVzIGFyZSBpbmNsdWRlZAohICAg
ZmFsc2UgICAgICB0cnVlICAgICBhbGwgZW50aXRpZXMgKGJvdW5kYXJ5IG9yIG5vdCkgd2l0aCBn
bXNoX2VsZW1lbnQgdHJ1ZQohICAgICAgICAgICAgICAgICAgICAgICBhcmUgaW5jbHVkZWQKIS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiEtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgRHVtbXkg
YXJndW1lbnRzCgp0eXBlKGdyaWRfdHlwZSksIGludGVudChpbikgOjogZ3JpZAp0eXBlKHByb2Nf
aW5mbyksIGludGVudChpbikgOjogcHJvY3MKbG9naWNhbCwgaW50ZW50KGluKSA6OiBzdGlsbF9z
ZXF1ZW50aWFsCmludGVnZXIsIGludGVudChpbikgOjogdW5pdCwgZm10LCBjb21wLCBlaWdlbgps
b2dpY2FsLCBpbnRlbnQoaW4pIDo6IG5vYm91bmRhcnksIG5vdGFncywgb25seV9nbXNoCiEtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiEgTG9jYWwg
dmFyaWFibGVzOgoKaW50ZWdlciA6OiBpLCBteXByb2MsIHByb2MsIGxldiwgdmVydCwgZWRnZSwg
ZmFjZSwgZWxlbSwgbnRhZywgYXN0YXQsIG5pLCBuciwgJgogICAgICAgICAgIGlwb2ludCwgcnBv
aW50LCBuZWxlbWVudCwgbnZlcnRleCwgbnZhbCwgbnNvbHV0LCBpdGVtcCwgaXZlcnQsIGosICYK
ICAgICAgICAgICBmaXJzdGxldgppbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBub2NoYXJnZSg6KQpp
bnRlZ2VyLCBhbGxvY2F0YWJsZSwgdGFyZ2V0IDo6IGlzZW5kKDopCmludGVnZXIsIHBvaW50ZXIg
OjogaXJlY3YoOikKaW50ZWdlciA6OiByZW51bWJlcihncmlkJWJpZ2dlc3RfdmVydCkKcmVhbCht
eV9yZWFsKSwgYWxsb2NhdGFibGUsIHRhcmdldCA6OiByc2VuZCg6KQpyZWFsKG15X3JlYWwpLCBw
b2ludGVyIDo6IHJyZWN2KDopCmNoYXJhY3RlcihsZW49MjQpIDo6IGZtYXQKbG9naWNhbCA6OiBp
cHJpbnQKbG9naWNhbChzbWFsbF9sb2dpY2FsKSA6OiB2aXNpdGVkX3ZlcnQoZ3JpZCViaWdnZXN0
X3ZlcnQpLCAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRlZF9lZGdlKGdyaWQlYmln
Z2VzdF9lZGdlKSwgJgogICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRfZmFjZShncmlk
JWJpZ2dlc3RfZmFjZSkKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KISBCZWdpbiBleGVjdXRhYmxlIGNvZGUKCm15cHJvYyA9IG15X3Byb2MocHJv
Y3MpCgohIFRFTVAgcmVxdWlyZXMgb25lIHByb2Nlc3NvciwgYnV0IGl0IGlzIE9LIGlmIGl0IGlz
IHN0aWxsIHNlcXVlbnRpYWwKCmlmIChudW1fcHJvYyhwcm9jcykgPiAxIC5hbmQuIC5ub3QuIHN0
aWxsX3NlcXVlbnRpYWwpIHRoZW4KICAgaWVyciA9IFVTRVJfSU5QVVRfRVJST1IKICAgY2FsbCBm
YXRhbCgib25seSBvbmUgcHJvY2Vzc29yIGlmIHNhdmluZyB0aGUgZ3JpZCBhcyAubXNoIikKICAg
c3RvcAplbmRpZgppZiAobXlwcm9jID4gMSkgcmV0dXJuCgohIFNsYXZlIDEgaGFzIHRoZSBncmlk
LiAgRm9yIGVhY2ggc2VjdGlvbiwgcGFjayBpdCBpbnRvIGEgbWVzc2FnZS4gIElmIHRoZQohIGNv
bXBpbGF0aW9uIGlzIHNlcXVlbnRpYWwsIHRoZW4gc2xhdmUgMSBzZXRzIHJlY3YgdG8gcG9pbnQg
dG8gc2VuZCBhbmQKISBwcmludHMuICBJZiBub3QsIHRoZW4gc2xhdmUgMSBzZW5kcyBzZW5kIHRv
IHJlY3Ygb24gdGhlIG1hc3RlciBhbmQgdGhlCiEgbWFzdGVyIHByaW50cy4KCmlwcmludCA9IChw
YXJhbGxlbCA9PSBTRVFVRU5USUFMIC5hbmQuIG15cHJvYyA9PSAxKSAub3IuICYKICAgICAgICAg
KHBhcmFsbGVsIC89IFNFUVVFTlRJQUwgLmFuZC4gbXlwcm9jID09IE1BU1RFUikKbnVsbGlmeShp
cmVjdixycmVjdikKCiEgbWVzaCBmb3JtYXQKCmlmIChpcHJpbnQpIHRoZW4KICAgd3JpdGUodW5p
dCwiKEEpIikgIiRNZXNoRm9ybWF0IgogICB3cml0ZSh1bml0LCIoQSkiKSAiMi4yIDAgOCIKICAg
d3JpdGUodW5pdCwiKEEpIikgIiRFbmRNZXNoRm9ybWF0IgplbmRpZgoKISBub2RlczsgZmlyc3Qg
dGhlIHZlcnRpY2VzIG9mIHRoZSBpbml0aWFsIGdyaWQsIHRoZW4gdGhvc2UgYWRkZWQgYnkgcmVm
aW5lbWVudAoKaWYgKG15cHJvYyA9PSAxKSB0aGVuCiAgIG52ZXJ0ZXggPSAwCiAgIGFsbG9jYXRl
KGlzZW5kKGdyaWQlbnZlcnQrMSkscnNlbmQoMypncmlkJW52ZXJ0KSxzdGF0PWFzdGF0KQogICBp
ZiAoYXN0YXQgLz0gMCkgdGhlbgogICAgICBpZXJyID0gQUxMT0NfRkFJTEVECiAgICAgIGNhbGwg
ZmF0YWwoImFsbG9jYXRpb24gZmFpbGVkIGluIHN0b3JlX2dyaWRfbXNoIixwcm9jcz1wcm9jcykK
ICAgICAgc3RvcAogICBlbmRpZgogICBpc2VuZCgxKSA9IGdyaWQlbnZlcnQKICAgaXBvaW50ID0g
MQogICBycG9pbnQgPSAwCiAgIHZpc2l0ZWRfdmVydCA9IC5mYWxzZS4KICAgZG8gdmVydD0xLGdy
aWQlaW5pdF9udmVydAogICAgICB2aXNpdGVkX3ZlcnQodmVydCkgPSAudHJ1ZS4KICAgICAgbnZl
cnRleCA9IG52ZXJ0ZXggKyAxCiAgICAgIHJlbnVtYmVyKHZlcnQpID0gbnZlcnRleAogICAgICBp
c2VuZChpcG9pbnQrMSkgPSBudmVydGV4CiAgICAgIGlwb2ludCA9IGlwb2ludCArIDEKICAgICAg
cnNlbmQocnBvaW50KzEpID0gZ3JpZCV2ZXJ0ZXgodmVydCklY29vcmQleAogICAgICByc2VuZChy
cG9pbnQrMikgPSBncmlkJXZlcnRleCh2ZXJ0KSVjb29yZCV5CiAgICAgIHJzZW5kKHJwb2ludCsz
KSA9IHpjb29yZChncmlkJXZlcnRleCh2ZXJ0KSVjb29yZCkKICAgICAgcnBvaW50ID0gcnBvaW50
ICsgMwogICBlbmQgZG8KICAgZG8gbGV2PTEsZ3JpZCVubGV2CiAgICAgIGVsZW0gPSBncmlkJWhl
YWRfbGV2ZWxfZWxlbShsZXYpCiAgICAgIGRvIHdoaWxlIChlbGVtIC89IEVORF9PRl9MSVNUKQog
ICAgICAgICBpZiAoZ3JpZCVlbGVtZW50KGVsZW0pJWlzbGVhZikgdGhlbgogICAgICAgICAgICBk
byBpdmVydD0xLFZFUlRJQ0VTX1BFUl9FTEVNRU5UCiAgICAgICAgICAgICAgIHZlcnQgPSBncmlk
JWVsZW1lbnQoZWxlbSkldmVydGV4KGl2ZXJ0KQogICAgICAgICAgICAgICBpZiAodmlzaXRlZF92
ZXJ0KHZlcnQpKSBjeWNsZQogICAgICAgICAgICAgICB2aXNpdGVkX3ZlcnQodmVydCkgPSAudHJ1
ZS4KICAgICAgICAgICAgICAgbnZlcnRleCA9IG52ZXJ0ZXggKyAxCiAgICAgICAgICAgICAgIHJl
bnVtYmVyKHZlcnQpID0gbnZlcnRleAogICAgICAgICAgICAgICBpc2VuZChpcG9pbnQrMSkgPSBu
dmVydGV4CiAgICAgICAgICAgICAgIGlwb2ludCA9IGlwb2ludCArIDEKICAgICAgICAgICAgICAg
cnNlbmQocnBvaW50KzEpID0gZ3JpZCV2ZXJ0ZXgodmVydCklY29vcmQleAogICAgICAgICAgICAg
ICByc2VuZChycG9pbnQrMikgPSBncmlkJXZlcnRleCh2ZXJ0KSVjb29yZCV5CiAgICAgICAgICAg
ICAgIHJzZW5kKHJwb2ludCszKSA9IHpjb29yZChncmlkJXZlcnRleCh2ZXJ0KSVjb29yZCkKICAg
ICAgICAgICAgICAgcnBvaW50ID0gcnBvaW50ICsgMwogICAgICAgICAgICBlbmQgZG8KICAgICAg
ICAgZW5kaWYKICAgICAgICAgZWxlbSA9IGdyaWQlZWxlbWVudChlbGVtKSVuZXh0CiAgICAgIGVu
ZCBkbwogICBlbmQgZG8KICAgbmkgPSBpcG9pbnQKICAgbnIgPSBycG9pbnQKICAgaWYgKHBhcmFs
bGVsID09IFNFUVVFTlRJQUwpIHRoZW4KICAgICAgaXJlY3YgPT4gaXNlbmQKICAgICAgcnJlY3Yg
PT4gcnNlbmQKICAgZWxzZQogICAgICBjYWxsIHBoYW1sX3NlbmQocHJvY3MsTUFTVEVSLGlzZW5k
LG5pLHJzZW5kLG5yLDc1MCkKICAgZW5kaWYKZWxzZSAhIE1BU1RFUgogICBjYWxsIHBoYW1sX3Jl
Y3YocHJvY3MscHJvYyxpcmVjdixuaSxycmVjdixuciw3NTApCmVuZGlmCgppZiAoaXByaW50KSB0
aGVuCiAgIHdyaXRlKHVuaXQsIihBKSIpICIkTm9kZXMiCiAgIHdyaXRlKHVuaXQsIihJMTEpIikg
aXJlY3YoMSkgISBncmlkJW52ZXJ0CiAgIGlwb2ludCA9IDEKICAgcnBvaW50ID0gMAogICBkbyBp
PTIsaXJlY3YoMSkrMQogICAgICB3cml0ZSh1bml0LCIoU1MsMVAsSTExLDNFMjEuMTNFMikiKSBp
cmVjdihpcG9pbnQrMSkscnJlY3YocnBvaW50KzE6cnBvaW50KzMpCiAgICAgIGlwb2ludCA9IGlw
b2ludCArIDEKICAgICAgcnBvaW50ID0gcnBvaW50ICsgMwogICBlbmQgZG8KICAgd3JpdGUodW5p
dCwiKEEpIikgIiRFbmROb2RlcyIKZW5kaWYKCmlmIChwYXJhbGxlbCA9PSBTRVFVRU5USUFMKSB0
aGVuCiAgIG51bGxpZnkoaXJlY3YscnJlY3YpCiAgIGRlYWxsb2NhdGUoaXNlbmQscnNlbmQpCmVs
c2UKICAgaWYgKGFsbG9jYXRlZChpc2VuZCkpIGRlYWxsb2NhdGUoaXNlbmQpCiAgIGlmIChhbGxv
Y2F0ZWQocnNlbmQpKSBkZWFsbG9jYXRlKHJzZW5kKQogICBpZiAoYXNzb2NpYXRlZChpcmVjdikp
IGRlYWxsb2NhdGUoaXJlY3YpCiAgIGlmIChhc3NvY2lhdGVkKHJyZWN2KSkgZGVhbGxvY2F0ZShy
cmVjdikKZW5kaWYKCiEgZWxlbWVudHM7IGZpcnN0IHRoZSBwb2ludCBlbGVtZW50cywgdGhlbiBs
aW5lcywgdGhlbiB0cmlhbmdsZXMgYW5kLCBpZiAzRCwKISAgICAgICAgICAgdGV0cmFoZWRyYS4g
IEluIGVhY2ggZ3JvdXAsIGRvIHRob3NlIGZyb20gdGhlIGluaXRpYWwgZ3JpZCBmaXJzdCwKISAg
ICAgICAgICAgYW5kIHRob3NlIGNyZWF0ZWQgYnkgcmVmaW5lbWVudC4KCmlmIChNQVhfVEFHID4g
OTkpIHRoZW4KICAgY2FsbCB3YXJuaW5nKCJPbmx5IHNhdmluZyB0aGUgZmlyc3QgOTkgdGFncyBp
biAubXNoIGZpbGUuIikKICAgbnRhZyA9IDk5CmVsc2VpZiAoTUFYX1RBRyA9PSAwKSB0aGVuCiAg
IG50YWcgPSAxICEgaWYgbm8gdGFncywgdXNlIDEgdGFnIGZvciBibWFyawplbHNlaWYgKG5vdGFn
cykgdGhlbgogICBudGFnID0gMAplbHNlCiAgIG50YWcgPSBNQVhfVEFHCmVuZGlmCgohIGZvciBT
RU0gc2ltdWxhdGlvbiwgb21pdCB0aGUgY2hhcmdlIHRhZwoKaWYgKHNlbV9zaW11bGF0aW9uKSB0
aGVuCiAgIGlmIChjaGFyZ2V0YWcgPiAwIC5hbmQuIGNoYXJnZXRhZyA8PSBNQVhfVEFHKSBudGFn
ID0gbnRhZyAtIDEKICAgYWxsb2NhdGUobm9jaGFyZ2UobnRhZyksc3RhdD1hc3RhdCkKICAgaWYg
KGFzdGF0IC89IDApIHRoZW4KICAgICAgaWVyciA9IEFMTE9DX0ZBSUxFRAogICAgICBjYWxsIGZh
dGFsKCJhbGxvY2F0aW9uIGZhaWxlZCBpbiBzdG9yZV9ncmlkX21zaCIscHJvY3M9cHJvY3MpCiAg
ICAgIHN0b3AKICAgZW5kaWYKICAgaiA9IDAKICAgZG8gaT0xLG50YWcrMQogICAgICBpZiAoaT09
Y2hhcmdldGFnKSBjeWNsZQogICAgICBqID0gaisxCiAgICAgIG5vY2hhcmdlKGopID0gaQogICBl
bmQgZG8KZW5kaWYKCmlmIChteXByb2MgPT0gMSkgdGhlbgogICBzZWxlY3QgY2FzZSAoZ2xvYmFs
X2VsZW1lbnRfa2luZCkKICAgY2FzZSAoVFJJQU5HVUxBUl9FTEVNRU5UKQogICAgICBpZiAobm9i
b3VuZGFyeSkgdGhlbgogICAgICAgICBhbGxvY2F0ZShpc2VuZChncmlkJW5lbGVtX2xlYWYqKDYr
bnRhZykpLCBzdGF0PWFzdGF0KQogICAgICBlbHNlCiAgICAgICAgIGFsbG9jYXRlKGlzZW5kKGdy
aWQlbnZlcnQqKDQrbnRhZykgKyBncmlkJW5lZGdlKig1K250YWcpICsgJgogICAgICAgICAgICAg
ICAgICAgICAgICBncmlkJW5lbGVtX2xlYWYqKDYrbnRhZykpLCBzdGF0PWFzdGF0KQogICAgICBl
bmRpZgogICBjYXNlIChURVRSQUhFRFJBTF9FTEVNRU5UKQogICAgICBpZiAobm9ib3VuZGFyeSkg
dGhlbgogICAgICAgICBhbGxvY2F0ZShpc2VuZChncmlkJW5lbGVtX2xlYWYqKDcrbnRhZykpLHN0
YXQ9YXN0YXQpCiAgICAgIGVsc2UKICAgICAgICAgYWxsb2NhdGUoaXNlbmQoZ3JpZCVudmVydCoo
NCtudGFnKSArIGdyaWQlbmVkZ2UqKDUrbnRhZykgKyAmCiAgICAgICAgICAgICAgICAgICAgICAg
IGdyaWQlbmZhY2UqKDYrbnRhZykgKyBncmlkJW5lbGVtX2xlYWYqKDcrbnRhZykpLCAmCiAgICAg
ICAgICAgICAgICAgIHN0YXQ9YXN0YXQpCiAgICAgIGVuZGlmCiAgIGVuZCBzZWxlY3QKICAgaWYg
KGFzdGF0IC89IDApIHRoZW4KICAgICAgaWVyciA9IEFMTE9DX0ZBSUxFRAogICAgICBjYWxsIGZh
dGFsKCJhbGxvY2F0aW9uIGZhaWxlZCBpbiBzdG9yZV9ncmlkX21zaCIscHJvY3M9cHJvY3MpCiAg
ICAgIHN0b3AKICAgZW5kaWYKCiAgIG5lbGVtZW50ID0gMAogICBpcG9pbnQgPSAxCgohIGFueSBi
b3VuZGFyeSB2ZXJ0aWNlcywgZWRnZXMgYW5kLCBpbiAzRCwgYm91bmRhcnkgZmFjZXMgbm90IGFs
cmVhZHkgYWRkZWQKCiAgIGlmICgubm90LiBub2JvdW5kYXJ5KSB0aGVuCgogICAgICB2aXNpdGVk
X3ZlcnQgPSAuZmFsc2UuCiAgICAgIHZpc2l0ZWRfZWRnZSA9IC5mYWxzZS4KICAgICAgaWYgKGds
b2JhbF9lbGVtZW50X2tpbmQgPT0gVEVUUkFIRURSQUxfRUxFTUVOVCkgdGhlbgogICAgICAgICB2
aXNpdGVkX2ZhY2UgPSAuZmFsc2UuCiAgICAgIGVuZGlmCgohIHZlcnRpY2VzCgogICAgICBkbyB2
ZXJ0PTEsZ3JpZCVpbml0X252ZXJ0CiAgICAgICAgIHZpc2l0ZWRfdmVydCh2ZXJ0KSA9IC50cnVl
LgogICAgICAgICBpZiAoLm5vdC4gb25seV9nbXNoIC5hbmQuIGdyaWQldmVydGV4KHZlcnQpJWJt
YXJrID09IDApIGN5Y2xlCiAgICAgICAgIGlmIChvbmx5X2dtc2ggLmFuZC4gLm5vdC4gZ3JpZCV2
ZXJ0ZXgodmVydCklZ21zaF9lbGVtZW50KSBjeWNsZQogICAgICAgICBuZWxlbWVudCA9IG5lbGVt
ZW50ICsgMQogICAgICAgICBpc2VuZChpcG9pbnQrMSkgPSBuZWxlbWVudAogICAgICAgICBpc2Vu
ZChpcG9pbnQrMikgPSAxNSAgICEgZWxlbWVudCB0eXBlIGlzIDEtbm9kZSBwb2ludAogICAgICAg
ICBpc2VuZChpcG9pbnQrMykgPSBudGFnCiAgICAgICAgIGlmIChudGFnIC89IDEpIHRoZW4KICAg
ICAgICAgICAgaWYgKHNlbV9zaW11bGF0aW9uKSB0aGVuCiAgICAgICAgICAgICAgIGlzZW5kKGlw
b2ludCs0Omlwb2ludCszK250YWcpID0gZ3JpZCV2ZXJ0ZXgodmVydCkldGFncyhub2NoYXJnZSkK
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICBpc2VuZChpcG9pbnQrNDppcG9pbnQrMytu
dGFnKSA9IGdyaWQldmVydGV4KHZlcnQpJXRhZ3MoMTpudGFnKQogICAgICAgICAgICBlbmRpZgog
ICAgICAgICBlbmRpZgogICAgICAgICBpc2VuZChpcG9pbnQrNCkgPSBncmlkJXZlcnRleCh2ZXJ0
KSVibWFyawogICAgICAgICBpcG9pbnQgPSBpcG9pbnQgKyAzK250YWcKICAgICAgICAgaXNlbmQo
aXBvaW50KzEpID0gcmVudW1iZXIodmVydCkKICAgICAgICAgaXBvaW50ID0gaXBvaW50ICsgMQog
ICAgICBlbmQgZG8KCiAgICAgIGRvIGxldj0yLGdyaWQlbmxldgogICAgICAgICBlbGVtID0gZ3Jp
ZCVoZWFkX2xldmVsX2VsZW0obGV2KQogICAgICAgICBkbyB3aGlsZSAoZWxlbSAvPSBFTkRfT0Zf
TElTVCkKICAgICAgICAgICAgaWYgKGdyaWQlZWxlbWVudChlbGVtKSVpc2xlYWYpIHRoZW4KICAg
ICAgICAgICAgICAgZG8gaXZlcnQ9MSxWRVJUSUNFU19QRVJfRUxFTUVOVAogICAgICAgICAgICAg
ICAgICB2ZXJ0ID0gZ3JpZCVlbGVtZW50KGVsZW0pJXZlcnRleChpdmVydCkKICAgICAgICAgICAg
ICAgICAgaWYgKHZpc2l0ZWRfdmVydCh2ZXJ0KSkgY3ljbGUKICAgICAgICAgICAgICAgICAgdmlz
aXRlZF92ZXJ0KHZlcnQpID0gLnRydWUuCiAgICAgICAgICAgICAgICAgIGlmICgubm90LiBvbmx5
X2dtc2ggLmFuZC4gZ3JpZCV2ZXJ0ZXgodmVydCklYm1hcmsgPT0gMCkgY3ljbGUKICAgICAgICAg
ICAgICAgICAgaWYgKG9ubHlfZ21zaCAuYW5kLiAmCiAgICAgICAgICAgICAgICAgICAgICAubm90
LiBncmlkJXZlcnRleCh2ZXJ0KSVnbXNoX2VsZW1lbnQpIGN5Y2xlCiAgICAgICAgICAgICAgICAg
IG5lbGVtZW50ID0gbmVsZW1lbnQgKyAxCiAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCsx
KSA9IG5lbGVtZW50CiAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCsyKSA9IDE1ICAgISBl
bGVtZW50IHR5cGUgaXMgMS1ub2RlIHBvaW50CiAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2lu
dCszKSA9IG50YWcKICAgICAgICAgICAgICAgICAgaWYgKG50YWcgLz0gMSkgdGhlbgogICAgICAg
ICAgICAgICAgICAgICBpZiAoc2VtX3NpbXVsYXRpb24pIHRoZW4KICAgICAgICAgICAgICAgICAg
ICAgICAgaXNlbmQoaXBvaW50KzQ6aXBvaW50KzMrbnRhZykgPSAmCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQldmVydGV4KHZlcnQpJXRhZ3Mobm9j
aGFyZ2UpCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg
aXNlbmQoaXBvaW50KzQ6aXBvaW50KzMrbnRhZykgPSAmCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdyaWQldmVydGV4KHZlcnQpJXRhZ3MoMTpudGFnKQog
ICAgICAgICAgICAgICAgICAgICBlbmRpZgogICAgICAgICAgICAgICAgICBlbmRpZgogICAgICAg
ICAgICAgICAgICBpc2VuZChpcG9pbnQrNCkgPSBncmlkJXZlcnRleCh2ZXJ0KSVibWFyawogICAg
ICAgICAgICAgICAgICBpcG9pbnQgPSBpcG9pbnQgKyAzK250YWcKICAgICAgICAgICAgICAgICAg
aXNlbmQoaXBvaW50KzEpID0gcmVudW1iZXIodmVydCkKICAgICAgICAgICAgICAgICAgaXBvaW50
ID0gaXBvaW50ICsgMQogICAgICAgICAgICAgICBlbmQgZG8KICAgICAgICAgICAgZW5kaWYKICAg
ICAgICAgICAgZWxlbSA9IGdyaWQlZWxlbWVudChlbGVtKSVuZXh0CiAgICAgICAgIGVuZCBkbwog
ICAgICBlbmQgZG8KCiEgZWRnZXMKCiAgICAgIGlmIChnbG9iYWxfZWxlbWVudF9raW5kID09IFRS
SUFOR1VMQVJfRUxFTUVOVCkgdGhlbgogICAgICAgICBmaXJzdGxldiA9IDEKICAgICAgZWxzZQog
ICAgICAgICBmaXJzdGxldiA9IDIKICAgICAgICAgZG8gZWRnZT0xLGdyaWQlaW5pdF9uZWRnZQog
ICAgICAgICAgICB2aXNpdGVkX2VkZ2UoZWRnZSkgPSAudHJ1ZS4KICAgICAgICAgICAgaWYgKC5u
b3QuIG9ubHlfZ21zaCAuYW5kLiBncmlkJWVkZ2UoZWRnZSklYm1hcmsgPT0gMCkgY3ljbGUKICAg
ICAgICAgICAgaWYgKG9ubHlfZ21zaCAuYW5kLiAubm90LiBncmlkJWVkZ2UoZWRnZSklZ21zaF9l
bGVtZW50KSBjeWNsZQogICAgICAgICAgICBpZiAoZ3JpZCVlZGdlKGVkZ2UpJWNoaWxkKDEpIC89
IE5PX0NISUxEKSBjeWNsZQogICAgICAgICAgICBuZWxlbWVudCA9IG5lbGVtZW50ICsgMQogICAg
ICAgICAgICBpc2VuZChpcG9pbnQrMSkgPSBuZWxlbWVudAogICAgICAgICAgICBpc2VuZChpcG9p
bnQrMikgPSAxICAgISAyLW5vZGUgbGluZQogICAgICAgICAgICBpc2VuZChpcG9pbnQrMykgPSBu
dGFnCiAgICAgICAgICAgIGlmIChudGFnIC89IDEpIHRoZW4KICAgICAgICAgICAgICAgaWYgKHNl
bV9zaW11bGF0aW9uKSB0aGVuCiAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCs0Omlwb2lu
dCszK250YWcpID0gZ3JpZCVlZGdlKGVkZ2UpJXRhZ3Mobm9jaGFyZ2UpCiAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgaXNlbmQoaXBvaW50KzQ6aXBvaW50KzMrbnRhZykgPSBn
cmlkJWVkZ2UoZWRnZSkldGFncygxOm50YWcpCiAgICAgICAgICAgICAgIGVuZGlmCiAgICAgICAg
ICAgIGVuZGlmCiAgICAgICAgICAgIGlzZW5kKGlwb2ludCs0KSA9IGdyaWQlZWRnZShlZGdlKSVi
bWFyawogICAgICAgICAgICBpcG9pbnQgPSBpcG9pbnQgKyAzK250YWcKICAgICAgICAgICAgaXNl
bmQoaXBvaW50KzE6aXBvaW50KzIpID0gcmVudW1iZXIoZ3JpZCVlZGdlKGVkZ2UpJXZlcnRleCkK
ICAgICAgICAgICAgaXBvaW50ID0gaXBvaW50ICsgMgogICAgICAgICBlbmQgZG8KICAgICAgZW5k
aWYKCiAgICAgIGRvIGxldj1maXJzdGxldixncmlkJW5sZXYKICAgICAgICAgZWxlbSA9IGdyaWQl
aGVhZF9sZXZlbF9lbGVtKGxldikKICAgICAgICAgZG8gd2hpbGUgKGVsZW0gLz0gRU5EX09GX0xJ
U1QpCiAgICAgICAgICAgIGlmIChncmlkJWVsZW1lbnQoZWxlbSklaXNsZWFmKSB0aGVuCiAgICAg
ICAgICAgICAgIGRvIGk9MSxFREdFU19QRVJfRUxFTUVOVAogICAgICAgICAgICAgICAgICBlZGdl
ID0gZ3JpZCVlbGVtZW50KGVsZW0pJWVkZ2UoaSkKICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0
ZWRfZWRnZShlZGdlKSkgY3ljbGUKICAgICAgICAgICAgICAgICAgdmlzaXRlZF9lZGdlKGVkZ2Up
ID0gLnRydWUuCiAgICAgICAgICAgICAgICAgIGlmICgubm90LiBvbmx5X2dtc2ggLmFuZC4gZ3Jp
ZCVlZGdlKGVkZ2UpJWJtYXJrID09IDApIGN5Y2xlCiAgICAgICAgICAgICAgICAgIGlmIChvbmx5
X2dtc2ggLmFuZC4gLm5vdC4gZ3JpZCVlZGdlKGVkZ2UpJWdtc2hfZWxlbWVudCkgY3ljbGUKICAg
ICAgICAgICAgICAgICAgaWYgKGdsb2JhbF9lbGVtZW50X2tpbmQgPT0gVEVUUkFIRURSQUxfRUxF
TUVOVCkgdGhlbgogICAgICAgICAgICAgICAgICAgICBpZiAoZ3JpZCVlZGdlKGVkZ2UpJWNoaWxk
KDEpIC89IE5PX0NISUxEKSBjeWNsZQogICAgICAgICAgICAgICAgICBlbmRpZgogICAgICAgICAg
ICAgICAgICBuZWxlbWVudCA9IG5lbGVtZW50ICsgMQogICAgICAgICAgICAgICAgICBpc2VuZChp
cG9pbnQrMSkgPSBuZWxlbWVudAogICAgICAgICAgICAgICAgICBpc2VuZChpcG9pbnQrMikgPSAx
ICAgISAyLW5vZGUgbGluZQogICAgICAgICAgICAgICAgICBpc2VuZChpcG9pbnQrMykgPSBudGFn
CiAgICAgICAgICAgICAgICAgIGlmIChudGFnIC89IDEpIHRoZW4KICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNlbV9zaW11bGF0aW9uKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGlzZW5k
KGlwb2ludCs0Omlwb2ludCszK250YWcpID0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdyaWQlZWRnZShlZGdlKSV0YWdzKG5vY2hhcmdlKQogICAg
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2lu
dCs0Omlwb2ludCszK250YWcpID0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdyaWQlZWRnZShlZGdlKSV0YWdzKDE6bnRhZykKICAgICAgICAgICAg
ICAgICAgICAgZW5kaWYKICAgICAgICAgICAgICAgICAgZW5kaWYKICAgICAgICAgICAgICAgICAg
aXNlbmQoaXBvaW50KzQpID0gZ3JpZCVlZGdlKGVkZ2UpJWJtYXJrCiAgICAgICAgICAgICAgICAg
IGlwb2ludCA9IGlwb2ludCArIDMrbnRhZwogICAgICAgICAgICAgICAgICBpc2VuZChpcG9pbnQr
MTppcG9pbnQrMikgPSByZW51bWJlcihncmlkJWVkZ2UoZWRnZSkldmVydGV4KQogICAgICAgICAg
ICAgICAgICBpcG9pbnQgPSBpcG9pbnQgKyAyCiAgICAgICAgICAgICAgIGVuZCBkbwogICAgICAg
ICAgICBlbmRpZgogICAgICAgICAgICBlbGVtID0gZ3JpZCVlbGVtZW50KGVsZW0pJW5leHQKICAg
ICAgICAgZW5kIGRvCiAgICAgIGVuZCBkbwoKISBmYWNlcwoKICAgICAgaWYgKGdsb2JhbF9lbGVt
ZW50X2tpbmQgPT0gVEVUUkFIRURSQUxfRUxFTUVOVCkgdGhlbgoKICAgICAgICAgZG8gZmFjZT0x
LGdyaWQlaW5pdF9uZmFjZQogICAgICAgICAgICB2aXNpdGVkX2ZhY2UoZmFjZSkgPSAudHJ1ZS4K
ICAgICAgICAgICAgaWYgKC5ub3QuIG9ubHlfZ21zaCAuYW5kLiBncmlkJWZhY2UoZmFjZSklYm1h
cmsgPT0gMCkgY3ljbGUKICAgICAgICAgICAgaWYgKG9ubHlfZ21zaCAuYW5kLiAubm90LiBncmlk
JWZhY2UoZmFjZSklZ21zaF9lbGVtZW50KSBjeWNsZQogICAgICAgICAgICBpZiAoZ3JpZCVmYWNl
KGZhY2UpJWNoaWxkKDEpIC89IE5PX0NISUxEKSBjeWNsZQogICAgICAgICAgICBuZWxlbWVudCA9
IG5lbGVtZW50ICsgMQogICAgICAgICAgICBpc2VuZChpcG9pbnQrMSkgPSBuZWxlbWVudAogICAg
ICAgICAgICBpc2VuZChpcG9pbnQrMikgPSAyICAgICEgMy1ub2RlIHRyaWFuZ2xlCiAgICAgICAg
ICAgIGlzZW5kKGlwb2ludCszKSA9IG50YWcKICAgICAgICAgICAgaWYgKG50YWcgLz0gMSkgdGhl
bgogICAgICAgICAgICAgICBpZiAoc2VtX3NpbXVsYXRpb24pIHRoZW4KICAgICAgICAgICAgICAg
ICAgaXNlbmQoaXBvaW50KzQ6aXBvaW50KzMrbnRhZykgPSBncmlkJWZhY2UoZmFjZSkldGFncyhu
b2NoYXJnZSkKICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICBpc2VuZChpcG9p
bnQrNDppcG9pbnQrMytudGFnKSA9IGdyaWQlZmFjZShmYWNlKSV0YWdzKDE6bnRhZykKICAgICAg
ICAgICAgICAgZW5kaWYKICAgICAgICAgICAgZW5kaWYKICAgICAgICAgICAgaXNlbmQoaXBvaW50
KzQpID0gZ3JpZCVmYWNlKGZhY2UpJWJtYXJrCiAgICAgICAgICAgIGlwb2ludCA9IGlwb2ludCAr
IDMrbnRhZwogICAgICAgICAgICBpc2VuZChpcG9pbnQrMTppcG9pbnQrMykgPSByZW51bWJlcihn
cmlkJWZhY2UoZmFjZSkldmVydGV4KQogICAgICAgICAgICBpcG9pbnQgPSBpcG9pbnQgKyAzCiAg
ICAgICAgIGVuZCBkbwoKICAgICAgICAgZG8gbGV2PTIsZ3JpZCVubGV2CiAgICAgICAgICAgIGVs
ZW0gPSBncmlkJWhlYWRfbGV2ZWxfZWxlbShsZXYpCiAgICAgICAgICAgIGRvIHdoaWxlIChlbGVt
IC89IEVORF9PRl9MSVNUKQogICAgICAgICAgICAgICBpZiAoZ3JpZCVlbGVtZW50KGVsZW0pJWlz
bGVhZikgdGhlbgogICAgICAgICAgICAgICAgICBkbyBpPTEsRkFDRVNfUEVSX0VMRU1FTlQKICAg
ICAgICAgICAgICAgICAgICAgZmFjZSA9IGdyaWQlZWxlbWVudChlbGVtKSVmYWNlKGkpCiAgICAg
ICAgICAgICAgICAgICAgIGlmICh2aXNpdGVkX2ZhY2UoZmFjZSkpIGN5Y2xlCiAgICAgICAgICAg
ICAgICAgICAgIHZpc2l0ZWRfZmFjZShmYWNlKSA9IC50cnVlLgogICAgICAgICAgICAgICAgICAg
ICBpZiAoLm5vdC4gb25seV9nbXNoIC5hbmQuIGdyaWQlZmFjZShmYWNlKSVibWFyayA9PSAwKSBj
eWNsZQogICAgICAgICAgICAgICAgICAgICBpZiAob25seV9nbXNoIC5hbmQuIC5ub3QuZ3JpZCVm
YWNlKGZhY2UpJWdtc2hfZWxlbWVudCljeWNsZQogICAgICAgICAgICAgICAgICAgICBpZiAoZ3Jp
ZCVmYWNlKGZhY2UpJWNoaWxkKDEpIC89IE5PX0NISUxEKSBjeWNsZQogICAgICAgICAgICAgICAg
ICAgICBuZWxlbWVudCA9IG5lbGVtZW50ICsgMQogICAgICAgICAgICAgICAgICAgICBpc2VuZChp
cG9pbnQrMSkgPSBuZWxlbWVudAogICAgICAgICAgICAgICAgICAgICBpc2VuZChpcG9pbnQrMikg
PSAyICAgICEgMy1ub2RlIHRyaWFuZ2xlCiAgICAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2lu
dCszKSA9IG50YWcKICAgICAgICAgICAgICAgICAgICAgaWYgKG50YWcgLz0gMSkgdGhlbgogICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2VtX3NpbXVsYXRpb24pIHRoZW4KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXNlbmQoaXBvaW50KzQ6aXBvaW50KzMrbnRhZykgPSAmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZCVmYWNlKGZhY2Up
JXRhZ3Mobm9jaGFyZ2UpCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaXNlbmQoaXBvaW50KzQ6aXBvaW50KzMrbnRhZykgPSAmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZCVmYWNlKGZhY2Up
JXRhZ3MoMTpudGFnKQogICAgICAgICAgICAgICAgICAgICAgICBlbmRpZgogICAgICAgICAgICAg
ICAgICAgICBlbmRpZgogICAgICAgICAgICAgICAgICAgICBpc2VuZChpcG9pbnQrNCkgPSBncmlk
JWZhY2UoZmFjZSklYm1hcmsKICAgICAgICAgICAgICAgICAgICAgaXBvaW50ID0gaXBvaW50ICsg
MytudGFnCiAgICAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCsxOmlwb2ludCszKSA9IHJl
bnVtYmVyKGdyaWQlZmFjZShmYWNlKSV2ZXJ0ZXgpCiAgICAgICAgICAgICAgICAgICAgIGlwb2lu
dCA9IGlwb2ludCArIDMKICAgICAgICAgICAgICAgICAgZW5kIGRvCiAgICAgICAgICAgICAgIGVu
ZGlmCiAgICAgICAgICAgICAgIGVsZW0gPSBncmlkJWVsZW1lbnQoZWxlbSklbmV4dAogICAgICAg
ICAgICBlbmQgZG8KICAgICAgICAgZW5kIGRvCiAgICAgIGVuZGlmICEgVEVUUkFIRURSQUxfRUxF
TUVOVAogICBlbmRpZiAhIG5vdCBub2JvdW5kYXJ5CgohIGVsZW1lbnRzCgogICBkbyBlbGVtPTEs
Z3JpZCVpbml0X25lbGVtCiAgICAgIGlmIChncmlkJWVsZW1lbnQoZWxlbSklaXNsZWFmKSB0aGVu
CiAgICAgICAgIG5lbGVtZW50ID0gbmVsZW1lbnQgKyAxCiAgICAgICAgIGlzZW5kKGlwb2ludCsx
KSA9IG5lbGVtZW50CiAgICAgICAgIHNlbGVjdCBjYXNlIChnbG9iYWxfZWxlbWVudF9raW5kKQog
ICAgICAgICBjYXNlIChUUklBTkdVTEFSX0VMRU1FTlQpCiAgICAgICAgICAgIGlzZW5kKGlwb2lu
dCsyKSA9IDIgICAgISAzLW5vZGUgdHJpYW5nbGUKICAgICAgICAgY2FzZSAoVEVUUkFIRURSQUxf
RUxFTUVOVCkKICAgICAgICAgICAgaXNlbmQoaXBvaW50KzIpID0gNCAgICAhIDQtbm9kZSB0ZXRy
YWhlZHJvbgogICAgICAgICBlbmQgc2VsZWN0CiAgICAgICAgIGlmIChNQVhfVEFHID09IDAgLm9y
LiBub3RhZ3MpIHRoZW4KICAgICAgICAgICAgaXNlbmQoaXBvaW50KzMpID0gMAogICAgICAgICAg
ICBpcG9pbnQgPSBpcG9pbnQgKyAzCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgaXNlbmQoaXBv
aW50KzMpID0gbnRhZwogICAgICAgICAgICBpZiAoc2VtX3NpbXVsYXRpb24pIHRoZW4KICAgICAg
ICAgICAgICBpc2VuZChpcG9pbnQrNDppcG9pbnQrMytudGFnKT1ncmlkJWVsZW1lbnQoZWxlbSkl
dGFncyhub2NoYXJnZSkKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICBpc2VuZChpcG9p
bnQrNDppcG9pbnQrMytudGFnKT1ncmlkJWVsZW1lbnQoZWxlbSkldGFncygxOm50YWcpCiAgICAg
ICAgICAgIGVuZGlmCiAgICAgICAgICAgIGlwb2ludCA9IGlwb2ludCArIDMrbnRhZwogICAgICAg
ICBlbmRpZgogICAgICAgICBzZWxlY3QgY2FzZSAoZ2xvYmFsX2VsZW1lbnRfa2luZCkKICAgICAg
ICAgY2FzZSAoVFJJQU5HVUxBUl9FTEVNRU5UKQogICAgICAgICAgICBpc2VuZChpcG9pbnQrMTpp
cG9pbnQrMykgPSBncmlkJWVsZW1lbnQoZWxlbSkldmVydGV4CiEgb3JpZW50IHRyaWFuZ2xlcyBj
bG9ja3dpc2UKICAgICAgICAgICAgaWYgKChncmlkJXZlcnRleChpc2VuZChpcG9pbnQrMikpJWNv
b3JkJXggLSAmCiAgICAgICAgICAgICAgICAgZ3JpZCV2ZXJ0ZXgoaXNlbmQoaXBvaW50KzEpKSVj
b29yZCV4KSAqICYKICAgICAgICAgICAgICAgIChncmlkJXZlcnRleChpc2VuZChpcG9pbnQrMykp
JWNvb3JkJXkgLSAmCiAgICAgICAgICAgICAgICAgZ3JpZCV2ZXJ0ZXgoaXNlbmQoaXBvaW50KzEp
KSVjb29yZCV5KSAtICYKICAgICAgICAgICAgICAgIChncmlkJXZlcnRleChpc2VuZChpcG9pbnQr
MykpJWNvb3JkJXggLSAmCiAgICAgICAgICAgICAgICAgZ3JpZCV2ZXJ0ZXgoaXNlbmQoaXBvaW50
KzEpKSVjb29yZCV4KSAqICYKICAgICAgICAgICAgICAgIChncmlkJXZlcnRleChpc2VuZChpcG9p
bnQrMikpJWNvb3JkJXkgLSAmCiAgICAgICAgICAgICAgICAgZ3JpZCV2ZXJ0ZXgoaXNlbmQoaXBv
aW50KzEpKSVjb29yZCV5KSA+IDAuMF9teV9yZWFsKSB0aGVuCiAgICAgICAgICAgICAgIGl0ZW1w
ID0gaXNlbmQoaXBvaW50KzEpCiAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCsxKSA9IGlzZW5k
KGlwb2ludCsyKQogICAgICAgICAgICAgICBpc2VuZChpcG9pbnQrMikgPSBpdGVtcAogICAgICAg
ICAgICBlbmRpZgogICAgICAgICAgICBpc2VuZChpcG9pbnQrMTppcG9pbnQrMykgPSByZW51bWJl
cihpc2VuZChpcG9pbnQrMTppcG9pbnQrMykpCiAgICAgICAgICAgIGlwb2ludCA9IGlwb2ludCAr
IDMKICAgICAgICAgY2FzZSAoVEVUUkFIRURSQUxfRUxFTUVOVCkKICAgICAgICAgICAgaXNlbmQo
aXBvaW50KzE6aXBvaW50KzQpID0gcmVudW1iZXIoZ3JpZCVlbGVtZW50KGVsZW0pJXZlcnRleCkK
ICAgICAgICAgICAgaXBvaW50ID0gaXBvaW50ICsgNAogICAgICAgICBlbmQgc2VsZWN0CiAgICAg
IGVuZGlmCiAgIGVuZCBkbwoKICAgZG8gbGV2PTIsZ3JpZCVubGV2CiAgICAgIGVsZW0gPSBncmlk
JWhlYWRfbGV2ZWxfZWxlbShsZXYpCiAgICAgIGRvIHdoaWxlIChlbGVtIC89IEVORF9PRl9MSVNU
KQogICAgICAgICBpZiAoZ3JpZCVlbGVtZW50KGVsZW0pJWlzbGVhZikgdGhlbgogICAgICAgICAg
ICBuZWxlbWVudCA9IG5lbGVtZW50ICsgMQogICAgICAgICAgICBpc2VuZChpcG9pbnQrMSkgPSBu
ZWxlbWVudAogICAgICAgICAgICBzZWxlY3QgY2FzZSAoZ2xvYmFsX2VsZW1lbnRfa2luZCkKICAg
ICAgICAgICAgY2FzZSAoVFJJQU5HVUxBUl9FTEVNRU5UKQogICAgICAgICAgICAgICBpc2VuZChp
cG9pbnQrMikgPSAyICAgICEgMy1ub2RlIHRyaWFuZ2xlCiAgICAgICAgICAgIGNhc2UgKFRFVFJB
SEVEUkFMX0VMRU1FTlQpCiAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCsyKSA9IDQgICAgISA0
LW5vZGUgdGV0cmFoZWRyb24KICAgICAgICAgICAgZW5kIHNlbGVjdAogICAgICAgICAgICBpZiAo
TUFYX1RBRyA9PSAwIC5vci4gbm90YWdzKSB0aGVuCiAgICAgICAgICAgICAgIGlzZW5kKGlwb2lu
dCszKSA9IDAKICAgICAgICAgICAgICAgaXBvaW50ID0gaXBvaW50ICsgMwogICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCszKSA9IG50YWcKICAgICAgICAgICAgICAg
aWYgKHNlbV9zaW11bGF0aW9uKSB0aGVuCiAgICAgICAgICAgICAgICAgaXNlbmQoaXBvaW50KzQ6
aXBvaW50KzMrbnRhZyk9Z3JpZCVlbGVtZW50KGVsZW0pJXRhZ3Mobm9jaGFyZ2UpCiAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgaXNlbmQoaXBvaW50KzQ6aXBvaW50KzMrbnRh
Zyk9Z3JpZCVlbGVtZW50KGVsZW0pJXRhZ3MoMTpudGFnKQogICAgICAgICAgICAgICBlbmRpZgog
ICAgICAgICAgICAgICBpcG9pbnQgPSBpcG9pbnQgKyAzK250YWcKICAgICAgICAgICAgZW5kaWYK
ICAgICAgICAgICAgc2VsZWN0IGNhc2UgKGdsb2JhbF9lbGVtZW50X2tpbmQpCiAgICAgICAgICAg
IGNhc2UgKFRSSUFOR1VMQVJfRUxFTUVOVCkKICAgICAgICAgICAgICAgaXNlbmQoaXBvaW50KzE6
aXBvaW50KzMpID0gZ3JpZCVlbGVtZW50KGVsZW0pJXZlcnRleAohIG9yaWVudCB0cmlhbmdsZXMg
Y2xvY2t3aXNlCiAgICAgICAgICAgICAgIGlmICgoZ3JpZCV2ZXJ0ZXgoaXNlbmQoaXBvaW50KzIp
KSVjb29yZCV4IC0gJgogICAgICAgICAgICAgICAgICAgIGdyaWQldmVydGV4KGlzZW5kKGlwb2lu
dCsxKSklY29vcmQleCkgKiAmCiAgICAgICAgICAgICAgICAgICAoZ3JpZCV2ZXJ0ZXgoaXNlbmQo
aXBvaW50KzMpKSVjb29yZCV5IC0gJgogICAgICAgICAgICAgICAgICAgIGdyaWQldmVydGV4KGlz
ZW5kKGlwb2ludCsxKSklY29vcmQleSkgLSAmCiAgICAgICAgICAgICAgICAgICAoZ3JpZCV2ZXJ0
ZXgoaXNlbmQoaXBvaW50KzMpKSVjb29yZCV4IC0gJgogICAgICAgICAgICAgICAgICAgIGdyaWQl
dmVydGV4KGlzZW5kKGlwb2ludCsxKSklY29vcmQleCkgKiAmCiAgICAgICAgICAgICAgICAgICAo
Z3JpZCV2ZXJ0ZXgoaXNlbmQoaXBvaW50KzIpKSVjb29yZCV5IC0gJgogICAgICAgICAgICAgICAg
ICAgIGdyaWQldmVydGV4KGlzZW5kKGlwb2ludCsxKSklY29vcmQleSkgPiAwLjBfbXlfcmVhbCkg
dGhlbgogICAgICAgICAgICAgICAgICBpdGVtcCA9IGlzZW5kKGlwb2ludCsxKQogICAgICAgICAg
ICAgICAgICBpc2VuZChpcG9pbnQrMSkgPSBpc2VuZChpcG9pbnQrMikKICAgICAgICAgICAgICAg
ICAgaXNlbmQoaXBvaW50KzIpID0gaXRlbXAKICAgICAgICAgICAgICAgZW5kaWYKICAgICAgICAg
ICAgICAgaXNlbmQoaXBvaW50KzE6aXBvaW50KzMpID0gcmVudW1iZXIoaXNlbmQoaXBvaW50KzE6
aXBvaW50KzMpKQogICAgICAgICAgICAgICBpcG9pbnQgPSBpcG9pbnQgKyAzCiAgICAgICAgICAg
IGNhc2UgKFRFVFJBSEVEUkFMX0VMRU1FTlQpCiAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCsx
Omlwb2ludCs0KSA9IHJlbnVtYmVyKGdyaWQlZWxlbWVudChlbGVtKSV2ZXJ0ZXgpCiAgICAgICAg
ICAgICAgIGlwb2ludCA9IGlwb2ludCArIDQKICAgICAgICAgICAgZW5kIHNlbGVjdAogICAgICAg
ICBlbmRpZgogICAgICAgICBlbGVtID0gZ3JpZCVlbGVtZW50KGVsZW0pJW5leHQKICAgICAgZW5k
IGRvCiAgIGVuZCBkbwoKICAgaXNlbmQoMSkgPSBuZWxlbWVudAogICBuaSA9IGlwb2ludAogICBp
ZiAocGFyYWxsZWwgPT0gU0VRVUVOVElBTCkgdGhlbgogICAgICBpcmVjdiA9PiBpc2VuZAogICBl
bHNlCiAgICAgIGNhbGwgcGhhbWxfc2VuZChwcm9jcyxNQVNURVIsaXNlbmQsbmksKC8wLjBfbXlf
cmVhbC8pLDAsNzUxKQogICBlbmRpZgplbHNlICEgTUFTVEVSCiAgIGNhbGwgcGhhbWxfcmVjdihw
cm9jcyxwcm9jLGlyZWN2LG5pLHJyZWN2LG5yLDc1MSkKZW5kaWYKCmlmIChpcHJpbnQpIHRoZW4K
ICAgd3JpdGUodW5pdCwiKEEpIikgIiRFbGVtZW50cyIKICAgd3JpdGUodW5pdCwiKEkxMSkiKSBp
cmVjdigxKQogICBmbWF0ID0gIiggICAgSTExKSIKCiAgIGlwb2ludCA9IDEKICAgZG8gaT0xLGly
ZWN2KDEpCiAgICAgIHNlbGVjdCBjYXNlIChpcmVjdihpcG9pbnQrMikpICEgZWxlbWVudCB0eXBl
CiAgICAgIGNhc2UgKDE1KSAhIHBvaW50CiAgICAgICAgIG52YWwgPSA0K2lyZWN2KGlwb2ludCsz
KQogICAgICBjYXNlICgxKSAhIGxpbmUKICAgICAgICAgbnZhbCA9IDUraXJlY3YoaXBvaW50KzMp
CiAgICAgIGNhc2UgKDIpICEgdHJpYW5nbGUKICAgICAgICAgbnZhbCA9IDYraXJlY3YoaXBvaW50
KzMpCiAgICAgIGNhc2UgKDQpICEgdGV0cmFoZWRyb24KICAgICAgICAgbnZhbCA9IDcraXJlY3Yo
aXBvaW50KzMpCiAgICAgIGVuZCBzZWxlY3QKICAgICAgd3JpdGUoZm1hdCgyOjUpLCIoSTMpIikg
bnZhbAogICAgICB3cml0ZSh1bml0LGZtYXQpIGlyZWN2KGlwb2ludCsxOmlwb2ludCtudmFsKQog
ICAgICBpcG9pbnQgPSBpcG9pbnQgKyBudmFsCiAgIGVuZCBkbwoKICAgd3JpdGUodW5pdCwiKEEp
IikgIiRFbmRFbGVtZW50cyIKZW5kaWYKCmlmIChwYXJhbGxlbCA9PSBTRVFVRU5USUFMKSB0aGVu
CiAgIG51bGxpZnkoaXJlY3YpCiAgIGRlYWxsb2NhdGUoaXNlbmQpCmVsc2UKICAgaWYgKGFsbG9j
YXRlZChpc2VuZCkpIGRlYWxsb2NhdGUoaXNlbmQpCiAgIGlmIChhc3NvY2lhdGVkKGlyZWN2KSkg
ZGVhbGxvY2F0ZShpcmVjdikKICAgaWYgKGFzc29jaWF0ZWQocnJlY3YpKSBkZWFsbG9jYXRlKHJy
ZWN2KQplbmRpZgoKaWYgKHNlbV9zaW11bGF0aW9uKSBkZWFsbG9jYXRlKG5vY2hhcmdlKQoKISBv
dXRwdXQgc29sdXRpb24gYXQgdmVydGljZXMKCmlmIChmbXQgPT0gR1JJREZJTEVfTVNIX1NPTE4p
IHRoZW4KCiAgIG5zb2x1dCA9IDEKICAgaWYgKGNvbXAgPT0gLTEpICBuc29sdXQgPSBuc29sdXQq
c2l6ZV92ZXJ0X3NvbG4oZ3JpZCxkaW09Q09NUF9ESU0pCiAgIGlmIChlaWdlbiA9PSAtMSkgbnNv
bHV0ID0gbnNvbHV0KnNpemVfdmVydF9zb2xuKGdyaWQsZGltPUVJR0VOX0RJTSkKICAgaWYgKG5z
b2x1dCA+IDk5OSkgdGhlbgogICAgICBjYWxsIHdhcm5pbmcoIlRvbyBtYW55IHNvbHV0aW9ucyBw
ZXIgdmVydGV4IGluIHN0b3JlX2dyaWRfbXNoIiwgJgogICAgICAgICAgICAgICAgICAgIlNvbHV0
aW9ucyBub3QgaW5jbHVkZWQgaW4gZ3JpZCBmaWxlIikKICAgICAgcmV0dXJuCiAgIGVuZGlmCgog
ICBpZiAobXlwcm9jID09IDEpIHRoZW4KICAgICAgYWxsb2NhdGUoaXNlbmQoZ3JpZCVudmVydCsx
KSxyc2VuZChuc29sdXQqZ3JpZCVudmVydCksc3RhdD1hc3RhdCkKICAgICAgaWYgKGFzdGF0IC89
IDApIHRoZW4KICAgICAgICAgaWVyciA9IEFMTE9DX0ZBSUxFRAogICAgICAgICBjYWxsIGZhdGFs
KCJhbGxvY2F0aW9uIGZhaWxlZCBpbiBzdG9yZV9ncmlkX21zaCIscHJvY3M9cHJvY3MpCiAgICAg
ICAgIHN0b3AKICAgICAgZW5kaWYKICAgICAgaXNlbmQoMSkgPSBncmlkJW52ZXJ0CiAgICAgIGlw
b2ludCA9IDEKICAgICAgcnBvaW50ID0gMAogICAgICB2aXNpdGVkX3ZlcnQgPSAuZmFsc2UuCiAg
ICAgIGRvIGxldj0xLGdyaWQlbmxldgogICAgICAgICBlbGVtID0gZ3JpZCVoZWFkX2xldmVsX2Vs
ZW0obGV2KQogICAgICAgICBkbyB3aGlsZSAoZWxlbSAvPSBFTkRfT0ZfTElTVCkKICAgICAgICAg
ICAgaWYgKGdyaWQlZWxlbWVudChlbGVtKSVpc2xlYWYpIHRoZW4KICAgICAgICAgICAgICAgZG8g
aXZlcnQ9MSxWRVJUSUNFU19QRVJfRUxFTUVOVAogICAgICAgICAgICAgICAgICB2ZXJ0ID0gZ3Jp
ZCVlbGVtZW50KGVsZW0pJXZlcnRleChpdmVydCkKICAgICAgICAgICAgICAgICAgaWYgKHZpc2l0
ZWRfdmVydCh2ZXJ0KSkgY3ljbGUKICAgICAgICAgICAgICAgICAgdmlzaXRlZF92ZXJ0KHZlcnQp
ID0gLnRydWUuCiAgICAgICAgICAgICAgICAgIGlzZW5kKGlwb2ludCsxKSA9IHJlbnVtYmVyKHZl
cnQpCiAgICAgICAgICAgICAgICAgIGlwb2ludCA9IGlwb2ludCArIDEKICAgICAgICAgICAgICAg
ICAgaWYgKGNvbXAgPT0gLTEpIHRoZW4KICAgICAgICAgICAgICAgICAgICAgaWYgKGVpZ2VuID09
IC0xKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHJzZW5kKHJwb2ludCsxOnJwb2ludCtu
c29sdXQpID0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICByZXNoYXBlKGdldF92ZXJ0X3Nv
bG4oZ3JpZCx2ZXJ0LGNvbG9uLGNvbG9uKSwoL25zb2x1dC8pKQogICAgICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIHJzZW5kKHJwb2ludCsxOnJwb2ludCtuc29s
dXQpID0gJgogICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfdmVydF9zb2xuKGdyaWQsdmVy
dCxjb2xvbixlaWdlbikKICAgICAgICAgICAgICAgICAgICAgZW5kaWYKICAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBpZiAoZWlnZW4gPT0gLTEpIHRoZW4KICAgICAg
ICAgICAgICAgICAgICAgICAgcnNlbmQocnBvaW50KzE6cnBvaW50K25zb2x1dCkgPSAmCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldF92ZXJ0X3NvbG4oZ3JpZCx2ZXJ0LGNvbXAsY29sb24p
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgcnNlbmQo
cnBvaW50KzEpID0gZ2V0X3ZlcnRfc29sbihncmlkLHZlcnQsY29tcCxlaWdlbikKICAgICAgICAg
ICAgICAgICAgICAgZW5kaWYKICAgICAgICAgICAgICAgICAgZW5kaWYKICAgICAgICAgICAgICAg
ICAgcnBvaW50ID0gcnBvaW50ICsgbnNvbHV0CiAgICAgICAgICAgICAgIGVuZCBkbwogICAgICAg
ICAgICBlbmRpZgogICAgICAgICAgICBlbGVtID0gZ3JpZCVlbGVtZW50KGVsZW0pJW5leHQKICAg
ICAgICAgZW5kIGRvCiAgICAgIGVuZCBkbwogICAgICBuaSA9IGlwb2ludAogICAgICBuciA9IHJw
b2ludAogICAgICBpZiAocGFyYWxsZWwgPT0gU0VRVUVOVElBTCkgdGhlbgogICAgICAgICBpcmVj
diA9PiBpc2VuZAogICAgICAgICBycmVjdiA9PiByc2VuZAogICAgICBlbHNlCiAgICAgICAgIGNh
bGwgcGhhbWxfc2VuZChwcm9jcyxNQVNURVIsaXNlbmQsbmkscnNlbmQsbnIsNzUwKQogICAgICBl
bmRpZgogICBlbHNlICEgTUFTVEVSCiAgICAgIGNhbGwgcGhhbWxfcmVjdihwcm9jcyxwcm9jLGly
ZWN2LG5pLHJyZWN2LG5yLDc1MCkKICAgZW5kaWYKCiAgIGlmIChpcHJpbnQpIHRoZW4KICAgICAg
Zm1hdCA9ICIoU1MsMVAsSTExLCAgICBFMjEuMTNFMikiCiAgICAgIHdyaXRlKGZtYXQoMTI6MTUp
LCIoSTMpIikgbnNvbHV0CgogICAgICB3cml0ZSh1bml0LCIoQSkiKSAiJE5vZGVEYXRhIgogICAg
ICB3cml0ZSh1bml0LCIoSTIpIikgMQogICAgICB3cml0ZSh1bml0LCIoQSkiKSAiU29sdXRpb24i
CiAgICAgIHdyaXRlKHVuaXQsIihJMikiKSAxCiAgICAgIHdyaXRlKHVuaXQsIihGNC4xKSIpIDAu
MAogICAgICB3cml0ZSh1bml0LCIoSTIpIikgMwogICAgICB3cml0ZSh1bml0LCIoSTIpIikgMAog
ICAgICB3cml0ZSh1bml0LCIoSTQpIikgbnNvbHV0CiAgICAgIHdyaXRlKHVuaXQsIihJMTEpIikg
aXJlY3YoMSkKCiAgICAgIGlwb2ludCA9IDEKICAgICAgcnBvaW50ID0gMAogICAgICBkbyBpPTIs
aXJlY3YoMSkrMQogICAgICAgICB3cml0ZSh1bml0LGZtYXQpIGlyZWN2KGlwb2ludCsxKSwgcnJl
Y3YocnBvaW50KzE6cnBvaW50K25zb2x1dCkKICAgICAgICAgaXBvaW50ID0gaXBvaW50ICsgMQog
ICAgICAgICBycG9pbnQgPSBycG9pbnQgKyBuc29sdXQKICAgICAgZW5kIGRvCiAgICAgIHdyaXRl
KHVuaXQsIihBKSIpICIkRW5kTm9kZURhdGEiCiAgIGVuZGlmCgogICBpZiAocGFyYWxsZWwgPT0g
U0VRVUVOVElBTCkgdGhlbgogICAgICBudWxsaWZ5KGlyZWN2LHJyZWN2KQogICAgICBkZWFsbG9j
YXRlKGlzZW5kLHJzZW5kKQogICBlbHNlCiAgICAgIGlmIChhbGxvY2F0ZWQoaXNlbmQpKSBkZWFs
bG9jYXRlKGlzZW5kKQogICAgICBpZiAoYWxsb2NhdGVkKHJzZW5kKSkgZGVhbGxvY2F0ZShyc2Vu
ZCkKICAgICAgaWYgKGFzc29jaWF0ZWQoaXJlY3YpKSBkZWFsbG9jYXRlKGlyZWN2KQogICAgICBp
ZiAoYXNzb2NpYXRlZChycmVjdikpIGRlYWxsb2NhdGUocnJlY3YpCiAgIGVuZGlmCgplbmRpZgoK
ZW5kIHN1YnJvdXRpbmUgc3RvcmVfZ3JpZF9tc2gKCmVuZCBtb2R1bGUgZ3JpZF9pbwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>