<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>154649</bug_id>
          
          <creation_ts>2016-02-24 12:39:56 -0800</creation_ts>
          <short_desc>REGRESSION(r197033): &quot;It broke JSC tests when &apos;this&apos; was loaded from global scope&quot; (Requested by saamyjoon on #webkit).</short_desc>
          <delta_ts>2016-02-24 12:46:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>153981</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>gskachkov</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1167885</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-24 12:39:56 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197033 broke the build:
&quot;It broke JSC tests when &apos;this&apos; was loaded from global scope&quot; (Requested by saamyjoon on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167887</commentid>
    <comment_count>1</comment_count>
      <attachid>272140</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-24 12:40:31 -0800</bug_when>
    <thetext>Created attachment 272140
ROLLOUT of r197033

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167892</commentid>
    <comment_count>2</comment_count>
      <attachid>272140</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-24 12:46:40 -0800</bug_when>
    <thetext>Comment on attachment 272140
ROLLOUT of r197033

Clearing flags on attachment: 272140

Committed r197043: &lt;http://trac.webkit.org/changeset/197043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167893</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-24 12:46:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272140</attachid>
            <date>2016-02-24 12:40:31 -0800</date>
            <delta_ts>2016-02-24 12:46:40 -0800</delta_ts>
            <desc>ROLLOUT of r197033</desc>
            <filename>bug-154649-20160224124014.patch</filename>
            <type>text/plain</type>
            <size>66675</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
Mzg1ZjZjMGYzYzE2ZDRhYTJmOTk5YWRhMWU4YTY3Mjk2YTE4YjJkLi5kNDdjZmVjY2Y2OWUzYmZi
YzU4ZGEwMTc4ZjMwOGE3NWE3YThlMzBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNi0wMi0yNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5NzAzMy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDY0OQorCisgICAg
ICAgICJJdCBicm9rZSBKU0MgdGVzdHMgd2hlbiAndGhpcycgd2FzIGxvYWRlZCBmcm9tIGdsb2Jh
bCBzY29wZSIKKyAgICAgICAgKFJlcXVlc3RlZCBieSBzYWFteWpvb24gb24gI3dlYmtpdCkuCisK
KyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJbRVM2XSBBcnJvdyBmdW5j
dGlvbiBzeW50YXguIEVtaXQgbG9hZGluZyZwdXR0aW5nIHRoaXMvc3VwZXIKKyAgICAgICAgb25s
eSBpZiB0aGV5IGFyZSB1c2VkIGluIGFycm93IGZ1bmN0aW9uIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzOTgxCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE5NzAzMworCiAyMDE2LTAyLTI0ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3RhY2ttYXBzIGhhdmUgcHJvYmxlbXMgd2l0
aCBkb3VibGUgcmVnaXN0ZXIgY29uc3RyYWludHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9FeGVjdXRhYmxlSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZvLmgKaW5kZXggNjYwYzk3MTcyN2MzYjg1NDNhZWNjMDFl
N2Y4ZjYzYWYyNzdhMDZiZC4uYTQ1ZDUwMzlkM2ZhMmNmMzA0MjE2YzAyNDJkYmI4MzQ5YWM5ZWRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4ZWN1dGFibGVJbmZv
LmgKQEAgLTM1LDcgKzM1LDcgQEAgZW51bSBjbGFzcyBEZXJpdmVkQ29udGV4dFR5cGUgOiB1aW50
OF90IHsgTm9uZSwgRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCwgRGVyaXYKIC8vIEZJWE1FOiBU
aGVzZSBmbGFncywgUGFyc2VyTW9kZXMgYW5kIHByb3BhZ2F0aW9uIHRvIFhYWENvZGVCbG9ja3Mg
c2hvdWxkIGJlIHJlb3JnYW5pemVkLgogLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1MTU0Nwogc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKLSAgICBFeGVjdXRhYmxl
SW5mbyhib29sIHVzZXNFdmFsLCBib29sIGlzU3RyaWN0TW9kZSwgYm9vbCBpc0NvbnN0cnVjdG9y
LCBib29sIGlzQnVpbHRpbkZ1bmN0aW9uLCBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5k
LCBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBE
ZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkNvbnRleHQsIGJvb2wgaXNDbGFzc0NvbnRleHQsIEFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMg
YXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyA9IE5vQXJyb3dGdW5jdGlvbkZlYXR1cmVzKQorICAg
IEV4ZWN1dGFibGVJbmZvKGJvb2wgdXNlc0V2YWwsIGJvb2wgaXNTdHJpY3RNb2RlLCBib29sIGlz
Q29uc3RydWN0b3IsIGJvb2wgaXNCdWlsdGluRnVuY3Rpb24sIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIFNvdXJjZVBhcnNlTW9kZSBw
YXJzZU1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQ29udGV4dCwgYm9vbCBpc0NsYXNzQ29udGV4dCkKICAgICAgICAgOiBtX3Vz
ZXNFdmFsKHVzZXNFdmFsKQogICAgICAgICAsIG1faXNTdHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkK
ICAgICAgICAgLCBtX2lzQ29uc3RydWN0b3IoaXNDb25zdHJ1Y3RvcikKQEAgLTQ2LDcgKzQ2LDYg
QEAgc3RydWN0IEV4ZWN1dGFibGVJbmZvIHsKICAgICAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRleHRUeXBlKSkKICAgICAgICAgLCBt
X2lzQXJyb3dGdW5jdGlvbkNvbnRleHQoaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKICAgICAgICAg
LCBtX2lzQ2xhc3NDb250ZXh0KGlzQ2xhc3NDb250ZXh0KQotICAgICAgICAsIG1fYXJyb3dGdW5j
dGlvbkNvZGVGZWF0dXJlcyhhcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5kID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25z
dHJ1Y3RvcktpbmQpKTsKICAgICAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzdXBlckJpbmRpbmcpKTsKQEAgLTYyLDcgKzYxLDYgQEAgc3RydWN0IEV4
ZWN1dGFibGVJbmZvIHsKICAgICBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENvbnRleHRUeXBl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENvbnRleHRUeXBlPihtX2Rlcml2
ZWRDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KICAgICBib29sIGlzQ2xhc3ND
b250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NsYXNzQ29udGV4dDsgfQotICAgIEFycm93RnVu
Y3Rpb25Db2RlRmVhdHVyZXMgYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsgfQogCiBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fdXNlc0V2YWwgOiAxOwpAQCAtNzUsNyArNzMsNiBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsKICAgICB1bnNpZ25lZCBtX2lzQXJyb3dGdW5j
dGlvbkNvbnRleHQgOiAxOwogICAgIHVuc2lnbmVkIG1faXNDbGFzc0NvbnRleHQgOiAxOwotICAg
IEFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgbV9hcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAppbmRleCA4NDk2ZTc0ZjljYjFiZGI2YTZj
NmUzYjY3OGM3MTU0NTFhNTM4ZTJiLi44Y2RlY2NhZjkwYzcxYTNkMGNjYzliMTNkODhlN2FiZTdh
Njg2ZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Vbmxp
bmtlZENvZGVCbG9jay5jcHAKQEAgLTcxLDcgKzcxLDYgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVu
bGlua2VkQ29kZUJsb2NrKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNv
ZGUKICAgICAsIG1fZmlyc3RMaW5lKDApCiAgICAgLCBtX2xpbmVDb3VudCgwKQogICAgICwgbV9l
bmRDb2x1bW4oVUlOVF9NQVgpCi0gICAgLCBtX2Fycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMoaW5m
by5hcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzKCkpCiAgICAgLCBtX3BhcnNlTW9kZShpbmZvLnBh
cnNlTW9kZSgpKQogICAgICwgbV9mZWF0dXJlcygwKQogICAgICwgbV9jb2RlVHlwZShjb2RlVHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENv
ZGVCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmgKaW5kZXggY2ZlMzdjNmY4YzYxOGI4Y2Y3MzFkMTkyNTQ0YTc0MzkwNWY2MDUwMy4uNDA3
MWI4ZTEyZDE1NDcwYmE3ZThlNzI2NWNjMTY1ODBjZjlmYWRlMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKQEAgLTEyMiwxNCAr
MTIyLDYgQEAgcHVibGljOgogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5
cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxEZXJpdmVkQ29udGV4dFR5cGU+KG1fZGVy
aXZlZENvbnRleHRUeXBlKTsgfQogICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dDsgfQogICAgIGJvb2wgaXNDbGFz
c0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xhc3NDb250ZXh0OyB9Ci0gICAgQXJyb3dG
dW5jdGlvbkNvZGVGZWF0dXJlcyBhcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOyB9Ci0gICAgCi0gICAgYm9vbCBkb0Fu
eUlubmVyQXJyb3dGdW5jdGlvbnNVc2VBcmd1bWVudHMoKSB7IHJldHVybiBtX2Fycm93RnVuY3Rp
b25Db2RlRmVhdHVyZXMgJiBBcmd1bWVudHNBcnJvd0Z1bmN0aW9uRmVhdHVyZTsgfQotICAgIGJv
b2wgZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJDYWxsKCkgeyByZXR1cm4gbV9hcnJv
d0Z1bmN0aW9uQ29kZUZlYXR1cmVzICYgU3VwZXJDYWxsQXJyb3dGdW5jdGlvbkZlYXR1cmU7IH0K
LSAgICBib29sIGRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVN1cGVyUHJvcGVydHkoKSB7IHJl
dHVybiBtX2Fycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgJiBTdXBlclByb3BlcnR5QXJyb3dGdW5j
dGlvbkZlYXR1cmU7IH0KLSAgICBib29sIGRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZUV2YWwo
KSB7IHJldHVybiBtX2Fycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgJiBFdmFsQXJyb3dGdW5jdGlv
bkZlYXR1cmU7IH0KLSAgICBib29sIGRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZVRoaXMoKSB7
IHJldHVybiBtX2Fycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgJiBUaGlzQXJyb3dGdW5jdGlvbkZl
YXR1cmU7IH0KLSAgICBib29sIGRvQW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZU5ld1RhcmdldCgp
IHsgcmV0dXJuIG1fYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyAmIE5ld1RhcmdldEFycm93RnVu
Y3Rpb25GZWF0dXJlOyB9CiAKICAgICB2b2lkIGFkZEV4cHJlc3Npb25JbmZvKHVuc2lnbmVkIGlu
c3RydWN0aW9uT2Zmc2V0LCBpbnQgZGl2b3QsCiAgICAgICAgIGludCBzdGFydE9mZnNldCwgaW50
IGVuZE9mZnNldCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKTsKQEAgLTM5OSw4ICsz
OTEsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZmlyc3RMaW5lOwogICAgIHVuc2lnbmVk
IG1fbGluZUNvdW50OwogICAgIHVuc2lnbmVkIG1fZW5kQ29sdW1uOwotICAgIAotICAgIEFycm93
RnVuY3Rpb25Db2RlRmVhdHVyZXMgbV9hcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOworCiAgICAg
U291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVz
OwogICAgIENvZGVUeXBlIG1fY29kZVR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRl
eCBiYTQzM2Q5MDA5NTkyMWMzOGZjNmQ2NzI2OTAzZTYzYjZmY2QyNzg4Li43YWQ5ZDEwNDIxZjk1
MzYyZWMzZjc3YjlmNzA3ZTNjZDFhMTRjNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVy
YXRlVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jaygKICAgICBib29sIGlzQ2xhc3NDb250ZXh0ID0g
ZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCkgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQ7CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjcmVhdGUoJnZtLCBGdW5jdGlvbkNvZGUsCi0gICAgICAgIEV4ZWN1dGFibGVJbmZv
KGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9u
LCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwgZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5n
KCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBlKCksIGZhbHNlLCBp
c0NsYXNzQ29udGV4dCwgZXhlY3V0YWJsZS0+YXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcygpKSk7
CisgICAgICAgIEV4ZWN1dGFibGVJbmZvKGZ1bmN0aW9uLT51c2VzRXZhbCgpLCBmdW5jdGlvbi0+
aXNTdHJpY3RNb2RlKCksIGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCwgZnVuY3Rpb25LaW5kID09
IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uLCBleGVjdXRhYmxlLT5jb25zdHJ1Y3RvcktpbmQoKSwg
ZXhlY3V0YWJsZS0+c3VwZXJCaW5kaW5nKCksIHBhcnNlTW9kZSwgZXhlY3V0YWJsZS0+ZGVyaXZl
ZENvbnRleHRUeXBlKCksIGZhbHNlLCBpc0NsYXNzQ29udGV4dCkpOwogCiAgICAgYXV0byBnZW5l
cmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxCeXRlY29kZUdlbmVyYXRvcj4odm0sIGZ1bmN0aW9uLmdl
dCgpLCByZXN1bHQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBleGVjdXRhYmxlLT5wYXJl
bnRTY29wZVREWlZhcmlhYmxlcygpKSk7CiAgICAgZXJyb3IgPSBnZW5lcmF0b3ItPmdlbmVyYXRl
KCk7CkBAIC0xMDEsNyArMTAxLDYgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OlVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKICAgICAsIG1f
c3VwZXJCaW5kaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRpbmcoKSkp
CiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZl
ZENvbnRleHRUeXBlKSkKICAgICAsIG1fc291cmNlUGFyc2VNb2RlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihub2RlLT5wYXJzZU1vZGUoKSkpCi0gICAgLCBtX2Fycm93RnVuY3Rpb25Db2RlRmVhdHVy
ZXMobm9kZS0+YXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcygpKQogICAgICwgbV9uYW1lKG5vZGUt
PmlkZW50KCkpCiAgICAgLCBtX2luZmVycmVkTmFtZShub2RlLT5pbmZlcnJlZE5hbWUoKSkKICAg
ICAsIG1fc291cmNlT3ZlcnJpZGUoV1RGTW92ZShzb3VyY2VPdmVycmlkZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCmluZGV4IGI3YzU1OTNkM2EwODhmODdhZjhkNWMwYzAwZjFjOGQ1YzNhNDIzNDAu
LjhhNjE0ZGIyMTlhMTM5NTE4YzY4YThjYTg0ZDUxZWUwNDdlYTkzYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZS5oCkBAIC04NCw3ICs4NCw2IEBAIHB1YmxpYzoKICAgICBGdW5jdGlvbk1vZGUgZnVu
Y3Rpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Nb2RlPihtX2Z1
bmN0aW9uTW9kZSk7IH0KICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2lu
ZCk7IH0KICAgICBTdXBlckJpbmRpbmcgc3VwZXJCaW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVyQmluZGluZyk7IH0KLSAgICBBcnJvd0Z1bmN0
aW9uQ29kZUZlYXR1cmVzIGFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMoKSBjb25zdCB7IHJldHVy
biBtX2Fycm93RnVuY3Rpb25Db2RlRmVhdHVyZXM7IH0KIAogICAgIHVuc2lnbmVkIHVubGlua2Vk
RnVuY3Rpb25OYW1lU3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRnVuY3Rpb25OYW1l
U3RhcnQ7IH0KICAgICB1bnNpZ25lZCB1bmxpbmtlZEJvZHlTdGFydENvbHVtbigpIGNvbnN0IHsg
cmV0dXJuIG1fdW5saW5rZWRCb2R5U3RhcnRDb2x1bW47IH0KQEAgLTE1Nyw3ICsxNTYsNiBAQCBw
cml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3VwZXJCaW5kaW5nIDogMTsKICAgICB1bnNpZ25lZCBt
X2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKICAgICB1bnNpZ25lZCBtX3NvdXJjZVBhcnNlTW9kZSA6
IDQ7IC8vIFNvdXJjZVBhcnNlTW9kZQotICAgIEFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgbV9h
cnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOwogCiAgICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVu
Y3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2RlQmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFy
cmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrPiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29u
c3RydWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCBmZTEzOTg5MGUxNDY1NmJlMzMwMDZjZGQyYzdj
NzhiYjYyODRlNjFmLi5hZThiNDc2MmM2ZWE2YjM1YmY3ZTAyZDQ0ZWY2ZGQ0ZmVjMDMyZmQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxp
bmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gbV9zaG91bGRFbWl0
RGVidWdIb29rcyB8fCBmdW5jdGlvbk5vZGUtPm5lZWRzQWN0aXZhdGlvbigpIHx8IGNvbnRhaW5z
QXJyb3dPckV2YWxCdXROb3RJbkFycm93QmxvY2s7CiAKICAgICBib29sIHNob3VsZENhcHR1cmVB
bGxPZlRoZVRoaW5ncyA9IG1fc2hvdWxkRW1pdERlYnVnSG9va3MgfHwgY29kZUJsb2NrLT51c2Vz
RXZhbCgpOwotICAgIGJvb2wgbmVlZHNBcmd1bWVudHMgPSAoZnVuY3Rpb25Ob2RlLT51c2VzQXJn
dW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNB
cnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgJiYgaXNBcmd1
bWVudHNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkpOworICAgIGJvb2wgbmVlZHNBcmd1bWVu
dHMgPSAoZnVuY3Rpb25Ob2RlLT51c2VzQXJndW1lbnRzKCkgfHwgY29kZUJsb2NrLT51c2VzRXZh
bCgpIHx8IChmdW5jdGlvbk5vZGUtPnVzZXNBcnJvd0Z1bmN0aW9uKCkgJiYgIWNvZGVCbG9jay0+
aXNBcnJvd0Z1bmN0aW9uKCkpKTsKIAogICAgIC8vIEdlbmVyYXRvciBuZXZlciBwcm92aWRlcyAi
YXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQgaW4gYW4g
dXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgogICAgIGlmIChwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKQEAgLTU3Miw3ICs1NzIsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIC8vIExvYWRpbmcgfHRoaXN8IGluc2lkZSBhbiBhcnJv
dyBmdW5jdGlvbiBtdXN0IGJlIGRvbmUgYWZ0ZXIgaW5pdGlhbGl6ZURlZmF1bHRQYXJhbWV0ZXJW
YWx1ZXNBbmRTZXR1cEZ1bmN0aW9uU2NvcGVTdGFjaygpCiAgICAgLy8gYmVjYXVzZSB0aGF0IGZ1
bmN0aW9uIHNldHMgdXAgdGhlIFN5bWJvbFRhYmxlIHN0YWNrIGFuZCBlbWl0TG9hZFRoaXNGcm9t
QXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpCiAgICAgLy8gY29uc3VsdHMgdGhlIFN5
bWJvbFRhYmxlIHN0YWNrCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUgPT0gcGFyc2VNb2RlICYmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgaXNUaGlzVXNl
ZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpKQorICAgIGlmIChTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlID09IHBhcnNlTW9kZSAmJiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8
IGlzRGVyaXZlZENsYXNzQ29udGV4dCgpIHx8IGlzRGVyaXZlZENvbnN0cnVjdG9yQ29udGV4dCgp
KSkKICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1l
bnQoKTsKICAgICAKICAgICBpZiAobmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkg
JiYgIWNvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsKQEAgLTg4OCwxOCArODg4LDE2IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRpYWxpemVBcnJvd0Z1bmN0aW9uQ29udGV4dFNj
b3BlSWZOZWVkZWQoU3ltYm9sVGFibGUqCiAgICAgICAgIAogICAgICAgICBpZiAoIW1fY29kZUJs
b2NrLT5pc0Fycm93RnVuY3Rpb24oKSkgewogICAgICAgICAgICAgU2NvcGVPZmZzZXQgb2Zmc2V0
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNUaGlzVXNlZEluSW5uZXJBcnJvd0Z1
bmN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBzeW1ib2xUYWJsZS0+dGFrZU5l
eHRTY29wZU9mZnNldCgpOwotICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5zZXQocHJvcGVy
dHlOYW1lcygpLnRoaXNJZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZz
ZXQob2Zmc2V0KSkpOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobV9jb2RlVHlw
ZSA9PSBGdW5jdGlvbkNvZGUgJiYgaXNOZXdUYXJnZXRVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24o
KSkgeworICAgICAgICAgICAgb2Zmc2V0ID0gc3ltYm9sVGFibGUtPnRha2VOZXh0U2NvcGVPZmZz
ZXQoKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5zZXQocHJvcGVydHlOYW1lcygpLnRoaXNJ
ZGVudGlmaWVyLmltcGwoKSwgU3ltYm9sVGFibGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwor
CisgICAgICAgICAgICBpZiAobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUpIHsKICAgICAgICAg
ICAgICAgICBvZmZzZXQgPSBzeW1ib2xUYWJsZS0+dGFrZU5leHRTY29wZU9mZnNldCgpOwogICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5zZXQocHJvcGVydHlOYW1lcygpLm5ld1RhcmdldExv
Y2FsUHJpdmF0ZU5hbWUuaW1wbCgpLCBTeW1ib2xUYWJsZUVudHJ5KFZhck9mZnNldChvZmZzZXQp
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpc0NvbnN0
cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVk
ICYmIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgeworICAgICAgICAgICAgaWYg
KGlzQ29uc3RydWN0b3IoKSAmJiBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6
OkRlcml2ZWQpIHsKICAgICAgICAgICAgICAgICBvZmZzZXQgPSBzeW1ib2xUYWJsZS0+dGFrZU5l
eHRTY29wZU9mZnNldCgpOwogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5zZXQocHJvcGVy
dHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3RvclByaXZhdGVOYW1lLmltcGwoKSwgU3ltYm9sVGFi
bGVFbnRyeShWYXJPZmZzZXQob2Zmc2V0KSkpOwogICAgICAgICAgICAgfQpAQCAtOTA5LDMzICs5
MDcsMjggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6ZUFycm93RnVuY3Rpb25D
b250ZXh0U2NvcGVJZk5lZWRlZChTeW1ib2xUYWJsZSoKICAgICB9CiAKICAgICBWYXJpYWJsZUVu
dmlyb25tZW50IGVudmlyb25tZW50OwotCi0gICAgaWYgKGlzVGhpc1VzZWRJbklubmVyQXJyb3dG
dW5jdGlvbigpKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZW52aXJvbm1lbnQuYWRkKHBy
b3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllcik7Ci0gICAgICAgIGFkZFJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUuc2V0SXNDYXB0dXJlZCgpOwotICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNldElzQ29uc3QoKTsKLSAgICB9CisgICAgYXV0byBhZGRSZXN1bHQgPSBlbnZpcm9ubWVu
dC5hZGQocHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyKTsKKyAgICBhZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLnNldElzQ29uc3QoKTsKICAgICAKLSAgICBpZiAobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNv
ZGUgJiYgaXNOZXdUYXJnZXRVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgeworICAgIGlmICht
X2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSkgIHsKICAgICAgICAgYXV0byBhZGRUYXJnZXQgPSBl
bnZpcm9ubWVudC5hZGQocHJvcGVydHlOYW1lcygpLm5ld1RhcmdldExvY2FsUHJpdmF0ZU5hbWUp
OwogICAgICAgICBhZGRUYXJnZXQuaXRlcmF0b3ItPnZhbHVlLnNldElzQ2FwdHVyZWQoKTsKICAg
ICAgICAgYWRkVGFyZ2V0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0xldCgpOwogICAgIH0KIAotICAg
IGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkICYmIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgeworICAg
IGlmIChpc0NvbnN0cnVjdG9yKCkgJiYgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JL
aW5kOjpEZXJpdmVkKSB7CiAgICAgICAgIGF1dG8gZGVyaXZlZENvbnN0cnVjdG9yID0gZW52aXJv
bm1lbnQuYWRkKHByb3BlcnR5TmFtZXMoKS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7
CiAgICAgICAgIGRlcml2ZWRDb25zdHJ1Y3Rvci5pdGVyYXRvci0+dmFsdWUuc2V0SXNDYXB0dXJl
ZCgpOwogICAgICAgICBkZXJpdmVkQ29uc3RydWN0b3IuaXRlcmF0b3ItPnZhbHVlLnNldElzTGV0
KCk7CiAgICAgfQogCi0gICAgaWYgKGVudmlyb25tZW50LnNpemUoKSA+IDApIHsKLSAgICAgICAg
c2l6ZV90IHNpemUgPSBtX3N5bWJvbFRhYmxlU3RhY2suc2l6ZSgpOwotICAgICAgICBwdXNoTGV4
aWNhbFNjb3BlSW50ZXJuYWwoZW52aXJvbm1lbnQsIFREWkNoZWNrT3B0aW1pemF0aW9uOjpPcHRp
bWl6ZSwgTmVzdGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgbnVsbHB0ciwgVERaUmVxdWlyZW1l
bnQ6OlVuZGVyVERaLCBTY29wZVR5cGU6OkxldENvbnN0U2NvcGUsIFNjb3BlUmVnaXN0ZXJUeXBl
OjpCbG9jayk7CisgICAgc2l6ZV90IHNpemUgPSBtX3N5bWJvbFRhYmxlU3RhY2suc2l6ZSgpOwor
ICAgIHB1c2hMZXhpY2FsU2NvcGVJbnRlcm5hbChlbnZpcm9ubWVudCwgVERaQ2hlY2tPcHRpbWl6
YXRpb246Ok9wdGltaXplLCBOZXN0ZWRTY29wZVR5cGU6OklzTm90TmVzdGVkLCBudWxscHRyLCBU
RFpSZXF1aXJlbWVudDo6VW5kZXJURFosIFNjb3BlVHlwZTo6TGV0Q29uc3RTY29wZSwgU2NvcGVS
ZWdpc3RlclR5cGU6OkJsb2NrKTsKIAotICAgICAgICBBU1NFUlRfVU5VU0VEKHNpemUsIG1fc3lt
Ym9sVGFibGVTdGFjay5zaXplKCkgPT0gc2l6ZSArIDEpOworICAgIEFTU0VSVF9VTlVTRUQoc2l6
ZSwgbV9zeW1ib2xUYWJsZVN0YWNrLnNpemUoKSA9PSBzaXplICsgMSk7CiAKLSAgICAgICAgbV9h
cnJvd0Z1bmN0aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gbV9zeW1ib2xU
YWJsZVN0YWNrLmxhc3QoKS5tX3Njb3BlOwotICAgIH0KKyAgICBtX2Fycm93RnVuY3Rpb25Db250
ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIgPSBtX3N5bWJvbFRhYmxlU3RhY2subGFzdCgp
Lm1fc2NvcGU7CiB9CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjppbml0aWFsaXpl
TmV4dFBhcmFtZXRlcigpCkBAIC00MDA3LDE2ICs0MDAwLDE2IEBAIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OnBvcEluZGV4ZWRGb3JJblNjb3BlKFJlZ2lzdGVySUQqIGxvY2FsUmVnaXN0ZXIpCiAg
ICAgbV9mb3JJbkNvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK1JlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKQogewogICAgIEFT
U0VSVChtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwgbV9jb2RlQmxvY2stPmlzQXJy
b3dGdW5jdGlvbkNvbnRleHQoKSB8fCBjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rvcktp
bmQ6OkRlcml2ZWQpOwogCi0gICAgcmV0dXJuIGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFy
aWFibGUoaWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBlOjpTY29wZWQpKTsKKyAgICByZXR1
cm4gZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXJpYWJsZShwcm9wZXJ0eU5hbWVzKCkudGhp
c0lkZW50aWZpZXIsIFRoaXNSZXNvbHV0aW9uVHlwZTo6U2NvcGVkKSk7CiB9CiAKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmly
b25tZW50KCkKIHsKLSAgICBlbWl0R2V0RnJvbVNjb3BlKHRoaXNSZWdpc3RlcigpLCBlbWl0TG9h
ZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQocHJvcGVydHlOYW1lcygpLnRoaXNJZGVu
dGlmaWVyKSwgdmFyaWFibGUocHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyLCBUaGlzUmVz
b2x1dGlvblR5cGU6OlNjb3BlZCksIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKKyAgICBlbWl0R2V0
RnJvbVNjb3BlKHRoaXNSZWdpc3RlcigpLCBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52
aXJvbm1lbnQoKSwgdmFyaWFibGUocHJvcGVydHlOYW1lcygpLnRoaXNJZGVudGlmaWVyLCBUaGlz
UmVzb2x1dGlvblR5cGU6OlNjb3BlZCksIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIH0KICAgICAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZE5ld1RhcmdldEZyb21BcnJv
d0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCkKQEAgLTQwMjQsNyArNDAxNyw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZE5ld1RhcmdldEZyb21BcnJvd0Z1bmN0
aW9uTGV4aWNhbEVudmlyb25tCiAgICAgbV9pc05ld1RhcmdldExvYWRlZEluQXJyb3dGdW5jdGlv
biA9IHRydWU7CiAKICAgICBWYXJpYWJsZSBuZXdUYXJnZXRWYXIgPSB2YXJpYWJsZShwcm9wZXJ0
eU5hbWVzKCkubmV3VGFyZ2V0TG9jYWxQcml2YXRlTmFtZSk7Ci0gICAgZW1pdE1vdmUobV9uZXdU
YXJnZXRSZWdpc3RlciwgZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgZW1pdExvYWRB
cnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KHByb3BlcnR5TmFtZXMoKS5uZXdUYXJnZXRM
b2NhbFByaXZhdGVOYW1lKSwgbmV3VGFyZ2V0VmFyLCBUaHJvd0lmTm90Rm91bmQpKTsKKyAgICBl
bWl0TW92ZShtX25ld1RhcmdldFJlZ2lzdGVyLCBlbWl0R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFy
eSgpLCBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSwgbmV3VGFyZ2V0
VmFyLCBUaHJvd0lmTm90Rm91bmQpKTsKICAgICAKICAgICByZXR1cm4gbV9uZXdUYXJnZXRSZWdp
c3RlcjsKIH0KQEAgLTQwMzIsNjEgKzQwMjUsMzUgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRMb2FkTmV3VGFyZ2V0RnJvbUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm0K
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZERlcml2ZWRDb25zdHJ1Y3Rv
ckZyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCkKIHsKICAgICBWYXJpYWJsZSBw
cm90b1Njb3BlVmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLmRlcml2ZWRDb25zdHJ1Y3Rv
clByaXZhdGVOYW1lKTsKLSAgICByZXR1cm4gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3Jhcnko
KSwgZW1pdExvYWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KHByb3BlcnR5TmFtZXMo
KS5kZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSksIHByb3RvU2NvcGVWYXIsIFRocm93SWZO
b3RGb3VuZCk7Ci19Ci0gICAgCi1ib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1RoaXNVc2VkSW5J
bm5lckFycm93RnVuY3Rpb24oKSAKLXsKLSAgICByZXR1cm4gbV9jb2RlQmxvY2stPmRvQW55SW5u
ZXJBcnJvd0Z1bmN0aW9uc1VzZVRoaXMoKSB8fCBtX2NvZGVCbG9jay0+ZG9BbnlJbm5lckFycm93
RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpIHx8IG1fY29kZUJsb2NrLT5kb0FueUlubmVyQXJy
b3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKSB8fCBtX2NvZGVCbG9jay0+ZG9BbnlJbm5lckFycm93
RnVuY3Rpb25zVXNlRXZhbCgpIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpOworICAgIHJldHVy
biBlbWl0R2V0RnJvbVNjb3BlKG5ld1RlbXBvcmFyeSgpLCBlbWl0TG9hZEFycm93RnVuY3Rpb25M
ZXhpY2FsRW52aXJvbm1lbnQoKSwgcHJvdG9TY29wZVZhciwgVGhyb3dJZk5vdEZvdW5kKTsKIH0K
ICAgICAKLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJv
d0Z1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gbV9jb2RlQmxvY2stPmRvQW55SW5uZXJBcnJvd0Z1
bmN0aW9uc1VzZUFyZ3VtZW50cygpIHx8IG1fY29kZUJsb2NrLT5kb0FueUlubmVyQXJyb3dGdW5j
dGlvbnNVc2VFdmFsKCk7Ci19Ci0KLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzTmV3VGFyZ2V0
VXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gbV9jb2RlQmxvY2stPmRv
QW55SW5uZXJBcnJvd0Z1bmN0aW9uc1VzZU5ld1RhcmdldCgpIHx8IG1fY29kZUJsb2NrLT5kb0Fu
eUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKTsKLX0KLQotYm9vbCBCeXRlY29kZUdl
bmVyYXRvcjo6aXNTdXBlclVzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpCi17Ci0gICAgcmV0dXJu
IG1fY29kZUJsb2NrLT5kb0FueUlubmVyQXJyb3dGdW5jdGlvbnNVc2VTdXBlckNhbGwoKSB8fCBt
X2NvZGVCbG9jay0+ZG9BbnlJbm5lckFycm93RnVuY3Rpb25zVXNlU3VwZXJQcm9wZXJ0eSgpOwot
fQotCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0TmV3VGFyZ2V0VG9BcnJvd0Z1bmN0
aW9uQ29udGV4dFNjb3BlKCkKIHsKLSAgICBpZiAoaXNOZXdUYXJnZXRVc2VkSW5Jbm5lckFycm93
RnVuY3Rpb24oKSkgewotICAgICAgICBBU1NFUlQobV9hcnJvd0Z1bmN0aW9uQ29udGV4dExleGlj
YWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKKyAgICBBU1NFUlQobV9hcnJvd0Z1bmN0aW9uQ29udGV4
dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9IG51bGxwdHIpOwogICAgICAgICAKLSAgICAg
ICAgVmFyaWFibGUgbmV3VGFyZ2V0VmFyID0gdmFyaWFibGUocHJvcGVydHlOYW1lcygpLm5ld1Rh
cmdldExvY2FsUHJpdmF0ZU5hbWUpOwotICAgICAgICBlbWl0UHV0VG9TY29wZShtX2Fycm93RnVu
Y3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIG5ld1RhcmdldFZhciwgbmV3
VGFyZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbik7Ci0gICAgfQor
ICAgIFZhcmlhYmxlIG5ld1RhcmdldFZhciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5uZXdU
YXJnZXRMb2NhbFByaXZhdGVOYW1lKTsKKyAgICBlbWl0UHV0VG9TY29wZShtX2Fycm93RnVuY3Rp
b25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIG5ld1RhcmdldFZhciwgbmV3VGFy
Z2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbik7CiB9CiAgICAgCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0RGVyaXZlZENvbnN0cnVjdG9yVG9BcnJvd0Z1
bmN0aW9uQ29udGV4dFNjb3BlKCkKIHsKICAgICBpZiAoKGlzQ29uc3RydWN0b3IoKSAmJiBjb25z
dHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQpIHx8IG1fY29kZUJsb2Nr
LT5pc0NsYXNzQ29udGV4dCgpKSB7Ci0gICAgICAgIGlmIChpc1N1cGVyVXNlZEluSW5uZXJBcnJv
d0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2Fycm93RnVuY3Rpb25Db250ZXh0
TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIpOworICAgICAgICBBU1NFUlQobV9hcnJvd0Z1bmN0
aW9uQ29udGV4dExleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgVmFyaWFibGUgcHJvdG9TY29wZSA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5k
ZXJpdmVkQ29uc3RydWN0b3JQcml2YXRlTmFtZSk7Ci0gICAgICAgICAgICBlbWl0UHV0VG9TY29w
ZShtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXIsIHByb3Rv
U2NvcGUsICZtX2NhbGxlZVJlZ2lzdGVyLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6
YXRpb24pOwotICAgICAgICB9CisgICAgICAgIFZhcmlhYmxlIHByb3RvU2NvcGUgPSB2YXJpYWJs
ZShwcm9wZXJ0eU5hbWVzKCkuZGVyaXZlZENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUpOworICAgICAg
ICBlbWl0UHV0VG9TY29wZShtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVudmlyb25tZW50
UmVnaXN0ZXIsIHByb3RvU2NvcGUsICZtX2NhbGxlZVJlZ2lzdGVyLCBEb05vdFRocm93SWZOb3RG
b3VuZCwgSW5pdGlhbGl6YXRpb24pOwogICAgIH0KIH0KLSAgICAKKwogdm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dFRoaXNUb0Fycm93RnVuY3Rpb25Db250ZXh0U2NvcGUoKQogewotICAg
IGlmIChpc1RoaXNVc2VkSW5Jbm5lckFycm93RnVuY3Rpb24oKSkgewotICAgICAgICBBU1NFUlQo
aXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgfHwgbV9hcnJvd0Z1bmN0aW9uQ29udGV4dExl
eGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyICE9IG51bGxwdHIpOworICAgIEFTU0VSVChpc0Rlcml2
ZWRDb25zdHJ1Y3RvckNvbnRleHQoKSB8fCBtX2Fycm93RnVuY3Rpb25Db250ZXh0TGV4aWNhbEVu
dmlyb25tZW50UmVnaXN0ZXIgIT0gbnVsbHB0cik7CiAKLSAgICAgICAgVmFyaWFibGUgdGhpc1Zh
ciA9IHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRp
b25UeXBlOjpTY29wZWQpOwotICAgICAgICBSZWdpc3RlcklEKiBzY29wZSA9IGlzRGVyaXZlZENv
bnN0cnVjdG9yQ29udGV4dCgpID8gZW1pdExvYWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25t
ZW50KHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllcikgOiBtX2Fycm93RnVuY3Rpb25Db250
ZXh0TGV4aWNhbEVudmlyb25tZW50UmVnaXN0ZXI7CisgICAgVmFyaWFibGUgdGhpc1ZhciA9IHZh
cmlhYmxlKHByb3BlcnR5TmFtZXMoKS50aGlzSWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25UeXBl
OjpTY29wZWQpOworICAgIFJlZ2lzdGVySUQqIHNjb3BlID0gaXNEZXJpdmVkQ29uc3RydWN0b3JD
b250ZXh0KCkgPyBlbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKSA6IG1f
YXJyb3dGdW5jdGlvbkNvbnRleHRMZXhpY2FsRW52aXJvbm1lbnRSZWdpc3RlcjsKICAgICAKLSAg
ICAgICAgZW1pdFB1dFRvU2NvcGUoc2NvcGUsIHRoaXNWYXIsIHRoaXNSZWdpc3RlcigpLCBUaHJv
d0lmTm90Rm91bmQsIE5vdEluaXRpYWxpemF0aW9uKTsKLSAgICB9CisgICAgZW1pdFB1dFRvU2Nv
cGUoc2NvcGUsIHRoaXNWYXIsIHRoaXNSZWdpc3RlcigpLCBEb05vdFRocm93SWZOb3RGb3VuZCwg
Tm90SW5pdGlhbGl6YXRpb24pOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoU3Ry
dWN0dXJlRm9ySW5TY29wZShSZWdpc3RlcklEKiBsb2NhbFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBp
bmRleFJlZ2lzdGVyLCBSZWdpc3RlcklEKiBwcm9wZXJ0eVJlZ2lzdGVyLCBSZWdpc3RlcklEKiBl
bnVtZXJhdG9yUmVnaXN0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNWY4YmExZTBmOWUwNTQxNTVhZjI2
YjdjZTJjYTBjZjVkOWQxMGZjNy4uZjJjN2FjNWMxYmEyZmZhZmVmMzU4ZTk4MzY5NTUyNTRiNjI5
MTFhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtNDk0LDcgKzQ5NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHZvaWQgZW1pdFByb2ZpbGVDb250cm9sRmxvdyhpbnQpOwogICAgICAgICAKLSAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50
KGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWRBcnJvd0Z1
bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRUaGlzRnJv
bUFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdExvYWROZXdUYXJnZXRGcm9tQXJyb3dGdW5jdGlvbkxleGljYWxFbnZpcm9ubWVudCgpOwog
CkBAIC03MTcsMTMgKzcxNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0R2V0UGFyZW50U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBzY29wZSk7
CiAgICAgICAgIHZvaWQgZW1pdFB1c2hGdW5jdGlvbk5hbWVTY29wZShjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUsIGJvb2wgaXNDYXB0dXJlZCk7CiAgICAgICAg
IHZvaWQgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihSZWdpc3RlcklEKiwgQmFzZUZ1
bmNFeHByTm9kZSopOwotICAgICAgICAKLSAgICAgICAgYm9vbCBpc05ld1RhcmdldFVzZWRJbklu
bmVyQXJyb3dGdW5jdGlvbigpOwotICAgICAgICBib29sIGlzU3VwZXJVc2VkSW5Jbm5lckFycm93
RnVuY3Rpb24oKTsKLSAgICAgICAgYm9vbCBpc0FyZ3VtZW50c1VzZWRJbklubmVyQXJyb3dGdW5j
dGlvbigpOwogCiAgICAgcHVibGljOgotICAgICAgICBib29sIGlzVGhpc1VzZWRJbklubmVyQXJy
b3dGdW5jdGlvbigpOwogICAgICAgICB2b2lkIHB1c2hMZXhpY2FsU2NvcGUoVmFyaWFibGVFbnZp
cm9ubWVudE5vZGUqLCBURFpDaGVja09wdGltaXphdGlvbiwgTmVzdGVkU2NvcGVUeXBlID0gTmVz
dGVkU2NvcGVUeXBlOjpJc05vdE5lc3RlZCwgUmVnaXN0ZXJJRCoqIGNvbnN0YW50U3ltYm9sVGFi
bGVSZXN1bHQgPSBudWxscHRyKTsKICAgICAgICAgdm9pZCBwb3BMZXhpY2FsU2NvcGUoVmFyaWFi
bGVFbnZpcm9ubWVudE5vZGUqKTsKICAgICAgICAgdm9pZCBwcmVwYXJlTGV4aWNhbFNjb3BlRm9y
TmV4dEZvckxvb3BJdGVyYXRpb24oVmFyaWFibGVFbnZpcm9ubWVudE5vZGUqLCBSZWdpc3RlcklE
KiBsb29wU3ltYm9sVGFibGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDhmMTE5NTk1MGVlMzgyMWRiNWQ2MTcyOWFh
MzE1NGNmNjk2MGM5MjguLjA2ZDExNDg2MTAyODg2MzdkMWJhNGIxMmQzY2IwZjM0NzFkMTAwOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKQEAgLTE0Niw3ICsxNDYsNyBAQCBSZWdpc3RlcklEKiBSZWdFeHBOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBS
ZWdpc3RlcklEKiBUaGlzTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBpZiAoZ2VuZXJhdG9yLmNvbnN0cnVjdG9y
S2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1Vw
ZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJhdG9yLmlzVGhpc1VzZWRJbklubmVy
QXJyb3dGdW5jdGlvbigpKQorICAgIGlmIChnZW5lcmF0b3IuY29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRvci5uZWVkc1RvVXBkYXRlQXJyb3dG
dW5jdGlvbkNvbnRleHQoKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJv
d0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAgICBpZiAobV9zaG91bGRBbHdheXNF
bWl0VERaQ2hlY2sgfHwgZ2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9y
S2luZDo6RGVyaXZlZCB8fCBnZW5lcmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkp
CkBAIC03MjMsNyArNzIzLDcgQEAgUmVnaXN0ZXJJRCogRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcKICAgICAvLyAgICAg
ICBldmFsKCJ0aGlzLmlkID0gJ0InIik7CiAgICAgLy8gICAgfQogICAgIC8vIH0KLSAgICBpZiAo
Z2VuZXJhdG9yLmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAm
JiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkgJiYgZ2VuZXJh
dG9yLmlzVGhpc1VzZWRJbklubmVyQXJyb3dGdW5jdGlvbigpKQorICAgIGlmIChnZW5lcmF0b3Iu
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRv
ci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSkKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7CiAKICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5ldmFsKTsKQEAgLTc2Miw3ICs3NjIsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQog
ICAgICAgICBib29sIGlzQ29uc3RydWN0b3JLaW5kRGVyaXZlZCA9IGdlbmVyYXRvci5jb25zdHJ1
Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6OkRlcml2ZWQ7CiAgICAgICAgIGlmIChnZW5l
cmF0b3IuaXNEZXJpdmVkQ29uc3RydWN0b3JDb250ZXh0KCkgfHwgKGlzQ29uc3RydWN0b3JLaW5k
RGVyaXZlZCAmJiBnZW5lcmF0b3IubmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkp
KQogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUaGlzVG9BcnJvd0Z1bmN0aW9uQ29udGV4
dFNjb3BlKCk7Ci0KKyAgICAgICAgCiAgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQogICAgIGdl
bmVyYXRvci5lbWl0TG9hZChjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBqc1VuZGVmaW5l
ZCgpKTsKQEAgLTMxMzgsNyArMzEzOCw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKICAgICAgICAg
Ly8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25l
LgogICAgICAgICBpZiAoIXJldHVybk5vZGUpIHsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0b3Iu
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkICYmIGdlbmVyYXRv
ci5uZWVkc1RvVXBkYXRlQXJyb3dGdW5jdGlvbkNvbnRleHQoKSAmJiBnZW5lcmF0b3IuaXNUaGlz
VXNlZEluSW5uZXJBcnJvd0Z1bmN0aW9uKCkpCisgICAgICAgICAgICBpZiAoZ2VuZXJhdG9yLmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6RGVyaXZlZCAmJiBnZW5lcmF0b3Iu
bmVlZHNUb1VwZGF0ZUFycm93RnVuY3Rpb25Db250ZXh0KCkpCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNhbEVudmlyb25tZW50KCk7
IC8vIEFycm93IGZ1bmN0aW9uIGNhbiBpbnZva2UgJ3N1cGVyJyBpbiBjb25zdHJ1Y3RvciBhbmQg
YmVmb3JlIGxlYXZlIGNvbnN0cnVjdG9yIHdlIG5lZWQgbG9hZCAndGhpcycgZnJvbSBsZXhpY2Fs
IGFycm93IGZ1bmN0aW9uIGVudmlyb25tZW50CiAgICAgICAgICAgICAKICAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlz
UmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggNWM0OTlhZmFlNmY5NTc3
ZTE5ODI2YmI2NDEyN2E2MTlhMGZmYjcwZC4uYTQ4OGY3NjAxNjU4OWZhMjIzMmM2ZTM4YWE5YTIx
ZTQ0N2U1ZmE1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
QEAgLTM3MiwxMiArMzcyLDEyIEBAIHB1YmxpYzoKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAK
ICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1
bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQg
cGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2ln
bmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbiwgQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBhcnJvd0Z1bmN0
aW9uQ29kZUZlYXR1cmVzID0gTm9BcnJvd0Z1bmN0aW9uRmVhdHVyZXMpCisgICAgICAgIENvbnN0
cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKAogICAgICAgICAgICAgbV9wYXJzZXJBcmVu
YSwgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIAog
ICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJh
bWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAgaW5TdHJpY3RDb250ZXh0LCBjb25zdHJ1Y3Rvcktp
bmQsIHN1cGVyQmluZGluZywgcGFyYW1ldGVyQ291bnQsIG1vZGUsIGlzQXJyb3dGdW5jdGlvbkJv
ZHlFeHByZXNzaW9uLCBhcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzKTsKKyAgICAgICAgICAgIGlu
U3RyaWN0Q29udGV4dCwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNv
dW50LCBtb2RlLCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbik7CiAgICAgfQogCiAgICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWlsZGVyPiYgZnVu
Y3Rpb25JbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA3Yjdl
ZjBkZjcyMDJmMDhmMjlhMTYwYzk3Y2I5NWEwMjVhMGU5YTM4Li4yNTU3NTQ0OTQ1YjRkZjMzMDU0
MDgxOTg2MzZmMWIzYThkZDk1OTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcApAQCAtMTQ2LDcgKzE0Niw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1l
dGFkYXRhTm9kZSgKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3Rh
cnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9u
S2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50
LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
biwgQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBhcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzKQor
ICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9v
bCBpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgOiBOb2RlKGVuZExvY2F0
aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9l
bmRDb2x1bW4oZW5kQ29sdW1uKQpAQCAtMTYwLDcgKzE2MCw2IEBAIEZ1bmN0aW9uTWV0YWRhdGFO
b2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgLCBtX3N1cGVyQmluZGluZyhzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSkKICAgICAgICAgLCBtX2NvbnN0cnVjdG9y
S2luZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKSkKICAgICAgICAgLCBt
X2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uKQotICAgICAgICAsIG1fYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyhhcnJvd0Z1bmN0aW9u
Q29kZUZlYXR1cmVzKQogewogICAgIEFTU0VSVChtX3N1cGVyQmluZGluZyA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc3VwZXJCaW5kaW5nKSk7CiAgICAgQVNTRVJUKG1fY29uc3RydWN0b3JLaW5k
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb25zdHJ1Y3RvcktpbmQpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAxMzBmYTNjZGE5MzAxYzg0YzFkMTk5MmNjMzQ3YmU3
ODBmMmMxOGI5Li41MzUxOWRiNmQ3YWE1NjE2ODk5ZmRlZmJkYTkxY2JkNjQ4ZjdiODhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xODI0LDcgKzE4MjQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIFBhcnNlckFyZW5hJiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIAogICAgICAgICAgICAgdW5z
aWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCAKICAgICAgICAgICAgIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRl
cnNTdGFydCwgYm9vbCBpc0luU3RyaWN0Q29udGV4dCwgCi0gICAgICAgICAgICBDb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fy
cm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyA9IE5v
QXJyb3dGdW5jdGlvbkZlYXR1cmVzKTsKKyAgICAgICAgICAgIENvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlv
bkJvZHlFeHByZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291
cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAg
LTE4NTIsNyArMTg1Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdXBlckJpbmRpbmcg
c3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX3N1cGVy
QmluZGluZyk7IH0KICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PENvbnN0cnVjdG9yS2luZD4obV9jb25zdHJ1Y3RvcktpbmQpOyB9
CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uOyB9Ci0gICAgICAgIEFycm93RnVu
Y3Rpb25Db2RlRmVhdHVyZXMgYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczt9CiAKICAgICAgICAgdm9pZCBzZXRMb2Mo
dW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50IHN0YXJ0T2Zmc2V0LCBp
bnQgbGluZVN0YXJ0T2Zmc2V0KQogICAgICAgICB7CkBAIC0xODgwLDcgKzE4NzksNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgbV9zdXBlckJpbmRpbmcgOiAxOwogICAgICAg
ICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgICAgIHVuc2lnbmVkIG1faXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gOiAxOwotICAgICAgICBBcnJvd0Z1bmN0aW9uQ29k
ZUZlYXR1cmVzIG1fYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsKICAgICB9OwogCiAgICAgY2xh
c3MgRnVuY3Rpb25Ob2RlIGZpbmFsIDogcHVibGljIFNjb3BlTm9kZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggNGIwZjI4YmY2NzZlMGUwY2VmYTFmMDQ4YjEy
ZjcwMWNkNTlkMTgzNS4uYzY2Yjc0MjgyYTdkNjEzMGMzMzU5MmRhMGEyMDU4ZjczM2U5Yzg4OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtNTE5LDcgKzUxOSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUdlbmVyYXRvCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNlU291
cmNlRWxlbWVudHMoZ2VuZXJhdG9yRnVuY3Rpb25Db250ZXh0LCBtb2RlKSwgIkNhbm5vdCBwYXJz
ZSB0aGUgYm9keSBvZiBhIGdlbmVyYXRvciIpOwogICAgICAgICBwb3BTY29wZShnZW5lcmF0b3JC
b2R5U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOwogICAgIH0KLSAg
ICBpbmZvLmJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlv
biwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgdG9rZW5Db2x1bW4oKSwgZnVuY3Rpb25L
ZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1v
ZGUoKSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBtX3N1cGVyQmluZGluZywgaW5mby5wYXJhbWV0
ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSwgZmFsc2UsIGN1cnJl
bnRGdW5jdGlvblNjb3BlKCktPmlubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzKCkpOworICAgIGlu
Zm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgp
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRlckNv
dW50LCBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLCBmYWxzZSk7CiAKICAgICBp
bmZvLmVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbmZvLmVuZE9mZnNldCA9IG1fdG9rZW4u
bV9kYXRhLm9mZnNldDsKQEAgLTE3MzUsNyArMTczNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkJvCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4gPSB0b2tlbkNvbHVtbigpOwotICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9uLCB0
b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4sIGZ1bmN0aW9uS2V5d29yZFN0
YXJ0LCBmdW5jdGlvbk5hbWVTdGFydCwgcGFyYW1ldGVyc1N0YXJ0LCBzdHJpY3RNb2RlKCksIGNv
bnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLCBwYXJhbWV0ZXJDb3VudCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgY3VycmVudEZ1bmN0aW9uU2NvcGUoKS0+aW5u
ZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXMoKSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3Rh
cnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0
YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBl
ckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlF
eHByZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTc0Nyw3ICsxNzQ3LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uQm8KICAgICBlbHNlCiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcnNl
U291cmNlRWxlbWVudHMoc3ludGF4Q2hlY2tlciwgQ2hlY2tGb3JTdHJpY3RNb2RlKSwgYm9keVR5
cGUgPT0gU3RhbmRhcmRGdW5jdGlvbkJvZHlCbG9jayA/ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0
aGlzIGZ1bmN0aW9uIiA6ICJDYW5ub3QgcGFyc2UgYm9keSBvZiB0aGlzIGFycm93IGZ1bmN0aW9u
Iik7CiAgICAgdW5zaWduZWQgZW5kQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRp
b24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0
aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JL
aW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5j
dGlvbkJvZHlFeHByZXNzaW9uLCBjdXJyZW50RnVuY3Rpb25TY29wZSgpLT5pbm5lckFycm93RnVu
Y3Rpb25GZWF0dXJlcygpKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKHN0YXJ0TG9jYXRpb24sIHRva2VuTG9jYXRpb24oKSwgc3RhcnRDb2x1bW4sIGVuZENvbHVt
biwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3Rh
cnQsIHN0cmljdE1vZGUoKSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsIHBhcmFtZXRl
ckNvdW50LCBwYXJzZU1vZGUsIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKTsKIH0KIAog
c3RhdGljIGNvbnN0IGNoYXIqIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShTb3VyY2VQYXJzZU1vZGUg
bW9kZSkKQEAgLTE5ODgsNyArMTk4OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
Ym9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAg
ICAgIGZ1bmN0aW9uSW5mby5ib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbk1ldGFkYXRhKAog
ICAgICAgICAgICAgc3RhcnRMb2NhdGlvbiwgZW5kTG9jYXRpb24sIGZ1bmN0aW9uSW5mby5ib2R5
U3RhcnRDb2x1bW4sIGJvZHlFbmRDb2x1bW4sIAogICAgICAgICAgICAgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGZ1bmN0aW9uTmFtZVN0YXJ0LCBwYXJhbWV0ZXJzU3RhcnQsIAotICAgICAgICAgICAg
Y2FjaGVkSW5mby0+c3RyaWN0TW9kZSwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmlu
ZGluZywgY2FjaGVkSW5mby0+cGFyYW1ldGVyQ291bnQsIG1vZGUsIGZ1bmN0aW9uQm9keVR5cGUg
PT0gQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uLCBjYWNoZWRJbmZvLT5pbm5lckFycm93RnVu
Y3Rpb25GZWF0dXJlcyk7CisgICAgICAgICAgICBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlLCBjb25z
dHJ1Y3RvcktpbmQsIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBjYWNoZWRJbmZvLT5wYXJhbWV0ZXJD
b3VudCwgbW9kZSwgZnVuY3Rpb25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Np
b24pOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZyb21Tb3VyY2VQ
cm92aWRlckNhY2hlKGNhY2hlZEluZm8pOwogICAgICAgICBwb3BTY29wZShmdW5jdGlvblNjb3Bl
LCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKQEAgLTIwNjQsMTggKzIwNjQs
MTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgICAgICA6IGNsb3Nlc3RQ
YXJlbnROb25BcnJvd0Z1bmN0aW9uTm9uTGV4aWNhbFNjb3BlKCktPmNvbnN0cnVjdG9yS2luZCgp
OwogICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGZ1bmN0aW9uQ29uc3RydWN0b3JLaW5k
ID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkNhbm5vdCBjYWxsIHN1cGVyKCkgb3V0c2lkZSBv
ZiBhIGNsYXNzIGNvbnN0cnVjdG9yIik7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
ZnVuY3Rpb25Db25zdHJ1Y3RvcktpbmQgIT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkLCAiQ2Fu
bm90IGNhbGwgc3VwZXIoKSBpbiBhIGJhc2UgY2xhc3MgY29uc3RydWN0b3IiKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgaWYgKGZ1bmN0aW9uQm9keVR5cGUgPT0gQXJyb3dGdW5jdGlvbkJv
ZHlCbG9jayB8fCBmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lv
bikKLSAgICAgICAgICAgICAgICBmdW5jdGlvblNjb3BlLT5zZXRJbm5lckFycm93RnVuY3Rpb25V
c2VTdXBlckNhbGwoKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnVuY3Rpb25TY29wZS0+bmVl
ZHNTdXBlckJpbmRpbmcoKSkgewogICAgICAgICAgICAgU3VwZXJCaW5kaW5nIGZ1bmN0aW9uU3Vw
ZXJCaW5kaW5nID0gZnVuY3Rpb25Cb2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2Nr
CiAgICAgICAgICAgICAgICAgPyBleHBlY3RlZFN1cGVyQmluZGluZwogICAgICAgICAgICAgICAg
IDogY2xvc2VzdFBhcmVudE5vbkFycm93RnVuY3Rpb25Ob25MZXhpY2FsU2NvcGUoKS0+ZXhwZWN0
ZWRTdXBlckJpbmRpbmcoKTsKICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShmdW5jdGlv
blN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgInN1cGVyIGNhbiBvbmx5
IGJlIHVzZWQgaW4gYSBtZXRob2Qgb2YgYSBkZXJpdmVkIGNsYXNzIik7Ci0KLSAgICAgICAgICAg
IGlmIChmdW5jdGlvbkJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2sgfHwgZnVuY3Rp
b25Cb2R5VHlwZSA9PSBBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCi0gICAgICAgICAgICAg
ICAgZnVuY3Rpb25TY29wZS0+c2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlU3VwZXJQcm9wZXJ0eSgp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMjEzLDggKzMyMDcsNiBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9w
ZXJ0eShUcmVlQgogICAgICAgICAgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0
UG9zaXRpb24oKTsKICAgICAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOwogICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50
LCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICppZGVudCk7Ci0gICAgICAgICAgICBpZiAo
Y3VycmVudFNjb3BlKCktPmlzQXJyb3dGdW5jdGlvbigpKQotICAgICAgICAgICAgICAgIGN1cnJl
bnRTY29wZSgpLT5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VFdmFsKCk7CiAgICAgICAgICAgICBU
cmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0aW9uLCAqaWRl
bnQsIHN0YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVByb3BlcnR5KGlkZW50LCBub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5v
ZGU6OlR5cGU+KFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfCBQcm9wZXJ0eU5vZGU6OlNob3J0aGFu
ZCksIFByb3BlcnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlKTsKICAgICAgICAgfQpAQCAt
MzYyOCw4ICszNjIwLDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICBjYXNlIFRISVNU
T0tFTjogewogICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBpZiAoY3VycmVudFNjb3BlKCktPmlzQXJyb3dG
dW5jdGlvbigpKQotICAgICAgICAgICAgY3VycmVudFNjb3BlKCktPnNldElubmVyQXJyb3dGdW5j
dGlvblVzZVRoaXMoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhpc0V4cHIobG9j
YXRpb24sIG1fdGhpc1REWk1vZGUpOwogICAgIH0KICAgICBjYXNlIElERU5UOiB7CkBAIC0zODA1
LDggKzM3OTUsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaWYgKG1f
dm0tPnByb3BlcnR5TmFtZXMtPnRhcmdldCA9PSAqaWRlbnQpIHsKICAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCksICJuZXcudGFy
Z2V0IGlzIG9ubHkgdmFsaWQgaW5zaWRlIGZ1bmN0aW9ucyIpOwogICAgICAgICAgICAgICAgIGJh
c2VJc05ld1RhcmdldCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTY29wZSgp
LT5pc0Fycm93RnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudFNjb3BlKCkt
PnNldElubmVyQXJyb3dGdW5jdGlvblVzZU5ld1RhcmdldCgpOwogICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZU5ld1RhcmdldEV4cHIobG9jYXRpb24pOwogICAgICAgICAgICAg
ICAgIG5ld0NvdW50LS07CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTZjY2I2N2JiMzI4NTFkNTE2NWViZjAwMDRhZTg2OTY1
NjUxOTQ2NC4uMDJhNzI2YTU2OWY0N2U5ZmEzOGZlOTIwMzdlYWVhYzI1YzNhOGRmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNTgsNyArMTU4LDcgQEAgcHJpdmF0
ZToKIH07CiAKIHN0cnVjdCBTY29wZSB7Ci0gICAgU2NvcGUoY29uc3QgVk0qIHZtLCBib29sIGlz
RnVuY3Rpb24sIGJvb2wgaXNHZW5lcmF0b3IsIGJvb2wgc3RyaWN0TW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb24pCisgICAgU2NvcGUoY29uc3QgVk0qIHZtLCBib29sIGlzRnVuY3Rpb24sIGJvb2wg
aXNHZW5lcmF0b3IsIGJvb2wgc3RyaWN0TW9kZSkKICAgICAgICAgOiBtX3ZtKHZtKQogICAgICAg
ICAsIG1fc2hhZG93c0FyZ3VtZW50cyhmYWxzZSkKICAgICAgICAgLCBtX3VzZXNFdmFsKGZhbHNl
KQpAQCAtMTcwLDggKzE3MCw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9zdHJpY3RN
b2RlKHN0cmljdE1vZGUpCiAgICAgICAgICwgbV9pc0Z1bmN0aW9uKGlzRnVuY3Rpb24pCiAgICAg
ICAgICwgbV9pc0dlbmVyYXRvcihpc0dlbmVyYXRvcikKLSAgICAgICAgLCBtX2lzQXJyb3dGdW5j
dGlvbihpc0Fycm93RnVuY3Rpb24pCi0gICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb3VuZGFy
eShmYWxzZSkKKyAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihmYWxzZSkKICAgICAgICAgLCBt
X2lzTGV4aWNhbFNjb3BlKGZhbHNlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZh
bHNlKQogICAgICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKQEAgLTE4MCw3ICsxNzks
NiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1fZXhwZWN0ZWRTdXBlckJpbmRpbmcoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFN1cGVyQmluZGluZzo6Tm90TmVlZGVkKSkKICAgICAgICAgLCBt
X2xvb3BEZXB0aCgwKQogICAgICAgICAsIG1fc3dpdGNoRGVwdGgoMCkKLSAgICAgICAgLCBtX2lu
bmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzKDApCiAgICAgewogICAgIH0KIApAQCAtMTk3LDcgKzE5
NSw2IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9pc0Z1bmN0aW9uKHJocy5tX2lzRnVu
Y3Rpb24pCiAgICAgICAgICwgbV9pc0dlbmVyYXRvcihyaHMubV9pc0dlbmVyYXRvcikKICAgICAg
ICAgLCBtX2lzQXJyb3dGdW5jdGlvbihyaHMubV9pc0Fycm93RnVuY3Rpb24pCi0gICAgICAgICwg
bV9pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeShyaHMubV9pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSkK
ICAgICAgICAgLCBtX2lzTGV4aWNhbFNjb3BlKHJocy5tX2lzTGV4aWNhbFNjb3BlKQogICAgICAg
ICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KHJocy5tX2lzRnVuY3Rpb25Cb3VuZGFyeSkKICAgICAg
ICAgLCBtX2lzVmFsaWRTdHJpY3RNb2RlKHJocy5tX2lzVmFsaWRTdHJpY3RNb2RlKQpAQCAtMjA2
LDcgKzIwMyw2IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgICwgbV9leHBlY3RlZFN1cGVyQmlu
ZGluZyhyaHMubV9leHBlY3RlZFN1cGVyQmluZGluZykKICAgICAgICAgLCBtX2xvb3BEZXB0aChy
aHMubV9sb29wRGVwdGgpCiAgICAgICAgICwgbV9zd2l0Y2hEZXB0aChyaHMubV9zd2l0Y2hEZXB0
aCkKLSAgICAgICAgLCBtX2lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzKHJocy5tX2lubmVyQXJy
b3dGdW5jdGlvbkZlYXR1cmVzKQogICAgICAgICAsIG1fbW9kdWxlU2NvcGVEYXRhKHJocy5tX21v
ZHVsZVNjb3BlRGF0YSkKICAgICB7CiAgICAgICAgIGlmIChyaHMubV9sYWJlbHMpIHsKQEAgLTQ2
OSw3ICs0NjUsNiBAQCBzdHJ1Y3QgU2NvcGUgewogCiAgICAgdm9pZCBzZXROZWVkc0Z1bGxBY3Rp
dmF0aW9uKCkgeyBtX25lZWRzRnVsbEFjdGl2YXRpb24gPSB0cnVlOyB9CiAgICAgYm9vbCBuZWVk
c0Z1bGxBY3RpdmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Z1bGxBY3RpdmF0aW9uOyB9
Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpIHsgcmV0dXJuIG1faXNBcnJvd0Z1
bmN0aW9uQm91bmRhcnk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIHsgcmV0dXJuIG1f
aXNBcnJvd0Z1bmN0aW9uOyB9CiAKICAgICBib29sIGhhc0RpcmVjdFN1cGVyKCkgeyByZXR1cm4g
bV9oYXNEaXJlY3RTdXBlcjsgfQpAQCAtNDc4LDMxICs0NzMsMTEgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICBib29sIG5lZWRzU3VwZXJCaW5kaW5nKCkgeyByZXR1cm4gbV9uZWVkc1N1cGVyQmluZGlu
ZzsgfQogICAgIHZvaWQgc2V0TmVlZHNTdXBlckJpbmRpbmcoKSB7IG1fbmVlZHNTdXBlckJpbmRp
bmcgPSB0cnVlOyB9CiAgICAgCi0gICAgQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBpbm5lckFy
cm93RnVuY3Rpb25GZWF0dXJlcygpIHsgcmV0dXJuIG1faW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVy
ZXM7IH0KLSAgICAKICAgICB2b2lkIHNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKFN1cGVyQmluZGlu
ZyBzdXBlckJpbmRpbmcpIHsgbV9leHBlY3RlZFN1cGVyQmluZGluZyA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdXBlckJpbmRpbmcpOyB9CiAgICAgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJC
aW5kaW5nKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U3VwZXJCaW5kaW5nPihtX2V4cGVj
dGVkU3VwZXJCaW5kaW5nKTsgfQogICAgIHZvaWQgc2V0Q29uc3RydWN0b3JLaW5kKENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQpIHsgbV9jb25zdHJ1Y3RvcktpbmQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oY29uc3RydWN0b3JLaW5kKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25z
dHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+
KG1fY29uc3RydWN0b3JLaW5kKTsgfQogCi0gICAgdm9pZCBzZXRJbm5lckFycm93RnVuY3Rpb25V
c2VTdXBlckNhbGwoKSB7IG1faW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXMgfD0gU3VwZXJDYWxs
QXJyb3dGdW5jdGlvbkZlYXR1cmU7IH0KLSAgICB2b2lkIHNldElubmVyQXJyb3dGdW5jdGlvblVz
ZVN1cGVyUHJvcGVydHkoKSB7IG1faW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXMgfD0gU3VwZXJQ
cm9wZXJ0eUFycm93RnVuY3Rpb25GZWF0dXJlOyB9Ci0gICAgdm9pZCBzZXRJbm5lckFycm93RnVu
Y3Rpb25Vc2VFdmFsKCkgeyBtX2lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzIHw9IEV2YWxBcnJv
d0Z1bmN0aW9uRmVhdHVyZTsgfQotICAgIHZvaWQgc2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlVGhp
cygpIHsgbV9pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcyB8PSBUaGlzQXJyb3dGdW5jdGlvbkZl
YXR1cmU7IH0KLSAgICB2b2lkIHNldElubmVyQXJyb3dGdW5jdGlvblVzZU5ld1RhcmdldCgpIHsg
bV9pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcyB8PSBOZXdUYXJnZXRBcnJvd0Z1bmN0aW9uRmVh
dHVyZTsgfQotICAgIHZvaWQgc2V0SW5uZXJBcnJvd0Z1bmN0aW9uVXNlQXJndW1lbnRzKCkgeyBt
X2lubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzIHw9IEFyZ3VtZW50c0Fycm93RnVuY3Rpb25GZWF0
dXJlOyB9Ci0KLSAgICB2b2lkIHNldElubmVyQXJyb3dGdW5jdGlvblVzZUV2YWxBbmRVc2VBcmd1
bWVudHNJZk5lZWRlZCgpCi0gICAgewotICAgICAgICBBU1NFUlQobV9pc0Fycm93RnVuY3Rpb24p
OwotCi0gICAgICAgIGlmIChtX3VzZXNFdmFsKQotICAgICAgICAgICAgc2V0SW5uZXJBcnJvd0Z1
bmN0aW9uVXNlRXZhbCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1fdXNlZFZhcmlhYmxlcy5j
b250YWlucyhtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMuaW1wbCgpKSkKLSAgICAgICAg
ICAgIHNldElubmVyQXJyb3dGdW5jdGlvblVzZUFyZ3VtZW50cygpOwotICAgIH0KLSAgICAKICAg
ICB2b2lkIGNvbGxlY3RGcmVlVmFyaWFibGVzKFNjb3BlKiBuZXN0ZWRTY29wZSwgYm9vbCBzaG91
bGRUcmFja0Nsb3NlZFZhcmlhYmxlcykKICAgICB7CiAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+
bV91c2VzRXZhbCkKQEAgLTUxNCw3ICs0ODksNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIC8vICJhcmd1bWVudHMiIHJl
ZmVyZW5jZSBzaG91bGQgYmUgcmVzb2x2ZWQgYXQgZnVuY3Rpb24gYm91ZGFyeS4KLSAgICAgICAg
ICAgICAgICBpZiAobmVzdGVkU2NvcGUtPmlzRnVuY3Rpb25Cb3VuZGFyeSgpICYmIG5lc3RlZFNj
b3BlLT5oYXNBcmd1bWVudHMoKSAmJiBpbXBsID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3Vt
ZW50cy5pbXBsKCkgJiYgIW5lc3RlZFNjb3BlLT5pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpKQor
ICAgICAgICAgICAgICAgIGlmIChuZXN0ZWRTY29wZS0+aXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYg
bmVzdGVkU2NvcGUtPmhhc0FyZ3VtZW50cygpICYmIGltcGwgPT0gbV92bS0+cHJvcGVydHlOYW1l
cy0+YXJndW1lbnRzLmltcGwoKSAmJiAhbmVzdGVkU2NvcGUtPmlzQXJyb3dGdW5jdGlvbigpKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIG1fdXNlZFZh
cmlhYmxlcy5hZGQoaW1wbCk7CkBAIC01NDMsMTEgKzUxOCw2IEBAIHN0cnVjdCBTY29wZSB7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgdm9pZCBtZXJnZUlubmVyQXJyb3dGdW5jdGlvbkZl
YXR1cmVzKEFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJl
cykKLSAgICB7Ci0gICAgICAgIG1faW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXMgPSBtX2lubmVy
QXJyb3dGdW5jdGlvbkZlYXR1cmVzIHwgYXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlczsKLSAgICB9
Ci0gICAgCiAgICAgdm9pZCBnZXRDYXB0dXJlZFZhcnMoSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJpYWJsZXMsIGJvb2wmIG1vZGlmaWVkUGFyYW1ldGVyLCBib29sJiBtb2RpZmllZEFyZ3VtZW50
cykKICAgICB7CiAgICAgICAgIGlmIChtX25lZWRzRnVsbEFjdGl2YXRpb24gfHwgbV91c2VzRXZh
bCkgewpAQCAtNTk4LDcgKzU2OCw2IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHBhcmFtZXRl
cnMudXNlc0V2YWwgPSBtX3VzZXNFdmFsOwogICAgICAgICBwYXJhbWV0ZXJzLnN0cmljdE1vZGUg
PSBtX3N0cmljdE1vZGU7CiAgICAgICAgIHBhcmFtZXRlcnMubmVlZHNGdWxsQWN0aXZhdGlvbiA9
IG1fbmVlZHNGdWxsQWN0aXZhdGlvbjsKLSAgICAgICAgcGFyYW1ldGVycy5pbm5lckFycm93RnVu
Y3Rpb25GZWF0dXJlcyA9IG1faW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXM7CiAgICAgICAgIGNv
cHlDYXB0dXJlZFZhcmlhYmxlc1RvVmVjdG9yKG1fd3JpdHRlblZhcmlhYmxlcywgcGFyYW1ldGVy
cy53cml0dGVuVmFyaWFibGVzKTsKICAgICAgICAgY29weUNhcHR1cmVkVmFyaWFibGVzVG9WZWN0
b3IobV91c2VkVmFyaWFibGVzLCBwYXJhbWV0ZXJzLnVzZWRWYXJpYWJsZXMpOwogICAgIH0KQEAg
LTYwOCw3ICs1NzcsNiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICBBU1NFUlQobV9pc0Z1bmN0
aW9uKTsKICAgICAgICAgbV91c2VzRXZhbCA9IGluZm8tPnVzZXNFdmFsOwogICAgICAgICBtX3N0
cmljdE1vZGUgPSBpbmZvLT5zdHJpY3RNb2RlOwotICAgICAgICBtX2lubmVyQXJyb3dGdW5jdGlv
bkZlYXR1cmVzID0gaW5mby0+aW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXM7CiAgICAgICAgIG1f
bmVlZHNGdWxsQWN0aXZhdGlvbiA9IGluZm8tPm5lZWRzRnVsbEFjdGl2YXRpb247CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbmZvLT51c2VkVmFyaWFibGVzQ291bnQ7ICsraSkK
ICAgICAgICAgICAgIG1fdXNlZFZhcmlhYmxlcy5hZGQoaW5mby0+dXNlZFZhcmlhYmxlcygpW2ld
KTsKQEAgLTYyNCw4ICs1OTIsNiBAQCBwcml2YXRlOgogICAgICAgICBtX2hhc0FyZ3VtZW50cyA9
IHRydWU7CiAgICAgICAgIHNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgICAgIG1faXNHZW5lcmF0
b3IgPSBmYWxzZTsKLSAgICAgICAgbV9pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSA9IGZhbHNlOwot
ICAgICAgICBtX2lzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwogICAgIH0KIAogICAgIHZvaWQgc2V0
SXNHZW5lcmF0b3JGdW5jdGlvbigpCkBAIC02NDQsNyArNjEwLDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldElzQXJyb3dGdW5jdGlvbigpCiAgICAgewogICAgICAgICBzZXRJc0Z1bmN0aW9uKCk7
Ci0gICAgICAgIG1faXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkgPSB0cnVlOwogICAgICAgICBtX2lz
QXJyb3dGdW5jdGlvbiA9IHRydWU7CiAgICAgfQogCkBAIC02NjUsNyArNjMwLDYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNGdW5jdGlvbiA6IDE7CiAgICAgYm9vbCBtX2lzR2VuZXJhdG9yIDog
MTsKICAgICBib29sIG1faXNBcnJvd0Z1bmN0aW9uIDogMTsKLSAgICBib29sIG1faXNBcnJvd0Z1
bmN0aW9uQm91bmRhcnkgOiAxOwogICAgIGJvb2wgbV9pc0xleGljYWxTY29wZSA6IDE7CiAgICAg
Ym9vbCBtX2lzRnVuY3Rpb25Cb3VuZGFyeSA6IDE7CiAgICAgYm9vbCBtX2lzVmFsaWRTdHJpY3RN
b2RlIDogMTsKQEAgLTY3NCw3ICs2MzgsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZXhw
ZWN0ZWRTdXBlckJpbmRpbmcgOiAyOwogICAgIGludCBtX2xvb3BEZXB0aDsKICAgICBpbnQgbV9z
d2l0Y2hEZXB0aDsKLSAgICBBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIG1faW5uZXJBcnJvd0Z1
bmN0aW9uRmVhdHVyZXM7CiAKICAgICB0eXBlZGVmIFZlY3RvcjxTY29wZUxhYmVsSW5mbywgMj4g
TGFiZWxTdGFjazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGFiZWxTdGFjaz4gbV9sYWJlbHM7CkBA
IC05MzMsOCArODk2LDkgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGkgPSBt
X3Njb3BlU3RhY2suc2l6ZSgpIC0gMTsKICAgICAgICAgQVNTRVJUKGkgPCBtX3Njb3BlU3RhY2su
c2l6ZSgpICYmIG1fc2NvcGVTdGFjay5zaXplKCkpOwotICAgICAgICB3aGlsZSAoaSAmJiAoIW1f
c2NvcGVTdGFja1tpXS5pc0Z1bmN0aW9uQm91bmRhcnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNB
cnJvd0Z1bmN0aW9uQm91bmRhcnkoKSkpCisgICAgICAgIHdoaWxlIChpICYmICghbV9zY29wZVN0
YWNrW2ldLmlzRnVuY3Rpb25Cb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tpXS5pc0Fycm93RnVu
Y3Rpb24oKSkpCiAgICAgICAgICAgICBpLS07CisgICAgICAgIC8vIFdoZW4gcmVhY2hpbmcgdGhl
IHRvcCBsZXZlbCBzY29wZSAoaXQgY2FuIGJlIG5vbiBmdW5jdGlvbiBzY29wZSksIHdlIHJldHVy
biBpdC4KICAgICAgICAgcmV0dXJuIFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIGkpOwogICAgIH0K
ICAgICAKQEAgLTk0MywxNCArOTA3LDEyIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNGdW5j
dGlvbiA9IGZhbHNlOwogICAgICAgICBib29sIGlzU3RyaWN0ID0gZmFsc2U7CiAgICAgICAgIGJv
b2wgaXNHZW5lcmF0b3IgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBm
YWxzZTsKICAgICAgICAgaWYgKCFtX3Njb3BlU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBpc1N0cmljdCA9IG1fc2NvcGVTdGFjay5sYXN0KCkuc3RyaWN0TW9kZSgpOwogICAgICAgICAg
ICAgaXNGdW5jdGlvbiA9IG1fc2NvcGVTdGFjay5sYXN0KCkuaXNGdW5jdGlvbigpOwogICAgICAg
ICAgICAgaXNHZW5lcmF0b3IgPSBtX3Njb3BlU3RhY2subGFzdCgpLmlzR2VuZXJhdG9yKCk7Ci0g
ICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSBtX3Njb3BlU3RhY2subGFzdCgpLmlzQXJyb3dG
dW5jdGlvbigpOwogICAgICAgICB9Ci0gICAgICAgIG1fc2NvcGVTdGFjay5hcHBlbmQoU2NvcGUo
bV92bSwgaXNGdW5jdGlvbiwgaXNHZW5lcmF0b3IsIGlzU3RyaWN0LCBpc0Fycm93RnVuY3Rpb24p
KTsKKyAgICAgICAgbV9zY29wZVN0YWNrLmFwcGVuZChTY29wZShtX3ZtLCBpc0Z1bmN0aW9uLCBp
c0dlbmVyYXRvciwgaXNTdHJpY3QpKTsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRTY29wZSgpOwog
ICAgIH0KICAgICAKQEAgLTk1OSwxMyArOTIxLDYgQEAgcHJpdmF0ZToKICAgICAgICAgQVNTRVJU
X1VOVVNFRChzY29wZSwgc2NvcGUuaW5kZXgoKSA9PSBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMSk7
CiAgICAgICAgIEFTU0VSVChtX3Njb3BlU3RhY2suc2l6ZSgpID4gMSk7CiAgICAgICAgIG1fc2Nv
cGVTdGFja1ttX3Njb3BlU3RhY2suc2l6ZSgpIC0gMl0uY29sbGVjdEZyZWVWYXJpYWJsZXMoJm1f
c2NvcGVTdGFjay5sYXN0KCksIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKTsKLSAgICAgICAg
Ci0gICAgICAgIGlmIChtX3Njb3BlU3RhY2subGFzdCgpLmlzQXJyb3dGdW5jdGlvbigpKQotICAg
ICAgICAgICAgbV9zY29wZVN0YWNrLmxhc3QoKS5zZXRJbm5lckFycm93RnVuY3Rpb25Vc2VFdmFs
QW5kVXNlQXJndW1lbnRzSWZOZWVkZWQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghKG1fc2Nv
cGVTdGFjay5sYXN0KCkuaXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgIW1fc2NvcGVTdGFjay5sYXN0
KCkuaXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkoKSkpCi0gICAgICAgICAgICBtX3Njb3BlU3RhY2tb
bV9zY29wZVN0YWNrLnNpemUoKSAtIDJdLm1lcmdlSW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXMo
bV9zY29wZVN0YWNrLmxhc3QoKS5pbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcygpKTsKLQogICAg
ICAgICBpZiAoIW1fc2NvcGVTdGFjay5sYXN0KCkuaXNGdW5jdGlvbkJvdW5kYXJ5KCkgJiYgbV9z
Y29wZVN0YWNrLmxhc3QoKS5uZWVkc0Z1bGxBY3RpdmF0aW9uKCkpCiAgICAgICAgICAgICBtX3Nj
b3BlU3RhY2tbbV9zY29wZVN0YWNrLnNpemUoKSAtIDJdLnNldE5lZWRzRnVsbEFjdGl2YXRpb24o
KTsKICAgICAgICAgbV9zY29wZVN0YWNrLnJlbW92ZUxhc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCBmMDdjYmI4ZDAwNGMwMGM3YWVkZjBkMTlh
MDA3YTgwMmFlOWY0NDNjLi40ZjZiYWM2YzNjZGI3ZDcyODY1YmUzNzE5MzYwYmFmODM0MjQ1YzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0xNjEs
MTcgKzE2MSw2IEBAIGNvbnN0IENvZGVGZWF0dXJlcyBBcnJvd0Z1bmN0aW9uQ29udGV4dEZlYXR1
cmUgPSAxIDw8IDk7CiAKIGNvbnN0IENvZGVGZWF0dXJlcyBBbGxGZWF0dXJlcyA9IEV2YWxGZWF0
dXJlIHwgQXJndW1lbnRzRmVhdHVyZSB8IFdpdGhGZWF0dXJlIHwgVGhpc0ZlYXR1cmUgfCBTdHJp
Y3RNb2RlRmVhdHVyZSB8IFNoYWRvd3NBcmd1bWVudHNGZWF0dXJlIHwgTW9kaWZpZWRQYXJhbWV0
ZXJGZWF0dXJlIHwgQXJyb3dGdW5jdGlvbkZlYXR1cmUgfCBBcnJvd0Z1bmN0aW9uQ29udGV4dEZl
YXR1cmU7CiAKLXR5cGVkZWYgdWludDhfdCBBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzOwotICAg
IAotY29uc3QgQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBOb0Fycm93RnVuY3Rpb25GZWF0dXJl
cyA9ICAgICAgICAgICAgICAgIDA7Ci1jb25zdCBBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVzIEV2
YWxBcnJvd0Z1bmN0aW9uRmVhdHVyZSA9ICAgICAgICAgIDEgPDwgMDsKLWNvbnN0IEFycm93RnVu
Y3Rpb25Db2RlRmVhdHVyZXMgQXJndW1lbnRzQXJyb3dGdW5jdGlvbkZlYXR1cmUgPSAgICAgMSA8
PCAxOwotY29uc3QgQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBUaGlzQXJyb3dGdW5jdGlvbkZl
YXR1cmUgPSAgICAgICAgICAxIDw8IDI7Ci1jb25zdCBBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVz
IFN1cGVyQ2FsbEFycm93RnVuY3Rpb25GZWF0dXJlID0gICAgIDEgPDwgMzsKLWNvbnN0IEFycm93
RnVuY3Rpb25Db2RlRmVhdHVyZXMgU3VwZXJQcm9wZXJ0eUFycm93RnVuY3Rpb25GZWF0dXJlID0g
MSA8PCA0OwotY29uc3QgQXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyBOZXdUYXJnZXRBcnJvd0Z1
bmN0aW9uRmVhdHVyZSA9ICAgICAxIDw8IDU7Ci0gICAgCi1jb25zdCBBcnJvd0Z1bmN0aW9uQ29k
ZUZlYXR1cmVzIEFsbEFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgPSBFdmFsQXJyb3dGdW5jdGlv
bkZlYXR1cmUgfCBBcmd1bWVudHNBcnJvd0Z1bmN0aW9uRmVhdHVyZSB8IFRoaXNBcnJvd0Z1bmN0
aW9uRmVhdHVyZSB8IFN1cGVyQ2FsbEFycm93RnVuY3Rpb25GZWF0dXJlIHwgU3VwZXJQcm9wZXJ0
eUFycm93RnVuY3Rpb25GZWF0dXJlIHwgTmV3VGFyZ2V0QXJyb3dGdW5jdGlvbkZlYXR1cmU7CiB9
IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIFBhcnNlck1vZGVzX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaApp
bmRleCAwZmM0YTk0NWZkZDQwMjQ5MDZlMWRhZDI1YTZkZDRlZmJiYjkyNTkyLi44MWQyMjFiMzk2
MTBhNzgxMzY3MTFlMzMxNGRhYmJkODJhYWNkNTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCkBAIC00NCw3ICs0
NCw2IEBAIHN0cnVjdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbUNyZWF0aW9uUGFyYW1ldGVycyB7
CiAgICAgYm9vbCBuZWVkc0Z1bGxBY3RpdmF0aW9uOwogICAgIGJvb2wgdXNlc0V2YWw7CiAgICAg
Ym9vbCBzdHJpY3RNb2RlOwotICAgIEFycm93RnVuY3Rpb25Db2RlRmVhdHVyZXMgaW5uZXJBcnJv
d0Z1bmN0aW9uRmVhdHVyZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
IHVzZWRWYXJpYWJsZXM7CiAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IHdy
aXR0ZW5WYXJpYWJsZXM7CiAgICAgYm9vbCBpc0JvZHlBcnJvd0V4cHJlc3Npb24geyBmYWxzZSB9
OwpAQCAtODgsOCArODcsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCB1c2VzRXZhbCA6IDE7CiAKICAg
ICBib29sIHN0cmljdE1vZGUgOiAxOwotICAgIAotICAgIEFycm93RnVuY3Rpb25Db2RlRmVhdHVy
ZXMgaW5uZXJBcnJvd0Z1bmN0aW9uRmVhdHVyZXM7CiAKICAgICB1bnNpZ25lZCBsYXN0VG9ja2Vu
TGluZVN0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIHVzZWRWYXJpYWJsZXNDb3VudDsKQEAgLTEz
MCw3ICsxMjcsNiBAQCBpbmxpbmUgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW06OlNvdXJjZVByb3Zp
ZGVyQ2FjaGVJdGVtKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaAogICAgICwgcGFyYW1ldGVyQ291
bnQocGFyYW1ldGVycy5wYXJhbWV0ZXJDb3VudCkKICAgICAsIHVzZXNFdmFsKHBhcmFtZXRlcnMu
dXNlc0V2YWwpCiAgICAgLCBzdHJpY3RNb2RlKHBhcmFtZXRlcnMuc3RyaWN0TW9kZSkKLSAgICAs
IGlubmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzKHBhcmFtZXRlcnMuaW5uZXJBcnJvd0Z1bmN0aW9u
RmVhdHVyZXMpCiAgICAgLCBsYXN0VG9ja2VuTGluZVN0YXJ0T2Zmc2V0KHBhcmFtZXRlcnMubGFz
dFRvY2tlbkxpbmVTdGFydE9mZnNldCkKICAgICAsIHVzZWRWYXJpYWJsZXNDb3VudChwYXJhbWV0
ZXJzLnVzZWRWYXJpYWJsZXMuc2l6ZSgpKQogICAgICwgd3JpdHRlblZhcmlhYmxlc0NvdW50KHBh
cmFtZXRlcnMud3JpdHRlblZhcmlhYmxlcy5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IDE5ZjZiYzhiYTg4YThjYjMwMWU5MmI5NDQ4
MTYzYjM0ZDViM2UzNmEuLmVlZDdiOGNlM2VjYzhiODg4YjE3NmNmNTM2ODFkMjEwOWQwNGYxZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0x
ODMsNyArMTgzLDcgQEAgcHVibGljOgogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVlpZWxkKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBZaWVsZEV4cHI7IH0KICAgICBDbGFzc0V4cHJlc3Npb24gY3JlYXRlQ2xhc3NF
eHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBWYXJpYWJsZUVu
dmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0eUxpc3Qs
IFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1
bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAg
IGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWduZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCwg
QXJyb3dGdW5jdGlvbkNvZGVGZWF0dXJlcyA9IE5vQXJyb3dGdW5jdGlvbkZlYXR1cmVzKSB7IHJl
dHVybiBGdW5jdGlvbkJvZHlSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25NZXRhZGF0
YShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgYm9vbCwgaW50LCBpbnQsIGludCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIHVu
c2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUsIGJvb2wpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3Vs
dDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQo
aW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVu
dHNSZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QtMS5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2Fs
LWJpbmQtYXJndW1lbnRzLW5vbi1zdHJpY3QtMS5qcwppbmRleCBiYjhiYTdhNzJiMWMyOWVlMzk3
N2Y2ZDFhMDM2YTZkMjc4YTg5YjMwLi4yYjI4MWJhMjg3OGFkY2M3N2FhMTRkOGRlNzYwYmIwMzZl
NmJkNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
cm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLWFyZ3VtZW50cy1ub24tc3RyaWN0LTEuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwt
YmluZC1hcmd1bWVudHMtbm9uLXN0cmljdC0xLmpzCkBAIC0yMTQsMzkgKzIxNCwzIEBAIGZ1bmN0
aW9uIGJvbygpIHsKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewogICAgIHRlc3RD
YXNlKGJvbygnQScgKyBpKSgnQicgKyBpKSgnRCcgKyBpKSgnRScgKyBpKSgnRycgKyBpKVswXSwg
J0UnICsgaSwgdHh0TXNnICsgIiMxNyIpOwogfQotCi12YXIgdGVzdFZhbHVlID0gJ3Rlc3QtdmFs
dWUnOwotCi1mdW5jdGlvbiBmX2FyZ3MgKCkgewotICAgIGlmICh0cnVlKSB7Ci0gICAgICAgIGxl
dCBzb21lVmFsdWUgPSAnJzsKLSAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAgIGxldCBh
bm90aGVyVmFsdWUgPSAndmFsdWUnOwotICAgICAgICAgICAgcmV0dXJuICgpID0+ICgpID0+ICgp
ID0+IGFyZ3VtZW50c1swXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiAoKSA9PiAn
bm8tdmFsdWUnOwotfQotCi1mb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICBs
ZXQgdiA9IGZfYXJncyh0ZXN0VmFsdWUsICdhbm90aGVyVmFsdWUnKSgpKCkoKTsKLSAgICB0ZXN0
Q2FzZSh2LCB0ZXN0VmFsdWUpOwotfQotCi1mdW5jdGlvbiBmX2FyZ3NfZXZhbCAoKSB7Ci0gICAg
aWYgKHRydWUpIHsKLSAgICAgICAgbGV0IHNvbWVWYWx1ZSA9ICcnOwotICAgICAgICBpZiAodHJ1
ZSkgewotICAgICAgICAgICAgbGV0IGFub3RoZXJWYWx1ZSA9ICd2YWx1ZSc7Ci0gICAgICAgICAg
ICByZXR1cm4gKCkgPT4gKCkgPT4gKCkgPT4gZXZhbCgnYXJndW1lbnRzWzBdJyk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKCkgPT4gJ25vLXZhbHVlJzsKLX0KLQotZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgbGV0IHYgPSBmX2FyZ3NfZXZhbCh0ZXN0VmFs
dWUsICdhbm90aGVyVmFsdWUnKSgpKCkoKTsKLSAgICB0ZXN0Q2FzZSh2LCB0ZXN0VmFsdWUpOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1
bmN0aW9uLWxleGljYWwtYmluZC1hcmd1bWVudHMtc3RyaWN0LmpzIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1hcmd1bWVudHMt
c3RyaWN0LmpzCmluZGV4IDg2ZmZlZmYwN2FlNWNkYTNmNmI2YmY0YTc3MzhiNTMwNTczOWJmZjUu
LmZkOGM5Yzc0ZmZiM2MzNGM2NGEzMTFlZjNhZGMxODE3MDNmZjU1ZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1sZXhpY2FsLWJp
bmQtYXJndW1lbnRzLXN0cmljdC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLWFyZ3VtZW50cy1zdHJpY3QuanMKQEAg
LTEzMSwzOSArMTMxLDMgQEAgZnVuY3Rpb24gdGVzdCgpIHsKIH0KIAogdGVzdCgpOwotCi12YXIg
dGVzdFZhbHVlID0gJ3Rlc3QtdmFsdWUnOwotCi1mdW5jdGlvbiBmX2FyZ3MgKCkgewotICAgIGlm
ICh0cnVlKSB7Ci0gICAgICAgIGxldCBzb21lVmFsdWUgPSAnJzsKLSAgICAgICAgaWYgKHRydWUp
IHsKLSAgICAgICAgICAgIGxldCBhbm90aGVyVmFsdWUgPSAndmFsdWUnOwotICAgICAgICAgICAg
cmV0dXJuICgpID0+ICgpID0+ICgpID0+IGFyZ3VtZW50c1swXTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiAoKSA9PiAnbm8tdmFsdWUnOwotfQotCi1mb3IgKHZhciBpID0gMDsgaSA8
IDEwMDAwOyBpKyspIHsKLSAgICBsZXQgdiA9IGZfYXJncyh0ZXN0VmFsdWUsICdhbm90aGVyVmFs
dWUnKSgpKCkoKTsKLSAgICB0ZXN0Q2FzZSh2LCB0ZXN0VmFsdWUpOwotfQotCi1mdW5jdGlvbiBm
X2FyZ3NfZXZhbCAoKSB7Ci0gICAgaWYgKHRydWUpIHsKLSAgICAgICAgbGV0IHNvbWVWYWx1ZSA9
ICcnOwotICAgICAgICBpZiAodHJ1ZSkgewotICAgICAgICAgICAgbGV0IGFub3RoZXJWYWx1ZSA9
ICd2YWx1ZSc7Ci0gICAgICAgICAgICByZXR1cm4gKCkgPT4gKCkgPT4gKCkgPT4gZXZhbCgnYXJn
dW1lbnRzWzBdJyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gKCkgPT4gJ25vLXZh
bHVlJzsKLX0KLQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7Ci0gICAgbGV0IHYg
PSBmX2FyZ3NfZXZhbCh0ZXN0VmFsdWUsICdhbm90aGVyVmFsdWUnKSgpKCkoKTsKLSAgICB0ZXN0
Q2FzZSh2LCB0ZXN0VmFsdWUpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1uZXd0YXJnZXQuanMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1i
aW5kLW5ld3RhcmdldC5qcwppbmRleCA4YmVmZmQ2Nzg0OTI4OWFmYmE0M2I0OTAwMDJiZDJhZmEz
ZGNkMGIyLi43YThkMjdjMWM5YTNjMDllYjVhYWQyNmUyNjBhMTU4ZDQ5MzRiMmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4
aWNhbC1iaW5kLW5ld3RhcmdldC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLW5ld3RhcmdldC5qcwpAQCAtNjYsNyAr
NjYsNyBAQCB2YXIgdHJ5VG9DcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICh2YWwpIHsKICAgICAgICAg
bmV3IEModmFsKTsKICAgICB9CiAgICAgY2F0Y2ggKGUpIHsKLSAgICAgICAgcmVzdWx0ID0gZSBp
bnN0YW5jZW9mIFJlZmVyZW5jZUVycm9yOworICAgICAgICByZXN1bHQgPSBlIGluc3RhbmNlb2Yg
UmVmZXJlbmNlRXJyb3I7IAogICAgIH0KIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC03NiwxNyAr
NzYsMyBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykgewogICAgIHRlc3RDYXNlKHRy
eVRvQ3JlYXRlQ2xhc3ModHJ1ZSksIHRydWUsICJFcnJvcjogbmV3VGFyZ2V0TG9jYWwgc2hvdWxk
IGJlIGhpZGVkIHZhcmlhYmxlIik7CiAgICAgdGVzdENhc2UodHJ5VG9DcmVhdGVDbGFzcyhmYWxz
ZSksIHRydWUsICJFcnJvcjogbmV3VGFyZ2V0TG9jYWwgc2hvdWxkIGJlIGhpZGVkIHZhcmlhYmxl
Iik7CiB9Ci0KLWZ1bmN0aW9uIGdldFRhcmdldEJsb2NrU2NvcGUoKSB7Ci0gICAgaWYgKHRydWUp
IHsKLSAgICAgICAgbGV0IHNvbWVWYWx1ZSA9ICcnOwotICAgICAgICBpZiAodHJ1ZSkKLSAgICAg
ICAgICAgIHJldHVybiB4ID0+IG5ldy50YXJnZXQ7Ci0gICAgfQotICAgIHJldHVybiAoKT0+dmFs
dWU7Ci19Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgdmFyIHVuZGVm
aW5lZFRhcmdldCA9IGdldFRhcmdldEJsb2NrU2NvcGUoKSgpCi0gICAgdGVzdENhc2UodW5kZWZp
bmVkVGFyZ2V0LCB1bmRlZmluZWQsICJFcnJvcjogbmV3LnRhcmdldCBpcyBub3QgbGV4aWNhbGx5
IGJpbmRlZCBpbnNpZGUgb2YgdGhlIGFycm93IGZ1bmN0aW9uICM0Iik7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNh
bC1iaW5kLXN1cGVycHJvcGVydHkuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXN1cGVycHJvcGVydHkuanMKaW5kZXggMmEx
ZjJiNDY4OGRiZDkwYWY1ZTZiNmE5Y2VmODc1YjNhMjQ5OWM5Yy4uYThiYWQxNWE4MmNkNzYyOWE0
OTA4YTlkMTIyMjcwY2JiZmIwZDgxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxleGljYWwtYmluZC1zdXBlcnByb3BlcnR5Lmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXJyb3dmdW5jdGlvbi1s
ZXhpY2FsLWJpbmQtc3VwZXJwcm9wZXJ0eS5qcwpAQCAtMTIzLDIwICsxMjMsNiBAQCB2YXIgRyA9
IGNsYXNzIEcgZXh0ZW5kcyBBIHsKICAgICAgZ2V0UGFyZW50VmFsdWUoKSB7CiAgICAgICAgICBy
ZXR1cm4gc3VwZXIuZ2V0VmFsdWUoKTsKICAgICAgfQotCi0gICAgIGdldFZhbHVlQmxvY2tTY29w
ZSgpIHsKLSAgICAgICAgIGlmICh0cnVlKSB7Ci0gICAgICAgICAgICAgdmFyIHNvbWVWYWx1ZSA9
Jyc7Ci0gICAgICAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAgICAgICAgcmV0dXJuICgp
ID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxldCBpbnRlcm5hbFZhbHVlID0gJyc7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3VwZXIuZ2V0VmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICB9CiAgfTsKIAogIHZh
ciBnID0gbmV3IEcoKTsKQEAgLTE1NSw4ICsxNDEsNiBAQCBmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyBpKyspIHsKICAgICBsZXQgc2V0VmFsdWUgPSBnMS5zZXRWYWx1ZUNCKCk7CiAgICAgc2V0
VmFsdWUoJ25ldy12YWx1ZScpOwogICAgIHRlc3RDYXNlKGdldFZhbHVlKCksICduZXctdmFsdWUn
LCAnRXJyb3I6IFNvbWUgcHJvYmxlbSB3aXRoIHVzaW5nIGFycm93IGFuZCAic3VwZXIiIGluc2lk
ZSBvZiB0aGUgbWV0aG9kIHRoYXQgcmV0dW4gYXJyb3cgZnVuY3Rpb24nKTsKLSAgICBnZXRWYWx1
ZSA9IGcxLmdldFZhbHVlQmxvY2tTY29wZSgpOwotICAgIHRlc3RDYXNlKGdldFZhbHVlKCksICdu
ZXctdmFsdWUnLCAgJ0Vycm9yOiBTb21lIHByb2JsZW0gd2l0aCB1c2luZyBhcnJvdyBhbmQgInN1
cGVyIiB3aXRoIGRlZXAgbmVzdGluZyBpbnNpZGUgb2YgdGhlIG1ldGhvZCB0aGF0IHJldHVuIGFy
cm93IGZ1bmN0aW9uJyk7CiB9CiAKIHZhciBIID0gY2xhc3MgSCBleHRlbmRzIEEgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcnJvd2Z1bmN0aW9uLWxl
eGljYWwtYmluZC10aGlzLTguanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtOC5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjU1OGUzMDgyMjQ1ZmExNDYxMzU2YjhlNTI3ZjU2Mjg5NGYwMGNjNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fycm93ZnVuY3Rpb24tbGV4aWNhbC1iaW5kLXRoaXMtOC5q
cworKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLXZhciB0ZXN0Q2FzZSA9IGZ1bmN0aW9u
IChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpIHsKLSAgICAgICAgdGhyb3cgbWVzc2FnZSArICIuIEV4cGVjdGVkICciICsgZXhwZWN0ZWQg
KyAiJywgYnV0IHdhcyAnIiArIGFjdHVhbCArICInIjsKLSAgICB9Ci19OwotCi1sZXQgdGVzdFZh
bHVlID0gJ3Rlc3QtdmFsdWUnOwotCi12YXIgZl90aGlzID0gZnVuY3Rpb24gKCkgewotICAgIGxl
dCB2YWx1ZSA9ICd2YWx1ZSc7Ci0gICAgaWYgKHRydWUpIHsKLSAgICAgICAgbGV0IHNvbWVWYWx1
ZSA9ICdzb21lVmFsdWUnOwotICAgICAgICBpZiAodHJ1ZSkgewotICAgICAgICAgICAgbGV0ID0g
YW5vdGhlclZhbHVlID0gJ3ZhbHVlJzsKLSAgICAgICAgICAgIHJldHVybiAoKSA9PiAoKSA9PiAo
KSA9PiB0aGlzLnZhbHVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICgpID0+IHZh
bHVlOwotfQotCi1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICB0ZXN0Q2Fz
ZShmX3RoaXMuY2FsbCh7dmFsdWUgOiB0ZXN0VmFsdWV9KSgpKCkoKSwgdGVzdFZhbHVlKTsKLX0K
LQotdmFyIGZfdGhpc19ldmFsID0gZnVuY3Rpb24gKCkgewotICAgIGlmICh0cnVlKSB7Ci0gICAg
ICAgIGxldCBzb21lVmFsdWUgPSAnJzsKLSAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAg
IGxldCA9IGFub3RoZXJWYWx1ZSA9ICd2YWx1ZSc7Ci0gICAgICAgICAgICByZXR1cm4gKCkgPT4g
KCkgPT4gKCkgPT4gZXZhbCgndGhpcy52YWx1ZScpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuICgpID0+ICduby12YWx1ZSc7Ci19Ci0KLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7
IGkrKykgewotICAgIHRlc3RDYXNlKGZfdGhpc19ldmFsLmNhbGwoe3ZhbHVlIDogdGVzdFZhbHVl
fSwgZmFsc2UpKCkoKSgpLCB0ZXN0VmFsdWUpOwotfQotCi0KLWZ1bmN0aW9uIGZfdGhpc19icmFu
Y2hlcyAoYnJhbmNoLCByZXR1cm5UaGlzKSB7Ci0gICAgbGV0IHZhbHVlID0gJ3ZhbHVlJzsKLSAg
ICBpZiAoYnJhbmNoID09PSAnQScpIHsKLSAgICAgICAgbGV0IHNvbWVWYWx1ZSA9ICdzb21lVmFs
dWUnOwotICAgICAgICBpZiAodHJ1ZSkgewotICAgICAgICAgICAgbGV0ID0gYW5vdGhlclZhbHVl
ID0gJ3ZhbHVlJzsKLSAgICAgICAgICAgIHJldHVybiAoKSA9PiAoKSA9PiAoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHJldHVyblRoaXMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aGlzLnZhbHVlOwotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gYW5vdGhlclZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuICgpID0+IHZhbHVlOwotfQotCi1mb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspIHsKLSAgICB0ZXN0Q2FzZShmX3RoaXNfYnJhbmNoZXMuY2FsbCh7dmFsdWUgOiB0ZXN0VmFs
dWV9LCAnQicpKCkgPT0gdGVzdFZhbHVlLCBmYWxzZSk7Ci0gICAgdGVzdENhc2UoZl90aGlzX2Jy
YW5jaGVzLmNhbGwoe3ZhbHVlIDogdGVzdFZhbHVlfSwgJ0EnLCBmYWxzZSkoKSgpKCkgPT0gdGVz
dFZhbHVlLCBmYWxzZSk7Ci0gICAgdGVzdENhc2UoZl90aGlzX2JyYW5jaGVzLmNhbGwoe3ZhbHVl
IDogdGVzdFZhbHVlfSwgJ0EnLCB0cnVlKSgpKCkoKSwgdGVzdFZhbHVlKTsKLX0KLQotZnVuY3Rp
b24gZl90aGlzX2V2YWxfYnJhbmNoZXMgKGJyYW5jaCwgcmV0dXJuVGhpcykgewotICAgIGxldCB2
YWx1ZSA9ICd2YWx1ZSc7Ci0gICAgaWYgKGJyYW5jaCA9PT0gJ0EnKSB7Ci0gICAgICAgIGxldCBz
b21lVmFsdWUgPSAnc29tZVZhbHVlJzsKLSAgICAgICAgaWYgKHRydWUpIHsKLSAgICAgICAgICAg
IGxldCA9IGFub3RoZXJWYWx1ZSA9ICd2YWx1ZSc7Ci0gICAgICAgICAgICByZXR1cm4gKCkgPT4g
KCkgPT4gKCkgPT4gewotICAgICAgICAgICAgICAgIGlmIChyZXR1cm5UaGlzKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZXZhbCgndGhpcy52YWx1ZScpOwotICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5vdGhlclZhbHVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICgpID0+IHZhbHVlOwotfQotCi1m
b3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKLSAgICB0ZXN0Q2FzZShmX3RoaXNfZXZh
bF9icmFuY2hlcy5jYWxsKHt2YWx1ZSA6IHRlc3RWYWx1ZX0sICdCJykoKSA9PSB0ZXN0VmFsdWUs
IGZhbHNlKTsKLSAgICB0ZXN0Q2FzZShmX3RoaXNfZXZhbF9icmFuY2hlcy5jYWxsKHt2YWx1ZSA6
IHRlc3RWYWx1ZX0sICdBJywgZmFsc2UpKCkoKSgpID09IHRlc3RWYWx1ZSwgZmFsc2UpOwotICAg
IHRlc3RDYXNlKGZfdGhpc19ldmFsX2JyYW5jaGVzLmNhbGwoe3ZhbHVlIDogdGVzdFZhbHVlfSwg
J0EnLCB0cnVlKSgpKCkoKSwgdGVzdFZhbHVlKTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkYTlmNzFmMTdmZGY4NDQy
NWI2Zjc2OWY5NDBhOTRkY2U3ZjNkNjc0Li4wNDJhMzhjMmQzMDE3NTJkNTU2ZmZhYjI0NzY0NGNj
YjI0MWNhYWY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDItMjQgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxOTcwMzMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTQ2NDkKKworICAgICAgICAiSXQgYnJva2UgSlNDIHRlc3RzIHdoZW4gJ3RoaXMn
IHdhcyBsb2FkZWQgZnJvbSBnbG9iYWwgc2NvcGUiCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgc2Fh
bXlqb29uIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAg
ICAgICAiW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBFbWl0IGxvYWRpbmcmcHV0dGluZyB0
aGlzL3N1cGVyCisgICAgICAgIG9ubHkgaWYgdGhleSBhcmUgdXNlZCBpbiBhcnJvdyBmdW5jdGlv
biIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzk4
MQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xOTcwMzMKKwogMjAx
Ni0wMi0yNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NQ
OiBFbmFibGUgcGx1Z2luLXR5cGVzIGRpcmVjdGl2ZSBieSBkZWZhdWx0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1jb25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbC1pbi1jbGFzcy1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDQ0MWQwNmViNTliMmY4OWFlODI5OWY4NmMyZThlZDQ4MWM0NTlhNGQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3RydWN0b3ItZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotSlNSZWdyZXNzL2Fycm93ZnVu
Y3Rpb24tY2FsbC1pbi1jbGFzcy1jb25zdHJ1Y3RvcgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotUEFTUyBubyBleGNlcHRpb24gdGhyb3duCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtY29uc3RydWN0b3IuaHRtbCBiL0xh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWluLWNsYXNzLWNvbnN0cnVj
dG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNTU5MDk1MjczMjMyMjY2
YmNkZDBhMmNmMDhmY2IwMjM0ODhlMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwt
aW4tY2xhc3MtY29uc3RydWN0b3IuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAK
LTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdy
ZXNzLXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY2FsbC1pbi1jbGFzcy1jb25zdHJ1Y3Rvci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbC1pbi1jbGFzcy1tZXRob2QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtbWV0aG9kLWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYwMmY2ZDlhMjRkM2IxMjc4NTk3ZTVkZmE1NzJmYjU0
YmY4ZGRjYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2Qt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotSlNSZWdyZXNzL2Fy
cm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1tZXRob2QKLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCi0KLVBBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWluLWNsYXNzLW1ldGhvZC5odG1sIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3MtbWV0aG9kLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNDg2MWIzY2M3N2RlNGU4Yzk4OTVjNDhj
MTA3ODk0NjA1Y2VlNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3Mt
bWV0aG9kLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi08IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4t
Y2xhc3MtbWV0aG9kLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWlu
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAx
NjMwMmY1NTllMDRmYjI3OWRhMTRkNmE0MGYxYzkxMDVkN2FjZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93
ZnVuY3Rpb24tY2FsbC1pbi1mdW5jdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwxMCArMCwwIEBACi1KU1JlZ3Jlc3MvYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0aW9uCi0K
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24K
LVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24tY2FsbC1pbi1mdW5j
dGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4t
ZnVuY3Rpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRjMTg1OTEwNmU0
OTU5YWMxYzA0ODVkYmIwODdjZjdkMzNjYzRiZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Fycm93ZnVuY3Rpb24t
Y2FsbC1pbi1mdW5jdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3Mt
cHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1jYWxsLWluLWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24t
Y2FsbC1pbi1jbGFzcy1jb25zdHJ1Y3Rvci5qcyBiL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC1pbi1jbGFzcy1jb25zdHJ1Y3Rvci5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRkMGU4ZTc3Y2JjNmJkM2FlNTYxNmNiZGMxNmVh
YWZkMjYwMzJkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwt
aW4tY2xhc3MtY29uc3RydWN0b3IuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi12
YXIgdGVzdFZhbHVlICA9ICd0ZXN0LXZhbHVlJzsKLQotY2xhc3MgQSB7Ci0gICAgY29uc3RydWN0
b3IoKSB7Ci0gICAgICAgIHRoaXMudmFsdWUgPSB0ZXN0VmFsdWU7Ci0gICAgfQotfQotCi1jbGFz
cyBCIGV4dGVuZHMgQSB7Ci0gICAgY29uc3RydWN0b3IoKSB7Ci0gICAgICAgIHN1cGVyKCk7Ci0g
ICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiB0ZXN0VmFsdWU7Ci0gICAgICAgIGFycm93KCk7Ci0g
ICAgfQotfQotCi1ub0lubGluZShCKTsKLQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyAr
K2kpIHsKLSAgICBsZXQgYiA9IG5ldyBCKCk7Ci0gICAgaWYgKGIudmFsdWUgIT0gdGVzdFZhbHVl
KQotICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Ci19CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LWNhbGwtaW4tY2xhc3MtbWV0aG9kLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLWluLWNsYXNzLW1ldGhvZC5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzFjODY5ZGI0MTc2ZWZlMjk5MWVmM2YwN2U1ZmM2YWRhYmU0N2Q4
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLWNhbGwtaW4tY2xhc3Mt
bWV0aG9kLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotdmFyIHRlc3RWYWx1ZSAg
PSAndGVzdC12YWx1ZSc7Ci0KLWNsYXNzIEEgewotICAgIGNvbnN0cnVjdG9yKCkgewotICAgICAg
ICB0aGlzLnZhbHVlID0gdGVzdFZhbHVlOwotICAgIH0KLQotICAgIGdldFZhbHVlICgpIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMudmFsdWU7Ci0gICAgfQotfQotCi1jbGFzcyBCIGV4dGVuZHMgQSB7
Ci0gICAgZ2V0UGFyZW50VmFsdWUoKSB7Ci0gICAgICAgIHZhciBhcnJvdyAgPSAoKSA9PiB0ZXN0
VmFsdWU7Ci0gICAgICAgIHJldHVybiBhcnJvdygpOwotICAgIH0KLX0KLQotZm9yIChsZXQgaSA9
IDA7IGkgPCAxMDAwMDA7ICsraSkgewotICAgIGxldCBiID0gbmV3IEIoKTsKLSAgICBpZiAoYi5n
ZXRQYXJlbnRWYWx1ZSgpICE9IHRlc3RWYWx1ZSkKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0aW9uLmpzIGIvTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1jYWxsLWluLWZ1bmN0
aW9uLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwM2IwYmJhMWQ3YjRiOGIyY2Nh
Mzc4MzYxMmQ4MmE0NDBiOTIyODBiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tY2FsbC1pbi1mdW5jdGlvbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAK
LWZ1bmN0aW9uIGJhcihhLCBiKSB7Ci0gICAgcmV0dXJuICgoX2EsIF9iKSA9PiBfYSArIF9iKShh
LCBiKTsKLX0KLQotbm9JbmxpbmUoYmFyKTsKLQotZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAw
OyArK2kpIHsKLSAgICBsZXQgcmVzdWx0ID0gYmFyKDEsIDIpOwotICAgIGlmIChyZXN1bHQgIT0g
MykKLSAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwotfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1jYWxsLmpzIGIvTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5j
dGlvbi1jYWxsLmpzCmluZGV4IDk3NmJmMTc2Yzk2NzM2MzE0MjM0YTYwMWIxZDJiNDZiMjdjYzhj
NmUuLjg5MjRjODQyNzZlNzEwODc3ODZjNTk0MGE4MjJiY2M2Zjk3YzA2ZDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tY2FsbC5q
cworKysgYi9MYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LWNhbGwuanMKQEAgLTgsOCArOCw4IEBAIGZ1bmN0aW9uIGJhcihhLCBiKSB7CiAKIG5vSW5saW5l
KGJhcik7CiAKLWZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7Ci0gICAgbGV0IHJl
c3VsdCA9IGJhcigxLCAyKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7Cisg
ICAgdmFyIHJlc3VsdCA9IGJhcigxLCAyKTsKICAgICBpZiAocmVzdWx0ICE9IDMpCiAgICAgICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>