<?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>182752</bug_id>
          
          <creation_ts>2018-02-13 16:24:06 -0800</creation_ts>
          <short_desc>AX: Keyboard focus not following VoiceOver cursor into web content or within web content.</short_desc>
          <delta_ts>2018-02-28 17:18:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=183232</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="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jlewis3</cc>
    
    <cc>mitz</cc>
    
    <cc>n_wang</cc>
    
    <cc>rniwa</cc>
    
    <cc>samuel_white</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1398842</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-02-13 16:24:06 -0800</bug_when>
    <thetext>VoiceOver and keyboard focus are no longer tracking within web views if the keyboard focus was outside the web view before interacting with the web view using VoiceOver.

1. Type and address into the address bar and press return.
2. Stop interacting with the address bar in the toolbar, interact with the page.
3. Move to a link or form element that should get VoiceOver keyboard focus when VoiceOver focuses that element.
4. Use VO-F3 and VO-F4 (FN-VO-3 and 4 on DFR) to get spoken output for the VO cursor and keyboard cursor focus.

Actual Results: They are not in sync, 

&lt;rdar://problem/37327881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398843</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-13 16:24:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/37518233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398845</commentid>
    <comment_count>2</comment_count>
      <attachid>333742</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-02-13 16:26:56 -0800</bug_when>
    <thetext>Created attachment 333742
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400044</commentid>
    <comment_count>3</comment_count>
      <attachid>333742</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-16 14:47:47 -0800</bug_when>
    <thetext>Comment on attachment 333742
patch

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

&gt; Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:353
&gt; +    m_pageClient.setShouldSuppressFirstResponderChanges(false);

This doesn&apos;t seem right. The whole point of this flag is to avoid becoming the first responder programmatically.
See &lt;rdar://problem/31658967&gt; and &lt;rdar://problem/34669220&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400047</commentid>
    <comment_count>4</comment_count>
      <attachid>333742</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-02-16 14:53:14 -0800</bug_when>
    <thetext>Comment on attachment 333742
patch

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

&gt; Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:354
&gt;      m_pageClient.makeFirstResponder();

this is exactly what we need. If someone from WebContent is specifically requesting to become firstResponder it doesn&apos;t make sense that that call would never work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400049</commentid>
    <comment_count>5</comment_count>
      <attachid>333742</attachid>
    <who name="">mitz</who>
    <bug_when>2018-02-16 14:58:25 -0800</bug_when>
    <thetext>Comment on attachment 333742
patch

So, does this patch reintroduce &lt;rdar://problem/30085686&gt; or not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400051</commentid>
    <comment_count>6</comment_count>
    <who name="">mitz</who>
    <bug_when>2018-02-16 15:00:14 -0800</bug_when>
    <thetext>(In reply to mitz from comment #5)
&gt; Comment on attachment 333742 [details]
&gt; patch
&gt; 
&gt; So, does this patch reintroduce &lt;rdar://problem/30085686&gt; or not?

(Apologies to people who aren’t from Apple who’re following this bug. &lt;rdar://problem/30085686&gt; is an Apple bug that was resolved by adopting -setShouldSuppressFirstResponderChanges: in an app).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400059</commentid>
    <comment_count>7</comment_count>
      <attachid>333742</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-02-16 15:15:31 -0800</bug_when>
    <thetext>Comment on attachment 333742
patch

r- because this patch will certainly re-introduce that bug. Perhaps you can introduce a different mechanism for accessibility to cause first-responder changes instead of re-using the same one that web content uses (which needs this restriction to avoid the aforementioned bug).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400069</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-02-16 15:25:52 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #7)
&gt; Comment on attachment 333742 [details]
&gt; patch
&gt; 
&gt; r- because this patch will certainly re-introduce that bug. Perhaps you can
&gt; introduce a different mechanism for accessibility to cause first-responder
&gt; changes instead of re-using the same one that web content uses (which needs
&gt; this restriction to avoid the aforementioned bug).

What if I make a KW2 call to avoid suppressing that can only be triggered from VoiceOver calling into it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400079</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-02-16 15:36:12 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #8)
&gt; (In reply to Tim Horton from comment #7)
&gt; &gt; Comment on attachment 333742 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; r- because this patch will certainly re-introduce that bug. Perhaps you can
&gt; &gt; introduce a different mechanism for accessibility to cause first-responder
&gt; &gt; changes instead of re-using the same one that web content uses (which needs
&gt; &gt; this restriction to avoid the aforementioned bug).
&gt; 
&gt; What if I make a KW2 call to avoid suppressing that can only be triggered
&gt; from VoiceOver calling into it

Also a reasonable approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400557</commentid>
    <comment_count>10</comment_count>
      <attachid>334201</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2018-02-19 16:43:45 -0800</bug_when>
    <thetext>Created attachment 334201
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400844</commentid>
    <comment_count>11</comment_count>
      <attachid>334201</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-20 11:07:40 -0800</bug_when>
    <thetext>Comment on attachment 334201
patch

Can we add a test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400980</commentid>
    <comment_count>12</comment_count>
      <attachid>334327</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-02-20 17:50:45 -0800</bug_when>
    <thetext>Created attachment 334327
patch

Added test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1400981</commentid>
    <comment_count>13</comment_count>
      <attachid>334328</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-02-20 17:53:17 -0800</bug_when>
    <thetext>Created attachment 334328
patch

updated ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401004</commentid>
    <comment_count>14</comment_count>
      <attachid>334328</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-20 19:30:22 -0800</bug_when>
    <thetext>Comment on attachment 334328
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401012</commentid>
    <comment_count>15</comment_count>
      <attachid>334328</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-20 20:17:25 -0800</bug_when>
    <thetext>Comment on attachment 334328
patch

Clearing flags on attachment: 334328

Committed r228857: &lt;https://trac.webkit.org/changeset/228857&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401013</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-20 20:17:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401025</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-02-20 21:49:18 -0800</bug_when>
    <thetext>Build fix for 32-bit: https://trac.webkit.org/changeset/228859/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1401026</commentid>
    <comment_count>18</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2018-02-20 22:35:12 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #17)
&gt; Build fix for 32-bit: https://trac.webkit.org/changeset/228859/webkit

Thanks for the fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402774</commentid>
    <comment_count>19</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-02-28 16:41:58 -0800</bug_when>
    <thetext>The test accessibility/mac/accessibility-make-first-responder.html that was added with the initial commit is very flaky:
https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=accessibility%2Fmac%2Faccessibility-make-first-responder.html

https://build.webkit.org/results/Apple%20High%20Sierra%20Release%20WK2%20(Tests)/r229106%20(3180)/results.html

Diff:
--- /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/accessibility/mac/accessibility-make-first-responder-expected.txt
+++ /Volumes/Data/slave/highsierra-release-tests-wk2/build/layout-test-results/accessibility/mac/accessibility-make-first-responder-actual.txt
@@ -6,7 +6,7 @@
 DOM focus
 Window is still the first responder: true
 Accessibility focus
-Window is still the first responder: false
+Window is still the first responder: true
 PASS successfullyParsed is true
 
 TEST COMPLETE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1402792</commentid>
    <comment_count>20</comment_count>
    <who name="Matt Lewis">jlewis3</who>
    <bug_when>2018-02-28 17:18:27 -0800</bug_when>
    <thetext>Bug filed for fix: https://bugs.webkit.org/show_bug.cgi?id=183232</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333742</attachid>
            <date>2018-02-13 16:26:56 -0800</date>
            <delta_ts>2018-02-19 16:43:45 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1314</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjg0NDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE4LTAyLTEzICBDaHJpcyBGbGVp
emFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEtleWJvYXJkIGZvY3Vz
IG5vdCBmb2xsb3dpbmcgVm9pY2VPdmVyIGN1cnNvciBpbnRvIHdlYiBjb250ZW50IG9yIHdpdGhp
biB3ZWIgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4Mjc1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1MTgyMzM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSWYgdGhlIGNsaWVudCBp
cyB0cnlpbmcgdG8gYmVjb21lUmVzcG9uZGVyLCB0aGVuIHdlIGNhbid0IHN1cHByZXNzIHRob3Nl
IGNoYW5nZXMuIFdlIG5lZWQKKyAgICAgICAgdG8gZXhwbGljaXRseSBhbGxvdyBpdCBpbiB0aGF0
IGNhc2UuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjptYWtlRmlyc3RSZXNwb25kZXIpOgorCiAyMDE4
LTAyLTEzICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQg
c3VwcG9ydCBmb3IgY29uZmlndXJpbmcgV2Vic2l0ZURhdGFzdG9yZSBzZXJ2aWNlIHdvcmtlciBh
bmQgY2FjaGUgc3RvcmFnZSBwYXRoCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHJldmlzaW9uIDIyODQxMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM1
MCw2ICszNTAsNyBAQAogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VGaXJzdFJlc3BvbmRl
cigpCiB7CisgICAgbV9wYWdlQ2xpZW50LnNldFNob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJD
aGFuZ2VzKGZhbHNlKTsKICAgICBtX3BhZ2VDbGllbnQubWFrZUZpcnN0UmVzcG9uZGVyKCk7CiB9
CiAK
</data>
<flag name="review"
          id="352606"
          type_id="1"
          status="-"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334201</attachid>
            <date>2018-02-19 16:43:45 -0800</date>
            <delta_ts>2018-02-20 17:50:45 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>10606</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTE5ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEtleWJvYXJkIGZv
Y3VzIG5vdCBmb2xsb3dpbmcgVm9pY2VPdmVyIGN1cnNvciBpbnRvIHdlYiBjb250ZW50IG9yIHdp
dGhpbiB3ZWIgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Mjc1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1MTgyMzM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbCB0aGUgYXNz
aXN0aXZlIHRlY2hub2xvZ3kgc3BlY2lmaWMgbWV0aG9kIGZvciBiZWNvbWluZyBmaXJzdCByZXNw
b25kZXIuCisKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vz
c2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKwogMjAxOC0wMi0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4K
IAogICAgICAgICBbRU1FXSBBZGQgbWVjaGFuaXNtIGZvciBNZWRpYUtleVNlc3Npb24gdG8gcmVh
Y3QgdG8gSERDUCBjaGFuZ2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ck1hYy5tbQkocmV2aXNpb24gMjI4NzA5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM2NDEsMTYgKzM2NDEsMTggQEAKICAgICAgICAgYm9vbCBmb2N1cyA9IFtudW1iZXIgYm9v
bFZhbHVlXTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIGZvY3VzIGlzIGp1c3Qgc2V0IHdpdGhv
dXQgbWFraW5nIHRoZSB2aWV3IHRoZSBmaXJzdCByZXNwb25kZXIsIHRoZW4ga2V5Ym9hcmQgZm9j
dXMgd29uJ3QgbW92ZSB0byB0aGUgcmlnaHQgcGxhY2UuCi0gICAgICAgIGlmIChmb2N1cyAmJiBt
X29iamVjdC0+aXNXZWJBcmVhKCkgJiYgIW1fb2JqZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5z
ZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkgeworICAgICAgICBpZiAoZm9jdXMgJiYg
IW1fb2JqZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRB
Y3RpdmUoKSkgewogICAgICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+
ZG9jdW1lbnRGcmFtZVZpZXcoKTsKICAgICAgICAgICAgIFBhZ2UqIHBhZ2UgPSBtX29iamVjdC0+
cGFnZSgpOwogICAgICAgICAgICAgaWYgKHBhZ2UgJiYgZnJhbWVWaWV3KSB7CiAgICAgICAgICAg
ICAgICAgQ2hyb21lQ2xpZW50JiBjaHJvbWVDbGllbnQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KTsKICAgICAgICAgICAgICAgICBjaHJvbWVDbGllbnQuZm9jdXMoKTsKKyAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAvLyBMZWdhY3kgV2ViS2l0MSBjYXNlLgogICAgICAgICAgICAg
ICAgIGlmIChmcmFtZVZpZXctPnBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAg
IGNocm9tZUNsaWVudC5tYWtlRmlyc3RSZXNwb25kZXIoZnJhbWVWaWV3LT5wbGF0Zm9ybVdpZGdl
dCgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNocm9tZUNs
aWVudC5tYWtlRmlyc3RSZXNwb25kZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hyb21lQ2xp
ZW50LmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAkocmV2aXNpb24gMjI4NzA5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2Miw3IEBACiAgICAgdmlydHVhbCB2b2lkIG1h
a2VGaXJzdFJlc3BvbmRlcihOU1Jlc3BvbmRlciAqKSB7IH0KICAgICAvLyBGb2N1c2VzIG9uIHRo
ZSBjb250YWluaW5nIHZpZXcgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGFnZS4KICAgICB2aXJ0dWFs
IHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGFzc2lzdGl2
ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSB7IH0KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oSU9TKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODcxOCkKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTgtMDItMTkgIENo
cmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogS2V5Ym9h
cmQgZm9jdXMgbm90IGZvbGxvd2luZyBWb2ljZU92ZXIgY3Vyc29yIGludG8gd2ViIGNvbnRlbnQg
b3Igd2l0aGluIHdlYiBjb250ZW50LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyNzUyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNzUxODIzMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGFz
c2lzdGl2ZSB0ZWNobm9sb2dpZXMgcmVxdWVzdCB0aGF0IGZvY3VzIGJlIGJyb3VnaHQgdG8gYW4g
ZWxlbWVudCwgd2UgbmVlZCB0byBwcm92aWRlCisgICAgICAgIGEgcGF0aCB0aGF0IGlzIGFibGUg
dG8gYnJpbmcgYmFjayB0byB0aGUgbWFpbiBmcmFtZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Q
YWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjphc3Np
c3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojph
c3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbE1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFzc2lz
dGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9t
YWMvV2ViUGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFz
c2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ2hyb21lQ2xpZW50Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgor
CiAyMDE4LTAyLTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gV2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJl
dmlzaW9uIDIyODcwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTc3LDYgKzE3Nyw3IEBACiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
U2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDb250
ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWFr
ZUZpcnN0UmVzcG9uZGVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nUm9vdExheWVyKExheWVyT3JWaWV3ICopID0gMDsKICAgICB2aXJ0dWFs
IExheWVyT3JWaWV3ICphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpID0g
MDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
Mjg3MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODA4LDYgKzgwOCw3IEBACiAgICAgU3RyaW5nIHN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBkYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlKTsKICAgICB2
b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpOworICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpOwogCiAgICAgQ29sb3JTcGFjZURhdGEgY29sb3JTcGFjZSgpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjg3MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMs
NyBAQAogICAgIFN0b3BTcGVha2luZygpCiAKICAgICBNYWtlRmlyc3RSZXNwb25kZXIoKQorICAg
IEFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKQogCiAgICAgIyBTcG90bGln
aHQKICAgICBTZWFyY2hXaXRoU3BvdGxpZ2h0KFN0cmluZyBzdHJpbmcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAkocmV2aXNpb24g
MjI4NzA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICAgICB2b2lkIHJlc2V0U2VjdXJl
SW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXRE
aXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9u
ZGVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVz
cG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0Rldmlj
ZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6
OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuVG9Sb290Vmlldyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQkocmV2aXNpb24gMjI4NzA5KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zODMsNiArMzgzLDExIEBACiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRl
cigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBQYWdlQ2xpZW50SW1wbDo6
bWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCShyZXZpc2lv
biAyMjg3MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OTgsNiArNzk4LDExIEBACiAgICAgbV9wYWdlQ2xpZW50
LmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChkYXRhKTsKIH0gICAgCiAKK3Zv
aWQgV2ViUGFnZVByb3h5Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorICAgIAogdm9pZCBXZWJQYWdlUHJveHk6Om1h
a2VGaXJzdFJlc3BvbmRlcigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShyZXZpc2lv
biAyMjg3MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBACiAgICAgdm9pZCBzZXRQbHVn
aW5Db21wbGV4VGV4dElucHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElk
ZW50aWZpZXIsIFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOworICAgIHZvaWQgYXNzaXN0aXZlVGVj
aG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxk
U3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXMoYm9vbCBzaG91bGRTdXBwcmVzcykgb3ZlcnJp
ZGUgeyBtX3Nob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzID0gc2hvdWxkU3VwcHJl
c3M7IH0KIAogICAgIHZvaWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgV2ViQ29y
ZTo6RGljdGlvbmFyeVBvcHVwSW5mbyYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkocmV2aXNpb24gMjI4NzA5
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDExIEBACiAgICAgcmV0dXJuIG1faW1wbC0+aXNG
b2N1c2VkKCk7CiB9CiAKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmFzc2lzdGl2ZVRlY2hub2xvZ3lN
YWtlRmlyc3RSZXNwb25kZXIoKQoreworICAgIFtbbV92aWV3IHdpbmRvd10gbWFrZUZpcnN0UmVz
cG9uZGVyOm1fdmlld107Cit9CisgICAgCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjptYWtlRmlyc3RS
ZXNwb25kZXIoKQogewogICAgIGlmIChtX3Nob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFu
Z2VzKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCShyZXZpc2lvbiAyMjg3MDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUGFnZVByb3h5TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNiArMzUzLDExIEBACiAg
ICAgbV9wYWdlQ2xpZW50Lm1ha2VGaXJzdFJlc3BvbmRlcigpOwogfQogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpCit7CisgICAgbV9w
YWdlQ2xpZW50LmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsKK30KKwog
Q29sb3JTcGFjZURhdGEgV2ViUGFnZVByb3h5Ojpjb2xvclNwYWNlKCkKIHsKICAgICByZXR1cm4g
bV9wYWdlQ2xpZW50LmNvbG9yU3BhY2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShy
ZXZpc2lvbiAyMjg3MDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIxMiwxMSBA
QAogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1ha2VGaXJzdFJlc3Bv
bmRlcigpKTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmFzc2lzdGl2ZVRlY2hub2xvZ3lN
YWtlRmlyc3RSZXNwb25kZXIoKQoreworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSk7Cit9CisKICNl
bmRpZiAgICAKIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmNhblRha2VGb2N1cyhGb2N1c0RpcmVj
dGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDIyODcwOSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSw3IEBACiAgICAgdm9pZCBlbGVtZW50RGlkQmx1cihX
ZWJDb3JlOjpFbGVtZW50JikgZmluYWw7CiAKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigp
IGZpbmFsOworICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigp
IGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIGVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkgZmlu
YWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334327</attachid>
            <date>2018-02-20 17:50:45 -0800</date>
            <delta_ts>2018-02-20 17:53:17 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17318</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAyLTIwICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEtleWJvYXJkIGZv
Y3VzIG5vdCBmb2xsb3dpbmcgVm9pY2VPdmVyIGN1cnNvciBpbnRvIHdlYiBjb250ZW50IG9yIHdp
dGhpbiB3ZWIgY29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4Mjc1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1MTgyMzM+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbCB0aGUgYXNz
aXN0aXZlIHRlY2hub2xvZ3kgc3BlY2lmaWMgbWV0aG9kIGZvciBiZWNvbWluZyBmaXJzdCByZXNw
b25kZXIuCisKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vz
c2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICogcGFnZS9DaHJvbWVD
bGllbnQuaDoKKwogMjAxOC0wMi0yMCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFYOiBBT006IERpc3BhdGNoIGFjY2Vzc2libGVjbGljayBldmVudApJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJldmlzaW9uIDIyODgzMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQ1LDE2ICszNjQ1LDE4IEBAIC0gKHZv
aWQpX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUKICAgICAgICAgYm9vbCBmb2N1cyA9
IFtudW1iZXIgYm9vbFZhbHVlXTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIGZvY3VzIGlzIGp1
c3Qgc2V0IHdpdGhvdXQgbWFraW5nIHRoZSB2aWV3IHRoZSBmaXJzdCByZXNwb25kZXIsIHRoZW4g
a2V5Ym9hcmQgZm9jdXMgd29uJ3QgbW92ZSB0byB0aGUgcmlnaHQgcGxhY2UuCi0gICAgICAgIGlm
IChmb2N1cyAmJiBtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgIW1fb2JqZWN0LT5kb2N1bWVudCgp
LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkgeworICAgICAgICBp
ZiAoZm9jdXMgJiYgIW1fb2JqZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5p
c0ZvY3VzZWRBbmRBY3RpdmUoKSkgewogICAgICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBtX29iamVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKICAgICAgICAgICAgIFBhZ2UqIHBhZ2Ug
PSBtX29iamVjdC0+cGFnZSgpOwogICAgICAgICAgICAgaWYgKHBhZ2UgJiYgZnJhbWVWaWV3KSB7
CiAgICAgICAgICAgICAgICAgQ2hyb21lQ2xpZW50JiBjaHJvbWVDbGllbnQgPSBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKTsKICAgICAgICAgICAgICAgICBjaHJvbWVDbGllbnQuZm9jdXMoKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBMZWdhY3kgV2ViS2l0MSBjYXNlLgog
ICAgICAgICAgICAgICAgIGlmIChmcmFtZVZpZXctPnBsYXRmb3JtV2lkZ2V0KCkpCiAgICAgICAg
ICAgICAgICAgICAgIGNocm9tZUNsaWVudC5tYWtlRmlyc3RSZXNwb25kZXIoZnJhbWVWaWV3LT5w
bGF0Zm9ybVdpZGdldCgpKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIGNocm9tZUNsaWVudC5tYWtlRmlyc3RSZXNwb25kZXIoKTsKKyAgICAgICAgICAgICAgICAg
ICAgY2hyb21lQ2xpZW50LmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjI4ODMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYgKzM2Miw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKE5TUmVzcG9uZGVyICopIHsgfQog
ICAgIC8vIEZvY3VzZXMgb24gdGhlIGNvbnRhaW5pbmcgdmlldyBhc3NvY2lhdGVkIHdpdGggdGhp
cyBwYWdlLgogICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpIHsgfQog
I2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCShyZXZpc2lvbiAyMjg4MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw2ICsxNzcsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKExheWVyT3JWaWV3
ICopID0gMDsKICAgICB2aXJ0dWFsIExheWVyT3JWaWV3ICphY2NlbGVyYXRlZENvbXBvc2l0aW5n
Um9vdExheWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUmVmUHRyPFZpZXdTbmFwc2hvdD4g
dGFrZVZpZXdTbmFwc2hvdCgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCShyZXZpc2lvbiAyMjg4MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtODA4LDYgKzgwOCw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgc3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpOwogICAgIFJlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGRhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUpOwogICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCk7Cisg
ICAgdm9pZCBhc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCk7CiAKICAgICBD
b2xvclNwYWNlRGF0YSBjb2xvclNwYWNlKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyODgz
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgU3RvcFNwZWFraW5nKCkKIAogICAgIE1ha2VGaXJzdFJlc3BvbmRlcigpCisgICAg
QXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpCiAKICAgICAjIFNwb3RsaWdo
dAogICAgIFNlYXJjaFdpdGhTcG90bGlnaHQoU3RyaW5nIHN0cmluZykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCShyZXZpc2lvbiAy
Mjg4MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
aAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVz
ZXRTZWN1cmVJbnB1dFN0YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBub3RpZnlJbnB1dENvbnRl
eHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYWtlRmly
c3RSZXNwb25kZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtl
Rmlyc3RSZXNwb25kZXIoKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVy
dFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiAgICAg
V2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1Jvb3RWaWV3
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCShyZXZpc2lvbiAyMjg4
MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMsMTEgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6
bm90aWZ5SW5wdXRDb250ZXh0QQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgUGFnZUNsaWVudEltcGw6Om1ha2VGaXJz
dFJlc3BvbmRlcigpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkocmV2aXNpb24gMjI4ODMw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQkod29y
a2luZyBjb3B5KQpAQCAtNzk4LDYgKzc5OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0
ZXJXZWJQcm9jZXNzQWNjCiAgICAgbV9wYWdlQ2xpZW50LmFjY2Vzc2liaWxpdHlXZWJQcm9jZXNz
VG9rZW5SZWNlaXZlZChkYXRhKTsKIH0gICAgCiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojphc3Npc3Rp
dmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorICAgIAogdm9pZCBXZWJQYWdlUHJveHk6Om1ha2VGaXJzdFJlc3BvbmRlcigpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbE1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5oCShyZXZpc2lvbiAyMjg4MzApCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU0LDYgKzE1NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQbHVnaW5Db21wbGV4VGV4dElu
cHV0U3RhdGUodWludDY0X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIFBsdWdp
bkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG1ha2VGaXJzdFJl
c3BvbmRlcigpIG92ZXJyaWRlOworICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJz
dFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJl
c3BvbmRlckNoYW5nZXMoYm9vbCBzaG91bGRTdXBwcmVzcykgb3ZlcnJpZGUgeyBtX3Nob3VsZFN1
cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzID0gc2hvdWxkU3VwcHJlc3M7IH0KIAogICAgIHZv
aWQgZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgV2ViQ29yZTo6RGljdGlvbmFyeVBv
cHVwSW5mbyYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Bh
Z2VDbGllbnRJbXBsTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9QYWdlQ2xpZW50SW1wbE1hYy5tbQkocmV2aXNpb24gMjI4ODMwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzQsNiArMTc0LDExIEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQoKQog
ICAgIHJldHVybiBtX2ltcGwtPmlzRm9jdXNlZCgpOwogfQogCit2b2lkIFBhZ2VDbGllbnRJbXBs
Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkKK3sKKyAgICBbW21fdmll
dyB3aW5kb3ddIG1ha2VGaXJzdFJlc3BvbmRlcjptX3ZpZXddOworfQorICAgIAogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6bWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsKICAgICBpZiAobV9zaG91bGRTdXBw
cmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlcykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJQYWdlUHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkocmV2aXNpb24gMjI4ODMwKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzUzLDYgKzM1MywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bWFrZUZpcnN0UmVzcG9uZGVy
KCkKICAgICBtX3BhZ2VDbGllbnQubWFrZUZpcnN0UmVzcG9uZGVyKCk7CiB9CiAKK3ZvaWQgV2Vi
UGFnZVByb3h5Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkKK3sKKyAg
ICBtX3BhZ2VDbGllbnQuYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpOwor
fQorCiBDb2xvclNwYWNlRGF0YSBXZWJQYWdlUHJveHk6OmNvbG9yU3BhY2UoKQogewogICAgIHJl
dHVybiBtX3BhZ2VDbGllbnQuY29sb3JTcGFjZSgpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHJldmlzaW9uIDIyODgzMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEy
LDExIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjptYWtlRmlyc3RSZXNwb25kZXIKICAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpNYWtlRmlyc3RSZXNwb25kZXIoKSk7CiB9
CiAKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojphc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVz
cG9uZGVyKCkKK3sKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpBc3Np
c3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkpOworfQorCiAjZW5kaWYgICAgCiAK
IGJvb2wgV2ViQ2hyb21lQ2xpZW50OjpjYW5UYWtlRm9jdXMoRm9jdXNEaXJlY3Rpb24pCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyMjg4MzApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3MSw2ICsyNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudERpZEJsdXIoV2Vi
Q29yZTo6RWxlbWVudCYpIGZpbmFsOwogCiAgICAgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSBm
aW5hbDsKKyAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSBm
aW5hbDsKICNlbmRpZgogCiAgICAgdm9pZCBlbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpIGZpbmFs
OwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9s
bGVyTWFjLm1tCShyZXZpc2lvbiAyMjg4MzApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDE5
IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF0Zm9ybVBsYXlCYWMKIHsKIH0KIAordm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6OmZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb25Gb3JXZWJWaWV3
KGJvb2wpCit7Cit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjptYWtlV2luZG93Q29udGVu
dFZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisKK2Jvb2wgVUlTY3JpcHRDb250cm9sbGVyOjpp
c1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpJbmRleDogVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjg4MzApCisrKyBUb29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00ODEsNiArNDgxLDE5IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpwbGF0Zm9ybVBs
YXlCYWMKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmZpcnN0UmVzcG9uZGVyU3Vw
cHJlc3Npb25Gb3JXZWJWaWV3KGJvb2wpCit7Cit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVy
OjptYWtlV2luZG93Q29udGVudFZpZXdGaXJzdFJlc3BvbmRlcigpCit7Cit9CisKK2Jvb2wgVUlT
Y3JpcHRDb250cm9sbGVyOjppc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKSBjb25z
dAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogI2VuZGlmCiAKIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjp1aVNjcmlwdENvbXBsZXRlKEpTU3RyaW5nUmVmIHJlc3VsdCkKSW5kZXg6IFRvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5oCShyZXZpc2lvbiAyMjg4MzApCisrKyBUb29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMTc0LDYgKzE3NCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFNhZmVBcmVhSW5zZXRz
KGRvdWJsZSB0b3AsIGRvdWJsZSByaWdodCwgZG91YmxlIGJvdHRvbSwgZG91YmxlIGxlZnQpOwog
CisgICAgdm9pZCBmaXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldyhib29sKTsKKyAg
ICB2b2lkIG1ha2VXaW5kb3dDb250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKCk7CisgICAgYm9vbCBp
c1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBVSVNjcmlwdENvbnRyb2xsZXIoVUlTY3JpcHRDb250ZXh0Jik7CiAgICAgCkluZGV4OiBUb29s
cy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRy
b2xsZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwJKHJldmlzaW9uIDIyODgzMCkK
KysrIFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2Ny
aXB0Q29udHJvbGxlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0OCw0ICsyNDgsOCBAQCBpbnRl
cmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShE
T01TdHJpbmcgcHJlZmVyZW5jZSwgRE9NU3RyaW5nIHZhbHVlKTsKIAogICAgIHZvaWQgc2V0U2Fm
ZUFyZWFJbnNldHMoZG91YmxlIHRvcCwgZG91YmxlIHJpZ2h0LCBkb3VibGUgYm90dG9tLCBkb3Vi
bGUgbGVmdCk7CisKKyAgICB2b2lkIGZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb25Gb3JXZWJWaWV3
KGJvb2xlYW4gc2hvdWxkU3VwcHJlc3MpOworICAgIHZvaWQgbWFrZVdpbmRvd0NvbnRlbnRWaWV3
Rmlyc3RSZXNwb25kZXIoKTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBpc1dpbmRv
d0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXI7CiB9OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMjI4
ODMwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksNCArMjM5LDIyIEBAIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjpwbGF0Zm9ybVBsYXlCYWMKICAgICBwbGF5QmFja0V2ZW50cyhtX2NvbnRleHQsIChO
U1N0cmluZyAqKXN0cmVhbS5nZXQoKSwgY2FsbGJhY2spOwogfQogCit2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6Zmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvbkZvcldlYlZpZXcoYm9vbCBzaG91bGRT
dXBwcmVzcykKK3sKKyAgICBhdXRvKiB3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFt3ZWJWaWV3IF9zZXRTaG91
bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlczpzaG91bGRTdXBwcmVzc107Cit9CisKK3Zv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjptYWtlV2luZG93Q29udGVudFZpZXdGaXJzdFJlc3BvbmRl
cigpCit7CisgICAgTlNXaW5kb3cgKndpbmRvdyA9IFtUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkgd2luZG93XTsKKyAgICBbd2luZG93IG1h
a2VGaXJzdFJlc3BvbmRlcjpbd2luZG93IGNvbnRlbnRWaWV3XV07Cit9CisKK2Jvb2wgVUlTY3Jp
cHRDb250cm9sbGVyOjppc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKSBjb25zdAor
eworICAgIE5TV2luZG93ICp3aW5kb3cgPSBbVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1h
aW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpIHdpbmRvd107CisgICAgcmV0dXJuIFt3aW5kb3cg
Zmlyc3RSZXNwb25kZXJdID09IFt3aW5kb3cgY29udGVudFZpZXddOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjY2Vzc2liaWxp
dHktbWFrZS1maXJzdC1yZXNwb25kZXItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25k
ZXItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKK1Rlc3QgdGhhdCBhc3Npc3RpdmVUZWNobm9s
b2d5TWFrZUZpcnN0UmVzcG9uZGVyIHdvcmtzIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK0RPTSBmb2N1cworV2luZG93IGlzIHN0aWxsIHRoZSBmaXJzdCByZXNw
b25kZXI6IHRydWUKK0FjY2Vzc2liaWxpdHkgZm9jdXMKK1dpbmRvdyBpcyBzdGlsbCB0aGUgZmly
c3QgcmVzcG9uZGVyOiBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjY2Vz
c2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVy
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWNj
ZXNzaWJpbGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
ICAgIGRlc2NyaXB0aW9uKCJUZXN0IHRoYXQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJl
c3BvbmRlciB3b3JrcyBjb3JyZWN0bHkuIik7CisgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworICAgICAgICAKKyAgICBmdW5jdGlvbiBtYWtlV2luZG93Rmlyc3RSZXNwb25kZXJVSVNj
cmlwdCgpIHsKKyAgICAgICAgcmV0dXJuIGAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB1aUNv
bnRyb2xsZXIubWFrZVdpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKTsKKyAgICAgICAg
fSkoKTtgOworICAgIH0KKworICAgIGZ1bmN0aW9uIGlzV2luZG93Rmlyc3RSZXNwb25kZXJTY3Jp
cHQoKSB7CisgICAgICAgIHJldHVybiBgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJu
IHVpQ29udHJvbGxlci5pc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXI7CisgICAgICAg
IH0pKCk7YDsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gc2V0Zmlyc3RSZXNwb25kZXJTdXBw
cmVzc2lvblVJU2NyaXB0KHgpIHsKKyAgICAgICAgcmV0dXJuIGAoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICByZXR1cm4gdWlDb250cm9sbGVyLmZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb25Gb3JX
ZWJWaWV3KCR7eH0pOworICAgICAgICB9KSgpO2A7CisgICAgfQorCisgICAgZnVuY3Rpb24gZG9U
ZXN0KCkgeworICAgICAgICAvLyAxLiBNYWtlIHdpbmRvdyBmaXJzdCByZXNwb25kZXIgYW5kIHN1
cHByZXNzIHRoZSBmaXJzdCByZXNwb25kZXIgY2hhbmdlIGZvciB3ZWIgY29udGVudAorICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQobWFrZVdpbmRvd0ZpcnN0UmVzcG9uZGVyVUlTY3JpcHQoKSwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChzZXRmaXJzdFJlc3BvbmRlclN1
cHByZXNzaW9uVUlTY3JpcHQodHJ1ZSksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0U3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
dGVzdFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2UoKSB7CisgICAgICAgIHZhciBpbnB1dCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgICAgICBkZWJ1ZygiRE9NIGZv
Y3VzIik7CisgICAgICAgIGlucHV0LmZvY3VzKCk7CisgICAgICAgIHRlc3RSdW5uZXIucnVuVUlT
Y3JpcHQoaXNXaW5kb3dGaXJzdFJlc3BvbmRlclNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsK
KyAgICAgICAgICAgIGRlYnVnKCJXaW5kb3cgaXMgc3RpbGwgdGhlIGZpcnN0IHJlc3BvbmRlcjog
IiArIHJlc3VsdCk7CisgICAgICAgICAgICBpbnB1dC5ibHVyKCk7CisgICAgICAgICAgICAvLyAy
LiBOb3cgbWFrZSBzdXJlIGFjY2Vzc2liaWxpdHkgZm9jdXMgd2lsbCBtYWtlIHdlYiBjb250ZW50
IHRoZSBmaXJzdCByZXNwb25kZXIuCisgICAgICAgICAgICB0ZXN0QWNjZXNzaWJpbGl0eU1ha2VG
aXJzdFJlc29uZGVyKCk7CisgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0
ZXN0QWNjZXNzaWJpbGl0eU1ha2VGaXJzdFJlc29uZGVyKCkgeworICAgICAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgICAgICB2YXIgaW5wdXRPYmogPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImlucHV0Iik7Cisg
ICAgICAgICAgICBkZWJ1ZygiQWNjZXNzaWJpbGl0eSBmb2N1cyIpCisgICAgICAgICAgICBpbnB1
dE9iai50YWtlRm9jdXMoKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoaXNX
aW5kb3dGaXJzdFJlc3BvbmRlclNjcmlwdCgpLCBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAg
ICAgICAgICBkZWJ1ZygiV2luZG93IGlzIHN0aWxsIHRoZSBmaXJzdCByZXNwb25kZXI6ICIgKyBy
ZXN1bHQpOworICAgICAgICAgICAgICAgIGZpbmlzaFRlc3QoKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGZpbmlzaFRlc3QoKSB7CisgICAg
ICAgIC8vIFJlc2V0IF9zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlcworICAg
ICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KHNldGZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb25V
SVNjcmlwdChmYWxzZSksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0pOworICAgIH0KKyAgICAgICAgCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorICAgIDxpbnB1dCBpZD0iaW5wdXQiIHR5cGU9InRleHQiPgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlv
bnMJKHJldmlzaW9uIDIyODgzMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNDg4LDYgKzQ4OCw4IEBAIHdlYmtpdC5v
cmcvYi8xNzIwNDQgWyBEZWJ1ZyBdIGltcG9ydGVkL3cKIAogd2Via2l0Lm9yZy9iLzE4MDg5OCBh
Y2Nlc3NpYmlsaXR5L21hYy9BT00tZXZlbnRzLmh0bWwgWyBTa2lwIF0KIAord2Via2l0Lm9yZy9i
LzE4Mjc1MiBhY2Nlc3NpYmlsaXR5L21hYy9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9u
ZGVyLmh0bWwgWyBTa2lwIF0KKwogIyBVc2VyLWluc3RhbGxlZCBmb250cyB0ZXN0IGluZnJhc3Ry
dWN0dXJlIGlzIG5vdCBwcmVzZW50IGluIFdLMQogd2Via2l0Lm9yZy9iLzE4MDA2MiBmYXN0L3Rl
eHQvdXNlci1pbnN0YWxsZWQtZm9udHMgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>334328</attachid>
            <date>2018-02-20 17:53:17 -0800</date>
            <delta_ts>2018-02-20 20:17:25 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21279</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyODgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE4LTAyLTIwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IEtleWJvYXJkIGZvY3VzIG5vdCBm
b2xsb3dpbmcgVm9pY2VPdmVyIGN1cnNvciBpbnRvIHdlYiBjb250ZW50IG9yIHdpdGhpbiB3ZWIg
Y29udGVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4Mjc1MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzc1MTgyMzM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2FsbCB0aGUgYXNzaXN0aXZlIHRl
Y2hub2xvZ3kgc3BlY2lmaWMgbWV0aG9kIGZvciBiZWNvbWluZyBmaXJzdCByZXNwb25kZXIuCisK
KyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNzaWJpbGl0eS1tYWtlLWZpcnN0
LXJlc3BvbmRlci5odG1sCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAg
ICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKwogMjAxOC0wMi0yMCAgTmFuIFdhbmcgIDxuX3dh
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBT006IERpc3BhdGNoIGFjY2Vzc2libGVjbGlj
ayBldmVudApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0JKHJl
dmlzaW9uIDIyODgzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQ1LDE2
ICszNjQ1LDE4IEBAIC0gKHZvaWQpX2FjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUKICAg
ICAgICAgYm9vbCBmb2N1cyA9IFtudW1iZXIgYm9vbFZhbHVlXTsKICAgICAgICAgCiAgICAgICAg
IC8vIElmIGZvY3VzIGlzIGp1c3Qgc2V0IHdpdGhvdXQgbWFraW5nIHRoZSB2aWV3IHRoZSBmaXJz
dCByZXNwb25kZXIsIHRoZW4ga2V5Ym9hcmQgZm9jdXMgd29uJ3QgbW92ZSB0byB0aGUgcmlnaHQg
cGxhY2UuCi0gICAgICAgIGlmIChmb2N1cyAmJiBtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgIW1f
b2JqZWN0LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3Rp
dmUoKSkgeworICAgICAgICBpZiAoZm9jdXMgJiYgIW1fb2JqZWN0LT5kb2N1bWVudCgpLT5mcmFt
ZSgpLT5zZWxlY3Rpb24oKS5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkgewogICAgICAgICAgICAgRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKICAgICAg
ICAgICAgIFBhZ2UqIHBhZ2UgPSBtX29iamVjdC0+cGFnZSgpOwogICAgICAgICAgICAgaWYgKHBh
Z2UgJiYgZnJhbWVWaWV3KSB7CiAgICAgICAgICAgICAgICAgQ2hyb21lQ2xpZW50JiBjaHJvbWVD
bGllbnQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKTsKICAgICAgICAgICAgICAgICBjaHJvbWVD
bGllbnQuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBMZWdh
Y3kgV2ViS2l0MSBjYXNlLgogICAgICAgICAgICAgICAgIGlmIChmcmFtZVZpZXctPnBsYXRmb3Jt
V2lkZ2V0KCkpCiAgICAgICAgICAgICAgICAgICAgIGNocm9tZUNsaWVudC5tYWtlRmlyc3RSZXNw
b25kZXIoZnJhbWVWaWV3LT5wbGF0Zm9ybVdpZGdldCgpKTsKICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGNocm9tZUNsaWVudC5tYWtlRmlyc3RSZXNwb25kZXIoKTsK
KyAgICAgICAgICAgICAgICAgICAgY2hyb21lQ2xpZW50LmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtl
Rmlyc3RSZXNwb25kZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjI4ODMwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYyLDYg
KzM2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKE5T
UmVzcG9uZGVyICopIHsgfQogICAgIC8vIEZvY3VzZXMgb24gdGhlIGNvbnRhaW5pbmcgdmlldyBh
c3NvY2lhdGVkIHdpdGggdGhpcyBwYWdlLgogICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNw
b25kZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJz
dFJlc3BvbmRlcigpIHsgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjI4ODMwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxOC0wMi0yMCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBw
bGUuY29tPgorCisgICAgICAgIEFYOiBLZXlib2FyZCBmb2N1cyBub3QgZm9sbG93aW5nIFZvaWNl
T3ZlciBjdXJzb3IgaW50byB3ZWIgY29udGVudCBvciB3aXRoaW4gd2ViIGNvbnRlbnQuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3NTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM3NTE4MjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmly
c3RSZXNwb25kZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtl
Rmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxN
YWMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJz
dFJlc3BvbmRlcik6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmFzc2lz
dGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisKIDIwMTgtMDItMjAgIE1lZ2FuIEdh
cmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBTd2l0Y2ggdG8gVUlX
S1RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCBmb3Igbm9uLWVkaXRhYmxlIHRleHQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDIyODgzMCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3LDYg
KzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRl
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRl
ZENvbXBvc2l0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNw
b25kZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdS
b290TGF5ZXIoTGF5ZXJPclZpZXcgKikgPSAwOwogICAgIHZpcnR1YWwgTGF5ZXJPclZpZXcgKmFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBS
ZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCkgPSAwOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyODgzMCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04MDgs
NiArODA4LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKCk7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gZGF0YVNlbGVjdGlvbkZv
clBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSk7CiAgICAgdm9pZCBtYWtl
Rmlyc3RSZXNwb25kZXIoKTsKKyAgICB2b2lkIGFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RS
ZXNwb25kZXIoKTsKIAogICAgIENvbG9yU3BhY2VEYXRhIGNvbG9yU3BhY2UoKTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMjI4ODMwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiArMzQzLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTdG9wU3BlYWtpbmcoKQogCiAgICAgTWFrZUZp
cnN0UmVzcG9uZGVyKCkKKyAgICBBc3Npc3RpdmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVy
KCkKIAogICAgICMgU3BvdGxpZ2h0CiAgICAgU2VhcmNoV2l0aFNwb3RsaWdodChTdHJpbmcgc3Ry
aW5nKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmgJKHJldmlzaW9uIDIyODgzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAgICB2
b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSBvdmVycmlk
ZTsKICAgICB2b2lkIG1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOworICAgIHZvaWQgYXNz
aXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlcigpIG92ZXJyaWRlOwogICAgIFdlYkNv
cmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpIG92ZXJyaWRlOwogICAgIFdlYkNvcmU6OkludFBv
aW50IHNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MubW0JKHJldmlzaW9uIDIyODgzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4MywxMSBAQCB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpub3RpZnlJbnB1dENvbnRleHRBCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6YXNzaXN0aXZlVGVjaG5vbG9neU1ha2VG
aXJzdFJlc3BvbmRlcigpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBQYWdl
Q2xpZW50SW1wbDo6bWFrZUZpcnN0UmVzcG9uZGVyKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCShyZXZpc2lvbiAyMjg4MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OTgsNiArNzk4LDExIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2MKICAgICBtX3BhZ2VDbGllbnQuYWNj
ZXNzaWJpbGl0eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGRhdGEpOwogfSAgICAKIAordm9pZCBX
ZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6bWFrZUZp
cnN0UmVzcG9uZGVyKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLmgJKHJldmlzaW9uIDIy
ODgzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbE1hYy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dFBsdWdpbkNvbXBsZXhUZXh0SW5wdXRTdGF0ZSh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElu
cHV0SWRlbnRpZmllciwgUGx1Z2luQ29tcGxleFRleHRJbnB1dFN0YXRlKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgbWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBhc3Npc3Rp
dmVUZWNobm9sb2d5TWFrZUZpcnN0UmVzcG9uZGVyKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRT
aG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlcyhib29sIHNob3VsZFN1cHByZXNzKSBv
dmVycmlkZSB7IG1fc2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRlckNoYW5nZXMgPSBzaG91bGRT
dXBwcmVzczsgfQogCiAgICAgdm9pZCBkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBX
ZWJDb3JlOjpEaWN0aW9uYXJ5UG9wdXBJbmZvJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsTWFjLm1tCShyZXZpc2lvbiAy
Mjg4MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGxNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTEgQEAgYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3Rm9jdXNlZCgpCiAgICAgcmV0dXJuIG1faW1wbC0+aXNGb2N1c2VkKCk7CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25k
ZXIoKQoreworICAgIFtbbV92aWV3IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOm1fdmlld107
Cit9CisgICAgCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjptYWtlRmlyc3RSZXNwb25kZXIoKQogewog
ICAgIGlmIChtX3Nob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzKQpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCShyZXZpc2lv
biAyMjg4MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNiArMzUzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjptYWtlRmlyc3RSZXNwb25kZXIoKQogICAgIG1fcGFnZUNsaWVudC5tYWtlRmlyc3RSZXNwb25k
ZXIoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmly
c3RSZXNwb25kZXIoKQoreworICAgIG1fcGFnZUNsaWVudC5hc3Npc3RpdmVUZWNobm9sb2d5TWFr
ZUZpcnN0UmVzcG9uZGVyKCk7Cit9CisKIENvbG9yU3BhY2VEYXRhIFdlYlBhZ2VQcm94eTo6Y29s
b3JTcGFjZSgpCiB7CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC5jb2xvclNwYWNlKCk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjI4ODMwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMiw2ICsyMTIsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om1ha2VGaXJz
dFJlc3BvbmRlcgogICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1ha2VG
aXJzdFJlc3BvbmRlcigpKTsKIH0KIAordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmFzc2lzdGl2ZVRl
Y2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKQoreworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkFzc2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIoKSk7
Cit9CisKICNlbmRpZiAgICAKIAogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OmNhblRha2VGb2N1cyhG
b2N1c0RpcmVjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDIyODgzMCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBlbGVtZW50RGlkQmx1cihXZWJDb3JlOjpFbGVtZW50JikgZmluYWw7CiAKICAgICB2b2lkIG1h
a2VGaXJzdFJlc3BvbmRlcigpIGZpbmFsOworICAgIHZvaWQgYXNzaXN0aXZlVGVjaG5vbG9neU1h
a2VGaXJzdFJlc3BvbmRlcigpIGZpbmFsOwogI2VuZGlmCiAKICAgICB2b2lkIGVuYWJsZVN1ZGRl
blRlcm1pbmF0aW9uKCkgZmluYWw7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjg4NTMpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxOC0wMi0yMCAgTmFuIFdhbmcgIDxu
X3dhbmdAYXBwbGUuY29tPgorCisgICAgICAgIEFYOiBLZXlib2FyZCBmb2N1cyBub3QgZm9sbG93
aW5nIFZvaWNlT3ZlciBjdXJzb3IgaW50byB3ZWIgY29udGVudCBvciB3aXRoaW4gd2ViIGNvbnRl
bnQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3
NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3NTE4MjMzPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1VJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpm
aXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldyk6CisgICAgICAgIChXVFI6OlVJU2Ny
aXB0Q29udHJvbGxlcjo6bWFrZVdpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIpOgorICAg
ICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmlzV2luZG93Q29udGVudFZpZXdGaXJzdFJl
c3BvbmRlciBjb25zdCk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBUZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb25Gb3JXZWJW
aWV3KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjptYWtlV2luZG93Q29udGVu
dFZpZXdGaXJzdFJlc3BvbmRlcik6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
aXNXaW5kb3dDb250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyIGNvbnN0KToKKyAgICAgICAgKiBUZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6Zmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvbkZv
cldlYlZpZXcpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6Om1ha2VXaW5kb3dD
b250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyOjppc1dpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIgY29uc3QpOgorCiAyMDE4LTAy
LTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIElu
dHJvZHVjZSBIQVZFKElPU1VSRkFDRV9BQ0NFTEVSQVRPUikKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMjI4
ODMwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2NywxOSBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6cGxhdGZvcm1QbGF5QmFjCiB7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpm
aXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldyhib29sKQoreworfQorCit2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6bWFrZVdpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKQor
eworfQorCitib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNXaW5kb3dDb250ZW50Vmlld0ZpcnN0
UmVzcG9uZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0KIAogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykKSW5kZXg6IFRvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMjI4ODMwKQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxLDYgKzQ4MSwxOSBAQCB2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1QbGF5QmFjCiB7CiB9CiAKK3ZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjpmaXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldyhib29s
KQoreworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6bWFrZVdpbmRvd0NvbnRlbnRWaWV3
Rmlyc3RSZXNwb25kZXIoKQoreworfQorCitib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNXaW5k
b3dDb250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKICNlbmRpZgogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6dWlTY3JpcHRDb21wbGV0
ZShKU1N0cmluZ1JlZiByZXN1bHQpCkluZGV4OiBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gMjI4ODMwKQorKysgVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRTYWZlQXJlYUluc2V0cyhkb3VibGUgdG9wLCBkb3VibGUgcmln
aHQsIGRvdWJsZSBib3R0b20sIGRvdWJsZSBsZWZ0KTsKIAorICAgIHZvaWQgZmlyc3RSZXNwb25k
ZXJTdXBwcmVzc2lvbkZvcldlYlZpZXcoYm9vbCk7CisgICAgdm9pZCBtYWtlV2luZG93Q29udGVu
dFZpZXdGaXJzdFJlc3BvbmRlcigpOworICAgIGJvb2wgaXNXaW5kb3dDb250ZW50Vmlld0ZpcnN0
UmVzcG9uZGVyKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgVUlTY3JpcHRDb250cm9sbGVyKFVJ
U2NyaXB0Q29udGV4dCYpOwogICAgIApJbmRleDogVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlw
dENvbnRyb2xsZXIuaWRsCShyZXZpc2lvbiAyMjg4MzApCisrKyBUb29scy9UZXN0UnVubmVyU2hh
cmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDgsNCArMjQ4LDggQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxl
ciB7CiAgICAgdm9pZCBvdmVycmlkZVByZWZlcmVuY2UoRE9NU3RyaW5nIHByZWZlcmVuY2UsIERP
TVN0cmluZyB2YWx1ZSk7CiAKICAgICB2b2lkIHNldFNhZmVBcmVhSW5zZXRzKGRvdWJsZSB0b3As
IGRvdWJsZSByaWdodCwgZG91YmxlIGJvdHRvbSwgZG91YmxlIGxlZnQpOworCisgICAgdm9pZCBm
aXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldyhib29sZWFuIHNob3VsZFN1cHByZXNz
KTsKKyAgICB2b2lkIG1ha2VXaW5kb3dDb250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKCk7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gaXNXaW5kb3dDb250ZW50Vmlld0ZpcnN0UmVzcG9u
ZGVyOwogfTsKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJv
bGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNj
cmlwdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDIyODgzMCkKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjM5LDQgKzIzOSwyMiBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6cGxhdGZvcm1QbGF5QmFj
CiAgICAgcGxheUJhY2tFdmVudHMobV9jb250ZXh0LCAoTlNTdHJpbmcgKilzdHJlYW0uZ2V0KCks
IGNhbGxiYWNrKTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmZpcnN0UmVzcG9uZGVy
U3VwcHJlc3Npb25Gb3JXZWJWaWV3KGJvb2wgc2hvdWxkU3VwcHJlc3MpCit7CisgICAgYXV0byog
d2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0
Zm9ybVZpZXcoKTsKKyAgICBbd2ViVmlldyBfc2V0U2hvdWxkU3VwcHJlc3NGaXJzdFJlc3BvbmRl
ckNoYW5nZXM6c2hvdWxkU3VwcHJlc3NdOworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
bWFrZVdpbmRvd0NvbnRlbnRWaWV3Rmlyc3RSZXNwb25kZXIoKQoreworICAgIE5TV2luZG93ICp3
aW5kb3cgPSBbVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRm
b3JtVmlldygpIHdpbmRvd107CisgICAgW3dpbmRvdyBtYWtlRmlyc3RSZXNwb25kZXI6W3dpbmRv
dyBjb250ZW50Vmlld11dOworfQorCitib29sIFVJU2NyaXB0Q29udHJvbGxlcjo6aXNXaW5kb3dD
b250ZW50Vmlld0ZpcnN0UmVzcG9uZGVyKCkgY29uc3QKK3sKKyAgICBOU1dpbmRvdyAqd2luZG93
ID0gW1Rlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZp
ZXcoKSB3aW5kb3ddOworICAgIHJldHVybiBbd2luZG93IGZpcnN0UmVzcG9uZGVyXSA9PSBbd2lu
ZG93IGNvbnRlbnRWaWV3XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjg4MzApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxOC0wMi0yMCAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgor
CisgICAgICAgIEFYOiBLZXlib2FyZCBmb2N1cyBub3QgZm9sbG93aW5nIFZvaWNlT3ZlciBjdXJz
b3IgaW50byB3ZWIgY29udGVudCBvciB3aXRoaW4gd2ViIGNvbnRlbnQuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI3NTIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzM3NTE4MjMzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNzaWJpbGl0eS1tYWtlLWZpcnN0
LXJlc3BvbmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
bWFjL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDE4LTAyLTIwICBN
YW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNraXAg
dGVzdHMgdGhhdCBuZWVkIEVOQUJMRV9MSU5LX1BSRUZFVENICkluZGV4OiBMYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY2Nl
c3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY2Nlc3NpYmlsaXR5LW1ha2UtZmly
c3QtcmVzcG9uZGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEzIEBA
CitUZXN0IHRoYXQgYXNzaXN0aXZlVGVjaG5vbG9neU1ha2VGaXJzdFJlc3BvbmRlciB3b3JrcyBj
b3JyZWN0bHkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitET00gZm9jdXMKK1dp
bmRvdyBpcyBzdGlsbCB0aGUgZmlyc3QgcmVzcG9uZGVyOiB0cnVlCitBY2Nlc3NpYmlsaXR5IGZv
Y3VzCitXaW5kb3cgaXMgc3RpbGwgdGhlIGZpcnN0IHJlc3BvbmRlcjogZmFsc2UKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVy
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNz
aWJpbGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25k
ZXIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGFz
c2lzdGl2ZVRlY2hub2xvZ3lNYWtlRmlyc3RSZXNwb25kZXIgd29ya3MgY29ycmVjdGx5LiIpOwor
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgCisgICAgZnVuY3Rpb24g
bWFrZVdpbmRvd0ZpcnN0UmVzcG9uZGVyVUlTY3JpcHQoKSB7CisgICAgICAgIHJldHVybiBgKGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgdWlDb250cm9sbGVyLm1ha2VXaW5kb3dDb250ZW50Vmll
d0ZpcnN0UmVzcG9uZGVyKCk7CisgICAgICAgIH0pKCk7YDsKKyAgICB9CisKKyAgICBmdW5jdGlv
biBpc1dpbmRvd0ZpcnN0UmVzcG9uZGVyU2NyaXB0KCkgeworICAgICAgICByZXR1cm4gYChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHJldHVybiB1aUNvbnRyb2xsZXIuaXNXaW5kb3dDb250ZW50
Vmlld0ZpcnN0UmVzcG9uZGVyOworICAgICAgICB9KSgpO2A7CisgICAgfQorICAgIAorICAgIGZ1
bmN0aW9uIHNldGZpcnN0UmVzcG9uZGVyU3VwcHJlc3Npb25VSVNjcmlwdCh4KSB7CisgICAgICAg
IHJldHVybiBgKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIHVpQ29udHJvbGxlci5m
aXJzdFJlc3BvbmRlclN1cHByZXNzaW9uRm9yV2ViVmlldygke3h9KTsKKyAgICAgICAgfSkoKTtg
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGRvVGVzdCgpIHsKKyAgICAgICAgLy8gMS4gTWFrZSB3
aW5kb3cgZmlyc3QgcmVzcG9uZGVyIGFuZCBzdXBwcmVzcyB0aGUgZmlyc3QgcmVzcG9uZGVyIGNo
YW5nZSBmb3Igd2ViIGNvbnRlbnQKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KG1ha2VXaW5kb3dGaXJzdFJlc3BvbmRl
clVJU2NyaXB0KCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIucnVu
VUlTY3JpcHQoc2V0Zmlyc3RSZXNwb25kZXJTdXBwcmVzc2lvblVJU2NyaXB0KHRydWUpLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFN1cHByZXNzRmlyc3RSZXNwb25kZXJD
aGFuZ2UoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3RTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hh
bmdlKCkgeworICAgICAgICB2YXIgaW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5w
dXQiKTsKKyAgICAgICAgZGVidWcoIkRPTSBmb2N1cyIpOworICAgICAgICBpbnB1dC5mb2N1cygp
OworICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGlzV2luZG93Rmlyc3RSZXNwb25kZXJT
Y3JpcHQoKSwgZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICBkZWJ1ZygiV2luZG93IGlz
IHN0aWxsIHRoZSBmaXJzdCByZXNwb25kZXI6ICIgKyByZXN1bHQpOworICAgICAgICAgICAgaW5w
dXQuYmx1cigpOworICAgICAgICAgICAgLy8gMi4gTm93IG1ha2Ugc3VyZSBhY2Nlc3NpYmlsaXR5
IGZvY3VzIHdpbGwgbWFrZSB3ZWIgY29udGVudCB0aGUgZmlyc3QgcmVzcG9uZGVyLgorICAgICAg
ICAgICAgdGVzdEFjY2Vzc2liaWxpdHlNYWtlRmlyc3RSZXNvbmRlcigpOworICAgICAgICB9KTsK
KyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdGVzdEFjY2Vzc2liaWxpdHlNYWtlRmlyc3RSZXNv
bmRlcigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgICAgICAgICAgdmFyIGlucHV0T2JqID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJpbnB1dCIpOworICAgICAgICAgICAgZGVidWcoIkFjY2Vzc2liaWxp
dHkgZm9jdXMiKQorICAgICAgICAgICAgaW5wdXRPYmoudGFrZUZvY3VzKCk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGlzV2luZG93Rmlyc3RSZXNwb25kZXJTY3JpcHQoKSwg
ZnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgZGVidWcoIldpbmRvdyBpcyBzdGls
bCB0aGUgZmlyc3QgcmVzcG9uZGVyOiAiICsgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBmaW5p
c2hUZXN0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBm
dW5jdGlvbiBmaW5pc2hUZXN0KCkgeworICAgICAgICAvLyBSZXNldCBfc2V0U2hvdWxkU3VwcHJl
c3NGaXJzdFJlc3BvbmRlckNoYW5nZXMKKyAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChz
ZXRmaXJzdFJlc3BvbmRlclN1cHByZXNzaW9uVUlTY3JpcHQoZmFsc2UpLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9KTsKKyAgICB9CisgICAgICAg
IAorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8aW5wdXQgaWQ9ImlucHV0IiB0eXBl
PSJ0ZXh0Ij4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAyMjg4MzApCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkK
QEAgLTQ4OCw2ICs0ODgsOCBAQCB3ZWJraXQub3JnL2IvMTcyMDQ0IFsgRGVidWcgXSBpbXBvcnRl
ZC93CiAKIHdlYmtpdC5vcmcvYi8xODA4OTggYWNjZXNzaWJpbGl0eS9tYWMvQU9NLWV2ZW50cy5o
dG1sIFsgU2tpcCBdCiAKK3dlYmtpdC5vcmcvYi8xODI3NTIgYWNjZXNzaWJpbGl0eS9tYWMvYWNj
ZXNzaWJpbGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci5odG1sIFsgU2tpcCBdCisKICMgVXNlci1p
bnN0YWxsZWQgZm9udHMgdGVzdCBpbmZyYXN0cnVjdHVyZSBpcyBub3QgcHJlc2VudCBpbiBXSzEK
IHdlYmtpdC5vcmcvYi8xODAwNjIgZmFzdC90ZXh0L3VzZXItaW5zdGFsbGVkLWZvbnRzIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>