<?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>203839</bug_id>
          
          <creation_ts>2019-11-04 19:38:36 -0800</creation_ts>
          <short_desc>Integrate scroll event into HTML5 event loop</short_desc>
          <delta_ts>2019-11-14 23:02:45 -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>Scrolling</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=204045</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204062</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=204219</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>
          
          <blocked>202843</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587278</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-04 19:38:36 -0800</bug_when>
    <thetext>Scroll event should happen during Page::updateRendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587279</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-04 19:39:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/56890922&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587667</commentid>
    <comment_count>2</comment_count>
      <attachid>382889</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 20:26:26 -0800</bug_when>
    <thetext>Created attachment 382889
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587674</commentid>
    <comment_count>3</comment_count>
      <attachid>382891</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 21:25:43 -0800</bug_when>
    <thetext>Created attachment 382891
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587693</commentid>
    <comment_count>4</comment_count>
      <attachid>382897</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-05 22:55:56 -0800</bug_when>
    <thetext>Created attachment 382897
WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587990</commentid>
    <comment_count>5</comment_count>
      <attachid>382982</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-06 16:40:36 -0800</bug_when>
    <thetext>Created attachment 382982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588339</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 12:06:44 -0800</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588364</commentid>
    <comment_count>7</comment_count>
      <attachid>382982</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-11-07 12:55:42 -0800</bug_when>
    <thetext>Comment on attachment 382982
Patch

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

&gt; Source/WebCore/dom/Document.cpp:4018
&gt; +    m_needsVisualViewportScrollEvent = true;
&gt; +    scheduleTimedRenderingUpdate();

Can this avoid calling scheduleTimedRenderingUpdate if m_needsVisualViewportScrollEvent is already true?

&gt; Source/WebCore/dom/Document.cpp:4041
&gt; +            window-&gt;visualViewport().dispatchEvent(Event::create(eventNames().scrollEvent, Event::CanBubble::No, Event::IsCancelable::No));

Is window-&gt;visualViewport() always non-null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588374</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 13:33:22 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #7)
&gt; Comment on attachment 382982 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=382982&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:4018
&gt; &gt; +    m_needsVisualViewportScrollEvent = true;
&gt; &gt; +    scheduleTimedRenderingUpdate();
&gt; 
&gt; Can this avoid calling scheduleTimedRenderingUpdate if
&gt; m_needsVisualViewportScrollEvent is already true?

Done.

&gt; &gt; Source/WebCore/dom/Document.cpp:4041
&gt; &gt; +            window-&gt;visualViewport().dispatchEvent(Event::create(eventNames().scrollEvent, Event::CanBubble::No, Event::IsCancelable::No));
&gt; 
&gt; Is window-&gt;visualViewport() always non-null?

Yes. We also never reach here unless VisualViewport::update is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588407</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-07 14:18:39 -0800</bug_when>
    <thetext>Committed r252205: &lt;https://trac.webkit.org/changeset/252205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589047</commentid>
    <comment_count>10</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2019-11-09 15:11:23 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #9)
&gt; Committed r252205: &lt;https://trac.webkit.org/changeset/252205&gt;
One of the added test fast/events/scroll-subframe-in-rendering-update.html is failing consistently on iOS, and slowing down ios-wk2 queue. Tracked in bug 204045.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382889</attachid>
            <date>2019-11-05 20:26:26 -0800</date>
            <delta_ts>2019-11-05 21:25:43 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip203839.patch</filename>
            <type>text/plain</type>
            <size>9823</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjUyMTEyKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAwMSw2ICs0MDAx
LDQ3IEBACiAgICAgfQogfQogCit2b2lkIERvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZlbnRU
YXJnZXQoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQoreworICAgIGlmIChtX3BlbmRpbmdTY3JvbGxF
dmVudFRhcmdldHMuY29udGFpbnMoJnRhcmdldCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdldHMuaXNFbXB0eSgpKQorICAgICAgICBzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisKKyAgICBtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdl
dHMuYXBwZW5kKG1ha2VXZWFrUHRyKHRhcmdldCkpOworfQorCit2b2lkIERvY3VtZW50OjpzZXRO
ZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQoKQoreworICAgIG1fbmVlZHNWaXN1YWxWaWV3
cG9ydFNjcm9sbEV2ZW50ID0gdHJ1ZTsKKyAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCk7Cit9CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNydW4tdGhl
LXNjcm9sbC1zdGVwcwordm9pZCBEb2N1bWVudDo6cnVuU2Nyb2xsU3RlcHMoKQoreworICAgIC8v
IEZJWE1FOiBUaGUgb3JkZXIgb2YgZGlzcGF0Y2hpbmcgaXMgbm90IHNwZWNpZmllZDogaHR0cHM6
Ly9naXRodWIuY29tL1dJQ0cvdmlzdWFsLXZpZXdwb3J0L2lzc3Vlcy82Ni4KKyAgICBpZiAoIW1f
cGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJEb2N1bWVudCIgPDwgdGhpcyA8PCAic2VuZGluZyBz
Y3JvbGwgZXZlbnRzIHRvIHBlbmRpbmcgc2Nyb2xsIGV2ZW50IHRhcmdldHMiKTsKKyAgICAgICAg
YXV0byBjdXJyZW50VGFyZ2V0cyA9IFdURk1vdmUobV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRz
KTsKKyAgICAgICAgZm9yIChhdXRvIHRhcmdldCA6IGN1cnJlbnRUYXJnZXRzKSB7CisgICAgICAg
ICAgICBhdXRvIHByb3RlY3RlZFRhcmdldCA9IG1ha2VSZWZQdHIodGFyZ2V0LmdldCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUYXJnZXQpOworICAgICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUYXJnZXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhdXRv
IGJ1YmJsZXMgPSBwcm90ZWN0ZWRUYXJnZXQtPmlzRG9jdW1lbnROb2RlKCkgPyBFdmVudDo6Q2Fu
QnViYmxlOjpZZXMgOiBFdmVudDo6Q2FuQnViYmxlOjpObzsKKyAgICAgICAgICAgIHByb3RlY3Rl
ZFRhcmdldC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxF
dmVudCwgYnViYmxlcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAobV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpIHsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJEb2N1bWVudCIgPDwgdGhpcyA8PCAi
c2VuZGluZyBzY3JvbGwgZXZlbnRzIHRvIHZpc3VhbFZpZXdwb3J0Iik7CisgICAgICAgIG1fbmVl
ZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZUV2ZW50ID0gZmFsc2U7CisgICAgICAgIGlmIChhdXRvKiB3
aW5kb3cgPSBkb21XaW5kb3coKSkKKyAgICAgICAgICAgIHdpbmRvdy0+dmlzdWFsVmlld3BvcnQo
KS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICB9Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciYgYXVkaW9Q
cm9kdWNlcikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNTIxMTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2NCw2ICsxMzY0LDEwIEBACiAg
ICAgdm9pZCBzZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCk7CiAgICAgdm9pZCBydW5SZXNp
emVTdGVwcygpOwogCisgICAgdm9pZCBhZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFp
bmVyTm9kZSYpOworICAgIHZvaWQgc2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KCk7
CisgICAgdm9pZCBydW5TY3JvbGxTdGVwcygpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBdWRpb1Byb2R1Y2VyKE1lZGlhUHJvZHVjZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZUF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciYpOwogICAgIE1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0YXRl
OyB9CkBAIC0yMDE5LDYgKzIwMjMsNyBAQAogICAgIGJvb2wgbV9oYXNTdHlsZVdpdGhWaWV3cG9y
dFVuaXRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNET01XaW5kb3dSZXNpemVFdmVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzVmlzdWFsVmlld3BvcnRSZXNpemVFdmVudCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX25lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzVGltZXJUaHJvdHRsaW5nRW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIApAQCAtMjAzNSw2ICsyMDQwLDggQEAKICAg
ICBib29sIG1faXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCB7IHRydWUgfTsKICNlbmRp
ZgogCisgICAgVmVjdG9yPFdlYWtQdHI8Q29udGFpbmVyTm9kZT4+IG1fcGVuZGluZ1Njcm9sbEV2
ZW50VGFyZ2V0czsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4gbV9tZWRpYVN0cmVhbVN0YXRlQ2hhbmdlRWxlbWVudHM7CiAgICAgU3Ry
aW5nIG1faWRIYXNoU2FsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuY3BwCShyZXZpc2lvbiAyNTIxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMzAgKzgxLDYgQEAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3Bh
dGNoU2Nyb2xsRXZlbnQoTm9kZSYgdGFyZ2V0KQotewotICAgIEFTU0VSVCgmdGFyZ2V0LmRvY3Vt
ZW50KCkgPT0gJm1fZG9jdW1lbnQpOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBN
b2R1bGUsIHNjcm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUs
IG90aGVycyBzaG91bGQgbm90LgotICAgIGVucXVldWVTY3JvbGxFdmVudCh0YXJnZXQsIHRhcmdl
dC5pc0RvY3VtZW50Tm9kZSgpID8gRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzIDogRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLX0KLQotdm9pZCBEb2N1bWVudEV2
ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBFdmVudDo6
Q2FuQnViYmxlIGNhbkJ1YmJsZSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlKQotewot
ICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fZG9jdW1l
bnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExfTElTVEVORVIpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIW1fdGFyZ2V0c1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKCZ0
YXJnZXQpLmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZjxFdmVudD4gc2Ny
b2xsRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlKTsKLSAgICBzY3JvbGxFdmVudC0+c2V0VGFyZ2V0KCZ0YXJnZXQpOwot
ICAgIGVucXVldWVFdmVudChXVEZNb3ZlKHNjcm9sbEV2ZW50KSk7Ci19Ci0KIHZvaWQgRG9jdW1l
bnRFdmVudFF1ZXVlOjplbnF1ZXVlUmVzaXplRXZlbnQoRXZlbnRUYXJnZXQmIHRhcmdldCwgRXZl
bnQ6OkNhbkJ1YmJsZSBjYW5CdWJibGUsIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSkK
IHsKICAgICBpZiAobV9pc0Nsb3NlZCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRF
dmVudFF1ZXVlLmgJKHJldmlzaW9uIDI1MjExMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEV2ZW50UXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNiBAQAogICAgIGJv
b2wgY2FuY2VsRXZlbnQoRXZlbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIGNsb3NlKCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoTm9kZSYpOwotICAg
IHZvaWQgZW5xdWV1ZVNjcm9sbEV2ZW50KEV2ZW50VGFyZ2V0JiwgRXZlbnQ6OkNhbkJ1YmJsZSwg
RXZlbnQ6OklzQ2FuY2VsYWJsZSk7CiAgICAgdm9pZCBlbnF1ZXVlUmVzaXplRXZlbnQoRXZlbnRU
YXJnZXQmLCBFdmVudDo6Q2FuQnViYmxlLCBFdmVudDo6SXNDYW5jZWxhYmxlKTsKIAogcHJpdmF0
ZToKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDI1MjEx
MikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDAyOSw4ICs0MDI5LDEyIEBACiB7CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0ZWRGcmFt
ZShtX2ZyYW1lKTsKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7Ci0gICAgaWYgKG1f
ZnJhbWUudmlldygpICYmIG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mcmFtZS5kb2N1
bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCgqbV9mcmFt
ZS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIW1fZnJhbWUudmlldygpKQorICAgICAgICByZXR1cm47
CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgZG9jdW1lbnQtPmFkZFBlbmRp
bmdTY3JvbGxFdmVudFRhcmdldCgqZG9jdW1lbnQpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6
c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlz
aW9uIDI1MjExMikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyOTQsNyArMTI5NCw5IEBACiAgICAgICAgIGRvY3VtZW50LnJ1blJlc2l6ZVN0ZXBz
KCk7CiAgICAgfSk7CiAKLSAgICAvLyBGSVhNRTogUnVuIHRoZSBzY3JvbGwgc3RlcHMKKyAgICBm
b3JFYWNoRG9jdW1lbnQoWyZdKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICBkb2N1bWVu
dC5ydW5TY3JvbGxTdGVwcygpOworICAgIH0pOwogCiAgICAgZm9yRWFjaERvY3VtZW50KFsmXShE
b2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQuZXZhbHVhdGVNZWRpYVF1ZXJp
ZXNBbmRSZXBvcnRDaGFuZ2VzKCk7ICAgICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VmlzdWFsVmlld3BvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlz
dWFsVmlld3BvcnQuY3BwCShyZXZpc2lvbiAyNTIxMTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1Zpc3VhbFZpZXdwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw4IEBACiAg
ICAgfQogCiAgICAgaWYgKG1fb2Zmc2V0TGVmdCAhPSBvZmZzZXRMZWZ0IHx8IG1fb2Zmc2V0VG9w
ICE9IG9mZnNldFRvcCkgewotICAgICAgICBlbnF1ZXVlU2Nyb2xsRXZlbnQoKTsKKyAgICAgICAg
aWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5zZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQoKTsKICAgICAgICAgbV9v
ZmZzZXRMZWZ0ID0gb2Zmc2V0TGVmdDsKICAgICAgICAgbV9vZmZzZXRUb3AgPSBvZmZzZXRUb3A7
CiAgICAgfQpAQCAtMTg5LDEzICsxOTAsNCBAQAogICAgIGZyYW1lLT5kb2N1bWVudCgpLT5ldmVu
dFF1ZXVlKCkuZW5xdWV1ZVJlc2l6ZUV2ZW50KCp0aGlzLCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pOwogfQogCi12b2lkIFZpc3VhbFZpZXdwb3J0OjplbnF1
ZXVlU2Nyb2xsRXZlbnQoKQotewotICAgIGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKLSAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
ZXZlbnRRdWV1ZSgpLmVucXVldWVTY3JvbGxFdmVudCgqdGhpcywgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQuaAkocmV2aXNpb24gMjUyMTEy
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw3ICs2MSw2IEBACiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBk
ZXJlZigpOyB9CiAKICAgICB2b2lkIGVucXVldWVSZXNpemVFdmVudCgpOwotICAgIHZvaWQgZW5x
dWV1ZVNjcm9sbEV2ZW50KCk7CiAKICAgICB2b2lkIHVwZGF0ZUZyYW1lTGF5b3V0KCkgY29uc3Q7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkocmV2aXNp
b24gMjUyMTEyKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY3Myw3ICsyNjczLDcgQEAKIAogICAgIC8vIFNjaGVkdWxlIHRo
ZSBzY3JvbGwgYW5kIHNjcm9sbC1yZWxhdGVkIERPTSBldmVudHMuCiAgICAgaWYgKEVsZW1lbnQq
IGVsZW1lbnQgPSByZW5kZXJlcigpLmVsZW1lbnQoKSkKLSAgICAgICAgZWxlbWVudC0+ZG9jdW1l
bnQoKS5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCgqZWxlbWVudCk7
CisgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuYWRkUGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0
KCplbGVtZW50KTsKIAogICAgIGlmIChzY3JvbGxzT3ZlcmZsb3coKSkKICAgICAgICAgdmlldy5m
cmFtZVZpZXcoKS5kaWRDaGFuZ2VTY3JvbGxPZmZzZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAJKHJldmlzaW9uIDI1MjExMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzEzLDcgKzcxMyw3IEBACiAgICAgY29tcHV0ZUZpcnN0SW5kZXhlc1Zpc2libGVJblBhZGRpbmdU
b3BCb3R0b21BcmVhcygpOwogCiAgICAgcmVwYWludCgpOwotICAgIGRvY3VtZW50KCkuZXZlbnRR
dWV1ZSgpLmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoc2VsZWN0RWxlbWVudCgpKTsKKyAg
ICBkb2N1bWVudCgpLmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldChzZWxlY3RFbGVtZW50KCkp
OwogfQogCiBMYXlvdXRVbml0IFJlbmRlckxpc3RCb3g6Oml0ZW1IZWlnaHQoKSBjb25zdApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcHJvZ3JhbW1hdGljLXNjcm9sbC10by1uZWdh
dGl2ZS1vZmZzZXQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9wcm9ncmFtbWF0aWMtc2Nyb2xsLXRvLW5lZ2F0aXZlLW9mZnNldC5odG1sCShyZXZpc2lvbiAy
NTIxMTIpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9wcm9ncmFtbWF0aWMtc2Nyb2xs
LXRvLW5lZ2F0aXZlLW9mZnNldC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMyArMjUsMTMg
QEAKICAgICAgICAgICAgIHNjcm9sbGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njcm9s
bGVyJyk7CiAJCQlzY3JvbGxlci5zY3JvbGxMZWZ0ID0gNTA7CiAKLQkJCXNjcm9sbGVyLmFkZEV2
ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudCkgPT4gewotCQkJCXNob3VsZEJlKCJzY3JvbGxl
ci5zY3JvbGxMZWZ0IiwgIjAiKTsKLQkJCQlzaG91bGRCZSgic2Nyb2xsZXIuc2Nyb2xsTGVmdCIs
ICIwIik7Ci0JCQkJZmluaXNoSlNUZXN0KCk7Ci0JCQl9LCBmYWxzZSk7CisJCQlzZXRUaW1lb3V0
KCgpID0+IHsKKyAgICAJCQlzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZXZl
bnQpID0+IHsKKyAgICAJCQkJc2hvdWxkQmUoInNjcm9sbGVyLnNjcm9sbExlZnQiLCAiMCIpOwor
ICAgIAkJCQlzaG91bGRCZSgic2Nyb2xsZXIuc2Nyb2xsTGVmdCIsICIwIik7CisgICAgCQkJCWZp
bmlzaEpTVGVzdCgpOworICAgIAkJCX0sIGZhbHNlKTsKIAotCQkJc2V0VGltZW91dCgoKSA9PiB7
CiAJCQkJc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IC0yMDA7CiAJCQkJc2Nyb2xsZXIuc2Nyb2xsVG9w
ID0gLTEwMDsKIAkJCX0sIDApCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382891</attachid>
            <date>2019-11-05 21:25:43 -0800</date>
            <delta_ts>2019-11-05 22:55:56 -0800</delta_ts>
            <desc>WIP2</desc>
            <filename>wip203839b.patch</filename>
            <type>text/plain</type>
            <size>10371</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAwMSw2ICs0MDAx
LDQ3IEBACiAgICAgfQogfQogCit2b2lkIERvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZlbnRU
YXJnZXQoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQoreworICAgIGlmIChtX3BlbmRpbmdTY3JvbGxF
dmVudFRhcmdldHMuY29udGFpbnMoJnRhcmdldCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdldHMuaXNFbXB0eSgpKQorICAgICAgICBzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisKKyAgICBtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdl
dHMuYXBwZW5kKG1ha2VXZWFrUHRyKHRhcmdldCkpOworfQorCit2b2lkIERvY3VtZW50OjpzZXRO
ZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQoKQoreworICAgIG1fbmVlZHNWaXN1YWxWaWV3
cG9ydFNjcm9sbEV2ZW50ID0gdHJ1ZTsKKyAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCk7Cit9CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNydW4tdGhl
LXNjcm9sbC1zdGVwcwordm9pZCBEb2N1bWVudDo6cnVuU2Nyb2xsU3RlcHMoKQoreworICAgIC8v
IEZJWE1FOiBUaGUgb3JkZXIgb2YgZGlzcGF0Y2hpbmcgaXMgbm90IHNwZWNpZmllZDogaHR0cHM6
Ly9naXRodWIuY29tL1dJQ0cvdmlzdWFsLXZpZXdwb3J0L2lzc3Vlcy82Ni4KKyAgICBpZiAoIW1f
cGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJEb2N1bWVudCIgPDwgdGhpcyA8PCAic2VuZGluZyBz
Y3JvbGwgZXZlbnRzIHRvIHBlbmRpbmcgc2Nyb2xsIGV2ZW50IHRhcmdldHMiKTsKKyAgICAgICAg
YXV0byBjdXJyZW50VGFyZ2V0cyA9IFdURk1vdmUobV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRz
KTsKKyAgICAgICAgZm9yIChhdXRvIHRhcmdldCA6IGN1cnJlbnRUYXJnZXRzKSB7CisgICAgICAg
ICAgICBhdXRvIHByb3RlY3RlZFRhcmdldCA9IG1ha2VSZWZQdHIodGFyZ2V0LmdldCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUYXJnZXQpOworICAgICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUYXJnZXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhdXRv
IGJ1YmJsZXMgPSBwcm90ZWN0ZWRUYXJnZXQtPmlzRG9jdW1lbnROb2RlKCkgPyBFdmVudDo6Q2Fu
QnViYmxlOjpZZXMgOiBFdmVudDo6Q2FuQnViYmxlOjpObzsKKyAgICAgICAgICAgIHByb3RlY3Rl
ZFRhcmdldC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxF
dmVudCwgYnViYmxlcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAobV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpIHsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJEb2N1bWVudCIgPDwgdGhpcyA8PCAi
c2VuZGluZyBzY3JvbGwgZXZlbnRzIHRvIHZpc3VhbFZpZXdwb3J0Iik7CisgICAgICAgIG1fbmVl
ZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZUV2ZW50ID0gZmFsc2U7CisgICAgICAgIGlmIChhdXRvKiB3
aW5kb3cgPSBkb21XaW5kb3coKSkKKyAgICAgICAgICAgIHdpbmRvdy0+dmlzdWFsVmlld3BvcnQo
KS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICB9Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciYgYXVkaW9Q
cm9kdWNlcikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2NCw2ICsxMzY0LDEwIEBACiAg
ICAgdm9pZCBzZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCk7CiAgICAgdm9pZCBydW5SZXNp
emVTdGVwcygpOwogCisgICAgdm9pZCBhZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFp
bmVyTm9kZSYpOworICAgIHZvaWQgc2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KCk7
CisgICAgdm9pZCBydW5TY3JvbGxTdGVwcygpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBdWRpb1Byb2R1Y2VyKE1lZGlhUHJvZHVjZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZUF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciYpOwogICAgIE1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0YXRl
OyB9CkBAIC0yMDE5LDYgKzIwMjMsNyBAQAogICAgIGJvb2wgbV9oYXNTdHlsZVdpdGhWaWV3cG9y
dFVuaXRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNET01XaW5kb3dSZXNpemVFdmVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzVmlzdWFsVmlld3BvcnRSZXNpemVFdmVudCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX25lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzVGltZXJUaHJvdHRsaW5nRW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIApAQCAtMjAzNSw2ICsyMDQwLDggQEAKICAg
ICBib29sIG1faXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCB7IHRydWUgfTsKICNlbmRp
ZgogCisgICAgVmVjdG9yPFdlYWtQdHI8Q29udGFpbmVyTm9kZT4+IG1fcGVuZGluZ1Njcm9sbEV2
ZW50VGFyZ2V0czsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4gbV9tZWRpYVN0cmVhbVN0YXRlQ2hhbmdlRWxlbWVudHM7CiAgICAgU3Ry
aW5nIG1faWRIYXNoU2FsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMzAgKzgxLDYgQEAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3Bh
dGNoU2Nyb2xsRXZlbnQoTm9kZSYgdGFyZ2V0KQotewotICAgIEFTU0VSVCgmdGFyZ2V0LmRvY3Vt
ZW50KCkgPT0gJm1fZG9jdW1lbnQpOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBN
b2R1bGUsIHNjcm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUs
IG90aGVycyBzaG91bGQgbm90LgotICAgIGVucXVldWVTY3JvbGxFdmVudCh0YXJnZXQsIHRhcmdl
dC5pc0RvY3VtZW50Tm9kZSgpID8gRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzIDogRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLX0KLQotdm9pZCBEb2N1bWVudEV2
ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBFdmVudDo6
Q2FuQnViYmxlIGNhbkJ1YmJsZSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlKQotewot
ICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fZG9jdW1l
bnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExfTElTVEVORVIpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIW1fdGFyZ2V0c1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKCZ0
YXJnZXQpLmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZjxFdmVudD4gc2Ny
b2xsRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlKTsKLSAgICBzY3JvbGxFdmVudC0+c2V0VGFyZ2V0KCZ0YXJnZXQpOwot
ICAgIGVucXVldWVFdmVudChXVEZNb3ZlKHNjcm9sbEV2ZW50KSk7Ci19Ci0KIGJvb2wgRG9jdW1l
bnRFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCYgZXZlbnQpCiB7CiAgICAgYm9vbCBmb3Vu
ZCA9IG1fcXVldWVkRXZlbnRzLnJlbW92ZSgmZXZlbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuaAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw2
IEBACiAgICAgYm9vbCBjYW5jZWxFdmVudChFdmVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xv
c2UoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChO
b2RlJik7Ci0gICAgdm9pZCBlbnF1ZXVlU2Nyb2xsRXZlbnQoRXZlbnRUYXJnZXQmLCBFdmVudDo6
Q2FuQnViYmxlLCBFdmVudDo6SXNDYW5jZWxhYmxlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBl
bmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAyOSw4ICs0MDI5LDEyIEBACiB7CiAgICAgUmVm
PEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVk
QnlVc2VyKCk7Ci0gICAgaWYgKG1fZnJhbWUudmlldygpICYmIG1fZnJhbWUuZG9jdW1lbnQoKSkK
LSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0
Y2hTY3JvbGxFdmVudCgqbV9mcmFtZS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIW1fZnJhbWUudmll
dygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9m
cmFtZS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47Cisg
ICAgZG9jdW1lbnQtPmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldCgqZG9jdW1lbnQpOwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTAsMTEgKzEyOTAsMTUgQEAKIAogICAgIGxh
eW91dElmTmVlZGVkKCk7CiAKKyAgICAvLyBGbHVzaCBhdXRvZm9jdXMgY2FuZGlkYXRlcworCiAg
ICAgZm9yRWFjaERvY3VtZW50KFsmXShEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9j
dW1lbnQucnVuUmVzaXplU3RlcHMoKTsKICAgICB9KTsKIAotICAgIC8vIEZJWE1FOiBSdW4gdGhl
IHNjcm9sbCBzdGVwcworICAgIGZvckVhY2hEb2N1bWVudChbJl0oRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGRvY3VtZW50LnJ1blNjcm9sbFN0ZXBzKCk7CisgICAgfSk7CiAKICAgICBm
b3JFYWNoRG9jdW1lbnQoWyZdKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVu
dC5ldmFsdWF0ZU1lZGlhUXVlcmllc0FuZFJlcG9ydENoYW5nZXMoKTsgICAgICAgIApAQCAtMTMx
OSw5ICsxMzIzLDYgQEAKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9u
cygqdGhpcyk7CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBGbHVzaCBhdXRvZm9jdXMgY2FuZGlk
YXRlcwotICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNDk5Mgot
CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9W
aXN1YWxWaWV3cG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1
YWxWaWV3cG9ydC5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VmlzdWFsVmlld3BvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsMTQgKzE2OCwxNiBAQAog
ICAgICAgICAgICAgc2NhbGUgPSBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKICAgICB9CiAKKyAg
ICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6
IG51bGxwdHI7CiAgICAgaWYgKG1fb2Zmc2V0TGVmdCAhPSBvZmZzZXRMZWZ0IHx8IG1fb2Zmc2V0
VG9wICE9IG9mZnNldFRvcCkgewotICAgICAgICBlbnF1ZXVlU2Nyb2xsRXZlbnQoKTsKKyAgICAg
ICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgZG9jdW1lbnQtPnNldE5lZWRzVmlzdWFsVmll
d3BvcnRTY3JvbGxFdmVudCgpOwogICAgICAgICBtX29mZnNldExlZnQgPSBvZmZzZXRMZWZ0Owog
ICAgICAgICBtX29mZnNldFRvcCA9IG9mZnNldFRvcDsKICAgICB9CiAgICAgaWYgKG1fd2lkdGgg
IT0gd2lkdGggfHwgbV9oZWlnaHQgIT0gaGVpZ2h0IHx8IG1fc2NhbGUgIT0gc2NhbGUpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLT5zZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCk7CisgICAgICAgIGlm
IChkb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LT5zZXROZWVkc1Zpc3VhbFZpZXdwb3J0
UmVzaXplKCk7CiAgICAgICAgIG1fd2lkdGggPSB3aWR0aDsKICAgICAgICAgbV9oZWlnaHQgPSBo
ZWlnaHQ7CiAgICAgICAgIG1fc2NhbGUgPSBzY2FsZTsKQEAgLTE4MiwxMyArMTg0LDQgQEAKICAg
ICB9CiB9CiAKLXZvaWQgVmlzdWFsVmlld3BvcnQ6OmVucXVldWVTY3JvbGxFdmVudCgpCi17Ci0g
ICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZVNj
cm9sbEV2ZW50KCp0aGlzLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9WaXN1YWxWaWV3cG9ydC5oCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1Zpc3VhbFZpZXdwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAKICAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIHZvaWQg
ZW5xdWV1ZVJlc2l6ZUV2ZW50KCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2Nyb2xsRXZlbnQoKTsKIAog
ICAgIHZvaWQgdXBkYXRlRnJhbWVMYXlvdXQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcz
LDcgKzI2NzMsNyBAQAogCiAgICAgLy8gU2NoZWR1bGUgdGhlIHNjcm9sbCBhbmQgc2Nyb2xsLXJl
bGF0ZWQgRE9NIGV2ZW50cy4KICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyKCku
ZWxlbWVudCgpKQotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLmV2ZW50UXVldWUoKS5lbnF1
ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KCplbGVtZW50KTsKKyAgICAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS5hZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoKmVsZW1lbnQpOwogCiAgICAgaWYg
KHNjcm9sbHNPdmVyZmxvdygpKQogICAgICAgICB2aWV3LmZyYW1lVmlldygpLmRpZENoYW5nZVNj
cm9sbE9mZnNldCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTMsNyArNzEzLDcgQEAKICAgICBj
b21wdXRlRmlyc3RJbmRleGVzVmlzaWJsZUluUGFkZGluZ1RvcEJvdHRvbUFyZWFzKCk7CiAKICAg
ICByZXBhaW50KCk7Ci0gICAgZG9jdW1lbnQoKS5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0
Y2hTY3JvbGxFdmVudChzZWxlY3RFbGVtZW50KCkpOworICAgIGRvY3VtZW50KCkuYWRkUGVuZGlu
Z1Njcm9sbEV2ZW50VGFyZ2V0KHNlbGVjdEVsZW1lbnQoKSk7CiB9CiAKIExheW91dFVuaXQgUmVu
ZGVyTGlzdEJveDo6aXRlbUhlaWdodCgpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9wcm9ncmFtbWF0aWMtc2Nyb2xsLXRvLW5lZ2F0aXZlLW9mZnNldC5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Byb2dyYW1tYXRpYy1zY3JvbGwt
dG8tbmVnYXRpdmUtb2Zmc2V0Lmh0bWwJKHJldmlzaW9uIDI1MjEyMykKKysrIExheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL3Byb2dyYW1tYXRpYy1zY3JvbGwtdG8tbmVnYXRpdmUtb2Zmc2V0Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEzICsyNSwxMyBAQAogICAgICAgICAgICAgc2Nyb2xs
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xsZXInKTsKIAkJCXNjcm9sbGVyLnNj
cm9sbExlZnQgPSA1MDsKIAotCQkJc2Nyb2xsZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywg
KGV2ZW50KSA9PiB7Ci0JCQkJc2hvdWxkQmUoInNjcm9sbGVyLnNjcm9sbExlZnQiLCAiMCIpOwot
CQkJCXNob3VsZEJlKCJzY3JvbGxlci5zY3JvbGxMZWZ0IiwgIjAiKTsKLQkJCQlmaW5pc2hKU1Rl
c3QoKTsKLQkJCX0sIGZhbHNlKTsKKwkJCXNldFRpbWVvdXQoKCkgPT4geworICAgIAkJCXNjcm9s
bGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVudCkgPT4geworICAgIAkJCQlzaG91
bGRCZSgic2Nyb2xsZXIuc2Nyb2xsTGVmdCIsICIwIik7CisgICAgCQkJCXNob3VsZEJlKCJzY3Jv
bGxlci5zY3JvbGxMZWZ0IiwgIjAiKTsKKyAgICAJCQkJZmluaXNoSlNUZXN0KCk7CisgICAgCQkJ
fSwgZmFsc2UpOwogCi0JCQlzZXRUaW1lb3V0KCgpID0+IHsKIAkJCQlzY3JvbGxlci5zY3JvbGxM
ZWZ0ID0gLTIwMDsKIAkJCQlzY3JvbGxlci5zY3JvbGxUb3AgPSAtMTAwOwogCQkJfSwgMCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382897</attachid>
            <date>2019-11-05 22:55:56 -0800</date>
            <delta_ts>2019-11-06 16:40:34 -0800</delta_ts>
            <desc>WIP3</desc>
            <filename>wip203839c.patch</filename>
            <type>text/plain</type>
            <size>13161</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAwMSw2ICs0MDAx
LDQ3IEBACiAgICAgfQogfQogCit2b2lkIERvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZlbnRU
YXJnZXQoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQoreworICAgIGlmIChtX3BlbmRpbmdTY3JvbGxF
dmVudFRhcmdldHMuY29udGFpbnMoJnRhcmdldCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdldHMuaXNFbXB0eSgpKQorICAgICAgICBzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisKKyAgICBtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdl
dHMuYXBwZW5kKG1ha2VXZWFrUHRyKHRhcmdldCkpOworfQorCit2b2lkIERvY3VtZW50OjpzZXRO
ZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQoKQoreworICAgIG1fbmVlZHNWaXN1YWxWaWV3
cG9ydFNjcm9sbEV2ZW50ID0gdHJ1ZTsKKyAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCk7Cit9CisKKy8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNydW4tdGhl
LXNjcm9sbC1zdGVwcwordm9pZCBEb2N1bWVudDo6cnVuU2Nyb2xsU3RlcHMoKQoreworICAgIC8v
IEZJWE1FOiBUaGUgb3JkZXIgb2YgZGlzcGF0Y2hpbmcgaXMgbm90IHNwZWNpZmllZDogaHR0cHM6
Ly9naXRodWIuY29tL1dJQ0cvdmlzdWFsLXZpZXdwb3J0L2lzc3Vlcy82Ni4KKyAgICBpZiAoIW1f
cGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJEb2N1bWVudCIgPDwgdGhpcyA8PCAic2VuZGluZyBz
Y3JvbGwgZXZlbnRzIHRvIHBlbmRpbmcgc2Nyb2xsIGV2ZW50IHRhcmdldHMiKTsKKyAgICAgICAg
YXV0byBjdXJyZW50VGFyZ2V0cyA9IFdURk1vdmUobV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRz
KTsKKyAgICAgICAgZm9yIChhdXRvIHRhcmdldCA6IGN1cnJlbnRUYXJnZXRzKSB7CisgICAgICAg
ICAgICBhdXRvIHByb3RlY3RlZFRhcmdldCA9IG1ha2VSZWZQdHIodGFyZ2V0LmdldCgpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRUYXJnZXQpOworICAgICAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUYXJnZXQpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhdXRv
IGJ1YmJsZXMgPSBwcm90ZWN0ZWRUYXJnZXQtPmlzRG9jdW1lbnROb2RlKCkgPyBFdmVudDo6Q2Fu
QnViYmxlOjpZZXMgOiBFdmVudDo6Q2FuQnViYmxlOjpObzsKKyAgICAgICAgICAgIHByb3RlY3Rl
ZFRhcmdldC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxF
dmVudCwgYnViYmxlcywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBpZiAobV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpIHsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJEb2N1bWVudCIgPDwgdGhpcyA8PCAi
c2VuZGluZyBzY3JvbGwgZXZlbnRzIHRvIHZpc3VhbFZpZXdwb3J0Iik7CisgICAgICAgIG1fbmVl
ZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZUV2ZW50ID0gZmFsc2U7CisgICAgICAgIGlmIChhdXRvKiB3
aW5kb3cgPSBkb21XaW5kb3coKSkKKyAgICAgICAgICAgIHdpbmRvdy0+dmlzdWFsVmlld3BvcnQo
KS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBF
dmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICB9Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OmFkZEF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciYgYXVkaW9Q
cm9kdWNlcikKIHsKICAgICBtX2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM2NCw2ICsxMzY0LDEwIEBACiAg
ICAgdm9pZCBzZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCk7CiAgICAgdm9pZCBydW5SZXNp
emVTdGVwcygpOwogCisgICAgdm9pZCBhZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFp
bmVyTm9kZSYpOworICAgIHZvaWQgc2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KCk7
CisgICAgdm9pZCBydW5TY3JvbGxTdGVwcygpOworCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGRBdWRpb1Byb2R1Y2VyKE1lZGlhUHJvZHVjZXImKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZUF1ZGlvUHJvZHVjZXIoTWVkaWFQcm9kdWNlciYpOwogICAgIE1lZGlhUHJvZHVjZXI6
Ok1lZGlhU3RhdGVGbGFncyBtZWRpYVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVN0YXRl
OyB9CkBAIC0yMDE5LDYgKzIwMjMsNyBAQAogICAgIGJvb2wgbV9oYXNTdHlsZVdpdGhWaWV3cG9y
dFVuaXRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNET01XaW5kb3dSZXNpemVFdmVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX25lZWRzVmlzdWFsVmlld3BvcnRSZXNpemVFdmVudCB7IGZh
bHNlIH07CisgICAgYm9vbCBtX25lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX2lzVGltZXJUaHJvdHRsaW5nRW5hYmxlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIApAQCAtMjAzNSw2ICsyMDQwLDggQEAKICAg
ICBib29sIG1faXNUZWxlcGhvbmVOdW1iZXJQYXJzaW5nQWxsb3dlZCB7IHRydWUgfTsKICNlbmRp
ZgogCisgICAgVmVjdG9yPFdlYWtQdHI8Q29udGFpbmVyTm9kZT4+IG1fcGVuZGluZ1Njcm9sbEV2
ZW50VGFyZ2V0czsKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgSGFzaFNldDxIVE1M
TWVkaWFFbGVtZW50Kj4gbV9tZWRpYVN0cmVhbVN0YXRlQ2hhbmdlRWxlbWVudHM7CiAgICAgU3Ry
aW5nIG1faWRIYXNoU2FsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRFdmVudFF1ZXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODEsMzAgKzgxLDYgQEAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVPckRpc3Bh
dGNoU2Nyb2xsRXZlbnQoTm9kZSYgdGFyZ2V0KQotewotICAgIEFTU0VSVCgmdGFyZ2V0LmRvY3Vt
ZW50KCkgPT0gJm1fZG9jdW1lbnQpOwotCi0gICAgLy8gUGVyIHRoZSBXM0MgQ1NTT00gVmlldyBN
b2R1bGUsIHNjcm9sbCBldmVudHMgZmlyZWQgYXQgdGhlIGRvY3VtZW50IHNob3VsZCBidWJibGUs
IG90aGVycyBzaG91bGQgbm90LgotICAgIGVucXVldWVTY3JvbGxFdmVudCh0YXJnZXQsIHRhcmdl
dC5pc0RvY3VtZW50Tm9kZSgpID8gRXZlbnQ6OkNhbkJ1YmJsZTo6WWVzIDogRXZlbnQ6OkNhbkJ1
YmJsZTo6Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKTsKLX0KLQotdm9pZCBEb2N1bWVudEV2
ZW50UXVldWU6OmVucXVldWVTY3JvbGxFdmVudChFdmVudFRhcmdldCYgdGFyZ2V0LCBFdmVudDo6
Q2FuQnViYmxlIGNhbkJ1YmJsZSwgRXZlbnQ6OklzQ2FuY2VsYWJsZSBjYW5jZWxhYmxlKQotewot
ICAgIGlmIChtX2lzQ2xvc2VkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fZG9jdW1l
bnQuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpTQ1JPTExfTElTVEVORVIpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIW1fdGFyZ2V0c1dpdGhRdWV1ZWRTY3JvbGxFdmVudHMuYWRkKCZ0
YXJnZXQpLmlzTmV3RW50cnkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZjxFdmVudD4gc2Ny
b2xsRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY2FuQnVi
YmxlLCBjYW5jZWxhYmxlKTsKLSAgICBzY3JvbGxFdmVudC0+c2V0VGFyZ2V0KCZ0YXJnZXQpOwot
ICAgIGVucXVldWVFdmVudChXVEZNb3ZlKHNjcm9sbEV2ZW50KSk7Ci19Ci0KIGJvb2wgRG9jdW1l
bnRFdmVudFF1ZXVlOjpjYW5jZWxFdmVudChFdmVudCYgZXZlbnQpCiB7CiAgICAgYm9vbCBmb3Vu
ZCA9IG1fcXVldWVkRXZlbnRzLnJlbW92ZSgmZXZlbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEV2ZW50UXVldWUuaAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0Nyw2
IEBACiAgICAgYm9vbCBjYW5jZWxFdmVudChFdmVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xv
c2UoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChO
b2RlJik7Ci0gICAgdm9pZCBlbnF1ZXVlU2Nyb2xsRXZlbnQoRXZlbnRUYXJnZXQmLCBFdmVudDo6
Q2FuQnViYmxlLCBFdmVudDo6SXNDYW5jZWxhYmxlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBl
bmRpbmdFdmVudFRpbWVyRmlyZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAyOSw4ICs0MDI5LDEyIEBACiB7CiAgICAgUmVm
PEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKICAgICBzZXRGcmFtZVdhc1Njcm9sbGVk
QnlVc2VyKCk7Ci0gICAgaWYgKG1fZnJhbWUudmlldygpICYmIG1fZnJhbWUuZG9jdW1lbnQoKSkK
LSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0
Y2hTY3JvbGxFdmVudCgqbV9mcmFtZS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIW1fZnJhbWUudmll
dygpKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9m
cmFtZS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47Cisg
ICAgZG9jdW1lbnQtPmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldCgqZG9jdW1lbnQpOwogfQog
CiB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOTAsMTEgKzEyOTAsMTUgQEAKIAogICAgIGxh
eW91dElmTmVlZGVkKCk7CiAKKyAgICAvLyBGbHVzaCBhdXRvZm9jdXMgY2FuZGlkYXRlcworCiAg
ICAgZm9yRWFjaERvY3VtZW50KFsmXShEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9j
dW1lbnQucnVuUmVzaXplU3RlcHMoKTsKICAgICB9KTsKIAotICAgIC8vIEZJWE1FOiBSdW4gdGhl
IHNjcm9sbCBzdGVwcworICAgIGZvckVhY2hEb2N1bWVudChbJl0oRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGRvY3VtZW50LnJ1blNjcm9sbFN0ZXBzKCk7CisgICAgfSk7CiAKICAgICBm
b3JFYWNoRG9jdW1lbnQoWyZdKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVu
dC5ldmFsdWF0ZU1lZGlhUXVlcmllc0FuZFJlcG9ydENoYW5nZXMoKTsgICAgICAgIApAQCAtMTMx
OSw5ICsxMzIzLDYgQEAKICAgICAgICAgZG9jdW1lbnQtPnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9u
cygqdGhpcyk7CiAjZW5kaWYKIAotICAgIC8vIEZJWE1FOiBGbHVzaCBhdXRvZm9jdXMgY2FuZGlk
YXRlcwotICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93aGF0d2cvaHRtbC9pc3N1ZXMvNDk5Mgot
CiAgICAgbGF5b3V0SWZOZWVkZWQoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9W
aXN1YWxWaWV3cG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1
YWxWaWV3cG9ydC5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
VmlzdWFsVmlld3BvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsMTQgKzE2OCwxNiBAQAog
ICAgICAgICAgICAgc2NhbGUgPSBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKICAgICB9CiAKKyAg
ICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6
IG51bGxwdHI7CiAgICAgaWYgKG1fb2Zmc2V0TGVmdCAhPSBvZmZzZXRMZWZ0IHx8IG1fb2Zmc2V0
VG9wICE9IG9mZnNldFRvcCkgewotICAgICAgICBlbnF1ZXVlU2Nyb2xsRXZlbnQoKTsKKyAgICAg
ICAgaWYgKGRvY3VtZW50KQorICAgICAgICAgICAgZG9jdW1lbnQtPnNldE5lZWRzVmlzdWFsVmll
d3BvcnRTY3JvbGxFdmVudCgpOwogICAgICAgICBtX29mZnNldExlZnQgPSBvZmZzZXRMZWZ0Owog
ICAgICAgICBtX29mZnNldFRvcCA9IG9mZnNldFRvcDsKICAgICB9CiAgICAgaWYgKG1fd2lkdGgg
IT0gd2lkdGggfHwgbV9oZWlnaHQgIT0gaGVpZ2h0IHx8IG1fc2NhbGUgIT0gc2NhbGUpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKLSAgICAgICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLT5zZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCk7CisgICAgICAgIGlm
IChkb2N1bWVudCkKKyAgICAgICAgICAgIGRvY3VtZW50LT5zZXROZWVkc1Zpc3VhbFZpZXdwb3J0
UmVzaXplKCk7CiAgICAgICAgIG1fd2lkdGggPSB3aWR0aDsKICAgICAgICAgbV9oZWlnaHQgPSBo
ZWlnaHQ7CiAgICAgICAgIG1fc2NhbGUgPSBzY2FsZTsKQEAgLTE4MiwxMyArMTg0LDQgQEAKICAg
ICB9CiB9CiAKLXZvaWQgVmlzdWFsVmlld3BvcnQ6OmVucXVldWVTY3JvbGxFdmVudCgpCi17Ci0g
ICAgYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCkuZW5xdWV1ZVNj
cm9sbEV2ZW50KCp0aGlzLCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2VsYWJs
ZTo6Tm8pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9WaXN1YWxWaWV3cG9ydC5oCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1Zpc3VhbFZpZXdwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAKICAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7IH0KIAogICAgIHZvaWQg
ZW5xdWV1ZVJlc2l6ZUV2ZW50KCk7Ci0gICAgdm9pZCBlbnF1ZXVlU2Nyb2xsRXZlbnQoKTsKIAog
ICAgIHZvaWQgdXBkYXRlRnJhbWVMYXlvdXQoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcz
LDcgKzI2NzMsNyBAQAogCiAgICAgLy8gU2NoZWR1bGUgdGhlIHNjcm9sbCBhbmQgc2Nyb2xsLXJl
bGF0ZWQgRE9NIGV2ZW50cy4KICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyKCku
ZWxlbWVudCgpKQotICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLmV2ZW50UXVldWUoKS5lbnF1
ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KCplbGVtZW50KTsKKyAgICAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS5hZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoKmVsZW1lbnQpOwogCiAgICAgaWYg
KHNjcm9sbHNPdmVyZmxvdygpKQogICAgICAgICB2aWV3LmZyYW1lVmlldygpLmRpZENoYW5nZVNj
cm9sbE9mZnNldCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAkocmV2aXNpb24gMjUyMTIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTMsNyArNzEzLDcgQEAKICAgICBj
b21wdXRlRmlyc3RJbmRleGVzVmlzaWJsZUluUGFkZGluZ1RvcEJvdHRvbUFyZWFzKCk7CiAKICAg
ICByZXBhaW50KCk7Ci0gICAgZG9jdW1lbnQoKS5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0
Y2hTY3JvbGxFdmVudChzZWxlY3RFbGVtZW50KCkpOworICAgIGRvY3VtZW50KCkuYWRkUGVuZGlu
Z1Njcm9sbEV2ZW50VGFyZ2V0KHNlbGVjdEVsZW1lbnQoKSk7CiB9CiAKIExheW91dFVuaXQgUmVu
ZGVyTGlzdEJveDo6aXRlbUhlaWdodCgpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9vdmVyZmxvdy1zY3JvbGwtd2hpbGUtc2VsZWN0aW5nLXRleHQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9vdmVyZmxvdy1zY3JvbGwt
d2hpbGUtc2VsZWN0aW5nLXRleHQuaHRtbAkocmV2aXNpb24gMjUyMTIzKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vb3ZlcmZsb3ctc2Nyb2xsLXdoaWxlLXNlbGVjdGluZy10ZXh0
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDExICszMCwxMyBAQAogCiBjb25zdCB0ZXh0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQiKTsKIHRleHQuc2Nyb2xsVG8oMCwgMTAwMCk7
Ci1hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4gdGV4dC5zY3JvbGxUbygwLCA1MDApKTsK
LXRleHQuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgKCkgPT4gewotICAgIHRleHQudGV4dENv
bnRlbnQgPSAiIjsKLSAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgcmVtb3ZlZCB0aGUgdGV4
dC4iKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9
PiB7CisgICAgdGV4dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCAoKSA9PiB7CisgICAgICAg
IHRleHQudGV4dENvbnRlbnQgPSAiIjsKKyAgICAgICAgdGVzdFBhc3NlZCgiU3VjY2Vzc2Z1bGx5
IHJlbW92ZWQgdGhlIHRleHQuIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0pOwor
ICAgIHRleHQuc2Nyb2xsVG8oMCwgNTAwKTsKIH0pOwogPC9zY3JpcHQ+CiA8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9wcm9ncmFtbWF0aWMtc2Nyb2xsLXRvLW5lZ2F0
aXZlLW9mZnNldC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L3Byb2dyYW1tYXRpYy1zY3JvbGwtdG8tbmVnYXRpdmUtb2Zmc2V0Lmh0bWwJKHJldmlzaW9uIDI1
MjEyMykKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Byb2dyYW1tYXRpYy1zY3JvbGwt
dG8tbmVnYXRpdmUtb2Zmc2V0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEzICsyNSwxMyBA
QAogICAgICAgICAgICAgc2Nyb2xsZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2Nyb2xs
ZXInKTsKIAkJCXNjcm9sbGVyLnNjcm9sbExlZnQgPSA1MDsKIAotCQkJc2Nyb2xsZXIuYWRkRXZl
bnRMaXN0ZW5lcignc2Nyb2xsJywgKGV2ZW50KSA9PiB7Ci0JCQkJc2hvdWxkQmUoInNjcm9sbGVy
LnNjcm9sbExlZnQiLCAiMCIpOwotCQkJCXNob3VsZEJlKCJzY3JvbGxlci5zY3JvbGxMZWZ0Iiwg
IjAiKTsKLQkJCQlmaW5pc2hKU1Rlc3QoKTsKLQkJCX0sIGZhbHNlKTsKKwkJCXNldFRpbWVvdXQo
KCkgPT4geworICAgIAkJCXNjcm9sbGVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIChldmVu
dCkgPT4geworICAgIAkJCQlzaG91bGRCZSgic2Nyb2xsZXIuc2Nyb2xsTGVmdCIsICIwIik7Cisg
ICAgCQkJCXNob3VsZEJlKCJzY3JvbGxlci5zY3JvbGxMZWZ0IiwgIjAiKTsKKyAgICAJCQkJZmlu
aXNoSlNUZXN0KCk7CisgICAgCQkJfSwgZmFsc2UpOwogCi0JCQlzZXRUaW1lb3V0KCgpID0+IHsK
IAkJCQlzY3JvbGxlci5zY3JvbGxMZWZ0ID0gLTIwMDsKIAkJCQlzY3JvbGxlci5zY3JvbGxUb3Ag
PSAtMTAwOwogCQkJfSwgMCkKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS90cnVz
dGVkLWV2ZW50LXNjb3BlZC1mbGFncy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS90cnVzdGVkLWV2ZW50LXNjb3BlZC1mbGFncy5odG1sCShyZXZpc2lvbiAy
NTIxMjMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vdHJ1c3RlZC1ldmVudC1zY29w
ZWQtZmxhZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTEgKzk2LDEzIEBACiAgICAgbG9n
KHdpbmRvdywgJ3Njcm9sbCcpOwogICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAg
ICB3aW5kb3cuc2Nyb2xsVG8oMCwgMTAwMCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgY2hlY2tGbGFncygnJywge2V2ZW50VHlwZTogJ3Njcm9sbCcsIGNv
bXBvc2VkOiBmYWxzZX0pOwotICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOwotICAg
ICAgICAgICAgdGVzdFJlc2l6ZUV2ZW50KCk7Ci0gICAgICAgIH0sIDApOworICAgICAgICByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
biAoKSB7CisgICAgICAgICAgICAgICAgY2hlY2tGbGFncygnJywge2V2ZW50VHlwZTogJ3Njcm9s
bCcsIGNvbXBvc2VkOiBmYWxzZX0pOworICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygw
LCAwKTsKKyAgICAgICAgICAgICAgICB0ZXN0UmVzaXplRXZlbnQoKTsKKyAgICAgICAgICAgIH0s
IDApOworICAgICAgICB9KTsKICAgICB9LCAwKTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtZGl2LWxhdGNoZWQtbWFpbmZyYW1lLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFz
dC1zY3JvbGwtZGl2LWxhdGNoZWQtbWFpbmZyYW1lLmh0bWwJKHJldmlzaW9uIDI1MjEyMykKKysr
IExheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL2Zhc3Qtc2Nyb2xsLWRpdi1sYXRj
aGVkLW1haW5mcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw4ICs0NywxMyBAQAogICAg
ICAgICBjaGVja0ZvclNjcm9sbCgpOwogfQogCitsZXQgZGlkQ2hlY2sgPSBmYWxzZTsKIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsKCkKIHsKKyAgICBpZiAoZGlkQ2hlY2spCisgICAgICAgIHJldHVy
bjsKKyAgICBkaWRDaGVjayA9IHRydWU7CisKICAgICAvLyBUaGUgZGl2IHNob3VsZCBub3QgaGF2
ZSBzY3JvbGxlZCBhdCBhbGwuCiAgICAgdmFyIHBhZ2VTY3JvbGxQb3NpdGlvbkFmdGVyID0gZG9j
dW1lbnQuc2Nyb2xsaW5nRWxlbWVudC5zY3JvbGxUb3A7CiAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQWZ0ZXIgPSBkaXZUYXJnZXQuc2Nyb2xsVG9wOwpAQCAtOTYsNyArMTAxLDkgQEAKICAgICAg
ICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7Ci0gICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsVGVzdCwgMCk7Cisg
ICAgICAgIHJlcXVlc3RJZGxlQ2FsbGJhY2soKCkgPT4geworICAgICAgICAgICAgc2V0VGltZW91
dChzY3JvbGxUZXN0LCAwKTsKKyAgICAgICAgfSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdmFy
IG1lc3NhZ2VMb2NhdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQnKTsKICAg
ICAgICAgdmFyIG1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382982</attachid>
            <date>2019-11-06 16:40:36 -0800</date>
            <delta_ts>2019-11-07 12:55:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203839-20191106164035.patch</filename>
            <type>text/plain</type>
            <size>23751</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MjE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTExLTA2ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEludGVncmF0ZSBzY3JvbGwgZXZl
bnQgaW50byBIVE1MNSBldmVudCBsb29wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDM4MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2ODkwOTIy
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc3Bh
dGNoIHNjcm9sbCBldmVudHMgb24gZWFjaCBwZW5kaW5nIHNjcm9sbCBldmVudCB0YXJnZXRzIGlu
c2lkZSB0aGUgdXBkYXRlLXRoZS1yZW5kZXJpbmcgc3RlcAorICAgICAgICBvZiB0aGUgZXZlbnQg
bG9vcCBhcyBzcGVjaWZpZWQgaW4gdGhlIEhUTUw1IGFuZCBDU1NPTSBWaWV3IE1vZHVsZSBzcGVj
aWZpY2F0aW9uczoKKyAgICAgICAgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvd2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5nCisgICAgICAgIGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNydW4tdGhlLXNjcm9sbC1zdGVwcworCisgICAg
ICAgIFRoZSBuZXcgYmVoYXZpb3IgYWxzbyBtYXRjaGVzIHRoYXQgb2YgQ2hyb21lIGFuZCBGaXJl
Zm94LgorCisgICAgICAgIExpa2UgcmVzaXplIGV2ZW50LCB0aGUgY3VycmVudCB2aXN1YWwgdmll
d3BvcnQgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBzcGVjaWZ5IHdoZW4gc2Nyb2xsIGV2ZW50Cisg
ICAgICAgIGlzIGRpc3BhdGNoZWQgb24gdmlzdWFsVmlld3BvcnQgaW50ZXJmYWNlOiBodHRwczov
L2dpdGh1Yi5jb20vV0lDRy92aXN1YWwtdmlld3BvcnQvaXNzdWVzLzY2CisgICAgICAgIEZvciBu
b3csIHdlIGFsd2F5cyBkaXNwYXRjaCB1cG9uIGl0IGFmdGVyIGRpc3BhdGNoaW5nIG9uIGFsbCBw
ZW5kaW5nIHNjcm9sbCBldmVudCB0YXJnZXRzLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2V2ZW50
cy9zY3JvbGwtbXVsdGlwbGUtZWxlbWVudHMtaW4tcmVuZGVyaW5nLXVwZGF0ZS5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2V2ZW50cy9zY3JvbGwtc3ViZnJhbWUtaW4tcmVuZGVyaW5nLXVwZGF0
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L3Zpc3VhbC12aWV3cG9ydC92aXN1YWwtdmlld3Bv
cnQtc2Nyb2xsLWFmdGVyLXJlc2l6ZS1pbi1zdWJmcmFtZS5odG1sCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3Jv
bGxFdmVudFRhcmdldCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldE5l
ZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnJ1blNjcm9sbFN0ZXBzKTogQWRkZWQuIFRoaXMgaW1wbGVtZW50cyBydW4gdGhl
IHNjcm9sbCBzdGVwcyBpbiBDU1MgT00gVmlldy4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEV2ZW50UXVldWU6OmVucXVldWVTY3JvbGxF
dmVudCk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2VuZFNjcm9sbEV2ZW50KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlUmVuZGVyaW5nKTogSW52b2tlIHJ1blNjcm9sbFN0ZXBz
IG9uIGVhY2ggZG9jdW1lbnQgaW4gdGhlIGZyYW1lIHRyZWUgb3JkZXIuCisgICAgICAgICogcGFn
ZS9WaXN1YWxWaWV3cG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXN1YWxWaWV3cG9ydDo6
dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlZpc3VhbFZpZXdwb3J0OjplbnF1ZXVlU2Nyb2xs
RXZlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2UvVmlzdWFsVmlld3BvcnQuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnNjcm9sbFRvKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpzY3JvbGxUbyk6CisKIDIwMTktMTEt
MDYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2NyZWVuIGxv
Y2tzIHdoaWxlIHdhdGNoaW5nIHByZXZpb3VzbHktbXV0ZWQtdGhlbi11bm11dGVkIHZpZGVvCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMDEsNiArNDAwMSw0
NyBAQCB2b2lkIERvY3VtZW50OjpydW5SZXNpemVTdGVwcygpCiAgICAgfQogfQogCit2b2lkIERv
Y3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFpbmVyTm9kZSYgdGFyZ2V0
KQoreworICAgIGlmIChtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdldHMuY29udGFpbnMoJnRhcmdl
dCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdl
dHMuaXNFbXB0eSgpKQorICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisK
KyAgICBtX3BlbmRpbmdTY3JvbGxFdmVudFRhcmdldHMuYXBwZW5kKG1ha2VXZWFrUHRyKHRhcmdl
dCkpOworfQorCit2b2lkIERvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZl
bnQoKQoreworICAgIG1fbmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50ID0gdHJ1ZTsKKyAg
ICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7Cit9CisKKy8vIGh0dHBzOi8vZHJhZnRz
LmNzc3dnLm9yZy9jc3NvbS12aWV3LyNydW4tdGhlLXNjcm9sbC1zdGVwcwordm9pZCBEb2N1bWVu
dDo6cnVuU2Nyb2xsU3RlcHMoKQoreworICAgIC8vIEZJWE1FOiBUaGUgb3JkZXIgb2YgZGlzcGF0
Y2hpbmcgaXMgbm90IHNwZWNpZmllZDogaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvdmlzdWFsLXZp
ZXdwb3J0L2lzc3Vlcy82Ni4KKyAgICBpZiAoIW1fcGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0cy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50cywgc3RyZWFtIDw8ICJE
b2N1bWVudCIgPDwgdGhpcyA8PCAic2VuZGluZyBzY3JvbGwgZXZlbnRzIHRvIHBlbmRpbmcgc2Ny
b2xsIGV2ZW50IHRhcmdldHMiKTsKKyAgICAgICAgYXV0byBjdXJyZW50VGFyZ2V0cyA9IFdURk1v
dmUobV9wZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXRzKTsKKyAgICAgICAgZm9yIChhdXRvIHRhcmdl
dCA6IGN1cnJlbnRUYXJnZXRzKSB7CisgICAgICAgICAgICBhdXRvIHByb3RlY3RlZFRhcmdldCA9
IG1ha2VSZWZQdHIodGFyZ2V0LmdldCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChwcm90ZWN0ZWRU
YXJnZXQpOworICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUYXJnZXQpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBhdXRvIGJ1YmJsZXMgPSBwcm90ZWN0ZWRUYXJnZXQt
PmlzRG9jdW1lbnROb2RlKCkgPyBFdmVudDo6Q2FuQnViYmxlOjpZZXMgOiBFdmVudDo6Q2FuQnVi
YmxlOjpObzsKKyAgICAgICAgICAgIHByb3RlY3RlZFRhcmdldC0+ZGlzcGF0Y2hFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgYnViYmxlcywgRXZlbnQ6OklzQ2Fu
Y2VsYWJsZTo6Tm8pKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobV9uZWVkc1Zpc3VhbFZp
ZXdwb3J0U2Nyb2xsRXZlbnQpIHsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50cywgc3Ry
ZWFtIDw8ICJEb2N1bWVudCIgPDwgdGhpcyA8PCAic2VuZGluZyBzY3JvbGwgZXZlbnRzIHRvIHZp
c3VhbFZpZXdwb3J0Iik7CisgICAgICAgIG1fbmVlZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZUV2ZW50
ID0gZmFsc2U7CisgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb21XaW5kb3coKSkKKyAgICAg
ICAgICAgIHdpbmRvdy0+dmlzdWFsVmlld3BvcnQoKS5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6
OklzQ2FuY2VsYWJsZTo6Tm8pKTsKKyAgICB9Cit9CisKIHZvaWQgRG9jdW1lbnQ6OmFkZEF1ZGlv
UHJvZHVjZXIoTWVkaWFQcm9kdWNlciYgYXVkaW9Qcm9kdWNlcikKIHsKICAgICBtX2F1ZGlvUHJv
ZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZp
c2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMTM2NCw2ICsxMzY0LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE5lZWRzVmlz
dWFsVmlld3BvcnRSZXNpemUoKTsKICAgICB2b2lkIHJ1blJlc2l6ZVN0ZXBzKCk7CiAKKyAgICB2
b2lkIGFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldChDb250YWluZXJOb2RlJik7CisgICAgdm9p
ZCBzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQoKTsKKyAgICB2b2lkIHJ1blNjcm9s
bFN0ZXBzKCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZEF1ZGlvUHJvZHVjZXIoTWVk
aWFQcm9kdWNlciYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQXVkaW9Qcm9kdWNl
cihNZWRpYVByb2R1Y2VyJik7CiAgICAgTWVkaWFQcm9kdWNlcjo6TWVkaWFTdGF0ZUZsYWdzIG1l
ZGlhU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhU3RhdGU7IH0KQEAgLTIwMTksNiArMjAy
Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1N0eWxlV2l0aFZpZXdwb3J0VW5pdHMgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9uZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50IHsgZmFsc2UgfTsK
ICAgICBib29sIG1fbmVlZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZUV2ZW50IHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fbmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50IHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNUaW1lclRocm90dGxpbmdFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNT
dXNwZW5kZWQgeyBmYWxzZSB9OwogCkBAIC0yMDM1LDYgKzIwNDAsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc1RlbGVwaG9uZU51bWJlclBhcnNpbmdBbGxvd2VkIHsgdHJ1ZSB9OwogI2VuZGlm
CiAKKyAgICBWZWN0b3I8V2Vha1B0cjxDb250YWluZXJOb2RlPj4gbV9wZW5kaW5nU2Nyb2xsRXZl
bnRUYXJnZXRzOworCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBIYXNoU2V0PEhUTUxN
ZWRpYUVsZW1lbnQqPiBtX21lZGlhU3RyZWFtU3RhdGVDaGFuZ2VFbGVtZW50czsKICAgICBTdHJp
bmcgbV9pZEhhc2hTYWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRR
dWV1ZS5jcHAJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEV2ZW50UXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSwzMCArODEsNiBAQCBib29sIERv
Y3VtZW50RXZlbnRRdWV1ZTo6ZW5xdWV1ZUV2ZW50KFJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVlT3JEaXNwYXRjaFNjcm9sbEV2ZW50KE5v
ZGUmIHRhcmdldCkKLXsKLSAgICBBU1NFUlQoJnRhcmdldC5kb2N1bWVudCgpID09ICZtX2RvY3Vt
ZW50KTsKLQotICAgIC8vIFBlciB0aGUgVzNDIENTU09NIFZpZXcgTW9kdWxlLCBzY3JvbGwgZXZl
bnRzIGZpcmVkIGF0IHRoZSBkb2N1bWVudCBzaG91bGQgYnViYmxlLCBvdGhlcnMgc2hvdWxkIG5v
dC4KLSAgICBlbnF1ZXVlU2Nyb2xsRXZlbnQodGFyZ2V0LCB0YXJnZXQuaXNEb2N1bWVudE5vZGUo
KSA/IEV2ZW50OjpDYW5CdWJibGU6OlllcyA6IEV2ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6
SXNDYW5jZWxhYmxlOjpObyk7Ci19Ci0KLXZvaWQgRG9jdW1lbnRFdmVudFF1ZXVlOjplbnF1ZXVl
U2Nyb2xsRXZlbnQoRXZlbnRUYXJnZXQmIHRhcmdldCwgRXZlbnQ6OkNhbkJ1YmJsZSBjYW5CdWJi
bGUsIEV2ZW50OjpJc0NhbmNlbGFibGUgY2FuY2VsYWJsZSkKLXsKLSAgICBpZiAobV9pc0Nsb3Nl
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2RvY3VtZW50Lmhhc0xpc3RlbmVyVHlw
ZShEb2N1bWVudDo6U0NST0xMX0xJU1RFTkVSKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KCFtX3RhcmdldHNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzLmFkZCgmdGFyZ2V0KS5pc05ld0VudHJ5
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWY8RXZlbnQ+IHNjcm9sbEV2ZW50ID0gRXZlbnQ6
OmNyZWF0ZShldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSk7
Ci0gICAgc2Nyb2xsRXZlbnQtPnNldFRhcmdldCgmdGFyZ2V0KTsKLSAgICBlbnF1ZXVlRXZlbnQo
V1RGTW92ZShzY3JvbGxFdmVudCkpOwotfQotCiBib29sIERvY3VtZW50RXZlbnRRdWV1ZTo6Y2Fu
Y2VsRXZlbnQoRXZlbnQmIGV2ZW50KQogewogICAgIGJvb2wgZm91bmQgPSBtX3F1ZXVlZEV2ZW50
cy5yZW1vdmUoJmV2ZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50
UXVldWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRFdmVudFF1
ZXVlLmgJKHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2
ZW50UXVldWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjYW5jZWxFdmVudChFdmVudCYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xvc2UoKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudChOb2RlJik7Ci0g
ICAgdm9pZCBlbnF1ZXVlU2Nyb2xsRXZlbnQoRXZlbnRUYXJnZXQmLCBFdmVudDo6Q2FuQnViYmxl
LCBFdmVudDo6SXNDYW5jZWxhYmxlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBlbmRpbmdFdmVu
dFRpbWVyRmlyZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJl
dmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDAyOSw4ICs0MDI5LDEyIEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpz
ZW5kU2Nyb2xsRXZlbnQoKQogewogICAgIFJlZjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFt
ZSk7CiAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwotICAgIGlmIChtX2ZyYW1lLnZp
ZXcoKSAmJiBtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+
ZXZlbnRRdWV1ZSgpLmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoKm1fZnJhbWUuZG9jdW1l
bnQoKSk7CisgICAgaWYgKCFtX2ZyYW1lLnZpZXcoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1
dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGRvY3VtZW50LT5hZGRQZW5kaW5nU2Nyb2xs
RXZlbnRUYXJnZXQoKmRvY3VtZW50KTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OnNldEZyYW1l
V2FzU2Nyb2xsZWRCeVVzZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyNTIx
MjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjkwLDExICsxMjkwLDE1IEBAIHZvaWQgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKIAogICAgIGxh
eW91dElmTmVlZGVkKCk7CiAKKyAgICAvLyBGbHVzaCBhdXRvZm9jdXMgY2FuZGlkYXRlcworCiAg
ICAgZm9yRWFjaERvY3VtZW50KFsmXShEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9j
dW1lbnQucnVuUmVzaXplU3RlcHMoKTsKICAgICB9KTsKIAotICAgIC8vIEZJWE1FOiBSdW4gdGhl
IHNjcm9sbCBzdGVwcworICAgIGZvckVhY2hEb2N1bWVudChbJl0oRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGRvY3VtZW50LnJ1blNjcm9sbFN0ZXBzKCk7CisgICAgfSk7CiAKICAgICBm
b3JFYWNoRG9jdW1lbnQoWyZdKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVu
dC5ldmFsdWF0ZU1lZGlhUXVlcmllc0FuZFJlcG9ydENoYW5nZXMoKTsgICAgICAgIApAQCAtMTMx
OSw5ICsxMzIzLDYgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgICAgICBkb2N1
bWVudC0+dXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKCp0aGlzKTsKICNlbmRpZgogCi0gICAgLy8g
RklYTUU6IEZsdXNoIGF1dG9mb2N1cyBjYW5kaWRhdGVzCi0gICAgLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3doYXR3Zy9odG1sL2lzc3Vlcy80OTkyCi0KICAgICBsYXlvdXRJZk5lZWRlZCgpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmNwcAkocmV2aXNpb24gMjUy
MTIzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9WaXN1YWxWaWV3cG9ydC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2OCwyNyArMTY4LDIwIEBAIHZvaWQgVmlzdWFsVmlld3BvcnQ6OnVwZGF0ZSgp
CiAgICAgICAgICAgICBzY2FsZSA9IHBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwogICAgIH0KIAor
ICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgp
IDogbnVsbHB0cjsKICAgICBpZiAobV9vZmZzZXRMZWZ0ICE9IG9mZnNldExlZnQgfHwgbV9vZmZz
ZXRUb3AgIT0gb2Zmc2V0VG9wKSB7Ci0gICAgICAgIGVucXVldWVTY3JvbGxFdmVudCgpOworICAg
ICAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgICAgICBkb2N1bWVudC0+c2V0TmVlZHNWaXN1YWxW
aWV3cG9ydFNjcm9sbEV2ZW50KCk7CiAgICAgICAgIG1fb2Zmc2V0TGVmdCA9IG9mZnNldExlZnQ7
CiAgICAgICAgIG1fb2Zmc2V0VG9wID0gb2Zmc2V0VG9wOwogICAgIH0KICAgICBpZiAobV93aWR0
aCAhPSB3aWR0aCB8fCBtX2hlaWdodCAhPSBoZWlnaHQgfHwgbV9zY2FsZSAhPSBzY2FsZSkgewot
ICAgICAgICBpZiAoYXV0byogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKQotICAgICAgICAgICAgZnJh
bWUtPmRvY3VtZW50KCktPnNldE5lZWRzVmlzdWFsVmlld3BvcnRSZXNpemUoKTsKKyAgICAgICAg
aWYgKGRvY3VtZW50KQorICAgICAgICAgICAgZG9jdW1lbnQtPnNldE5lZWRzVmlzdWFsVmlld3Bv
cnRSZXNpemUoKTsKICAgICAgICAgbV93aWR0aCA9IHdpZHRoOwogICAgICAgICBtX2hlaWdodCA9
IGhlaWdodDsKICAgICAgICAgbV9zY2FsZSA9IHNjYWxlOwogICAgIH0KIH0KIAotdm9pZCBWaXN1
YWxWaWV3cG9ydDo6ZW5xdWV1ZVNjcm9sbEV2ZW50KCkKLXsKLSAgICBhdXRvKiBmcmFtZSA9IHRo
aXMtPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZnJh
bWUtPmRvY3VtZW50KCktPmV2ZW50UXVldWUoKS5lbnF1ZXVlU2Nyb2xsRXZlbnQoKnRoaXMsIEV2
ZW50OjpDYW5CdWJibGU6Ok5vLCBFdmVudDo6SXNDYW5jZWxhYmxlOjpObyk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3Bv
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Zpc3VhbFZpZXdwb3J0LmgJ
KHJldmlzaW9uIDI1MjEyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVmlzdWFsVmlld3BvcnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjAsOSArNjAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVm
RXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0
KCkgZmluYWwgeyBkZXJlZigpOyB9CiAKLSAgICB2b2lkIGVucXVldWVSZXNpemVFdmVudCgpOwot
ICAgIHZvaWQgZW5xdWV1ZVNjcm9sbEV2ZW50KCk7Ci0KICAgICB2b2lkIHVwZGF0ZUZyYW1lTGF5
b3V0KCkgY29uc3Q7CiAKICAgICBkb3VibGUgbV9vZmZzZXRMZWZ0IHsgMCB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAyNTIxMjMpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjczLDcgKzI2NzMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhjb25zdCBT
Y3JvbGxQCiAKICAgICAvLyBTY2hlZHVsZSB0aGUgc2Nyb2xsIGFuZCBzY3JvbGwtcmVsYXRlZCBE
T00gZXZlbnRzLgogICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIoKS5lbGVtZW50
KCkpCi0gICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCkuZXZlbnRRdWV1ZSgpLmVucXVldWVPckRp
c3BhdGNoU2Nyb2xsRXZlbnQoKmVsZW1lbnQpOworICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgp
LmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldCgqZWxlbWVudCk7CiAKICAgICBpZiAoc2Nyb2xs
c092ZXJmbG93KCkpCiAgICAgICAgIHZpZXcuZnJhbWVWaWV3KCkuZGlkQ2hhbmdlU2Nyb2xsT2Zm
c2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3Bw
CShyZXZpc2lvbiAyNTIxMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIFJlbmRlckxp
c3RCb3g6OnNjcm9sbFRvKGludCBuZXdPZmZzCiAgICAgY29tcHV0ZUZpcnN0SW5kZXhlc1Zpc2li
bGVJblBhZGRpbmdUb3BCb3R0b21BcmVhcygpOwogCiAgICAgcmVwYWludCgpOwotICAgIGRvY3Vt
ZW50KCkuZXZlbnRRdWV1ZSgpLmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoc2VsZWN0RWxl
bWVudCgpKTsKKyAgICBkb2N1bWVudCgpLmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldChzZWxl
Y3RFbGVtZW50KCkpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckxpc3RCb3g6Oml0ZW1IZWlnaHQo
KSBjb25zdApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjUyMTIzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMTEtMDYgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50ZWdyYXRlIHNjcm9sbCBldmVu
dCBpbnRvIEhUTUw1IGV2ZW50IGxvb3AKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwMzgzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTY4OTA5MjI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
dGVzdHMgdG8gdGVzdCB0aGUgdGltaW5nIGF0IHdoaWNoIHNjcm9sbCBldmVudHMgYXJlIGZpcmVk
IGFjcm9zcyBtdWx0aXBsZSBlbGVtZW50cyBhbmQgZG9jdW1lbnRzLAorICAgICAgICBhbmQgd2l0
aCB2aXN1YWxWaWV3cG9ydCwgYW5kIHVwZGF0ZWQgdGhlIGV4aXN0aW5nIHRlc3RzIHRvIHdvcmsg
d2l0aCB0aGUgbmV3IHRpbWluZy4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL292ZXJm
bG93LXNjcm9sbC13aGlsZS1zZWxlY3RpbmctdGV4dC5odG1sOgorICAgICAgICAqIGZhc3QvZXZl
bnRzL3Njcm9sbC1tdWx0aXBsZS1lbGVtZW50cy1pbi1yZW5kZXJpbmctdXBkYXRlLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc2Nyb2xsLW11bHRpcGxlLWVsZW1l
bnRzLWluLXJlbmRlcmluZy11cGRhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVu
dHMvc2Nyb2xsLXN1YmZyYW1lLWluLXJlbmRlcmluZy11cGRhdGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3JvbGwtc3ViZnJhbWUtaW4tcmVuZGVyaW5nLXVw
ZGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9wcm9ncmFtbWF0aWMt
c2Nyb2xsLXRvLW5lZ2F0aXZlLW9mZnNldC5odG1sOgorICAgICAgICAqIGZhc3Qvc2hhZG93LWRv
bS90cnVzdGVkLWV2ZW50LXNjb3BlZC1mbGFncy5odG1sOgorICAgICAgICAqIGZhc3QvdmlzdWFs
LXZpZXdwb3J0L3Zpc3VhbC12aWV3cG9ydC1zY3JvbGwtYWZ0ZXItcmVzaXplLWluLXN1YmZyYW1l
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC92aXN1YWwtdmlld3BvcnQvdmlz
dWFsLXZpZXdwb3J0LXNjcm9sbC1hZnRlci1yZXNpemUtaW4tc3ViZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtZGl2LWxhdGNo
ZWQtbWFpbmZyYW1lLmh0bWw6CisKIDIwMTktMTEtMDUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgTGF5b3V0IHRlc3Qgd2Vic2l0ZS1kYXRhLXJl
bW92YWwtZm9yLXNpdGUtbmF2aWdhdGVkLXRvLXdpdGgtbGluay1kZWNvcmF0aW9uLmh0bWwgaXMg
YSBmbGFreSBmYWlsdXJlCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9vdmVy
Zmxvdy1zY3JvbGwtd2hpbGUtc2VsZWN0aW5nLXRleHQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9vdmVyZmxvdy1zY3JvbGwtd2hpbGUtc2VsZWN0aW5n
LXRleHQuaHRtbAkocmV2aXNpb24gMjUyMTIzKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vb3ZlcmZsb3ctc2Nyb2xsLXdoaWxlLXNlbGVjdGluZy10ZXh0Lmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDExICszMCwxMyBAQCBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVz
IHRoYXQgd2UgCiAKIGNvbnN0IHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dCIp
OwogdGV4dC5zY3JvbGxUbygwLCAxMDAwKTsKLWFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9
PiB0ZXh0LnNjcm9sbFRvKDAsIDUwMCkpOwotdGV4dC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwi
LCAoKSA9PiB7Ci0gICAgdGV4dC50ZXh0Q29udGVudCA9ICIiOwotICAgIHRlc3RQYXNzZWQoIlN1
Y2Nlc3NmdWxseSByZW1vdmVkIHRoZSB0ZXh0LiIpOwotICAgIGZpbmlzaEpTVGVzdCgpOworYWRk
RXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHsKKyAgICB0ZXh0LmFkZEV2ZW50TGlzdGVuZXIo
InNjcm9sbCIsICgpID0+IHsKKyAgICAgICAgdGV4dC50ZXh0Q29udGVudCA9ICIiOworICAgICAg
ICB0ZXN0UGFzc2VkKCJTdWNjZXNzZnVsbHkgcmVtb3ZlZCB0aGUgdGV4dC4iKTsKKyAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgfSk7CisgICAgdGV4dC5zY3JvbGxUbygwLCA1MDApOwogfSk7
CiA8L3NjcmlwdD4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Njcm9s
bC1zdWJmcmFtZS1pbi1yZW5kZXJpbmctdXBkYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JvbGwtc3ViZnJhbWUtaW4tcmVuZGVyaW5nLXVw
ZGF0ZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvc2Nyb2xsLXN1YmZyYW1lLWluLXJlbmRlcmluZy11cGRhdGUtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYgQEAKK1RoaXMgdGVzdHMgdGhhdCBzY3JvbGwgZXZlbnQg
aXMgZGlzcGF0Y2hlZCBpbiB0aGUgdXBkYXRlLXRoZS1yZW5kZXJpbmcgc3RlcCBpbiB0aGUgZXZl
bnQgbG9vcCBhY3Jvc3MgYWxsIHJlbGV2YW50IGZyYW1lcworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworaWZyYW1lQi5jb250ZW50V2luZG93LnNjcm9sbFRvKDAsIDEwMDApOyB1cGRh
dGVMYXlvdXQoaWZyYW1lQikKK2lmcmFtZUEuY29udGVudFdpbmRvdy5zY3JvbGxUbygwLCAxMDAw
KTsgdXBkYXRlTGF5b3V0KGlmcmFtZUEpCitpZnJhbWVBQS5jb250ZW50V2luZG93LnNjcm9sbFRv
KDAsIDEwMDApOyB1cGRhdGVMYXlvdXQoaWZyYW1lQUEpCitQQVNTIGxvZ3MubGVuZ3RoIGlzIDAK
K0FmdGVyIHJlcXVlc3RBbmltYXRpb25GcmFtZQorUEFTUyBsb2dzLmxlbmd0aCBpcyAzCitQQVNT
IGxvZ3Muam9pbigiLCAiKSBpcyAiQSwgQUEsIEIiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2Nyb2xsLXN1YmZyYW1lLWluLXJlbmRlcmluZy11cGRhdGUuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JvbGwtc3ViZnJhbWUtaW4tcmVuZGVyaW5nLXVwZGF0
ZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Njcm9sbC1z
dWJmcmFtZS1pbi1yZW5kZXJpbmctdXBkYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0
aW9uKCdUaGlzIHRlc3RzIHRoYXQgc2Nyb2xsIGV2ZW50IGlzIGRpc3BhdGNoZWQgaW4gdGhlIHVw
ZGF0ZS10aGUtcmVuZGVyaW5nIHN0ZXAgaW4gdGhlIGV2ZW50IGxvb3AgYWNyb3NzIGFsbCByZWxl
dmFudCBmcmFtZXMnKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiBjcmVhdGVJ
ZnJhbWUocGFyZW50RG9jdW1lbnQpCit7CisgICAgY29uc3QgaWZyYW1lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgaWZyYW1lLnN0eWxlLndpZHRoID0gJzEwMHB4JzsK
KyAgICBpZnJhbWUuc3R5bGUuaGVpZ2h0ID0gJzEwMHB4JzsKKyAgICBwYXJlbnREb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7CisgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5ib2R5
LmlubmVySFRNTCA9ICc8c3R5bGU+IGJvZHkgeyBoZWlnaHQ6IDIwMDBweDsgfSA8L3N0eWxlPjxz
cGFuPmhlbGxvLCB3b3JsZDwvc3Bhbj4nOworICAgIHJldHVybiBpZnJhbWU7Cit9CisKK2Z1bmN0
aW9uIHVwZGF0ZUxheW91dChpZnJhbWUpCit7CisgICAgaWZyYW1lLmNvbnRlbnREb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCJzcGFuIikuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Cit9CisKK2NvbnN0
IGlmcmFtZUEgPSBjcmVhdGVJZnJhbWUoZG9jdW1lbnQpOworY29uc3QgaWZyYW1lQUEgPSBjcmVh
dGVJZnJhbWUoaWZyYW1lQS5jb250ZW50RG9jdW1lbnQpOworY29uc3QgaWZyYW1lQiA9IGNyZWF0
ZUlmcmFtZShkb2N1bWVudCk7CisKK2NvbnN0IGxvZ3MgPSBbXTsKK3JlcXVlc3RBbmltYXRpb25G
cmFtZSgoKSA9PiB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGlmcmFtZUFBLmNv
bnRlbnREb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoKSA9PiBsb2dzLnB1c2go
J0FBJykpOworICAgICAgICBpZnJhbWVBLmNvbnRlbnREb2N1bWVudC5hZGRFdmVudExpc3RlbmVy
KCdzY3JvbGwnLCAoKSA9PiBsb2dzLnB1c2goJ0EnKSk7CisgICAgICAgIGlmcmFtZUIuY29udGVu
dERvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsICgpID0+IGxvZ3MucHVzaCgnQicp
KTsKKworICAgICAgICBldmFsQW5kTG9nKCdpZnJhbWVCLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8o
MCwgMTAwMCk7IHVwZGF0ZUxheW91dChpZnJhbWVCKScpOworICAgICAgICBldmFsQW5kTG9nKCdp
ZnJhbWVBLmNvbnRlbnRXaW5kb3cuc2Nyb2xsVG8oMCwgMTAwMCk7IHVwZGF0ZUxheW91dChpZnJh
bWVBKScpOworICAgICAgICBldmFsQW5kTG9nKCdpZnJhbWVBQS5jb250ZW50V2luZG93LnNjcm9s
bFRvKDAsIDEwMDApOyB1cGRhdGVMYXlvdXQoaWZyYW1lQUEpJyk7CisgICAgICAgIHNob3VsZEJl
KCdsb2dzLmxlbmd0aCcsICcwJyk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAgICAgICBkZWJ1
ZygnQWZ0ZXIgcmVxdWVzdEFuaW1hdGlvbkZyYW1lJyk7CisgICAgICAgICAgICAgICAgc2hvdWxk
QmUoJ2xvZ3MubGVuZ3RoJywgJzMnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ2xvZ3Muam9pbigiLCAiKScsICdBLCBBQSwgQicpOworICAgICAgICAgICAgICAgIGlm
cmFtZUEucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgaWZyYW1lQi5yZW1vdmUoKTsKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LCAw
KTsKKyAgICB9LCAwKTsKK30pOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL3Byb2dyYW1tYXRpYy1zY3JvbGwtdG8tbmVnYXRp
dmUtb2Zmc2V0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
cHJvZ3JhbW1hdGljLXNjcm9sbC10by1uZWdhdGl2ZS1vZmZzZXQuaHRtbAkocmV2aXNpb24gMjUy
MTIzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvcHJvZ3JhbW1hdGljLXNjcm9sbC10
by1uZWdhdGl2ZS1vZmZzZXQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTMgKzI1LDEzIEBA
CiAgICAgICAgICAgICBzY3JvbGxlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY3JvbGxl
cicpOwogCQkJc2Nyb2xsZXIuc2Nyb2xsTGVmdCA9IDUwOwogCi0JCQlzY3JvbGxlci5hZGRFdmVu
dExpc3RlbmVyKCdzY3JvbGwnLCAoZXZlbnQpID0+IHsKLQkJCQlzaG91bGRCZSgic2Nyb2xsZXIu
c2Nyb2xsTGVmdCIsICIwIik7Ci0JCQkJc2hvdWxkQmUoInNjcm9sbGVyLnNjcm9sbExlZnQiLCAi
MCIpOwotCQkJCWZpbmlzaEpTVGVzdCgpOwotCQkJfSwgZmFsc2UpOwotCiAJCQlzZXRUaW1lb3V0
KCgpID0+IHsKKyAgICAJCQlzY3JvbGxlci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCAoZXZl
bnQpID0+IHsKKyAgICAJCQkJc2hvdWxkQmUoInNjcm9sbGVyLnNjcm9sbExlZnQiLCAiMCIpOwor
ICAgIAkJCQlzaG91bGRCZSgic2Nyb2xsZXIuc2Nyb2xsTGVmdCIsICIwIik7CisgICAgCQkJCWZp
bmlzaEpTVGVzdCgpOworICAgIAkJCX0sIGZhbHNlKTsKKwogCQkJCXNjcm9sbGVyLnNjcm9sbExl
ZnQgPSAtMjAwOwogCQkJCXNjcm9sbGVyLnNjcm9sbFRvcCA9IC0xMDA7CiAJCQl9LCAwKQpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3RydXN0ZWQtZXZlbnQtc2NvcGVkLWZsYWdz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3RydXN0ZWQt
ZXZlbnQtc2NvcGVkLWZsYWdzLmh0bWwJKHJldmlzaW9uIDI1MjEyMykKKysrIExheW91dFRlc3Rz
L2Zhc3Qvc2hhZG93LWRvbS90cnVzdGVkLWV2ZW50LXNjb3BlZC1mbGFncy5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC05NiwxMSArOTYsMTMgQEAgZnVuY3Rpb24gdGVzdFNjcm9sbEV2ZW50KCkgewog
ICAgIGxvZyh3aW5kb3csICdzY3JvbGwnKTsKICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsK
ICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDEwMDApOwotICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgIGNoZWNrRmxhZ3MoJycsIHtldmVudFR5cGU6ICdzY3Jv
bGwnLCBjb21wb3NlZDogZmFsc2V9KTsKLSAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAw
KTsKLSAgICAgICAgICAgIHRlc3RSZXNpemVFdmVudCgpOwotICAgICAgICB9LCAwKTsKKyAgICAg
ICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgIGNoZWNrRmxhZ3MoJycsIHtldmVudFR5cGU6
ICdzY3JvbGwnLCBjb21wb3NlZDogZmFsc2V9KTsKKyAgICAgICAgICAgICAgICB3aW5kb3cuc2Ny
b2xsVG8oMCwgMCk7CisgICAgICAgICAgICAgICAgdGVzdFJlc2l6ZUV2ZW50KCk7CisgICAgICAg
ICAgICB9LCAwKTsKKyAgICAgICAgfSk7CiAgICAgfSwgMCk7CiB9CiAKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Zpc3VhbC12aWV3cG9ydC1zY3JvbGwtYWZ0ZXItcmVz
aXplLWluLXN1YmZyYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3Zpc3VhbC12aWV3cG9ydC92aXN1YWwtdmlld3BvcnQtc2Nyb2xsLWFmdGVyLXJlc2l6ZS1p
bi1zdWJmcmFtZS1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFz
dC92aXN1YWwtdmlld3BvcnQvdmlzdWFsLXZpZXdwb3J0LXNjcm9sbC1hZnRlci1yZXNpemUtaW4t
c3ViZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOSBAQAorVGVz
dHMgdGhhdCBzY3JvbGwgZXZlbnQgb24gdmlzdWFsVmlld3BvcnQgZmlyZXMgYWZ0ZXIgcmVzaXpl
IGV2ZW50IGluIGEgc3ViZnJhbWUuIFRvIG1hbnVhbGx5IHRlc3QsIHBpbmNoIHpvb20uCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC92aXN1YWwtdmll
d3BvcnQvdmlzdWFsLXZpZXdwb3J0LXNjcm9sbC1hZnRlci1yZXNpemUtaW4tc3ViZnJhbWUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Zpc3VhbC12aWV3cG9ydC92aXN1YWwt
dmlld3BvcnQtc2Nyb2xsLWFmdGVyLXJlc2l6ZS1pbi1zdWJmcmFtZS5odG1sCShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvdmlzdWFsLXZpZXdwb3J0L3Zpc3VhbC12aWV3cG9ydC1z
Y3JvbGwtYWZ0ZXItcmVzaXplLWluLXN1YmZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5IHN0eWxlPSJ3aWR0aDog
MjAwMHB4OyBoZWlnaHQ6IDIwMDBweDsiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0
IHNjcm9sbCBldmVudCBvbiB2aXN1YWxWaWV3cG9ydCBmaXJlcyBhZnRlciByZXNpemUgZXZlbnQg
aW4gYSBzdWJmcmFtZS4gVG8gbWFudWFsbHkgdGVzdCwgcGluY2ggem9vbS4nKTsKKworY29uc3Qg
anNUZXN0SXNBc3luYyA9IHRydWU7CisKK2NvbnN0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2lmcmFtZScpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworaWZy
YW1lLmNvbnRlbnREb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8c3Bhbj5oaTwvc3Bhbj4nOwor
ICAgICAgICAKK2FzeW5jIGZ1bmN0aW9uIHpvb20oKSB7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAg
ICAgICAgIHdpbmRvdy52aXN1YWxWaWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBy
ZXNvbHZlKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChy
ZXNvbHZlKSA9PiB7CisgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYChmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHVpQ29udHJvbGxlci56b29tVG9TY2FsZSgke3BhZ2VTY2FsZUZhY3Rv
cn0sIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENv
bXBsZXRlKHVpQ29udHJvbGxlci56b29tU2NhbGUpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0pKCk7YCwgcmVzb2x2ZSk7CisgICAgfSk7Cit9CisKK2NvbnN0IGV2ZW50cyA9IFtdOworCit3
aW5kb3cub25sb2FkID0gYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIHJlcXVlc3RBbmltYXRpb25G
cmFtZShhc3luYyAoKSA9PiB7CisgICAgICAgIGF3YWl0IHpvb20oKTsKKworICAgICAgICBpZnJh
bWUuY29udGVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCAoKSA9PiB7CisgICAg
ICAgICAgICBldmVudHMucHVzaCgncmVzaXplJyk7CisgICAgICAgIH0pOworICAgICAgICB3aW5k
b3cudmlzdWFsVmlld3BvcnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4geworICAg
ICAgICAgICAgZXZlbnRzLnB1c2goJ3Njcm9sbCcpOworICAgICAgICB9KTsKKyAgICAgICAgd2lu
ZG93LnNjcm9sbFRvKDEwMDAsIDEwMDApOworCisgICAgICAgIGlmcmFtZS5zdHlsZS53aWR0aCA9
ICcxMDBweCc7CisgICAgICAgIGlmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwcHgnOworICAgICAg
ICB3aW5kb3cucmVjdCA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3Bh
bicpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworCisgICAgICAgIHJlcXVlc3RBbmltYXRpb25G
cmFtZSgoKSA9PiB7CisgICAgICAgICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50cy5q
b2luKCIsICIpJywgJ3Jlc2l6ZSwgc2Nyb2xsJyk7CisgICAgICAgIH0pOworICAgIH0pOworfTsK
KworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9mYXN0LXNjcm9sbC1kaXYtbGF0Y2hlZC1tYWluZnJhbWUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9mYXN0LXNj
cm9sbC1kaXYtbGF0Y2hlZC1tYWluZnJhbWUuaHRtbAkocmV2aXNpb24gMjUyMTIzKQorKysgTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvZmFzdC1zY3JvbGwtZGl2LWxhdGNoZWQt
bWFpbmZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDEzIEBAIGZ1bmN0aW9u
IG9uUGFnZVNjcm9sbCgpCiAgICAgICAgIGNoZWNrRm9yU2Nyb2xsKCk7CiB9CiAKK2xldCBkaWRD
aGVjayA9IGZhbHNlOwogZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGwoKQogeworICAgIGlmIChkaWRD
aGVjaykKKyAgICAgICAgcmV0dXJuOworICAgIGRpZENoZWNrID0gdHJ1ZTsKKwogICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIG5vdCBoYXZlIHNjcm9sbGVkIGF0IGFsbC4KICAgICB2YXIgcGFnZVNjcm9s
bFBvc2l0aW9uQWZ0ZXIgPSBkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcDsKICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25BZnRlciA9IGRpdlRhcmdldC5zY3JvbGxUb3A7CkBAIC05
Niw3ICsxMDEsOSBAQCBmdW5jdGlvbiBzZXR1cFRvcExldmVsKCkKICAgICAgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CiAKICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7Ci0gICAgICAgIHNldFRpbWVvdXQoc2Nyb2xsVGVzdCwgMCk7CisgICAgICAgIHJlcXVl
c3RJZGxlQ2FsbGJhY2soKCkgPT4geworICAgICAgICAgICAgc2V0VGltZW91dChzY3JvbGxUZXN0
LCAwKTsKKyAgICAgICAgfSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgdmFyIG1lc3NhZ2VMb2Nh
dGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYXJlbnQnKTsKICAgICAgICAgdmFyIG1l
c3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
</data>
<flag name="review"
          id="398742"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>