<?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>192829</bug_id>
          
          <creation_ts>2018-12-18 13:58:58 -0800</creation_ts>
          <short_desc>[WebKitLegacy] Media playback pauses on scroll</short_desc>
          <delta_ts>2020-04-06 17:34:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=193286</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=195137</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210013</see_also>
          <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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1489054</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-18 13:58:58 -0800</bug_when>
    <thetext>[WebKitLegacy] Media playback pauses on scroll</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489055</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-18 14:01:00 -0800</bug_when>
    <thetext>&lt;rdar://problem/46420245&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489057</commentid>
    <comment_count>2</comment_count>
      <attachid>357610</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-18 14:02:00 -0800</bug_when>
    <thetext>Created attachment 357610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489061</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-18 14:06:39 -0800</bug_when>
    <thetext>Attachment 357610 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollingDoesNotPauseMedia.mm:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489079</commentid>
    <comment_count>4</comment_count>
      <attachid>357615</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-18 14:52:46 -0800</bug_when>
    <thetext>Created attachment 357615
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489081</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-18 14:55:04 -0800</bug_when>
    <thetext>Attachment 357615 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollingDoesNotPauseMedia.mm:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490454</commentid>
    <comment_count>6</comment_count>
      <attachid>357615</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-12-21 13:16:45 -0800</bug_when>
    <thetext>Comment on attachment 357615
Patch

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

&gt; Source/WebCore/dom/Document.cpp:1727
&gt; +        platformMediaSessionManager-&gt;stopAllMediaPlaybackForDocument(this);

Nit: you might as well update stopAllMediaPlaybackForDocument to take a Document reference.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:834
&gt; +        INFO_LOG(LOGIDENTIFIER, &quot;src = &quot;, value);

We shouldn&apos;t log urls in release builds. You can have this only log in a debug build by changing it to something like 

    INFO_LOG(LOGIDENTIFIER, &quot;src = &quot;, URL { URL { }, value });

&gt; Source/WebCore/page/Page.cpp:1738
&gt; +    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
&gt; +        if (auto* document = frame-&gt;document())
&gt; +            document-&gt;suspendAllMediaPlayback();
&gt; +    }
&gt; +
&gt; +    m_mediaPlaybackIsSuspended = true;

Nit: it is probably slightly safer to set m_mediaPlaybackIsSuspended before suspending the documents, in case they do something that causes this to be called again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1490457</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-12-21 13:32:33 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #6)
&gt; Comment on attachment 357615 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357615&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:1727
&gt; &gt; +        platformMediaSessionManager-&gt;stopAllMediaPlaybackForDocument(this);
&gt; 
&gt; Nit: you might as well update stopAllMediaPlaybackForDocument to take a
&gt; Document reference.
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:834
&gt; &gt; +        INFO_LOG(LOGIDENTIFIER, &quot;src = &quot;, value);
&gt; 
&gt; We shouldn&apos;t log urls in release builds. You can have this only log in a
&gt; debug build by changing it to something like 
&gt; 
&gt;     INFO_LOG(LOGIDENTIFIER, &quot;src = &quot;, URL { URL { }, value });

Yeah, this was a debugging statement that shouldn&apos;t have gone into this patch; I&apos;ll delete it.

&gt; &gt; Source/WebCore/page/Page.cpp:1738
&gt; &gt; +    for (Frame* frame = &amp;mainFrame(); frame; frame = frame-&gt;tree().traverseNext()) {
&gt; &gt; +        if (auto* document = frame-&gt;document())
&gt; &gt; +            document-&gt;suspendAllMediaPlayback();
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    m_mediaPlaybackIsSuspended = true;
&gt; 
&gt; Nit: it is probably slightly safer to set m_mediaPlaybackIsSuspended before
&gt; suspending the documents, in case they do something that causes this to be
&gt; called again.

No, it needs to happen afterwards, because pause() checks whether playback is allowed, which it won&apos;t be if playback is suspended.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491747</commentid>
    <comment_count>8</comment_count>
      <attachid>358337</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-01-04 11:04:22 -0800</bug_when>
    <thetext>Created attachment 358337
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491753</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-01-04 11:07:32 -0800</bug_when>
    <thetext>Attachment 358337 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollingDoesNotPauseMedia.mm:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491899</commentid>
    <comment_count>10</comment_count>
      <attachid>358337</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-04 14:23:24 -0800</bug_when>
    <thetext>Comment on attachment 358337
Patch for landing

Clearing flags on attachment: 358337

Committed r239640: &lt;https://trac.webkit.org/changeset/239640&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1491900</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-04 14:23:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492081</commentid>
    <comment_count>12</comment_count>
      <attachid>358337</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-01-05 10:43:50 -0800</bug_when>
    <thetext>Comment on attachment 358337
Patch for landing

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        Do not use suspendActiveDOMObjects(ReasonForSuspension::PageWillBeSuspended) to pause
&gt; +        video. Roll back the changes to HTMLMediaElement, and introduce a new set of Page calls
&gt; +        suspendAllMediaPlayback() &amp; resumeAllMediaPlayback() which replaces the removed bahavior.

What was the cause of the bug though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492278</commentid>
    <comment_count>13</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-01-07 09:22:30 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #12)
&gt; Comment on attachment 358337 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=358337&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        Do not use suspendActiveDOMObjects(ReasonForSuspension::PageWillBeSuspended) to pause
&gt; &gt; +        video. Roll back the changes to HTMLMediaElement, and introduce a new set of Page calls
&gt; &gt; +        suspendAllMediaPlayback() &amp; resumeAllMediaPlayback() which replaces the removed bahavior.
&gt; 
&gt; What was the cause of the bug though?

WebKitLegacy uses suspendActiveDOMObjects(PageWillBeSuspended) during active scroll operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510922</commentid>
    <comment_count>14</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-02-28 07:33:55 -0800</bug_when>
    <thetext>The ScrollingDoesNotPauseMedia API Test added in this patch seems to be failing consistently. It would be nice to fix that soon to keep the automation green/happy.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357610</attachid>
            <date>2018-12-18 14:02:00 -0800</date>
            <delta_ts>2018-12-18 14:52:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192829-20181218140159.patch</filename>
            <type>text/plain</type>
            <size>37254</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ2ZGU0NjhmODRmYzYw
ZTdhZmYyMTI0NTAzMmYwMzIzOWNjZThiMi4uMjM1ZmZjODE2NzNhY2UzM2YwOGMzMWY2MmU3MWQw
ZDgwMjNkNzA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE4LTEyLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXRMZWdhY3ldIE1l
ZGlhIHBsYXliYWNrIHBhdXNlcyBvbiBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5ldyBBUEkgdGVzdHM6CisgICAgICAgICAgICBXZWJLaXRM
ZWdhY3kuU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEKKyAgICAgICAgICAgIFdLV2ViVmlldy5T
dG9wQWxsTWVkaWFQbGF5YmFjaworICAgICAgICAgICAgV0tXZWJWaWV3LlN1c3BlbmRSZXN1bWVB
bGxNZWRpYVBsYXliYWNrCisKKyAgICAgICAgRG8gbm90IHVzZSBzdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0cyhSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkKSB0byBwYXVzZQor
ICAgICAgICB2aWRlby4gUm9sbCBiYWNrIHRoZSBjaGFuZ2VzIHRvIEhUTUxNZWRpYUVsZW1lbnQs
IGFuZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIFBhZ2UgY2FsbHMKKyAgICAgICAgc3VzcGVuZEFs
bE1lZGlhUGxheWJhY2soKSAmIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSB3aGljaCByZXBsYWNl
cyB0aGUgcmVtb3ZlZCBiYWhhdmlvci4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c2V0U3JjT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQgY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdG9wQWxsTWVk
aWFQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdXNwZW5kQWxsTWVkaWFQbGF5
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhUGxh
eWJhY2tJc1N1c3BlbmRlZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVzdW1lQWxsTWVkaWFQbGF5YmFja0Zv
ckRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaDoKKwogMjAxOC0xMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBDUkFTSCBpbiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmNsb3NlU2Vzc2lvbihXVEY6OlN0cmluZyBjb25zdCYsIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4mJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWFmMjJjOWExYjgyNzc4MmI5ODUyY2FlNWFmOWQzOGI3
N2Y2MDg0OS4uM2NmMWMwNDcyMTEzMjZkMWQyMTg3YzMzNGE0ZWM5YjNkYjMzM2Q1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0xMi0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViS2l0TGVnYWN5XSBNZWRpYSBwbGF5YmFjayBwYXVzZXMg
b24gc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTI4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYSBuZXcgV2ViUGFnZSwgV2ViUGFnZVByb3h5LCAmIFdLV2ViVmlldyBTUEkgdG8gc3Rv
cCwgc3VzcGVuZCwgYW5kIHJlc3VtZSBhbGwKKyAgICAgICAgZXhpc3RpbmcgbWVkaWEgcGxheWJh
Y2sgaW4gdGhlIHBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9wQWxsTWVkaWFQbGF5YmFja10pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BBbGxNZWRp
YVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVk
aWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVk
aWFQbGF5YmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5t
bToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgX3Nob3dQaGlzaGluZ0Fs
ZXJ0XSk6CisKIDIwMTgtMTItMDMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRW5hYmxlIE1lZGlhQ2FwYWJpbGl0aWVzIGJ5IGRlZmF1bHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCBlMzM0YWRiZWFlYjAyYWRkOGEzMDU4MjljOWI2ZjJlZWI0ZTVmYWUy
Li43OGIwMTNhZTNiMzRmZDEzNmE4MjA4YmE2NDc0ZjM5MjAyMjlhNWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTY1Miw4ICs2NTIsNyBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKICAg
ICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+c2V0RG9jdW1lbnQobnVsbHB0cik7CiAKICNp
ZiBFTkFCTEUoVklERU8pCi0gICAgaWYgKGF1dG8qIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
ciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3RzKCkp
Ci0gICAgICAgIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci0+c3RvcEFsbE1lZGlhUGxheWJh
Y2tGb3JEb2N1bWVudCh0aGlzKTsKKyAgICBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOwogI2VuZGlm
CiAKICAgICAvLyBXZSBtdXN0IGNhbGwgY2xlYXJSYXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1
bWVudCBjbGFzcyBpbmhlcml0cyBUcmVlU2NvcGUKQEAgLTE3MjIsNiArMTcyMSwyMyBAQCB2b2lk
IERvY3VtZW50OjphbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKCkKICAg
ICAgICAgZWxlbWVudC0+YWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrQ2hhbmdlZCgp
OwogfQogCit2b2lkIERvY3VtZW50OjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgaWYg
KGF1dG8qIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IFBsYXRmb3JtTWVkaWFTZXNzaW9u
TWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3RzKCkpCisgICAgICAgIHBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci0+c3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCh0aGlzKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQoreworICAgIGlmIChh
dXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygpKQorICAgICAgICBwbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXItPnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoKnRoaXMpOwor
fQorCit2b2lkIERvY3VtZW50OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBpZiAo
YXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgcGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyLT5yZXN1bWVBbGxNZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoKnRoaXMpOwor
fQogI2VuZGlmCiAKIFN0cmluZyBEb2N1bWVudDo6bm9kZU5hbWUoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCA1YjVmZjQ5YjdmMTM2YzY3MjI0NWZlNWJiOTI0ZmFmZDhhZTM0ZTBiLi45
ZDdkOGZhMGIzN2JjMTdmMzcyOTJkZWI2NjBlOTUzOTA3Y2UwYjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMTExOSw2ICsxMTE5LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlZ2lzdGVyRm9y
QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrQ2hhbmdlZENhbGxiYWNrcyhIVE1MTWVk
aWFFbGVtZW50Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yQWxsb3dzTWVkaWFEb2N1bWVudElu
bGluZVBsYXliYWNrQ2hhbmdlZENhbGxiYWNrcyhIVE1MTWVkaWFFbGVtZW50Jik7CiAgICAgdm9p
ZCBhbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkKCk7CisKKyAgICB2b2lk
IHN0b3BBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5YmFj
aygpOworICAgIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOwogI2VuZGlmCiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhib29sKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDBkY2M4ODkwNTA2M2QyZWIy
NzA5ZTYyZTM0ZTk1ZWEwNzNiMjg4YTQuLjE2Y2U4NzljNWFiOGFmNDQ3NGRlYmI1NTQ4ZjFhZTlj
MDhjOTQ1MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
NDY2LDcgKzQ2Niw2IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX2hhdmVTZXRV
cENhcHRpb25Db250YWluZXIoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1faXNTY3J1YmJpbmdSZW1v
dGVseShmYWxzZSkKLSAgICAsIG1fc2hvdWxkVW5wYXVzZUludGVybmFsT25SZXN1bWUoZmFsc2Up
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgICwgbV90cmFja3NBcmVSZWFkeSh0cnVlKQog
ICAgICwgbV9oYXZlVmlzaWJsZVRleHRUcmFjayhmYWxzZSkKQEAgLTgzMiw2ICs4MzEsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cgogCiAgICAgICAgIC8vIElmIGEgc3JjIGF0dHJpYnV0ZSBv
ZiBhIG1lZGlhIGVsZW1lbnQgaXMgc2V0IG9yIGNoYW5nZWQsIHRoZSB1c2VyCiAgICAgICAgIC8v
IGFnZW50IG11c3QgaW52b2tlIHRoZSBtZWRpYSBlbGVtZW50J3MgbWVkaWEgZWxlbWVudCBsb2Fk
IGFsZ29yaXRobS4KKyAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInNyYyA9ICIsIHZh
bHVlKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgICAgIHByZXBhcmVG
b3JMb2FkKCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IGNvbnRyb2xzQXR0cikKQEAgLTkxOSw2
ICs5MTksOCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUo
KQogewogICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8g
cHJlcGFyZUZvckxvYWQgbWF5IHJlc3VsdCBpbiBhICdiZWZvcmVsb2FkJyBldmVudCwgd2hpY2gg
Y2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSKTsKKwogICAgIGlmIChtX2luQWN0aXZlRG9jdW1lbnQgJiYgbV9uZXR3b3JrU3RhdGUg
PT0gTkVUV09SS19FTVBUWSAmJiAhYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihzcmNB
dHRyKS5pc0VtcHR5KCkpCiAgICAgICAgIHByZXBhcmVGb3JMb2FkKCk7CiAKQEAgLTExMzAsNiAr
MTEzMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U3JjT2JqZWN0KE1lZGlhUHJvdmlk
ZXImJiBtZWRpYVByb3ZpZGVyKQogICAgIC8vIDQuNy4xNC4yLiBMb2NhdGlvbiBvZiB0aGUgbWVk
aWEgcmVzb3VyY2UKICAgICAvLyBzcmNPYmplY3Q6IE9uIHNldHRpbmcsIGl0IG11c3Qgc2V0IHRo
ZSBlbGVtZW504oCZcyBhc3NpZ25lZCBtZWRpYSBwcm92aWRlciBvYmplY3QgdG8gdGhlIG5ldwog
ICAgIC8vIHZhbHVlLCBhbmQgdGhlbiBpbnZva2UgdGhlIGVsZW1lbnTigJlzIG1lZGlhIGVsZW1l
bnQgbG9hZCBhbGdvcml0aG0uCisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAgICAgbV9t
ZWRpYVByb3ZpZGVyID0gV1RGTW92ZShtZWRpYVByb3ZpZGVyKTsKICAgICBwcmVwYXJlRm9yTG9h
ZCgpOwogfQpAQCAtMTc2MiwxMCArMTc2NSwxNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY29uc3QgTWVkaWFUaW1lJiBtb3ZpZVRpbWUpCiAgICAg
aWYgKG5leHRDdWUpCiAgICAgICAgIG5leHRJbnRlcmVzdGluZ1RpbWUgPSBzdGQ6Om1pbihuZXh0
SW50ZXJlc3RpbmdUaW1lLCBuZXh0Q3VlLT5sb3coKSk7CiAKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAibmV4dEludGVyZXN0aW5nVGltZToiLCBuZXh0SW50ZXJlc3RpbmdUaW1lKTsKKwog
ICAgIGlmIChuZXh0SW50ZXJlc3RpbmdUaW1lLmlzVmFsaWQoKSAmJiBtX3BsYXllcikgewotICAg
ICAgICBtX3BsYXllci0+cGVyZm9ybVRhc2tBdE1lZGlhVGltZShbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cih0aGlzKSwgbmV4dEludGVyZXN0aW5nVGltZV0gewotICAgICAgICAgICAgaWYgKHdlYWtU
aGlzKQotICAgICAgICAgICAgICAgIHdlYWtUaGlzLT51cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVz
KHdlYWtUaGlzLT5jdXJyZW50TWVkaWFUaW1lKCkpOworICAgICAgICBtX3BsYXllci0+cGVyZm9y
bVRhc2tBdE1lZGlhVGltZShbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgbmV4
dEludGVyZXN0aW5nVGltZV0geworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8gY3VycmVudE1lZGlhVGltZSA9IHdl
YWtUaGlzLT5jdXJyZW50TWVkaWFUaW1lKCk7CisgICAgICAgICAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCAiIC0gbGFtYmRhLCBjdXJyZW50TWVkaWFUaW1lOiIsIGN1cnJlbnRNZWRpYVRpbWUp
OworICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVu
dE1lZGlhVGltZSk7CiAgICAgICAgIH0sIG5leHRJbnRlcmVzdGluZ1RpbWUpOwogICAgIH0KIApA
QCAtNTcyOCwxMSArNTczNyw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uIHJlYXNvbikKICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2
aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVBhZ2VDb25zZW50VG9S
ZXN1bWVNZWRpYSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lv
bjo6UGFnZVdpbGxCZVN1c3BlbmRlZDoKLSAgICAgICAgaWYgKCFtX3BhdXNlZEludGVybmFsKSB7
Ci0gICAgICAgICAgICBtX3Nob3VsZFVucGF1c2VJbnRlcm5hbE9uUmVzdW1lID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHNldFBhdXNlZEludGVybmFsKHRydWUpOwotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1
c2VkOgogICAgIGNhc2UgUmVhc29uRm9yU3VzcGVuc2lvbjo6V2lsbERlZmVyTG9hZGluZzoKICAg
ICAgICAgLy8gRG8gbm90aGluZywgd2UgZG9uJ3QgcGF1c2UgbWVkaWEgcGxheWJhY2sgaW4gdGhl
c2UgY2FzZXMuCkBAIC01NzQ4LDExICs1NzUyLDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZXN1bWUoKQogCiAgICAgbV9hc3luY0V2ZW50UXVldWUucmVzdW1lKCk7CiAKLSAgICBpZiAobV9z
aG91bGRVbnBhdXNlSW50ZXJuYWxPblJlc3VtZSkgewotICAgICAgICBtX3Nob3VsZFVucGF1c2VJ
bnRlcm5hbE9uUmVzdW1lID0gZmFsc2U7Ci0gICAgICAgIHNldFBhdXNlZEludGVybmFsKGZhbHNl
KTsKLSAgICB9Ci0KICAgICBzZXRTaG91bGRCdWZmZXJEYXRhKHRydWUpOwogCiAgICAgaWYgKCFt
X21lZGlhU2Vzc2lvbi0+cGFnZUFsbG93c1BsYXliYWNrQWZ0ZXJSZXN1bWluZygpKQpAQCAtNTkz
Niw2ICs1OTM1LDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQoYm9vbCBzaG91bGRQbGF5KQogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNT
X1BMQVlCQUNLX1RBUkdFVCkKIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojp3ZWJraXRDdXJyZW50
UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCkgY29uc3QKK3sKKyAgICBJTkZPX0xPRyhMT0dJREVO
VElGSUVSLCBtX2lzUGxheWluZ1RvV2lyZWxlc3NUYXJnZXQpOworICAgIHJldHVybiBtX2lzUGxh
eWluZ1RvV2lyZWxlc3NUYXJnZXQ7Cit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UGxh
eWluZ09uU2Vjb25kU2NyZWVuKGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlID09IG1fcGxh
eWluZ09uU2Vjb25kU2NyZWVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApp
bmRleCAzNjBhZjg2NzRjZjg4MDYyMTJiYzgyNTlhOThmNTcwODM5ODhhMmQyLi45MTA0OThkNzU2
N2ZhNDJlZTg5MzNmMWRlNTBjZWM4YTQ5YjNmODhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaApAQCAtNDEyLDcgKzQxMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNo
b3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGJvb2wpIG92ZXJyaWRlOwogI2VuZGlmCiAgICAgYm9v
bCBpc1BsYXlpbmdUb1dpcmVsZXNzUGxheWJhY2tUYXJnZXQoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBtX2lzUGxheWluZ1RvV2lyZWxlc3NUYXJnZXQ7IH07Ci0gICAgYm9vbCB3ZWJraXRDdXJy
ZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzKCkgY29uc3QgeyByZXR1cm4gbV9pc1BsYXlpbmdU
b1dpcmVsZXNzVGFyZ2V0OyB9CisgICAgYm9vbCB3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJ
c1dpcmVsZXNzKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFBsYXlpbmdPblNlY29uZFNjcmVlbihi
b29sIHZhbHVlKTsKICAgICBib29sIGlzUGxheWluZ09uU2Vjb25kU2NyZWVuKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9wbGF5aW5nT25TZWNvbmRTY3JlZW47IH0KQEAgLTExMTAsNyArMTEx
MCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1faXNTY3J1YmJpbmdSZW1vdGVseSA6IDE7CiAg
ICAgYm9vbCBtX3dhaXRpbmdUb0VudGVyRnVsbHNjcmVlbiA6IDE7Ci0gICAgYm9vbCBtX3Nob3Vs
ZFVucGF1c2VJbnRlcm5hbE9uUmVzdW1lIDogMTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
ICAgICBib29sIG1fdHJhY2tzQXJlUmVhZHkgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVk
aWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggMGFiYTJkMmU1ODdmM2JjMzViNjI2ZmJhN2M5ZjM5
NDU0ZGExMTQzYS4uMjJlMmExNmYyMDYwZTNkNWVmYzcwZWM4YzA1OWJlNmJmYWIxNTUyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC0yNjIsNiAr
MjYyLDEwIEBAIFN1Y2Nlc3NPcjxNZWRpYVBsYXliYWNrRGVuaWFsUmVhc29uPiBNZWRpYUVsZW1l
bnRTZXNzaW9uOjpwbGF5YmFja1Blcm1pdHRlZCgpIGNvCiAgICAgfQogCiAgICAgYXV0byYgZG9j
dW1lbnQgPSBtX2VsZW1lbnQuZG9jdW1lbnQoKTsKKyAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQu
cGFnZSgpOworICAgIGlmICghcGFnZSB8fCBwYWdlLT5tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQo
KSkKKyAgICAgICAgcmV0dXJuIE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb246OlBhZ2VDb25zZW50
UmVxdWlyZWQ7CisKICAgICBpZiAoZG9jdW1lbnQuaXNNZWRpYURvY3VtZW50KCkgJiYgIWRvY3Vt
ZW50Lm93bmVyRWxlbWVudCgpKQogICAgICAgICByZXR1cm4geyB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAppbmRleCBmYjBmYzM4OWEwNDRmOWIxNzUxMzEwMmIwOWM2OTFkYTJiY2Y3MzljLi41OTIzMjA3
MzdlNjIwMzVjYTFhOWI0MWJlYzJlMGY2YjJjYzg4ZDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAg
LTE3MTYsNiArMTcxNiw0MSBAQCB2b2lkIFBhZ2U6OnN0b3BNZWRpYUNhcHR1cmUoKQogI2VuZGlm
CiB9CiAKK3ZvaWQgUGFnZTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQoreworICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1
bWVudCgpKQorICAgICAgICAgICAgZG9jdW1lbnQtPnN0b3BBbGxNZWRpYVBsYXliYWNrKCk7Cisg
ICAgfQorfQorCit2b2lkIFBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBB
U1NFUlQoIW1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKTsKKyAgICBpZiAobV9tZWRpYVBsYXli
YWNrSXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpKQor
ICAgICAgICAgICAgZG9jdW1lbnQtPnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgfQor
CisgICAgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgPSB0cnVlOworfQorCit2b2lkIFBhZ2U6
OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQoreworICAgIEFTU0VSVChtX21lZGlhUGxheWJhY2tJ
c1N1c3BlbmRlZCk7CisgICAgaWYgKCFtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkID0gZmFsc2U7CisKKyAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgICAgIGRvY3VtZW50LT5yZXN1bWVBbGxNZWRpYVBs
YXliYWNrKCk7CisgICAgfQorfQorCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCiB2b2lkIFBh
Z2U6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUgZXZlbnRUeXBlKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBkNjU2ZjFlODNlZmZhMTRjNThkNTcyYTE4YmJhZmJmNzE5N2QwZTQ1Li44MDIx
NWNlZmM4MTRjMDE5N2M2MDFhMjA3NTIzNDFmNjk3MTE1M2YwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
NjAwLDYgKzYwMCwxMSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNdXRl
ZChNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3MpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wQWxs
TWVkaWFQbGF5YmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3VzcGVuZEFsbE1lZGlh
UGxheWJhY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soKTsKKyAgICBib29sIG1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCgpIHsgcmV0dXJuIG1fbWVk
aWFQbGF5YmFja0lzU3VzcGVuZGVkOyB9CisKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlLCB1
aW50NjRfdCk7CkBAIC05NDUsNiArOTUwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9v
bCBtX3Nob3VsZEVuYWJsZUlDRUNhbmRpZGF0ZUZpbHRlcmluZ0J5RGVmYXVsdCB7IHRydWUgfTsK
KyAgICBib29sIG1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIH07CiAKIGlu
bGluZSBQYWdlR3JvdXAmIFBhZ2U6Omdyb3VwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCmluZGV4IDE3YTMwZDVjZWFjZTVm
OGEwOWVlODU2YWI1YzEzYTUxNmVmNTk0YTEuLjI1YzE3Nzk5MGNmMjYxM2YyNWZlMGFkMDBkODgx
MjQyOWI2ZGEwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UGxhdGZvcm1NZWRpYVNlc3Npb24uaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN1c3BlbmRlZFVuZGVyTG9jaywKICAgICAgICAgSW52aXNpYmxlQXV0b3BsYXksCiAgICAgICAg
IFByb2Nlc3NJbmFjdGl2ZSwKKyAgICAgICAgUGxheWJhY2tTdXNwZW5kZWQsCiAgICAgfTsKICAg
ICBJbnRlcnJ1cHRpb25UeXBlIGludGVycnVwdGlvblR5cGUoKSBjb25zdCB7IHJldHVybiBtX2lu
dGVycnVwdGlvblR5cGU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKaW5kZXggMWEzMDVk
MTczYmIwMjMxNGZiZDg1MDU3OThmMjFlMGY4ZDQxZDQ4YS4uZDI5ZDdiMmI3ZDUzYmJiYjAwYTE2
YTY0NjNlMTViNmEzYTA1NGJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCkBAIC00MTks
NiArNDE5LDIyIEBAIHZvaWQgUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzdG9wQWxsTWVk
aWFQbGF5YmFja0ZvclByb2Nlc3MoKQogICAgIH0pOwogfQogCit2b2lkIFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChjb25zdCBE
b2N1bWVudCYgZG9jdW1lbnQpCit7CisgICAgZm9yRWFjaFNlc3Npb24oWyZdIChQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbiYgc2Vzc2lvbiwgc2l6ZV90KSB7CisgICAgICAgIGlmIChzZXNzaW9uLmNsaWVu
dCgpLmhvc3RpbmdEb2N1bWVudCgpID09ICZkb2N1bWVudCkKKyAgICAgICAgICAgIHNlc3Npb24u
YmVnaW5JbnRlcnJ1cHRpb24oUGxhdGZvcm1NZWRpYVNlc3Npb246OlBsYXliYWNrU3VzcGVuZGVk
KTsKKyAgICB9KTsKK30KKwordm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpCit7
CisgICAgZm9yRWFjaFNlc3Npb24oWyZdIChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYgc2Vzc2lvbiwg
c2l6ZV90KSB7CisgICAgICAgIGlmIChzZXNzaW9uLmNsaWVudCgpLmhvc3RpbmdEb2N1bWVudCgp
ID09ICZkb2N1bWVudCkKKyAgICAgICAgICAgIHNlc3Npb24uZW5kSW50ZXJydXB0aW9uKFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpNYXlSZXN1bWVQbGF5aW5nKTsKKyAgICB9KTsKK30KKwogdm9pZCBQ
bGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OmZvckVhY2hTZXNzaW9uKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoUGxhdGZvcm1NZWRpYVNlc3Npb24mLCBzaXplX3QpPiYgcHJlZGljYXRlKSBjb25zdAog
ewogICAgICsrbV9pdGVyYXRpbmdPdmVyU2Vzc2lvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCmlu
ZGV4IDRkODdmZDhmOGFlMDFhMzVlZTgxNjFjZjBkZTU0YjZlYmQ3OGFhOWIuLmU2NzBkYWZjMTEz
MTMxZGFhNGUyODJjOWM0MGJiMjA5MzI3YjQ4MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oCkBA
IC03Nyw2ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHN0b3BBbGxNZWRpYVBsYXliYWNrRm9y
RG9jdW1lbnQoY29uc3QgRG9jdW1lbnQqKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BB
bGxNZWRpYVBsYXliYWNrRm9yUHJvY2VzcygpOwogCisgICAgdm9pZCBzdXNwZW5kQWxsTWVkaWFQ
bGF5YmFja0ZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50Jik7CisgICAgdm9pZCByZXN1bWVBbGxN
ZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKKwogICAgIGVudW0gU2Vz
c2lvblJlc3RyaWN0aW9uRmxhZ3MgewogICAgICAgICBOb1Jlc3RyaWN0aW9ucyA9IDAsCiAgICAg
ICAgIENvbmN1cnJlbnRQbGF5YmFja05vdFBlcm1pdHRlZCA9IDEgPDwgMCwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDc0MDU4NzFmMTQ0
NmVjMjRlOGZjMzQ5NzA1OGQ4OGY5OWU4NGUyMmYuLmE2ODNiNWMxNWU4ZmYxNGI3NWNjMDE2ZDIy
ZDMzNTVlZGM4ZGMzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtNDQ4NCw2ICs0NDg0LDIxIEBAIC0gKHZvaWQpX3RvZ2dsZVBpY3R1
cmVJblBpY3R1cmUKICNlbmRpZgogfQogCistICh2b2lkKV9zdG9wQWxsTWVkaWFQbGF5YmFjawor
eworICAgIF9wYWdlLT5zdG9wQWxsTWVkaWFQbGF5YmFjaygpOworfQorCistICh2b2lkKV9zdXNw
ZW5kQWxsTWVkaWFQbGF5YmFjaworeworICAgIF9wYWdlLT5zdXNwZW5kQWxsTWVkaWFQbGF5YmFj
aygpOworfQorCistICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCit7CisgICAgX3BhZ2Ut
PnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKK30KKwogLSAoTlNVUkwgKilfdW5yZWFjaGFibGVV
UkwKIHsKICAgICByZXR1cm4gW05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpfcGFnZS0+cGFn
ZUxvYWRTdGF0ZSgpLnVucmVhY2hhYmxlVVJMKCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMTcwYzJhYWVmYTE1
MGI0MWY5OTZjY2U0NjhjZTMyNzc5YmFkNmY4Zi4uN2ExNmU1ZGQ1N2I2ZjQ5YjU4NDkyZjMxYjBi
OTEzYTg5ZTkyMWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zOTksNyArMzk5LDkgQEAgdHlwZWRlZiBOU19P
UFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgX2lzUGljdHVyZUluUGljdHVyZUFjdGl2ZTsKIC0gKHZvaWQpX3VwZGF0
ZU1lZGlhUGxheWJhY2tDb250cm9sc01hbmFnZXI7CiAtICh2b2lkKV90b2dnbGVQaWN0dXJlSW5Q
aWN0dXJlOwotCistICh2b2lkKV9zdG9wQWxsTWVkaWFQbGF5YmFjazsKKy0gKHZvaWQpX3N1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrOworLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjazsKIEBl
bmQKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGFjODBhN2I1OWRiNDNkOTk5NjZkZjY5MzE1YTljODNkMjAxMGZmNjYu
LjMzOTkwYTI2NGM4ZGNkODNmNTY3NGViMjQyZmYzMDUyMDk1YzRmNDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDk2Myw2ICs0OTYzLDMwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzdG9wTWVkaWFDYXB0dXJlKCkKICNlbmRpZgogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQoreworICAgIGlmICghaXNWYWxpZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlN0b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJv
eHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
dXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKK30KKwogI2lmIEVOQUJMRShNRURJ
QV9TRVNTSU9OKQogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVu
dFR5cGUgZXZlbnRUeXBlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA3MzRkMjExNzE5ZTk0YmZmOTVhOTYxZjNmMGQ2MzA5Y2NjM2VmYTE1Li5iNzcxOWMxNjg5
MDlkNWQyMWNiM2FiZmUyMzlmZDA4NDY3NWQxMTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTExNyw2ICsxMTE3LDEwIEBAIHB1YmxpYzoKICAgICBib29sIG1l
ZGlhQ2FwdHVyZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2FwdHVyZUVuYWJsZWQ7
IH0KICAgICB2b2lkIHN0b3BNZWRpYUNhcHR1cmUoKTsKIAorICAgIHZvaWQgc3RvcEFsbE1lZGlh
UGxheWJhY2soKTsKKyAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgdm9p
ZCByZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7CisKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikK
ICAgICBib29sIGhhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNNZWRpYVNlc3Npb25XaXRoQWN0aXZlTWVkaWFFbGVtZW50czsgfQogICAg
IHZvaWQgaGFuZGxlTWVkaWFFdmVudChXZWJDb3JlOjpNZWRpYUV2ZW50VHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5W
aWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCmluZGV4IDUwYzFmNTFjZTA2OGU1YzAyMDQy
NGQ3MzNhMThhYjAxY2M0MWUyOWIuLmY2OTI0Y2NiYTM2ZTA3OTAyNGU3MjBiZjc5YjI0M2Y4MWNj
NDlmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVu
L1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyLm1tCkBAIC01NTks
MTMgKzU1OSwxNyBAQCAtICh2b2lkKV9zaG93UGhpc2hpbmdBbGVydAogICAgIE5TU3RyaW5nICph
bGVydE1lc3NhZ2UgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCJU
eXBpbmcgaXMgbm90IGFsbG93ZWQgaW4gZnVsbCBzY3JlZW4gd2Vic2l0ZXMuIOKAnCVA4oCdIG1h
eSBiZSBzaG93aW5nIGEgZmFrZSBrZXlib2FyZCB0byB0cmljayB5b3UgaW50byBkaXNjbG9zaW5n
IHBlcnNvbmFsIG9yIGZpbmFuY2lhbCBpbmZvcm1hdGlvbi4iLCAiRnVsbCBTY3JlZW4gRGVjZXB0
aXZlIFdlYnNpdGUgV2FybmluZyBTaGVldCBDb250ZW50IFRleHQiKSwgKE5TU3RyaW5nICopc2Vs
Zi5sb2NhdGlvbl07CiAgICAgVUlBbGVydENvbnRyb2xsZXIqIGFsZXJ0ID0gW1VJQWxlcnRDb250
cm9sbGVyIGFsZXJ0Q29udHJvbGxlcldpdGhUaXRsZTphbGVydFRpdGxlIG1lc3NhZ2U6YWxlcnRN
ZXNzYWdlIHByZWZlcnJlZFN0eWxlOlVJQWxlcnRDb250cm9sbGVyU3R5bGVBbGVydF07CiAKLSAg
ICBpZiAoYXV0byogcGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkKKyAgICBpZiAoYXV0byog
cGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkgeworICAgICAgICBwYWdlLT5zdXNwZW5kQWxs
TWVkaWFQbGF5YmFjaygpOwogICAgICAgICBwYWdlLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKTsKKyAgICB9CiAKICAgICBVSUFsZXJ0QWN0aW9uKiBleGl0QWN0aW9uID0g
W1VJQWxlcnRBY3Rpb24gYWN0aW9uV2l0aFRpdGxlOldFQl9VSV9TVFJJTkdfS0VZKCJFeGl0IEZ1
bGwgU2NyZWVuIiwgIkV4aXQgRnVsbCBTY3JlZW4gKEVsZW1lbnQgRnVsbCBTY3JlZW4pIiwgIkZ1
bGwgU2NyZWVuIERlY2VwdGl2ZSBXZWJzaXRlIEV4aXQgQWN0aW9uIikgc3R5bGU6VUlBbGVydEFj
dGlvblN0eWxlQ2FuY2VsIGhhbmRsZXI6XihVSUFsZXJ0QWN0aW9uICogYWN0aW9uKSB7CiAgICAg
ICAgIFtzZWxmIF9jYW5jZWxBY3Rpb246YWN0aW9uXTsKLSAgICAgICAgaWYgKGF1dG8qIHBhZ2Ug
PSBbc2VsZi5fd2ViVmlldyBfcGFnZV0pCisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gW3NlbGYu
X3dlYlZpZXcgX3BhZ2VdKSB7CiAgICAgICAgICAgICBwYWdlLT5yZXN1bWVBY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9ucygpOworICAgICAgICAgICAgcGFnZS0+cmVzdW1lQWxsTWVkaWFQbGF5
YmFjaygpOworICAgICAgICB9CiAgICAgfV07CiAKICAgICBVSUFsZXJ0QWN0aW9uKiBzdGF5QWN0
aW9uID0gW1VJQWxlcnRBY3Rpb24gYWN0aW9uV2l0aFRpdGxlOldFQl9VSV9TVFJJTkdfS0VZKCJT
dGF5IGluIEZ1bGwgU2NyZWVuIiwgIlN0YXkgaW4gRnVsbCBTY3JlZW4gKEVsZW1lbnQgRnVsbCBT
Y3JlZW4pIiwgIkZ1bGwgU2NyZWVuIERlY2VwdGl2ZSBXZWJzaXRlIFN0YXkgQWN0aW9uIikgc3R5
bGU6VUlBbGVydEFjdGlvblN0eWxlRGVmYXVsdCBoYW5kbGVyOl4oVUlBbGVydEFjdGlvbiAqIGFj
dGlvbikgewpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IGMzNTVkNTRhZGU5MDJlYjM2NTNmY2U0MzlkMGY4NmMxZDg3ZWM1OTkuLjQzYWRjYzRjODk0
M2I4NTI0Njg1MDk4MmYzNzY2NWE1OTMyYjEzZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0xMi0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViS2l0TGVnYWN5XSBN
ZWRpYSBwbGF5YmFjayBwYXVzZXMgb24gc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbTogQWRkZWQuCisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9pb3MvU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEubW06IEFkZGVkLgorICAgICAg
ICAoLVtTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYURlbGVnYXRlIHdlYlZpZXdEaWRGaW5pc2hM
b2FkOl0pOgorICAgICAgICAoLVtTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYURlbGVnYXRlIHVp
V2ViVmlldzpkaWRDb21taXRMb2FkRm9yRnJhbWU6XSk6CisgICAgICAgICgtW1Njcm9sbGluZ0Rv
ZXNOb3RQYXVzZU1lZGlhRGVsZWdhdGUgaGFuZGxlRXZlbnQ6XSk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxOC0xMC0zMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBTREtfVkFSSUFOVCBidWlsZCBkZXN0aW5hdGlvbnMgc2hvdWxkIGJl
IHNlcGFyYXRlIGZyb20gbm9uLVNES19WQVJJQU5UIGJ1aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2ZDdmYTM3ZDljY2VmNDk4ZTMyODM4YzBjZDYzNzE1ODYyYjA0NDlkLi4xNDk4NTUz
OWFhMzFlNzJjZDBmOGJmZmJhMzI5ZTM0MzgwOTM2MmNkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNzYxLDYgKzc2MSw4IEBACiAJCUNEQjVERkZGMjEzNjEwRkEwMEQzRTE4OSAvKiBub3ct
cGxheWluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQjVERkZFMjEzNjBFRDgwMEQzRTE4OSAvKiBub3ctcGxheWluZy5odG1sICov
OyB9OwogCQlDREJGQ0M0NTFBOUZGNDUzMDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFs
RnJhbWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REJGQ0M0MzFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0g
Ki87IH07CiAJCUNEQkZDQzQ2MUE5RkY0OUUwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRp
YWxGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEQkZDQzQyMUE5RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRp
YWxGcmFtZS5odG1sICovOyB9OworCQlDREMwOTMyQjIxQzg3MkMxMDAzMEM0QjAgLyogU2Nyb2xs
aW5nRG9lc05vdFBhdXNlTWVkaWEubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDREMwOTMyQTIxQzg3MkMxMDAzMEM0QjAgLyogU2Nyb2xsaW5nRG9lc05v
dFBhdXNlTWVkaWEubW0gKi87IH07CisJCUNEQzA5MzJFMjFDOTkzNDQwMDMwQzRCMCAvKiBTdG9w
U3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RDMDkzMkQyMUM5OTM0NDAwMzBDNEIwIC8qIFN0b3BTdXNwZW5kUmVz
dW1lQWxsTWVkaWEubW0gKi87IH07CiAJCUNEQzhFNDhEMUJDNUNCNDUwMDU5NEZFQyAvKiBBdWRp
b1Nlc3Npb25DYXRlZ29yeUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQzhFNDg1MUJDNUIxOTQwMDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25DYXRl
Z29yeUlPUy5tbSAqLzsgfTsKIAkJQ0RDOEU0OTQxQkM2RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdp
dGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREM4RTQ4OTFCQzVDOTYyMDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5o
dG1sICovOyB9OwogCQlDREM4RTQ5NTFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRp
by5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDOEU0OEExQkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8ubXA0ICovOyB9
OwpAQCAtMjA0MCw2ICsyMDQyLDggQEAKIAkJQ0RCNURGRkUyMTM2MEVEODAwRDNFMTg5IC8qIG5v
dy1wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm93LXBsYXlpbmcuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEQkZDQzQyMUE5RkY0NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVu
Wm9vbUluaXRpYWxGcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRnVsbHNj
cmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
Q0RCRkNDNDMxQTlGRjQ0ODAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRnVsbHNjcmVlblpvb21J
bml0aWFsRnJhbWUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzA5MzJBMjFD
ODcyQzEwMDMwQzRCMCAvKiBTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNjcm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlhLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDREMwOTMyRDIxQzk5MzQ0MDAzMEM0QjAgLyogU3RvcFN1c3BlbmRS
ZXN1bWVBbGxNZWRpYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0b3BTdXNwZW5kUmVzdW1l
QWxsTWVkaWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQzJDNzE0MTc5NzA4
OUQwMEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRpbWVSYW5n
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREM4RTQ4NTFCQzVCMTk0MDA1
OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0ODkxQkM1Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdp
dGgtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ2aWRlby13aXRoLWF1
ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU2Myw2ICsyNTY3LDcg
QEAKIAkJCQkzN0E5REJFNzIxM0I0QzkzMDBEMjYxQTIgLyogV0tXZWJWaWV3U2VydmVyVHJ1c3RL
VkMubW0gKi8sCiAJCQkJOTNGNTZEQTgxRTVGOTE4MTAwM0VERTg0IC8qIFdLV2ViVmlld1NuYXBz
aG90Lm1tICovLAogCQkJCTk5ODRGQUNBMUNGRkFFRUUwMDhEMTk4QyAvKiBXS1dlYlZpZXdUZXh0
SW5wdXQubW0gKi8sCisJCQkJQ0RDMDkzMkQyMUM5OTM0NDAwMzBDNEIwIC8qIFN0b3BTdXNwZW5k
UmVzdW1lQWxsTWVkaWEubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJXZWJLaXQgQ29jb2EiOwog
CQkJcGF0aCA9IFdlYktpdENvY29hOwpAQCAtMzUxNSw2ICszNTIwLDcgQEAKIAkJCQlDREM4RTQ5
QTFCQzcyOEZFMDA1OTRGRUMgLyogUmVzb3VyY2VzICovLAogCQkJCUNEQzhFNDg1MUJDNUIxOTQw
MDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbSAqLywKIAkJCQkwRjRGRkE5RDFF
RDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQubW0gKi8sCisJCQkJ
Q0RDMDkzMkEyMUM4NzJDMTAwMzBDNEIwIC8qIFNjcm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlhLm1t
ICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMzg0Niw2ICszODUyLDcgQEAKIAkJCQk1NzMwM0JDQTIwMDgyQzAxMDAzNTU5NjUgLyogQ0JP
UldyaXRlclRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ1MTdCN0YyMDU1MTAxQjAwQzI2
NzIxIC8qIENsYXNzTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VF
NjFBNDExQUU2MDA0NDdDNEMgLyogQ2xvc2VGcm9tV2l0aGluQ3JlYXRlUGFnZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDREMwOTMyQjIxQzg3MkMxMDAzMEM0QjAgLyogU2Nyb2xsaW5nRG9lc05v
dFBhdXNlTWVkaWEubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCNzFBNDExQTdFMDA0NDdD
NEMgLyogQ2xvc2VOZXdXaW5kb3dJbk5hdmlnYXRpb25Qb2xpY3lEZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RUU1MUE0MTFBRTYwMDQ0N0M0QyAvKiBDbG9zZVRoZW5UZXJtaW5h
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RGOTIyMzcyMTZEMTg2NDAwNjQ3QUE3IC8qIENs
b3NlV2ViVmlld0FmdGVyRW50ZXJGdWxsc2NyZWVuLm1tIGluIFNvdXJjZXMgKi8sCkBAIC00MTM0
LDYgKzQxNDEsNyBAQAogCQkJCTdDQ0U3RUNGMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdG9wTG9hZGlu
Z0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTVCRTE3MTFE
NDI4RTRCMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RUQwMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0RnJvbVN0cmluZy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQzA5MzJFMjFDOTkzNDQwMDMw
QzRCMCAvKiBTdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFRDExQTQxMUE3RTAwNDQ3QzRDIC8qIFN0cmluZ1RydW5jYXRvci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUVDQTY4MENFMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDRTRENURFNzFGNjc0M0JBMDA3MkNGQzYgLyogU3RyaW5nV2l0
aERpcmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxN
ZWRpYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wZDk5YWI2OTg4MmNiYWI1N2FlNWVmYjVjMDFmODQzYWMyMTQ3
MTJhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tCkBAIC0wLDAgKzEsODggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRCAmJiBQTEFU
Rk9STShNQUMpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0
V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1Qo
V0tXZWJWaWV3LCBTdG9wQWxsTWVkaWFQbGF5YmFjaykKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9XCJ2aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtp
dC1wbGF5c2lubGluZT48L3ZpZGVvPiJdOworCisgICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImZ1bmN0aW9uIGV2ZW50VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cud2Vi
a2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShldmVudC50eXBlKTt9
IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFkZEV2
ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBldmVudFRvTWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50TGlz
dGVuZXIoJ3BhdXNlJywgZXZlbnRUb01lc3NhZ2UpOyJdOworCisgICAgX19ibG9jayBib29sIGRp
ZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vpdmlu
Z01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cigndmlkZW8nKS5wbGF5KCkiIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworCisgICAgX19ibG9jayBib29sIGRp
ZFBhdXNlID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2Fn
ZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2UgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBf
c3RvcEFsbE1lZGlhUGxheWJhY2tdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
UGF1c2UpOworfQorCitURVNUKFdLV2ViVmlldywgU3VzcGVuZFJlc3VtZUFsbE1lZGlhUGxheWJh
Y2spCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8dmlkZW8gc3JjPVwi
dmlkZW8td2l0aC1hdWRpby5tcDRcIiB3ZWJraXQtcGxheXNpbmxpbmU+PC92aWRlbz4iXTsKKwor
ICAgIFt3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmdW5jdGlvbiBldmVu
dFRvTWVzc2FnZShldmVudCl7d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRs
ZXIucG9zdE1lc3NhZ2UoZXZlbnQudHlwZSk7fSB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yKCd2aWRlbycpOyB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgZXZlbnRU
b01lc3NhZ2UpOyB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIGV2ZW50VG9NZXNzYWdl
KTsiXTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICBb
d2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyIgYWN0aW9uOl57
IGRpZEJlZ2luUGxheWluZyA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVvJykucGxheSgpIiBjb21wbGV0aW9u
SGFuZGxlcjpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5
aW5nKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRQYXVzZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwYXVzZSIgYWN0aW9uOl57IGRpZFBhdXNl
ID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZFBhdXNlKTsKKworICAgIF9fYmxvY2sgYm9v
bCBkaWRSZWplY3QgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdN
ZXNzYWdlOkAicmVqZWN0ZWQiIGFjdGlvbjpeeyBkaWRSZWplY3QgPSB0cnVlOyB9XTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRl
bycpLnBsYXkoKS5jYXRjaCgoKSA9IHsgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVz
dEhhbmRsZXIucG9zdE1lc3NhZ2UoJ3JlamVjdGVkJyk7IH0pIiBjb21wbGV0aW9uSGFuZGxlcjpu
aWxdOworCisgICAgZGlkQmVnaW5QbGF5aW5nID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9y
bUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmciIGFjdGlvbjpeeyBkaWRCZWdpblBsYXlp
bmcgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja107Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlpbmcpOworfQorCit9IC8v
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1Njcm9sbGluZ0RvZXNOb3RQYXVzZU1l
ZGlhLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1Njcm9s
bGluZ0RvZXNOb3RQYXVzZU1lZGlhLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRjMGUwOTA0NGNlMTA4NDVlOGRj
NDc3ZmE0YWE0Yjk5YzUzYzJjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEubW0K
QEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgor
I2ltcG9ydCA8V2ViS2l0L0RPTUhUTUxNZWRpYUVsZW1lbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9X
ZWJGcmFtZVByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFj
ZSBTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYURlbGVnYXRlIDogTlNPYmplY3QgPFVJV2ViVmll
d0RlbGVnYXRlLCBET01FdmVudExpc3RlbmVyPiB7Cit9CitAZW5kCisKK3N0YXRpYyBib29sIGRp
ZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9vbCBnb3RNYWluRnJhbWU7CitzdGF0aWMgV2ViRnJhbWUq
IG1haW5GcmFtZTsKKworQGltcGxlbWVudGF0aW9uIFNjcm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlh
RGVsZWdhdGUKKworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0
aW9ucyIpCistICh2b2lkKXdlYlZpZXdEaWRGaW5pc2hMb2FkOihVSVdlYlZpZXcgKil3ZWJWaWV3
CitJR05PUkVfV0FSTklOR1NfRU5ECit7CisgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CisK
Ky0gKHZvaWQpdWlXZWJWaWV3OihVSVdlYlZpZXcgKilzZW5kZXIgZGlkQ29tbWl0TG9hZEZvckZy
YW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgbWFpbkZyYW1lID0gZnJhbWU7CisgICAgZ290
TWFpbkZyYW1lID0gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZGlkUmVjZWl2ZVBhdXNlOworc3Rh
dGljIGJvb2wgZGlkUmVjZWl2ZVBsYXlpbmc7CisKKy0gKHZvaWQpaGFuZGxlRXZlbnQ6KERPTUV2
ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoW2V2ZW50LnR5cGUgaXNFcXVhbFRvU3RyaW5nOkAicGF1
c2UiXSkKKyAgICAgICAgZGlkUmVjZWl2ZVBhdXNlID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChbZXZl
bnQudHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJwbGF5aW5nIl0pCisgICAgICAgIGRpZFJlY2VpdmVQ
bGF5aW5nID0gdHJ1ZTsKK30KK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitU
RVNUKFdlYktpdExlZ2FjeSwgU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEpCit7CisgICAgUmV0
YWluUHRyPFVJV2luZG93PiB1aVdpbmRvdyA9IGFkb3B0TlMoW1tVSVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFJldGFpblB0cjxV
SVdlYlZpZXc+IHVpV2ViVmlldyA9IGFkb3B0TlMoW1tVSVdlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBbdWlXaW5kb3cgYWRkU3Vi
dmlldzp1aVdlYlZpZXcuZ2V0KCldOworCisgICAgdWlXZWJWaWV3LmdldCgpLm1lZGlhUGxheWJh
Y2tSZXF1aXJlc1VzZXJBY3Rpb24gPSBOTzsKKyAgICB1aVdlYlZpZXcuZ2V0KCkuYWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjayA9IFlFUzsKKworICAgIFJldGFpblB0cjxTY3JvbGxpbmdEb2VzTm90
UGF1c2VNZWRpYURlbGVnYXRlPiB0ZXN0Q29udHJvbGxlciA9IGFkb3B0TlMoW1Njcm9sbGluZ0Rv
ZXNOb3RQYXVzZU1lZGlhRGVsZWdhdGUgbmV3XSk7CisgICAgdWlXZWJWaWV3LmdldCgpLmRlbGVn
YXRlID0gdGVzdENvbnRyb2xsZXIuZ2V0KCk7CisKKyAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7
CisgICAgZ290TWFpbkZyYW1lID0gZmFsc2U7CisgICAgbWFpbkZyYW1lID0gbmlsOworCisgICAg
W3VpV2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU0J1
bmRsZS5tYWluQnVuZGxlIFVSTEZvclJlc291cmNlOkAidmlkZW8td2l0aC1hdWRpbyIgd2l0aEV4
dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1d
XTsKKworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisgICAgVXRpbDo6cnVuKCZnb3RN
YWluRnJhbWUpOworCisgICAgRE9NSFRNTE1lZGlhRWxlbWVudCogdmlkZW8gPSAoRE9NSFRNTE1l
ZGlhRWxlbWVudCopW21haW5GcmFtZS5ET01Eb2N1bWVudCBxdWVyeVNlbGVjdG9yOkAidmlkZW8i
XTsKKyAgICBBU1NFUlRfVFJVRShbdmlkZW8gaXNLaW5kT2ZDbGFzczpbRE9NSFRNTE1lZGlhRWxl
bWVudCBjbGFzc11dKTsKKworICAgIFt2aWRlbyBhZGRFdmVudExpc3RlbmVyOkAicGxheWluZyIg
bGlzdGVuZXI6dGVzdENvbnRyb2xsZXIuZ2V0KCkgdXNlQ2FwdHVyZTpOT107CisgICAgW3ZpZGVv
IGFkZEV2ZW50TGlzdGVuZXI6QCJwYXVzZSIgbGlzdGVuZXI6dGVzdENvbnRyb2xsZXIuZ2V0KCkg
dXNlQ2FwdHVyZTpOT107CisKKyAgICBbbWFpbkZyYW1lIHNldFRpbWVvdXRzUGF1c2VkOllFU107
CisKKyAgICBkaWRSZWNlaXZlUGxheWluZyA9IGZhbHNlOworICAgIFt2aWRlbyBwbGF5XTsKKyAg
ICBVdGlsOjpydW4oJmRpZFJlY2VpdmVQbGF5aW5nKTsKKworICAgIFttYWluRnJhbWUgc2V0VGlt
ZW91dHNQYXVzZWQ6Tk9dOworCisgICAgZGlkUmVjZWl2ZVBhdXNlID0gZmFsc2U7CisgICAgW3Zp
ZGVvIHBsYXldOworICAgIFV0aWw6OnJ1bigmZGlkUmVjZWl2ZVBhdXNlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357615</attachid>
            <date>2018-12-18 14:52:46 -0800</date>
            <delta_ts>2019-01-04 11:04:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192829-20181218145245.patch</filename>
            <type>text/plain</type>
            <size>39658</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODQ2ZGU0NjhmODRmYzYw
ZTdhZmYyMTI0NTAzMmYwMzIzOWNjZThiMi4uMjM1ZmZjODE2NzNhY2UzM2YwOGMzMWY2MmU3MWQw
ZDgwMjNkNzA0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE4LTEyLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXRMZWdhY3ldIE1l
ZGlhIHBsYXliYWNrIHBhdXNlcyBvbiBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5ldyBBUEkgdGVzdHM6CisgICAgICAgICAgICBXZWJLaXRM
ZWdhY3kuU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEKKyAgICAgICAgICAgIFdLV2ViVmlldy5T
dG9wQWxsTWVkaWFQbGF5YmFjaworICAgICAgICAgICAgV0tXZWJWaWV3LlN1c3BlbmRSZXN1bWVB
bGxNZWRpYVBsYXliYWNrCisKKyAgICAgICAgRG8gbm90IHVzZSBzdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0cyhSZWFzb25Gb3JTdXNwZW5zaW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkKSB0byBwYXVzZQor
ICAgICAgICB2aWRlby4gUm9sbCBiYWNrIHRoZSBjaGFuZ2VzIHRvIEhUTUxNZWRpYUVsZW1lbnQs
IGFuZCBpbnRyb2R1Y2UgYSBuZXcgc2V0IG9mIFBhZ2UgY2FsbHMKKyAgICAgICAgc3VzcGVuZEFs
bE1lZGlhUGxheWJhY2soKSAmIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSB3aGljaCByZXBsYWNl
cyB0aGUgcmVtb3ZlZCBiYWhhdmlvci4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZEZpbmlzaEluc2VydGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c2V0U3JjT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50Ojp3ZWJraXRDdXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6cGxheWJhY2tQZXJtaXR0ZWQgY29uc3QpOgorICAg
ICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdG9wQWxsTWVk
aWFQbGF5YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdXNwZW5kQWxsTWVkaWFQbGF5
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKToK
KyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1lZGlhUGxh
eWJhY2tJc1N1c3BlbmRlZCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRp
YVNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyOjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVzdW1lQWxsTWVkaWFQbGF5YmFja0Zv
ckRvY3VtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaDoKKwogMjAxOC0xMi0xNCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBDUkFTSCBpbiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWlu
Z0FWRk9iakM6OmNsb3NlU2Vzc2lvbihXVEY6OlN0cmluZyBjb25zdCYsIFdURjo6RnVuY3Rpb248
dm9pZCAoKT4mJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOWFmMjJjOWExYjgyNzc4MmI5ODUyY2FlNWFmOWQzOGI3
N2Y2MDg0OS4uOTQxMmVkYmY5MzllNWU3ZjNhOWUzNmY3ZDhhNmJiNGQwYzJmMGFkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMiBAQAorMjAxOC0xMi0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViS2l0TGVnYWN5XSBNZWRpYSBwbGF5YmFjayBwYXVzZXMg
b24gc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTI4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgYSBuZXcgV2ViUGFnZSwgV2ViUGFnZVByb3h5LCAmIFdLV2ViVmlldyBTUEkgdG8gc3Rv
cCwgc3VzcGVuZCwgYW5kIHJlc3VtZSBhbGwKKyAgICAgICAgZXhpc3RpbmcgbWVkaWEgcGxheWJh
Y2sgaW4gdGhlIHBhZ2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdG9wQWxsTWVkaWFQbGF5YmFja10pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrXSk6CisgICAgICAgICgt
W1dLV2ViVmlldyBfcmVzdW1lQWxsTWVkaWFQbGF5YmFja10pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0b3BBbGxNZWRp
YVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVk
aWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWxsTWVk
aWFQbGF5YmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlci5t
bToKKyAgICAgICAgKC1bV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIgX3Nob3dQaGlzaGluZ0Fs
ZXJ0XSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKwogMjAxOC0xMi0wMyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgTWVkaWFDYXBhYmlsaXRpZXMgYnkgZGVmYXVsdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IGUzMzRhZGJlYWViMDJhZGQ4YTMwNTgyOWM5YjZmMmVlYjRl
NWZhZTIuLjc4YjAxM2FlM2IzNGZkMTM2YTgyMDhiYTY0NzRmMzkyMDIyOWE1ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtNjUyLDggKzY1Miw3IEBAIERvY3VtZW50Ojp+RG9jdW1lbnQo
KQogICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudChudWxscHRyKTsK
IAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlz
dHMoKSkKLSAgICAgICAgcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLT5zdG9wQWxsTWVkaWFQ
bGF5YmFja0ZvckRvY3VtZW50KHRoaXMpOworICAgIHN0b3BBbGxNZWRpYVBsYXliYWNrKCk7CiAj
ZW5kaWYKIAogICAgIC8vIFdlIG11c3QgY2FsbCBjbGVhclJhcmVEYXRhKCkgaGVyZSBzaW5jZSBh
IERvY3VtZW50IGNsYXNzIGluaGVyaXRzIFRyZWVTY29wZQpAQCAtMTcyMiw2ICsxNzIxLDIzIEBA
IHZvaWQgRG9jdW1lbnQ6OmFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFja0NoYW5nZWQo
KQogICAgICAgICBlbGVtZW50LT5hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFu
Z2VkKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAg
ICBpZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNl
c3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgcGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLT5zdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KHRoaXMp
OworfQorCit2b2lkIERvY3VtZW50OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAg
aWYgKGF1dG8qIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IFBsYXRmb3JtTWVkaWFTZXNz
aW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3RzKCkpCisgICAgICAgIHBsYXRmb3JtTWVk
aWFTZXNzaW9uTWFuYWdlci0+c3VzcGVuZEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCgqdGhp
cyk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQoreworICAg
IGlmIChhdXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlhU2Vz
c2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygpKQorICAgICAgICBwbGF0Zm9ybU1l
ZGlhU2Vzc2lvbk1hbmFnZXItPnJlc3VtZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCgqdGhp
cyk7Cit9CiAjZW5kaWYKIAogU3RyaW5nIERvY3VtZW50Ojpub2RlTmFtZSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCmluZGV4IDViNWZmNDliN2YxMzZjNjcyMjQ1ZmU1YmI5MjRmYWZkOGFlMzRl
MGIuLjlkN2Q4ZmEwYjM3YmMxN2YzNzI5MmRlYjY2MGU5NTM5MDdjZTBiNzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCkBAIC0xMTE5LDYgKzExMTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVnaXN0
ZXJGb3JBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2FsbGJhY2tzKEhU
TUxNZWRpYUVsZW1lbnQmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JBbGxvd3NNZWRpYURvY3Vt
ZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2FsbGJhY2tzKEhUTUxNZWRpYUVsZW1lbnQmKTsKICAg
ICB2b2lkIGFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFja0NoYW5nZWQoKTsKKworICAg
IHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBs
YXliYWNrKCk7CisgICAgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7CiAjZW5kaWYKIAog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMGRjYzg4OTA1MDYz
ZDJlYjI3MDllNjJlMzRlOTVlYTA3M2IyODhhNC4uMTZjZTg3OWM1YWI4YWY0NDc0ZGViYjU1NDhm
MWFlOWMwOGM5NDUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CkBAIC00NjYsNyArNDY2LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1faGF2
ZVNldFVwQ2FwdGlvbkNvbnRhaW5lcihmYWxzZSkKICNlbmRpZgogICAgICwgbV9pc1NjcnViYmlu
Z1JlbW90ZWx5KGZhbHNlKQotICAgICwgbV9zaG91bGRVbnBhdXNlSW50ZXJuYWxPblJlc3VtZShm
YWxzZSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5KHRy
dWUpCiAgICAgLCBtX2hhdmVWaXNpYmxlVGV4dFRyYWNrKGZhbHNlKQpAQCAtODMyLDYgKzgzMSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAKICAgICAgICAgLy8gSWYgYSBzcmMgYXR0cmli
dXRlIG9mIGEgbWVkaWEgZWxlbWVudCBpcyBzZXQgb3IgY2hhbmdlZCwgdGhlIHVzZXIKICAgICAg
ICAgLy8gYWdlbnQgbXVzdCBpbnZva2UgdGhlIG1lZGlhIGVsZW1lbnQncyBtZWRpYSBlbGVtZW50
IGxvYWQgYWxnb3JpdGhtLgorICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic3JjID0g
IiwgdmFsdWUpOwogICAgICAgICBpZiAoIXZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgcHJl
cGFyZUZvckxvYWQoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29udHJvbHNBdHRyKQpAQCAt
OTE5LDYgKzkxOSw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5n
Tm9kZSgpCiB7CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyBwcmVwYXJlRm9yTG9hZCBtYXkgcmVzdWx0IGluIGEgJ2JlZm9yZWxvYWQnIGV2ZW50LCB3
aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KIAorICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIpOworCiAgICAgaWYgKG1faW5BY3RpdmVEb2N1bWVudCAmJiBtX25ldHdvcmtT
dGF0ZSA9PSBORVRXT1JLX0VNUFRZICYmICFhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
KHNyY0F0dHIpLmlzRW1wdHkoKSkKICAgICAgICAgcHJlcGFyZUZvckxvYWQoKTsKIApAQCAtMTEz
MCw2ICsxMTMyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTcmNPYmplY3QoTWVkaWFQ
cm92aWRlciYmIG1lZGlhUHJvdmlkZXIpCiAgICAgLy8gNC43LjE0LjIuIExvY2F0aW9uIG9mIHRo
ZSBtZWRpYSByZXNvdXJjZQogICAgIC8vIHNyY09iamVjdDogT24gc2V0dGluZywgaXQgbXVzdCBz
ZXQgdGhlIGVsZW1lbnTigJlzIGFzc2lnbmVkIG1lZGlhIHByb3ZpZGVyIG9iamVjdCB0byB0aGUg
bmV3CiAgICAgLy8gdmFsdWUsIGFuZCB0aGVuIGludm9rZSB0aGUgZWxlbWVudOKAmXMgbWVkaWEg
ZWxlbWVudCBsb2FkIGFsZ29yaXRobS4KKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAg
ICBtX21lZGlhUHJvdmlkZXIgPSBXVEZNb3ZlKG1lZGlhUHJvdmlkZXIpOwogICAgIHByZXBhcmVG
b3JMb2FkKCk7CiB9CkBAIC0xNzYyLDEwICsxNzY1LDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkK
ICAgICBpZiAobmV4dEN1ZSkKICAgICAgICAgbmV4dEludGVyZXN0aW5nVGltZSA9IHN0ZDo6bWlu
KG5leHRJbnRlcmVzdGluZ1RpbWUsIG5leHRDdWUtPmxvdygpKTsKIAorICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIsICJuZXh0SW50ZXJlc3RpbmdUaW1lOiIsIG5leHRJbnRlcmVzdGluZ1RpbWUp
OworCiAgICAgaWYgKG5leHRJbnRlcmVzdGluZ1RpbWUuaXNWYWxpZCgpICYmIG1fcGxheWVyKSB7
Ci0gICAgICAgIG1fcGxheWVyLT5wZXJmb3JtVGFza0F0TWVkaWFUaW1lKFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBuZXh0SW50ZXJlc3RpbmdUaW1lXSB7Ci0gICAgICAgICAgICBpZiAo
d2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0ZUFjdGl2ZVRleHRUcmFj
a0N1ZXMod2Vha1RoaXMtPmN1cnJlbnRNZWRpYVRpbWUoKSk7CisgICAgICAgIG1fcGxheWVyLT5w
ZXJmb3JtVGFza0F0TWVkaWFUaW1lKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMp
LCBuZXh0SW50ZXJlc3RpbmdUaW1lXSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBjdXJyZW50TWVkaWFUaW1l
ID0gd2Vha1RoaXMtPmN1cnJlbnRNZWRpYVRpbWUoKTsKKyAgICAgICAgICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIsICIgLSBsYW1iZGEsIGN1cnJlbnRNZWRpYVRpbWU6IiwgY3VycmVudE1lZGlh
VGltZSk7CisgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3Vlcyhj
dXJyZW50TWVkaWFUaW1lKTsKICAgICAgICAgfSwgbmV4dEludGVyZXN0aW5nVGltZSk7CiAgICAg
fQogCkBAIC01NzI4LDExICs1NzM3LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5k
KFJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29uKQogICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRk
QmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNl
bnRUb1Jlc3VtZU1lZGlhKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNw
ZW5zaW9uOjpQYWdlV2lsbEJlU3VzcGVuZGVkOgotICAgICAgICBpZiAoIW1fcGF1c2VkSW50ZXJu
YWwpIHsKLSAgICAgICAgICAgIG1fc2hvdWxkVW5wYXVzZUludGVybmFsT25SZXN1bWUgPSB0cnVl
OwotICAgICAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdn
ZXJQYXVzZWQ6CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5n
OgogICAgICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBp
biB0aGVzZSBjYXNlcy4KQEAgLTU3NDgsMTEgKzU3NTIsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnJlc3VtZSgpCiAKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKIAotICAgIGlm
IChtX3Nob3VsZFVucGF1c2VJbnRlcm5hbE9uUmVzdW1lKSB7Ci0gICAgICAgIG1fc2hvdWxkVW5w
YXVzZUludGVybmFsT25SZXN1bWUgPSBmYWxzZTsKLSAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwo
ZmFsc2UpOwotICAgIH0KLQogICAgIHNldFNob3VsZEJ1ZmZlckRhdGEodHJ1ZSk7CiAKICAgICBp
ZiAoIW1fbWVkaWFTZXNzaW9uLT5wYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKCkpCkBA
IC01OTM2LDYgKzU5MzUsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldChib29sIHNob3VsZFBsYXkpCiAKICNlbmRpZiAvLyBFTkFCTEUoV0lS
RUxFU1NfUExBWUJBQ0tfVEFSR0VUKQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdEN1
cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSBjb25zdAoreworICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIsIG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCk7CisgICAgcmV0dXJuIG1f
aXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldDsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0g
bV9wbGF5aW5nT25TZWNvbmRTY3JlZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCmluZGV4IDM2MGFmODY3NGNmODgwNjIxMmJjODI1OWE5OGY1NzA4Mzk4OGEyZDIuLjkxMDQ5
OGQ3NTY3ZmE0MmVlODkzM2YxZGU1MGNlYzhhNDliM2Y4OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCkBAIC00MTIsNyArNDEyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAg
ICBib29sIGlzUGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldDsgfTsKLSAgICBib29sIHdlYmtp
dEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSBjb25zdCB7IHJldHVybiBtX2lzUGxh
eWluZ1RvV2lyZWxlc3NUYXJnZXQ7IH0KKyAgICBib29sIHdlYmtpdEN1cnJlbnRQbGF5YmFja1Rh
cmdldElzV2lyZWxlc3MoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UGxheWluZ09uU2Vjb25kU2Ny
ZWVuKGJvb2wgdmFsdWUpOwogICAgIGJvb2wgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW4oKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3BsYXlpbmdPblNlY29uZFNjcmVlbjsgfQpAQCAtMTExMCw3
ICsxMTEwLDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1NjcnViYmluZ1JlbW90ZWx5IDog
MTsKICAgICBib29sIG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuIDogMTsKLSAgICBib29sIG1f
c2hvdWxkVW5wYXVzZUludGVybmFsT25SZXN1bWUgOiAxOwogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogICAgIGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcAppbmRleCAwYWJhMmQyZTU4N2YzYmMzNWI2MjZmYmE3
YzlmMzk0NTRkYTExNDNhLi4yMmUyYTE2ZjIwNjBlM2Q1ZWZjNzBlYzhjMDU5YmU2YmZhYjE1NTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTI2
Miw2ICsyNjIsMTAgQEAgU3VjY2Vzc09yPE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb24+IE1lZGlh
RWxlbWVudFNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkKCkgY28KICAgICB9CiAKICAgICBhdXRv
JiBkb2N1bWVudCA9IG1fZWxlbWVudC5kb2N1bWVudCgpOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1
bWVudC5wYWdlKCk7CisgICAgaWYgKCFwYWdlIHx8IHBhZ2UtPm1lZGlhUGxheWJhY2tJc1N1c3Bl
bmRlZCgpKQorICAgICAgICByZXR1cm4gTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbjo6UGFnZUNv
bnNlbnRSZXF1aXJlZDsKKwogICAgIGlmIChkb2N1bWVudC5pc01lZGlhRG9jdW1lbnQoKSAmJiAh
ZG9jdW1lbnQub3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCmluZGV4IGZiMGZjMzg5YTA0NGY5YjE3NTEzMTAyYjA5YzY5MWRhMmJjZjczOWMuLjU5
MjMyMDczN2U2MjAzNWNhMWE5YjQxYmVjMmUwZjZiMmNjODhkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cApAQCAtMTcxNiw2ICsxNzE2LDQxIEBAIHZvaWQgUGFnZTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAj
ZW5kaWYKIH0KIAordm9pZCBQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVl
KCkudHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+c3RvcEFsbE1lZGlhUGxheWJhY2so
KTsKKyAgICB9Cit9CisKK3ZvaWQgUGFnZTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQorewor
ICAgIEFTU0VSVCghbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQpOworICAgIGlmIChtX21lZGlh
UGxheWJhY2tJc1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50
KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAg
ICB9CisKKyAgICBtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCA9IHRydWU7Cit9CisKK3ZvaWQg
UGFnZTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgQVNTRVJUKG1fbWVkaWFQbGF5
YmFja0lzU3VzcGVuZGVkKTsKKyAgICBpZiAoIW1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKQor
ICAgICAgICByZXR1cm47CisgICAgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgPSBmYWxzZTsK
KworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVu
dCA9IGZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFsbE1l
ZGlhUGxheWJhY2soKTsKKyAgICB9Cit9CisKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIHZv
aWQgUGFnZTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCmluZGV4IGQ2NTZmMWU4M2VmZmExNGM1OGQ1NzJhMThiYmFmYmY3MTk3ZDBlNDUu
LjgwMjE1Y2VmYzgxNGMwMTk3YzYwMWEyMDc1MjM0MWY2OTcxMTUzZjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CkBAIC02MDAsNiArNjAwLDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dE11dGVkKE1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wTWVkaWFDYXB0dXJlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0
b3BBbGxNZWRpYVBsYXliYWNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kQWxs
TWVkaWFQbGF5YmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQWxsTWVkaWFQ
bGF5YmFjaygpOworICAgIGJvb2wgbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKCkgeyByZXR1cm4g
bV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQ7IH0KKwogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9O
KQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlw
ZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3Vi
bGUsIHVpbnQ2NF90KTsKQEAgLTk0NSw2ICs5NTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAg
ICBib29sIG1fc2hvdWxkRW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nQnlEZWZhdWx0IHsgdHJ1
ZSB9OworICAgIGJvb2wgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogfTsK
IAogaW5saW5lIFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKaW5kZXggMTdhMzBkNWNl
YWNlNWY4YTA5ZWU4NTZhYjVjMTNhNTE2ZWY1OTRhMS4uMjVjMTc3OTkwY2YyNjEzZjI1ZmUwYWQw
MGQ4ODEyNDI5YjZkYTBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgU3VzcGVuZGVkVW5kZXJMb2NrLAogICAgICAgICBJbnZpc2libGVBdXRvcGxheSwKICAg
ICAgICAgUHJvY2Vzc0luYWN0aXZlLAorICAgICAgICBQbGF5YmFja1N1c3BlbmRlZCwKICAgICB9
OwogICAgIEludGVycnVwdGlvblR5cGUgaW50ZXJydXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1faW50ZXJydXB0aW9uVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCAx
YTMwNWQxNzNiYjAyMzE0ZmJkODUwNTc5OGYyMWUwZjhkNDFkNDhhLi5kMjlkN2IyYjdkNTNiYmJi
MDBhMTZhNjQ2M2UxNWI2YTNhMDU0YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAg
LTQxOSw2ICs0MTksMjIgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN0b3BB
bGxNZWRpYVBsYXliYWNrRm9yUHJvY2VzcygpCiAgICAgfSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyOjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBmb3JFYWNoU2Vzc2lvbihbJl0gKFBsYXRm
b3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBzaXplX3QpIHsKKyAgICAgICAgaWYgKHNlc3Npb24u
Y2xpZW50KCkuaG9zdGluZ0RvY3VtZW50KCkgPT0gJmRvY3VtZW50KQorICAgICAgICAgICAgc2Vz
c2lvbi5iZWdpbkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWJhY2tTdXNw
ZW5kZWQpOworICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6
cmVzdW1lQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCkKK3sKKyAgICBmb3JFYWNoU2Vzc2lvbihbJl0gKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNz
aW9uLCBzaXplX3QpIHsKKyAgICAgICAgaWYgKHNlc3Npb24uY2xpZW50KCkuaG9zdGluZ0RvY3Vt
ZW50KCkgPT0gJmRvY3VtZW50KQorICAgICAgICAgICAgc2Vzc2lvbi5lbmRJbnRlcnJ1cHRpb24o
UGxhdGZvcm1NZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgIH0pOworfQorCiB2
b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Zm9yRWFjaFNlc3Npb24oY29uc3QgRnVu
Y3Rpb248dm9pZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYsIHNpemVfdCk+JiBwcmVkaWNhdGUpIGNv
bnN0CiB7CiAgICAgKyttX2l0ZXJhdGluZ092ZXJTZXNzaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKaW5kZXggNGQ4N2ZkOGY4YWUwMWEzNWVlODE2MWNmMGRlNTRiNmViZDc4YWE5Yi4uZTY3MGRh
ZmMxMTMxMzFkYWE0ZTI4MmM5YzQwYmIyMDkzMjdiNDgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2Vy
LmgKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJh
Y2tGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c3RvcEFsbE1lZGlhUGxheWJhY2tGb3JQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHN1c3BlbmRBbGxN
ZWRpYVBsYXliYWNrRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKKyAgICB2b2lkIHJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYpOworCiAgICAgZW51
bSBTZXNzaW9uUmVzdHJpY3Rpb25GbGFncyB7CiAgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwK
ICAgICAgICAgQ29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkID0gMSA8PCAwLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNzQwNTg3
MWYxNDQ2ZWMyNGU4ZmMzNDk3MDU4ZDg4Zjk5ZTg0ZTIyZi4uYTY4M2I1YzE1ZThmZjE0Yjc1Y2Mw
MTZkMjJkMzM1NWVkYzhkYzNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCkBAIC00NDg0LDYgKzQ0ODQsMjEgQEAgLSAodm9pZClfdG9nZ2xl
UGljdHVyZUluUGljdHVyZQogI2VuZGlmCiB9CiAKKy0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXli
YWNrCit7CisgICAgX3BhZ2UtPnN0b3BBbGxNZWRpYVBsYXliYWNrKCk7Cit9CisKKy0gKHZvaWQp
X3N1c3BlbmRBbGxNZWRpYVBsYXliYWNrCit7CisgICAgX3BhZ2UtPnN1c3BlbmRBbGxNZWRpYVBs
YXliYWNrKCk7Cit9CisKKy0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKK3sKKyAgICBf
cGFnZS0+cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpOworfQorCiAtIChOU1VSTCAqKV91bnJlYWNo
YWJsZVVSTAogewogICAgIHJldHVybiBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOl9wYWdl
LT5wYWdlTG9hZFN0YXRlKCkudW5yZWFjaGFibGVVUkwoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCAxNzBjMmFh
ZWZhMTUwYjQxZjk5NmNjZTQ2OGNlMzI3NzliYWQ2ZjhmLi43YTE2ZTVkZDU3YjZmNDliNTg0OTJm
MzFiMGI5MTNhODllOTIxZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM5OSw3ICszOTksOSBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBfaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlOwogLSAodm9pZClf
dXBkYXRlTWVkaWFQbGF5YmFja0NvbnRyb2xzTWFuYWdlcjsKIC0gKHZvaWQpX3RvZ2dsZVBpY3R1
cmVJblBpY3R1cmU7Ci0KKy0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXliYWNrOworLSAodm9pZClf
c3VzcGVuZEFsbE1lZGlhUGxheWJhY2s7CistICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNr
OwogQGVuZAogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKaW5kZXggYWM4MGE3YjU5ZGI0M2Q5OTk2NmRmNjkzMTVhOWM4M2QyMDEw
ZmY2Ni4uMzM5OTBhMjY0YzhkY2Q4M2Y1Njc0ZWIyNDJmZjMwNTIwOTVjNGY0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00OTYzLDYgKzQ5NjMsMzAgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnN0b3BNZWRpYUNhcHR1cmUoKQogI2VuZGlmCiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgaWYgKCFpc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U3RvcEFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBh
Z2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQoreworICAgIGlmICghaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQoreworICAgIGlmICghaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworfQorCiAjaWYgRU5BQkxF
KE1FRElBX1NFU1NJT04pCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRp
YUV2ZW50VHlwZSBldmVudFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDczNGQyMTE3MTllOTRiZmY5NWE5NjFmM2YwZDYzMDljY2MzZWZhMTUuLmI3NzE5
YzE2ODkwOWQ1ZDIxY2IzYWJmZTIzOWZkMDg0Njc1ZDExMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTE3LDYgKzExMTcsMTAgQEAgcHVibGljOgogICAgIGJv
b2wgbWVkaWFDYXB0dXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDYXB0dXJlRW5h
YmxlZDsgfQogICAgIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCisgICAgdm9pZCBzdG9wQWxs
TWVkaWFQbGF5YmFjaygpOworICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAg
ICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKwogI2lmIEVOQUJMRShNRURJQV9TRVNT
SU9OKQogICAgIGJvb2wgaGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMoKSBj
b25zdCB7IHJldHVybiBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzOyB9
CiAgICAgdm9pZCBoYW5kbGVNZWRpYUV2ZW50KFdlYkNvcmU6Ok1lZGlhRXZlbnRUeXBlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNj
cmVlblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxz
Y3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNTBjMWY1MWNlMDY4ZTVj
MDIwNDI0ZDczM2ExOGFiMDFjYzQxZTI5Yi4uZjY5MjRjY2JhMzZlMDc5MDI0ZTcyMGJmNzliMjQz
ZjgxY2M0OWY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxz
Y3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KQEAg
LTU1OSwxMyArNTU5LDE3IEBAIC0gKHZvaWQpX3Nob3dQaGlzaGluZ0FsZXJ0CiAgICAgTlNTdHJp
bmcgKmFsZXJ0TWVzc2FnZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJ
TkcoIlR5cGluZyBpcyBub3QgYWxsb3dlZCBpbiBmdWxsIHNjcmVlbiB3ZWJzaXRlcy4g4oCcJUDi
gJ0gbWF5IGJlIHNob3dpbmcgYSBmYWtlIGtleWJvYXJkIHRvIHRyaWNrIHlvdSBpbnRvIGRpc2Ns
b3NpbmcgcGVyc29uYWwgb3IgZmluYW5jaWFsIGluZm9ybWF0aW9uLiIsICJGdWxsIFNjcmVlbiBE
ZWNlcHRpdmUgV2Vic2l0ZSBXYXJuaW5nIFNoZWV0IENvbnRlbnQgVGV4dCIpLCAoTlNTdHJpbmcg
KilzZWxmLmxvY2F0aW9uXTsKICAgICBVSUFsZXJ0Q29udHJvbGxlciogYWxlcnQgPSBbVUlBbGVy
dENvbnRyb2xsZXIgYWxlcnRDb250cm9sbGVyV2l0aFRpdGxlOmFsZXJ0VGl0bGUgbWVzc2FnZTph
bGVydE1lc3NhZ2UgcHJlZmVycmVkU3R5bGU6VUlBbGVydENvbnRyb2xsZXJTdHlsZUFsZXJ0XTsK
IAotICAgIGlmIChhdXRvKiBwYWdlID0gW3NlbGYuX3dlYlZpZXcgX3BhZ2VdKQorICAgIGlmIChh
dXRvKiBwYWdlID0gW3NlbGYuX3dlYlZpZXcgX3BhZ2VdKSB7CisgICAgICAgIHBhZ2UtPnN1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrKCk7CiAgICAgICAgIHBhZ2UtPnN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9ucygpOworICAgIH0KIAogICAgIFVJQWxlcnRBY3Rpb24qIGV4aXRBY3Rp
b24gPSBbVUlBbGVydEFjdGlvbiBhY3Rpb25XaXRoVGl0bGU6V0VCX1VJX1NUUklOR19LRVkoIkV4
aXQgRnVsbCBTY3JlZW4iLCAiRXhpdCBGdWxsIFNjcmVlbiAoRWxlbWVudCBGdWxsIFNjcmVlbiki
LCAiRnVsbCBTY3JlZW4gRGVjZXB0aXZlIFdlYnNpdGUgRXhpdCBBY3Rpb24iKSBzdHlsZTpVSUFs
ZXJ0QWN0aW9uU3R5bGVDYW5jZWwgaGFuZGxlcjpeKFVJQWxlcnRBY3Rpb24gKiBhY3Rpb24pIHsK
ICAgICAgICAgW3NlbGYgX2NhbmNlbEFjdGlvbjphY3Rpb25dOwotICAgICAgICBpZiAoYXV0byog
cGFnZSA9IFtzZWxmLl93ZWJWaWV3IF9wYWdlXSkKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBb
c2VsZi5fd2ViVmlldyBfcGFnZV0pIHsKICAgICAgICAgICAgIHBhZ2UtPnJlc3VtZUFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgICAgICAgICBwYWdlLT5yZXN1bWVBbGxNZWRp
YVBsYXliYWNrKCk7CisgICAgICAgIH0KICAgICB9XTsKIAogICAgIFVJQWxlcnRBY3Rpb24qIHN0
YXlBY3Rpb24gPSBbVUlBbGVydEFjdGlvbiBhY3Rpb25XaXRoVGl0bGU6V0VCX1VJX1NUUklOR19L
RVkoIlN0YXkgaW4gRnVsbCBTY3JlZW4iLCAiU3RheSBpbiBGdWxsIFNjcmVlbiAoRWxlbWVudCBG
dWxsIFNjcmVlbikiLCAiRnVsbCBTY3JlZW4gRGVjZXB0aXZlIFdlYnNpdGUgU3RheSBBY3Rpb24i
KSBzdHlsZTpVSUFsZXJ0QWN0aW9uU3R5bGVEZWZhdWx0IGhhbmRsZXI6XihVSUFsZXJ0QWN0aW9u
ICogYWN0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGFjNDc1MTUyZDc0YmVhOTJjZGRlYmE0M2I4MmUzY2QwZWE2Y2YxZjAuLjFlZTBl
ZDQxMzIwZjIwOGUzOGI2ZmVhOTE3NDliYTg1MDAyNmVjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NTQsNiArNjU0LDIxIEBAIHZvaWQg
V2ViUGFnZTo6ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiAjZW5kaWYK
ICNlbmRpZgogCit2b2lkIFdlYlBhZ2U6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBt
X3BhZ2UtPnN0b3BBbGxNZWRpYVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c3VzcGVu
ZEFsbE1lZGlhUGxheWJhY2soKQoreworICAgIG1fcGFnZS0+c3VzcGVuZEFsbE1lZGlhUGxheWJh
Y2soKTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAg
ICBtX3BhZ2UtPnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKK30KKwogdm9pZCBXZWJQYWdlOjpy
ZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogewogICAgIEFTU0VSVChtX2RyYXdpbmdBcmVhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAwNzRhMDQxZmE2NTg4MzI5NDczMGQ3YTU4N2UyZTQy
ZTMzZjI4MWNlLi4xMTY4MzA2NjlhM2I0YWVkZWY1Y2VkMDA0ZTA5ZDNiMzY2NjliMmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMzczLDYgKzEz
NzMsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0lu
dGVyZmFjZXMoKTsKICNlbmRpZgogCisgICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOwor
ICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1l
ZGlhUGxheWJhY2soKTsKKwogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wg
c3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29u
c3QgU3RyaW5nJiB3b3JkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDMyMzY1NTlhZjBmYzdjOWI5NGUyMTlm
MmVlMGRjMDBlNzc1ZDNkNS4uYjRjYzFmZWQzNzJjYTc3ZDUyNTc0Y2Q2OWJjYmEyZDczYzAyMjEx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0zNTQsNiArMzU0LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIERpc2FibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2Vz
KCkKICNlbmRpZgogCisgICAgU3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBTdXNwZW5kQWxs
TWVkaWFQbGF5YmFjaygpOworICAgIFJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKwogICAgICMg
Tm90aWZpY2F0aW9uCiAgICAgRGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lv
bih1aW50NjRfdCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKQogCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzM1NWQ1NGFkZTkwMmViMzY1
M2ZjZTQzOWQwZjg2YzFkODdlYzU5OS4uNDNhZGNjNGM4OTQzYjg1MjQ2ODUwOTgyZjM3NjY1YTU5
MzJiMTNkNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTEyLTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgorCisgICAgICAgIFtXZWJLaXRMZWdhY3ldIE1lZGlhIHBsYXliYWNrIHBhdXNlcyBv
biBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MjgyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJl
c3VtZUFsbE1lZGlhLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9TY3JvbGxpbmdE
b2VzTm90UGF1c2VNZWRpYS5tbTogQWRkZWQuCisgICAgICAgICgtW1Njcm9sbGluZ0RvZXNOb3RQ
YXVzZU1lZGlhRGVsZWdhdGUgd2ViVmlld0RpZEZpbmlzaExvYWQ6XSk6CisgICAgICAgICgtW1Nj
cm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlhRGVsZWdhdGUgdWlXZWJWaWV3OmRpZENvbW1pdExvYWRG
b3JGcmFtZTpdKToKKyAgICAgICAgKC1bU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWFEZWxlZ2F0
ZSBoYW5kbGVFdmVudDpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE4
LTEwLTMxICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFNES19W
QVJJQU5UIGJ1aWxkIGRlc3RpbmF0aW9ucyBzaG91bGQgYmUgc2VwYXJhdGUgZnJvbSBub24tU0RL
X1ZBUklBTlQgYnVpbGRzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZkN2ZhMzdkOWNjZWY0
OThlMzI4MzhjMGNkNjM3MTU4NjJiMDQ0OWQuLmFkNWI1MTRkZjM1YmJhYTk1ZmYyNTRhYTYxZDMw
M2IyN2JhNTdkOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NjEsNiArNzYxLDggQEAK
IAkJQ0RCNURGRkYyMTM2MTBGQTAwRDNFMTg5IC8qIG5vdy1wbGF5aW5nLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCNURGRkUyMTM2
MEVEODAwRDNFMTg5IC8qIG5vdy1wbGF5aW5nLmh0bWwgKi87IH07CiAJCUNEQkZDQzQ1MUE5RkY0
NTMwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQkZDQzQzMUE5RkY0NDgwMEE3QjY5
MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbSAqLzsgfTsKIAkJQ0RCRkNDNDYxQTlG
RjQ5RTAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RCRkNDNDIxQTlG
RjQ0ODAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwgKi87IH07CisJ
CUNEQzA5MzJCMjFDODcyQzEwMDMwQzRCMCAvKiBTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzA5MzJB
MjFDODcyQzEwMDMwQzRCMCAvKiBTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYS5tbSAqLzsgfTsK
KwkJQ0RDMDkzMkUyMUM5OTM0NDAwMzBDNEIwIC8qIFN0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMwOTMy
RDIxQzk5MzQ0MDAzMEM0QjAgLyogU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSAqLzsgfTsK
IAkJQ0RDOEU0OEQxQkM1Q0I0NTAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDOEU0ODUx
QkM1QjE5NDAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovOyB9OwogCQlD
REM4RTQ5NDFCQzZGMTA4MDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzhFNDg5MUJD
NUM5NjIwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLmh0bWwgKi87IH07CiAJCUNEQzhFNDk1
MUJDNkYxMDgwMDU5NEZFQyAvKiB2aWRlby13aXRoLWF1ZGlvLm1wNCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM4RTQ4QTFCQzVDOTYyMDA1
OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5tcDQgKi87IH07CkBAIC0yMDQwLDYgKzIwNDIsOCBA
QAogCQlDREI1REZGRTIxMzYwRUQ4MDBEM0UxODkgLyogbm93LXBsYXlpbmcuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJub3ctcGxheWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RC
RkNDNDIxQTlGRjQ0ODAwQTdCNjkxIC8qIEZ1bGxzY3JlZW5ab29tSW5pdGlhbEZyYW1lLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5o
dG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDREJGQ0M0MzFBOUZGNDQ4MDBBN0I2
OTEgLyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RDMDkzMkEyMUM4NzJDMTAwMzBDNEIwIC8qIFNjcm9s
bGluZ0RvZXNOb3RQYXVzZU1lZGlhLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2Nyb2xsaW5n
RG9lc05vdFBhdXNlTWVkaWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzA5
MzJEMjFDOTkzNDQwMDMwQzRCMCAvKiBTdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDMkM3MTQxNzk3MDg5RDAwRTYyN0ZCIC8qIFRpbWVSYW5n
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGltZVJhbmdlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEQzhFNDg1MUJDNUIxOTQwMDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25D
YXRlZ29yeUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF1
ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
REM4RTQ4OTFCQzVDOTYyMDA1OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gInZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNTA5LDYgKzI1MTMsNyBAQAogCQkJCTM3QkNBNjFCMUI1OTZC
QTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1t
ICovLAogCQkJCTJEOUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywK
IAkJCQkyREZGN0I2QzFEQTQ4N0FGMDA4MTQ2MTQgLyogU25hcHNob3RTdG9yZS5tbSAqLywKKwkJ
CQlDREMwOTMyRDIxQzk5MzQ0MDAzMEM0QjAgLyogU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5t
bSAqLywKIAkJCQk1MTVCRTE3MDFENDI4QkQxMDBERDdDNjggLyogU3RvcmVCbG9iVGhlbkRlbGV0
ZS5tbSAqLywKIAkJCQkxQzczNEI1MjIwNzg4QzQ4MDBGNDMwRUEgLyogU3lzdGVtQ29sb3JzLm1t
ICovLAogCQkJCUY0Q0Q3NEM3MjBGREI0OTYwMERFMzc5NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxl
ci5oICovLApAQCAtMzUxNCw2ICszNTE5LDcgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUNEQzhF
NDlBMUJDNzI4RkUwMDU5NEZFQyAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJQ0RDOEU0ODUxQkM1QjE5
NDAwNTk0RkVDIC8qIEF1ZGlvU2Vzc2lvbkNhdGVnb3J5SU9TLm1tICovLAorCQkJCUNEQzA5MzJB
MjFDODcyQzEwMDMwQzRCMCAvKiBTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYS5tbSAqLywKIAkJ
CQkwRjRGRkE5RDFFRDNBQTg1MDBGNzExMUYgLyogU25hcHNob3RWaWFSZW5kZXJJbkNvbnRleHQu
bW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKQEAgLTQxMDgsNiArNDExNCw3IEBACiAJCQkJ
NUNBOTg1NTMyMTEzQ0Y3ODAwNTdFQjZCIC8qIFNhZmVCcm93c2luZy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNEQ0ZBN0FBMUU0NTE4MzIwMEMyNDMzRCAvKiBTYW1wbGVNYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0UwOTQ3MzcyMDYzMjIzQjAwM0M5QkEwIC8qIFNjaGVtZVJlZ2lzdHJ5Lm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJQ0RDMDkzMkIyMUM4NzJDMTAwMzBDNEIwIC8qIFNjcm9sbGlu
Z0RvZXNOb3RQYXVzZU1lZGlhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMTIxQTQxMUFF
NjAwNDQ3QzRDIC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRjRDODc5N0YyMDU5RDhEMzAwOUNEMDBCIC8qIFNjcm9sbFZpZXdJbnNldFRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0UwNkRGOUIxRTE4NTFGMjAwRTU3MEM5IC8qIFNlY3VyaXR5T3Jp
Z2luLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDEzMiw2ICs0MTM5LDcgQEAKIAkJCQk3Q0NFN0VG
MjFBNDExQUU2MDA0NDdDNEMgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUNFMUE0MTFBN0UwMDQ0N0M0QyAvKiBT
dG9wTG9hZGluZ0Zyb21EaWRGaW5pc2hMb2FkaW5nLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFQ0YxQTQxMUE3RTAwNDQ3QzRDIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25z
ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNEQzA5MzJFMjFDOTkzNDQwMDMwQzRCMCAvKiBTdG9w
U3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1QkUxNzExRDQy
OEU0QjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRoZW5EZWxldGUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VEMDFBNDExQTdFMDA0NDdDNEMgLyogU3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dEZyb21TdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEMTFBNDExQTdFMDA0NDdD
NEMgLyogU3RyaW5nVHJ1bmNhdG9yLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVk
aWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N0b3BTdXNwZW5k
UmVzdW1lQWxsTWVkaWEubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGQ5OWFiNjk4ODJjYmFiNTdhZTVlZmI1YzAx
Zjg0M2FjMjE0NzEyYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbQpAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJM
RUQgJiYgUExBVEZPUk0oTUFDKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitURVNUKFdLV2ViVmlldywgU3RvcEFsbE1lZGlhUGxheWJhY2spCit7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgYWRkVG9XaW5kb3c6WUVTXSk7CisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8dmlkZW8gc3JjPVwidmlkZW8td2l0aC1hdWRpby5t
cDRcIiB3ZWJraXQtcGxheXNpbmxpbmU+PC92aWRlbz4iXTsKKworICAgIFt3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmdW5jdGlvbiBldmVudFRvTWVzc2FnZShldmVudCl7
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoZXZl
bnQudHlwZSk7fSB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpOyB2
aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5aW5nJywgZXZlbnRUb01lc3NhZ2UpOyB2aWRlby5h
ZGRFdmVudExpc3RlbmVyKCdwYXVzZScsIGV2ZW50VG9NZXNzYWdlKTsiXTsKKworICAgIF9fYmxv
Y2sgYm9vbCBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0
ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyIgYWN0aW9uOl57IGRpZEJlZ2luUGxheWluZyA9
IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ3ZpZGVvJykucGxheSgpIiBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsKKworICAgIF9fYmxv
Y2sgYm9vbCBkaWRQYXVzZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2Vp
dmluZ01lc3NhZ2U6QCJwYXVzZSIgYWN0aW9uOl57IGRpZFBhdXNlID0gdHJ1ZTsgfV07CisgICAg
W3dlYlZpZXcgX3N0b3BBbGxNZWRpYVBsYXliYWNrXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRpZFBhdXNlKTsKK30KKworVEVTVChXS1dlYlZpZXcsIFN1c3BlbmRSZXN1bWVBbGxN
ZWRpYVBsYXliYWNrKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGFkZFRvV2luZG93
OllFU10pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPHZp
ZGVvIHNyYz1cInZpZGVvLXdpdGgtYXVkaW8ubXA0XCIgd2Via2l0LXBsYXlzaW5saW5lPjwvdmlk
ZW8+Il07CisKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZnVu
Y3Rpb24gZXZlbnRUb01lc3NhZ2UoZXZlbnQpe3dpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGV2ZW50LnR5cGUpO30gdmFyIHZpZGVvID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheWlu
ZycsIGV2ZW50VG9NZXNzYWdlKTsgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCBldmVu
dFRvTWVzc2FnZSk7Il07CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkQmVnaW5QbGF5aW5nID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBsYXlpbmci
IGFjdGlvbjpeeyBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCd2aWRlbycpLnBsYXkoKSIg
Y29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRp
ZEJlZ2luUGxheWluZyk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkUGF1c2UgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGF1c2UiIGFjdGlvbjpe
eyBkaWRQYXVzZSA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IF9zdXNwZW5kQWxsTWVkaWFQbGF5
YmFja107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQYXVzZSk7CisKKyAgICBf
X2Jsb2NrIGJvb2wgZGlkUmVqZWN0ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVy
UmVjZWl2aW5nTWVzc2FnZTpAInJlamVjdGVkIiBhY3Rpb246XnsgZGlkUmVqZWN0ID0gdHJ1ZTsg
fV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigndmlkZW8nKS5wbGF5KCkuY2F0Y2goKCkgPSB7IHdpbmRvdy53ZWJraXQubWVzc2FnZUhh
bmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdyZWplY3RlZCcpOyB9KSIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKKworICAgIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246XnsgZGlk
QmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgX3Jlc3VtZUFsbE1lZGlhUGxh
eWJhY2tdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQmVnaW5QbGF5aW5nKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9TY3JvbGxpbmdEb2Vz
Tm90UGF1c2VNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5
L2lvcy9TY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYzBlMDkwNDRj
ZTEwODQ1ZThkYzQ3N2ZhNGFhNGI5OWM1M2MyYzljCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvaW9zL1Njcm9sbGluZ0RvZXNOb3RQYXVz
ZU1lZGlhLm1tCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9ET01IVE1MTWVkaWFFbGVtZW50Lmg+CisjaW1wb3J0
IDxXZWJLaXQvV2ViRnJhbWVQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K0BpbnRlcmZhY2UgU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWFEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxVSVdlYlZpZXdEZWxlZ2F0ZSwgRE9NRXZlbnRMaXN0ZW5lcj4geworfQorQGVuZAorCitzdGF0
aWMgYm9vbCBkaWRGaW5pc2hMb2FkOworc3RhdGljIGJvb2wgZ290TWFpbkZyYW1lOworc3RhdGlj
IFdlYkZyYW1lKiBtYWluRnJhbWU7CisKK0BpbXBsZW1lbnRhdGlvbiBTY3JvbGxpbmdEb2VzTm90
UGF1c2VNZWRpYURlbGVnYXRlCisKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1p
bXBsZW1lbnRhdGlvbnMiKQorLSAodm9pZCl3ZWJWaWV3RGlkRmluaXNoTG9hZDooVUlXZWJWaWV3
ICopd2ViVmlldworSUdOT1JFX1dBUk5JTkdTX0VORAoreworICAgIGRpZEZpbmlzaExvYWQgPSB0
cnVlOworfQorCistICh2b2lkKXVpV2ViVmlldzooVUlXZWJWaWV3ICopc2VuZGVyIGRpZENvbW1p
dExvYWRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQoreworICAgIG1haW5GcmFtZSA9IGZyYW1l
OworICAgIGdvdE1haW5GcmFtZSA9IHRydWU7Cit9CisKK3N0YXRpYyBib29sIGRpZFJlY2VpdmVQ
YXVzZTsKK3N0YXRpYyBib29sIGRpZFJlY2VpdmVQbGF5aW5nOworCistICh2b2lkKWhhbmRsZUV2
ZW50OihET01FdmVudCAqKWV2ZW50Cit7CisgICAgaWYgKFtldmVudC50eXBlIGlzRXF1YWxUb1N0
cmluZzpAInBhdXNlIl0pCisgICAgICAgIGRpZFJlY2VpdmVQYXVzZSA9IHRydWU7CisgICAgZWxz
ZSBpZiAoW2V2ZW50LnR5cGUgaXNFcXVhbFRvU3RyaW5nOkAicGxheWluZyJdKQorICAgICAgICBk
aWRSZWNlaXZlUGxheWluZyA9IHRydWU7Cit9CitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworVEVTVChXZWJLaXRMZWdhY3ksIFNjcm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlhKQor
eworICAgIFJldGFpblB0cjxVSVdpbmRvdz4gdWlXaW5kb3cgPSBhZG9wdE5TKFtbVUlXaW5kb3cg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAgICBS
ZXRhaW5QdHI8VUlXZWJWaWV3PiB1aVdlYlZpZXcgPSBhZG9wdE5TKFtbVUlXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3VpV2lu
ZG93IGFkZFN1YnZpZXc6dWlXZWJWaWV3LmdldCgpXTsKKworICAgIHVpV2ViVmlldy5nZXQoKS5t
ZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyQWN0aW9uID0gTk87CisgICAgdWlXZWJWaWV3LmdldCgp
LmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7CisKKyAgICBSZXRhaW5QdHI8U2Nyb2xs
aW5nRG9lc05vdFBhdXNlTWVkaWFEZWxlZ2F0ZT4gdGVzdENvbnRyb2xsZXIgPSBhZG9wdE5TKFtT
Y3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYURlbGVnYXRlIG5ld10pOworICAgIHVpV2ViVmlldy5n
ZXQoKS5kZWxlZ2F0ZSA9IHRlc3RDb250cm9sbGVyLmdldCgpOworCisgICAgZGlkRmluaXNoTG9h
ZCA9IGZhbHNlOworICAgIGdvdE1haW5GcmFtZSA9IGZhbHNlOworICAgIG1haW5GcmFtZSA9IG5p
bDsKKworICAgIFt1aVdlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNCdW5kbGUubWFpbkJ1bmRsZSBVUkxGb3JSZXNvdXJjZTpAInZpZGVvLXdpdGgtYXVk
aW8iIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJl
c291cmNlcyJdXV07CisKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworICAgIFV0aWw6
OnJ1bigmZ290TWFpbkZyYW1lKTsKKworICAgIERPTUhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvID0g
KERPTUhUTUxNZWRpYUVsZW1lbnQqKVttYWluRnJhbWUuRE9NRG9jdW1lbnQgcXVlcnlTZWxlY3Rv
cjpAInZpZGVvIl07CisgICAgQVNTRVJUX1RSVUUoW3ZpZGVvIGlzS2luZE9mQ2xhc3M6W0RPTUhU
TUxNZWRpYUVsZW1lbnQgY2xhc3NdXSk7CisKKyAgICBbdmlkZW8gYWRkRXZlbnRMaXN0ZW5lcjpA
InBsYXlpbmciIGxpc3RlbmVyOnRlc3RDb250cm9sbGVyLmdldCgpIHVzZUNhcHR1cmU6Tk9dOwor
ICAgIFt2aWRlbyBhZGRFdmVudExpc3RlbmVyOkAicGF1c2UiIGxpc3RlbmVyOnRlc3RDb250cm9s
bGVyLmdldCgpIHVzZUNhcHR1cmU6Tk9dOworCisgICAgW21haW5GcmFtZSBzZXRUaW1lb3V0c1Bh
dXNlZDpZRVNdOworCisgICAgZGlkUmVjZWl2ZVBsYXlpbmcgPSBmYWxzZTsKKyAgICBbdmlkZW8g
cGxheV07CisgICAgVXRpbDo6cnVuKCZkaWRSZWNlaXZlUGxheWluZyk7CisKKyAgICBbbWFpbkZy
YW1lIHNldFRpbWVvdXRzUGF1c2VkOk5PXTsKKworICAgIGRpZFJlY2VpdmVQYXVzZSA9IGZhbHNl
OworICAgIFt2aWRlbyBwbGF5XTsKKyAgICBVdGlsOjpydW4oJmRpZFJlY2VpdmVQYXVzZSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358337</attachid>
            <date>2019-01-04 11:04:22 -0800</date>
            <delta_ts>2019-01-04 14:23:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-192829-20190104110421.patch</filename>
            <type>text/plain</type>
            <size>39248</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5NjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTc2MzQwYWM1OTMzNGI4
YjllZDI4ZmZjMTAzNzEzZjcyZGUyMWY1Yi4uZmI0MjNkNGU3NTIyM2IxNmM2ODJhNmJjM2RiYmUz
MmUwM2EzMDBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE4LTEyLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJLaXRMZWdhY3ldIE1l
ZGlhIHBsYXliYWNrIHBhdXNlcyBvbiBzY3JvbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgyOQorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
Q2FybHNvbi4KKworICAgICAgICBOZXcgQVBJIHRlc3RzOgorICAgICAgICAgICAgV2ViS2l0TGVn
YWN5LlNjcm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlhCisgICAgICAgICAgICBXS1dlYlZpZXcuU3Rv
cEFsbE1lZGlhUGxheWJhY2sKKyAgICAgICAgICAgIFdLV2ViVmlldy5TdXNwZW5kUmVzdW1lQWxs
TWVkaWFQbGF5YmFjaworCisgICAgICAgIERvIG5vdCB1c2Ugc3VzcGVuZEFjdGl2ZURPTU9iamVj
dHMoUmVhc29uRm9yU3VzcGVuc2lvbjo6UGFnZVdpbGxCZVN1c3BlbmRlZCkgdG8gcGF1c2UKKyAg
ICAgICAgdmlkZW8uIFJvbGwgYmFjayB0aGUgY2hhbmdlcyB0byBIVE1MTWVkaWFFbGVtZW50LCBh
bmQgaW50cm9kdWNlIGEgbmV3IHNldCBvZiBQYWdlIGNhbGxzCisgICAgICAgIHN1c3BlbmRBbGxN
ZWRpYVBsYXliYWNrKCkgJiByZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkgd2hpY2ggcmVwbGFjZXMg
dGhlIHJlbW92ZWQgYmFoYXZpb3IuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c3RvcEFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpkaWRGaW5pc2hJbnNlcnRpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnNldFNyY09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50Ojp1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Ondl
YmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3MgY29uc3QpOgorICAgICAgICAqIGh0
bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6d2Via2l0Q3VycmVudFBsYXliYWNrVGFyZ2V0SXNXaXJlbGVzcyBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OnBsYXliYWNrUGVybWl0dGVkIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3RvcEFsbE1lZGlh
UGxheWJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3VzcGVuZEFsbE1lZGlhUGxheWJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjayk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjptZWRpYVBsYXli
YWNrSXNTdXNwZW5kZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdl
cjo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2tGb3JE
b2N1bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25N
YW5hZ2VyLmg6CisKIDIwMTgtMDktMTIgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgU0RLX1ZBUklBTlQgYnVpbGQgZGVzdGluYXRpb25zIHNob3VsZCBiZSBzZXBh
cmF0ZSBmcm9tIG5vbi1TREtfVkFSSUFOVCBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTA3NDcwYjFmYmZl
NzJjZmZjMjA0NWQ0MzYxODIzNWE2Yjk3YTIyYS4uMzA1Y2EwMmFkYzU5N2FkZmFjNzMxOGQxOTMy
ZWFkNDE3MmY3NDJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxOC0xMi0xOCAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViS2l0TGVnYWN5XSBN
ZWRpYSBwbGF5YmFjayBwYXVzZXMgb24gc2Nyb2xsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTI4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IENhcmxzb24uCisKKyAgICAgICAgQWRkIGEgbmV3IFdlYlBhZ2UsIFdlYlBhZ2VQcm94eSwgJiBX
S1dlYlZpZXcgU1BJIHRvIHN0b3AsIHN1c3BlbmQsIGFuZCByZXN1bWUgYWxsCisgICAgICAgIGV4
aXN0aW5nIG1lZGlhIHBsYXliYWNrIGluIHRoZSBwYWdlLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RvcEFsbE1l
ZGlhUGxheWJhY2tdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zdXNwZW5kQWxsTWVkaWFQbGF5
YmFja10pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2tdKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzdG9wQWxsTWVkaWFQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2Ny
ZWVuVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLRnVsbFNjcmVlblZpZXdDb250cm9s
bGVyIF9zaG93UGhpc2hpbmdBbGVydF0pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3RvcEFsbE1lZGlhUGxheWJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjayk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTgtMDktMTIgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU0RLX1ZBUklBTlQgYnVpbGQgZGVzdGlu
YXRpb25zIHNob3VsZCBiZSBzZXBhcmF0ZSBmcm9tIG5vbi1TREtfVkFSSUFOVCBidWlsZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGVjNjZiZTc2NjFkMjE2MDZlNTdjZDFmNzQ5Y2RjZDQy
YzE3ZjVlZGMuLmM0OTkyMTdhYjVmN2IwZjcyOWU1M2ViOWE3NTAyMGE1MGEzMjQzZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNjUyLDggKzY1Miw3IEBAIERvY3VtZW50Ojp+RG9jdW1l
bnQoKQogICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudChudWxscHRy
KTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICBpZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyID0gUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZF
eGlzdHMoKSkKLSAgICAgICAgcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLT5zdG9wQWxsTWVk
aWFQbGF5YmFja0ZvckRvY3VtZW50KHRoaXMpOworICAgIHN0b3BBbGxNZWRpYVBsYXliYWNrKCk7
CiAjZW5kaWYKIAogICAgIC8vIFdlIG11c3QgY2FsbCBjbGVhclJhcmVEYXRhKCkgaGVyZSBzaW5j
ZSBhIERvY3VtZW50IGNsYXNzIGluaGVyaXRzIFRyZWVTY29wZQpAQCAtMTcyMiw2ICsxNzIxLDIz
IEBAIHZvaWQgRG9jdW1lbnQ6OmFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFja0NoYW5n
ZWQoKQogICAgICAgICBlbGVtZW50LT5hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tD
aGFuZ2VkKCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK3sK
KyAgICBpZiAoYXV0byogcGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyID0gUGxhdGZvcm1NZWRp
YVNlc3Npb25NYW5hZ2VyOjpzaGFyZWRNYW5hZ2VySWZFeGlzdHMoKSkKKyAgICAgICAgcGxhdGZv
cm1NZWRpYVNlc3Npb25NYW5hZ2VyLT5zdG9wQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KHRo
aXMpOworfQorCit2b2lkIERvY3VtZW50OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCit7Cisg
ICAgaWYgKGF1dG8qIHBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlciA9IFBsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlcjo6c2hhcmVkTWFuYWdlcklmRXhpc3RzKCkpCisgICAgICAgIHBsYXRmb3Jt
TWVkaWFTZXNzaW9uTWFuYWdlci0+c3VzcGVuZEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCgq
dGhpcyk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQorewor
ICAgIGlmIChhdXRvKiBwbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIgPSBQbGF0Zm9ybU1lZGlh
U2Vzc2lvbk1hbmFnZXI6OnNoYXJlZE1hbmFnZXJJZkV4aXN0cygpKQorICAgICAgICBwbGF0Zm9y
bU1lZGlhU2Vzc2lvbk1hbmFnZXItPnJlc3VtZUFsbE1lZGlhUGxheWJhY2tGb3JEb2N1bWVudCgq
dGhpcyk7Cit9CiAjZW5kaWYKIAogU3RyaW5nIERvY3VtZW50Ojpub2RlTmFtZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDhhMGZmZTEwYjQ1OTcxMjI3NGRlN2Q3MjQyODYwMjkwNzM3
Y2Y5ZWEuLmI1YzY5MjYwMTkyYzI4NWZhMjAzNDQ4ZWM1YTkwY2VmNzEzZmRhYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMTE5LDYgKzExMTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVn
aXN0ZXJGb3JBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2FsbGJhY2tz
KEhUTUxNZWRpYUVsZW1lbnQmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJGb3JBbGxvd3NNZWRpYURv
Y3VtZW50SW5saW5lUGxheWJhY2tDaGFuZ2VkQ2FsbGJhY2tzKEhUTUxNZWRpYUVsZW1lbnQmKTsK
ICAgICB2b2lkIGFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFja0NoYW5nZWQoKTsKKwor
ICAgIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCk7CisgICAgdm9pZCByZXN1bWVBbGxNZWRpYVBsYXliYWNrKCk7CiAjZW5kaWYK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKGJvb2wp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggOWZkOWQ0Zjcz
ZTI4NWQyNjE1MGI2Y2MwNmUwNWRkNmIwYmMzOGEyOS4uMjBjZGE1MmM3MjliNDc3NTZjNGZkNmZm
YWY4ZGQ1ZjIzNWE4ZjJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC00NjYsNyArNDY2LDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAgICAsIG1f
aGF2ZVNldFVwQ2FwdGlvbkNvbnRhaW5lcihmYWxzZSkKICNlbmRpZgogICAgICwgbV9pc1NjcnVi
YmluZ1JlbW90ZWx5KGZhbHNlKQotICAgICwgbV9zaG91bGRVbnBhdXNlSW50ZXJuYWxPblJlc3Vt
ZShmYWxzZSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBtX3RyYWNrc0FyZVJlYWR5
KHRydWUpCiAgICAgLCBtX2hhdmVWaXNpYmxlVGV4dFRyYWNrKGZhbHNlKQpAQCAtOTE5LDYgKzkx
OCw4IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkRmluaXNoSW5zZXJ0aW5nTm9kZSgpCiB7
CiAgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBwcmVw
YXJlRm9yTG9hZCBtYXkgcmVzdWx0IGluIGEgJ2JlZm9yZWxvYWQnIGV2ZW50LCB3aGljaCBjYW4g
bWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KIAorICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIpOworCiAgICAgaWYgKG1faW5BY3RpdmVEb2N1bWVudCAmJiBtX25ldHdvcmtTdGF0ZSA9PSBO
RVRXT1JLX0VNUFRZICYmICFhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKHNyY0F0dHIp
LmlzRW1wdHkoKSkKICAgICAgICAgcHJlcGFyZUZvckxvYWQoKTsKIApAQCAtMTEzMCw2ICsxMTMx
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTcmNPYmplY3QoTWVkaWFQcm92aWRlciYm
IG1lZGlhUHJvdmlkZXIpCiAgICAgLy8gNC43LjE0LjIuIExvY2F0aW9uIG9mIHRoZSBtZWRpYSBy
ZXNvdXJjZQogICAgIC8vIHNyY09iamVjdDogT24gc2V0dGluZywgaXQgbXVzdCBzZXQgdGhlIGVs
ZW1lbnTigJlzIGFzc2lnbmVkIG1lZGlhIHByb3ZpZGVyIG9iamVjdCB0byB0aGUgbmV3CiAgICAg
Ly8gdmFsdWUsIGFuZCB0aGVuIGludm9rZSB0aGUgZWxlbWVudOKAmXMgbWVkaWEgZWxlbWVudCBs
b2FkIGFsZ29yaXRobS4KKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsKICAgICBtX21lZGlh
UHJvdmlkZXIgPSBXVEZNb3ZlKG1lZGlhUHJvdmlkZXIpOwogICAgIHByZXBhcmVGb3JMb2FkKCk7
CiB9CkBAIC0xNzYyLDEwICsxNzY0LDE2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRl
QWN0aXZlVGV4dFRyYWNrQ3Vlcyhjb25zdCBNZWRpYVRpbWUmIG1vdmllVGltZSkKICAgICBpZiAo
bmV4dEN1ZSkKICAgICAgICAgbmV4dEludGVyZXN0aW5nVGltZSA9IHN0ZDo6bWluKG5leHRJbnRl
cmVzdGluZ1RpbWUsIG5leHRDdWUtPmxvdygpKTsKIAorICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICJuZXh0SW50ZXJlc3RpbmdUaW1lOiIsIG5leHRJbnRlcmVzdGluZ1RpbWUpOworCiAgICAg
aWYgKG5leHRJbnRlcmVzdGluZ1RpbWUuaXNWYWxpZCgpICYmIG1fcGxheWVyKSB7Ci0gICAgICAg
IG1fcGxheWVyLT5wZXJmb3JtVGFza0F0TWVkaWFUaW1lKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KHRoaXMpLCBuZXh0SW50ZXJlc3RpbmdUaW1lXSB7Ci0gICAgICAgICAgICBpZiAod2Vha1RoaXMp
Ci0gICAgICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMod2Vh
a1RoaXMtPmN1cnJlbnRNZWRpYVRpbWUoKSk7CisgICAgICAgIG1fcGxheWVyLT5wZXJmb3JtVGFz
a0F0TWVkaWFUaW1lKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBuZXh0SW50
ZXJlc3RpbmdUaW1lXSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgYXV0byBjdXJyZW50TWVkaWFUaW1lID0gd2Vha1Ro
aXMtPmN1cnJlbnRNZWRpYVRpbWUoKTsKKyAgICAgICAgICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsICIgLSBsYW1iZGEsIGN1cnJlbnRNZWRpYVRpbWU6IiwgY3VycmVudE1lZGlhVGltZSk7Cisg
ICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50TWVk
aWFUaW1lKTsKICAgICAgICAgfSwgbmV4dEludGVyZXN0aW5nVGltZSk7CiAgICAgfQogCkBAIC01
NzI4LDExICs1NzM2LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZv
clN1c3BlbnNpb24gcmVhc29uKQogICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JS
ZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGFnZUNvbnNlbnRUb1Jlc3Vt
ZU1lZGlhKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpQ
YWdlV2lsbEJlU3VzcGVuZGVkOgotICAgICAgICBpZiAoIW1fcGF1c2VkSW50ZXJuYWwpIHsKLSAg
ICAgICAgICAgIG1fc2hvdWxkVW5wYXVzZUludGVybmFsT25SZXN1bWUgPSB0cnVlOwotICAgICAg
ICAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQ6
CiAgICAgY2FzZSBSZWFzb25Gb3JTdXNwZW5zaW9uOjpXaWxsRGVmZXJMb2FkaW5nOgogICAgICAg
ICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBj
YXNlcy4KQEAgLTU3NDgsMTEgKzU3NTEsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlc3Vt
ZSgpCiAKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS5yZXN1bWUoKTsKIAotICAgIGlmIChtX3Nob3Vs
ZFVucGF1c2VJbnRlcm5hbE9uUmVzdW1lKSB7Ci0gICAgICAgIG1fc2hvdWxkVW5wYXVzZUludGVy
bmFsT25SZXN1bWUgPSBmYWxzZTsKLSAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwoZmFsc2UpOwot
ICAgIH0KLQogICAgIHNldFNob3VsZEJ1ZmZlckRhdGEodHJ1ZSk7CiAKICAgICBpZiAoIW1fbWVk
aWFTZXNzaW9uLT5wYWdlQWxsb3dzUGxheWJhY2tBZnRlclJlc3VtaW5nKCkpCkBAIC01OTM2LDYg
KzU5MzQsMTIgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFj
a1RhcmdldChib29sIHNob3VsZFBsYXkpCiAKICNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExB
WUJBQ0tfVEFSR0VUKQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OndlYmtpdEN1cnJlbnRQbGF5
YmFja1RhcmdldElzV2lyZWxlc3MoKSBjb25zdAoreworICAgIElORk9fTE9HKExPR0lERU5USUZJ
RVIsIG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldCk7CisgICAgcmV0dXJuIG1faXNQbGF5aW5n
VG9XaXJlbGVzc1RhcmdldDsKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5aW5n
T25TZWNvbmRTY3JlZW4oYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUgPT0gbV9wbGF5aW5n
T25TZWNvbmRTY3JlZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4
IDExOGZkNGY3OTY3MjY5YjIzMjllZmU1NzMxZjk2Yjc4NDEzNDVkNDMuLjRhMjViNWNkZDFiMTBm
MGYxODAyZmM2Zjg0NWQyYjFlNzBiZWRhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCkBAIC00MTIsNyArNDEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQoYm9vbCkgb3ZlcnJpZGU7CiAjZW5kaWYKICAgICBib29sIGlz
UGxheWluZ1RvV2lyZWxlc3NQbGF5YmFja1RhcmdldCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1faXNQbGF5aW5nVG9XaXJlbGVzc1RhcmdldDsgfTsKLSAgICBib29sIHdlYmtpdEN1cnJlbnRQ
bGF5YmFja1RhcmdldElzV2lyZWxlc3MoKSBjb25zdCB7IHJldHVybiBtX2lzUGxheWluZ1RvV2ly
ZWxlc3NUYXJnZXQ7IH0KKyAgICBib29sIHdlYmtpdEN1cnJlbnRQbGF5YmFja1RhcmdldElzV2ly
ZWxlc3MoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGJvb2wg
dmFsdWUpOwogICAgIGJvb2wgaXNQbGF5aW5nT25TZWNvbmRTY3JlZW4oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3BsYXlpbmdPblNlY29uZFNjcmVlbjsgfQpAQCAtMTExMCw3ICsxMTEwLDYg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9pc1NjcnViYmluZ1JlbW90ZWx5IDogMTsKICAgICBi
b29sIG1fd2FpdGluZ1RvRW50ZXJGdWxsc2NyZWVuIDogMTsKLSAgICBib29sIG1fc2hvdWxkVW5w
YXVzZUludGVybmFsT25SZXN1bWUgOiAxOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IGJvb2wgbV90cmFja3NBcmVSZWFkeSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmNwcAppbmRleCAwYWJhMmQyZTU4N2YzYmMzNWI2MjZmYmE3YzlmMzk0NTRk
YTExNDNhLi4yMmUyYTE2ZjIwNjBlM2Q1ZWZjNzBlYzhjMDU5YmU2YmZhYjE1NTIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKQEAgLTI2Miw2ICsyNjIs
MTAgQEAgU3VjY2Vzc09yPE1lZGlhUGxheWJhY2tEZW5pYWxSZWFzb24+IE1lZGlhRWxlbWVudFNl
c3Npb246OnBsYXliYWNrUGVybWl0dGVkKCkgY28KICAgICB9CiAKICAgICBhdXRvJiBkb2N1bWVu
dCA9IG1fZWxlbWVudC5kb2N1bWVudCgpOworICAgIGF1dG8qIHBhZ2UgPSBkb2N1bWVudC5wYWdl
KCk7CisgICAgaWYgKCFwYWdlIHx8IHBhZ2UtPm1lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCgpKQor
ICAgICAgICByZXR1cm4gTWVkaWFQbGF5YmFja0RlbmlhbFJlYXNvbjo6UGFnZUNvbnNlbnRSZXF1
aXJlZDsKKwogICAgIGlmIChkb2N1bWVudC5pc01lZGlhRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQu
b3duZXJFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmlu
ZGV4IDI5NmJlZmYyNGI4OWY3ZDgyMDc4ZmZhNjAzYTk5MTA1M2FlZmE0YWEuLmRkZjM5MTI3OTUz
NGI5MGMxNTc3OGJhZDJiY2U4NDllNzU4NTEzOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTcx
Niw2ICsxNzE2LDQxIEBAIHZvaWQgUGFnZTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAjZW5kaWYKIH0K
IAordm9pZCBQYWdlOjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVy
c2VOZXh0KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50
KCkpCisgICAgICAgICAgICBkb2N1bWVudC0+c3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB9
Cit9CisKK3ZvaWQgUGFnZTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQoreworICAgIEFTU0VS
VCghbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQpOworICAgIGlmIChtX21lZGlhUGxheWJhY2tJ
c1N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkpCisgICAg
ICAgICAgICBkb2N1bWVudC0+c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB9CisKKyAg
ICBtX21lZGlhUGxheWJhY2tJc1N1c3BlbmRlZCA9IHRydWU7Cit9CisKK3ZvaWQgUGFnZTo6cmVz
dW1lQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgQVNTRVJUKG1fbWVkaWFQbGF5YmFja0lzU3Vz
cGVuZGVkKTsKKyAgICBpZiAoIW1fbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgPSBmYWxzZTsKKworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLnRyYXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGZyYW1l
LT5kb2N1bWVudCgpKQorICAgICAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soKTsKKyAgICB9Cit9CisKICNpZiBFTkFCTEUoTUVESUFfU0VTU0lPTikKIHZvaWQgUGFnZTo6
aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IGI1YjdmNTlmOGExYmUyMjI1NDc4MzU1OTJmYTljYzA2OWEzYjM2YTAuLmNmOTJkZWMy
ZjlkYWUxNDg1OTIyZTlmOGIwYWNiZDQ5YjJlNzJmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02MDAs
NiArNjAwLDExIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE11dGVkKE1l
ZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wTWVkaWFDYXB0dXJlKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BBbGxNZWRp
YVBsYXliYWNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdXNwZW5kQWxsTWVkaWFQbGF5
YmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdW1lQWxsTWVkaWFQbGF5YmFjaygp
OworICAgIGJvb2wgbWVkaWFQbGF5YmFja0lzU3VzcGVuZGVkKCkgeyByZXR1cm4gbV9tZWRpYVBs
YXliYWNrSXNTdXNwZW5kZWQ7IH0KKwogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWb2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUsIHVpbnQ2
NF90KTsKQEAgLTk0NSw2ICs5NTAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBib29sIG1f
c2hvdWxkRW5hYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nQnlEZWZhdWx0IHsgdHJ1ZSB9OworICAg
IGJvb2wgbV9tZWRpYVBsYXliYWNrSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogfTsKIAogaW5saW5l
IFBhZ2VHcm91cCYgUGFnZTo6Z3JvdXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uLmgKaW5kZXggMTdhMzBkNWNlYWNlNWY4YTA5
ZWU4NTZhYjVjMTNhNTE2ZWY1OTRhMS4uMjVjMTc3OTkwY2YyNjEzZjI1ZmUwYWQwMGQ4ODEyNDI5
YjZkYTBmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZv
cm1NZWRpYVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9QbGF0
Zm9ybU1lZGlhU2Vzc2lvbi5oCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3Vz
cGVuZGVkVW5kZXJMb2NrLAogICAgICAgICBJbnZpc2libGVBdXRvcGxheSwKICAgICAgICAgUHJv
Y2Vzc0luYWN0aXZlLAorICAgICAgICBQbGF5YmFja1N1c3BlbmRlZCwKICAgICB9OwogICAgIElu
dGVycnVwdGlvblR5cGUgaW50ZXJydXB0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJy
dXB0aW9uVHlwZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmNwcAppbmRleCAxYTMwNWQxNzNi
YjAyMzE0ZmJkODUwNTc5OGYyMWUwZjhkNDFkNDhhLi5kMjlkN2IyYjdkNTNiYmJiMDBhMTZhNjQ2
M2UxNWI2YTNhMDU0YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5jcHAKQEAgLTQxOSw2ICs0
MTksMjIgQEAgdm9pZCBQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXI6OnN0b3BBbGxNZWRpYVBs
YXliYWNrRm9yUHJvY2VzcygpCiAgICAgfSk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1NZWRpYVNlc3Np
b25NYW5hZ2VyOjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkKK3sKKyAgICBmb3JFYWNoU2Vzc2lvbihbJl0gKFBsYXRmb3JtTWVkaWFT
ZXNzaW9uJiBzZXNzaW9uLCBzaXplX3QpIHsKKyAgICAgICAgaWYgKHNlc3Npb24uY2xpZW50KCku
aG9zdGluZ0RvY3VtZW50KCkgPT0gJmRvY3VtZW50KQorICAgICAgICAgICAgc2Vzc2lvbi5iZWdp
bkludGVycnVwdGlvbihQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6UGxheWJhY2tTdXNwZW5kZWQpOwor
ICAgIH0pOworfQorCit2b2lkIFBsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6cmVzdW1lQWxs
TWVkaWFQbGF5YmFja0ZvckRvY3VtZW50KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAg
ICBmb3JFYWNoU2Vzc2lvbihbJl0gKFBsYXRmb3JtTWVkaWFTZXNzaW9uJiBzZXNzaW9uLCBzaXpl
X3QpIHsKKyAgICAgICAgaWYgKHNlc3Npb24uY2xpZW50KCkuaG9zdGluZ0RvY3VtZW50KCkgPT0g
JmRvY3VtZW50KQorICAgICAgICAgICAgc2Vzc2lvbi5lbmRJbnRlcnJ1cHRpb24oUGxhdGZvcm1N
ZWRpYVNlc3Npb246Ok1heVJlc3VtZVBsYXlpbmcpOworICAgIH0pOworfQorCiB2b2lkIFBsYXRm
b3JtTWVkaWFTZXNzaW9uTWFuYWdlcjo6Zm9yRWFjaFNlc3Npb24oY29uc3QgRnVuY3Rpb248dm9p
ZChQbGF0Zm9ybU1lZGlhU2Vzc2lvbiYsIHNpemVfdCk+JiBwcmVkaWNhdGUpIGNvbnN0CiB7CiAg
ICAgKyttX2l0ZXJhdGluZ092ZXJTZXNzaW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1BsYXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKaW5kZXgg
NGQ4N2ZkOGY4YWUwMWEzNWVlODE2MWNmMGRlNTRiNmViZDc4YWE5Yi4uZTY3MGRhZmMxMTMxMzFk
YWE0ZTI4MmM5YzQwYmIyMDkzMjdiNDgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmgKQEAgLTc3
LDYgKzc3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3RvcEFsbE1lZGlhUGxheWJhY2tGb3JEb2N1
bWVudChjb25zdCBEb2N1bWVudCopOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcEFsbE1l
ZGlhUGxheWJhY2tGb3JQcm9jZXNzKCk7CiAKKyAgICB2b2lkIHN1c3BlbmRBbGxNZWRpYVBsYXli
YWNrRm9yRG9jdW1lbnQoY29uc3QgRG9jdW1lbnQmKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlh
UGxheWJhY2tGb3JEb2N1bWVudChjb25zdCBEb2N1bWVudCYpOworCiAgICAgZW51bSBTZXNzaW9u
UmVzdHJpY3Rpb25GbGFncyB7CiAgICAgICAgIE5vUmVzdHJpY3Rpb25zID0gMCwKICAgICAgICAg
Q29uY3VycmVudFBsYXliYWNrTm90UGVybWl0dGVkID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggM2M1YmViZjI3YjQyZmI5
NDU2ZmVkZDBlOWFlMTMzZTc1YmRhNmRjOS4uODAwZjM3MWEzYjYwY2FmN2ZjZTU2MjA0NmUwMmJm
NmNhZjk3NzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC00NTI5LDYgKzQ1MjksMjEgQEAgLSAodm9pZClfdG9nZ2xlUGljdHVyZUlu
UGljdHVyZQogI2VuZGlmCiB9CiAKKy0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXliYWNrCit7Cisg
ICAgX3BhZ2UtPnN0b3BBbGxNZWRpYVBsYXliYWNrKCk7Cit9CisKKy0gKHZvaWQpX3N1c3BlbmRB
bGxNZWRpYVBsYXliYWNrCit7CisgICAgX3BhZ2UtPnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCk7
Cit9CisKKy0gKHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKK3sKKyAgICBfcGFnZS0+cmVz
dW1lQWxsTWVkaWFQbGF5YmFjaygpOworfQorCiAtIChOU1VSTCAqKV91bnJlYWNoYWJsZVVSTAog
ewogICAgIHJldHVybiBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOl9wYWdlLT5wYWdlTG9h
ZFN0YXRlKCkudW5yZWFjaGFibGVVUkwoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCBlNzA5NDA5ZmI0YTY2ODM0
ZjVjYjJmYTM5NjdhMzkzYWY1OTg2MDUwLi5kZjdjMDJmZWZjMGRjYThlZTIwM2YyOWE5MWUwZmRm
ZWUyNjc3NDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQwMyw3ICs0MDMsOSBAQCB0eXBlZGVmIE5TX09QVElP
TlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQk9PTCBfaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlOwogLSAodm9pZClfdXBkYXRlTWVk
aWFQbGF5YmFja0NvbnRyb2xzTWFuYWdlcjsKIC0gKHZvaWQpX3RvZ2dsZVBpY3R1cmVJblBpY3R1
cmU7Ci0KKy0gKHZvaWQpX3N0b3BBbGxNZWRpYVBsYXliYWNrOworLSAodm9pZClfc3VzcGVuZEFs
bE1lZGlhUGxheWJhY2s7CistICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrOwogQGVuZAog
CiAjaWYgVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggZGE3YTk0YTMzZDgxOTM1Y2ExNDMyMDczNDY4OGNjOTg5NzNhNTQ4Mi4uNDFh
ZDVlODFlOWQwMWUyMzBiY2QyNWU3NjI3MDBiZDk0NWUyZmMyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01MTAyLDYgKzUxMDIsMzAgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnN0b3BNZWRpYUNhcHR1cmUoKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3Rv
cEFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQoreworICAgIGlmICghaXNWYWxpZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3Vt
ZUFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworfQorCiAjaWYgRU5BQkxFKE1FRElBX1NF
U1NJT04pCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlw
ZSBldmVudFR5cGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDE4YmY4MTAxYTBlZGQyYjRhMGZlOTg3NjBkZWY0Mzg4YjM0MDMwMTguLmUyZmNmYjZmNWEyNDE4
MjVlYjM5NzRhMTY2ODYyMDllZWQzOGNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMTI0LDYgKzExMjQsMTAgQEAgcHVibGljOgogICAgIGJvb2wgbWVkaWFD
YXB0dXJlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFDYXB0dXJlRW5hYmxlZDsgfQog
ICAgIHZvaWQgc3RvcE1lZGlhQ2FwdHVyZSgpOwogCisgICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5
YmFjaygpOworICAgIHZvaWQgc3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHJl
c3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKwogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQogICAg
IGJvb2wgaGFzTWVkaWFTZXNzaW9uV2l0aEFjdGl2ZU1lZGlhRWxlbWVudHMoKSBjb25zdCB7IHJl
dHVybiBtX2hhc01lZGlhU2Vzc2lvbldpdGhBY3RpdmVNZWRpYUVsZW1lbnRzOyB9CiAgICAgdm9p
ZCBoYW5kbGVNZWRpYUV2ZW50KFdlYkNvcmU6Ok1lZGlhRXZlbnRUeXBlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mdWxsc2NyZWVuL1dLRnVsbFNjcmVlblZpZXdD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KaW5kZXggYzUwNWIyNmUzMWEzYjQ5ZjBhZWZhYmRi
YWE3YzU5YzUxMWYzZTEwMy4uMzUxYjYxZjgyNDY4MzAxODhlNmI4MjAwMjc4OGU4NDM0ZDVjMWNl
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Z1bGxzY3JlZW4vV0tG
dWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0KQEAgLTU1NiwxMyAr
NTU2LDE3IEBAIC0gKHZvaWQpX3Nob3dQaGlzaGluZ0FsZXJ0CiAgICAgTlNTdHJpbmcgKmFsZXJ0
TWVzc2FnZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OldFQl9VSV9TVFJJTkcoIlR5cGlu
ZyBpcyBub3QgYWxsb3dlZCBpbiBmdWxsIHNjcmVlbiB3ZWJzaXRlcy4g4oCcJUDigJ0gbWF5IGJl
IHNob3dpbmcgYSBmYWtlIGtleWJvYXJkIHRvIHRyaWNrIHlvdSBpbnRvIGRpc2Nsb3NpbmcgcGVy
c29uYWwgb3IgZmluYW5jaWFsIGluZm9ybWF0aW9uLiIsICJGdWxsIFNjcmVlbiBEZWNlcHRpdmUg
V2Vic2l0ZSBXYXJuaW5nIFNoZWV0IENvbnRlbnQgVGV4dCIpLCAoTlNTdHJpbmcgKilzZWxmLmxv
Y2F0aW9uXTsKICAgICBVSUFsZXJ0Q29udHJvbGxlciogYWxlcnQgPSBbVUlBbGVydENvbnRyb2xs
ZXIgYWxlcnRDb250cm9sbGVyV2l0aFRpdGxlOmFsZXJ0VGl0bGUgbWVzc2FnZTphbGVydE1lc3Nh
Z2UgcHJlZmVycmVkU3R5bGU6VUlBbGVydENvbnRyb2xsZXJTdHlsZUFsZXJ0XTsKIAotICAgIGlm
IChhdXRvKiBwYWdlID0gW3NlbGYuX3dlYlZpZXcgX3BhZ2VdKQorICAgIGlmIChhdXRvKiBwYWdl
ID0gW3NlbGYuX3dlYlZpZXcgX3BhZ2VdKSB7CisgICAgICAgIHBhZ2UtPnN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCk7CiAgICAgICAgIHBhZ2UtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOworICAgIH0KIAogICAgIFVJQWxlcnRBY3Rpb24qIGV4aXRBY3Rpb24gPSBbVUlB
bGVydEFjdGlvbiBhY3Rpb25XaXRoVGl0bGU6V0VCX1VJX1NUUklOR19LRVkoIkV4aXQgRnVsbCBT
Y3JlZW4iLCAiRXhpdCBGdWxsIFNjcmVlbiAoRWxlbWVudCBGdWxsIFNjcmVlbikiLCAiRnVsbCBT
Y3JlZW4gRGVjZXB0aXZlIFdlYnNpdGUgRXhpdCBBY3Rpb24iKSBzdHlsZTpVSUFsZXJ0QWN0aW9u
U3R5bGVDYW5jZWwgaGFuZGxlcjpeKFVJQWxlcnRBY3Rpb24gKiBhY3Rpb24pIHsKICAgICAgICAg
W3NlbGYgX2NhbmNlbEFjdGlvbjphY3Rpb25dOwotICAgICAgICBpZiAoYXV0byogcGFnZSA9IFtz
ZWxmLl93ZWJWaWV3IF9wYWdlXSkKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBbc2VsZi5fd2Vi
VmlldyBfcGFnZV0pIHsKICAgICAgICAgICAgIHBhZ2UtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKCk7CisgICAgICAgICAgICBwYWdlLT5yZXN1bWVBbGxNZWRpYVBsYXliYWNr
KCk7CisgICAgICAgIH0KICAgICB9XTsKIAogICAgIFVJQWxlcnRBY3Rpb24qIHN0YXlBY3Rpb24g
PSBbVUlBbGVydEFjdGlvbiBhY3Rpb25XaXRoVGl0bGU6V0VCX1VJX1NUUklOR19LRVkoIlN0YXkg
aW4gRnVsbCBTY3JlZW4iLCAiU3RheSBpbiBGdWxsIFNjcmVlbiAoRWxlbWVudCBGdWxsIFNjcmVl
bikiLCAiRnVsbCBTY3JlZW4gRGVjZXB0aXZlIFdlYnNpdGUgU3RheSBBY3Rpb24iKSBzdHlsZTpV
SUFsZXJ0QWN0aW9uU3R5bGVEZWZhdWx0IGhhbmRsZXI6XihVSUFsZXJ0QWN0aW9uICogYWN0aW9u
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGE5NzkwMWQzZTIwN2RkNGQ5NWU5MmMxOWM4ZDk1Yzk2MjVlMDI3NTkuLjJjOTlmNDQ4YmMwNDg0
NTY0YjE4YmYwZjc2YmUzNzIwODIyMGU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02NTYsNiArNjU2LDIxIEBAIHZvaWQgV2ViUGFnZTo6
ZW5hYmxlRW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpCiAjZW5kaWYKICNlbmRpZgog
Cit2b2lkIFdlYlBhZ2U6OnN0b3BBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBtX3BhZ2UtPnN0
b3BBbGxNZWRpYVBsYXliYWNrKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6c3VzcGVuZEFsbE1lZGlh
UGxheWJhY2soKQoreworICAgIG1fcGFnZS0+c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKK30K
Kwordm9pZCBXZWJQYWdlOjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKK3sKKyAgICBtX3BhZ2Ut
PnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxp
emVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAg
IEFTU0VSVChtX2RyYXdpbmdBcmVhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCAwYjQyYTYxN2NjYzEwOThhNTc1ZWI0N2NjNjQxZjYwMzU1ZTY4ZGI2
Li5hYTVhYjc3NDEzY2NhMjJhZjRiYzNlYmU1NDMwZjJjYmM1ZWE2ZDI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMzg1LDYgKzEzODUsMTAgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMo
KTsKICNlbmRpZgogCisgICAgdm9pZCBzdG9wQWxsTWVkaWFQbGF5YmFjaygpOworICAgIHZvaWQg
c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICB2b2lkIHJlc3VtZUFsbE1lZGlhUGxheWJh
Y2soKTsKKwogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5n
JiB3b3JkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTI2NTRkOTQzY2Y0YzRmNmI1ZTQ5N2ViNzkyZmI4ZDVk
NjVjYmJmNC4uYWM3ZDdiZWZmOTJlZDUyZWNjOTFhYjY1MjcyNDVmZmQ4MGQ5OTZmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0zNTYsNiArMzU2LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogICAgIERpc2FibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKCkKICNlbmRp
ZgogCisgICAgU3RvcEFsbE1lZGlhUGxheWJhY2soKTsKKyAgICBTdXNwZW5kQWxsTWVkaWFQbGF5
YmFjaygpOworICAgIFJlc3VtZUFsbE1lZGlhUGxheWJhY2soKTsKKwogICAgICMgTm90aWZpY2F0
aW9uCiAgICAgRGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRf
dCBub3RpZmljYXRpb25JRCwgYm9vbCBhbGxvd2VkKQogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWQxNTZiYjRjZGI0NWVmMjVkMjFjMTJlYzg3
Y2NmNjMxNTA2NjU3MC4uMTFmMDIxMzM5MDk4Mjc4ZWJjNzg4ZjA1MGRmZTEzMzJmZTk4NDY2NiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDE4LTEyLTE4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgor
CisgICAgICAgIFtXZWJLaXRMZWdhY3ldIE1lZGlhIHBsYXliYWNrIHBhdXNlcyBvbiBzY3JvbGwK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjgyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRp
YS5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU2Nyb2xsaW5nRG9lc05vdFBhdXNl
TWVkaWEubW06IEFkZGVkLgorICAgICAgICAoLVtTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYURl
bGVnYXRlIHdlYlZpZXdEaWRGaW5pc2hMb2FkOl0pOgorICAgICAgICAoLVtTY3JvbGxpbmdEb2Vz
Tm90UGF1c2VNZWRpYURlbGVnYXRlIHVpV2ViVmlldzpkaWRDb21taXRMb2FkRm9yRnJhbWU6XSk6
CisgICAgICAgICgtW1Njcm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlhRGVsZWdhdGUgaGFuZGxlRXZl
bnQ6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxOC0xMC0zMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBTREtfVkFSSUFOVCBidWls
ZCBkZXN0aW5hdGlvbnMgc2hvdWxkIGJlIHNlcGFyYXRlIGZyb20gbm9uLVNES19WQVJJQU5UIGJ1
aWxkcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiY2RkMmNmOTg5NzRiZDI1ZjQ2ODliNjky
YTJmNzQwOGUzNTdjZjBkLi40NzI3NDY3NTQzZWRmODQxOGNlZWM3ZmRiNzRhMjE1MmEzYjA0MGIw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzY2LDYgKzc2Niw4IEBACiAJCUNEQjVERkZG
MjEzNjEwRkEwMEQzRTE4OSAvKiBub3ctcGxheWluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjVERkZFMjEzNjBFRDgwMEQzRTE4
OSAvKiBub3ctcGxheWluZy5odG1sICovOyB9OwogCQlDREJGQ0M0NTFBOUZGNDUzMDBBN0I2OTEg
LyogRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREJGQ0M0MzFBOUZGNDQ4MDBBN0I2OTEgLyogRnVsbHNj
cmVlblpvb21Jbml0aWFsRnJhbWUubW0gKi87IH07CiAJCUNEQkZDQzQ2MUE5RkY0OUUwMEE3QjY5
MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQkZDQzQyMUE5RkY0NDgwMEE3QjY5
MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5odG1sICovOyB9OworCQlDREMwOTMyQjIx
Qzg3MkMxMDAzMEM0QjAgLyogU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREMwOTMyQTIxQzg3MkMxMDAz
MEM0QjAgLyogU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEubW0gKi87IH07CisJCUNEQzA5MzJF
MjFDOTkzNDQwMDMwQzRCMCAvKiBTdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDMDkzMkQyMUM5OTM0NDAw
MzBDNEIwIC8qIFN0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0gKi87IH07CiAJCUNEQzhFNDhE
MUJDNUNCNDUwMDU5NEZFQyAvKiBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQzhFNDg1MUJDNUIxOTQwMDU5
NEZFQyAvKiBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbSAqLzsgfTsKIAkJQ0RDOEU0OTQxQkM2
RjEwODAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREM4RTQ4OTFCQzVDOTYyMDA1OTRG
RUMgLyogdmlkZW8td2l0aC1hdWRpby5odG1sICovOyB9OwogCQlDREM4RTQ5NTFCQzZGMTA4MDA1
OTRGRUMgLyogdmlkZW8td2l0aC1hdWRpby5tcDQgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDOEU0OEExQkM1Qzk2MjAwNTk0RkVDIC8qIHZp
ZGVvLXdpdGgtYXVkaW8ubXA0ICovOyB9OwpAQCAtMjA1Miw2ICsyMDU0LDggQEAKIAkJQ0RCNURG
RkUyMTM2MEVEODAwRDNFMTg5IC8qIG5vdy1wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibm93LXBs
YXlpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEQkZDQzQyMUE5RkY0
NDgwMEE3QjY5MSAvKiBGdWxsc2NyZWVuWm9vbUluaXRpYWxGcmFtZS5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUuaHRtbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RCRkNDNDMxQTlGRjQ0ODAwQTdCNjkxIC8qIEZ1bGxz
Y3JlZW5ab29tSW5pdGlhbEZyYW1lLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRnVsbHNjcmVlblpvb21Jbml0aWFsRnJhbWUubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQzA5MzJBMjFDODcyQzEwMDMwQzRCMCAvKiBTY3JvbGxpbmdEb2VzTm90
UGF1c2VNZWRpYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ0RvZXNOb3RQYXVz
ZU1lZGlhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREMwOTMyRDIxQzk5MzQ0
MDAzMEM0QjAgLyogU3RvcFN1c3BlbmRSZXN1bWVBbGxNZWRpYS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFN0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdGQiAvKiBUaW1lUmFuZ2VzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRpbWVSYW5nZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDREM4RTQ4NTFCQzVCMTk0MDA1OTRGRUMgLyogQXVkaW9TZXNzaW9uQ2F0ZWdvcnlJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdWRpb1Nlc3Npb25D
YXRlZ29yeUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0RDOEU0ODkxQkM1
Qzk2MjAwNTk0RkVDIC8qIHZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJ2aWRlby13aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjUyNyw2ICsyNTMxLDcgQEAKIAkJCQkzN0JDQTYxQjFCNTk2QkE5MDAyMDEyQ0Eg
LyogU2hvdWxkT3BlbkV4dGVybmFsVVJMc0luTmV3V2luZG93QWN0aW9ucy5tbSAqLywKIAkJCQky
RDlBNTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0gKi8sCiAJCQkJMkRGRjdC
NkMxREE0ODdBRjAwODE0NjE0IC8qIFNuYXBzaG90U3RvcmUubW0gKi8sCisJCQkJQ0RDMDkzMkQy
MUM5OTM0NDAwMzBDNEIwIC8qIFN0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0gKi8sCiAJCQkJ
NTE1QkUxNzAxRDQyOEJEMTAwREQ3QzY4IC8qIFN0b3JlQmxvYlRoZW5EZWxldGUubW0gKi8sCiAJ
CQkJMUM3MzRCNTIyMDc4OEM0ODAwRjQzMEVBIC8qIFN5c3RlbUNvbG9ycy5tbSAqLywKIAkJCQlG
NENENzRDNzIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCAqLywKQEAg
LTM1MzUsNiArMzU0MCw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlDREM4RTQ5QTFCQzcyOEZF
MDA1OTRGRUMgLyogUmVzb3VyY2VzICovLAogCQkJCUNEQzhFNDg1MUJDNUIxOTQwMDU5NEZFQyAv
KiBBdWRpb1Nlc3Npb25DYXRlZ29yeUlPUy5tbSAqLywKKwkJCQlDREMwOTMyQTIxQzg3MkMxMDAz
MEM0QjAgLyogU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWEubW0gKi8sCiAJCQkJMEY0RkZBOUQx
RUQzQUE4NTAwRjcxMTFGIC8qIFNuYXBzaG90VmlhUmVuZGVySW5Db250ZXh0Lm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSBpb3M7CkBAIC00MTMyLDYgKzQxMzgsNyBAQAogCQkJCTVDQTk4NTUzMjEx
M0NGNzgwMDU3RUI2QiAvKiBTYWZlQnJvd3NpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRENG
QTdBQTFFNDUxODMyMDBDMjQzM0QgLyogU2FtcGxlTWFwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNFMDk0NzM3MjA2MzIyM0IwMDNDOUJBMCAvKiBTY2hlbWVSZWdpc3RyeS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQzA5MzJCMjFDODcyQzEwMDMwQzRCMCAvKiBTY3JvbGxpbmdEb2VzTm90UGF1
c2VNZWRpYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjEyMUE0MTFBRTYwMDQ0N0M0QyAv
KiBTY3JvbGxQaW5uaW5nQmVoYXZpb3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY0Qzg3OTdG
MjA1OUQ4RDMwMDlDRDAwQiAvKiBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNFMDZERjlCMUUxODUxRjIwMEU1NzBDOSAvKiBTZWN1cml0eU9yaWdpbi5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTQxNTYsNiArNDE2Myw3IEBACiAJCQkJN0NDRTdFRjIxQTQxMUFFNjAw
NDQ3QzRDIC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VDRTFBNDExQTdFMDA0NDdDNEMgLyogU3RvcExvYWRpbmdG
cm9tRGlkRmluaXNoTG9hZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUNGMUE0MTFB
N0UwMDQ0N0M0QyAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UubW0gaW4gU291
cmNlcyAqLywKKwkJCQlDREMwOTMyRTIxQzk5MzQ0MDAzMEM0QjAgLyogU3RvcFN1c3BlbmRSZXN1
bWVBbGxNZWRpYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxNUJFMTcxMUQ0MjhFNEIwMEREN0M2
OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDAx
QTQxMUE3RTAwNDQ3QzRDIC8qIFN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5n
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDExQTQxMUE3RTAwNDQ3QzRDIC8qIFN0cmlu
Z1RydW5jYXRvci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1lZGlhLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TdG9wU3VzcGVuZFJlc3VtZUFsbE1l
ZGlhLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBkOTlhYjY5ODgyY2JhYjU3YWU1ZWZiNWMwMWY4NDNhYzIxNDcx
MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1N0b3BTdXNwZW5kUmVzdW1lQWxsTWVkaWEubW0KQEAgLTAsMCArMSw4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKE1BQykKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RX
S1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChX
S1dlYlZpZXcsIFN0b3BBbGxNZWRpYVBsYXliYWNrKQoreworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIGFkZFRvV2luZG93OllFU10pOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPHZpZGVvIHNyYz1cInZpZGVvLXdpdGgtYXVkaW8ubXA0XCIgd2Via2l0
LXBsYXlzaW5saW5lPjwvdmlkZW8+Il07CisKKyAgICBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZnVuY3Rpb24gZXZlbnRUb01lc3NhZ2UoZXZlbnQpe3dpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKGV2ZW50LnR5cGUpO30g
dmFyIHZpZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKTsgdmlkZW8uYWRkRXZl
bnRMaXN0ZW5lcigncGxheWluZycsIGV2ZW50VG9NZXNzYWdlKTsgdmlkZW8uYWRkRXZlbnRMaXN0
ZW5lcigncGF1c2UnLCBldmVudFRvTWVzc2FnZSk7Il07CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlk
QmVnaW5QbGF5aW5nID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcGVyZm9ybUFmdGVyUmVjZWl2aW5n
TWVzc2FnZTpAInBsYXlpbmciIGFjdGlvbjpeeyBkaWRCZWdpblBsYXlpbmcgPSB0cnVlOyB9XTsK
KyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCd2aWRlbycpLnBsYXkoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEJlZ2luUGxheWluZyk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlk
UGF1c2UgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3JtQWZ0ZXJSZWNlaXZpbmdNZXNzYWdl
OkAicGF1c2UiIGFjdGlvbjpeeyBkaWRQYXVzZSA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IF9z
dG9wQWxsTWVkaWFQbGF5YmFja107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRQ
YXVzZSk7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBTdXNwZW5kUmVzdW1lQWxsTWVkaWFQbGF5YmFj
aykKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMTAwLCAxMDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBhZGRUb1dpbmRvdzpZRVNdKTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjx2aWRlbyBzcmM9XCJ2
aWRlby13aXRoLWF1ZGlvLm1wNFwiIHdlYmtpdC1wbGF5c2lubGluZT48L3ZpZGVvPiJdOworCisg
ICAgW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZ1bmN0aW9uIGV2ZW50
VG9NZXNzYWdlKGV2ZW50KXt3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxl
ci5wb3N0TWVzc2FnZShldmVudC50eXBlKTt9IHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJ3ZpZGVvJyk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXlpbmcnLCBldmVudFRv
TWVzc2FnZSk7IHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgZXZlbnRUb01lc3NhZ2Up
OyJdOworCisgICAgX19ibG9jayBib29sIGRpZEJlZ2luUGxheWluZyA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01lc3NhZ2U6QCJwbGF5aW5nIiBhY3Rpb246Xnsg
ZGlkQmVnaW5QbGF5aW5nID0gdHJ1ZTsgfV07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcigndmlkZW8nKS5wbGF5KCkiIGNvbXBsZXRpb25I
YW5kbGVyOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRCZWdpblBsYXlp
bmcpOworCisgICAgX19ibG9jayBib29sIGRpZFBhdXNlID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
cGVyZm9ybUFmdGVyUmVjZWl2aW5nTWVzc2FnZTpAInBhdXNlIiBhY3Rpb246XnsgZGlkUGF1c2Ug
PSB0cnVlOyB9XTsKKyAgICBbd2ViVmlldyBfc3VzcGVuZEFsbE1lZGlhUGxheWJhY2tdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkUGF1c2UpOworCisgICAgX19ibG9jayBib29s
IGRpZFJlamVjdCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHBlcmZvcm1BZnRlclJlY2VpdmluZ01l
c3NhZ2U6QCJyZWplY3RlZCIgYWN0aW9uOl57IGRpZFJlamVjdCA9IHRydWU7IH1dOworICAgIFt3
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3ZpZGVv
JykucGxheSgpLmNhdGNoKCgpID0geyB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0
SGFuZGxlci5wb3N0TWVzc2FnZSgncmVqZWN0ZWQnKTsgfSkiIGNvbXBsZXRpb25IYW5kbGVyOm5p
bF07CisKKyAgICBkaWRCZWdpblBsYXlpbmcgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBwZXJmb3Jt
QWZ0ZXJSZWNlaXZpbmdNZXNzYWdlOkAicGxheWluZyIgYWN0aW9uOl57IGRpZEJlZ2luUGxheWlu
ZyA9IHRydWU7IH1dOworICAgIFt3ZWJWaWV3IF9yZXN1bWVBbGxNZWRpYVBsYXliYWNrXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEJlZ2luUGxheWluZyk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVk
aWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9pb3MvU2Nyb2xs
aW5nRG9lc05vdFBhdXNlTWVkaWEubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGMwZTA5MDQ0Y2UxMDg0NWU4ZGM0
NzdmYTRhYTRiOTljNTNjMmM5YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0TGVnYWN5L2lvcy9TY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYS5tbQpA
QCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW1wb3J0IDxXZWJLaXQvRE9NSFRNTE1lZGlhRWxlbWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dl
YkZyYW1lUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNl
IFNjcm9sbGluZ0RvZXNOb3RQYXVzZU1lZGlhRGVsZWdhdGUgOiBOU09iamVjdCA8VUlXZWJWaWV3
RGVsZWdhdGUsIERPTUV2ZW50TGlzdGVuZXI+IHsKK30KK0BlbmQKKworc3RhdGljIGJvb2wgZGlk
RmluaXNoTG9hZDsKK3N0YXRpYyBib29sIGdvdE1haW5GcmFtZTsKK3N0YXRpYyBXZWJGcmFtZSog
bWFpbkZyYW1lOworCitAaW1wbGVtZW50YXRpb24gU2Nyb2xsaW5nRG9lc05vdFBhdXNlTWVkaWFE
ZWxlZ2F0ZQorCitJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRp
b25zIikKKy0gKHZvaWQpd2ViVmlld0RpZEZpbmlzaExvYWQ6KFVJV2ViVmlldyAqKXdlYlZpZXcK
K0lHTk9SRV9XQVJOSU5HU19FTkQKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKwor
LSAodm9pZCl1aVdlYlZpZXc6KFVJV2ViVmlldyAqKXNlbmRlciBkaWRDb21taXRMb2FkRm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWUKK3sKKyAgICBtYWluRnJhbWUgPSBmcmFtZTsKKyAgICBnb3RN
YWluRnJhbWUgPSB0cnVlOworfQorCitzdGF0aWMgYm9vbCBkaWRSZWNlaXZlUGF1c2U7CitzdGF0
aWMgYm9vbCBkaWRSZWNlaXZlUGxheWluZzsKKworLSAodm9pZCloYW5kbGVFdmVudDooRE9NRXZl
bnQgKilldmVudAoreworICAgIGlmIChbZXZlbnQudHlwZSBpc0VxdWFsVG9TdHJpbmc6QCJwYXVz
ZSJdKQorICAgICAgICBkaWRSZWNlaXZlUGF1c2UgPSB0cnVlOworICAgIGVsc2UgaWYgKFtldmVu
dC50eXBlIGlzRXF1YWxUb1N0cmluZzpAInBsYXlpbmciXSkKKyAgICAgICAgZGlkUmVjZWl2ZVBs
YXlpbmcgPSB0cnVlOworfQorQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RF
U1QoV2ViS2l0TGVnYWN5LCBTY3JvbGxpbmdEb2VzTm90UGF1c2VNZWRpYSkKK3sKKyAgICBSZXRh
aW5QdHI8VUlXaW5kb3c+IHVpV2luZG93ID0gYWRvcHROUyhbW1VJV2luZG93IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgUmV0YWluUHRyPFVJ
V2ViVmlldz4gdWlXZWJWaWV3ID0gYWRvcHROUyhbW1VJV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt1aVdpbmRvdyBhZGRTdWJ2
aWV3OnVpV2ViVmlldy5nZXQoKV07CisKKyAgICB1aVdlYlZpZXcuZ2V0KCkubWVkaWFQbGF5YmFj
a1JlcXVpcmVzVXNlckFjdGlvbiA9IE5POworICAgIHVpV2ViVmlldy5nZXQoKS5hbGxvd3NJbmxp
bmVNZWRpYVBsYXliYWNrID0gWUVTOworCisgICAgUmV0YWluUHRyPFNjcm9sbGluZ0RvZXNOb3RQ
YXVzZU1lZGlhRGVsZWdhdGU+IHRlc3RDb250cm9sbGVyID0gYWRvcHROUyhbU2Nyb2xsaW5nRG9l
c05vdFBhdXNlTWVkaWFEZWxlZ2F0ZSBuZXddKTsKKyAgICB1aVdlYlZpZXcuZ2V0KCkuZGVsZWdh
dGUgPSB0ZXN0Q29udHJvbGxlci5nZXQoKTsKKworICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsK
KyAgICBnb3RNYWluRnJhbWUgPSBmYWxzZTsKKyAgICBtYWluRnJhbWUgPSBuaWw7CisKKyAgICBb
dWlXZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TQnVu
ZGxlLm1haW5CdW5kbGUgVVJMRm9yUmVzb3VyY2U6QCJ2aWRlby13aXRoLWF1ZGlvIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1d
OworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKyAgICBVdGlsOjpydW4oJmdvdE1h
aW5GcmFtZSk7CisKKyAgICBET01IVE1MTWVkaWFFbGVtZW50KiB2aWRlbyA9IChET01IVE1MTWVk
aWFFbGVtZW50KilbbWFpbkZyYW1lLkRPTURvY3VtZW50IHF1ZXJ5U2VsZWN0b3I6QCJ2aWRlbyJd
OworICAgIEFTU0VSVF9UUlVFKFt2aWRlbyBpc0tpbmRPZkNsYXNzOltET01IVE1MTWVkaWFFbGVt
ZW50IGNsYXNzXV0pOworCisgICAgW3ZpZGVvIGFkZEV2ZW50TGlzdGVuZXI6QCJwbGF5aW5nIiBs
aXN0ZW5lcjp0ZXN0Q29udHJvbGxlci5nZXQoKSB1c2VDYXB0dXJlOk5PXTsKKyAgICBbdmlkZW8g
YWRkRXZlbnRMaXN0ZW5lcjpAInBhdXNlIiBsaXN0ZW5lcjp0ZXN0Q29udHJvbGxlci5nZXQoKSB1
c2VDYXB0dXJlOk5PXTsKKworICAgIFttYWluRnJhbWUgc2V0VGltZW91dHNQYXVzZWQ6WUVTXTsK
KworICAgIGRpZFJlY2VpdmVQbGF5aW5nID0gZmFsc2U7CisgICAgW3ZpZGVvIHBsYXldOworICAg
IFV0aWw6OnJ1bigmZGlkUmVjZWl2ZVBsYXlpbmcpOworCisgICAgW21haW5GcmFtZSBzZXRUaW1l
b3V0c1BhdXNlZDpOT107CisKKyAgICBkaWRSZWNlaXZlUGF1c2UgPSBmYWxzZTsKKyAgICBbdmlk
ZW8gcGxheV07CisgICAgVXRpbDo6cnVuKCZkaWRSZWNlaXZlUGF1c2UpOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>