<?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>178547</bug_id>
          
          <creation_ts>2017-10-19 15:25:49 -0700</creation_ts>
          <short_desc>Modernize API::DownloadClient</short_desc>
          <delta_ts>2017-11-15 13:03:38 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1362392</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-19 15:25:49 -0700</bug_when>
    <thetext>Modernize API::DownloadClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362398</commentid>
    <comment_count>1</comment_count>
      <attachid>324302</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-19 15:31:38 -0700</bug_when>
    <thetext>Created attachment 324302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362409</commentid>
    <comment_count>2</comment_count>
      <attachid>324305</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-19 15:46:40 -0700</bug_when>
    <thetext>Created attachment 324305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362413</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-10-19 15:49:58 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362419</commentid>
    <comment_count>4</comment_count>
      <attachid>324305</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-10-19 15:56:31 -0700</bug_when>
    <thetext>Comment on attachment 324305
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=324305&amp;action=review

&gt; Source/WebKit/UIProcess/API/APIDownloadClient.h:42
&gt; +enum class AllowOverwrite { No, Yes };

Kinda weird to put this in the place where we&apos;re forward declaring things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362448</commentid>
    <comment_count>5</comment_count>
      <attachid>324314</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-19 16:43:05 -0700</bug_when>
    <thetext>Created attachment 324314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362457</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-19 17:09:54 -0700</bug_when>
    <thetext>http://trac.webkit.org/r223730</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362871</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2017-10-20 14:59:16 -0700</bug_when>
    <thetext>This revision caused several tests to fail consistently on El Capitan:
     http/tests/download/anchor-download-no-extension.html
     http/tests/download/anchor-download-redirect.html
     http/tests/download/anchor-download-redirect.html
     http/tests/security/anchor-download-allow-sameorigin.html

https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fdownload%2Fanchor-download-no-extension.html
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fdownload%2Fanchor-download-redirect.html
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fdownload%2Farea-download.html
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=http%2Ftests%2Fsecurity%2Fanchor-download-allow-sameorigin.html

https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r223778%20(3750)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1362898</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-20 16:12:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/r223798</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372339</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 13:03:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/35568704&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324302</attachid>
            <date>2017-10-19 15:31:38 -0700</date>
            <delta_ts>2017-10-19 15:46:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178547-20171019153137.patch</filename>
            <type>text/plain</type>
            <size>47733</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM3MTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE3LTEwLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEFQ
STo6RG93bmxvYWRDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODU0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBtb3JlIEMrKyByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgYmVj
YXVzZSB0aGV5J3JlIG5ldmVyIG51bGwuCisKKyAgICAgICAgUmVtb3ZlIGNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW1wbGVtZW50YXRp
b25zCisgICAgICAgIGV4Y2VwdCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aGljaCBhbHdh
eXMgcmV0dXJucyB0cnVlIGFuZCB3ZSBkb24ndCBpbnRlbmQgdG8KKyAgICAgICAgYWRkIHRoaXMg
dG8gdGhlIFNQSSBiZWNhdXNlIHRoYXQncyBqdXN0IGEgbGVnYWN5IGNhbGwgYW55d2F5cyBmcm9t
IHdoZW4gTlNVUkxDb25uZWN0aW9uCisgICAgICAgIGhhZG4ndCBmdWxseSBldm9sdmVkLCBhbmQg
d2UncmUgbW92aW5nIGF3YXkgZnJvbSBOU1VSTENvbm5lY3Rpb24sIGVzcGVjaWFsbHkgaW4gb3Vy
IEFQSSBkZXNpZ24uCisKKyAgICAgICAgU2VwYXJhdGUgdGhlIE5ldHdvcmtTZXNzaW9uLW9ubHkg
YW5kIHByZS1OZXR3b3JrU2Vzc2lvbi1vbmx5IGNhbGxiYWNrcy4gIEFsbCB0aGUgc3luY2hyb25v
dXMKKyAgICAgICAgSVBDIG1lc3NhZ2VzIGFyZSBvbmx5IHVzZWQgaW4gdGhlIHByZS1OZXR3b3Jr
U2Vzc2lvbiBjb2RlLCBzbyBvbmNlIHdlIHJlbW92ZSBpdCB3ZSBjYW4gcmVtb3ZlIHRoZW0hCisK
KyAgICAgICAgTWFrZSBBUEk6OkRvd25sb2FkQ2xpZW50IGNhbGxzIHRoYXQgTmV0d29ya1Nlc3Np
b24gdXNlcyB1c2UgYSBjb21wbGV0aW9uIGhhbmRsZXIgc28gd2Ugd2lsbCBiZSBhYmxlIHRvCisg
ICAgICAgIGRlc2lnbiBhbiBhc3luY2hyb25vdXMgQVBJLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UGVu
ZGluZ0Rvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VEb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6
CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZENy
ZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlz
aCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQ
STo6RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xp
ZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50
OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZENyZWF0
ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmluaXNo
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAx
Ny0xMC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgU2Vy
dmljZSBXb3JrZXIgcHJvY2VzcyBzaG91bGQgbm90IGJlIHNlbGVjdGVkIHRvIG9wZW4gV2ViVmll
dyBvbiBpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyMzQwNykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDgsMTMgKzU0OCw2
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGkKICNlbmRpZgogCiAj
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NB
TExCQUNLKQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBib29sIGNh
bkF1dGhlbnRpY2F0ZSkKLXsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZG93bmxvYWRJRCwgY2FuQXV0aGVudGljYXRl
KTsKLX0KLSNlbmRpZgotCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZVdpbGxTZW5kUmVx
dWVzdChEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QpCiB7CiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVXaWxsU2VuZFJlcXVlc3Qo
ZG93bmxvYWRJRCwgV1RGTW92ZShyZXF1ZXN0KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCShyZXZpc2lvbiAyMjM0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIwNiw5ICsyMDYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90IHJlc291cmNlTG9hZElkZW50aWZp
ZXIsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKICNlbmRpZgogI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2b2lkIGNv
bnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZURvd25sb2FkKERvd25s
b2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSNlbmRpZgogICAgIHZvaWQgY29udGludWVX
aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
I2VuZGlmCiAgICAgdm9pZCBjb250aW51ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9u
KERvd25sb2FkSUQsIFN0cmluZyBkZXN0aW5hdGlvbiwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIzNDA3KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
NTEsOSArNTEsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlCiAg
ICAgQ29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHVpbnQ2NF90
IGxvYWRlcklELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKICNlbmRpZgogI2lmIFVTRShORVRXT1JL
X1NFU1NJT04pCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICBD
b250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VEb3dubG9hZChXZWJL
aXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCi0jZW5kaWYK
ICAgICBDb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCiAjZW5kaWYKICAgICBDb250aW51
ZURlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBTdHJpbmcgZGVzdGluYXRpb24sIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAJKHJldmlzaW9uIDIyMzQwNykKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDE2ICs4Niw2IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURv
d24KICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwog
fQogCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
RG93bmxvYWRJRCBkb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKLXsKLSAgICBhdXRv
KiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOwot
ICAgIEFTU0VSVChwZW5kaW5nRG93bmxvYWQpOwotICAgIGlmIChwZW5kaW5nRG93bmxvYWQpCi0g
ICAgICAgIHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBEb3dubG9h
ZE1hbmFnZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQgZG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBhdXRvKiBwZW5kaW5n
RG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOwpJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgJKHJldmlzaW9uIDIyMzQwNykKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4
ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBEb3dubG9hZE1hbmFnZXJfaAotI2RlZmluZSBEb3dubG9hZE1hbmFnZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFU
YXNrLmgiCkBAIC04MSw5ICs4MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQo
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWROYW1lID0geyB9KTsKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgZGF0YVRh
c2tCZWNhbWVEb3dubG9hZFRhc2soRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2Fk
PiYmKTsKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZvaWQg
Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQs
IGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSNlbmRpZgogICAgIHZvaWQgY29udGludWVXaWxsU2Vu
ZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZv
aWQgd2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYs
IFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CiAjZW5kaWYKQEAgLTExNyw1ICsxMTMsMyBA
QCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBEb3du
bG9hZE1hbmFnZXJfaApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyMjM0MDcp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxv
YWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NywxMiArNzcsNyBAQCB2b2lkIFBlbmRpbmdEb3du
bG9hZDo6Y2FuY2VsKCkKICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQog
dm9pZCBQZW5kaW5nRG93bmxvYWQ6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VBc3luYyhjb25zdCBXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkK
IHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpDYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOwotfQotCi12b2lkIFBlbmRpbmdE
b3dubG9hZDo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJv
b2wgY2FuQXV0aGVudGljYXRlKQotewotICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgIG1f
bmV0d29ya0xvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZSh0cnVlKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkocmV2aXNpb24gMjIz
NDA3KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkgKzQ5LDYgQEAgcHVibGljOgogICAgIFBl
bmRpbmdEb3dubG9hZChzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYsIERvd25sb2FkSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKTsKIAogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpOwotI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJB
Q0spCi0gICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UoYm9vbCBjYW5BdXRoZW50aWNhdGUpOwotI2VuZGlmCiAgICAgdm9pZCBjYW5jZWwoKTsKIAog
cHJpdmF0ZTogICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaAkocmV2aXNpb24gMjIzNDA3KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IEFQSURvd25sb2FkQ2xpZW50X2gKLSNkZWZpbmUgQVBJRG93bmxvYWRDbGllbnRfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KQEAgLTQwLDYgKzM5LDcgQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eTsKIGNsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNs
YXNzIFdlYlByb3RlY3Rpb25TcGFjZTsKK2VudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgeyBObywg
WWVzIH07CiB9CiAKIG5hbWVzcGFjZSBBUEkgewpAQCAtNDgsMjEgKzQ4LDIwIEBAIGNsYXNzIERv
d25sb2FkQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkqLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCB1aW50NjRfdCkgeyB9Ci0gICAgdmly
dHVhbCBib29sIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYpIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGJvb2wmKSB7IHJldHVybiB7IH07IH0K
LSAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2ViS2l0
OjpEb3dubG9hZFByb3h5KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkqKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+JiYgY2FsbGJhY2spIHsg
Y2FsbGJhY2socmVxdWVzdCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2
NF90KSB7IH0KKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyByZXR1cm4gdHJ1ZTsg
fQorI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0
ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2goV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENhbmNlbChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2Vu
ZGlmIC8vIEFQSURvd25sb2FkQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcAkocmV2aXNpb24gMjIzNDA3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDEw
MSArMTcyLDEwNCBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4CiAg
ICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgot
ICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxv
YWRQcm94eSogZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRTdGFydChX
ZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3RhcnQpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRTdGFydCh0
b0FQSShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnQodG9BUEkoJnByb2Nlc3NQ
b29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRvQVBJ
KCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgdG9BUEkoJmF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9
CiAKLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nl
c3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgZmluYWwKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UodG9B
UEkocHJvY2Vzc1Bvb2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoQVBJOjpVUkxSZXNw
b25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UodG9BUEkoJnByb2Nlc3NQ
b29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVh
dGUocmVzcG9uc2UpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQ
b29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIG92ZXJy
aWRlCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIGZpbmFs
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YSh0b0FQSShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
RGF0YSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgc2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29s
LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBv
dmVycmlkZQorI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQorICAgICAgICBib29sIHNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgZmluYWwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5zaG91bGREZWNvZGVTb3VyY2VE
YXRhT2ZNSU1FVHlwZSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgICAgICAg
ICAgcmV0dXJuIG1fY2xpZW50LnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKHRvQVBJ
KHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKG1pbWVUeXBlLmltcGwo
KSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICByZXR1cm4gbV9jbGll
bnQuc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUodG9BUEkoJnByb2Nlc3NQb29sKSwg
dG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CisjZW5kaWYKIAotICAgICAgICBTdHJpbmcgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nl
c3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEFs
bG93T3ZlcndyaXRlOjpObywgeyB9KTsKIAotICAgICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJp
bmdSZWY+IGRlc3RpbmF0aW9uKEFkb3B0V0ssIG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQcm94
eSksIHRvQVBJKGZpbGVuYW1lLmltcGwoKSksICZhbGxvd092ZXJ3cml0ZSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKSk7Ci0gICAgICAgICAgICByZXR1cm4gdG9XVEZTdHJpbmcoZGVzdGluYXRp
b24uZ2V0KCkpOworICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAg
ICAgICAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGRlc3RpbmF0aW9uKEFkb3B0V0ssIG1f
Y2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHRvQVBJKCZwcm9j
ZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwg
JmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6
IEFsbG93T3ZlcndyaXRlOjpObywgdG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCkpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJp
bmcmIHBhdGgpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBTdHJpbmcmIHBhdGgpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbih0b0FQSShwcm9jZXNzUG9v
bCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlv
bih0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94eSksIHRvQVBJKHBhdGgu
aW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAg
IHZvaWQgZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94
eSogZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViUHJv
Y2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5h
bAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaCkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaCh0b0FQ
SShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKHRvQVBJKCZwcm9jZXNzUG9v
bCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bv
b2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
YWlsKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGlk
RmFpbCh0b0FQSShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShlcnJv
ciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRG
YWlsKHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgdG9BUEkoZXJy
b3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2Fk
UHJveHkqIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGlkQ2FuY2VsKFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRDYW5jZWwodG9BUEkocHJvY2Vzc1Bvb2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZENhbmNlbCh0
b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgcHJvY2Vzc0Rp
ZENyYXNoKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSogZG93bmxv
YWRQcm94eSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fY2xpZW50
LnByb2Nlc3NEaWRDcmFzaCh0b0FQSShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vz
c0RpZENyYXNoKHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSogZG93
bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpPiYm
IGNhbGxiYWNrKSBvdmVycmlkZQorICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJQcm9j
ZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBGdW5jdGlvbjx2
b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjYWxsYmFjaykgZmluYWwKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkKLSAgICAgICAg
ICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QodG9BUEkocHJvY2Vzc1Bv
b2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmco
KS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1f
Y2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQ
SSgmZG93bmxvYWRQcm94eSksIHRvVVJMUmVmKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKIAotICAgICAgICAgICAgY2FsbGJhY2socmVx
dWVzdCk7CisgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAg
fQogCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25s
b2FkQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAJKHJldmlzaW9uIDIyMzQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDAsMTUgKzQwLDE1IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRvd25s
b2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBHUmVm
UHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0
ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOworICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9h
ZFByb3h5KTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dERvd25sb2FkU3RhcnRlZChtX3dlYkNv
bnRleHQsIGRvd25sb2FkLmdldCgpKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRvd25s
b2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKSBvdmVycmlkZQorICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIG92ZXJyaWRl
CiAgICAgewotICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtp
dFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOworICAgICAgICBH
UmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNy
ZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERvd25sb2Fk
SXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01
Nyw5ICs1Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3SGFuZGxlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOwog
ICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sKiwgRG93
bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3Vy
Y2VSZXNwb25zZSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9j
ZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc291cmNlUmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBHUmVmUHRy
PFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURv
d25sb2FkKGRvd25sb2FkUHJveHkpOworICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBk
b3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFBy
b3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERvd25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0
KCkpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC02NywyNyArNjcsMjkgQEAgcHJpdmF0ZToK
ICAgICAgICAgd2Via2l0RG93bmxvYWRTZXRSZXNwb25zZShkb3dubG9hZC5nZXQoKSwgcmVzcG9u
c2UuZ2V0KCkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bv
b2wqLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIG92ZXJy
aWRlCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoZG93bmxvYWRQcm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0
RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQo
JmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZE5vdGlmeVByb2dyZXNzKGRv
d25sb2FkLmdldCgpLCBsZW5ndGgpOwogICAgIH0KIAotICAgIFN0cmluZyBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3Zlcndy
aXRlKSBvdmVycmlkZQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBGdW5j
dGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBv
dmVycmlkZQogICAgIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChkb3dubG9hZFByb3h5KTsKLSAg
ICAgICAgcmV0dXJuIHdlYmtpdERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoZG93bmxvYWQuZ2V0KCksIGZpbGVuYW1lLnV0ZjgoKSwgYWxsb3dPdmVyd3JpdGUp
OworICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKKyAgICAgICAgYm9vbCBh
bGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB3ZWJr
aXREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2Fk
LmdldCgpLCBmaWxlbmFtZS51dGY4KCksIGFsbG93T3ZlcndyaXRlKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dP
dmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfQogCi0gICAgdm9pZCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHks
IGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0
aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
U3RyaW5nJiBwYXRoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChkb3du
bG9hZFByb3h5KTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAg
ICAgIHdlYmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRvd25sb2FkLmdldCgpLCBwYXRo
KTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFBy
b3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUK
KyAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoZG93bmxvYWRQcm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0
RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQo
JmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChk
b3dubG9hZC5nZXQoKSkpIHsKICAgICAgICAgICAgIC8vIENhbmNlbGxhdGlvbiB0YWtlcyBwcmVj
ZWRlbmNlIG92ZXIgb3RoZXIgZXJyb3JzLgogICAgICAgICAgICAgd2Via2l0RG93bmxvYWRDYW5j
ZWxsZWQoZG93bmxvYWQuZ2V0KCkpOwpAQCAtOTYsMTYgKzk4LDE2IEBAIHByaXZhdGU6CiAgICAg
ICAgIHdlYmtpdFdlYkNvbnRleHRSZW1vdmVEb3dubG9hZChkb3dubG9hZFByb3h5KTsKICAgICB9
CiAKLSAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
R1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JD
cmVhdGVEb3dubG9hZChkb3dubG9hZFByb3h5KTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKTsKICAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKGRvd25sb2FkUHJv
eHkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sKiwgRG93bmxv
YWRQcm94eSogZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJQ
cm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ewotICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOworICAgICAgICBHUmVmUHRy
PFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURv
d25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRGaW5pc2hlZChk
b3dubG9hZC5nZXQoKSk7CiAgICAgICAgIHdlYmtpdFdlYkNvbnRleHRSZW1vdmVEb3dubG9hZChk
b3dubG9hZFByb3h5KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Eb3dubG9hZENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHJldmlzaW9uIDIyMzQwNykKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDIxICs0MSwyMSBAQCBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogfQogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKLSAgICAKKwogY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpE
b3dubG9hZENsaWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoaWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+KTsKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6
OkRvd25sb2FkQ2xpZW50Ci0gICAgdm9pZCBkaWRTdGFydChXZWJQcm9jZXNzUG9vbCosIERvd25s
b2FkUHJveHkqKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNz
UG9vbCosIERvd25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJikg
ZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCosIERvd25sb2Fk
UHJveHkqLCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsOwotICAgIFN0cmluZyBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkq
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3cml0ZVBhcmFtKSBmaW5h
bDsKLSAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqKSBm
aW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5Kiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwotICAgIHZvaWQgZGlkQ2FuY2Vs
KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSopIGZpbmFsOwotICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik+JiYpIGZpbmFs
OworICAgIHZvaWQgZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9h
ZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgdWludDY0
X3QgbGVuZ3RoKSBmaW5hbDsKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+
JiYpIGZpbmFsOworICAgIHZvaWQgZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2Fk
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmluYWw7CisgICAgdm9pZCBk
aWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBG
dW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAKICAg
ICBXZWFrT2JqQ1B0cjxpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1t
CShyZXZpc2lvbiAyMjM0MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3du
bG9hZENsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTYsNTkgKzU2LDU4IEBAIERvd25sb2Fk
Q2xpZW50OjpEb3dubG9hZENsaWVudChpZCA8X1dLRG8KICAgICBtX2RlbGVnYXRlTWV0aG9kcy5k
b3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMOildOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRTdGFydChXZWJQcm9jZXNzUG9v
bCosIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50Ojpk
aWRTdGFydChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7
CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIFtt
X2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIoKmRvd25sb2FkUHJveHkp
XTsKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQordm9pZCBEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKQot
ICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWQ6d3JhcHBlcigqZG93bmxvYWRQcm94
eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CisgICAgICAg
IFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJl
Y2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCi12b2lkIERvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgdWludDY0X3QgbGVuZ3RoKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZFJlY2VpdmVEYXRhKQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWQ6d3Jh
cHBlcigqZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6bGVuZ3RoXTsKKyAgICAgICAgW21f
ZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2
ZURhdGE6bGVuZ3RoXTsKIH0KIAotU3RyaW5nIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3Zlcndy
aXRlUGFyYW0pCit2b2lkIERvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVyd3JpdGUs
IFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dP
dmVyd3JpdGUpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAKKyAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKEFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKwogICAgIEJPT0wg
YWxsb3dPdmVyd3JpdGUgPSBOTzsKLSAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxl
Z2F0ZS5nZXQoKSBfZG93bmxvYWQ6d3JhcHBlcigqZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93
T3ZlcndyaXRlXTsKLSAgICBhbGxvd092ZXJ3cml0ZVBhcmFtID0gYWxsb3dPdmVyd3JpdGU7Ci0g
ICAgcmV0dXJuIGRlc3RpbmF0aW9uOworICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2Rl
bGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOiZhbGxv
d092ZXJ3cml0ZV07CisgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxv
d092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiB9CiAK
LXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCosIERvd25sb2Fk
UHJveHkqIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2Vi
UHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogICAgIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZpbmlzaCkKLSAgICAgICAgW21fZGVsZWdhdGUu
Z2V0KCkgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoKmRvd25sb2FkUHJveHkpXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93bmxvYWRQ
cm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQb29s
KiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGYWlsKFdlYlByb2Nlc3NQb29s
JiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmFp
bCkKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkOndyYXBwZXIoKmRvd25sb2Fk
UHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVs
ZWdhdGUuZ2V0KCkgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhF
cnJvcjplcnJvci5uc0Vycm9yKCldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRDYW5j
ZWwoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQordm9pZCBE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRD
YW5jZWwpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZERpZENhbmNlbDp3cmFw
cGVyKCpkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9h
ZERpZENhbmNlbDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENs
aWVudDo6d2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93
bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpPiYmIGNhbGxiYWNrKQordm9pZCBEb3dubG9hZENsaWVu
dDo6d2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQo
KSBfZG93bmxvYWQ6d3JhcHBlcigqZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmlu
ZygpXV07CisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdp
dGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOwogCi0gICAgY2FsbGJhY2socmVx
dWVzdCk7CisgICAgY2FsbGJhY2soV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkocmV2aXNpb24gMjIzNDA3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04OSw3ICs4OSw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKCkKICAg
ICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bv
b2wtPmRvd25sb2FkQ2xpZW50KCkucHJvY2Vzc0RpZENyYXNoKG1fcHJvY2Vzc1Bvb2wuZ2V0KCks
IHRoaXMpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkucHJvY2Vzc0RpZENy
YXNoKCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CiB9CiAKIFdlYlBhZ2VQcm94eSogRG93bmxvYWRQ
cm94eTo6b3JpZ2luYXRpbmdQYWdlKCkgY29uc3QKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIERv
d25sb2FkUHJveHk6OmRpZFN0YXJ0KGNvbnN0IFJlc291CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29s
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgp
LmRpZFN0YXJ0KG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMpOworICAgIG1fcHJvY2Vzc1Bvb2wt
PmRvd25sb2FkQ2xpZW50KCkuZGlkU3RhcnQoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKIH0KIAog
dm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTEyMSwzMyArMTIxLDE3IEBAIHZvaWQgRG93bmxvYWRQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2EKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5ID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6
Y3JlYXRlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgbV9wcm9jZXNzUG9v
bC0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0aW9uKCkpOworICAgIGF1dG8gYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6OmNyZWF0ZShh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQsIG1fcHJvY2Vzc1Bvb2wtPm5ldHdv
cmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2Fk
Q2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fcHJvY2Vzc1Bvb2wu
Z2V0KCksIHRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuZ2V0KCkpOworICAgIG1f
cHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5nZXQoKSk7CiB9CiAKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKSAmJiBVU0UoUFJPVEVDVElP
Tl9TUEFDRV9BVVRIX0NBTExCQUNLKQotdm9pZCBEb3dubG9hZFByb3h5OjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlv
blNwYWNlKQotewotICAgIGlmICghbV9wcm9jZXNzUG9vbCkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIGF1dG8qIG5ldHdvcmtQcm9jZXNzUHJveHkgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpOwotICAgIGlmICghbmV0d29ya1Byb2Nlc3NQcm94eSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgYm9vbCByZXN1bHQgPSBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoZ2V0UHRyKFdlYlByb3RlY3Rpb25T
cGFjZTo6Y3JlYXRlKHByb3RlY3Rpb25TcGFjZSkpKTsKLSAgICAKLSAgICBuZXR3b3JrUHJvY2Vz
c1Byb3h5LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRG93bmxvYWQobV9kb3dubG9hZElELCByZXN1bHQp
LCAwKTsKLX0KLSNlbmRpZgotCi12b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKK3ZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkud2lsbFNl
bmRSZXF1ZXN0KG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIHByb3Bvc2VkUmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0KSB7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBXVEZN
b3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyldKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpIHsKICAg
ICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChuZXdSZXF1ZXN0LnVybCgpKTsKIAogI2lmIFVT
RShORVRXT1JLX1NFU1NJT04pCkBAIC0xNzUsNyArMTU5LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5
OjpkaWRSZWNlaXZlUmVzcG9uc2UoYwogICAgICAgICBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gU3Ry
aW5nKCk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlk
UmVjZWl2ZVJlc3BvbnNlKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIHJlc3BvbnNlKTsKKyAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVSZXNwb25zZSgqbV9w
cm9jZXNzUG9vbCwgKnRoaXMsIHJlc3BvbnNlKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5Ojpk
aWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCkBAIC0xODMsOSArMTY3LDEwIEBAIHZvaWQg
RG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDYKICAgICBpZiAoIW1fcHJvY2Vzc1Bv
b2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50
KCkuZGlkUmVjZWl2ZURhdGEobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgbGVuZ3RoKTsKKyAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVEYXRhKCptX3Byb2Nl
c3NQb29sLCAqdGhpcywgbGVuZ3RoKTsKIH0KIAorI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQog
dm9pZCBEb3dubG9hZFByb3h5OjpzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sJiByZXN1bHQpCiB7CiAgICAgcmVzdWx0ID0gZmFsc2U7
CkBAIC0xOTMsNDAgKzE3OCwzOSBAQCB2b2lkIERvd25sb2FkUHJveHk6OnNob3VsZERlY29kZVNv
dXJjZURhCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXN1bHQgPSBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLnNob3VsZERlY29kZVNvdXJj
ZURhdGFPZk1JTUVUeXBlKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIG1pbWVUeXBlKTsKKyAg
ICByZXN1bHQgPSBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLnNob3VsZERlY29kZVNv
dXJjZURhdGFPZk1JTUVUeXBlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgbWltZVR5cGUpOwogfQor
I2VuZGlmCiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpCiB7Ci0gICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOwotICAg
IAogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIFN0
cmluZyBkZXN0aW5hdGlvbiA9IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhp
cywgc3VnZ2VzdGVkRmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLSAgICAKLSAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoIWRlc3Rp
bmF0aW9uLmlzTnVsbCgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
ZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMs
IHN1Z2dlc3RlZEZpbGVuYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBkb3dubG9hZElEID0gZG93bmxvYWRJRF0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRl
LCBTdHJpbmcgZGVzdGluYXRpb24pIHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxs
KCkpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZGVzdGluYXRp
b24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSk7CiAKLSAgICBpZiAoTmV0d29ya1Byb2Nlc3NQcm94eSogbmV0d29ya1Byb2Nlc3MgPSBt
X3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25s
b2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIGFsbG93T3ZlcndyaXRlKSwgMCk7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJv
Y2VzcyA9IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpCisgICAgICAgICAgICBuZXR3
b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVlRGVjaWRl
UGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oZG93bmxvYWRJRCwgZGVzdGluYXRpb24sIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIGFsbG93T3ZlcndyaXRlID09IEFsbG93T3ZlcndyaXRlOjpZZXMp
LCAwKTsKKyAgICB9KTsKIH0KIAogI2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQogCi12b2lkIERv
d25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFN0cmluZyYgZGVzdGlu
YXRpb24sIGJvb2wmIGFsbG93T3ZlcndyaXRlLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIFJlZjxNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKIHsKLSAg
ICBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOwotCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAg
ICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJl
Z2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3NhcnkobV9zdWdnZXN0ZWRGaWxlbmFt
ZS5pc0VtcHR5KCkgPyBmaWxlbmFtZSA6IG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1pbWVUeXBlKTsK
LSAgICBkZXN0aW5hdGlvbiA9IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhp
cywgc3VnZ2VzdGVkRmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLQotICAgIGlmICghZGVzdGlu
YXRpb24uaXNOdWxsKCkpCi0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShk
ZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCptX3Byb2Nlc3NQb29sLCAqdGhpcywg
ZmlsZW5hbWUsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dP
dmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgeworICAgICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlv
bi5pc051bGwoKSkKKyAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShk
ZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKTsKKyAgICAgICAgcmVwbHktPnNlbmQoZGVzdGluYXRpb24sIGFsbG93T3Zl
cndyaXRlID09IEFsbG93T3ZlcndyaXRlOjpZZXMsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwor
ICAgIH0pOwogfQogCiAjZW5kaWYKQEAgLTIzNiw3ICsyMjAsNyBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OmRpZENyZWF0ZURlc3RpbmF0aW9uCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZENyZWF0
ZURlc3RpbmF0aW9uKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIHBhdGgpOworICAgIG1fcHJv
Y2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24oKm1fcHJvY2Vz
c1Bvb2wsICp0aGlzLCBwYXRoKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGaW5pc2go
KQpAQCAtMjQ0LDcgKzIyOCw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmluaXNoKCkKICAg
ICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzc1Bv
b2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmluaXNoKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMp
OworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmluaXNoKCptX3Byb2Nl
c3NQb29sLCAqdGhpcyk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94
eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRG
aW5pc2hlZCh0aGlzKTsKQEAgLTI2NSw3ICsyNDksNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyCiAKICAgICBtX3Jlc3VtZURhdGEgPSBjcmVhdGVEYXRhKHJlc3Vt
ZURhdGEpOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGYWlsKG1f
cHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIGVycm9yKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3du
bG9hZENsaWVudCgpLmRpZEZhaWwoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBlcnJvcik7CiAKICAg
ICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRl
ZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCh0aGlzKTsKQEAgLTI3
NSw3ICsyNTksNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZENhbmNlbChjb25zdCBJUEM6CiB7
CiAgICAgbV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fcHJv
Y2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKG1fcHJvY2Vzc1Bvb2wuZ2V0KCks
IHRoaXMpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ2FuY2VsKCpt
X3Byb2Nlc3NQb29sLCAqdGhpcyk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxv
YWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93
bmxvYWRGaW5pc2hlZCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkocmV2aXNpb24gMjIzNDA3KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsMTIgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBEb3dubG9hZFByb3h5X2gKLSNkZWZpbmUgRG93bmxvYWRQcm94eV9o
CisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCisjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTk3
LDEzICs5Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRp
ZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCBkaWRDYW5jZWwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhKTsKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0jaWYgVVNFKE5FVFdPUktfU0VTU0lP
TikKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZvaWQgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBXZWJDb3JlOjpQcm90ZWN0
aW9uU3BhY2UmKTsKLSNlbmRpZgotI2Vsc2UKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIFN0cmluZyYgZGVzdGluYXRpb24sIGJvb2wmIGFsbG93T3ZlcndyaXRlLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Cisj
aWYgIVVTRShORVRXT1JLX1NFU1NJT04pCisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBSZWY8TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lOjpEZWxheWVkUmVwbHk+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERvd25sb2FkSUQsIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwogCkBAIC0xMjEsNSArMTE3LDMgQEAgcHJp
dmF0ZToKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gRG93bmxvYWRQ
cm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIzNDA3KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI0LDE4ICsyNCwxMyBAQCBtZXNzYWdlcyAtPiBEb3dubG9h
ZFByb3h5IHsKICAgICBEaWRTdGFydChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
QXRvbWljU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIERpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2Us
IHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogICAgIFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVkaXJlY3RSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UpKQotI2lmIFVTRShORVRXT1JLX1NFU1NJT04pCi0jaWYgVVNFKFBST1RF
Q1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICBDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSBwcm90ZWN0aW9uU3BhY2UpCi0j
ZW5kaWYKLSNlbmRpZgogICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
QXN5bmMoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSkKIAogICAgIERpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlKQogICAgIERpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGxlbmd0aCkKLSAgICBTaG91
bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHJl
c3VsdCkKICNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKLSAgICBEZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBtaW1lVHlwZSkgLT4g
KFN0cmluZyBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092ZXJ3cml0ZSwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBTaG91bGREZWNv
ZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZShTdHJpbmcgbWltZVR5cGUpIC0+IChib29sIHJlc3VsdCkK
KyAgICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShTdHJpbmcgZmlsZW5h
bWUsIFN0cmluZyBtaW1lVHlwZSkgLT4gKFN0cmluZyBkZXN0aW5hdGlvbiwgYm9vbCBhbGxvd092
ZXJ3cml0ZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkgRGVsYXllZAogI2VuZGlmCiAgICAgRGlkQ3JlYXRlRGVzdGluYXRpb24oU3RyaW5n
IHBhdGgpCiAgICAgRGlkRmluaXNoKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324305</attachid>
            <date>2017-10-19 15:46:40 -0700</date>
            <delta_ts>2017-10-19 16:43:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178547-20171019154639.patch</filename>
            <type>text/plain</type>
            <size>47885</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE3LTEwLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEFQ
STo6RG93bmxvYWRDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODU0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBtb3JlIEMrKyByZWZlcmVuY2VzIGluc3RlYWQgb2YgcG9pbnRlcnMgYmVj
YXVzZSB0aGV5J3JlIG5ldmVyIG51bGwuCisKKyAgICAgICAgUmVtb3ZlIGNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UgYmVjYXVzZSB0aGVyZSBhcmUgbm8gaW1wbGVtZW50YXRp
b25zCisgICAgICAgIGV4Y2VwdCB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiB3aGljaCBhbHdh
eXMgcmV0dXJucyB0cnVlIGFuZCB3ZSBkb24ndCBpbnRlbmQgdG8KKyAgICAgICAgYWRkIHRoaXMg
dG8gdGhlIFNQSSBiZWNhdXNlIHRoYXQncyBqdXN0IGEgbGVnYWN5IGNhbGwgYW55d2F5cyBmcm9t
IHdoZW4gTlNVUkxDb25uZWN0aW9uCisgICAgICAgIGhhZG4ndCBmdWxseSBldm9sdmVkLCBhbmQg
d2UncmUgbW92aW5nIGF3YXkgZnJvbSBOU1VSTENvbm5lY3Rpb24sIGVzcGVjaWFsbHkgaW4gb3Vy
IEFQSSBkZXNpZ24uCisKKyAgICAgICAgU2VwYXJhdGUgdGhlIE5ldHdvcmtTZXNzaW9uLW9ubHkg
YW5kIHByZS1OZXR3b3JrU2Vzc2lvbi1vbmx5IGNhbGxiYWNrcy4gIEFsbCB0aGUgc3luY2hyb25v
dXMKKyAgICAgICAgSVBDIG1lc3NhZ2VzIGFyZSBvbmx5IHVzZWQgaW4gdGhlIHByZS1OZXR3b3Jr
U2Vzc2lvbiBjb2RlLCBzbyBvbmNlIHdlIHJlbW92ZSBpdCB3ZSBjYW4gcmVtb3ZlIHRoZW0hCisK
KyAgICAgICAgTWFrZSBBUEk6OkRvd25sb2FkQ2xpZW50IGNhbGxzIHRoYXQgTmV0d29ya1Nlc3Np
b24gdXNlcyB1c2UgYSBjb21wbGV0aW9uIGhhbmRsZXIgc28gd2Ugd2lsbCBiZSBhYmxlIHRvCisg
ICAgICAgIGRlc2lnbiBhbiBhc3luY2hyb25vdXMgQVBJLgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6Y2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKToKKyAgICAgICAgKFdlYktpdDo6UGVu
ZGluZ0Rvd25sb2FkOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0
ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VEb3dubG9hZCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6
CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAg
ICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZENy
ZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlz
aCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQ
STo6RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xp
ZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50
OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbCk6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZENyZWF0
ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmluaXNo
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZENhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UpOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjoKKwogMjAx
Ny0xMC0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIFNlcnZpY2VXb3JrZXIgSGFuZGxlIEZldGNoCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAko
cmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0OCwxMyArNTQ4LDYgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6Y29udGludWVDYW5BdXRoZW50aQogI2VuZGlmCiAKICNpZiBVU0UoTkVUV09S
S19TRVNTSU9OKQotI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2VEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRl
KQotewotICAgIGRvd25sb2FkTWFuYWdlcigpLmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShkb3dubG9hZElELCBjYW5BdXRoZW50aWNhdGUpOwotfQotI2VuZGlm
Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAg
ICBkb3dubG9hZE1hbmFnZXIoKS5jb250aW51ZVdpbGxTZW5kUmVxdWVzdChkb3dubG9hZElELCBX
VEZNb3ZlKHJlcXVlc3QpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgJKHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDkgKzIw
Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgYm9vbCBjYW5B
dXRoZW50aWNhdGUpOwogI2VuZGlmCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZvaWQgY29udGludWVDYW5BdXRo
ZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRG93bmxvYWQoRG93bmxvYWRJRCwgYm9vbCBj
YW5BdXRoZW50aWNhdGUpOwotI2VuZGlmCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVz
dChEb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAjZW5kaWYKICAgICB2
b2lkIGNvbnRpbnVlRGVjaWRlUGVuZGluZ0Rvd25sb2FkRGVzdGluYXRpb24oRG93bmxvYWRJRCwg
U3RyaW5nIGRlc3RpbmF0aW9uLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIGJvb2wgYWxsb3dPdmVyd3JpdGUpOwpJbmRleDogU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01MSw5ICs1MSw2IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmUKICAgICBDb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UodWludDY0X3QgbG9hZGVySUQsIGJv
b2wgY2FuQXV0aGVudGljYXRlKQogI2VuZGlmCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNp
ZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIENvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZURvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKLSNlbmRpZgogICAgIENvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkKICNlbmRpZgogICAgIENvbnRpbnVlRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkRGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFN0cmlu
ZyBkZXN0aW5hdGlvbiwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcAkocmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMjEgKzg2
LDYgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRhdGFUYXNrQmVjYW1lRG93bgogICAgIG1fZG93
bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiB9CiAKLSNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNv
bnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShEb3dubG9hZElEIGRv
d25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQotewotICAgIGlmIChhdXRvKiBwZW5kaW5n
RG93bmxvYWQgPSBtX3BlbmRpbmdEb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKSB7Ci0gICAgICAg
IHBlbmRpbmdEb3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KGF1dG8qIGRvd25sb2FkID0gbV9kb3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpKSB7Ci0gICAgICAg
IGRvd25sb2FkLT5jb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
Y2FuQXV0aGVudGljYXRlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLX0KLSNlbmRpZgotCiB2b2lkIERvd25sb2FkTWFuYWdlcjo6Y29udGludWVX
aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQogewogICAgIGF1dG8qIHBlbmRpbmdEb3dubG9hZCA9IG1fcGVuZGlu
Z0Rvd25sb2Fkcy5nZXQoZG93bmxvYWRJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAkocmV2aXNp
b24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIERvd25sb2FkTWFuYWdl
cl9oCi0jZGVmaW5lIERvd25sb2FkTWFuYWdlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKQEAgLTgxLDkgKzgw
LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnREb3dubG9hZChOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyosIFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwogI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pCiAgICAgdm9pZCBkYXRhVGFza0JlY2FtZURvd25sb2FkVGFz
ayhEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYpOwotI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNh
dGUpOwotI2VuZGlmCiAgICAgdm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChEb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgdm9pZCB3aWxsRGVjaWRlUGVuZGlu
Z0Rvd25sb2FkRGVzdGluYXRpb24oTmV0d29ya0RhdGFUYXNrJiwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmKTsKICNlbmRpZgpAQCAtMTE3LDUgKzExMywzIEBAIHByaXZhdGU6CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIERvd25sb2FkTWFuYWdlcl9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L1BlbmRpbmdEb3dubG9hZC5jcHAJKHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDEyICs3Nyw3IEBAIHZvaWQgUGVuZGluZ0Rvd25sb2FkOjpjYW5jZWwoKQogI2lm
IFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCiB2b2lkIFBlbmRpbmdEb3dubG9h
ZDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUFzeW5jKGNvbnN0IFdlYkNv
cmU6OlByb3RlY3Rpb25TcGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OkRvd25sb2FkUHJveHk6OkNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
cHJvdGVjdGlvblNwYWNlKSk7Ci19Ci0KLXZvaWQgUGVuZGluZ0Rvd25sb2FkOjpjb250aW51ZUNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNhdGUp
Ci17Ci0gICAgbV9uZXR3b3JrTG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGNhbkF1dGhlbnRpY2F0ZSk7CisgICAgbV9uZXR3b3JrTG9hZC0+Y29udGlu
dWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHRydWUpOwogfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdE
b3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5oCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksOSArNDksNiBAQCBwdWJsaWM6CiAgICAgUGVuZGluZ0Rvd25sb2FkKHN0ZDo6
dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAg
dm9pZCBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
Ci0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2b2lkIGNvbnRp
bnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShib29sIGNhbkF1dGhlbnRp
Y2F0ZSk7Ci0jZW5kaWYKICAgICB2b2lkIGNhbmNlbCgpOwogCiBwcml2YXRlOiAgICAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCShy
ZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQVBJRG93bmxvYWRDbGllbnRf
aAotI2RlZmluZSBBUElEb3dubG9hZENsaWVudF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
PHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDAs
NiArMzksNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OwogY2xhc3MgRG93
bmxvYWRQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQb29sOwogY2xhc3MgV2ViUHJvdGVjdGlvblNw
YWNlOworZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsKIH0KIAogbmFtZXNw
YWNlIEFQSSB7CkBAIC00OCwyMSArNDgsMjAgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94
eSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxv
YWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6
RG93bmxvYWRQcm94eSosIHVpbnQ2NF90KSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6
RG93bmxvYWRQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0
IFdURjo6U3RyaW5nJiwgYm9vbCYpIHsgcmV0dXJuIHsgfTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktp
dDo6RG93bmxvYWRQcm94eSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSopIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYktp
dDo6V2ViUHJvdGVjdGlvblNwYWNlKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxv
YWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhyZXF1ZXN0KTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OldlYlByb2Nlc3NQb29s
JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QpIHsgfQorI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRh
T2ZNSU1FVHlwZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKyAgICB2aXJ0
dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24o
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQotCi0jZW5kaWYgLy8gQVBJRG93bmxvYWRD
bGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTAxICsxNzIsMTA0IEBAIHZvaWQg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXgKICAgICAgICAgICAgIGluaXRpYWxp
emUoY2xpZW50KTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGlkU3Rh
cnQoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KHRvQVBJKHByb2Nlc3NQb29sKSwg
dG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAg
ICAgICBtX2NsaWVudC5kaWRTdGFydCh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCog
cHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpIG92ZXJyaWRlCisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSkgZmluYWwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodG9BUEkocHJvY2Vzc1Bv
b2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9B
UEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJv
eHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBvdmVy
cmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSh0b0FQSShwcm9jZXNzUG9vbCksIHRv
QVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9u
c2UpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxv
YWRQcm94eSksIHRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKHByb2Nlc3NQ
b29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKCZwcm9jZXNz
UG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRh
T2ZNSU1FVHlwZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlCisjaWYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCisgICAgICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlN
RVR5cGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgICByZXR1cm4gbV9jbGllbnQu
c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUodG9BUEkocHJvY2Vzc1Bvb2wpLCB0b0FQ
SShkb3dubG9hZFByb3h5KSwgdG9BUEkobWltZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94
eSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgIH0KKyNlbmRpZgogCi0gICAgICAgIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJv
eHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3Zl
cndyaXRlKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQWxsb3dPdmVyd3JpdGU6Ok5vLCB7
IH0pOwogCi0gICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb24o
QWRvcHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
dG9BUEkocHJvY2Vzc1Bvb2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUu
aW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLSAg
ICAgICAgICAgIHJldHVybiB0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgICAg
ICAgICBib29sIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7CisgICAgICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb24oQWRvcHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRv
d25sb2FkUHJveHkpLCB0b0FQSShmaWxlbmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbykpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
YWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5v
LCB0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERv
d25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGUK
KyAgICAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkg
ZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0
aW5hdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQ
cm94eSksIHRvQVBJKHBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRvQVBJKCZwcm9jZXNzUG9v
bCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgdG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGaW5pc2goV2Vi
UHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KSBv
dmVycmlkZQorICAgICAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9B
UEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAg
ICBtX2NsaWVudC5kaWRGaW5pc2godG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSog
ZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsKHRvQVBJKHByb2Nlc3NQ
b29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKGVycm9yKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwodG9BUEkoJnByb2Nlc3NQ
b29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShlcnJvciksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgZGlkQ2FuY2Vs
KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94
eSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENhbmNlbCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENhbmNlbCh0b0FQSShw
cm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKHRvQVBJKCZwcm9jZXNzUG9vbCks
IHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQor
ICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKHRv
QVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBy
b2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgY2FsbGJhY2spIG92ZXJyaWRl
CisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGll
bnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCh0b0FQSShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2Fk
UHJveHkpLCB0b1VSTFJlZihyZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0KHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwg
dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogCi0gICAgICAgICAgICBjYWxsYmFjayhyZXF1ZXN0KTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICB9CiAKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcAkocmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwx
NSArNDAsMTUgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZFN0YXJ0
KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUK
KyAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoZG93bmxvYWRQ
cm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3
ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKG1fd2ViQ29udGV4dCwgZG93bmxvYWQuZ2V0
KCkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIG92ZXJyaWRlCisg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEdS
ZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3Jl
YXRlRG93bmxvYWQoZG93bmxvYWRQcm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxv
YWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25s
b2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9h
ZC5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTU3LDkgKzU3LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh3ZWJWaWV3LCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CiAgICAgfQogCi0gICAgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiBkb3dubG9h
ZFByb3h5LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlKSBvdmVycmlk
ZQorICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNw
b25zZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoZG93bmxvYWRQcm94
eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAo
d2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTY3LDI3ICs2NywyOSBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3du
bG9hZFNldFJlc3BvbnNlKGRvd25sb2FkLmdldCgpLCByZXNwb25zZS5nZXQoKSk7CiAgICAgfQog
Ci0gICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
dWludDY0X3QgbGVuZ3RoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXRE
b3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChk
b3dubG9hZFByb3h5KTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAg
ICAgICAgIHdlYmtpdERvd25sb2FkTm90aWZ5UHJvZ3Jlc3MoZG93bmxvYWQuZ2V0KCksIGxlbmd0
aCk7CiAgICAgfQogCi0gICAgU3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGUpIG92ZXJyaWRlCisgICAg
dm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEZ1bmN0aW9uPHZvaWQoQWxsb3dPdmVy
d3JpdGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCiAgICAgewotICAg
ICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRH
ZXRPckNyZWF0ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOwotICAgICAgICByZXR1cm4gd2Via2l0
RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZC5n
ZXQoKSwgZmlsZW5hbWUudXRmOCgpLCBhbGxvd092ZXJ3cml0ZSk7CisgICAgICAgIEdSZWZQdHI8
V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93
bmxvYWQoJmRvd25sb2FkUHJveHkpOworICAgICAgICBib29sIGFsbG93T3ZlcndyaXRlID0gZmFs
c2U7CisgICAgICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHdlYmtpdERvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxvYWQuZ2V0KCksIGZpbGVuYW1lLnV0
ZjgoKSwgYWxsb3dPdmVyd3JpdGUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092
ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3Rp
bmF0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nl
c3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRo
KSBvdmVycmlkZQorICAgIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIHBhdGgpIG92ZXJy
aWRlCiAgICAgewotICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdl
YmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOworICAgICAg
ICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRP
ckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRE
ZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxvYWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAotICAgIHZv
aWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHks
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbChX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXRE
b3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChk
b3dubG9hZFByb3h5KTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQg
PSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAg
ICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdldCgpKSkgewog
ICAgICAgICAgICAgLy8gQ2FuY2VsbGF0aW9uIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBvdGhlciBl
cnJvcnMuCiAgICAgICAgICAgICB3ZWJraXREb3dubG9hZENhbmNlbGxlZChkb3dubG9hZC5nZXQo
KSk7CkBAIC05NiwxNiArOTgsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0V2ViQ29udGV4
dFJlbW92ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkQ2Fu
Y2VsKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkgb3ZlcnJp
ZGUKKyAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBHUmVmUHRyPFdlYktpdERvd25s
b2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKGRvd25s
b2FkUHJveHkpOworICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdl
YmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAg
ICAgd2Via2l0RG93bmxvYWRDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpOwogICAgICAgICB3ZWJr
aXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoZG93bmxvYWRQcm94eSk7CiAgICAgfQogCi0gICAg
dm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5KSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEdSZWZQdHI8
V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93
bmxvYWQoZG93bmxvYWRQcm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZEZpbmlzaGVkKGRvd25sb2FkLmdldCgpKTsKICAg
ICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGll
bnQuaAkocmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
RG93bmxvYWRDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsMjEgKzQxLDIxIEBAIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewotICAgIAorCiBjbGFz
cyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChpZCA8X1dLRG93bmxvYWREZWxlZ2F0
ZT4pOwogICAgIAogcHJpdmF0ZToKICAgICAvLyBGcm9tIEFQSTo6RG93bmxvYWRDbGllbnQKLSAg
ICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSopIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSBmaW5hbDsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSosIHVpbnQ2NF90IGxl
bmd0aCkgZmluYWw7Ci0gICAgU3RyaW5nIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSosIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlUGFyYW0pIGZpbmFsOwotICAgIHZvaWQgZGlkRmlu
aXNoKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSopIGZpbmFsOwotICAgIHZvaWQgZGlk
RmFpbChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgZmluYWw7Ci0gICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wqLCBE
b3dubG9hZFByb3h5KikgZmluYWw7Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vz
c1Bvb2wqLCBEb3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJikgZmluYWw7CisgICAgdm9pZCBkaWRTdGFy
dChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCB1aW50NjRfdCBsZW5ndGgpIGZpbmFsOwor
ICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vz
c1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
RnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CisgICAgdm9p
ZCBkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAg
dm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNz
UG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIEZ1bmN0aW9uPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKSBmaW5hbDsKIAogICAgIFdlYWtPYmpDUHRyPGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlPj4gbV9kZWxlZ2F0ZTsKIApJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW0JKHJldmlzaW9uIDIyMzcxOCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xpZW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw1OSArNTYsNTggQEAgRG93bmxvYWRDbGllbnQ6OkRvd25sb2FkQ2xp
ZW50KGlkIDxfV0tEbwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KV07CiB9CiAKLXZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSog
ZG93bmxvYWRQcm94eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2Rv
d25sb2FkRGlkU3RhcnQ6d3JhcHBlcigqZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxl
Z2F0ZS5nZXQoKSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKIH0K
IAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29s
KiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIFttX2RlbGVnYXRl
LmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKCpkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9u
c2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkg
X2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3Bv
bnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgdWlu
dDY0X3QgbGVuZ3RoKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgp
CiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEpCi0g
ICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKCpkb3dubG9hZFByb3h5
KSBkaWRSZWNlaXZlRGF0YTpsZW5ndGhdOworICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpsZW5ndGhdOwogfQog
Ci1TdHJpbmcgRG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYgYWxsb3dPdmVyd3JpdGVQYXJhbSkKK3ZvaWQgRG93
bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYlBy
b2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSkKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIAorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworCiAgICAgQk9PTCBhbGxvd092ZXJ3cml0ZSA9IE5P
OwotICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9h
ZDp3cmFwcGVyKCpkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOwotICAgIGFs
bG93T3ZlcndyaXRlUGFyYW0gPSBhbGxvd092ZXJ3cml0ZTsKLSAgICByZXR1cm4gZGVzdGluYXRp
b247CisgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUuZ2V0KCkgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICBj
b21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBB
bGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVu
dDo6ZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94
eSkKK3ZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkRmluaXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWREaWRG
aW5pc2g6d3JhcHBlcigqZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQo
KSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiBk
b3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAg
ICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGYWlsKQotICAgICAgICBbbV9kZWxl
Z2F0ZS5nZXQoKSBfZG93bmxvYWQ6d3JhcHBlcigqZG93bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhF
cnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3Io
KV07CiB9CiAKLXZvaWQgRG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCos
IERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHkpCit2b2lkIERvd25sb2FkQ2xpZW50OjpkaWRD
YW5jZWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewog
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgW21f
ZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoKmRvd25sb2FkUHJveHkp
XTsKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIo
ZG93bmxvYWRQcm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVl
c3QoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik+JiYgY2FsbGJhY2spCit2b2lkIERvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3Qo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2sp
CiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVy
KCpkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dl
Yl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsKKyAgICAgICAgW21f
ZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0
LnVybCgpLnN0cmluZygpXV07CiAKLSAgICBjYWxsYmFjayhyZXF1ZXN0KTsKKyAgICBjYWxsYmFj
ayhXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9p
ZCBEb3dubG9hZFByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoKQogICAgIGlmICghbV9wcm9jZXNzUG9v
bCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5wcm9jZXNzRGlkQ3Jhc2gobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcyk7CisgICAgbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5wcm9jZXNzRGlkQ3Jhc2goKm1fcHJvY2Vzc1Bvb2ws
ICp0aGlzKTsKIH0KIAogV2ViUGFnZVByb3h5KiBEb3dubG9hZFByb3h5OjpvcmlnaW5hdGluZ1Bh
Z2UoKSBjb25zdApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3Rh
cnQoY29uc3QgUmVzb3UKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkU3RhcnQobV9wcm9jZXNz
UG9vbC5nZXQoKSwgdGhpcyk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5k
aWRTdGFydCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpA
QCAtMTIxLDMzICsxMjEsMTcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVm
UHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBtX3Byb2Nlc3NQb29sLT5uZXR3b3JraW5nUHJvY2Vz
c0Nvbm5lY3Rpb24oKSk7CisgICAgYXV0byBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5ID0g
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRlKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBjaGFsbGVuZ2VJRCwgbV9wcm9jZXNzUG9vbC0+bmV0d29ya2luZ1Byb2Nlc3NDb25uZWN0
aW9uKCkpOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5nZXQoKSk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxv
YWRDbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKm1fcHJvY2Vzc1Bv
b2wsICp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKIH0KIAotI2lm
IFVTRShORVRXT1JLX1NFU1NJT04pICYmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJB
Q0spCi12b2lkIERvd25sb2FkUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCi17Ci0gICAgaWYg
KCFtX3Byb2Nlc3NQb29sKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byogbmV0d29y
a1Byb2Nlc3NQcm94eSA9IG1fcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgaWYg
KCFuZXR3b3JrUHJvY2Vzc1Byb3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIHJlc3Vs
dCA9IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShnZXRQdHIoV2ViUHJvdGVjdGlvblNwYWNlOjpjcmVhdGUocHJvdGVj
dGlvblNwYWNlKSkpOwotICAgIAotICAgIG5ldHdvcmtQcm9jZXNzUHJveHktPnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0
aW9uU3BhY2VEb3dubG9hZChtX2Rvd25sb2FkSUQsIHJlc3VsdCksIDApOwotfQotI2VuZGlmCi0K
LXZvaWQgRG93bmxvYWRQcm94eTo6d2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKQordm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcHJvcG9zZWRSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3Bv
bnNlKQogewogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS53aWxsU2VuZFJlcXVlc3QobV9wcm9jZXNz
UG9vbC5nZXQoKSwgdGhpcywgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IG5ld1JlcXVlc3QpIHsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxT
ZW5kUmVxdWVzdCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0
KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0oUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgewogICAgICAgICBtX3JlZGlyZWN0Q2hh
aW4uYXBwZW5kKG5ld1JlcXVlc3QudXJsKCkpOwogCiAjaWYgVVNFKE5FVFdPUktfU0VTU0lPTikK
QEAgLTE3NSw3ICsxNTksNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVSZXNwb25z
ZShjCiAgICAgICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBTdHJpbmcoKTsKICNlbmRpZgogCi0g
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UobV9w
cm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgcmVzcG9uc2UpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRv
d25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZVJlc3BvbnNlKCptX3Byb2Nlc3NQb29sLCAqdGhpcywg
cmVzcG9uc2UpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IGxlbmd0aCkKQEAgLTE4Myw5ICsxNjcsMTAgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRS
ZWNlaXZlRGF0YSh1aW50NgogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSht
X3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCBsZW5ndGgpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRv
d25sb2FkQ2xpZW50KCkuZGlkUmVjZWl2ZURhdGEoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBsZW5n
dGgpOwogfQogCisjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiB2b2lkIERvd25sb2FkUHJveHk6
OnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IGJvb2wmIHJlc3VsdCkKIHsKICAgICByZXN1bHQgPSBmYWxzZTsKQEAgLTE5Myw0MCArMTc4LDM5
IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6c2hvdWxkRGVjb2RlU291cmNlRGEKICAgICBpZiAoIW1f
cHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIHJlc3VsdCA9IG1fcHJvY2Vzc1Bv
b2wtPmRvd25sb2FkQ2xpZW50KCkuc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUobV9w
cm9jZXNzUG9vbC5nZXQoKSwgdGhpcywgbWltZVR5cGUpOworICAgIHJlc3VsdCA9IG1fcHJvY2Vz
c1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUo
Km1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBtaW1lVHlwZSk7CiB9CisjZW5kaWYKIAogdm9pZCBEb3du
bG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFzeW5jKERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkKIHsK
LSAgICBib29sIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7Ci0gICAgCiAgICAgaWYgKCFtX3Byb2Nl
c3NQb29sKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgU3RyaW5nIGRlc3RpbmF0aW9uID0g
bV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCBzdWdnZXN0ZWRGaWxlbmFt
ZSwgYWxsb3dPdmVyd3JpdGUpOwotICAgIAotICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCi0g
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAg
ICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgc3VnZ2VzdGVkRmlsZW5hbWUs
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGRvd25sb2FkSUQgPSBkb3du
bG9hZElEXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5hdGlv
bikgeworICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhh
bmRsZTsKKyAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKKyAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lv
bjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIGlmIChO
ZXR3b3JrUHJvY2Vzc1Byb3h5KiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzc1Bvb2wtPm5ldHdv
cmtQcm9jZXNzKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6Q29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihkb3du
bG9hZElELCBkZXN0aW5hdGlvbiwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgYWxsb3dPdmVyd3Jp
dGUpLCAwKTsKKyAgICAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzUG9v
bC0+bmV0d29ya1Byb2Nlc3MoKSkKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0
aW5hdGlvbihkb3dubG9hZElELCBkZXN0aW5hdGlvbiwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
YWxsb3dPdmVyd3JpdGUgPT0gQWxsb3dPdmVyd3JpdGU6OlllcyksIDApOworICAgIH0pOwogfQog
CiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCiAKLXZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU3RyaW5nJiBkZXN0aW5hdGlvbiwgYm9vbCYgYWxsb3dP
dmVyd3JpdGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKK3ZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgUmVm
PE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQogewotICAgIGFsbG93T3ZlcndyaXRlID0g
ZmFsc2U7Ci0KICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVF
eHRlbnNpb25JZk5lY2Vzc2FyeShtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSA/IGZpbGVu
YW1lIDogbV9zdWdnZXN0ZWRGaWxlbmFtZSwgbWltZVR5cGUpOwotICAgIGRlc3RpbmF0aW9uID0g
bV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCBzdWdnZXN0ZWRGaWxlbmFt
ZSwgYWxsb3dPdmVyd3JpdGUpOwotCi0gICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKLSAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAg
IG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoKm1fcHJvY2Vzc1Bvb2wsICp0aGlzLCBmaWxlbmFtZSwgW3JlcGx5ID0g
V1RGTW92ZShyZXBseSldIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRl
c3RpbmF0aW9uKSB7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOworICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQorICAgICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5kYm94
RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOworICAg
ICAgICByZXBseS0+c2VuZChkZXN0aW5hdGlvbiwgYWxsb3dPdmVyd3JpdGUgPT0gQWxsb3dPdmVy
d3JpdGU6Olllcywgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgfSk7CiB9CiAKICNlbmRp
ZgpAQCAtMjM2LDcgKzIyMCw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVzdGlu
YXRpb24KICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9wcm9j
ZXNzUG9vbC5nZXQoKSwgdGhpcywgcGF0aCk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRD
bGllbnQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbigqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIHBhdGgp
OwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZpbmlzaCgpCkBAIC0yNDQsNyArMjI4LDcg
QEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRGaW5pc2goKQogICAgIGlmICghbV9wcm9jZXNzUG9v
bCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRGaW5pc2gobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcyk7CisgICAgbV9wcm9jZXNzUG9v
bC0+ZG93bmxvYWRDbGllbnQoKS5kaWRGaW5pc2goKm1fcHJvY2Vzc1Bvb2wsICp0aGlzKTsKIAog
ICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBkZWxl
dGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKHRoaXMpOwpAQCAt
MjY1LDcgKzI0OSw3IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXIK
IAogICAgIG1fcmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3By
b2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZhaWwobV9wcm9jZXNzUG9vbC5nZXQoKSwg
dGhpcywgZXJyb3IpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmFp
bCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGVycm9yKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNl
IHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQ
cm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKHRoaXMpOwpAQCAtMjc1LDcgKzI1OSw3IEBAIHZvaWQg
RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKGNvbnN0IElQQzoKIHsKICAgICBtX3Jlc3VtZURhdGEg
PSBjcmVhdGVEYXRhKHJlc3VtZURhdGEpOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRD
bGllbnQoKS5kaWRDYW5jZWwobV9wcm9jZXNzUG9vbC5nZXQoKSwgdGhpcyk7CisgICAgbV9wcm9j
ZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRDYW5jZWwoKm1fcHJvY2Vzc1Bvb2wsICp0aGlz
KTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBi
ZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKHRoaXMp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5oCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTIg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIERv
d25sb2FkUHJveHlfaAotI2RlZmluZSBEb3dubG9hZFByb3h5X2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUg
IkRvd25sb2FkSUQuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtOTcsMTMgKzk3LDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsK
ICAgICB2b2lkIGRpZENhbmNlbChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEp
OwotICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRp
cmVjdFJlc3BvbnNlKTsKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotI2lmIFVTRShQUk9URUNU
SU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYpOwotI2VuZGlm
Ci0jZWxzZQotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU3RyaW5nJiBk
ZXN0aW5hdGlvbiwgYm9vbCYgYWxsb3dPdmVyd3JpdGUsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKKyNpZiAhVVNFKE5FVFdPUktfU0VT
U0lPTikKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFJlZjxNZXNzYWdl
czo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
OkRlbGF5ZWRSZXBseT4mJik7CiAjZW5kaWYKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSk7CiAKQEAgLTEyMSw1ICsxMTcsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBEb3dubG9hZFByb3h5X2gKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjQsMTggKzI0LDEzIEBAIG1lc3NhZ2VzIC0+IERvd25sb2FkUHJveHkgewogICAgIERpZFN0
YXJ0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBBdG9taWNTdHJpbmcgc3VnZ2Vz
dGVkRmlsZW5hbWUpCiAgICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdl
SUQpCiAgICAgV2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZWRpcmVj
dFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSkpCi0j
aWYgVVNFKE5FVFdPUktfU0VTU0lPTikKLSNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NB
TExCQUNLKQotICAgIENhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoV2ViQ29y
ZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSkKLSNlbmRpZgotI2VuZGlmCiAgICAg
RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogCiAgICAgRGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAgICAgRGlk
UmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQotICAgIFNob3VsZERlY29kZVNvdXJjZURhdGFP
Zk1JTUVUeXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgcmVzdWx0KQogI2lmICFVU0UoTkVU
V09SS19TRVNTSU9OKQotICAgIERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIG1pbWVUeXBlKSAtPiAoU3RyaW5nIGRlc3RpbmF0aW9u
LCBib29sIGFsbG93T3ZlcndyaXRlLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVU
eXBlKFN0cmluZyBtaW1lVHlwZSkgLT4gKGJvb2wgcmVzdWx0KQorICAgIERlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFN0cmluZyBmaWxlbmFtZSwgU3RyaW5nIG1pbWVUeXBl
KSAtPiAoU3RyaW5nIGRlc3RpbmF0aW9uLCBib29sIGFsbG93T3ZlcndyaXRlLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSBEZWxheWVkCiAj
ZW5kaWYKICAgICBEaWRDcmVhdGVEZXN0aW5hdGlvbihTdHJpbmcgcGF0aCkKICAgICBEaWRGaW5p
c2goKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>324314</attachid>
            <date>2017-10-19 16:43:05 -0700</date>
            <delta_ts>2017-10-19 16:45:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178547-20171019164304.patch</filename>
            <type>text/plain</type>
            <size>51781</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBACisyMDE3LTEwLTE5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEFQ
STo6RG93bmxvYWRDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3ODU0NworCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAg
ICAgICAgVXNlIG1vcmUgQysrIHJlZmVyZW5jZXMgaW5zdGVhZCBvZiBwb2ludGVycyBiZWNhdXNl
IHRoZXkncmUgbmV2ZXIgbnVsbC4KKworICAgICAgICBSZW1vdmUgY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZSBiZWNhdXNlIHRoZXJlIGFyZSBubyBpbXBsZW1lbnRhdGlvbnMK
KyAgICAgICAgZXhjZXB0IHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHdoaWNoIGFsd2F5cyBy
ZXR1cm5zIHRydWUgYW5kIHdlIGRvbid0IGludGVuZCB0bworICAgICAgICBhZGQgdGhpcyB0byB0
aGUgU1BJIGJlY2F1c2UgdGhhdCdzIGp1c3QgYSBsZWdhY3kgY2FsbCBhbnl3YXlzIGZyb20gd2hl
biBOU1VSTENvbm5lY3Rpb24KKyAgICAgICAgaGFkbid0IGZ1bGx5IGV2b2x2ZWQsIGFuZCB3ZSdy
ZSBtb3ZpbmcgYXdheSBmcm9tIE5TVVJMQ29ubmVjdGlvbiwgZXNwZWNpYWxseSBpbiBvdXIgQVBJ
IGRlc2lnbi4KKworICAgICAgICBTZXBhcmF0ZSB0aGUgTmV0d29ya1Nlc3Npb24tb25seSBhbmQg
cHJlLU5ldHdvcmtTZXNzaW9uLW9ubHkgY2FsbGJhY2tzLiAgQWxsIHRoZSBzeW5jaHJvbm91cwor
ICAgICAgICBJUEMgbWVzc2FnZXMgYXJlIG9ubHkgdXNlZCBpbiB0aGUgcHJlLU5ldHdvcmtTZXNz
aW9uIGNvZGUsIHNvIG9uY2Ugd2UgcmVtb3ZlIGl0IHdlIGNhbiByZW1vdmUgdGhlbSEKKworICAg
ICAgICBNYWtlIEFQSTo6RG93bmxvYWRDbGllbnQgY2FsbHMgdGhhdCBOZXR3b3JrU2Vzc2lvbiB1
c2VzIHVzZSBhIGNvbXBsZXRpb24gaGFuZGxlciBzbyB3ZSB3aWxsIGJlIGFibGUgdG8KKyAgICAg
ICAgZGVzaWduIGFuIGFzeW5jaHJvbm91cyBBUEkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxv
YWRNYW5hZ2VyOjpjb250aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Up
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1h
bmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25s
b2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGVuZGluZ0Rvd25sb2FkOjpjYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlQXN5bmMpOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5n
RG93bmxvYWQ6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6
IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3du
bG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZURvd25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KToKKyAg
ICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAg
ICAoQVBJOjpEb3dubG9hZENsaWVudDo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUp
OgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24pOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToK
KyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoQVBJOjpE
b3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6
OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojp3aWxsU2Vu
ZFJlcXVlc3QpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvRG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50OjpkaWRTdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9h
ZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRp
ZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGlkQ2FuY2VsKToKKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6cHJvY2Vzc0RpZENsb3NlKToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFBy
b3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5
OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNob3Vs
ZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkQ3JlYXRlRGVz
dGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGaW5pc2gpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktp
dDo6RG93bmxvYWRQcm94eTo6ZGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQ
cm94eTo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOgorCiAyMDE3LTEw
LTE5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgcHJl
bGltaW5hcnkgc3VwcG9ydCBmb3IgU2VydmljZVdvcmtlciBIYW5kbGUgRmV0Y2gKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZp
c2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDEzICs1NDgsNiBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjb250aW51ZUNhbkF1dGhlbnRpCiAjZW5kaWYKIAogI2lmIFVTRShORVRXT1JLX1NF
U1NJT04pCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFj
ZURvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgYm9vbCBjYW5BdXRoZW50aWNhdGUpCi17
Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuY29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlKGRvd25sb2FkSUQsIGNhbkF1dGhlbnRpY2F0ZSk7Ci19Ci0jZW5kaWYKLQog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCBk
b3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogewogICAgIGRv
d25sb2FkTWFuYWdlcigpLmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KGRvd25sb2FkSUQsIFdURk1v
dmUocmVxdWVzdCkpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDYsOSArMjA2LDYg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZSh1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBib29sIGNhbkF1dGhl
bnRpY2F0ZSk7CiAjZW5kaWYKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjb250aW51ZUNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VEb3dubG9hZChEb3dubG9hZElELCBib29sIGNhbkF1
dGhlbnRpY2F0ZSk7Ci0jZW5kaWYKICAgICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERv
d25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICNlbmRpZgogICAgIHZvaWQg
Y29udGludWVEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5hdGlvbihEb3dubG9hZElELCBTdHJp
bmcgZGVzdGluYXRpb24sIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgYm9vbCBhbGxvd092ZXJ3cml0ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTUxLDkgKzUxLDYgQEAgbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZQogICAgIENvbnRpbnVlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh1aW50NjRfdCBsb2FkZXJJRCwgYm9vbCBj
YW5BdXRoZW50aWNhdGUpCiAjZW5kaWYKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgQ29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRlKQotI2VuZGlmCiAgICAgQ29udGludWVXaWxs
U2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KQogI2VuZGlmCiAgICAgQ29udGludWVEZWNpZGVQZW5kaW5nRG93
bmxvYWREZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgU3RyaW5nIGRl
c3RpbmF0aW9uLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBib29sIGFsbG93T3ZlcndyaXRlKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcAkocmV2aXNpb24gMjIz
NzE4KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsMzEgKzE2MCw4IEBAIHZvaWQgRG93bmxvYWQ6OmRp
ZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2lmIFVT
RShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgbV9jaGFsbGVuZ2UgPSBjaGFs
bGVuZ2U7Ci0gICAgbV9jaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpOwotICAgIHNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgp
KSk7Ci0jZWxzZQogICAgIE5ldHdvcmtQcm9jZXNzOjpzaW5nbGV0b24oKS5hdXRoZW50aWNhdGlv
bk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGNoYWxs
ZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2VuZGlmCi19Ci0KLSNpZiBVU0Uo
UFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotdm9pZCBEb3dubG9hZDo6Y29udGludWVD
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRl
KQotewotICAgIEFTU0VSVChtX2NoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICBhdXRv
IGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShtX2NoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyLCBudWxscHRyKTsKLSAgICBpZiAoIWNhbkF1dGhlbnRpY2F0ZSkgewotICAgICAgICBp
ZiAoTmV0d29ya1Nlc3Npb246OmFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3Qo
Km1fY2hhbGxlbmdlKSkKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIHNlcnZlclRydXN0Q3JlZGVu
dGlhbCgqbV9jaGFsbGVuZ2UpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVj
dGlvblNwYWNlLCB7IH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgTmV0d29ya1By
b2Nlc3M6OnNpbmdsZXRvbigpLmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgKm1fY2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9Ci0jZW5kaWYgLy8gVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxM
QkFDSykKICNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogCiAjaWYgIVVTRShORVRXT1JL
X1NFU1NJT04pCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmgJKHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDgg
KzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIERvd25sb2FkX2gKLSNkZWZpbmUgRG93bmxvYWRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgpAQCAtMTA0LDkg
KzEwMyw2IEBAIHB1YmxpYzoKICNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgc2V0
U2FuZGJveEV4dGVuc2lvbihSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4mJiBzYW5kYm94RXh0ZW5z
aW9uKSB7IG1fc2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbik7IH0K
ICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKLSNpZiBVU0UoUFJP
VEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRlKTsKLSNlbmRp
ZgogI2Vsc2UKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpOwpA
QCAtMTUyLDEwICsxNDgsNiBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTFNlc3Npb25E
b3dubG9hZFRhc2s+IG1fZG93bmxvYWRUYXNrOwogI2VuZGlmCiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7Ci0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAg
ICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlPiBtX2NoYWxs
ZW5nZTsKLSAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciBtX2NoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyOwotI2VuZGlmCiAjZWxzZSAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgU3RyaW5nIG1fcmVzcG9uc2VN
SU1FVHlwZTsKQEAgLTE3NCw1ICsxNjYsMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBEb3dubG9hZF9oCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAJKHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDIxICs4Niw2
IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkYXRhVGFza0JlY2FtZURvd24KICAgICBtX2Rvd25s
b2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogfQogCi0jaWYgVVNFKFBS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpjb250
aW51ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoRG93bmxvYWRJRCBkb3du
bG9hZElELCBib29sIGNhbkF1dGhlbnRpY2F0ZSkKLXsKLSAgICBpZiAoYXV0byogcGVuZGluZ0Rv
d25sb2FkID0gbV9wZW5kaW5nRG93bmxvYWRzLmdldChkb3dubG9hZElEKSkgewotICAgICAgICBw
ZW5kaW5nRG93bmxvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZShjYW5BdXRoZW50aWNhdGUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChh
dXRvKiBkb3dubG9hZCA9IG1fZG93bmxvYWRzLmdldChkb3dubG9hZElEKSkgewotICAgICAgICBk
b3dubG9hZC0+Y29udGludWVDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNh
bkF1dGhlbnRpY2F0ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBEb3dubG9hZE1hbmFnZXI6OmNvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0KERvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBhdXRvKiBwZW5kaW5nRG93bmxvYWQgPSBtX3BlbmRpbmdE
b3dubG9hZHMuZ2V0KGRvd25sb2FkSUQpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgJKHJldmlzaW9u
IDIyMzcxOCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBEb3dubG9hZE1hbmFnZXJf
aAotI2RlZmluZSBEb3dubG9hZE1hbmFnZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJE
b3dubG9hZElELmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCkBAIC04MSw5ICs4MCw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MqLCBQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQogICAgIHZvaWQgZGF0YVRhc2tCZWNhbWVEb3dubG9hZFRhc2so
RG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmKTsKLSNpZiBVU0UoUFJPVEVD
VElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQotICAgIHZvaWQgY29udGludWVDYW5BdXRoZW50aWNh
dGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKERvd25sb2FkSUQsIGJvb2wgY2FuQXV0aGVudGljYXRl
KTsKLSNlbmRpZgogICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdE
b3dubG9hZERlc3RpbmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJik7CiAjZW5kaWYKQEAgLTExNyw1ICsxMTMsMyBAQCBwcml2YXRlOgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBEb3dubG9hZE1hbmFnZXJfaApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Q
ZW5kaW5nRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NywxMiArNzcsNyBAQCB2b2lkIFBlbmRpbmdEb3dubG9hZDo6Y2FuY2VsKCkKICNpZiBV
U0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogdm9pZCBQZW5kaW5nRG93bmxvYWQ6
OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VBc3luYyhjb25zdCBXZWJDb3Jl
OjpQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjpDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKHBy
b3RlY3Rpb25TcGFjZSkpOwotfQotCi12b2lkIFBlbmRpbmdEb3dubG9hZDo6Y29udGludWVDYW5B
dXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGJvb2wgY2FuQXV0aGVudGljYXRlKQot
ewotICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZShjYW5BdXRoZW50aWNhdGUpOworICAgIG1fbmV0d29ya0xvYWQtPmNvbnRpbnVl
Q2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSh0cnVlKTsKIH0KICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93
bmxvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9QZW5kaW5nRG93bmxvYWQuaAkocmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDkgKzQ5LDYgQEAgcHVibGljOgogICAgIFBlbmRpbmdEb3dubG9hZChzdGQ6OnVu
aXF1ZV9wdHI8TmV0d29ya0xvYWQ+JiYsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHZv
aWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwot
I2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgdm9pZCBjb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCBjYW5BdXRoZW50aWNh
dGUpOwotI2VuZGlmCiAgICAgdm9pZCBjYW5jZWwoKTsKIAogcHJpdmF0ZTogICAgCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAkocmV2
aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2Fk
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSURvd25sb2FkQ2xpZW50X2gK
LSNkZWZpbmUgQVBJRG93bmxvYWRDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQwLDYg
KzM5LDggQEAgY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKIGNsYXNzIERvd25s
b2FkUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIGNsYXNzIFdlYlByb3RlY3Rpb25TcGFj
ZTsKKworZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSB7IE5vLCBZZXMgfTsKIH0KIAogbmFtZXNw
YWNlIEFQSSB7CkBAIC00OCwyMSArNDksMjAgQEAgY2xhc3MgRG93bmxvYWRDbGllbnQgewogcHVi
bGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnQoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94
eSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxv
YWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6
RG93bmxvYWRQcm94eSosIHVpbnQ2NF90KSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6
RG93bmxvYWRQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSosIGNvbnN0
IFdURjo6U3RyaW5nJiwgYm9vbCYpIHsgcmV0dXJuIHsgfTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wqLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkqKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OldlYlByb2Nlc3NQb29sKiwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktp
dDo6RG93bmxvYWRQcm94eSopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2go
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxvYWRQcm94eSopIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKFdlYktp
dDo6V2ViUHJvdGVjdGlvblNwYWNlKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCosIFdlYktpdDo6RG93bmxv
YWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhyZXF1ZXN0KTsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydChXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2Vi
S2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OldlYlByb2Nlc3NQb29s
JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QpIHsgfQorI2lmICFVU0Uo
TkVUV09SS19TRVNTSU9OKQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRh
T2ZNSU1FVHlwZShXZWJLaXQ6OldlYlByb2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IHJldHVybiB0cnVlOyB9CisjZW5kaWYKKyAgICB2aXJ0
dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgRnVuY3Rpb248dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIHsgfSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24o
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWwoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbCYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2FuY2VsKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2wmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQotCi0jZW5kaWYgLy8gQVBJRG93bmxvYWRD
bGllbnRfaApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwCShyZXZpc2lvbiAyMjM3MTgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsMTAxICsxNzIsMTA0IEBAIHZvaWQg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXgKICAgICAgICAgICAgIGluaXRpYWxp
emUoY2xpZW50KTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGlkU3Rh
cnQoV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFBy
b3h5KSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiBwcm9j
ZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KHRvQVBJKHByb2Nlc3NQb29sKSwg
dG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAg
ICAgICBtX2NsaWVudC5kaWRTdGFydCh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxv
YWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQcm9jZXNzUG9vbCog
cHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpIG92ZXJyaWRlCisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlByb2Nlc3NQ
b29sJiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSkgZmluYWwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodG9BUEkocHJvY2Vzc1Bv
b2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9B
UEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJv
eHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBvdmVy
cmlkZQorICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSh0b0FQSShwcm9jZXNzUG9vbCksIHRv
QVBJKGRvd25sb2FkUHJveHkpLCB0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9u
c2UpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmRpZFJlY2VpdmVSZXNwb25zZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxv
YWRQcm94eSksIHRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNwb25zZSkucHRyKCkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkq
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCkgZmluYWwKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKHByb2Nlc3NQ
b29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKHRvQVBJKCZwcm9jZXNz
UG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBzaG91bGREZWNvZGVTb3VyY2VEYXRh
T2ZNSU1FVHlwZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpIG92ZXJyaWRlCisjaWYgIVVTRShO
RVRXT1JLX1NFU1NJT04pCisgICAgICAgIGJvb2wgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlN
RVR5cGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LnNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlKQogICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgICAgICAgICByZXR1cm4gbV9jbGllbnQu
c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUodG9BUEkocHJvY2Vzc1Bvb2wpLCB0b0FQ
SShkb3dubG9hZFByb3h5KSwgdG9BUEkobWltZVR5cGUuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZSh0b0FQSSgmcHJvY2Vzc1Bvb2wpLCB0b0FQSSgmZG93bmxvYWRQcm94
eSksIHRvQVBJKG1pbWVUeXBlLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgIH0KKyNlbmRpZgogCi0gICAgICAgIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJv
eHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3Zl
cndyaXRlKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgRnVuY3Rpb248dm9pZChBbGxv
d092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQWxsb3dPdmVyd3JpdGU6Ok5vLCB7
IH0pOwogCi0gICAgICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb24o
QWRvcHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
dG9BUEkocHJvY2Vzc1Bvb2wpLCB0b0FQSShkb3dubG9hZFByb3h5KSwgdG9BUEkoZmlsZW5hbWUu
aW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLSAg
ICAgICAgICAgIHJldHVybiB0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSk7CisgICAgICAg
ICAgICBib29sIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7CisgICAgICAgICAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZGVzdGluYXRpb24oQWRvcHRXSywgbV9jbGllbnQuZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUodG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRv
d25sb2FkUHJveHkpLCB0b0FQSShmaWxlbmFtZS5pbXBsKCkpLCAmYWxsb3dPdmVyd3JpdGUsIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbykpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
YWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5v
LCB0b1dURlN0cmluZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wsIERv
d25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGUK
KyAgICAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkg
ZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0
aW5hdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQ
cm94eSksIHRvQVBJKHBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICAgICAgICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKHRvQVBJKCZwcm9jZXNzUG9v
bCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwgdG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkaWRGaW5pc2goV2Vi
UHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KSBv
dmVycmlkZQorICAgICAgICB2b2lkIGRpZEZpbmlzaChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bv
b2wsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKHRvQVBJKHByb2Nlc3NQb29sKSwgdG9B
UEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAg
ICBtX2NsaWVudC5kaWRGaW5pc2godG9BUEkoJnByb2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2Fk
UHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAg
dm9pZCBkaWRGYWlsKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSog
ZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIG92ZXJyaWRlCisgICAg
ICAgIHZvaWQgZGlkRmFpbChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wsIERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsKHRvQVBJKHByb2Nlc3NQ
b29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIHRvQVBJKGVycm9yKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwodG9BUEkoJnByb2Nlc3NQ
b29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCB0b0FQSShlcnJvciksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgZGlkQ2FuY2Vs
KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94
eSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENhbmNlbCkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENhbmNlbCh0b0FQSShw
cm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKHRvQVBJKCZwcm9jZXNzUG9vbCks
IHRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQor
ICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2ws
IERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKHRv
QVBJKHByb2Nlc3NQb29sKSwgdG9BUEkoZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBy
b2Nlc3NQb29sKSwgdG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViUHJvY2Vz
c1Bvb2wqIHByb2Nlc3NQb29sLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik+JiYgY2FsbGJhY2spIG92ZXJyaWRl
CisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNhbGxiYWNrKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGll
bnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KQotICAgICAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCh0b0FQSShwcm9jZXNzUG9vbCksIHRvQVBJKGRvd25sb2Fk
UHJveHkpLCB0b1VSTFJlZihyZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0KHRvQVBJKCZwcm9jZXNzUG9vbCksIHRvQVBJKCZkb3dubG9hZFByb3h5KSwg
dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogCi0gICAgICAgICAgICBjYWxsYmFjayhyZXF1ZXN0KTsKKyAgICAgICAgICAg
IGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICB9CiAKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcAkocmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCwy
NiArNDAsMjYgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZFN0YXJ0
KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUK
KyAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+
IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoZG93bmxvYWRQ
cm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3
ZWJraXRXZWJDb250ZXh0RG93bmxvYWRTdGFydGVkKG1fd2ViQ29udGV4dCwgZG93bmxvYWQuZ2V0
KCkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSwgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIG92ZXJyaWRlCisg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEdS
ZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3Jl
YXRlRG93bmxvYWQoZG93bmxvYWRQcm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxv
YWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25s
b2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9h
ZC5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IEFkZCBB
UEkgdG8gaGFuZGxlIGF1dGhlbnRpY2F0aW9uIG9mIGRvd25sb2FkcyB3aXRob3V0IGEgd2ViIHZp
ZXcgYXNzb2NpdGVkLgogICAgICAgICBpZiAoYXV0byogd2ViVmlldyA9IHdlYmtpdF9kb3dubG9h
ZF9nZXRfd2ViX3ZpZXcoZG93bmxvYWQuZ2V0KCkpKQotICAgICAgICAgICAgd2Via2l0V2ViVmll
d0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlZpZXcsIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKKyAgICAgICAgICAgIHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSh3ZWJWaWV3LCAmYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOwogICAgIH0KIAotICAg
IHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSog
ZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSkg
b3ZlcnJpZGUKKyAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYsIERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc291
cmNlUmVzcG9uc2UpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBHUmVmUHRyPFdlYktpdERvd25s
b2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKGRvd25s
b2FkUHJveHkpOworICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdl
YmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAg
ICAgaWYgKHdlYmtpdERvd25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC02Nyw0NyArNjcsNDkgQEAgcHJpdmF0ZToKICAgICAgICAgd2Vi
a2l0RG93bmxvYWRTZXRSZXNwb25zZShkb3dubG9hZC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCkpOwog
ICAgIH0KIAotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9h
ZFByb3h5KiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpIG92ZXJyaWRlCisgICAgdm9p
ZCBkaWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIHVpbnQ2NF90IGxlbmd0aCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIEdSZWZQdHI8
V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93
bmxvYWQoZG93bmxvYWRQcm94eSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRv
d25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZE5vdGlmeVByb2dyZXNzKGRvd25sb2FkLmdldCgp
LCBsZW5ndGgpOwogICAgIH0KIAotICAgIFN0cmluZyBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJv
eHksIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGJvb2wmIGFsbG93T3ZlcndyaXRlKSBvdmVycmlk
ZQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJv
Y2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9h
ZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZChkb3dubG9h
ZFByb3h5KTsKLSAgICAgICAgcmV0dXJuIHdlYmtpdERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxvYWQuZ2V0KCksIGZpbGVuYW1lLnV0ZjgoKSwgYWxs
b3dPdmVyd3JpdGUpOworICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9
IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKKyAg
ICAgICAgYm9vbCBhbGxvd092ZXJ3cml0ZSA9IGZhbHNlOworICAgICAgICBTdHJpbmcgZGVzdGlu
YXRpb24gPSB3ZWJraXREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKGRvd25sb2FkLmdldCgpLCBmaWxlbmFtZS51dGY4KCksIGFsbG93T3ZlcndyaXRlKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6
WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfQogCi0gICAgdm9p
ZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZENy
ZWF0ZURlc3RpbmF0aW9uKFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgR1JlZlB0
cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVE
b3dubG9hZChkb3dubG9hZFByb3h5KTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4g
ZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQ
cm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRvd25sb2Fk
LmdldCgpLCBwYXRoKTsKICAgICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wq
LCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUK
ICAgICB7Ci0gICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoZG93bmxvYWRQcm94eSk7CisgICAgICAgIEdS
ZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3Jl
YXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJ
c0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKICAgICAgICAgICAgIC8vIENhbmNlbGxhdGlv
biB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgb3RoZXIgZXJyb3JzLgogICAgICAgICAgICAgd2Via2l0
RG93bmxvYWRDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpOwogICAgICAgICB9IGVsc2UKICAgICAg
ICAgICAgIHdlYmtpdERvd25sb2FkRmFpbGVkKGRvd25sb2FkLmdldCgpLCBlcnJvcik7Ci0gICAg
ICAgIHdlYmtpdFdlYkNvbnRleHRSZW1vdmVEb3dubG9hZChkb3dubG9hZFByb3h5KTsKKyAgICAg
ICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICB9
CiAKLSAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRDYW5jZWwoV2ViUHJvY2Vzc1Bvb2wm
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAg
R1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JD
cmVhdGVEb3dubG9hZChkb3dubG9hZFByb3h5KTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXREb3du
bG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93
bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKTsKLSAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKGRvd25sb2FkUHJv
eHkpOworICAgICAgICB3ZWJraXRXZWJDb250ZXh0UmVtb3ZlRG93bmxvYWQoJmRvd25sb2FkUHJv
eHkpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmluaXNoKFdlYlByb2Nlc3NQb29sKiwgRG93bmxv
YWRQcm94eSogZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJQ
cm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAg
ewotICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNv
bnRleHRHZXRPckNyZWF0ZURvd25sb2FkKGRvd25sb2FkUHJveHkpOworICAgICAgICBHUmVmUHRy
PFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURv
d25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRGaW5pc2hlZChk
b3dubG9hZC5nZXQoKSk7Ci0gICAgICAgIHdlYmtpdFdlYkNvbnRleHRSZW1vdmVEb3dubG9hZChk
b3dubG9hZFByb3h5KTsKKyAgICAgICAgd2Via2l0V2ViQ29udGV4dFJlbW92ZURvd25sb2FkKCZk
b3dubG9hZFByb3h5KTsKICAgICB9CiAKICAgICBXZWJLaXRXZWJDb250ZXh0KiBtX3dlYkNvbnRl
eHQ7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0Rvd25sb2FkQ2xp
ZW50LmgJKHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0Rvd25sb2FkQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIERvd25sb2FkQ2xp
ZW50X2gKLSNkZWZpbmUgRG93bmxvYWRDbGllbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQg
IldLRm91bmRhdGlvbi5oIgogCkBAIC00MSwyMSArNDAsMjEgQEAgY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Ci0gICAgCisKIGNsYXNzIERvd25sb2FkQ2xp
ZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewogcHVibGljOgogICAgIGV4
cGxpY2l0IERvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPik7CiAgICAgCiBw
cml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAotICAgIHZvaWQgZGlkU3Rh
cnQoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KikgZmluYWw7Ci0gICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
V2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiwgdWludDY0X3QgbGVuZ3RoKSBmaW5hbDsK
LSAgICBTdHJpbmcgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJv
Y2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgYm9vbCYg
YWxsb3dPdmVyd3JpdGVQYXJhbSkgZmluYWw7Ci0gICAgdm9pZCBkaWRGaW5pc2goV2ViUHJvY2Vz
c1Bvb2wqLCBEb3dubG9hZFByb3h5KikgZmluYWw7Ci0gICAgdm9pZCBkaWRGYWlsKFdlYlByb2Nl
c3NQb29sKiwgRG93bmxvYWRQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBm
aW5hbDsKLSAgICB2b2lkIGRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkq
KSBmaW5hbDsKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCosIERvd25s
b2FkUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFN0YXJ0KFdlYlByb2Nlc3NQ
b29sJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYlByb2Nlc3NQb29s
JiwgRG93bmxvYWRQcm94eSYsIHVpbnQ2NF90IGxlbmd0aCkgZmluYWw7CisgICAgdm9pZCBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJQcm9jZXNzUG9vbCYsIERvd25s
b2FkUHJveHkmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBGdW5jdGlvbjx2b2lk
KEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZpbmlzaChX
ZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwo
V2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkQ2FuY2VsKFdlYlByb2Nlc3NQb29sJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYlByb2Nlc3NQb29s
JiwgRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYpIGZpbmFsOwogCiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVs
ZWdhdGU+PiBtX2RlbGVnYXRlOwogCkBAIC03NCw1ICs3MywzIEBAIHByaXZhdGU6CiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCi0KLSNlbmRpZiAvLyBEb3dubG9hZENsaWVudF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Eb3dubG9hZENsaWVudC5t
bQkocmV2aXNpb24gMjIzNzE4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvRG93
bmxvYWRDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU2LDU5ICs1Niw1OCBAQCBEb3dubG9h
ZENsaWVudDo6RG93bmxvYWRDbGllbnQoaWQgPF9XS0RvCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTDopXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoV2ViUHJvY2Vzc1Bv
b2wqLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6
ZGlkU3RhcnQoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQog
ewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0KQotICAgICAgICBb
bV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKCpkb3dubG9hZFByb3h5
KV07CisgICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIo
ZG93bmxvYWRQcm94eSldOwogfQogCi12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5KiBkb3dubG9hZFByb3h5LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSkK
LSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkOndyYXBwZXIoKmRvd25sb2FkUHJv
eHkpIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOworICAgICAg
ICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRS
ZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAotdm9pZCBEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5
KiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBsZW5ndGgpCit2b2lkIERvd25sb2FkQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIHVpbnQ2NF90IGxlbmd0aCkKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxv
YWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0KCkgX2Rvd25sb2FkOndy
YXBwZXIoKmRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmxlbmd0aF07CisgICAgICAgIFtt
X2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2Vp
dmVEYXRhOmxlbmd0aF07CiB9CiAKLVN0cmluZyBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9hZFByb3h5
KiBkb3dubG9hZFByb3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBib29sJiBhbGxvd092ZXJ3
cml0ZVBhcmFtKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV2ViUHJvY2Vzc1Bvb2wmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBGdW5jdGlvbjx2b2lkKEFsbG93T3ZlcndyaXRl
LCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93
T3ZlcndyaXRlKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKICAgICBCT09M
IGFsbG93T3ZlcndyaXRlID0gTk87Ci0gICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVs
ZWdhdGUuZ2V0KCkgX2Rvd25sb2FkOndyYXBwZXIoKmRvd25sb2FkUHJveHkpIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOiZhbGxv
d092ZXJ3cml0ZV07Ci0gICAgYWxsb3dPdmVyd3JpdGVQYXJhbSA9IGFsbG93T3ZlcndyaXRlOwot
ICAgIHJldHVybiBkZXN0aW5hdGlvbjsKKyAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9k
ZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxs
b3dPdmVyd3JpdGVdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxs
b3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogfQog
Ci12b2lkIERvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goV2ViUHJvY2Vzc1Bvb2wqLCBEb3dubG9h
ZFByb3h5KiBkb3dubG9hZFByb3h5KQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKFdl
YlByb2Nlc3NQb29sJiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICAgICBpZiAo
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCi0gICAgICAgIFttX2RlbGVnYXRl
LmdldCgpIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKCpkb3dubG9hZFByb3h5KV07CisgICAg
ICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChXZWJQcm9jZXNzUG9v
bCosIERvd25sb2FkUHJveHkqIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQordm9pZCBEb3dubG9hZENsaWVudDo6ZGlkRmFpbChXZWJQcm9jZXNzUG9v
bCYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImIGVycm9yKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZh
aWwpCi0gICAgICAgIFttX2RlbGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKCpkb3dubG9h
ZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CisgICAgICAgIFttX2Rl
bGVnYXRlLmdldCgpIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRo
RXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0KIAotdm9pZCBEb3dubG9hZENsaWVudDo6ZGlkQ2Fu
Y2VsKFdlYlByb2Nlc3NQb29sKiwgRG93bmxvYWRQcm94eSogZG93bmxvYWRQcm94eSkKK3ZvaWQg
RG93bmxvYWRDbGllbnQ6OmRpZENhbmNlbChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpCiB7CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlk
Q2FuY2VsKQotICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWREaWRDYW5jZWw6d3Jh
cHBlcigqZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxv
YWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CiB9CiAKLXZvaWQgRG93bmxvYWRD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCosIERvd25sb2FkUHJveHkqIGRv
d25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKT4mJiBjYWxsYmFjaykKK3ZvaWQgRG93bmxvYWRDbGll
bnQ6OndpbGxTZW5kUmVxdWVzdChXZWJQcm9jZXNzUG9vbCYsIERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxv
YWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgW21fZGVsZWdhdGUuZ2V0
KCkgX2Rvd25sb2FkOndyYXBwZXIoKmRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJp
bmcoKV1dOworICAgICAgICBbbV9kZWxlZ2F0ZS5nZXQoKSBfZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxX
aXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsKIAotICAgIGNhbGxiYWNrKHJl
cXVlc3QpOworICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAJKHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODksNyArODksNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OnByb2Nlc3NEaWRDbG9zZSgpCiAg
ICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQ
b29sLT5kb3dubG9hZENsaWVudCgpLnByb2Nlc3NEaWRDcmFzaChtX3Byb2Nlc3NQb29sLmdldCgp
LCB0aGlzKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLnByb2Nlc3NEaWRD
cmFzaCgqbV9wcm9jZXNzUG9vbCwgKnRoaXMpOwogfQogCiBXZWJQYWdlUHJveHkqIERvd25sb2Fk
UHJveHk6Om9yaWdpbmF0aW5nUGFnZSgpIGNvbnN0CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBE
b3dubG9hZFByb3h5OjpkaWRTdGFydChjb25zdCBSZXNvdQogICAgIGlmICghbV9wcm9jZXNzUG9v
bCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQo
KS5kaWRTdGFydChtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzKTsKKyAgICBtX3Byb2Nlc3NQb29s
LT5kb3dubG9hZENsaWVudCgpLmRpZFN0YXJ0KCptX3Byb2Nlc3NQb29sLCAqdGhpcyk7CiB9CiAK
IHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNv
bnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWlu
dDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xMjEsMzMgKzEyMSwxNyBAQCB2b2lkIERvd25sb2FkUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhCiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk6
OmNyZWF0ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQsIG1fcHJvY2Vzc1Bv
b2wtPm5ldHdvcmtpbmdQcm9jZXNzQ29ubmVjdGlvbigpKTsKKyAgICBhdXRvIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkgPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OjpjcmVhdGUo
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBtX3Byb2Nlc3NQb29sLT5uZXR3
b3JraW5nUHJvY2Vzc0Nvbm5lY3Rpb24oKSk7CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9h
ZENsaWVudCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Byb2Nlc3NQb29s
LmdldCgpLCB0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmdldCgpKTsKKyAgICBt
X3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuZ2V0KCkpOwogfQogCi0jaWYgVVNFKE5FVFdPUktfU0VTU0lPTikgJiYgVVNFKFBST1RFQ1RJ
T05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLXZvaWQgRG93bmxvYWRQcm94eTo6Y2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rp
b25TcGFjZSkKLXsKLSAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCi0gICAgICAgIHJldHVybjsKLSAg
ICAKLSAgICBhdXRvKiBuZXR3b3JrUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKTsKLSAgICBpZiAoIW5ldHdvcmtQcm9jZXNzUHJveHkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGJvb2wgcmVzdWx0ID0gbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5j
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGdldFB0cihXZWJQcm90ZWN0aW9u
U3BhY2U6OmNyZWF0ZShwcm90ZWN0aW9uU3BhY2UpKSk7Ci0gICAgCi0gICAgbmV0d29ya1Byb2Nl
c3NQcm94eS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNvbnRpbnVlQ2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZURvd25sb2FkKG1fZG93bmxvYWRJRCwgcmVzdWx0
KSwgMCk7Ci19Ci0jZW5kaWYKLQotdm9pZCBEb3dubG9hZFByb3h5Ojp3aWxsU2VuZFJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBwcm9wb3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2b2lkIERvd25sb2FkUHJveHk6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLndpbGxT
ZW5kUmVxdWVzdChtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCBwcm9wb3NlZFJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCkgeworICAgIG1fcHJvY2Vzc1Bvb2wtPmRv
d25sb2FkQ2xpZW50KCkud2lsbFNlbmRSZXF1ZXN0KCptX3Byb2Nlc3NQb29sLCAqdGhpcywgV1RG
TW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0KSB7CiAg
ICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQobmV3UmVxdWVzdC51cmwoKSk7CiAKICNpZiBV
U0UoTkVUV09SS19TRVNTSU9OKQpAQCAtMTc1LDcgKzE1OSw3IEBAIHZvaWQgRG93bmxvYWRQcm94
eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGMKICAgICAgICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IFN0
cmluZygpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRp
ZFJlY2VpdmVSZXNwb25zZShtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCByZXNwb25zZSk7Cisg
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlUmVzcG9uc2UoKm1f
cHJvY2Vzc1Bvb2wsICp0aGlzLCByZXNwb25zZSk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6
ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgbGVuZ3RoKQpAQCAtMTgzLDkgKzE2NywxMCBAQCB2b2lk
IERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2CiAgICAgaWYgKCFtX3Byb2Nlc3NQ
b29sKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVu
dCgpLmRpZFJlY2VpdmVEYXRhKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRoaXMsIGxlbmd0aCk7Cisg
ICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRSZWNlaXZlRGF0YSgqbV9wcm9j
ZXNzUG9vbCwgKnRoaXMsIGxlbmd0aCk7CiB9CiAKKyNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikK
IHZvaWQgRG93bmxvYWRQcm94eTo6c2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCYgcmVzdWx0KQogewogICAgIHJlc3VsdCA9IGZhbHNl
OwpAQCAtMTkzLDQwICsxNzgsMzkgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpzaG91bGREZWNvZGVT
b3VyY2VEYQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVzdWx0ID0gbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5zaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZShtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCBtaW1lVHlwZSk7Cisg
ICAgcmVzdWx0ID0gbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5zaG91bGREZWNvZGVT
b3VyY2VEYXRhT2ZNSU1FVHlwZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMsIG1pbWVUeXBlKTsKIH0K
KyNlbmRpZgogCiB2b2lkIERvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQXN5bmMoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKQogewotICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAg
ICAKICAgICBpZiAoIW1fcHJvY2Vzc1Bvb2wpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBT
dHJpbmcgZGVzdGluYXRpb24gPSBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRo
aXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0gICAgCi0gICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKCFkZXN0
aW5hdGlvbi5pc051bGwoKSkKLSAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpOworICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKm1fcHJvY2Vzc1Bvb2wsICp0aGlz
LCBzdWdnZXN0ZWRGaWxlbmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZG93bmxvYWRJRCA9IGRvd25sb2FkSURdIChBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0
ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSB7CisgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOworICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVs
bCgpKQorICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0
aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpOwogCi0gICAgaWYgKE5ldHdvcmtQcm9jZXNzUHJveHkqIG5ldHdvcmtQcm9jZXNzID0g
bV9wcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkKLSAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZURlY2lkZVBlbmRpbmdEb3du
bG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBhbGxvd092ZXJ3cml0ZSksIDApOworICAgICAgICBpZiAoYXV0byogbmV0d29ya1By
b2Nlc3MgPSBtX3Byb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKQorICAgICAgICAgICAgbmV0
d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDb250aW51ZURlY2lk
ZVBlbmRpbmdEb3dubG9hZERlc3RpbmF0aW9uKGRvd25sb2FkSUQsIGRlc3RpbmF0aW9uLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBhbGxvd092ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVz
KSwgMCk7CisgICAgfSk7CiB9CiAKICNpZiAhVVNFKE5FVFdPUktfU0VTU0lPTikKIAotdm9pZCBE
b3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTdHJpbmcmIGRlc3Rp
bmF0aW9uLCBib29sJiBhbGxvd092ZXJ3cml0ZSwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBSZWY8TWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7Ci0g
ICAgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLQogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVS
ZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KG1fc3VnZ2VzdGVkRmlsZW5h
bWUuaXNFbXB0eSgpID8gZmlsZW5hbWUgOiBtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtaW1lVHlwZSk7
Ci0gICAgZGVzdGluYXRpb24gPSBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fcHJvY2Vzc1Bvb2wuZ2V0KCksIHRo
aXMsIHN1Z2dlc3RlZEZpbGVuYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci0KLSAgICBpZiAoIWRlc3Rp
bmF0aW9uLmlzTnVsbCgpKQotICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
ZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqbV9wcm9jZXNzUG9vbCwgKnRoaXMs
IGZpbGVuYW1lLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKEFsbG93T3ZlcndyaXRlIGFsbG93
T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIHsKKyAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CisgICAgICAgIGlmICghZGVzdGluYXRp
b24uaXNOdWxsKCkpCisgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
ZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSk7CisgICAgICAgIHJlcGx5LT5zZW5kKGRlc3RpbmF0aW9uLCBhbGxvd092
ZXJ3cml0ZSA9PSBBbGxvd092ZXJ3cml0ZTo6WWVzLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsK
KyAgICB9KTsKIH0KIAogI2VuZGlmCkBAIC0yMzYsNyArMjIwLDcgQEAgdm9pZCBEb3dubG9hZFBy
b3h5OjpkaWRDcmVhdGVEZXN0aW5hdGlvbgogICAgIGlmICghbV9wcm9jZXNzUG9vbCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzUG9vbC0+ZG93bmxvYWRDbGllbnQoKS5kaWRDcmVh
dGVEZXN0aW5hdGlvbihtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCBwYXRoKTsKKyAgICBtX3By
b2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uKCptX3Byb2Nl
c3NQb29sLCAqdGhpcywgcGF0aCk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmluaXNo
KCkKQEAgLTI0NCw3ICsyMjgsNyBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZpbmlzaCgpCiAg
ICAgaWYgKCFtX3Byb2Nlc3NQb29sKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3NQ
b29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZpbmlzaChtX3Byb2Nlc3NQb29sLmdldCgpLCB0aGlz
KTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZEZpbmlzaCgqbV9wcm9j
ZXNzUG9vbCwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJv
eHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2Fk
RmluaXNoZWQodGhpcyk7CkBAIC0yNjUsNyArMjQ5LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojpk
aWRGYWlsKGNvbnN0IFJlc291cgogCiAgICAgbV9yZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1
bWVEYXRhKTsKIAotICAgIG1fcHJvY2Vzc1Bvb2wtPmRvd25sb2FkQ2xpZW50KCkuZGlkRmFpbCht
X3Byb2Nlc3NQb29sLmdldCgpLCB0aGlzLCBlcnJvcik7CisgICAgbV9wcm9jZXNzUG9vbC0+ZG93
bmxvYWRDbGllbnQoKS5kaWRGYWlsKCptX3Byb2Nlc3NQb29sLCAqdGhpcywgZXJyb3IpOwogCiAg
ICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0
ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQodGhpcyk7CkBAIC0y
NzUsNyArMjU5LDcgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRDYW5jZWwoY29uc3QgSVBDOgog
ewogICAgIG1fcmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX3By
b2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZENhbmNlbChtX3Byb2Nlc3NQb29sLmdldCgp
LCB0aGlzKTsKKyAgICBtX3Byb2Nlc3NQb29sLT5kb3dubG9hZENsaWVudCgpLmRpZENhbmNlbCgq
bV9wcm9jZXNzUG9vbCwgKnRoaXMpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25s
b2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRv
d25sb2FkRmluaXNoZWQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHJldmlzaW9uIDIyMzcxOCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEyICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgRG93bmxvYWRQcm94eV9oCi0jZGVmaW5lIERvd25sb2FkUHJveHlf
aAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC05
NywxMyArOTcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBk
aWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgZGlkQ2FuY2VsKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSk7Ci0gICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotI2lmIFVTRShORVRXT1JLX1NFU1NJ
T04pCi0jaWYgVVNFKFBST1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSykKLSAgICB2b2lkIGNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoY29uc3QgV2ViQ29yZTo6UHJvdGVj
dGlvblNwYWNlJik7Ci0jZW5kaWYKLSNlbHNlCi0gICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBTdHJpbmcmIGRlc3RpbmF0aW9uLCBib29sJiBhbGxvd092ZXJ3cml0ZSwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICB2b2lk
IHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwor
I2lmICFVU0UoTkVUV09SS19TRVNTSU9OKQorICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSwgUmVmPE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTo6RGVsYXllZFJlcGx5PiYmKTsKICNlbmRpZgogICAgIHZvaWQg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBc3luYyhEb3dubG9hZElELCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIApAQCAtMTIxLDUgKzExNywzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIERvd25sb2Fk
UHJveHlfaApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMzcxOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxOCArMjQsMTMgQEAgbWVzc2FnZXMgLT4gRG93bmxv
YWRQcm94eSB7CiAgICAgRGlkU3RhcnQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IEF0b21pY1N0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkKICAgICBEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdl
LCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKICAgICBXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZWRpcmVjdFJlc3BvbnNlKSkKLSNpZiBVU0UoTkVUV09SS19TRVNTSU9OKQotI2lmIFVTRShQUk9U
RUNUSU9OX1NQQUNFX0FVVEhfQ0FMTEJBQ0spCi0gICAgQ2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UgcHJvdGVjdGlvblNwYWNlKQot
I2VuZGlmCi0jZW5kaWYKICAgICBEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUFzeW5jKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBTdHJpbmcgc3VnZ2VzdGVkRmls
ZW5hbWUpCiAKICAgICBEaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSkKICAgICBEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBsZW5ndGgpCi0gICAgU2hv
dWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCBy
ZXN1bHQpCiAjaWYgIVVTRShORVRXT1JLX1NFU1NJT04pCi0gICAgRGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoU3RyaW5nIGZpbGVuYW1lLCBTdHJpbmcgbWltZVR5cGUpIC0+
IChTdHJpbmcgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dPdmVyd3JpdGUsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAgU2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGUoU3RyaW5nIG1pbWVUeXBlKSAtPiAoYm9vbCByZXN1bHQp
CisgICAgRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoU3RyaW5nIGZpbGVu
YW1lLCBTdHJpbmcgbWltZVR5cGUpIC0+IChTdHJpbmcgZGVzdGluYXRpb24sIGJvb2wgYWxsb3dP
dmVyd3JpdGUsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpIERlbGF5ZWQKICNlbmRpZgogICAgIERpZENyZWF0ZURlc3RpbmF0aW9uKFN0cmlu
ZyBwYXRoKQogICAgIERpZEZpbmlzaCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>