<?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>154762</bug_id>
          
          <creation_ts>2016-02-26 16:55:57 -0800</creation_ts>
          <short_desc>REGRESSION(r197174): This change caused LayoutTests to crash on iOS simulator (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2016-03-03 20:02:14 -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>154720</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168746</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-26 16:55:57 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/197174 broke the build:
This change caused LayoutTests to crash on iOS simulator (Requested by ryanhaddad 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>1168748</commentid>
    <comment_count>1</comment_count>
      <attachid>272382</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-26 16:56:28 -0800</bug_when>
    <thetext>Created attachment 272382
ROLLOUT of r197174

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>1168749</commentid>
    <comment_count>2</comment_count>
      <attachid>272382</attachid>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-02-26 16:59:41 -0800</bug_when>
    <thetext>Comment on attachment 272382
ROLLOUT of r197174

Clearing flags on attachment: 272382

Committed r197221: &lt;http://trac.webkit.org/changeset/197221&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168750</commentid>
    <comment_count>3</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-02-26 16:59:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170470</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-03 20:02:14 -0800</bug_when>
    <thetext>Committed r197545: &lt;http://trac.webkit.org/changeset/197545&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272382</attachid>
            <date>2016-02-26 16:56:28 -0800</date>
            <delta_ts>2016-02-26 16:59:41 -0800</delta_ts>
            <desc>ROLLOUT of r197174</desc>
            <filename>bug-154762-20160226165611.patch</filename>
            <type>text/plain</type>
            <size>51593</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggM2VjMGI4MmQ0NTU3YTY1
NmRmZWY1YjVmY2RjYjcwY2I3NDM3YzhjYi4uZmQ3OTdjYjQxMmJjMTIwOGUxNjI4MTUwNzA5MmZk
YjRiOWQyYTYyNiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAyLTI2ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTk3MTc0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0NzYyCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgY2F1c2VkIExheW91
dFRlc3RzIHRvIGNyYXNoIG9uIGlPUyBzaW11bGF0b3IKKyAgICAgICAgKFJlcXVlc3RlZCBieSBy
eWFuaGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKwor
ICAgICAgICAiYm1hbGxvYzogQWRkZWQgYSBmYXN0IFhMYXJnZSBhbGxvY2F0b3IiCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ3MjAKKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTk3MTc0CisKIDIwMTYtMDItMjUgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBibWFsbG9jOiBBZGRl
ZCBhIGZhc3QgWExhcmdlIGFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dAppbmRleCBmNmE0OTI5
ZWFiYzRkYzRmMzJkNDc0YWVjNzdhM2RmYjYwMWMxNjdkLi41NjA3MzdlYzNmOGJkMmM5YzMyYjY0
YzM0YmI3ODgxZjI0ZjM2YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvYm1hbGxvYy9DTWFrZUxpc3RzLnR4dApAQCAtMTMsNyArMTMsNiBA
QCBzZXQoYm1hbGxvY19TT1VSQ0VTCiAgICAgYm1hbGxvYy9TZWdyZWdhdGVkRnJlZUxpc3QuY3Bw
CiAgICAgYm1hbGxvYy9TdGF0aWNNdXRleC5jcHAKICAgICBibWFsbG9jL1ZNSGVhcC5jcHAKLSAg
ICBibWFsbG9jL1hMYXJnZU1hcC5jcHAKICAgICBibWFsbG9jL21ibWFsbG9jLmNwcAogKQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggODE2NzBmMWM2NjJhNDI3NDdjY2FkYmU5OGNlNGUzYmI3ZTZiMmJjMi4uZmFiNWFmOGMzMjM0
ZTNmMzg3OTU1MjA5ODVhMWRmNzg3N2YzYzNkZSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEsOSArMjEsNiBAQAogCQkxNDQw
QUZDRDFBOTUyN0FGMDA4MzdGQUEgLyogWm9uZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQwQUZDQzFBOTUyN0FGMDA4MzdGQUEgLyogWm9uZS5j
cHAgKi87IH07CiAJCTE0NDhDMzAwMThGMzc1NDYwMDUwMjgzOSAvKiBtYm1hbGxvYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDQ4QzJGRjE4RjM3
NTQzMDA1MDI4MzkgLyogbWJtYWxsb2MuY3BwICovOyB9OwogCQkxNDQ4QzMwMTE4RjM3NTRDMDA1
MDI4MzkgLyogYm1hbGxvYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ0OEMyRkUxOEYzNzU0MzAwNTAyODM5IC8qIGJtYWxsb2MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxNDRDMDdGNDFDN0I3MDI2
MDA1MUJCNkEgLyogWExhcmdlTWFwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0NEMwN0YyMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuY3Bw
ICovOyB9OwotCQkxNDRDMDdGNTFDN0I3MDI2MDA1MUJCNkEgLyogWExhcmdlTWFwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDRDMDdGMzFDN0I3MDI2
MDA1MUJCNkEgLyogWExhcmdlTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJMTQ2MDQxRTcxQzdGRjJFRjAwRTlGOTRFIC8qIFNvcnRlZFZlY3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ2MDQx
RTYxQzdGRjJFRjAwRTlGOTRFIC8qIFNvcnRlZFZlY3Rvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0ODk1RDkxMUEzQTMxOUMwMDA2MjM1RCAv
KiBFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxNDg5NUQ4RjFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuY3BwICovOyB9
OwogCQkxNDg5NUQ5MjFBM0EzMTlDMDAwNjIzNUQgLyogRW52aXJvbm1lbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODk1RDkwMUEzQTMxOUMwMDA2
MjM1RCAvKiBFbnZpcm9ubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTE0QzYyMTZGMUE5QTlBNjIwMEU3MjI5MyAvKiBMYXJnZU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRDNjIxNkUx
QTlBOUE2MjAwRTcyMjkzIC8qIExhcmdlT2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1LDcgKzUyLDYgQEAKIAkJMTRERDc4Q0UxOEY0
OEQ3NTAwOTUwNzAyIC8qIFN5c2NhbGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDE0MTdGNjRGMThCNzI4MEMwMDc2RkEzRiAvKiBTeXNjYWxsLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRERDc4Q0Yx
OEY0OEQ3NTAwOTUwNzAyIC8qIFZlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ3OUUyMTIxN0ExQTI1NTAwNkQ0RTlEIC8qIFZlY3Rvci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTE0REQ3OEQw
MThGNDhENzUwMDk1MDcwMiAvKiBWTUFsbG9jYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDc5RTIxNDE3QTFBNjNFMDA2RDRFOUQgLyogVk1BbGxv
Y2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTE0RUI3OUVBMUM3QzFCQzQwMDVFODM0RiAvKiBYTGFyZ2VSYW5nZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRFQjc5RTgxQzdDMUJDNDAwNUU4MzRG
IC8qIFhMYXJnZVJhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTRGMjcxQzMxOEVBMzk3ODAwOEMxNTJGIC8qIEFsbG9jYXRvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDVGNjg1NTE3OURD
OENBMDBENjU1OTggLyogQWxsb2NhdG9yLmNwcCAqLzsgfTsKIAkJMTRGMjcxQzQxOEVBMzk3QjAw
OEMxNTJGIC8qIENhY2hlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDE0NDQ2OUU0MTdBNDZCRkUwMEY5RUExRCAvKiBDYWNoZS5jcHAgKi87IH07CiAJ
CTE0RjI3MUM1MThFQTM5N0UwMDhDMTUyRiAvKiBEZWFsbG9jYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDVGNjg1OTE3OURDOTAyMDBENjU1
OTggLyogRGVhbGxvY2F0b3IuY3BwICovOyB9OwpAQCAtMTAxLDggKzk3LDYgQEAKIAkJMTQ0NDZB
MDcxN0E2MUZBNDAwRjlFQTFEIC8qIFBlclByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gUGVyUHJvY2Vzcy5oOyBwYXRoID0gYm1hbGxvYy9QZXJQcm9jZXNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NDhDMkZFMThGMzc1NDMwMDUwMjgzOSAvKiBi
bWFsbG9jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJtYWxsb2MuaDsgcGF0aCA9IGJtYWxsb2MvYm1hbGxv
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDQ4QzJGRjE4RjM3NTQzMDA1MDI4
MzkgLyogbWJtYWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gbWJtYWxsb2MuY3BwOyBwYXRo
ID0gYm1hbGxvYy9tYm1hbGxvYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTE0
NEMwN0YyMUM3QjcwMjYwMDUxQkI2QSAvKiBYTGFyZ2VNYXAuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gWExhcmdlTWFwLmNwcDsgcGF0aCA9IGJtYWxsb2MvWExhcmdl
TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQ0QzA3RjMxQzdCNzAyNjAw
NTFCQjZBIC8qIFhMYXJnZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBY
TGFyZ2VNYXAuaDsgcGF0aCA9IGJtYWxsb2MvWExhcmdlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTE0NERDRUQ2MTdBNjQ5RDkwMDkzQjJGMiAvKiBNdXRleC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBNdXRleC5oOyBwYXRoID0gYm1hbGxvYy9NdXRleC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDRGN0JGQjE4QkZDNTE3MDAzNTM3RjMg
LyogVk1IZWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFZNSGVh
cC5jcHA7IHBhdGggPSBibWFsbG9jL1ZNSGVhcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0NEY3QkZDMThCRkM1MTcwMDM1MzdGMyAvKiBWTUhlYXAuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gVk1IZWFwLmg7IHBhdGggPSBibWFsbG9jL1ZNSGVhcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEzLDcgKzEwNyw2IEBACiAJCTE0NUY2ODVB
MTc5REM5MDIwMEQ2NTU5OCAvKiBEZWFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IGxpbmVFbmRpbmcgPSAwOyBuYW1lID0gRGVhbGxvY2F0b3IuaDsgcGF0aCA9IGJtYWxsb2Mv
RGVhbGxvY2F0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgeGNMYW5ndWFnZVNwZWNpZmlj
YXRpb25JZGVudGlmaWVyID0geGNvZGUubGFuZy5vYmpjcHA7IH07CiAJCTE0NUY2ODc0MTc5REY4
NDEwMEQ2NTU5OCAvKiBTaXplcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBT
aXplcy5oOyBwYXRoID0gYm1hbGxvYy9TaXplcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxNDVGNjg3ODE3OUUzQTQ0MDBENjU1OTggLyogUmFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0gMDsgbmFtZSA9IFJhbmdlLmg7IHBhdGggPSBibWFsbG9j
L1JhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9u
SWRlbnRpZmllciA9IHhjb2RlLmxhbmcub2JqY3BwOyB9OwotCQkxNDYwNDFFNjFDN0ZGMkVGMDBF
OUY5NEUgLyogU29ydGVkVmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFNvcnRlZFZlY3Rvci5oOyBwYXRoID0gYm1hbGxvYy9Tb3J0ZWRWZWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ2QkVFMUUxOEM4NDFDNTAwMDJENUEyIC8qIFNlZ3JlZ2F0
ZWRGcmVlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTZWdyZWdhdGVk
RnJlZUxpc3QuaDsgcGF0aCA9IGJtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0NkJFRTIxMThDODQ1QUUwMDAyRDVBMiAvKiBTZWdyZWdh
dGVkRnJlZUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2Vn
cmVnYXRlZEZyZWVMaXN0LmNwcDsgcGF0aCA9IGJtYWxsb2MvU2VncmVnYXRlZEZyZWVMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ3OUUyMTIxN0ExQTI1NTAwNkQ0RTlE
IC8qIFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGxpbmVFbmRpbmcgPSAwOyBu
YW1lID0gVmVjdG9yLmg7IHBhdGggPSBibWFsbG9jL1ZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLm9i
amNwcDsgfTsKQEAgLTEzNSw3ICsxMjgsNiBAQAogCQkxNEQ5REI0NTE3RjI0NDcxMDBFQUFCNzkg
LyogRml4ZWRWZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBsaW5lRW5kaW5nID0g
MDsgbmFtZSA9IEZpeGVkVmVjdG9yLmg7IHBhdGggPSBibWFsbG9jL0ZpeGVkVmVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9
IHhjb2RlLmxhbmcub2JqY3BwOyB9OwogCQkxNERBMzIwQzE4ODc1QjA5MDA3MjY5RTAgLyogSGVh
cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIZWFwLmg7IHBhdGggPSBibWFs
bG9jL0hlYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTREQTMyMEUxODg3NUQ5
RjAwNzI2OUUwIC8qIEhlYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSGVhcC5jcHA7IHBhdGggPSBibWFsbG9jL0hlYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkxNEVCNzlFODFDN0MxQkM0MDA1RTgzNEYgLyogWExhcmdlUmFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gWExhcmdlUmFuZ2UuaDsgcGF0aCA9IGJtYWxs
b2MvWExhcmdlUmFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGMjcxQkUx
OEVBMzk2MzAwOEMxNTJGIC8qIGxpYmJtYWxsb2MuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gbGliYm1hbGxvYy5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCkBAIC0xNjcsMTYgKzE1OSw2IEBA
CiAJCQluYW1lID0gYXBpOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJMTQ0
QzA3RjcxQzdCNzA3RDAwNTFCQjZBIC8qIGhlYXA6IHhsYXJnZSAqLyA9IHsKLQkJCWlzYSA9IFBC
WEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMTQ0QzA3RjIxQzdCNzAyNjAwNTFCQjZBIC8q
IFhMYXJnZU1hcC5jcHAgKi8sCi0JCQkJMTQ0QzA3RjMxQzdCNzAyNjAwNTFCQjZBIC8qIFhMYXJn
ZU1hcC5oICovLAotCQkJCTE0RUI3OUU4MUM3QzFCQzQwMDVFODM0RiAvKiBYTGFyZ2VSYW5nZS5o
ICovLAotCQkJKTsKLQkJCW5hbWUgPSAiaGVhcDogeGxhcmdlIjsKLQkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0JCX07CiAJCTE0NUY2ODM2MTc5REM0NUYwMEQ2NTU5OCA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xODQsNyArMTY2LDYgQEAKIAkJCQkxNEQ5
REI0RDE3RjI4NjVDMDBFQUFCNzkgLyogY2FjaGUgKi8sCiAJCQkJMTQ3QUFBOUMxOENFNjAxMDAw
MjIwMUU0IC8qIGhlYXA6IGxhcmdlICovLAogCQkJCTE0N0FBQTlBMThDRTVGRDMwMDIyMDFFNCAv
KiBoZWFwOiBzbWFsbCAqLywKLQkJCQkxNDRDMDdGNzFDN0I3MDdEMDA1MUJCNkEgLyogaGVhcDog
eGxhcmdlICovLAogCQkJCTE0RDlEQjRFMTdGMjg2NkUwMEVBQUI3OSAvKiBoZWFwICovLAogCQkJ
CTE0RDlEQjRGMTdGMjg2ODkwMEVBQUI3OSAvKiBzdGRsaWIgKi8sCiAJCQkJMTRCNjUwQzQxOEYz
OUY0ODAwNzUxOTY4IC8qIENvbmZpZ3VyYXRpb25zICovLApAQCAtMjg3LDcgKzI2OCw2IEBACiAJ
CQkJMTQ0NDZBMDcxN0E2MUZBNDAwRjlFQTFEIC8qIFBlclByb2Nlc3MuaCAqLywKIAkJCQkxNDQ0
NjlGRDE3QTYxRjFGMDBGOUVBMUQgLyogUGVyVGhyZWFkLmggKi8sCiAJCQkJMTQ1RjY4NzgxNzlF
M0E0NDAwRDY1NTk4IC8qIFJhbmdlLmggKi8sCi0JCQkJMTQ2MDQxRTYxQzdGRjJFRjAwRTlGOTRF
IC8qIFNvcnRlZFZlY3Rvci5oICovLAogCQkJCTE0M0NCODFBMTkwMjJCQzkwMEIxNkE0NSAvKiBT
dGF0aWNNdXRleC5jcHAgKi8sCiAJCQkJMTQzQ0I4MUIxOTAyMkJDOTAwQjE2QTQ1IC8qIFN0YXRp
Y011dGV4LmggKi8sCiAJCQkJMTQxN0Y2NEYxOEI3MjgwQzAwNzZGQTNGIC8qIFN5c2NhbGwuaCAq
LywKQEAgLTMzMSw3ICszMTEsNiBAQAogCQkJCTE0REQ3ODkwMThGNDhDRUIwMDk1MDcwMiAvKiBT
aXplcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QzcxOEY0OEQ3NTAwOTUwNzAyIC8qIEJB
c3NlcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OEQwMThGNDhENzUwMDk1MDcwMiAvKiBW
TUFsbG9jYXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNEVCNzlFQTFDN0MxQkM0MDA1RTgzNEYg
LyogWExhcmdlUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDBBRkM5MUE5NTE0MjQwMDgz
N0ZBQSAvKiBTdXBlckNodW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDNFRjlCMDFBOUZBQkY2
MDA0RjVDNzcgLyogRnJlZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0REQ3OENFMThGNDhE
NzUwMDk1MDcwMiAvKiBTeXNjYWxsLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NSw5ICszMjQsNyBA
QAogCQkJCTE0REQ3OEM1MThGNDhENzUwMDk1MDcwMiAvKiBBbGdvcml0aG0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0REQ3OEJEMThGNDhENkIwMDk1MDcwMiAvKiBTbWFsbFBhZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTE0REQ3ODhFMThGNDhDQ0QwMDk1MDcwMiAvKiBCb3VuZGFyeVRhZy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMTQ2MDQxRTcxQzdGRjJFRjAwRTlGOTRFIC8qIFNvcnRlZFZlY3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QzgxOEY0OEQ3NTAwOTUwNzAyIC8qIEZpeGVk
VmVjdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDRDMDdGNTFDN0I3MDI2MDA1MUJCNkEgLyog
WExhcmdlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEQyQ0Q5QjFBQTEyQ0ZCMDA3NzA0NDAg
LyogVk1TdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4QkMxOEY0OEQ2QjAwOTUwNzAy
IC8qIFNtYWxsTGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRERDc4OTgxOEY0OEQ0QTAwOTUw
NzAyIC8qIEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00NDEsNyArNDE4LDYgQEAKIAkJ
CQkxNDNFRjlBRjFBOUZBQkY2MDA0RjVDNzcgLyogRnJlZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRGMjcxQzcxOEVBMzk5MDAwOEMxNTJGIC8qIEhlYXAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRGMjcxQzkxOEVBMzk5MDAwOEMxNTJGIC8qIFZNSGVhcC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQkxNDRDMDdGNDFDN0I3MDI2MDA1MUJCNkEgLyogWExhcmdlTWFwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTE0RjI3MUM4MThFQTM5OTAwMDhDMTUyRiAvKiBPYmplY3RUeXBlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0RjI3MUM1MThFQTM5N0UwMDhDMTUyRiAvKiBEZWFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEYyNzFDNDE4RUEzOTdCMDA4QzE1MkYgLyogQ2Fj
aGUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0FsZ29yaXRobS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGdvcml0aG0uaAppbmRleCAz
MGVkMTQxMjUzNWJlOWRlNmNhOGQ0ZWJjM2U4ZTkwY2ZiZDdhZWFkLi4yNjk4NjZjNTU4NGJiNDNi
NDkxZTRiN2VlM2M2MWM4ZjlhN2UzZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0FsZ29yaXRobS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxnb3JpdGhtLmgK
QEAgLTc1LDE2ICs3NSwxMCBAQCB0ZW1wbGF0ZTxzaXplX3QgZGl2aXNvciwgdHlwZW5hbWUgVD4g
aW5saW5lIGNvbnN0ZXhwciBUIHJvdW5kVXBUb011bHRpcGxlT2YoVCB4KQogICAgIHJldHVybiBy
b3VuZFVwVG9NdWx0aXBsZU9mKGRpdmlzb3IsIHgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBpbmxpbmUgVCByb3VuZERvd25Ub011bHRpcGxlT2Yoc2l6ZV90IGRpdmlzb3IsIFQgeCkKLXsK
LSAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhkaXZpc29yKSk7Ci0gICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8VD4obWFzayhyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oeCksIH4oZGl2aXNv
ciAtIDF1bCkpKTsKLX0KLQogdGVtcGxhdGU8c2l6ZV90IGRpdmlzb3IsIHR5cGVuYW1lIFQ+IGlu
bGluZSBjb25zdGV4cHIgVCByb3VuZERvd25Ub011bHRpcGxlT2YoVCB4KQogewogICAgIHN0YXRp
Y19hc3NlcnQoaXNQb3dlck9mVHdvKGRpdmlzb3IpLCAiJ2Rpdmlzb3InIG11c3QgYmUgYSBwb3dl
ciBvZiB0d28uIik7Ci0gICAgcmV0dXJuIHJvdW5kRG93blRvTXVsdGlwbGVPZihkaXZpc29yLCB4
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUPihtYXNrKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pih4KSwgfihkaXZpc29yIC0gMXVsKSkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIGRpdmlkZVJvdW5kaW5nVXAoVCBudW1lcmF0b3IsIFQgZGVub21pbmF0b3IsIFQm
IHF1b3RpZW50LCBUJiByZW1haW5kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0FsbG9jYXRvci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbG9jYXRvci5jcHAK
aW5kZXggMjM1MTRlYmIwNmRiZjAxOWRiOTE5NGVlNDA0OWRiOTlkMDVmYzA4ZC4uY2E4Y2IyNjc1
OGI0MjJhNDUzNDBhMDQ5YTA2MjQyYWE4YjhjNGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxs
b2NhdG9yLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkKiBBbGxvY2F0b3I6OnRyeUFsbG9jYXRl
KHNpemVfdCBzaXplKQogCiAgICAgaWYgKHNpemUgPD0geExhcmdlTWF4KSB7CiAgICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgp
KTsKLSAgICAgICAgcmV0dXJuIFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCktPnRyeUFs
bG9jYXRlWExhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSk7CisgICAgICAgIHJldHVybiBQZXJQ
cm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT50cnlBbGxvY2F0ZVhMYXJnZShsb2NrLCBzdXBl
ckNodW5rU2l6ZSwgcm91bmRVcFRvTXVsdGlwbGVPZjx4TGFyZ2VBbGlnbm1lbnQ+KHNpemUpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCogQWxs
b2NhdG9yOjphbGxvY2F0ZShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKICAgICBpZiAo
c2l6ZSA8PSBsYXJnZU1heCAmJiBhbGlnbm1lbnQgPD0gbGFyZ2VNYXgpIHsKICAgICAgICAgc2l6
ZSA9IHN0ZDo6bWF4KGxhcmdlTWluLCByb3VuZFVwVG9NdWx0aXBsZU9mPGxhcmdlQWxpZ25tZW50
PihzaXplKSk7CiAgICAgICAgIGFsaWdubWVudCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8bGFyZ2VB
bGlnbm1lbnQ+KGFsaWdubWVudCk7Ci0gICAgICAgIHNpemVfdCB1bmFsaWduZWRTaXplID0gbGFy
Z2VNaW4gKyBhbGlnbm1lbnQgLSBsYXJnZUFsaWdubWVudCArIHNpemU7CisgICAgICAgIHNpemVf
dCB1bmFsaWduZWRTaXplID0gbGFyZ2VNaW4gKyBhbGlnbm1lbnQgKyBzaXplOwogICAgICAgICBp
ZiAodW5hbGlnbmVkU2l6ZSA8PSBsYXJnZU1heCAmJiBhbGlnbm1lbnQgPD0gbGFyZ2VDaHVua1Np
emUgLyAyKSB7CiAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2so
UGVyUHJvY2VzczxIZWFwPjo6bXV0ZXgoKSk7CiAgICAgICAgICAgICByZXR1cm4gUGVyUHJvY2Vz
czxIZWFwPjo6Z2V0RmFzdENhc2UoKS0+YWxsb2NhdGVMYXJnZShsb2NrLCBhbGlnbm1lbnQsIHNp
emUsIHVuYWxpZ25lZFNpemUpOwpAQCAtOTgsNiArOTgsOCBAQCB2b2lkKiBBbGxvY2F0b3I6OmFs
bG9jYXRlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogICAgIH0KIAogICAgIGlmIChz
aXplIDw9IHhMYXJnZU1heCAmJiBhbGlnbm1lbnQgPD0geExhcmdlTWF4KSB7CisgICAgICAgIHNp
emUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHhMYXJnZUFsaWdubWVudD4oc2l6ZSk7CisgICAgICAg
IGFsaWdubWVudCA9IHN0ZDo6bWF4KHN1cGVyQ2h1bmtTaXplLCBhbGlnbm1lbnQpOwogICAgICAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+IGxvY2soUGVyUHJvY2VzczxIZWFwPjo6bXV0
ZXgoKSk7CiAgICAgICAgIHJldHVybiBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0Q2FzZSgpLT5h
bGxvY2F0ZVhMYXJnZShsb2NrLCBhbGlnbm1lbnQsIHNpemUpOwogICAgIH0KQEAgLTE0MiwxNSAr
MTQ0LDM2IEBAIHZvaWQqIEFsbG9jYXRvcjo6cmVhbGxvY2F0ZSh2b2lkKiBvYmplY3QsIHNpemVf
dCBuZXdTaXplKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgc3RkOjp1bmlxdWVfbG9j
azxTdGF0aWNNdXRleD4gbG9jayhQZXJQcm9jZXNzPEhlYXA+OjptdXRleCgpKTsKLSAgICAgICAg
b2xkU2l6ZSA9IFBlclByb2Nlc3M8SGVhcD46OmdldEZhc3RDYXNlKCktPnhMYXJnZVNpemUobG9j
aywgb2JqZWN0KTsKKyAgICAgICAgUmFuZ2UmIHJhbmdlID0gUGVyUHJvY2VzczxIZWFwPjo6Z2V0
RmFzdENhc2UoKS0+ZmluZFhMYXJnZShsb2NrLCBvYmplY3QpOworICAgICAgICBvbGRTaXplID0g
cmFuZ2Uuc2l6ZSgpOworCisgICAgICAgIG5ld1NpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHhM
YXJnZUFsaWdubWVudD4obmV3U2l6ZSk7CiAKICAgICAgICAgaWYgKG5ld1NpemUgPT0gb2xkU2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAKICAgICAgICAgaWYgKG5ld1NpemUgPCBv
bGRTaXplICYmIG5ld1NpemUgPiBsYXJnZU1heCkgewotICAgICAgICAgICAgUGVyUHJvY2VzczxI
ZWFwPjo6Z2V0RmFzdENhc2UoKS0+c2hyaW5rWExhcmdlKGxvY2ssIFJhbmdlKG9iamVjdCwgb2xk
U2l6ZSksIG5ld1NpemUpOworICAgICAgICAgICAgbmV3U2l6ZSA9IHJvdW5kVXBUb011bHRpcGxl
T2Y8eExhcmdlQWxpZ25tZW50PihuZXdTaXplKTsKKyAgICAgICAgICAgIGlmIChvbGRTaXplIC0g
bmV3U2l6ZSA+PSB4TGFyZ2VBbGlnbm1lbnQpIHsKKyAgICAgICAgICAgICAgICBsb2NrLnVubG9j
aygpOworICAgICAgICAgICAgICAgIHZtRGVhbGxvY2F0ZShzdGF0aWNfY2FzdDxjaGFyKj4ob2Jq
ZWN0KSArIG5ld1NpemUsIG9sZFNpemUgLSBuZXdTaXplKTsKKyAgICAgICAgICAgICAgICBsb2Nr
LmxvY2soKTsKKworICAgICAgICAgICAgICAgIHJhbmdlID0gUmFuZ2Uob2JqZWN0LCBuZXdTaXpl
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0K
KworICAgICAgICBpZiAobmV3U2l6ZSA+IG9sZFNpemUpIHsKKyAgICAgICAgICAgIGxvY2sudW5s
b2NrKCk7CisgICAgICAgICAgICBib29sIHdhc0V4dGVuZGVkID0gdHJ5Vk1FeHRlbmQob2JqZWN0
LCBvbGRTaXplLCBuZXdTaXplKTsKKyAgICAgICAgICAgIGxvY2subG9jaygpOworCisgICAgICAg
ICAgICBpZiAod2FzRXh0ZW5kZWQpIHsKKyAgICAgICAgICAgICAgICByYW5nZSA9IFJhbmdlKG9i
amVjdCwgbmV3U2l6ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgfQpAQCAtMjA2LDYg
KzIyOSw3IEBAIE5PX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlTGFyZ2Uoc2l6ZV90
IHNpemUpCiAKIE5PX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlWExhcmdlKHNpemVf
dCBzaXplKQogeworICAgIHNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHhMYXJnZUFsaWdubWVu
dD4oc2l6ZSk7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiBsb2NrKFBlclByb2Nl
c3M8SGVhcD46Om11dGV4KCkpOwogICAgIHJldHVybiBQZXJQcm9jZXNzPEhlYXA+OjpnZXRGYXN0
Q2FzZSgpLT5hbGxvY2F0ZVhMYXJnZShsb2NrLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAu
Y3BwCmluZGV4IDMwMDNmZmE1NTYwMGE1Y2ZjYjg3NGJkOGZmZGIxZTBkMjAzMGU0M2YuLjczNDlk
MjViNDAzZjY4NDJiYzM1YWJkZTc1OTJkMDU4YmRjOGU2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
LmNwcApAQCAtODYsNyArODYsNiBAQCB2b2lkIEhlYXA6OnNjYXZlbmdlKHN0ZDo6dW5pcXVlX2xv
Y2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbgogCiAgICAgc2Nh
dmVuZ2VTbWFsbFBhZ2VzKGxvY2ssIHNsZWVwRHVyYXRpb24pOwogICAgIHNjYXZlbmdlTGFyZ2VP
YmplY3RzKGxvY2ssIHNsZWVwRHVyYXRpb24pOwotICAgIHNjYXZlbmdlWExhcmdlT2JqZWN0cyhs
b2NrLCBzbGVlcER1cmF0aW9uKTsKIAogICAgIHNsZWVwKGxvY2ssIHNsZWVwRHVyYXRpb24pOwog
fQpAQCAtMTA3LDIyICsxMDYsNiBAQCB2b2lkIEhlYXA6OnNjYXZlbmdlTGFyZ2VPYmplY3RzKHN0
ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+JiBsb2NrLCBzdGQ6OmNocm9ubwogICAgIH0KIH0K
IAotdm9pZCBIZWFwOjpzY2F2ZW5nZVhMYXJnZU9iamVjdHMoc3RkOjp1bmlxdWVfbG9jazxTdGF0
aWNNdXRleD4mIGxvY2ssIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgc2xlZXBEdXJhdGlvbikK
LXsKLSAgICB3aGlsZSAoWExhcmdlUmFuZ2UgcmFuZ2UgPSBtX3hMYXJnZU1hcC50YWtlUGh5c2lj
YWwoKSkgewotICAgICAgICBsb2NrLnVubG9jaygpOwotICAgICAgICB2bURlYWxsb2NhdGVQaHlz
aWNhbFBhZ2VzU2xvcHB5KHJhbmdlLmJlZ2luKCksIHJhbmdlLnNpemUoKSk7Ci0gICAgICAgIGxv
Y2subG9jaygpOwotICAgICAgICAKLSAgICAgICAgcmFuZ2Uuc2V0Vk1TdGF0ZShWTVN0YXRlOjpW
aXJ0dWFsKTsKLSAgICAgICAgbV94TGFyZ2VNYXAuYWRkVmlydHVhbChyYW5nZSk7Ci0KLSAgICAg
ICAgd2FpdFVudGlsRmFsc2UobG9jaywgc2xlZXBEdXJhdGlvbiwgbV9pc0FsbG9jYXRpbmdQYWdl
cyk7Ci0gICAgfQotCi0gICAgbV94TGFyZ2VNYXAuc2hyaW5rVG9GaXQoKTsKLX0KLQogdm9pZCBI
ZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlcyhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+
JiBsb2NrLCBzaXplX3Qgc2l6ZUNsYXNzLCBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEJ1bXBS
YW5nZUNhY2hlJiByYW5nZUNhY2hlKQogewogICAgIEJBU1NFUlQoIXJhbmdlQ2FjaGUuc2l6ZSgp
KTsKQEAgLTIxOSw2ICsyMDIsNTIgQEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIFNtYWxsTGluZSogbGkKICAgICBtX3Nj
YXZlbmdlci5ydW4oKTsKIH0KIAordm9pZCogSGVhcDo6YWxsb2NhdGVYTGFyZ2Uoc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUp
Cit7CisgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGVYTGFyZ2UobG9jaywgYWxpZ25tZW50
LCBzaXplKTsKKyAgICBSRUxFQVNFX0JBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkKiBIZWFwOjphbGxvY2F0ZVhMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+JiBsb2NrLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gYWxsb2NhdGVYTGFyZ2Uo
bG9jaywgc3VwZXJDaHVua1NpemUsIHNpemUpOworfQorCit2b2lkKiBIZWFwOjp0cnlBbGxvY2F0
ZVhMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90IHNpemUpCit7CisgICAgQkFTU0VSVChpc1Bvd2VyT2ZUd28oYWxpZ25tZW50KSk7Cisg
ICAgQkFTU0VSVChhbGlnbm1lbnQgPj0gc3VwZXJDaHVua1NpemUpOworICAgIEJBU1NFUlQoc2l6
ZSA9PSByb3VuZFVwVG9NdWx0aXBsZU9mPHhMYXJnZUFsaWdubWVudD4oc2l6ZSkpOworCisgICAg
dm9pZCogcmVzdWx0ID0gdHJ5Vk1BbGxvY2F0ZShhbGlnbm1lbnQsIHNpemUpOworICAgIGlmICgh
cmVzdWx0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBtX3hMYXJnZU9iamVjdHMucHVz
aChSYW5nZShyZXN1bHQsIHNpemUpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitSYW5nZSYg
SGVhcDo6ZmluZFhMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIHZvaWQqIG9i
amVjdCkKK3sKKyAgICBmb3IgKGF1dG8mIHJhbmdlIDogbV94TGFyZ2VPYmplY3RzKSB7CisgICAg
ICAgIGlmIChyYW5nZS5iZWdpbigpICE9IG9iamVjdCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICByZXR1cm4gcmFuZ2U7CisgICAgfQorCisgICAgUkVMRUFTRV9CQVNTRVJUKGZhbHNl
KTsKKyAgICByZXR1cm4gKnN0YXRpY19jYXN0PFJhbmdlKj4obnVsbHB0cik7IC8vIFNpbGVuY2Ug
Y29tcGlsZXIgZXJyb3IuCit9CisKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVhMYXJnZShzdGQ6OnVu
aXF1ZV9sb2NrPFN0YXRpY011dGV4PiYgbG9jaywgdm9pZCogb2JqZWN0KQoreworICAgIFJhbmdl
IHRvRGVhbGxvY2F0ZSA9IG1feExhcmdlT2JqZWN0cy5wb3AoJmZpbmRYTGFyZ2UobG9jaywgb2Jq
ZWN0KSk7CisKKyAgICBsb2NrLnVubG9jaygpOworICAgIHZtRGVhbGxvY2F0ZSh0b0RlYWxsb2Nh
dGUuYmVnaW4oKSwgdG9EZWFsbG9jYXRlLnNpemUoKSk7CisgICAgbG9jay5sb2NrKCk7Cit9CisK
IGlubGluZSBMYXJnZU9iamVjdCYgSGVhcDo6c3BsaXRBbmRBbGxvY2F0ZShMYXJnZU9iamVjdCYg
bGFyZ2VPYmplY3QsIHNpemVfdCBzaXplKQogewogICAgIEJBU1NFUlQobGFyZ2VPYmplY3QuaXNG
cmVlKCkpOwpAQCAtMzQzLDEwMiArMzcyLDQgQEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2Uo
c3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgdm9pZCogb2JqZWN0KQogICAgIGRl
YWxsb2NhdGVMYXJnZShsb2NrLCBsYXJnZU9iamVjdCk7CiB9CiAKLXZvaWQqIEhlYXA6OmFsbG9j
YXRlWExhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mIGxvY2ssIHNpemVfdCBhbGln
bm1lbnQsIHNpemVfdCBzaXplKQotewotICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlWExh
cmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSk7Ci0gICAgUkVMRUFTRV9CQVNTRVJUKHJlc3VsdCk7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCogSGVhcDo6YWxsb2NhdGVYTGFyZ2Uoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IHNpemUpCi17Ci0gICAgcmV0
dXJuIGFsbG9jYXRlWExhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSk7Ci19Ci0KLVhMYXJnZVJh
bmdlIEhlYXA6OnNwbGl0QW5kQWxsb2NhdGUoWExhcmdlUmFuZ2UmIHJhbmdlLCBzaXplX3QgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSkKLXsKLSAgICBYTGFyZ2VSYW5nZSBwcmV2OwotICAgIFhMYXJn
ZVJhbmdlIG5leHQ7Ci0KLSAgICBzaXplX3QgYWxpZ25tZW50TWFzayA9IGFsaWdubWVudCAtIDE7
Ci0gICAgaWYgKHRlc3QocmFuZ2UuYmVnaW4oKSwgYWxpZ25tZW50TWFzaykpIHsKLSAgICAgICAg
c2l6ZV90IHByZWZpeFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGFsaWdubWVudCwgcmFuZ2Uu
YmVnaW4oKSkgLSByYW5nZS5iZWdpbigpOwotICAgICAgICBzdGQ6OnBhaXI8WExhcmdlUmFuZ2Us
IFhMYXJnZVJhbmdlPiBwYWlyID0gcmFuZ2Uuc3BsaXQocHJlZml4U2l6ZSk7Ci0gICAgICAgIHBy
ZXYgPSBwYWlyLmZpcnN0OwotICAgICAgICByYW5nZSA9IHBhaXIuc2Vjb25kOwotICAgIH0KLQot
ICAgIGlmIChyYW5nZS5zaXplKCkgLSBzaXplID49IHhMYXJnZUFsaWdubWVudCkgewotICAgICAg
ICBzaXplX3QgYWxpZ25lZFNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9mPHhMYXJnZUFsaWdubWVu
dD4oc2l6ZSk7Ci0gICAgICAgIHN0ZDo6cGFpcjxYTGFyZ2VSYW5nZSwgWExhcmdlUmFuZ2U+IHBh
aXIgPSByYW5nZS5zcGxpdChhbGlnbmVkU2l6ZSk7Ci0gICAgICAgIHJhbmdlID0gcGFpci5maXJz
dDsKLSAgICAgICAgbmV4dCA9IHBhaXIuc2Vjb25kOwotICAgIH0KLQotICAgIC8vIEF0IHRoaXMg
cG9pbnQgb3VyIHJhbmdlIG1pZ2h0IGNvbnRhaW4gYW4gdW51c2VkIHRhaWwgZnJhZ21lbnQuIFRo
aXMgaXMKLSAgICAvLyBjb21tb24uIFdlIGNhbid0IGFsbG9jYXRlIHRoZSB0YWlsIGZyYWdtZW50
IGJlY2F1c2UgaXQncyBhbGlnbmVkIHRvIGxlc3MKLSAgICAvLyB0aGFuIHhMYXJnZUFsaWdubWVu
dC4gU28sIHdlIHBhaXIgdGhlIGFsbG9jYXRpb24gd2l0aCBpdHMgdGFpbCBmcmFnbWVudAotICAg
IC8vIGluIHRoZSBhbGxvY2F0ZWQgbGlzdC4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgb3B0aW1pemF0
aW9uIGJlY2F1c2UgaXQKLSAgICAvLyBrZWVwcyB0aGUgZnJlZSBsaXN0IHNob3J0LCBzcGVlZGlu
ZyB1cCBhbGxvY2F0aW9uIGFuZCBtZXJnaW5nLgotCi0gICAgc3RkOjpwYWlyPFhMYXJnZVJhbmdl
LCBYTGFyZ2VSYW5nZT4gYWxsb2NhdGVkID0gcmFuZ2Uuc3BsaXQocm91bmRVcFRvTXVsdGlwbGVP
Zjx2bVBhZ2VTaXplPihzaXplKSk7Ci0gICAgaWYgKGFsbG9jYXRlZC5maXJzdC52bVN0YXRlKCku
aGFzVmlydHVhbCgpKSB7Ci0gICAgICAgIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KGFs
bG9jYXRlZC5maXJzdC5iZWdpbigpLCBhbGxvY2F0ZWQuZmlyc3Quc2l6ZSgpKTsKLSAgICAgICAg
YWxsb2NhdGVkLmZpcnN0LnNldFZNU3RhdGUoVk1TdGF0ZTo6UGh5c2ljYWwpOwotICAgIH0KLQot
ICAgIG1feExhcmdlTWFwLmFkZEFsbG9jYXRlZChwcmV2LCBhbGxvY2F0ZWQsIG5leHQpOwotICAg
IHJldHVybiBhbGxvY2F0ZWQuZmlyc3Q7Ci19Ci0KLXZvaWQqIEhlYXA6OnRyeUFsbG9jYXRlWExh
cmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCBzaXplX3QgYWxpZ25tZW50LCBzaXpl
X3Qgc2l6ZSkKLXsKLSAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpKTsKLSAgICBC
QVNTRVJUKGFsaWdubWVudCA8IHhMYXJnZU1heCk7Ci0KLSAgICBtX2lzQWxsb2NhdGluZ1BhZ2Vz
ID0gdHJ1ZTsKLQotICAgIGFsaWdubWVudCA9IHJvdW5kVXBUb011bHRpcGxlT2Y8eExhcmdlQWxp
Z25tZW50PihhbGlnbm1lbnQpOwotCi0gICAgWExhcmdlUmFuZ2UgcmFuZ2UgPSBtX3hMYXJnZU1h
cC50YWtlRnJlZShhbGlnbm1lbnQsIHNpemUpOwotICAgIGlmICghcmFuZ2UpIHsKLSAgICAgICAg
Ly8gV2UgYWxsb2NhdGUgVk0gaW4gYWxpZ25lZCBtdWx0aXBsZXMgdG8gaW5jcmVhc2UgdGhlIGNo
YW5jZXMgdGhhdAotICAgICAgICAvLyB0aGUgT1Mgd2lsbCBwcm92aWRlIGNvbnRpZ3VvdXMgcmFu
Z2VzIHRoYXQgd2UgY2FuIG1lcmdlLgotICAgICAgICBzaXplX3QgYWxpZ25lZFNpemUgPSByb3Vu
ZFVwVG9NdWx0aXBsZU9mPHhMYXJnZUFsaWdubWVudD4oc2l6ZSk7Ci0KLSAgICAgICAgdm9pZCog
YmVnaW4gPSB0cnlWTUFsbG9jYXRlKGFsaWdubWVudCwgYWxpZ25lZFNpemUpOwotICAgICAgICBp
ZiAoIWJlZ2luKQotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIHJhbmdlID0g
WExhcmdlUmFuZ2UoYmVnaW4sIGFsaWduZWRTaXplLCBWTVN0YXRlOjpWaXJ0dWFsKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gc3BsaXRBbmRBbGxvY2F0ZShyYW5nZSwgYWxpZ25tZW50LCBzaXplKS5i
ZWdpbigpOwotfQotCi1zaXplX3QgSGVhcDo6eExhcmdlU2l6ZShzdGQ6OnVuaXF1ZV9sb2NrPFN0
YXRpY011dGV4PiYsIHZvaWQqIG9iamVjdCkKLXsKLSAgICByZXR1cm4gbV94TGFyZ2VNYXAuZ2V0
QWxsb2NhdGVkKG9iamVjdCkuc2l6ZSgpOwotfQotCi12b2lkIEhlYXA6OnNocmlua1hMYXJnZShz
dGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIGNvbnN0IFJhbmdlJiBvYmplY3QsIHNpemVf
dCBuZXdTaXplKQotewotICAgIEJBU1NFUlQob2JqZWN0LnNpemUoKSA+IG5ld1NpemUpOwotCi0g
ICAgaWYgKG9iamVjdC5zaXplKCkgLSBuZXdTaXplIDwgdm1QYWdlU2l6ZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIFhMYXJnZVJhbmdlIHJhbmdlID0gbV94TGFyZ2VNYXAudGFrZUFsbG9j
YXRlZChvYmplY3QuYmVnaW4oKSk7Ci0gICAgc3BsaXRBbmRBbGxvY2F0ZShyYW5nZSwgeExhcmdl
QWxpZ25tZW50LCBuZXdTaXplKTsKLQotICAgIG1fc2NhdmVuZ2VyLnJ1bigpOwotfQotCi12b2lk
IEhlYXA6OmRlYWxsb2NhdGVYTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCB2
b2lkKiBvYmplY3QpCi17Ci0gICAgWExhcmdlUmFuZ2UgcmFuZ2UgPSBtX3hMYXJnZU1hcC50YWtl
QWxsb2NhdGVkKG9iamVjdCk7Ci0gICAgbV94TGFyZ2VNYXAuYWRkRnJlZShyYW5nZSk7Ci0gICAg
Ci0gICAgbV9zY2F2ZW5nZXIucnVuKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmgKaW5kZXggMTAwNzc4NGRjNGY1ODQ4OGNjYzY0MDQ5MWEzYmMyNjVjOGFh
MTQwNy4uMWIyYmVlMzI2N2ZmOGU1NGU5NGUyYTJjYjVmZjc3MDA0YTdmNzdlNSAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9IZWFwLmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJTbWFsbFBhZ2UuaCIKICNp
bmNsdWRlICJWTUhlYXAuaCIKICNpbmNsdWRlICJWZWN0b3IuaCIKLSNpbmNsdWRlICJYTGFyZ2VN
YXAuaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDxtdXRleD4KIApAQCAtNjIsOCArNjEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCogYWxsb2NhdGVYTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0
YXRpY011dGV4PiYsIHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGVYTGFyZ2Uoc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCk7CiAgICAgdm9p
ZCogdHJ5QWxsb2NhdGVYTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHNpemVf
dCBhbGlnbm1lbnQsIHNpemVfdCk7Ci0gICAgc2l6ZV90IHhMYXJnZVNpemUoc3RkOjp1bmlxdWVf
bG9jazxTdGF0aWNNdXRleD4mLCB2b2lkKik7Ci0gICAgdm9pZCBzaHJpbmtYTGFyZ2Uoc3RkOjp1
bmlxdWVfbG9jazxTdGF0aWNNdXRleD4mLCBjb25zdCBSYW5nZSYsIHNpemVfdCBuZXdTaXplKTsK
KyAgICBSYW5nZSYgZmluZFhMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY011dGV4PiYsIHZv
aWQqKTsKICAgICB2b2lkIGRlYWxsb2NhdGVYTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNN
dXRleD4mLCB2b2lkKik7CiAKICAgICB2b2lkIHNjYXZlbmdlKHN0ZDo6dW5pcXVlX2xvY2s8U3Rh
dGljTXV0ZXg+Jiwgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzbGVlcER1cmF0aW9uKTsKQEAg
LTgzLDEzICs4MSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgbWVyZ2VMYXJnZShCZWdpblRhZyom
LCBFbmRUYWcqJiwgUmFuZ2UmKTsKICAgICB2b2lkIG1lcmdlTGFyZ2VMZWZ0KEVuZFRhZyomLCBC
ZWdpblRhZyomLCBSYW5nZSYsIGJvb2wmIGluVk1IZWFwKTsKICAgICB2b2lkIG1lcmdlTGFyZ2VS
aWdodChFbmRUYWcqJiwgQmVnaW5UYWcqJiwgUmFuZ2UmLCBib29sJiBpblZNSGVhcCk7Ci0KLSAg
ICBYTGFyZ2VSYW5nZSBzcGxpdEFuZEFsbG9jYXRlKFhMYXJnZVJhbmdlJiwgc2l6ZV90IGFsaWdu
bWVudCwgc2l6ZV90KTsKLQorICAgIAogICAgIHZvaWQgY29uY3VycmVudFNjYXZlbmdlKCk7CiAg
ICAgdm9pZCBzY2F2ZW5nZVNtYWxsUGFnZXMoc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNNdXRleD4m
LCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKTsKICAgICB2b2lkIHNjYXZlbmdlTGFyZ2VPYmpl
Y3RzKHN0ZDo6dW5pcXVlX2xvY2s8U3RhdGljTXV0ZXg+Jiwgc3RkOjpjaHJvbm86Om1pbGxpc2Vj
b25kcyk7Ci0gICAgdm9pZCBzY2F2ZW5nZVhMYXJnZU9iamVjdHMoc3RkOjp1bmlxdWVfbG9jazxT
dGF0aWNNdXRleD4mLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKTsKIAogICAgIHN0ZDo6YXJy
YXk8c3RkOjphcnJheTxMaW5lTWV0YWRhdGEsIHNtYWxsTGluZUNvdW50Piwgc21hbGxNYXggLyBh
bGlnbm1lbnQ+IG1fc21hbGxMaW5lTWV0YWRhdGE7CiAKQEAgLTk4LDggKzkzLDcgQEAgcHJpdmF0
ZToKICAgICBWZWN0b3I8U21hbGxQYWdlKj4gbV9zbWFsbFBhZ2VzOwogCiAgICAgU2VncmVnYXRl
ZEZyZWVMaXN0IG1fbGFyZ2VPYmplY3RzOwotICAgIAotICAgIFhMYXJnZU1hcCBtX3hMYXJnZU1h
cDsKKyAgICBWZWN0b3I8UmFuZ2U+IG1feExhcmdlT2JqZWN0czsKIAogICAgIGJvb2wgbV9pc0Fs
bG9jYXRpbmdQYWdlczsKICAgICBBc3luY1Rhc2s8SGVhcCwgZGVjbHR5cGUoJkhlYXA6OmNvbmN1
cnJlbnRTY2F2ZW5nZSk+IG1fc2NhdmVuZ2VyOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9MYXJnZU9iamVjdC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9MYXJnZU9iamVj
dC5oCmluZGV4IGNjMGJkYjdkN2UyYmNlNmQ2MjI2MzE0MmYyZGZmNzhkZjMyZmNkMGIuLjA4YTRi
MTQxYTg0YTMyMzAwOWIxOTY4ODQ4MTJjNGE2NTZmNzkwYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvTGFyZ2VPYmplY3QuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0xhcmdlT2JqZWN0LmgKQEAgLTIxOSw3ICsyMTksNiBAQCBpbmxpbmUgTGFyZ2VPYmplY3QgTGFy
Z2VPYmplY3Q6Om1lcmdlKCkgY29uc3QKIAogaW5saW5lIHN0ZDo6cGFpcjxMYXJnZU9iamVjdCwg
TGFyZ2VPYmplY3Q+IExhcmdlT2JqZWN0OjpzcGxpdChzaXplX3Qgc2l6ZSkgY29uc3QKIHsKLSAg
ICBCQVNTRVJUKHNpemUgPD0gdGhpcy0+c2l6ZSgpKTsKICAgICBSYW5nZSBzcGxpdChiZWdpbigp
LCBzaXplKTsKICAgICBSYW5nZSBsZWZ0b3ZlciA9IFJhbmdlKHNwbGl0LmVuZCgpLCB0aGlzLT5z
aXplKCkgLSBzaXplKTsKICAgICBCQVNTRVJUKGxlZnRvdmVyLnNpemUoKSA+PSBsYXJnZU1pbik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCmluZGV4IDNiNWQ2OTI4YTExYmRmNDY5OGRj
NmYxYzBlZWZmYTYyNDRhNDQzODAuLjQyMDkzYmY2ODE0NTI4OGI3MjZiOThkNmM1ZjQ0MzE1YTlk
NDIxZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5oCkBAIC00Miw3ICs0Miw3IEBA
IGlubGluZSBib29sIGlzU21hbGwodm9pZCogb2JqZWN0KQogCiBpbmxpbmUgYm9vbCBpc1hMYXJn
ZSh2b2lkKiBvYmplY3QpCiB7Ci0gICAgcmV0dXJuICF0ZXN0KG9iamVjdCwgfnhMYXJnZU1hc2sp
OworICAgIHJldHVybiAhdGVzdChvYmplY3QsIH5zdXBlckNodW5rTWFzayk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIGJtYWxsb2MKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUmFu
Z2UuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUmFuZ2UuaAppbmRleCA3ZDQ0NmY3ZWU1ZTll
MmNiZjc2ZTJiNzQzMjE0MzJlYzcwOWQ1ZTc4Li4xZWU2NDExNzc2ZDg5YzkyYWUxOWRkODBiZWQ0
M2M2ZTI2YjI4NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1JhbmdlLmgK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9SYW5nZS5oCkBAIC0yNiw3ICsyNiw2IEBACiAj
aWZuZGVmIFJhbmdlX2gKICNkZWZpbmUgUmFuZ2VfaAogCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPGNzdGRkZWY+CiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKQEAgLTUwLDcgKzQ5LDYg
QEAgcHVibGljOgogICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAg
ICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9zaXplOyB9Ci0gICAg
ZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXM7IH0KICAgICBi
b29sIG9wZXJhdG9yPChjb25zdCBSYW5nZSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fYmVnaW4g
PCBvdGhlci5tX2JlZ2luOyB9CiAKIHByaXZhdGU6CkBAIC01OCwxNiArNTYsNiBAQCBwcml2YXRl
OgogICAgIHNpemVfdCBtX3NpemU7CiB9OwogCi1pbmxpbmUgYm9vbCBjYW5NZXJnZShjb25zdCBS
YW5nZSYgYSwgY29uc3QgUmFuZ2UmIGIpCi17Ci0gICAgcmV0dXJuIGEuYmVnaW4oKSA9PSBiLmVu
ZCgpIHx8IGEuZW5kKCkgPT0gYi5iZWdpbigpOwotfQotCi1pbmxpbmUgUmFuZ2UgbWVyZ2UoY29u
c3QgUmFuZ2UmIGEsIGNvbnN0IFJhbmdlJiBiKQotewotICAgIHJldHVybiBSYW5nZShzdGQ6Om1p
bihhLmJlZ2luKCksIGIuYmVnaW4oKSksIGEuc2l6ZSgpICsgYi5zaXplKCkpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBibWFsbG9jCiAKICNlbmRpZiAvLyBSYW5nZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1NpemVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NpemVz
LmgKaW5kZXggYzU5ZjM4MTgzM2YzZDVmYTgzMWQ2ZWIyNjg1OTA2NGZlNWI5N2I1Yi4uNmI3NzAx
ZGVmODBmOWMzNDEwNjI4ZmJiZjRjNTUwMTA5OTRlOGM3NSAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9TaXplcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2l6ZXMu
aApAQCAtNzMsOCArNzMsNyBAQCBuYW1lc3BhY2UgU2l6ZXMgewogICAgIHN0YXRpYyBjb25zdCBz
aXplX3QgbGFyZ2VDaHVua01ldGFkYXRhU2l6ZSA9IDQgKiBrQjsgLy8gc2l6ZW9mKExhcmdlQ2h1
bmspCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBsYXJnZU1heCA9IGxhcmdlQ2h1bmtTaXplIC0g
bGFyZ2VDaHVua01ldGFkYXRhU2l6ZTsKIAotICAgIHN0YXRpYyBjb25zdCBzaXplX3QgeExhcmdl
QWxpZ25tZW50ID0gc3VwZXJDaHVua1NpemU7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCB4TGFy
Z2VNYXNrID0gfih4TGFyZ2VBbGlnbm1lbnQgLSAxKTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHhMYXJnZUFsaWdubWVudCA9IHZtUGFnZVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCB4
TGFyZ2VNYXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpIC0geExhcmdlQWxp
Z25tZW50OyAvLyBNYWtlIHN1cmUgdGhhdCByb3VuZGluZyB1cCB0byB4TGFyZ2VBbGlnbm1lbnQg
ZG9lcyBub3Qgb3ZlcmZsb3cuCiAKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGZyZWVMaXN0U2Vh
cmNoRGVwdGggPSAxNjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU29ydGVk
VmVjdG9yLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NvcnRlZFZlY3Rvci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDRjNGI3ODk4ZmYxNTIyNmQxY2E5NDZkOTlhYjEyNmFm
ZjhjYTBhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvU29ydGVkVmVjdG9yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwx
NjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwot
Ci0jaWZuZGVmIFNvcnRlZFZlY3Rvcl9oCi0jZGVmaW5lIFNvcnRlZFZlY3Rvcl9oCi0KLSNpbmNs
dWRlICJWZWN0b3IuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLW5hbWVzcGFjZSBibWFsbG9j
IHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIFNvcnRlZFZlY3RvciB7Ci0gICAgc3Rh
dGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9kZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiU29y
dGVkVmVjdG9yIG11c3QgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1Y3Rvci4iKTsKLQotICAgIHN0cnVj
dCBCdWNrZXQgewotICAgICAgICBleHBsaWNpdCBCdWNrZXQoVCB2YWx1ZSkKLSAgICAgICAgICAg
IDogdmFsdWUodmFsdWUpCi0gICAgICAgICAgICAsIGlzRGVsZXRlZChmYWxzZSkKLSAgICAgICAg
ewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29s
IG9wZXJhdG9yPChjb25zdCBVJiBvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIHZhbHVlIDwgb3RoZXI7Ci0gICAgICAgIH0KLQotICAgICAgICBUIHZhbHVlOwotICAg
ICAgICBib29sIGlzRGVsZXRlZDsKLSAgICB9OwotCi1wdWJsaWM6Ci0gICAgY2xhc3MgaXRlcmF0
b3IgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBUPiB7
Ci0gICAgcHVibGljOgotICAgICAgICBpdGVyYXRvcihCdWNrZXQqIGJ1Y2tldCwgQnVja2V0KiBl
bmQpCi0gICAgICAgICAgICA6IG1fYnVja2V0KGJ1Y2tldCkKLSAgICAgICAgICAgICwgbV9lbmQo
ZW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBza2lwRGVsZXRlZEJ1Y2tldHMoKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgaXRlcmF0b3IoY29uc3QgaXRlcmF0b3ImIG90aGVyKQot
ICAgICAgICAgICAgOiBtX2J1Y2tldChvdGhlci5tX2J1Y2tldCkKLSAgICAgICAgICAgICwgbV9l
bmQob3RoZXIubV9lbmQpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9y
JiBvcGVyYXRvcisrKCkKLSAgICAgICAgewotICAgICAgICAgICAgQkFTU0VSVChtX2J1Y2tldCAh
PSBtX2VuZCk7Ci0gICAgICAgICAgICArK21fYnVja2V0OwotICAgICAgICAgICAgc2tpcERlbGV0
ZWRCdWNrZXRzKCk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAg
ICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgaXRlcmF0b3ImIG90aGVyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gbV9idWNrZXQgIT0gb3RoZXIubV9idWNrZXQ7Ci0gICAgICAgIH0K
LQotICAgICAgICBUJiBvcGVyYXRvciooKQotICAgICAgICB7Ci0gICAgICAgICAgICBCQVNTRVJU
KG1fYnVja2V0IDwgbV9lbmQpOwotICAgICAgICAgICAgQkFTU0VSVCghbV9idWNrZXQtPmlzRGVs
ZXRlZCk7Ci0gICAgICAgICAgICByZXR1cm4gbV9idWNrZXQtPnZhbHVlOwotICAgICAgICB9Ci0K
LSAgICAgICAgVCogb3BlcmF0b3ItPigpICB7IHJldHVybiAmb3BlcmF0b3IqKCk7IH0KLQotICAg
IHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTb3J0ZWRWZWN0b3I7Ci0KLSAgICAgICAg
dm9pZCBza2lwRGVsZXRlZEJ1Y2tldHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAo
bV9idWNrZXQgIT0gbV9lbmQgJiYgbV9idWNrZXQtPmlzRGVsZXRlZCkKLSAgICAgICAgICAgICAg
ICArK21fYnVja2V0OwotICAgICAgICB9Ci0KLSAgICAgICAgQnVja2V0KiBtX2J1Y2tldDsKLSAg
ICAgICAgQnVja2V0KiBtX2VuZDsKLSAgICB9OwotCi0gICAgaXRlcmF0b3IgYmVnaW4oKSB7IHJl
dHVybiBpdGVyYXRvcihtX3ZlY3Rvci5iZWdpbigpLCBtX3ZlY3Rvci5lbmQoKSk7IH0KLSAgICBp
dGVyYXRvciBlbmQoKSB7IHJldHVybiBpdGVyYXRvcihtX3ZlY3Rvci5lbmQoKSwgbV92ZWN0b3Iu
ZW5kKCkpOyB9Ci0KLSAgICB2b2lkIGluc2VydChjb25zdCBUJik7Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBpdGVyYXRvciBmaW5kKGNvbnN0IFUmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBVPiBUIGdldChjb25zdCBVJik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gVCB0YWtlKGNv
bnN0IFUmKTsKLQotICAgIHZvaWQgc2hyaW5rVG9GaXQoKTsKLQotcHJpdmF0ZToKLSAgICBWZWN0
b3I8QnVja2V0PiBtX3ZlY3RvcjsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIFNv
cnRlZFZlY3RvcjxUPjo6aW5zZXJ0KGNvbnN0IFQmIHZhbHVlKQotewotICAgIGF1dG8gaXQgPSBz
dGQ6Omxvd2VyX2JvdW5kKG1fdmVjdG9yLmJlZ2luKCksIG1fdmVjdG9yLmVuZCgpLCB2YWx1ZSk7
Ci0gICAgaWYgKGl0ICE9IG1fdmVjdG9yLmVuZCgpICYmIGl0LT5pc0RlbGV0ZWQpIHsKLSAgICAg
ICAgKml0ID0gQnVja2V0KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1f
dmVjdG9yLmluc2VydChpdCwgQnVja2V0KHZhbHVlKSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci10eXBlbmFtZSBTb3J0ZWRWZWN0b3I8VD46Oml0ZXJh
dG9yIFNvcnRlZFZlY3RvcjxUPjo6ZmluZChjb25zdCBVJiB2YWx1ZSkKLXsKLSAgICBhdXRvIGl0
ID0gc3RkOjpsb3dlcl9ib3VuZChtX3ZlY3Rvci5iZWdpbigpLCBtX3ZlY3Rvci5lbmQoKSwgdmFs
dWUpOwotICAgIHJldHVybiBpdGVyYXRvcihpdCwgbV92ZWN0b3IuZW5kKCkpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotVCBTb3J0ZWRWZWN0b3I8VD46
OmdldChjb25zdCBVJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKmZpbmQodmFsdWUpOwotfQotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotVCBTb3J0ZWRWZWN0b3I8
VD46OnRha2UoY29uc3QgVSYgdmFsdWUpCi17Ci0gICAgYXV0byBpdCA9IGZpbmQodmFsdWUpOwot
ICAgIGl0Lm1fYnVja2V0LT5pc0RlbGV0ZWQgPSB0cnVlOwotICAgIHJldHVybiBpdC5tX2J1Y2tl
dC0+dmFsdWU7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIFNvcnRlZFZlY3RvcjxU
Pjo6c2hyaW5rVG9GaXQoKQotewotICAgIGF1dG8gaXNEZWxldGVkID0gW10oY29uc3QgQnVja2V0
JiBidWNrZXQpIHsKLSAgICAgICAgcmV0dXJuIGJ1Y2tldC5pc0RlbGV0ZWQ7Ci0gICAgfTsKLQot
ICAgIGF1dG8gbmV3RW5kID0gc3RkOjpyZW1vdmVfaWYobV92ZWN0b3IuYmVnaW4oKSwgbV92ZWN0
b3IuZW5kKCksIGlzRGVsZXRlZCk7Ci0gICAgc2l6ZV90IG5ld1NpemUgPSBuZXdFbmQgLSBtX3Zl
Y3Rvci5iZWdpbigpOwotICAgIG1fdmVjdG9yLnNocmluayhuZXdTaXplKTsKLQotICAgIG1fdmVj
dG9yLnNocmlua1RvRml0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKLQotI2VuZGlm
IC8vIFNvcnRlZFZlY3Rvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZN
QWxsb2NhdGUuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1BbGxvY2F0ZS5oCmluZGV4IDVi
YmIwNjc4MDBlYzZkM2M2ZmQ4YTBiYzMxMjFlZmVhNGY1NTA3Y2UuLjAyNzNhMGRlNjAzYzM2NDEx
YmY0NTI1MGE1MzJkOWMxNjdiZGJhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvVk1BbGxvY2F0ZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1BbGxvY2F0ZS5o
CkBAIC04Miw2ICs4MiwyOSBAQCBpbmxpbmUgdm9pZCogdHJ5Vk1BbGxvY2F0ZShzaXplX3Qgdm1T
aXplKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK2lubGluZSBib29sIHRyeVZNRXh0ZW5kKHZv
aWQqIHAsIHNpemVfdCB2bU9sZFNpemUsIHNpemVfdCB2bU5ld1NpemUpCit7CisgICAgdm1WYWxp
ZGF0ZSh2bU9sZFNpemUpOworICAgIHZtVmFsaWRhdGUodm1OZXdTaXplKTsKKyAgICAKKyAgICBC
QVNTRVJUKHZtT2xkU2l6ZSA8IHZtTmV3U2l6ZSk7CisKKyAgICB2b2lkKiBuZXh0QWRkcmVzcyA9
IHN0YXRpY19jYXN0PGNoYXIqPihwKSArIHZtT2xkU2l6ZTsKKyAgICBzaXplX3QgZXh0ZW50aW9u
U2l6ZSA9IHZtTmV3U2l6ZSAtIHZtT2xkU2l6ZTsKKworICAgIHZvaWQqIHJlc3VsdCA9IG1tYXAo
bmV4dEFkZHJlc3MsIGV4dGVudGlvblNpemUsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9Q
UklWQVRFIHwgTUFQX0FOT04sIEJNQUxMT0NfVk1fVEFHLCAwKTsKKworICAgIGlmIChyZXN1bHQg
PT0gTUFQX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHJlc3VsdCAh
PSBuZXh0QWRkcmVzcykgeworICAgICAgICBtdW5tYXAocmVzdWx0LCBleHRlbnRpb25TaXplKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogaW5saW5lIHZvaWQqIHZtQWxsb2NhdGUoc2l6ZV90IHZtU2l6ZSkKIHsKICAgICB2b2lkKiBy
ZXN1bHQgPSB0cnlWTUFsbG9jYXRlKHZtU2l6ZSk7CkBAIC0xMDMsNyArMTI2LDcgQEAgaW5saW5l
IHZvaWQqIHRyeVZNQWxsb2NhdGUoc2l6ZV90IHZtQWxpZ25tZW50LCBzaXplX3Qgdm1TaXplKQog
ICAgIHZtVmFsaWRhdGUodm1TaXplKTsKICAgICB2bVZhbGlkYXRlKHZtQWxpZ25tZW50KTsKIAot
ICAgIHNpemVfdCBtYXBwZWRTaXplID0gdm1BbGlnbm1lbnQgLSB2bVBhZ2VTaXplICsgdm1TaXpl
OworICAgIHNpemVfdCBtYXBwZWRTaXplID0gc3RkOjptYXgodm1TaXplLCB2bUFsaWdubWVudCkg
KyB2bUFsaWdubWVudDsKICAgICBjaGFyKiBtYXBwZWQgPSBzdGF0aWNfY2FzdDxjaGFyKj4odHJ5
Vk1BbGxvY2F0ZShtYXBwZWRTaXplKSk7CiAgICAgaWYgKCFtYXBwZWQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTEyLDggKzEzNSw2IEBAIGlubGluZSB2b2lkKiB0cnlWTUFsbG9jYXRl
KHNpemVfdCB2bUFsaWdubWVudCwgc2l6ZV90IHZtU2l6ZSkKICAgICBjaGFyKiBhbGlnbmVkID0g
cm91bmRVcFRvTXVsdGlwbGVPZih2bUFsaWdubWVudCwgbWFwcGVkKTsKICAgICBjaGFyKiBhbGln
bmVkRW5kID0gYWxpZ25lZCArIHZtU2l6ZTsKICAgICAKLSAgICBSRUxFQVNFX0JBU1NFUlQoYWxp
Z25lZEVuZCA8PSBtYXBwZWRFbmQpOwotICAgIAogICAgIGlmIChzaXplX3QgbGVmdEV4dHJhID0g
YWxpZ25lZCAtIG1hcHBlZCkKICAgICAgICAgdm1EZWFsbG9jYXRlKG1hcHBlZCwgbGVmdEV4dHJh
KTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcAppbmRleCAwZjlmNGRkNjM5NGFjNjc2
YTE2ZjRhODdiZDg5ZjhjZDVjN2VmNTM2Li5jZDY3M2MwYjEyZjhjNjQ2ZDI1OGJlNjNkNDcwMTcx
ZTc3NjY3NDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAK
KysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCkBAIC00NywxNCArNDcsMTUg
QEAgdm9pZCBWTUhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+JiBsb2NrKQogICAgICAgICBtX3NtYWxsUGFnZXMucHVzaChpdCk7CiB9CiAKLUxhcmdl
T2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJnZUNodW5rKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNN
dXRleD4mIGxvY2spCit2b2lkIFZNSGVhcDo6YWxsb2NhdGVMYXJnZUNodW5rKHN0ZDo6bG9ja19n
dWFyZDxTdGF0aWNNdXRleD4mIGxvY2spCiB7CiAgICAgaWYgKCFtX2xhcmdlQ2h1bmtzLnNpemUo
KSkKICAgICAgICAgYWxsb2NhdGVTdXBlckNodW5rKGxvY2spOwogCiAgICAgLy8gV2UgaW5pdGlh
bGl6ZSBjaHVua3MgbGF6aWx5IHRvIGF2b2lkIGRpcnR5aW5nIHRoZWlyIG1ldGFkYXRhIHBhZ2Vz
LgogICAgIExhcmdlQ2h1bmsqIGxhcmdlQ2h1bmsgPSBuZXcgKG1fbGFyZ2VDaHVua3MucG9wKCkt
PmxhcmdlQ2h1bmsoKSkgTGFyZ2VDaHVuazsKLSAgICByZXR1cm4gTGFyZ2VPYmplY3QobGFyZ2VD
aHVuay0+YmVnaW4oKSk7CisgICAgTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QobGFyZ2VDaHVuay0+
YmVnaW4oKSk7CisgICAgbV9sYXJnZU9iamVjdHMuaW5zZXJ0KGxhcmdlT2JqZWN0KTsKIH0KIAog
dm9pZCBWTUhlYXA6OmFsbG9jYXRlU3VwZXJDaHVuayhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0
ZXg+JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCmluZGV4IDY0OWU0OTM2ODE1ODFmYzZlNDI3M2Ey
ZDVkYWE4YzllZWExOTY0MTQuLmFiYzhjNjI1ZTIyZDJlMjEyNzUwMjc5NjRkNDY3ZDQwYTYzM2Zm
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgCiBwcml2YXRlOgogICAgIHZvaWQgYWxsb2NhdGVTbWFsbENodW5rKHN0ZDo6bG9ja19ndWFy
ZDxTdGF0aWNNdXRleD4mKTsKLSAgICBMYXJnZU9iamVjdCBhbGxvY2F0ZUxhcmdlQ2h1bmsoc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYpOworICAgIHZvaWQgYWxsb2NhdGVMYXJnZUNodW5r
KHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mKTsKICAgICB2b2lkIGFsbG9jYXRlU3VwZXJD
aHVuayhzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jik7CiAKICAgICBWZWN0b3I8U21hbGxQ
YWdlKj4gbV9zbWFsbFBhZ2VzOwpAQCAtODUsMjAgKzg1LDI2IEBAIGlubGluZSBTbWFsbFBhZ2Uq
IFZNSGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYg
bG9jaykKIAogaW5saW5lIExhcmdlT2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJnZU9iamVjdChz
dGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBp
ZiAoTGFyZ2VPYmplY3QgbGFyZ2VPYmplY3QgPSBtX2xhcmdlT2JqZWN0cy50YWtlKHNpemUpKQot
ICAgICAgICByZXR1cm4gbGFyZ2VPYmplY3Q7Ci0KLSAgICBCQVNTRVJUKHNpemUgPD0gbGFyZ2VN
YXgpOwotICAgIHJldHVybiBhbGxvY2F0ZUxhcmdlQ2h1bmsobG9jayk7CisgICAgTGFyZ2VPYmpl
Y3QgbGFyZ2VPYmplY3QgPSBtX2xhcmdlT2JqZWN0cy50YWtlKHNpemUpOworICAgIGlmICghbGFy
Z2VPYmplY3QpIHsKKyAgICAgICAgYWxsb2NhdGVMYXJnZUNodW5rKGxvY2spOworICAgICAgICBs
YXJnZU9iamVjdCA9IG1fbGFyZ2VPYmplY3RzLnRha2Uoc2l6ZSk7CisgICAgICAgIEJBU1NFUlQo
bGFyZ2VPYmplY3QpOworICAgIH0KKworICAgIHJldHVybiBsYXJnZU9iamVjdDsKIH0KIAogaW5s
aW5lIExhcmdlT2JqZWN0IFZNSGVhcDo6YWxsb2NhdGVMYXJnZU9iamVjdChzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgc2l6
ZV90IHVuYWxpZ25lZFNpemUpCiB7Ci0gICAgaWYgKExhcmdlT2JqZWN0IGxhcmdlT2JqZWN0ID0g
bV9sYXJnZU9iamVjdHMudGFrZShhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpKQotICAg
ICAgICByZXR1cm4gbGFyZ2VPYmplY3Q7Ci0KLSAgICBCQVNTRVJUKHVuYWxpZ25lZFNpemUgPD0g
bGFyZ2VNYXgpOwotICAgIHJldHVybiBhbGxvY2F0ZUxhcmdlQ2h1bmsobG9jayk7CisgICAgTGFy
Z2VPYmplY3QgbGFyZ2VPYmplY3QgPSBtX2xhcmdlT2JqZWN0cy50YWtlKGFsaWdubWVudCwgc2l6
ZSwgdW5hbGlnbmVkU2l6ZSk7CisgICAgaWYgKCFsYXJnZU9iamVjdCkgeworICAgICAgICBhbGxv
Y2F0ZUxhcmdlQ2h1bmsobG9jayk7CisgICAgICAgIGxhcmdlT2JqZWN0ID0gbV9sYXJnZU9iamVj
dHMudGFrZShhbGlnbm1lbnQsIHNpemUsIHVuYWxpZ25lZFNpemUpOworICAgICAgICBCQVNTRVJU
KGxhcmdlT2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4gbGFyZ2VPYmplY3Q7CiB9CiAKIGlu
bGluZSB2b2lkIFZNSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPFN0
YXRpY011dGV4PiYgbG9jaywgU21hbGxQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9WTVN0YXRlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNU3RhdGUu
aAppbmRleCBiODdhZWZlYzY0NmRhYTg2YWY0MDI4MmZjY2I1ZDc5NWUyMDhhYzcyLi4zYzg1MzY3
ZjEzMDRiMDA0OWUzMmI1MzIzZGU1OWMxZmI0OGIwNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1ZNU3RhdGUuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNU3Rh
dGUuaApAQCAtNzQsMTMgKzc0LDYgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlOwogfTsK
IAotaW5saW5lIFZNU3RhdGUgbWVyZ2UoVk1TdGF0ZSBhLCBWTVN0YXRlIGIpCi17Ci0gICAgVk1T
dGF0ZSByZXN1bHQoYSk7Ci0gICAgcmVzdWx0Lm1lcmdlKGIpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKIAogI2VuZGlmIC8vIFZNU3RhdGVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WZWN0b3IuaCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvVmVjdG9yLmgKaW5kZXggMDk1OWU0NWNkMzFhMmJlOTU2YTFkMzk4YTBjZGIzYjUz
NWUyMzNkZS4uMmNkYTBkZGEyZTdlYmY3NWYwMjcwYTIzMDA4ZGQ4MjQyMjc0YjRiMCAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WZWN0b3IuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1ZlY3Rvci5oCkBAIC00MCwxNyArNDAsMTQgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4KIGNsYXNzIFZlY3RvciB7CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3RyaXZpYWxseV9k
ZXN0cnVjdGlibGU8VD46OnZhbHVlLCAiVmVjdG9yIG11c3QgaGF2ZSBhIHRyaXZpYWwgZGVzdHJ1
Y3Rvci4iKTsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIFQqIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYg
Y29uc3QgVCogY29uc3RfaXRlcmF0b3I7Ci0KICAgICBWZWN0b3IoY29uc3QgVmVjdG9yJikgPSBk
ZWxldGU7CiAgICAgVmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yJikgPSBkZWxldGU7CiAK
ICAgICBWZWN0b3IoKTsKICAgICB+VmVjdG9yKCk7CiAKLSAgICBpdGVyYXRvciBiZWdpbigpIHsg
cmV0dXJuIG1fYnVmZmVyOyB9Ci0gICAgaXRlcmF0b3IgZW5kKCkgeyByZXR1cm4gbV9idWZmZXIg
KyBtX3NpemU7IH0KKyAgICBUKiBiZWdpbigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CisgICAgVCog
ZW5kKCkgeyByZXR1cm4gbV9idWZmZXIgKyBtX3NpemU7IH0KIAogICAgIHNpemVfdCBzaXplKCkg
eyByZXR1cm4gbV9zaXplOyB9CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgeyByZXR1cm4gbV9jYXBh
Y2l0eTsgfQpAQCAtNTksMjMgKzU2LDE5IEBAIHB1YmxpYzoKICAgICBUJiBsYXN0KCkgeyByZXR1
cm4gbV9idWZmZXJbbV9zaXplIC0gMV07IH0KIAogICAgIHZvaWQgcHVzaChjb25zdCBUJik7Ci0K
KyAgICB2b2lkIHB1c2goY29uc3QgVCosIGNvbnN0IFQqKTsKICAgICBUIHBvcCgpOwogICAgIFQg
cG9wKHNpemVfdCk7Ci0gICAgVCBwb3AoY29uc3RfaXRlcmF0b3IgaXQpIHsgcmV0dXJuIHBvcChp
dCAtIGJlZ2luKCkpOyB9Ci0gICAgCi0gICAgdm9pZCBpbnNlcnQoaXRlcmF0b3IsIGNvbnN0IFQm
KTsKKyAgICBUIHBvcChjb25zdCBUKiBpdCkgeyByZXR1cm4gcG9wKGl0IC0gYmVnaW4oKSk7IH0K
IAogICAgIHZvaWQgc2hyaW5rKHNpemVfdCk7CiAKLSAgICB2b2lkIHNocmlua1RvRml0KCk7Ci0K
IHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBncm93RmFjdG9yID0gMjsKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHNocmlua0ZhY3RvciA9IDQ7CiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBpbml0aWFsQ2FwYWNpdHkgPSB2bVBhZ2VTaXplIC8gc2l6ZW9mKFQpOwogCi0gICAgdm9p
ZCBncm93Q2FwYWNpdHkoKTsKKyAgICB2b2lkIGdyb3dDYXBhY2l0eShzaXplX3Qgc2l6ZSk7CiAg
ICAgdm9pZCBzaHJpbmtDYXBhY2l0eSgpOwogICAgIHZvaWQgcmVhbGxvY2F0ZUJ1ZmZlcihzaXpl
X3QpOwogCkBAIC0xMTAsMTEgKzEwMywyMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogSU5MSU5F
IHZvaWQgVmVjdG9yPFQ+OjpwdXNoKGNvbnN0IFQmIHZhbHVlKQogewogICAgIGlmIChtX3NpemUg
PT0gbV9jYXBhY2l0eSkKLSAgICAgICAgZ3Jvd0NhcGFjaXR5KCk7CisgICAgICAgIGdyb3dDYXBh
Y2l0eShtX3NpemUpOwogICAgIG1fYnVmZmVyW21fc2l6ZSsrXSA9IHZhbHVlOwogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgordm9pZCBWZWN0b3I8VD46OnB1c2goY29uc3QgVCogYmVnaW4sIGNv
bnN0IFQqIGVuZCkKK3sKKyAgICBzaXplX3QgbmV3U2l6ZSA9IG1fc2l6ZSArIChlbmQgLSBiZWdp
bik7CisgICAgaWYgKG5ld1NpemUgPiBtX2NhcGFjaXR5KQorICAgICAgICBncm93Q2FwYWNpdHko
bmV3U2l6ZSk7CisgICAgc3RkOjptZW1jcHkodGhpcy0+ZW5kKCksIGJlZ2luLCAoZW5kIC0gYmVn
aW4pICogc2l6ZW9mKFQpKTsKKyAgICBtX3NpemUgPSBuZXdTaXplOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogaW5saW5lIFQgVmVjdG9yPFQ+Ojpwb3AoKQogewogICAgIEJBU1NFUlQobV9z
aXplKTsKQEAgLTEzMiwyMCArMTM1LDYgQEAgaW5saW5lIFQgVmVjdG9yPFQ+Ojpwb3Aoc2l6ZV90
IGkpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIFZlY3RvcjxUPjo6aW5zZXJ0KGl0
ZXJhdG9yIGl0LCBjb25zdCBUJiB2YWx1ZSkKLXsKLSAgICBzaXplX3QgaW5kZXggPSBpdCAtIGJl
Z2luKCk7Ci0gICAgc2l6ZV90IG1vdmVDb3VudCA9IGVuZCgpIC0gaXQ7Ci0KLSAgICBpZiAobV9z
aXplID09IG1fY2FwYWNpdHkpCi0gICAgICAgIGdyb3dDYXBhY2l0eSgpOwotCi0gICAgc3RkOjpt
ZW1tb3ZlKCZtX2J1ZmZlcltpbmRleCArIDFdLCAmbV9idWZmZXJbaW5kZXhdLCBtb3ZlQ291bnQg
KiBzaXplb2YoVCkpOwotICAgIG1fYnVmZmVyW2luZGV4XSA9IHZhbHVlOwotICAgIG1fc2l6ZSsr
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgogaW5saW5lIHZvaWQgVmVjdG9yPFQ+OjpzaHJp
bmsoc2l6ZV90IHNpemUpCiB7CiAgICAgQkFTU0VSVChzaXplIDw9IG1fc2l6ZSk7CkBAIC0xNTgs
NyArMTQ3LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgVmVjdG9yPFQ+OjpyZWFsbG9j
YXRlQnVmZmVyKHNpemVfdCBuZXdDYXBhY2l0eSkKIHsKICAgICBzaXplX3Qgdm1TaXplID0gYm1h
bGxvYzo6dm1TaXplKG5ld0NhcGFjaXR5ICogc2l6ZW9mKFQpKTsKLSAgICBUKiBuZXdCdWZmZXIg
PSB2bVNpemUgPyBzdGF0aWNfY2FzdDxUKj4odm1BbGxvY2F0ZSh2bVNpemUpKSA6IG51bGxwdHI7
CisgICAgVCogbmV3QnVmZmVyID0gc3RhdGljX2Nhc3Q8VCo+KHZtQWxsb2NhdGUodm1TaXplKSk7
CiAgICAgaWYgKG1fYnVmZmVyKSB7CiAgICAgICAgIHN0ZDo6bWVtY3B5KG5ld0J1ZmZlciwgbV9i
dWZmZXIsIG1fc2l6ZSAqIHNpemVvZihUKSk7CiAgICAgICAgIHZtRGVhbGxvY2F0ZShtX2J1ZmZl
ciwgYm1hbGxvYzo6dm1TaXplKG1fY2FwYWNpdHkgKiBzaXplb2YoVCkpKTsKQEAgLTE3NiwxOSAr
MTY1LDEyIEBAIE5PX0lOTElORSB2b2lkIFZlY3RvcjxUPjo6c2hyaW5rQ2FwYWNpdHkoKQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotTk9fSU5MSU5FIHZvaWQgVmVjdG9yPFQ+Ojpncm93Q2Fw
YWNpdHkoKQorTk9fSU5MSU5FIHZvaWQgVmVjdG9yPFQ+Ojpncm93Q2FwYWNpdHkoc2l6ZV90IHNp
emUpCiB7Ci0gICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gbWF4KGluaXRpYWxDYXBhY2l0eSwgbV9z
aXplICogZ3Jvd0ZhY3Rvcik7CisgICAgc2l6ZV90IG5ld0NhcGFjaXR5ID0gbWF4KGluaXRpYWxD
YXBhY2l0eSwgc2l6ZSAqIGdyb3dGYWN0b3IpOwogICAgIHJlYWxsb2NhdGVCdWZmZXIobmV3Q2Fw
YWNpdHkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBWZWN0b3I8VD46OnNocmlu
a1RvRml0KCkKLXsKLSAgICBpZiAobV9zaXplIDwgbV9jYXBhY2l0eSkKLSAgICAgICAgcmVhbGxv
Y2F0ZUJ1ZmZlcihtX3NpemUpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCiAKICNlbmRp
ZiAvLyBWZWN0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9YTGFyZ2VN
YXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9YTGFyZ2VNYXAuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhODJhMDRhMmY5MTEwYTMxZGIxMzIxYjBiZDdlZWRhZGIzMDli
YjU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvWExhcmdlTWFwLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNp
bmNsdWRlICJYTGFyZ2VNYXAuaCIKLQotbmFtZXNwYWNlIGJtYWxsb2MgewotCi1YTGFyZ2VSYW5n
ZSBYTGFyZ2VNYXA6OnRha2VGcmVlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQotewot
ICAgIHNpemVfdCBhbGlnbm1lbnRNYXNrID0gYWxpZ25tZW50IC0gMTsKLQotICAgIFhMYXJnZVJh
bmdlKiBjYW5kaWRhdGUgPSBtX2ZyZWUuZW5kKCk7Ci0gICAgZm9yIChYTGFyZ2VSYW5nZSogaXQg
PSBtX2ZyZWUuYmVnaW4oKTsgaXQgIT0gbV9mcmVlLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlm
IChpdC0+c2l6ZSgpIDwgc2l6ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlm
IChjYW5kaWRhdGUgIT0gbV9mcmVlLmVuZCgpICYmIGNhbmRpZGF0ZS0+YmVnaW4oKSA8IGl0LT5i
ZWdpbigpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKHRlc3QoaXQtPmJl
Z2luKCksIGFsaWdubWVudE1hc2spKSB7Ci0gICAgICAgICAgICBjaGFyKiBhbGlnbmVkID0gcm91
bmRVcFRvTXVsdGlwbGVPZihhbGlnbm1lbnQsIGl0LT5iZWdpbigpKTsKLSAgICAgICAgICAgIGlm
IChhbGlnbmVkIDwgaXQtPmJlZ2luKCkpIC8vIENoZWNrIGZvciBvdmVyZmxvdy4KLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgY2hhciogYWxpZ25lZEVuZCA9IGFsaWdu
ZWQgKyBzaXplOwotICAgICAgICAgICAgaWYgKGFsaWduZWRFbmQgPCBhbGlnbmVkKSAvLyBDaGVj
ayBmb3Igb3ZlcmZsb3cuCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
IGlmIChhbGlnbmVkRW5kID4gaXQtPmVuZCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY2FuZGlkYXRlID0gaXQ7Ci0gICAgfQotICAgIAotICAgIGlm
IChjYW5kaWRhdGUgPT0gbV9mcmVlLmVuZCgpKQotICAgICAgICByZXR1cm4gWExhcmdlUmFuZ2Uo
KTsKLQotICAgIHJldHVybiBtX2ZyZWUucG9wKGNhbmRpZGF0ZSk7Ci19Ci0KLXZvaWQgWExhcmdl
TWFwOjphZGRGcmVlKGNvbnN0IFhMYXJnZVJhbmdlJiByYW5nZSkKLXsKLSAgICBYTGFyZ2VSYW5n
ZSBtZXJnZWQgPSByYW5nZTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mcmVlLnNp
emUoKTsgKytpKSB7Ci0gICAgICAgIGF1dG8mIG90aGVyID0gbV9mcmVlW2ldOwotCi0gICAgICAg
IGlmICghY2FuTWVyZ2UobWVyZ2VkLCBvdGhlcikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBtZXJnZWQgPSBtZXJnZShtZXJnZWQsIG1fZnJlZS5wb3AoaS0tKSk7Ci0gICAgfQot
ICAgIAotICAgIG1fZnJlZS5wdXNoKG1lcmdlZCk7Ci19Ci0KLXZvaWQgWExhcmdlTWFwOjphZGRB
bGxvY2F0ZWQoY29uc3QgWExhcmdlUmFuZ2UmIHByZXYsIGNvbnN0IHN0ZDo6cGFpcjxYTGFyZ2VS
YW5nZSwgWExhcmdlUmFuZ2U+JiBhbGxvY2F0ZWQsIGNvbnN0IFhMYXJnZVJhbmdlJiBuZXh0KQot
ewotICAgIGlmIChwcmV2KQotICAgICAgICBtX2ZyZWUucHVzaChwcmV2KTsKLSAgICAKLSAgICBp
ZiAobmV4dCkKLSAgICAgICAgbV9mcmVlLnB1c2gobmV4dCk7Ci0KLSAgICBtX2FsbG9jYXRlZC5p
bnNlcnQoeyBhbGxvY2F0ZWQuZmlyc3QsIGFsbG9jYXRlZC5zZWNvbmQgfSk7Ci19Ci0KLVhMYXJn
ZVJhbmdlIFhMYXJnZU1hcDo6Z2V0QWxsb2NhdGVkKHZvaWQqIG9iamVjdCkKLXsKLSAgICByZXR1
cm4gbV9hbGxvY2F0ZWQuZmluZChvYmplY3QpLT5vYmplY3Q7Ci19Ci0KLVhMYXJnZVJhbmdlIFhM
YXJnZU1hcDo6dGFrZUFsbG9jYXRlZCh2b2lkKiBvYmplY3QpCi17Ci0gICAgQWxsb2NhdGlvbiBh
bGxvY2F0aW9uID0gbV9hbGxvY2F0ZWQudGFrZShvYmplY3QpOwotICAgIHJldHVybiBtZXJnZShh
bGxvY2F0aW9uLm9iamVjdCwgYWxsb2NhdGlvbi51bnVzZWQpOwotfQotCi12b2lkIFhMYXJnZU1h
cDo6c2hyaW5rVG9GaXQoKQotewotICAgIG1fZnJlZS5zaHJpbmtUb0ZpdCgpOwotICAgIG1fYWxs
b2NhdGVkLnNocmlua1RvRml0KCk7Ci19Ci0KLVhMYXJnZVJhbmdlIFhMYXJnZU1hcDo6dGFrZVBo
eXNpY2FsKCkgewotICAgIGF1dG8gaGFzUGh5c2ljYWwgPSBbXShjb25zdCBYTGFyZ2VSYW5nZSYg
cmFuZ2UpIHsKLSAgICAgICAgcmV0dXJuIHJhbmdlLnZtU3RhdGUoKS5oYXNQaHlzaWNhbCgpOwot
ICAgIH07Ci0KLSAgICBhdXRvIGl0ID0gc3RkOjpmaW5kX2lmKG1fZnJlZS5iZWdpbigpLCBtX2Zy
ZWUuZW5kKCksIGhhc1BoeXNpY2FsKTsKLSAgICBpZiAoaXQgIT0gbV9mcmVlLmVuZCgpKQotICAg
ICAgICByZXR1cm4gbV9mcmVlLnBvcChpdCk7Ci0KLSAgICBhdXRvIGhhc1VudXNlZCA9IFtdKGNv
bnN0IEFsbG9jYXRpb24mIGFsbG9jYXRpb24pIHsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRpb24u
dW51c2VkICYmIGFsbG9jYXRpb24udW51c2VkLnZtU3RhdGUoKS5oYXNQaHlzaWNhbCgpOwotICAg
IH07Ci0gICAgCi0gICAgWExhcmdlUmFuZ2Ugc3dhcHBlZDsKLSAgICBhdXRvIGl0MiA9IHN0ZDo6
ZmluZF9pZihtX2FsbG9jYXRlZC5iZWdpbigpLCBtX2FsbG9jYXRlZC5lbmQoKSwgaGFzVW51c2Vk
KTsKLSAgICBpZiAoaXQyICE9IG1fYWxsb2NhdGVkLmVuZCgpKQotICAgICAgICBzdGQ6OnN3YXAo
aXQyLT51bnVzZWQsIHN3YXBwZWQpOwotICAgIAotICAgIHJldHVybiBzd2FwcGVkOwotfQotCi12
b2lkIFhMYXJnZU1hcDo6YWRkVmlydHVhbChjb25zdCBYTGFyZ2VSYW5nZSYgcmFuZ2UpCi17Ci0g
ICAgYXV0byBjYW5NZXJnZSA9IFsmcmFuZ2VdKGNvbnN0IEFsbG9jYXRpb24mIG90aGVyKSB7Ci0g
ICAgICAgIHJldHVybiBvdGhlci5vYmplY3QuZW5kKCkgPT0gcmFuZ2UuYmVnaW4oKTsKLSAgICB9
OwotCi0gICAgaWYgKHJhbmdlLnNpemUoKSA8IHhMYXJnZUFsaWdubWVudCkgewotICAgICAgICAv
LyBUaGlzIGlzIGFuIHVudXNlZCBmcmFnbWVudCwgc28gaXQgbWlnaHQgYmVsb25nIGluIHRoZSBh
bGxvY2F0ZWQgbGlzdC4KLSAgICAgICAgYXV0byBpdCA9IHN0ZDo6ZmluZF9pZihtX2FsbG9jYXRl
ZC5iZWdpbigpLCBtX2FsbG9jYXRlZC5lbmQoKSwgY2FuTWVyZ2UpOwotICAgICAgICBpZiAoaXQg
IT0gbV9hbGxvY2F0ZWQuZW5kKCkpIHsKLSAgICAgICAgICAgIEJBU1NFUlQoIWl0LT51bnVzZWQp
OwotICAgICAgICAgICAgaXQtPnVudXNlZCA9IHJhbmdlOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgYSBuZWlnaGJvciBpbiB0
aGUgYWxsb2NhdGVkIGxpc3QsIG91ciBuZWlnaGJvciBtdXN0Ci0gICAgICAgIC8vIGhhdmUgYmVl
biBmcmVlZC4gV2UnbGwgbWVyZ2Ugd2l0aCBpdCBiZWxvdy4KLSAgICB9Ci0KLSAgICBhZGRGcmVl
KHJhbmdlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9YTGFyZ2VNYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWExh
cmdlTWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhODg1MDk4ZGYwZTQzODA4
YWU1ZmIxZWIwMGMzZjg5ZTFmZTRkNDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9YTGFyZ2VNYXAuaAorKysgL2Rl
di9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCi0gKi8KLQotI2lmbmRlZiBYTGFyZ2VNYXBfaAotI2RlZmluZSBYTGFyZ2VNYXBfaAot
Ci0jaW5jbHVkZSAiU29ydGVkVmVjdG9yLmgiCi0jaW5jbHVkZSAiVmVjdG9yLmgiCi0jaW5jbHVk
ZSAiWExhcmdlUmFuZ2UuaCIKLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLW5hbWVzcGFjZSBibWFs
bG9jIHsKLQotY2xhc3MgWExhcmdlTWFwIHsKLXB1YmxpYzoKLSAgICB2b2lkIGFkZEZyZWUoY29u
c3QgWExhcmdlUmFuZ2UmKTsKLSAgICBYTGFyZ2VSYW5nZSB0YWtlRnJlZShzaXplX3QgYWxpZ25t
ZW50LCBzaXplX3QpOwotCi0gICAgdm9pZCBhZGRBbGxvY2F0ZWQoY29uc3QgWExhcmdlUmFuZ2Um
IHByZXYsIGNvbnN0IHN0ZDo6cGFpcjxYTGFyZ2VSYW5nZSwgWExhcmdlUmFuZ2U+JiwgY29uc3Qg
WExhcmdlUmFuZ2UmIG5leHQpOwotICAgIFhMYXJnZVJhbmdlIGdldEFsbG9jYXRlZCh2b2lkKik7
Ci0gICAgWExhcmdlUmFuZ2UgdGFrZUFsbG9jYXRlZCh2b2lkKik7Ci0KLSAgICBYTGFyZ2VSYW5n
ZSB0YWtlUGh5c2ljYWwoKTsKLSAgICB2b2lkIGFkZFZpcnR1YWwoY29uc3QgWExhcmdlUmFuZ2Um
KTsKLSAgICAKLSAgICB2b2lkIHNocmlua1RvRml0KCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0
IEFsbG9jYXRpb24gewotICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBBbGxvY2F0aW9uJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gb2JqZWN0IDwgb3RoZXIub2JqZWN0OyB9Ci0gICAgICAgIGJv
b2wgb3BlcmF0b3I8KHZvaWQqIHB0cikgY29uc3QgeyByZXR1cm4gb2JqZWN0LmJlZ2luKCkgPCBw
dHI7IH0KLQotICAgICAgICBYTGFyZ2VSYW5nZSBvYmplY3Q7Ci0gICAgICAgIFhMYXJnZVJhbmdl
IHVudXNlZDsKLSAgICB9OwotCi0gICAgVmVjdG9yPFhMYXJnZVJhbmdlPiBtX2ZyZWU7Ci0gICAg
U29ydGVkVmVjdG9yPEFsbG9jYXRpb24+IG1fYWxsb2NhdGVkOwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gWExhcmdlTWFwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvWExhcmdlUmFuZ2UuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWExh
cmdlUmFuZ2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ3ZjgzMTY1ZTcxMzAz
ZTlmOTkxY2MzYTQwNTA0MjY5NDkzM2YwNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1hMYXJnZVJhbmdlLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgWExhcmdlUmFuZ2VfaAotI2RlZmluZSBYTGFyZ2VS
YW5nZV9oCi0KLSNpbmNsdWRlICJWTVN0YXRlLmgiCi0KLW5hbWVzcGFjZSBibWFsbG9jIHsKLQot
Y2xhc3MgWExhcmdlUmFuZ2UgOiBwdWJsaWMgUmFuZ2UgewotcHVibGljOgotICAgIFhMYXJnZVJh
bmdlKCkKLSAgICAgICAgOiBSYW5nZSgpCi0gICAgICAgICwgbV92bVN0YXRlKFZNU3RhdGU6OlZp
cnR1YWwpCi0gICAgewotICAgIH0KLQotICAgIFhMYXJnZVJhbmdlKHZvaWQqIGJlZ2luLCBzaXpl
X3Qgc2l6ZSwgVk1TdGF0ZSB2bVN0YXRlKQotICAgICAgICA6IFJhbmdlKGJlZ2luLCBzaXplKQot
ICAgICAgICAsIG1fdm1TdGF0ZSh2bVN0YXRlKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgVk1T
dGF0ZSB2bVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV92bVN0YXRlOyB9Ci0gICAgdm9pZCBzZXRW
TVN0YXRlKFZNU3RhdGUgdm1TdGF0ZSkgeyBtX3ZtU3RhdGUgPSB2bVN0YXRlOyB9Ci0KLSAgICBz
dGQ6OnBhaXI8WExhcmdlUmFuZ2UsIFhMYXJnZVJhbmdlPiBzcGxpdChzaXplX3QpIGNvbnN0Owot
Ci1wcml2YXRlOgotICAgIFZNU3RhdGUgbV92bVN0YXRlOwotfTsKLQotaW5saW5lIGJvb2wgY2Fu
TWVyZ2UoY29uc3QgWExhcmdlUmFuZ2UmIGEsIGNvbnN0IFhMYXJnZVJhbmdlJiBiKQotewotICAg
IGlmIChhLmVuZCgpID09IGIuYmVnaW4oKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0g
ICAgaWYgKGIuZW5kKCkgPT0gYS5iZWdpbigpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWlubGluZSBYTGFyZ2VSYW5nZSBtZXJnZShjb25zdCBY
TGFyZ2VSYW5nZSYgYSwgY29uc3QgWExhcmdlUmFuZ2UmIGIpCi17Ci0gICAgcmV0dXJuIFhMYXJn
ZVJhbmdlKAotICAgICAgICBzdGQ6Om1pbihhLmJlZ2luKCksIGIuYmVnaW4oKSksCi0gICAgICAg
IGEuc2l6ZSgpICsgYi5zaXplKCksCi0gICAgICAgIG1lcmdlKGEudm1TdGF0ZSgpLCBiLnZtU3Rh
dGUoKSkpOwotfQotCi1pbmxpbmUgc3RkOjpwYWlyPFhMYXJnZVJhbmdlLCBYTGFyZ2VSYW5nZT4g
WExhcmdlUmFuZ2U6OnNwbGl0KHNpemVfdCBzaXplKSBjb25zdAotewotICAgIEJBU1NFUlQoc2l6
ZSA8PSB0aGlzLT5zaXplKCkpOwotCi0gICAgWExhcmdlUmFuZ2UgbGVmdChiZWdpbigpLCBzaXpl
LCB2bVN0YXRlKCkpOwotICAgIFhMYXJnZVJhbmdlIHJpZ2h0KGxlZnQuZW5kKCksIHRoaXMtPnNp
emUoKSAtIHNpemUsIHZtU3RhdGUoKSk7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGxlZnQs
IHJpZ2h0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgYm1hbGxvYwotCi0jZW5kaWYgLy8gWExhcmdl
UmFuZ2VfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>