<?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>224174</bug_id>
          
          <creation_ts>2021-04-04 17:24:16 -0700</creation_ts>
          <short_desc>Assert failure in isCloneInShadowTreeOfSVGUseElement</short_desc>
          <delta_ts>2021-04-06 12:54:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746882</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-04 17:24:16 -0700</bug_when>
    <thetext>e.g.

frame #0: JavaScriptCore`WTFCrash+14
frame #1: WebCore`WTFCrashWithInfo(int, char const*, char const*, int)+27
frame #2: WebCore`WebCore::isCloneInShadowTreeOfSVGUseElement(WebCore::Node&amp;, WebCore::EventTarget&amp;)+215
frame #3: WebCore`WebCore::JSLazyEventListener::checkValidityForEventTarget(WebCore::EventTarget&amp;)+215
frame #4: WebCore`WebCore::EventTarget::addEventListener(WTF::AtomString const&amp;, WTF::Ref&lt;WebCore::EventListener, WTF::RawPtrTraits&lt;WebCore::EventListener&gt; &gt;&amp;&amp;, WebCore::AddEventListenerOptions const&amp;)+57
frame #5: WebCore`WebCore::tryAddEventListener(WebCore::Node*, WTF::AtomString const&amp;, WTF::Ref&lt;WebCore::EventListener, WTF::RawPtrTraits&lt;WebCore::EventListener&gt; &gt;&amp;&amp;, WebCore::AddEventListenerOptions const&amp;)+74
frame #6: WebCore`WebCore::Node::addEventListener(WTF::AtomString const&amp;, WTF::Ref&lt;WebCore::EventListener, WTF::RawPtrTraits&lt;WebCore::EventListener&gt; &gt;&amp;&amp;, WebCore::AddEventListenerOptions const&amp;)+69
frame #7: WebCore`WebCore::SVGElement::addEventListener(WTF::AtomString const&amp;, WTF::Ref&lt;WebCore::EventListener, WTF::RawPtrTraits&lt;WebCore::EventListener&gt; &gt;&amp;&amp;, WebCore::AddEventListenerOptions const&amp;)+611
frame #8: WebCore`WebCore::EventTarget::setAttributeEventListener(WTF::AtomString const&amp;, WTF::RefPtr&lt;WebCore::EventListener, WTF::RawPtrTraits&lt;WebCore::EventListener&gt;, WTF::DefaultRefDerefTraits&lt;WebCore::EventListener&gt; &gt;&amp;&amp;, WebCore::DOMWrapperWorld&amp;)+502
frame #9: WebCore`WebCore::Element::setAttributeEventListener(WTF::AtomString const&amp;, WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;)+98
frame #10: WebCore`WebCore::SVGElement::parseAttribute(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;)+393
frame #11: WebCore`WebCore::SVGGraphicsElement::parseAttribute(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;)+169
frame #12: WebCore`WebCore::SVGTextContentElement::parseAttribute(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;)+315
frame #13: WebCore`WebCore::SVGTextPathElement::parseAttribute(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;)+430
frame #14: WebCore`WebCore::Element::attributeChanged(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;, WTF::AtomString const&amp;, WebCore::Element::AttributeModificationReason)+1131
frame #15: WebCore`WebCore::StyledElement::attributeChanged(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;, WTF::AtomString const&amp;, WebCore::Element::AttributeModificationReason)+224
frame #16: WebCore`WebCore::SVGElement::attributeChanged(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;, WTF::AtomString const&amp;, WebCore::Element::AttributeModificationReason)+58
frame #17: WebCore`WebCore::Element::didAddAttribute(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;)+68
frame #18: WebCore`WebCore::Element::addAttributeInternal(WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;, WebCore::Element::SynchronizationOfLazyAttribute)+192
frame #19: WebCore`WebCore::Element::setAttributeInternal(unsigned int, WebCore::QualifiedName const&amp;, WTF::AtomString const&amp;, WebCore::Element::SynchronizationOfLazyAttribute)+204
frame #20: WebCore`WebCore::Element::setAttribute(WTF::AtomString const&amp;, WTF::AtomString const&amp;)+389

&lt;rdar://75970108&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746883</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-04 17:24:36 -0700</bug_when>
    <thetext>There are two problems here.
1. addEventListener is called on a SVG instance that had already been disconnected from use element’s shadow tree but not yet deleted so its correspondingElement hasn’t been cleared yet.
2. DOM mutation events are fired on the corresponding elements of instances inside use element’s shadow tree when there is an EventQueueScope in the stack as in the case of document.execComand. This is because when the instants are cloned and inserted under its parent, isInShadowTree() is false since the nodes had not been inserted into the shadow tree at that moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746884</commentid>
    <comment_count>2</comment_count>
      <attachid>425137</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-04 17:48:43 -0700</bug_when>
    <thetext>Created attachment 425137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746885</commentid>
    <comment_count>3</comment_count>
      <attachid>425138</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-04 17:51:22 -0700</bug_when>
    <thetext>Created attachment 425138
Fixed change logs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746954</commentid>
    <comment_count>4</comment_count>
      <attachid>425138</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-05 09:01:33 -0700</bug_when>
    <thetext>Comment on attachment 425138
Fixed change logs

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

&gt; Source/WebCore/dom/ScopedEventQueue.cpp:59
&gt; +    if (event.event-&gt;eventInterface() == MutationEventInterfaceType &amp;&amp; event.target-&gt;isInShadowTree())

All shadow trees? The other half of this patch is specific to user agent shadow trees. Do we have tests to verify these events don’t get dispatched for the various types of shadow trees? Should we? Is this just an optimization or an important correctness fix?

This seems to have an effect beyond what is mentioned in the change log.

&gt; Source/WebCore/svg/SVGElement.cpp:255
&gt; +        if (downcast&lt;ShadowRoot&gt;(oldParentOfRemovedTree).mode() == ShadowRootMode::UserAgent)

I would have used just one longer if statement instead of two nested if statements.

Separately, a helper function named isUserAgenrShadowRoot would make this easier to read and would be consistent with functions like isInUserAgentShadowTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747166</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-05 16:49:14 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 425138 [details]
&gt; Fixed change logs
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425138&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ScopedEventQueue.cpp:59
&gt; &gt; +    if (event.event-&gt;eventInterface() == MutationEventInterfaceType &amp;&amp; event.target-&gt;isInShadowTree())
&gt; 
&gt; All shadow trees? The other half of this patch is specific to user agent
&gt; shadow trees. Do we have tests to verify these events don’t get dispatched
&gt; for the various types of shadow trees? Should we? Is this just an
&gt; optimization or an important correctness fix?

We do for mutation events in general (we don&apos;t fire any DOM mutation events inside a shadow tree regardless of its mode). I guess we can add a test for non-UA shadow root as well.

&gt; &gt; Source/WebCore/svg/SVGElement.cpp:255
&gt; &gt; +        if (downcast&lt;ShadowRoot&gt;(oldParentOfRemovedTree).mode() == ShadowRootMode::UserAgent)
&gt; 
&gt; I would have used just one longer if statement instead of two nested if
&gt; statements.
&gt; 
&gt; Separately, a helper function named isUserAgenrShadowRoot would make this
&gt; easier to read and would be consistent with functions like
&gt; isInUserAgentShadowTree.

Good point. Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747258</commentid>
    <comment_count>6</comment_count>
      <attachid>425234</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-05 20:28:03 -0700</bug_when>
    <thetext>Created attachment 425234
Added a test for regular shadow tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747259</commentid>
    <comment_count>7</comment_count>
      <attachid>425235</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-05 20:28:48 -0700</bug_when>
    <thetext>Created attachment 425235
Added a test for regular shadow tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747473</commentid>
    <comment_count>8</comment_count>
      <attachid>425235</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-06 09:42:48 -0700</bug_when>
    <thetext>Comment on attachment 425235
Added a test for regular shadow tree

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        The bug was caused by two related but disticnt issues:

Typo in comment here: &quot;distinct&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747582</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-06 12:51:53 -0700</bug_when>
    <thetext>Committed r275543 (236199@main): &lt;https://commits.webkit.org/236199@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747584</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-06 12:54:37 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Comment on attachment 425235 [details]
&gt; Added a test for regular shadow tree
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425235&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        The bug was caused by two related but disticnt issues:
&gt; 
&gt; Typo in comment here: &quot;distinct&quot;

Fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425137</attachid>
            <date>2021-04-04 17:48:43 -0700</date>
            <delta_ts>2021-04-04 17:51:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224174-20210404174842.patch</filename>
            <type>text/plain</type>
            <size>12587</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA5ZmRjYzBkZWVkYmI0
NDFlOGI3MWEyZTliYjQ5OTliY2IwZjQ2Ni4uZDMzZjBjYTMwZjBkN2Q5YTBmMDc3MzZmZGNjYTky
ZmU1OGM0M2VhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA0LTA0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFzc2VydCBmYWlsdXJlIGlu
IGlzQ2xvbmVJblNoYWRvd1RyZWVPZlNWR1VzZUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSByZWxhdGVk
IGJ1dCBkaXN0aWNudCBpc3N1ZXM6CisgICAgICAgIDEuIEFuIGVsZW1lbnQgY2FuIGhhdmUgYW4g
aW5zdGFuY2UgdGhhdCBoYWQgYmVlbiByZW1vdmVkIGZyb20gYSB1c2UgZWxlbWVudCdzIHNoYWRv
dyB0cmVlCisgICAgICAgICAgIGJ1dCBub3QgeWV0IGRlbGV0ZWQuIEJlY2F1c2UgU1ZHRWxlbWVu
dCBjbGVhcnMgaXRzIGNvcnJlc3BvbmRpbmdFbGVtZW50IGluIGl0cyBkZXN0cnVjdG9yLAorICAg
ICAgICAgICB3aGVuIGFkZEV2ZW50TGlzdGVuZXIgaXMgY2FsbGVkIG9uIHN1Y2ggYW4gZWxlbWVu
dCwgaXQgY2FuIHRyeSB0byBhZGQgYW4gZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgICAgb24gdGhp
cyBpbnN0YW5jZSB3aGljaCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBnZXR0aW5nIGRpc3Bvc2VkLgor
ICAgICAgICAyLiBET00gbXV0YXRpb24gZXZlbnRzIGNhbiBiZSBmaXJlZCBvbiB0aGUgY29ycmVz
cG9uZGluZyBlbGVtZW50IG9mIGFuIGluc3RhbmNlIGluc2lkZQorICAgICAgICAgICBhIHVzZSBl
bGVtZW504oCZcyBzaGFkb3cgdHJlZSB3aXRoIEV2ZW50UXVldWVTY29wZSBpbiB0aGUgc3RhY2sg
d2hlbiB0aGUgZXZlbnQgaXMgc2NoZWR1ZWxkCisgICAgICAgICAgIHZpYSBOb2RlOjpkaXNwYXRj
aFNjb3BlZEV2ZW50LCBlLmcuIGJlY2F1c2UgdXNlIGVsZW1lbnQncyBzaGFkb3cgdHJlZSB3YXMg
dXBkYXRlZCBkdXJpbmcKKyAgICAgICAgICAgYSBzdHlsZSB1cGRhdGUgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBkb2N1bWVudC5leGVjQ29tYW5kLiBCZWNhdXNlIFNWR1VzZUVsZW1lbnQ6OmNsb25lVGFy
Z2V0CisgICAgICAgICAgIGNvbnN0cnVjdHMgdGhlIHNoYWRvdyB0cmVlIGJ5IGNsb25pbmcgdGhl
IG9yaWdpbmFsIHRyZWUgd2hpbGUgaXQncyBkaXNjb25uZWN0ZWQgZnJvbSB0aGUKKyAgICAgICAg
ICAgZG9jdW1lbnQsIE5vZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQgc2VlcyBpc0lu
U2hhZG93VHJlZSgpIHRvIGJlIGZhbHNlIGFuZCBoYXBwaWx5CisgICAgICAgICAgIHRyaWVzIHRv
IGRpc3BhY2ggRE9NU3VidHJlZU1vZGlmaWVkIGV2ZW50IHVzaW5nIE5vZGU6OmRpc3BhdGNoU2Nv
cGVkRXZlbnQuIFRoaXMgd29ya3MgZmluZQorICAgICAgICAgICB3aGVuIHRoZSBldmVudCBpcyBk
aXNwYXRjaGVkIHN5bmNocm9ub3VzbHkgc2luY2UgdGhlc2UgZWxlbWVudHMgaGFkIG5ldmVyIGJl
ZW4gZXhwb3NlZCB0bworICAgICAgICAgICBhbnkgc2NyaXB0cyB5ZXQgYW5kIHRoZXkgYXJlIHN0
aWxsIGRpc2Nvbm5lY3RlZCBzbyBubyBzY3JpcHRzIGhhdmUgaGFkIGFuIG9wcG9ydHVuaXR5IHRv
CisgICAgICAgICAgIGF0dGFjaCBhbiBldmVudCBsaXN0ZW5lci4gQnV0IHdoZW4gRXZlbnRRdWV1
ZVNjb3BlIGluIHRoZSBzdGFjaywgTm9kZTo6ZGlzcGF0Y2hTY29wZWRFdmVudAorICAgICAgICAg
ICB3aWxsIHF1ZXVlIHVwIHRoZSBldmVudCBhbmQgZmlyZSBpdCBsYXRlciB3aGVuIHRob3NlIGlu
c3RhbmNlIGVsZW1lbnRzIGhhZCBiZWVuIGluc2VydGVkCisgICAgICAgICAgIGludG8gdXNlIGVs
ZW1lbnQncyBzaGFkb3cgdHJlZS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHJlc3NlcyAoMSkg
Ynkgc2V2ZXJpbmcgY29ycmVzcG9uZGluZ0VsZW1lbnQgcmVsYXRpb25zaGlwIGFzIHNvb24gYXMg
YW4gaW5zdGFuY2UKKyAgICAgICAgaXMgcmVtb3ZlZCBmcm9tIGl0cyB1c2UgZWxlbWVudCdzIHNo
YWRvdyB0cmVlLCBhbmQgKDIpIGJ5IG5vdCBkaXNwYXRjaGluZyBhIHNjaGVkdWxlZCBtdXRhdGlv
bgorICAgICAgICBldmVudCBpZiB0aGUgdGFyZ2V0IGlzIGluc2lkZSBhIHNoYWRvdyB0cmVlLgor
CisgICAgICAgIFRlc3RzOiBzdmcvZG9tL211dGF0ZS1zeW1ib2wtc3VidHJlZS1yZWZlcmVuY2Vk
LWJ5LXVzZS1kdXJpbmctZXhlY0NvbW1hbmQuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2RvbS91
cGRhdGUtc3ZnLXVzZS1zaGFkb3ctdHJlZS13aXRoLWV4ZWNDb21tYW5kLmh0bWwKKworICAgICAg
ICAqIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjb3BlZEV2
ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKwogMjAyMS0wNC0wMiAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQZW5kaW5nSW1hZ2VCaXRtYXAg
Z2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAKaW5kZXggN2JiOWIwMTdiZmQ2ZTYyNjRm
NDNhYTRjNzEyNzAzNWZiZjk5YTIyMS4uYTlkMjg0MWQ0NjJkZTJhODQwNjU5YzU2NDRjNzBmNjNk
OGI1ZWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1ZXVlLmNwcApAQCAtNTYs
NiArNTYsOCBAQCB2b2lkIFNjb3BlZEV2ZW50UXVldWU6OmVucXVldWVFdmVudChSZWY8RXZlbnQ+
JiYgZXZlbnQpCiAKIHZvaWQgU2NvcGVkRXZlbnRRdWV1ZTo6ZGlzcGF0Y2hFdmVudChjb25zdCBT
Y29wZWRFdmVudCYgZXZlbnQpIGNvbnN0CiB7CisgICAgaWYgKGV2ZW50LmV2ZW50LT5ldmVudElu
dGVyZmFjZSgpID09IE11dGF0aW9uRXZlbnRJbnRlcmZhY2VUeXBlICYmIGV2ZW50LnRhcmdldC0+
aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIGV2ZW50LnRhcmdldC0+ZGlz
cGF0Y2hFdmVudChldmVudC5ldmVudCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApp
bmRleCA5YzE0MGNjMWQ0ZTAzOGE0MzYzOGNiNmRiMmM2YjBjYWEzNDJjZmNkLi5jY2MxMGMxNTYy
ZWI4M2RhYmMyYjlkYjg1ZjhjNzJjNmQyNDI4OWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCkBAIC0xNzEsOSArMTcxLDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQogICAgIGlm
IChtX3N2Z1JhcmVEYXRhKSB7CiAgICAgICAgIGZvciAoU1ZHRWxlbWVudCogaW5zdGFuY2UgOiBt
X3N2Z1JhcmVEYXRhLT5pbnN0YW5jZXMoKSkKICAgICAgICAgICAgIGluc3RhbmNlLT5tX3N2Z1Jh
cmVEYXRhLT5zZXRDb3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKLSAgICAgICAgaWYgKGF1
dG8gY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtYWtlUmVmUHRyKG1fc3ZnUmFyZURhdGEtPmNvcnJl
c3BvbmRpbmdFbGVtZW50KCkpKQotICAgICAgICAgICAgY29ycmVzcG9uZGluZ0VsZW1lbnQtPm1f
c3ZnUmFyZURhdGEtPmluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKLQorICAgICAgICBSRUxFQVNF
X0FTU0VSVCghbV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSk7CiAgICAgICAg
IG1fc3ZnUmFyZURhdGEgPSBudWxscHRyOwogICAgIH0KICAgICBkb2N1bWVudCgpLmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS5yZWJ1aWxkQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQoKnRoaXMp
OwpAQCAtMjUzLDYgKzI1MSwxMSBAQCB2b2lkIFNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0
b3IoUmVtb3ZhbFR5cGUgcmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZAogICAgICAgICBk
b2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5yZW1vdmVBbGxFbGVtZW50UmVmZXJlbmNl
c0ZvclRhcmdldCgqdGhpcyk7CiAgICAgfQogICAgIGludmFsaWRhdGVJbnN0YW5jZXMoKTsKKyAg
ICBpZiAocmVtb3ZhbFR5cGUudHJlZVNjb3BlQ2hhbmdlZCAmJiBvbGRQYXJlbnRPZlJlbW92ZWRU
cmVlLmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGlmIChkb3duY2FzdDxTaGFkb3dSb290Pihv
bGRQYXJlbnRPZlJlbW92ZWRUcmVlKS5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2Vu
dCkKKyAgICAgICAgICAgIHNldENvcnJlc3BvbmRpbmdFbGVtZW50KG51bGxwdHIpOworICAgIH0K
KwogfQogCiBTVkdTVkdFbGVtZW50KiBTVkdFbGVtZW50Ojpvd25lclNWR0VsZW1lbnQoKSBjb25z
dApAQCAtMzc1LDYgKzM3OCw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcihj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyCiAgICAgQVNTRVJU
KCFpbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKCkpOwogICAgIGZvciAoYXV0byogaW5zdGFuY2UgOiBp
bnN0YW5jZXMoKSkgewogICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVt
ZW50KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChpbnN0YW5jZS0+aXNJblVzZXJBZ2VudFNo
YWRvd1RyZWUoKSk7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gaW5zdGFuY2UtPk5vZGU6OmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lci5jb3B5UmVmKCksIG9wdGlvbnMpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKICAgICB9CkBAIC00MDIsNiArNDA2
LDcgQEAgYm9vbCBTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYKICAgICBBU1NFUlQoIWluc3RhbmNlVXBkYXRl
c0Jsb2NrZWQoKSk7CiAgICAgZm9yIChhdXRvJiBpbnN0YW5jZSA6IGluc3RhbmNlcygpKSB7CiAg
ICAgICAgIEFTU0VSVChpbnN0YW5jZS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA9PSB0aGlzKTsK
KyAgICAgICAgQVNTRVJUKGluc3RhbmNlLT5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKIAog
ICAgICAgICBpZiAoaW5zdGFuY2UtPk5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBl
LCBsaXN0ZW5lciwgb3B0aW9ucykpCiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMjIw
NDI5MGVlN2JmYmE3MWUxYjIzZmFiNzk2OTJjYzgwNjFmNGJiLi4yMzkxYmFiOGI2MjA3YmVhNzdj
MzU5YjRmMmI4M2U4ODQ3YmQzNTY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIwMjEtMDQtMDQg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXNzZXJ0IGZhaWx1
cmUgaW4gaXNDbG9uZUluU2hhZG93VHJlZU9mU1ZHVXNlRWxlbWVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTc0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIG11dGF0aW5n
IFNWRyB0cmVlIHJlcGxpY2F0ZWQgaW4gdXNlIGVsZW1lbnQgZHVyaW5nIGV4ZWNDb21tYW5kLgor
CisgICAgICAgICogc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11
c2UtZHVyaW5nLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3Zn
L2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWND
b21tYW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hh
ZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC5odG1s
OiBBZGRlZC4KKworMjAyMS0wNC0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBEaXNhYmxlIFdlYlNRTCBpbiBXZWJLaXRUZXN0UnVubmVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxNDQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTa2lwcGVkIHZhcmlvdXMgV2Vi
U1FMIHRlc3RzIG9uIFdlYktpdDIgYW5kIHJlbW92ZWQgcmVmZXJlbmNlcyB0byBvcGVuRGF0YWJh
c2UgaW4gc29tZSB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9yZXNvdXJjZXMv
V2luZG93UHJvcGVydGllcy5qczogUmVtb3ZlZCBvcGVuRGF0YWJhc2UgZnJvbSB0aGUgbGlzdCBv
ZiBwcm9wZXJ0aWVzIHRvIHRlc3QuCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1m
dW5jdGlvbi1mcmFtZS1nZXR0ZXItcHJlY2VkZW5jZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1mdW5jdGlvbi1uYW1lLWdldHRlci1wcmVjZWRlbmNlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1zdG9yYWdlLWFsbG93ZWQuaHRtbDogRGl0dG8uCisgICAgICAgICogZmFzdC9mcmFtZXMv
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtc3RvcmFnZS1kaXNhbGxvd2VkLmh0bWw6IERpdHRv
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWNhbGwt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUt
YWNjZXNzLWNhbGwuaHRtbDogRGl0dG8uCisgICAgICAgICogaW5zcGVjdG9yL3J1bnRpbWUvQ29t
bWFuZExpbmVBUEktaW5zcGVjdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3J1
bnRpbWUvQ29tbWFuZExpbmVBUEktaW5zcGVjdC5odG1sOiBEaXR0by4KKyAgICAgICAgKiBwbGF0
Zm9ybS9nbGliL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgZW50cmllcyB1bmRlciBzdG9yYWdl
L3dlYnNxbCBzaW5jZSB0aGV5J3JlIGFsbCBza2lwcGVkIG5vdy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9uczogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vaW9zLXdr
Mi9UZXN0RXhwZWN0YXRpb25zOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnM6IE1vdmVkIGZsYWt5IHRpbWVvdXQgZXhwZWN0YXRpb24gb24gYSB0ZXN0
IGhlcmUgZnJvbSBtYWMtd2syLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9uczogUmVtb3ZlZCBhbiBlbnRyeSB0byBza2lwIHN0b3JhZ2Uvd2Vic3FsIGFzIGl0J3Mg
bm93IHNraXBwZWQgZm9yIGFsbCBXSzIgcG9ydHMuCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rl
c3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgZmxha3kgdGltZW91dCBleHBlY3RhdGlvbiBzaW5jZSB0
aGlzIHdpbGwgZm9yY2UgdGhlIHRlc3QgdG8gcnVuCisgICAgICAgIGluIFdlYktpdFRlc3RSdW5u
ZXIsIHdoaWNoIGlzbid0IHdoYXQgd2Ugd2FudCB0byBkby4KKyAgICAgICAgKiBwbGF0Zm9ybS93
aW5jYWlyby9UZXN0RXhwZWN0YXRpb25zOiBSZW1vdmVkIGVudHJpZXMgdW5kZXIgc3RvcmFnZS93
ZWJzcWwgc2luY2UgdGhleSdyZSBhbGwgc2tpcHBlZCBub3cuCisgICAgICAgICogcGxhdGZvcm0v
d2syL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgYWxsIHRoZSB0ZXN0cyBmb3IgV2ViU1FMLgorICAg
ICAgICAqIHBsYXRmb3JtL3dwZS9UZXN0RXhwZWN0YXRpb25zOiBSZW1vdmVkIGVudHJpZXMgdW5k
ZXIgc3RvcmFnZS93ZWJzcWwgc2luY2UgdGhleSdyZSBhbGwgc2tpcHBlZCBub3cuCisKIDIwMjEt
MDQtMDIgIEFtaXIgTWFyayBKciAgPGFtaXJfbWFya0BhcHBsZS5jb20+CiAKICAgICAgICAgWyBN
YWNPUyBdIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9tYWNvcy1pbmxpbmUtbWVkaWEtY29u
dHJvbHMvbWFjb3MtaW5saW5lLW1lZGlhLWRyb3BwaW5nLWNvbnRyb2xzLmh0bWwgaXMgYSBmbGFr
eSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL211dGF0ZS1zeW1ib2wt
c3VidHJlZS1yZWZlcmVuY2VkLWJ5LXVzZS1kdXJpbmctZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1i
eS11c2UtZHVyaW5nLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDUzYzRk
NWUxZWI2ODAyNmU3OTAyOTk3YTg4ODE3Zjk2YWI2ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2Ut
ZHVyaW5nLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVz
dHMgbXV0YXRpbmcgU1ZHIHN5bWJvbCBlbGVtZW50J3Mgc3VidHJlZSByZWZlcmVuY2VkIGJ5IGEg
U1ZHIHVzZSBlbGVtZW50IGluc2lkZSBhIGV2ZW50IHF1ZXVlIHNjb3BlLgorV2ViS2l0IHNob3Vs
ZCBub3QgaGl0IGFueSBhc3NlcnRpb25zIG9yIGNyYXNoLgorCitQQVNTLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11
c2UtZHVyaW5nLWV4ZWNDb21tYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL211dGF0ZS1z
eW1ib2wtc3VidHJlZS1yZWZlcmVuY2VkLWJ5LXVzZS1kdXJpbmctZXhlY0NvbW1hbmQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mYzZmNzdmYzAyZWZhZGI0NTQ2YmZiNWRkZWFlMDg4MWUzYjQwMGFmCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUt
cmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWNDb21tYW5kLmh0bWwKQEAgLTAsMCArMSwyOSBA
QAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworCitmdW5jdGlvbiBuZXN0ZWRTdWJ0cmVlTXV0YXRpb25zKC4uLmNhbGxiYWNr
cykgeworICAgIGNvbnN0IG5leHRDYWxsYmFjayA9IGNhbGxiYWNrcy5zaGlmdCgpOworICAgIGlm
ICghbmV4dENhbGxiYWNrKQorICAgICAgICByZXR1cm47CisgICAgZy5hZGRFdmVudExpc3RlbmVy
KCJET01TdWJ0cmVlTW9kaWZpZWQiLCAoKSA9PiB7CisgICAgICAgIG5lc3RlZFN1YnRyZWVNdXRh
dGlvbnMoLi4uY2FsbGJhY2tzKTsKKyAgICB9LCB7b25jZTogdHJ1ZX0pOworICAgIG5leHRDYWxs
YmFjaygpOworfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgbmVzdGVkU3VidHJlZU11dGF0aW9u
cygKKyAgICAgICAgKCkgPT4gZy5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsICJibHVlIiksCisgICAg
ICAgICgpID0+IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxzZSksCisgICAgICAg
ICgpID0+IHRzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3JlY3QnKSks
CisgICAgICAgICgpID0+IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxzZSksCisg
ICAgICAgICgpID0+IGcuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgInZhcjAwMDYzIikpOworICAg
IGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gYFRoaXMgdGVzdHMgbXV0YXRpbmcgU1ZHIHN5bWJv
bCBlbGVtZW50J3Mgc3VidHJlZSByZWZlcmVuY2VkIGJ5IGEgU1ZHIHVzZSBlbGVtZW50IGluc2lk
ZSBhIGV2ZW50IHF1ZXVlIHNjb3BlLgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGFueSBhc3NlcnRp
b25zIG9yIGNyYXNoLgorCitQQVNTLmA7Cit9Cis8L3NjcmlwdD4KKzxzdmc+PHN5bWJvbCBpZD0i
c3ltYm9sMSI+PGcgaWQ9ImciPjx0c3BhbiBpZD0idHNwYW4iLz48L3N5bWJvbD48dXNlIGhyZWY9
IiNzeW1ib2wxIiAvPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS91cGRhdGUtc3Zn
LXVzZS1zaGFkb3ctdHJlZS13aXRoLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3N2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJmOGZkZTc3NjRhNDY4MjI2NDc0YmU3YWNjM2Q2MTBj
MDVmYjdjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vdXBkYXRlLXN2
Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMyBAQAorVGhpcyB0ZXN0cyB1cGRhdGluZyB0aGUgU1ZHIHVzZSBlbGVtZW50J3Mgc2hhZG93
IHRyZWUgaW5zaWRlIGEgZXZlbnQgcXVldWUgc2NvcGUuCitXZWJLaXQgc2hvdWxkIG5vdCBkaXNw
YWNoIGFueSBtdXRhdGlvbiBldmVudHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgc3VidHJlZU1vZGlmaWVkRmlyZWQgaXMgZmFsc2UKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJ1c2Vjc3MiLCBmYWxzZSkKK1BBU1Mgc3VidHJlZU1vZGlmaWVkRmlyZWQgaXMgZmFsc2UKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgt
ZXhlY0NvbW1hbmQuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hh
ZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmJlMDgzNjIyZjA4
ZDAzZWI4NDU4M2NmYjFmYmE3YmYxYWQzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQuaHRt
bApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c3Zn
PjxzeW1ib2wgaWQ9InN5bWJvbDEiPjxnIGlkPSJnIj48dHNwYW4gaWQ9InRzcGFuIi8+PC9zeW1i
b2w+PHVzZSBpZD0idXNlIiBocmVmPSIjc3ltYm9sMSIgLz48L3N2Zz4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlw
dGlvbihgVGhpcyB0ZXN0cyB1cGRhdGluZyB0aGUgU1ZHIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRy
ZWUgaW5zaWRlIGEgZXZlbnQgcXVldWUgc2NvcGUuPGJyPgorV2ViS2l0IHNob3VsZCBub3QgZGlz
cGFjaCBhbnkgbXV0YXRpb24gZXZlbnRzYCk7CisKK2cuc2V0QXR0cmlidXRlKCJzdHJva2UiLCAi
Ymx1ZSIpOworbGV0IHN1YnRyZWVNb2RpZmllZEZpcmVkID0gZmFsc2U7CitnLmFkZEV2ZW50TGlz
dGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsICgpID0+IHN1YnRyZWVNb2RpZmllZEZpcmVkID0g
dHJ1ZSwge29uY2U6IHRydWV9KTsKKworc2hvdWxkQmVGYWxzZSgnc3VidHJlZU1vZGlmaWVkRmly
ZWQnKTsKK2V2YWxBbmRMb2coJ2RvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxzZSkn
KTsKK3Nob3VsZEJlRmFsc2UoJ3N1YnRyZWVNb2RpZmllZEZpcmVkJyk7CisKK3N1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425138</attachid>
            <date>2021-04-04 17:51:22 -0700</date>
            <delta_ts>2021-04-05 20:28:01 -0700</delta_ts>
            <desc>Fixed change logs</desc>
            <filename>bug-224174-20210404175121.patch</filename>
            <type>text/plain</type>
            <size>10670</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA5ZmRjYzBkZWVkYmI0
NDFlOGI3MWEyZTliYjQ5OTliY2IwZjQ2Ni4uMzczODdjNzdlNjg0NzM2NTFiYzZhNzE4YTk4MDg3
NzRkOTYyYTc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIxLTA0LTA0ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFzc2VydCBmYWlsdXJlIGlu
IGlzQ2xvbmVJblNoYWRvd1RyZWVPZlNWR1VzZUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSB0d28gcmVs
YXRlZCBidXQgZGlzdGljbnQgaXNzdWVzOgorICAgICAgICAxLiBBbiBlbGVtZW50IGNhbiBoYXZl
IGFuIGluc3RhbmNlIHRoYXQgaGFkIGJlZW4gcmVtb3ZlZCBmcm9tIGEgdXNlIGVsZW1lbnQncyBz
aGFkb3cgdHJlZQorICAgICAgICAgICBidXQgbm90IHlldCBkZWxldGVkLiBCZWNhdXNlIFNWR0Vs
ZW1lbnQgY2xlYXJzIGl0cyBjb3JyZXNwb25kaW5nRWxlbWVudCBpbiBpdHMgZGVzdHJ1Y3RvciwK
KyAgICAgICAgICAgd2hlbiBhZGRFdmVudExpc3RlbmVyIGlzIGNhbGxlZCBvbiBzdWNoIGFuIGVs
ZW1lbnQsIGl0IGNhbiB0cnkgdG8gYWRkIGFuIGV2ZW50IGxpc3RlbmVyCisgICAgICAgICAgIG9u
IHRoaXMgaW5zdGFuY2Ugd2hpY2ggaXMgaW4gdGhlIHByb2Nlc3Mgb2YgZ2V0dGluZyBkaXNwb3Nl
ZC4KKyAgICAgICAgMi4gRE9NIG11dGF0aW9uIGV2ZW50cyBjYW4gYmUgZmlyZWQgb24gdGhlIGNv
cnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhbiBpbnN0YW5jZSBpbnNpZGUKKyAgICAgICAgICAgYSB1
c2UgZWxlbWVudOKAmXMgc2hhZG93IHRyZWUgd2l0aCBFdmVudFF1ZXVlU2NvcGUgaW4gdGhlIHN0
YWNrIHdoZW4gdGhlIGV2ZW50IGlzIHNjaGVkdWVsZAorICAgICAgICAgICB2aWEgTm9kZTo6ZGlz
cGF0Y2hTY29wZWRFdmVudCwgZS5nLiBiZWNhdXNlIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUg
d2FzIHVwZGF0ZWQgZHVyaW5nCisgICAgICAgICAgIGEgc3R5bGUgdXBkYXRlIGF0IHRoZSBiZWdp
bm5pbmcgb2YgZG9jdW1lbnQuZXhlY0NvbWFuZC4gQmVjYXVzZSBTVkdVc2VFbGVtZW50OjpjbG9u
ZVRhcmdldAorICAgICAgICAgICBjb25zdHJ1Y3RzIHRoZSBzaGFkb3cgdHJlZSBieSBjbG9uaW5n
IHRoZSBvcmlnaW5hbCB0cmVlIHdoaWxlIGl0J3MgZGlzY29ubmVjdGVkIGZyb20gdGhlCisgICAg
ICAgICAgIGRvY3VtZW50LCBOb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50IHNlZXMg
aXNJblNoYWRvd1RyZWUoKSB0byBiZSBmYWxzZSBhbmQgaGFwcGlseQorICAgICAgICAgICB0cmll
cyB0byBkaXNwYWNoIERPTVN1YnRyZWVNb2RpZmllZCBldmVudCB1c2luZyBOb2RlOjpkaXNwYXRj
aFNjb3BlZEV2ZW50LiBUaGlzIHdvcmtzIGZpbmUKKyAgICAgICAgICAgd2hlbiB0aGUgZXZlbnQg
aXMgZGlzcGF0Y2hlZCBzeW5jaHJvbm91c2x5IHNpbmNlIHRoZXNlIGVsZW1lbnRzIGhhZCBuZXZl
ciBiZWVuIGV4cG9zZWQgdG8KKyAgICAgICAgICAgYW55IHNjcmlwdHMgeWV0IGFuZCB0aGV5IGFy
ZSBzdGlsbCBkaXNjb25uZWN0ZWQgc28gbm8gc2NyaXB0cyBoYXZlIGhhZCBhbiBvcHBvcnR1bml0
eSB0bworICAgICAgICAgICBhdHRhY2ggYW4gZXZlbnQgbGlzdGVuZXIuIEJ1dCB3aGVuIEV2ZW50
UXVldWVTY29wZSBpbiB0aGUgc3RhY2ssIE5vZGU6OmRpc3BhdGNoU2NvcGVkRXZlbnQKKyAgICAg
ICAgICAgd2lsbCBxdWV1ZSB1cCB0aGUgZXZlbnQgYW5kIGZpcmUgaXQgbGF0ZXIgd2hlbiB0aG9z
ZSBpbnN0YW5jZSBlbGVtZW50cyBoYWQgYmVlbiBpbnNlcnRlZAorICAgICAgICAgICBpbnRvIHVz
ZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMg
KDEpIGJ5IHNldmVyaW5nIGNvcnJlc3BvbmRpbmdFbGVtZW50IHJlbGF0aW9uc2hpcCBhcyBzb29u
IGFzIGFuIGluc3RhbmNlCisgICAgICAgIGlzIHJlbW92ZWQgZnJvbSBpdHMgdXNlIGVsZW1lbnQn
cyBzaGFkb3cgdHJlZSwgYW5kICgyKSBieSBub3QgZGlzcGF0Y2hpbmcgYSBzY2hlZHVsZWQgbXV0
YXRpb24KKyAgICAgICAgZXZlbnQgaWYgdGhlIHRhcmdldCBpcyBpbnNpZGUgYSBzaGFkb3cgdHJl
ZS4KKworICAgICAgICBUZXN0czogc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJl
bmNlZC1ieS11c2UtZHVyaW5nLWV4ZWNDb21tYW5kLmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9k
b20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC5odG1sCisKKyAg
ICAgICAgKiBkb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY29w
ZWRFdmVudFF1ZXVlOjpkaXNwYXRjaEV2ZW50IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50Ojp+U1ZHRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisKIDIwMjEtMDQtMDIgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGVuZGluZ0ltYWdlQml0
bWFwIGdldHMgY3JlYXRlZCBvbiBhIHN0b3BwZWQgc2NyaXB0IGV4ZWN1dGlvbiBjb250ZXh0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwCmluZGV4IDdiYjliMDE3YmZkNmU2
MjY0ZjQzYWE0YzcxMjcwMzVmYmY5OWEyMjEuLmE5ZDI4NDFkNDYyZGUyYTg0MDY1OWM1NjQ0Yzcw
ZjYzZDhiNWVlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVudFF1
ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAKQEAg
LTU2LDYgKzU2LDggQEAgdm9pZCBTY29wZWRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVmPEV2
ZW50PiYmIGV2ZW50KQogCiB2b2lkIFNjb3BlZEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQoY29u
c3QgU2NvcGVkRXZlbnQmIGV2ZW50KSBjb25zdAogeworICAgIGlmIChldmVudC5ldmVudC0+ZXZl
bnRJbnRlcmZhY2UoKSA9PSBNdXRhdGlvbkV2ZW50SW50ZXJmYWNlVHlwZSAmJiBldmVudC50YXJn
ZXQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVybjsKICAgICBldmVudC50YXJnZXQt
PmRpc3BhdGNoRXZlbnQoZXZlbnQuZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAKaW5kZXggOWMxNDBjYzFkNGUwMzhhNDM2MzhjYjZkYjJjNmIwY2FhMzQyY2ZjZC4uY2NjMTBj
MTU2MmViODNkYWJjMmI5ZGI4NWY4YzcyYzZkMjQyODliNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcApAQCAtMTcxLDkgKzE3MSw3IEBAIFNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KCkKICAg
ICBpZiAobV9zdmdSYXJlRGF0YSkgewogICAgICAgICBmb3IgKFNWR0VsZW1lbnQqIGluc3RhbmNl
IDogbV9zdmdSYXJlRGF0YS0+aW5zdGFuY2VzKCkpCiAgICAgICAgICAgICBpbnN0YW5jZS0+bV9z
dmdSYXJlRGF0YS0+c2V0Q29ycmVzcG9uZGluZ0VsZW1lbnQobnVsbHB0cik7Ci0gICAgICAgIGlm
IChhdXRvIGNvcnJlc3BvbmRpbmdFbGVtZW50ID0gbWFrZVJlZlB0cihtX3N2Z1JhcmVEYXRhLT5j
b3JyZXNwb25kaW5nRWxlbWVudCgpKSkKLSAgICAgICAgICAgIGNvcnJlc3BvbmRpbmdFbGVtZW50
LT5tX3N2Z1JhcmVEYXRhLT5pbnN0YW5jZXMoKS5yZW1vdmUodGhpcyk7Ci0KKyAgICAgICAgUkVM
RUFTRV9BU1NFUlQoIW1fc3ZnUmFyZURhdGEtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpOwogICAg
ICAgICBtX3N2Z1JhcmVEYXRhID0gbnVsbHB0cjsKICAgICB9CiAgICAgZG9jdW1lbnQoKS5hY2Nl
c3NTVkdFeHRlbnNpb25zKCkucmVidWlsZEFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KCp0
aGlzKTsKQEAgLTI1Myw2ICsyNTEsMTEgQEAgdm9pZCBTVkdFbGVtZW50OjpyZW1vdmVkRnJvbUFu
Y2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGQKICAgICAg
ICAgZG9jdW1lbnQoKS5hY2Nlc3NTVkdFeHRlbnNpb25zKCkucmVtb3ZlQWxsRWxlbWVudFJlZmVy
ZW5jZXNGb3JUYXJnZXQoKnRoaXMpOwogICAgIH0KICAgICBpbnZhbGlkYXRlSW5zdGFuY2VzKCk7
CisgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQgJiYgb2xkUGFyZW50T2ZSZW1v
dmVkVHJlZS5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoZG93bmNhc3Q8U2hhZG93Um9v
dD4ob2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkubW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2Vy
QWdlbnQpCisgICAgICAgICAgICBzZXRDb3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKKyAg
ICB9CisKIH0KIAogU1ZHU1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6b3duZXJTVkdFbGVtZW50KCkg
Y29uc3QKQEAgLTM3NSw2ICszNzgsNyBAQCBib29sIFNWR0VsZW1lbnQ6OmFkZEV2ZW50TGlzdGVu
ZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcgogICAgIEFT
U0VSVCghaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKTsKICAgICBmb3IgKGF1dG8qIGluc3RhbmNl
IDogaW5zdGFuY2VzKCkpIHsKICAgICAgICAgQVNTRVJUKGluc3RhbmNlLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPmlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKCkpOwogICAgICAgICBib29sIHJlc3VsdCA9IGluc3RhbmNlLT5Ob2RlOjph
ZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCBvcHRpb25zKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7CiAgICAgfQpAQCAtNDAyLDYg
KzQwNiw3IEBAIGJvb2wgU1ZHRWxlbWVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImCiAgICAgQVNTRVJUKCFpbnN0YW5jZVVw
ZGF0ZXNCbG9ja2VkKCkpOwogICAgIGZvciAoYXV0byYgaW5zdGFuY2UgOiBpbnN0YW5jZXMoKSkg
ewogICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCkgPT0gdGhp
cyk7CisgICAgICAgIEFTU0VSVChpbnN0YW5jZS0+aXNJblVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7
CiAKICAgICAgICAgaWYgKGluc3RhbmNlLT5Ob2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZDIyMDQyOTBlZTdiZmJhNzFlMWIyM2ZhYjc5NjkyY2M4MDYxZjRiYi4uMTA5NGVkYjI2MjI1NDZi
M2NhZTA1NzJmY2ZlNjNlNjRjZmU0OGI1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA0
LTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFzc2VydCBm
YWlsdXJlIGluIGlzQ2xvbmVJblNoYWRvd1RyZWVPZlNWR1VzZUVsZW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE3NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciBtdXRh
dGluZyBTVkcgdHJlZSByZXBsaWNhdGVkIGluIHVzZSBlbGVtZW50IGR1cmluZyBleGVjQ29tbWFu
ZC4KKworICAgICAgICAqIHN2Zy9kb20vbXV0YXRlLXN5bWJvbC1zdWJ0cmVlLXJlZmVyZW5jZWQt
YnktdXNlLWR1cmluZy1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHN2Zy9kb20vbXV0YXRlLXN5bWJvbC1zdWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1l
eGVjQ29tbWFuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3VwZGF0ZS1zdmctdXNl
LXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQu
aHRtbDogQWRkZWQuCisKIDIwMjEtMDQtMDIgIEFtaXIgTWFyayBKciAgPGFtaXJfbWFya0BhcHBs
ZS5jb20+CiAKICAgICAgICAgWyBNYWNPUyBdIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9t
YWNvcy1pbmxpbmUtbWVkaWEtY29udHJvbHMvbWFjb3MtaW5saW5lLW1lZGlhLWRyb3BwaW5nLWNv
bnRyb2xzLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvZG9tL211dGF0ZS1zeW1ib2wtc3VidHJlZS1yZWZlcmVuY2VkLWJ5LXVzZS1kdXJpbmctZXhl
Y0NvbW1hbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9s
LXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45MDUzYzRkNWUxZWI2ODAyNmU3OTAyOTk3YTg4ODE3Zjk2YWI2ODE2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRy
ZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgbXV0YXRpbmcgU1ZHIHN5bWJvbCBlbGVtZW50J3Mgc3Vi
dHJlZSByZWZlcmVuY2VkIGJ5IGEgU1ZHIHVzZSBlbGVtZW50IGluc2lkZSBhIGV2ZW50IHF1ZXVl
IHNjb3BlLgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGFueSBhc3NlcnRpb25zIG9yIGNyYXNoLgor
CitQQVNTLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1
YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWNDb21tYW5kLmh0bWwgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL211dGF0ZS1zeW1ib2wtc3VidHJlZS1yZWZlcmVuY2VkLWJ5LXVzZS1kdXJp
bmctZXhlY0NvbW1hbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzZmNzdmYzAyZWZhZGI0NTQ2YmZiNWRk
ZWFlMDg4MWUzYjQwMGFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS9t
dXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWNDb21tYW5k
Lmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitmdW5jdGlvbiBuZXN0ZWRTdWJ0cmVl
TXV0YXRpb25zKC4uLmNhbGxiYWNrcykgeworICAgIGNvbnN0IG5leHRDYWxsYmFjayA9IGNhbGxi
YWNrcy5zaGlmdCgpOworICAgIGlmICghbmV4dENhbGxiYWNrKQorICAgICAgICByZXR1cm47Cisg
ICAgZy5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9kaWZpZWQiLCAoKSA9PiB7CisgICAg
ICAgIG5lc3RlZFN1YnRyZWVNdXRhdGlvbnMoLi4uY2FsbGJhY2tzKTsKKyAgICB9LCB7b25jZTog
dHJ1ZX0pOworICAgIG5leHRDYWxsYmFjaygpOworfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAg
bmVzdGVkU3VidHJlZU11dGF0aW9ucygKKyAgICAgICAgKCkgPT4gZy5zZXRBdHRyaWJ1dGUoInN0
cm9rZSIsICJibHVlIiksCisgICAgICAgICgpID0+IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vj
c3MiLCBmYWxzZSksCisgICAgICAgICgpID0+IHRzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3JlY3QnKSksCisgICAgICAgICgpID0+IGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJ1c2Vjc3MiLCBmYWxzZSksCisgICAgICAgICgpID0+IGcuc2V0QXR0cmlidXRlKCJvbmNsaWNr
IiwgInZhcjAwMDYzIikpOworICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gYFRoaXMgdGVz
dHMgbXV0YXRpbmcgU1ZHIHN5bWJvbCBlbGVtZW50J3Mgc3VidHJlZSByZWZlcmVuY2VkIGJ5IGEg
U1ZHIHVzZSBlbGVtZW50IGluc2lkZSBhIGV2ZW50IHF1ZXVlIHNjb3BlLgorV2ViS2l0IHNob3Vs
ZCBub3QgaGl0IGFueSBhc3NlcnRpb25zIG9yIGNyYXNoLgorCitQQVNTLmA7Cit9Cis8L3Njcmlw
dD4KKzxzdmc+PHN5bWJvbCBpZD0ic3ltYm9sMSI+PGcgaWQ9ImciPjx0c3BhbiBpZD0idHNwYW4i
Lz48L3N5bWJvbD48dXNlIGhyZWY9IiNzeW1ib2wxIiAvPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvc3ZnL2RvbS91cGRhdGUtc3ZnLXVzZS1zaGFkb3ctdHJlZS13aXRoLWV4ZWNDb21tYW5kLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRy
ZWUtd2l0aC1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWJmOGZkZTc3NjRh
NDY4MjI2NDc0YmU3YWNjM2Q2MTBjMDVmYjdjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3N2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0cyB1cGRhdGluZyB0aGUgU1ZH
IHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUgaW5zaWRlIGEgZXZlbnQgcXVldWUgc2NvcGUuCitX
ZWJLaXQgc2hvdWxkIG5vdCBkaXNwYWNoIGFueSBtdXRhdGlvbiBldmVudHMKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VidHJlZU1vZGlmaWVkRmlyZWQgaXMgZmFsc2UK
K2RvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxzZSkKK1BBU1Mgc3VidHJlZU1vZGlm
aWVkRmlyZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL3VwZGF0ZS1zdmct
dXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9k
b20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjlhYmJlMDgzNjIyZjA4ZDAzZWI4NDU4M2NmYjFmYmE3YmYxYWQzYWQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVl
LXdpdGgtZXhlY0NvbW1hbmQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGJvZHk+Cis8c3ZnPjxzeW1ib2wgaWQ9InN5bWJvbDEiPjxnIGlkPSJnIj48dHNw
YW4gaWQ9InRzcGFuIi8+PC9zeW1ib2w+PHVzZSBpZD0idXNlIiBocmVmPSIjc3ltYm9sMSIgLz48
L3N2Zz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbihgVGhpcyB0ZXN0cyB1cGRhdGluZyB0aGUgU1ZHIHVz
ZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUgaW5zaWRlIGEgZXZlbnQgcXVldWUgc2NvcGUuPGJyPgor
V2ViS2l0IHNob3VsZCBub3QgZGlzcGFjaCBhbnkgbXV0YXRpb24gZXZlbnRzYCk7CisKK2cuc2V0
QXR0cmlidXRlKCJzdHJva2UiLCAiYmx1ZSIpOworbGV0IHN1YnRyZWVNb2RpZmllZEZpcmVkID0g
ZmFsc2U7CitnLmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsICgpID0+IHN1
YnRyZWVNb2RpZmllZEZpcmVkID0gdHJ1ZSwge29uY2U6IHRydWV9KTsKKworc2hvdWxkQmVGYWxz
ZSgnc3VidHJlZU1vZGlmaWVkRmlyZWQnKTsKK2V2YWxBbmRMb2coJ2RvY3VtZW50LmV4ZWNDb21t
YW5kKCJ1c2Vjc3MiLCBmYWxzZSknKTsKK3Nob3VsZEJlRmFsc2UoJ3N1YnRyZWVNb2RpZmllZEZp
cmVkJyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425234</attachid>
            <date>2021-04-05 20:28:03 -0700</date>
            <delta_ts>2021-04-05 20:28:46 -0700</delta_ts>
            <desc>Added a test for regular shadow tree</desc>
            <filename>bug-224174-20210405202802.patch</filename>
            <type>text/plain</type>
            <size>17132</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA5ZmRjYzBkZWVkYmI0
NDFlOGI3MWEyZTliYjQ5OTliY2IwZjQ2Ni4uMmE1NjllMDcxYmRhZTFhMTY0NWY5Y2EyM2IzNDYy
OGE3YWZmY2M3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTA0LTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFzc2VydCBmYWlsdXJlIGlu
IGlzQ2xvbmVJblNoYWRvd1RyZWVPZlNWR1VzZUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSB0d28gcmVs
YXRlZCBidXQgZGlzdGljbnQgaXNzdWVzOgorICAgICAgICAxLiBBbiBlbGVtZW50IGNhbiBoYXZl
IGFuIGluc3RhbmNlIHRoYXQgaGFkIGJlZW4gcmVtb3ZlZCBmcm9tIGEgdXNlIGVsZW1lbnQncyBz
aGFkb3cgdHJlZQorICAgICAgICAgICBidXQgbm90IHlldCBkZWxldGVkLiBCZWNhdXNlIFNWR0Vs
ZW1lbnQgY2xlYXJzIGl0cyBjb3JyZXNwb25kaW5nRWxlbWVudCBpbiBpdHMgZGVzdHJ1Y3RvciwK
KyAgICAgICAgICAgd2hlbiBhZGRFdmVudExpc3RlbmVyIGlzIGNhbGxlZCBvbiBzdWNoIGFuIGVs
ZW1lbnQsIGl0IGNhbiB0cnkgdG8gYWRkIGFuIGV2ZW50IGxpc3RlbmVyCisgICAgICAgICAgIG9u
IHRoaXMgaW5zdGFuY2Ugd2hpY2ggaXMgaW4gdGhlIHByb2Nlc3Mgb2YgZ2V0dGluZyBkaXNwb3Nl
ZC4KKyAgICAgICAgMi4gRE9NIG11dGF0aW9uIGV2ZW50cyBjYW4gYmUgZmlyZWQgb24gdGhlIGNv
cnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhbiBpbnN0YW5jZSBpbnNpZGUKKyAgICAgICAgICAgYSB1
c2UgZWxlbWVudOKAmXMgc2hhZG93IHRyZWUgd2l0aCBFdmVudFF1ZXVlU2NvcGUgaW4gdGhlIHN0
YWNrIHdoZW4gdGhlIGV2ZW50IGlzIHNjaGVkdWVsZAorICAgICAgICAgICB2aWEgTm9kZTo6ZGlz
cGF0Y2hTY29wZWRFdmVudCwgZS5nLiBiZWNhdXNlIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUg
d2FzIHVwZGF0ZWQgZHVyaW5nCisgICAgICAgICAgIGEgc3R5bGUgdXBkYXRlIGF0IHRoZSBiZWdp
bm5pbmcgb2YgZG9jdW1lbnQuZXhlY0NvbWFuZC4gQmVjYXVzZSBTVkdVc2VFbGVtZW50OjpjbG9u
ZVRhcmdldAorICAgICAgICAgICBjb25zdHJ1Y3RzIHRoZSBzaGFkb3cgdHJlZSBieSBjbG9uaW5n
IHRoZSBvcmlnaW5hbCB0cmVlIHdoaWxlIGl0J3MgZGlzY29ubmVjdGVkIGZyb20gdGhlCisgICAg
ICAgICAgIGRvY3VtZW50LCBOb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50IHNlZXMg
aXNJblNoYWRvd1RyZWUoKSB0byBiZSBmYWxzZSBhbmQgaGFwcGlseQorICAgICAgICAgICB0cmll
cyB0byBkaXNwYWNoIERPTVN1YnRyZWVNb2RpZmllZCBldmVudCB1c2luZyBOb2RlOjpkaXNwYXRj
aFNjb3BlZEV2ZW50LiBUaGlzIHdvcmtzIGZpbmUKKyAgICAgICAgICAgd2hlbiB0aGUgZXZlbnQg
aXMgZGlzcGF0Y2hlZCBzeW5jaHJvbm91c2x5IHNpbmNlIHRoZXNlIGVsZW1lbnRzIGhhZCBuZXZl
ciBiZWVuIGV4cG9zZWQgdG8KKyAgICAgICAgICAgYW55IHNjcmlwdHMgeWV0IGFuZCB0aGV5IGFy
ZSBzdGlsbCBkaXNjb25uZWN0ZWQgc28gbm8gc2NyaXB0cyBoYXZlIGhhZCBhbiBvcHBvcnR1bml0
eSB0bworICAgICAgICAgICBhdHRhY2ggYW4gZXZlbnQgbGlzdGVuZXIuIEJ1dCB3aGVuIEV2ZW50
UXVldWVTY29wZSBpbiB0aGUgc3RhY2ssIE5vZGU6OmRpc3BhdGNoU2NvcGVkRXZlbnQKKyAgICAg
ICAgICAgd2lsbCBxdWV1ZSB1cCB0aGUgZXZlbnQgYW5kIGZpcmUgaXQgbGF0ZXIgd2hlbiB0aG9z
ZSBpbnN0YW5jZSBlbGVtZW50cyBoYWQgYmVlbiBpbnNlcnRlZAorICAgICAgICAgICBpbnRvIHVz
ZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMg
KDEpIGJ5IHNldmVyaW5nIGNvcnJlc3BvbmRpbmdFbGVtZW50IHJlbGF0aW9uc2hpcCBhcyBzb29u
IGFzIGFuIGluc3RhbmNlCisgICAgICAgIGlzIHJlbW92ZWQgZnJvbSBpdHMgdXNlIGVsZW1lbnQn
cyBzaGFkb3cgdHJlZSwgYW5kICgyKSBieSBub3QgZGlzcGF0Y2hpbmcgYSBzY2hlZHVsZWQgbXV0
YXRpb24KKyAgICAgICAgZXZlbnQgaWYgdGhlIHRhcmdldCBpcyBpbnNpZGUgYSBzaGFkb3cgdHJl
ZS4gTm90ZSB0aGF0IHRoaXMgcGF0Y2ggYWxzbyBhZGRyZXNzZXMgKDIpIGZvcgorICAgICAgICBh
IHJlZ3VsYXIgc2hhZG93IHRyZWUgYXR0YWNoZWQgYnkgYXV0aG9yIHNjcmlwdHMuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3Qvc2hhZG93LWRvbS9tdXRhdGlvbi1ldmVudC1pbi1zaGFkb3ctdHJlZS5o
dG1sCisgICAgICAgICAgICAgICBzdmcvZG9tL211dGF0ZS1zeW1ib2wtc3VidHJlZS1yZWZlcmVu
Y2VkLWJ5LXVzZS1kdXJpbmctZXhlY0NvbW1hbmQuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2Rv
bS91cGRhdGUtc3ZnLXVzZS1zaGFkb3ctdHJlZS13aXRoLWV4ZWNDb21tYW5kLmh0bWwKKworICAg
ICAgICAqIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjb3Bl
ZEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKwogMjAyMS0wNC0wMiAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQZW5kaW5nSW1hZ2VCaXRt
YXAgZ2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCAxZWI4OTE0NWVjNGI1OTRiODE0YmQ5OGI5ZmQxYzZkYjZiZmQxNmYyLi5j
NmJjZjZhMGNmOTNmM2E2ZTU1MTRkZWZlOTQzNTQ2M2JjMDAyMGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTIxNiw2ICsyMTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyZWVTY29wZSgpIGNvbnN0IHsg
cmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50Tm9kZSkgfHwgaGFzTm9kZUZs
YWcoTm9kZUZsYWc6OklzU2hhZG93Um9vdCk7IH0KICAgICBib29sIGlzRG9jdW1lbnRGcmFnbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50RnJhZ21l
bnQpOyB9CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBoYXNOb2RlRmxh
ZyhOb2RlRmxhZzo6SXNTaGFkb3dSb290KTsgfQorICAgIGJvb2wgaXNVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3Q7IC8vIERlZmluZWQgaW4gU2hhZG93Um9vdC5oCiAKICAgICBib29sIGhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5v
ZGVGbGFnOjpIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MpOyB9CiAKQEAgLTIyNSw3ICsy
MjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIGluIGEgc2hhZG93IHRyZWUs
IHJldHVybnMgaXRzIHNoYWRvdyBob3N0LiBPdGhlcndpc2UsIHJldHVybnMgbnVsbC4KICAgICBX
RUJDT1JFX0VYUE9SVCBFbGVtZW50KiBzaGFkb3dIb3N0KCkgY29uc3Q7CiAgICAgU2hhZG93Um9v
dCogY29udGFpbmluZ1NoYWRvd1Jvb3QoKSBjb25zdDsKLSAgICBTaGFkb3dSb290KiBzaGFkb3dS
b290KCkgY29uc3Q7CisgICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OyAvLyBEZWZp
bmVkIGluIFNoYWRvd1Jvb3QuaAogICAgIGJvb2wgaXNDbG9zZWRTaGFkb3dIaWRkZW4oY29uc3Qg
Tm9kZSYpIGNvbnN0OwogCiAgICAgSFRNTFNsb3RFbGVtZW50KiBhc3NpZ25lZFNsb3QoKSBjb25z
dDsKQEAgLTI0MCw3ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgTm9kZSogbm9uQm91bmRhcnlTaGFk
b3dUcmVlUm9vdE5vZGUoKTsKIAogICAgIC8vIE5vZGUncyBwYXJlbnQgb3Igc2hhZG93IHRyZWUg
aG9zdC4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgY29uc3Q7
CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpIGNvbnN0OyAvLyBE
ZWZpbmVkIGluIFNoYWRvd1Jvb3QuaAogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudEluQ29tcG9z
ZWRUcmVlKCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVl
KCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwCmluZGV4IDdiYjliMDE3YmZk
NmU2MjY0ZjQzYWE0YzcxMjcwMzVmYmY5OWEyMjEuLmE5ZDI4NDFkNDYyZGUyYTg0MDY1OWM1NjQ0
YzcwZjYzZDhiNWVlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVu
dFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAK
QEAgLTU2LDYgKzU2LDggQEAgdm9pZCBTY29wZWRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVm
PEV2ZW50PiYmIGV2ZW50KQogCiB2b2lkIFNjb3BlZEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQo
Y29uc3QgU2NvcGVkRXZlbnQmIGV2ZW50KSBjb25zdAogeworICAgIGlmIChldmVudC5ldmVudC0+
ZXZlbnRJbnRlcmZhY2UoKSA9PSBNdXRhdGlvbkV2ZW50SW50ZXJmYWNlVHlwZSAmJiBldmVudC50
YXJnZXQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVybjsKICAgICBldmVudC50YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQuZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aAppbmRleCA4OTBkNjkwYzZiYTY1Yzg0NTI4YjEyZTg0NDhkYzllZjAzODIxMTllLi5mNmQ5YmUx
NDhhYzE5MGI3OTYxMjdlYWVjN2VjZDE0NmNmODViNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKQEAgLTE1Myw2ICsxNTMsMTEgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIE5vZGU6OnNoYWRvd1Jv
b3QoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50PigqdGhpcykuc2hhZG93Um9v
dCgpOwogfQogCitpbmxpbmUgYm9vbCBOb2RlOjppc1VzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25z
dAoreworICAgIHJldHVybiBpc1NoYWRvd1Jvb3QoKSAmJiBkb3duY2FzdDxTaGFkb3dSb290Pigq
dGhpcykubW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQ7Cit9CisKIGlubGluZSBD
b250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAppbmRleCA5YzE0MGNjMWQ0ZTAzOGE0MzYzOGNiNmRiMmM2YjBjYWEzNDJjZmNkLi5hYjVl
YWM0Y2UxYjk2YTg4Y2NhZjQyZjkxOTg1NDkyNDgwNDczMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCkBAIC0xNzEsOSArMTcxLDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQog
ICAgIGlmIChtX3N2Z1JhcmVEYXRhKSB7CiAgICAgICAgIGZvciAoU1ZHRWxlbWVudCogaW5zdGFu
Y2UgOiBtX3N2Z1JhcmVEYXRhLT5pbnN0YW5jZXMoKSkKICAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N2Z1JhcmVEYXRhLT5zZXRDb3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKLSAgICAgICAg
aWYgKGF1dG8gY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtYWtlUmVmUHRyKG1fc3ZnUmFyZURhdGEt
PmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpKQotICAgICAgICAgICAgY29ycmVzcG9uZGluZ0VsZW1l
bnQtPm1fc3ZnUmFyZURhdGEtPmluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKLQorICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSk7CiAg
ICAgICAgIG1fc3ZnUmFyZURhdGEgPSBudWxscHRyOwogICAgIH0KICAgICBkb2N1bWVudCgpLmFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS5yZWJ1aWxkQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQo
KnRoaXMpOwpAQCAtMjUzLDYgKzI1MSw5IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21B
bmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkCiAgICAg
ICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZUFsbEVsZW1lbnRSZWZl
cmVuY2VzRm9yVGFyZ2V0KCp0aGlzKTsKICAgICB9CiAgICAgaW52YWxpZGF0ZUluc3RhbmNlcygp
OworCisgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQgJiYgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZS5pc1VzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKKyAgICAgICAgc2V0Q29ycmVzcG9u
ZGluZ0VsZW1lbnQobnVsbHB0cik7CiB9CiAKIFNWR1NWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6Om93
bmVyU1ZHRWxlbWVudCgpIGNvbnN0CkBAIC0zNzUsNiArMzc2LDcgQEAgYm9vbCBTVkdFbGVtZW50
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50
TGlzdGVuZXIKICAgICBBU1NFUlQoIWluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSk7CiAgICAgZm9y
IChhdXRvKiBpbnN0YW5jZSA6IGluc3RhbmNlcygpKSB7CiAgICAgICAgIEFTU0VSVChpbnN0YW5j
ZS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGluc3Rh
bmNlLT5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKICAgICAgICAgYm9vbCByZXN1bHQgPSBp
bnN0YW5jZS0+Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlS
ZWYoKSwgb3B0aW9ucyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwog
ICAgIH0KQEAgLTQwMiw2ICs0MDQsNyBAQCBib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJgogICAgIEFT
U0VSVCghaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKTsKICAgICBmb3IgKGF1dG8mIGluc3RhbmNl
IDogaW5zdGFuY2VzKCkpIHsKICAgICAgICAgQVNTRVJUKGluc3RhbmNlLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPmlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKCkpOwogCiAgICAgICAgIGlmIChpbnN0YW5jZS0+Tm9kZTo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGQyMjA0MjkwZWU3YmZiYTcxZTFiMjNmYWI3OTY5MmNjODA2MWY0YmIu
LjA3MGZhNDEyNTE4YzdhZWM1Nzg0MTA1ODFiOGM0MDM1M2NhMDU2YTMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAyMS0wNC0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBc3NlcnQgZmFpbHVyZSBpbiBpc0Nsb25lSW5TaGFkb3dUcmVlT2ZTVkdVc2VFbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQx
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCB0ZXN0cyBmb3IgbXV0YXRpbmcgbm9kZXMgd2hpY2ggaXMgbGF0ZXIgaW5zZXJ0ZWQgaW50byBh
IHNoYWRvdyB0cmVlIGR1cmluZyBleGVjQ29tbWFuZAorICAgICAgICBhcyB3ZWxsIGFzIGZvcmNp
bmcgYSBTVkcgdXNlIGVsZW1lbnQgdG8gdXBkYXRlIGl0cyBzaGFkb3cgdHJlZSBieSBtdXRhdGlu
ZyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBlbGVtZW50IHRyZWUgZHVyaW5nIGV4ZWNDb21t
YW5kLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL211dGF0aW9uLWV2ZW50LWluLXNoYWRv
dy10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL211
dGF0aW9uLWV2ZW50LWluLXNoYWRvdy10cmVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9k
b20vbXV0YXRlLXN5bWJvbC1zdWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29t
bWFuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vbXV0YXRlLXN5bWJv
bC1zdWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29tbWFuZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhl
Y0NvbW1hbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3VwZGF0ZS1z
dmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQuaHRtbDogQWRkZWQuCisKKzIwMjEt
MDQtMDUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQXNzZXJ0
IGZhaWx1cmUgaW4gaXNDbG9uZUluU2hhZG93VHJlZU9mU1ZHVXNlRWxlbWVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTc0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkZWQgdGVzdHMgZm9yIG11dGF0
aW5nIFNWRyB0cmVlIHJlcGxpY2F0ZWQgaW4gdXNlIGVsZW1lbnQgZHVyaW5nIGV4ZWNDb21tYW5k
LgorCisgICAgICAgICogc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1i
eS11c2UtZHVyaW5nLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4
ZWNDb21tYW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vdXBkYXRlLXN2Zy11c2Ut
c2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC5o
dG1sOiBBZGRlZC4KKwogMjAyMS0wNC0wMiAgQW1pciBNYXJrIEpyICA8YW1pcl9tYXJrQGFwcGxl
LmNvbT4KIAogICAgICAgICBbIE1hY09TIF0gbWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL21h
Y29zLWlubGluZS1tZWRpYS1jb250cm9scy9tYWNvcy1pbmxpbmUtbWVkaWEtZHJvcHBpbmctY29u
dHJvbHMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3Qvc2hhZG93LWRvbS9tdXRhdGlvbi1ldmVudC1pbi1zaGFkb3ctdHJlZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vbXV0YXRpb24tZXZlbnQtaW4tc2hhZG93LXRy
ZWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyODUyNTI3NjgxYzcxNDNiYzVlYWEwZjBhNjQx
MGE1ZTU2YzA1MDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vbXV0YXRpb24tZXZlbnQtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTMgQEAKK1RoaXMgdGVzdHMgbXV0YXRpbmcgc2hhZG93IHRyZWUgaW5zaWRlIGV4ZWNDb21tYW5k
LiBXZWJLaXQgc2hvdWxkIG5vdCBkaXNwYWNoIERPTSBtdXRhdGlvbiBldmVudHMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG11dGF0aW9uRXZlbnRzV2l0aCgoZWxlbWVu
dCkgPT4gZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2ZvbycpKSBpcyAiW10iCitQQVNT
IG11dGF0aW9uRXZlbnRzV2l0aCgoZWxlbWVudCkgPT4gZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpKSBpcyAiW10iCitQQVNTIG11dGF0aW9uRXZlbnRz
V2l0aCgoZWxlbWVudCkgPT4geyBlbGVtZW50LnRleHRDb250ZW50ID0gJ2hlbGxvJzsgZWxlbWVu
dC5maXJzdENoaWxkLmFwcGVuZERhdGEoJyB3b3JsZCcpIH0pIGlzICJbXSIKK1BBU1MgbXV0YXRp
b25FdmVudHNXaXRoKChlbGVtZW50KSA9PiBlbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKSkpIGlzICJbXSIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vbXV0YXRpb24tZXZlbnQtaW4tc2hhZG93LXRy
ZWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9tdXRhdGlvbi1ldmVudC1pbi1z
aGFkb3ctdHJlZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk2NjZmYWU2ZjllZTZmNDY2YzU1ZmYzNjQyMjQ2
NGJkYjRkNTMwOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1k
b20vbXV0YXRpb24tZXZlbnQtaW4tc2hhZG93LXRyZWUuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oJ1RoaXMg
dGVzdHMgbXV0YXRpbmcgc2hhZG93IHRyZWUgaW5zaWRlIGV4ZWNDb21tYW5kLiBXZWJLaXQgc2hv
dWxkIG5vdCBkaXNwYWNoIERPTSBtdXRhdGlvbiBldmVudHMuJyk7CisKK2Z1bmN0aW9uIG11dGF0
aW9uRXZlbnRzV2l0aCh0ZXN0RnVuY3Rpb24pCit7CisgICAgY29uc3QgaG9zdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaG9z
dCk7CisgICAgY29uc3Qgc2hhZG93Um9vdCA9IGhvc3QuYXR0YWNoU2hhZG93KHttb2RlOiAnY2xv
c2VkJ30pOworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxkaXYgaWQ9ImVkaXRvciIgY29u
dGVudGVkaXRhYmxlPmhlbGxvIDxzcGFuPjwvc3Bhbj53b3JsZDwvZGl2Pic7CisgICAgY29uc3Qg
ZWRpdG9yID0gc2hhZG93Um9vdC5nZXRFbGVtZW50QnlJZCgnZWRpdG9yJyk7CisgICAgY29uc3Qg
aWZyYW1lID0gc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdzcGFuJykuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJykpOworCisgICAgZWRpdG9yLmZvY3VzKCk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ3NlbGVjdEFsbCcpOworCisgICAgY29uc3QgZXZlbnRz
ID0gW107CisgICAgY29uc3QgZXZlbnRUeXBlcyA9IFsnRE9NU3VidHJlZU1vZGlmaWVkJywgJ0RP
TU5vZGVJbnNlcnRlZCcsICdET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQnLCAnRE9NTm9kZVJl
bW92ZWQnLCAnRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnQnLCAnRE9NQ2hhcmFjdGVyRGF0YU1v
ZGlmaWVkJ107CisgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cub251bmxvYWQgPSAoKSA9PiB7Cisg
ICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAg
ICBmb3IgKGNvbnN0IHR5cGUgb2YgZXZlbnRUeXBlcykKKyAgICAgICAgICAgIGRpdi5hZGRFdmVu
dExpc3RlbmVyKHR5cGUsIChldmVudCkgPT4geyBldmVudHMucHVzaChldmVudC50eXBlKTsgfSwg
e29uY2U6IHRydWV9KTsKKyAgICAgICAgdGVzdEZ1bmN0aW9uKGRpdik7CisgICAgICAgIHNoYWRv
d1Jvb3QuYXBwZW5kQ2hpbGQoZGl2KTsKKyAgICB9OworCisgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoJ2RlbGV0ZScsIGZhbHNlLCBudWxsKTsKKyAgICBob3N0LnJlbW92ZSgpOworCisgICAgcmV0
dXJuIEpTT04uc3RyaW5naWZ5KGV2ZW50cyk7Cit9CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZyhg
bXV0YXRpb25FdmVudHNXaXRoKChlbGVtZW50KSA9PiBlbGVtZW50LnNldEF0dHJpYnV0ZSgnY2xh
c3MnLCAnZm9vJykpYCwgYFtdYCk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoYG11dGF0aW9uRXZl
bnRzV2l0aCgoZWxlbWVudCkgPT4gZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzcGFuJykpKWAsIGBbXWApOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGBtdXRhdGlv
bkV2ZW50c1dpdGgoKGVsZW1lbnQpID0+IHsgZWxlbWVudC50ZXh0Q29udGVudCA9ICdoZWxsbyc7
IGVsZW1lbnQuZmlyc3RDaGlsZC5hcHBlbmREYXRhKCcgd29ybGQnKSB9KWAsIGBbXWApOworc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKGBtdXRhdGlvbkV2ZW50c1dpdGgoKGVsZW1lbnQpID0+IGVsZW1l
bnQuYXBwZW5kQ2hpbGQoZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzcGFuJykpKSlgLCBgW11gKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvZG9tL211dGF0ZS1zeW1ib2wtc3VidHJlZS1yZWZlcmVu
Y2VkLWJ5LXVzZS1kdXJpbmctZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
c3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4
ZWNDb21tYW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDUzYzRkNWUxZWI2ODAyNmU3OTAy
OTk3YTg4ODE3Zjk2YWI2ODE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2Rv
bS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWNDb21t
YW5kLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgbXV0YXRpbmcgU1ZH
IHN5bWJvbCBlbGVtZW50J3Mgc3VidHJlZSByZWZlcmVuY2VkIGJ5IGEgU1ZHIHVzZSBlbGVtZW50
IGluc2lkZSBhIGV2ZW50IHF1ZXVlIHNjb3BlLgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGFueSBh
c3NlcnRpb25zIG9yIGNyYXNoLgorCitQQVNTLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Zn
L2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4ZWND
b21tYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL211dGF0ZS1zeW1ib2wtc3VidHJlZS1y
ZWZlcmVuY2VkLWJ5LXVzZS1kdXJpbmctZXhlY0NvbW1hbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzZm
NzdmYzAyZWZhZGI0NTQ2YmZiNWRkZWFlMDg4MWUzYjQwMGFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11
c2UtZHVyaW5nLWV4ZWNDb21tYW5kLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPHNjcmlwdD4KKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitm
dW5jdGlvbiBuZXN0ZWRTdWJ0cmVlTXV0YXRpb25zKC4uLmNhbGxiYWNrcykgeworICAgIGNvbnN0
IG5leHRDYWxsYmFjayA9IGNhbGxiYWNrcy5zaGlmdCgpOworICAgIGlmICghbmV4dENhbGxiYWNr
KQorICAgICAgICByZXR1cm47CisgICAgZy5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9k
aWZpZWQiLCAoKSA9PiB7CisgICAgICAgIG5lc3RlZFN1YnRyZWVNdXRhdGlvbnMoLi4uY2FsbGJh
Y2tzKTsKKyAgICB9LCB7b25jZTogdHJ1ZX0pOworICAgIG5leHRDYWxsYmFjaygpOworfQorCitv
bmxvYWQgPSAoKSA9PiB7CisgICAgbmVzdGVkU3VidHJlZU11dGF0aW9ucygKKyAgICAgICAgKCkg
PT4gZy5zZXRBdHRyaWJ1dGUoInN0cm9rZSIsICJibHVlIiksCisgICAgICAgICgpID0+IGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxzZSksCisgICAgICAgICgpID0+IHRzcGFuLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3JlY3QnKSksCisgICAgICAgICgpID0+
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxzZSksCisgICAgICAgICgpID0+IGcu
c2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgInZhcjAwMDYzIikpOworICAgIGRvY3VtZW50LmJvZHku
aW5uZXJUZXh0ID0gYFRoaXMgdGVzdHMgbXV0YXRpbmcgU1ZHIHN5bWJvbCBlbGVtZW50J3Mgc3Vi
dHJlZSByZWZlcmVuY2VkIGJ5IGEgU1ZHIHVzZSBlbGVtZW50IGluc2lkZSBhIGV2ZW50IHF1ZXVl
IHNjb3BlLgorV2ViS2l0IHNob3VsZCBub3QgaGl0IGFueSBhc3NlcnRpb25zIG9yIGNyYXNoLgor
CitQQVNTLmA7Cit9Cis8L3NjcmlwdD4KKzxzdmc+PHN5bWJvbCBpZD0ic3ltYm9sMSI+PGcgaWQ9
ImciPjx0c3BhbiBpZD0idHNwYW4iLz48L3N5bWJvbD48dXNlIGhyZWY9IiNzeW1ib2wxIiAvPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS91cGRhdGUtc3ZnLXVzZS1zaGFkb3ctdHJl
ZS13aXRoLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vdXBk
YXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWJmOGZkZTc3NjRhNDY4MjI2NDc0YmU3YWNjM2Q2MTBjMDVmYjdjYgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRy
ZWUtd2l0aC1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0
ZXN0cyB1cGRhdGluZyB0aGUgU1ZHIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUgaW5zaWRlIGEg
ZXZlbnQgcXVldWUgc2NvcGUuCitXZWJLaXQgc2hvdWxkIG5vdCBkaXNwYWNoIGFueSBtdXRhdGlv
biBldmVudHMKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VidHJlZU1v
ZGlmaWVkRmlyZWQgaXMgZmFsc2UKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxz
ZSkKK1BBU1Mgc3VidHJlZU1vZGlmaWVkRmlyZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQuaHRt
bCBiL0xheW91dFRlc3RzL3N2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1l
eGVjQ29tbWFuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYmJlMDgzNjIyZjA4ZDAzZWI4NDU4M2NmYjFm
YmE3YmYxYWQzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3VwZGF0
ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQuaHRtbApAQCAtMCwwICsxLDIz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c3ZnPjxzeW1ib2wgaWQ9InN5
bWJvbDEiPjxnIGlkPSJnIj48dHNwYW4gaWQ9InRzcGFuIi8+PC9zeW1ib2w+PHVzZSBpZD0idXNl
IiBocmVmPSIjc3ltYm9sMSIgLz48L3N2Zz4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitkZXNjcmlwdGlvbihgVGhpcyB0ZXN0
cyB1cGRhdGluZyB0aGUgU1ZHIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUgaW5zaWRlIGEgZXZl
bnQgcXVldWUgc2NvcGUuPGJyPgorV2ViS2l0IHNob3VsZCBub3QgZGlzcGFjaCBhbnkgbXV0YXRp
b24gZXZlbnRzYCk7CisKK2cuc2V0QXR0cmlidXRlKCJzdHJva2UiLCAiYmx1ZSIpOworbGV0IHN1
YnRyZWVNb2RpZmllZEZpcmVkID0gZmFsc2U7CitnLmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRy
ZWVNb2RpZmllZCIsICgpID0+IHN1YnRyZWVNb2RpZmllZEZpcmVkID0gdHJ1ZSwge29uY2U6IHRy
dWV9KTsKKworc2hvdWxkQmVGYWxzZSgnc3VidHJlZU1vZGlmaWVkRmlyZWQnKTsKK2V2YWxBbmRM
b2coJ2RvY3VtZW50LmV4ZWNDb21tYW5kKCJ1c2Vjc3MiLCBmYWxzZSknKTsKK3Nob3VsZEJlRmFs
c2UoJ3N1YnRyZWVNb2RpZmllZEZpcmVkJyk7CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425235</attachid>
            <date>2021-04-05 20:28:48 -0700</date>
            <delta_ts>2021-04-06 00:55:07 -0700</delta_ts>
            <desc>Added a test for regular shadow tree</desc>
            <filename>bug-224174-20210405202848.patch</filename>
            <type>text/plain</type>
            <size>16485</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA5ZmRjYzBkZWVkYmI0
NDFlOGI3MWEyZTliYjQ5OTliY2IwZjQ2Ni4uMmE1NjllMDcxYmRhZTFhMTY0NWY5Y2EyM2IzNDYy
OGE3YWZmY2M3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTA0LTA1ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEFzc2VydCBmYWlsdXJlIGlu
IGlzQ2xvbmVJblNoYWRvd1RyZWVPZlNWR1VzZUVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBidWcgd2FzIGNhdXNlZCBieSB0d28gcmVs
YXRlZCBidXQgZGlzdGljbnQgaXNzdWVzOgorICAgICAgICAxLiBBbiBlbGVtZW50IGNhbiBoYXZl
IGFuIGluc3RhbmNlIHRoYXQgaGFkIGJlZW4gcmVtb3ZlZCBmcm9tIGEgdXNlIGVsZW1lbnQncyBz
aGFkb3cgdHJlZQorICAgICAgICAgICBidXQgbm90IHlldCBkZWxldGVkLiBCZWNhdXNlIFNWR0Vs
ZW1lbnQgY2xlYXJzIGl0cyBjb3JyZXNwb25kaW5nRWxlbWVudCBpbiBpdHMgZGVzdHJ1Y3RvciwK
KyAgICAgICAgICAgd2hlbiBhZGRFdmVudExpc3RlbmVyIGlzIGNhbGxlZCBvbiBzdWNoIGFuIGVs
ZW1lbnQsIGl0IGNhbiB0cnkgdG8gYWRkIGFuIGV2ZW50IGxpc3RlbmVyCisgICAgICAgICAgIG9u
IHRoaXMgaW5zdGFuY2Ugd2hpY2ggaXMgaW4gdGhlIHByb2Nlc3Mgb2YgZ2V0dGluZyBkaXNwb3Nl
ZC4KKyAgICAgICAgMi4gRE9NIG11dGF0aW9uIGV2ZW50cyBjYW4gYmUgZmlyZWQgb24gdGhlIGNv
cnJlc3BvbmRpbmcgZWxlbWVudCBvZiBhbiBpbnN0YW5jZSBpbnNpZGUKKyAgICAgICAgICAgYSB1
c2UgZWxlbWVudOKAmXMgc2hhZG93IHRyZWUgd2l0aCBFdmVudFF1ZXVlU2NvcGUgaW4gdGhlIHN0
YWNrIHdoZW4gdGhlIGV2ZW50IGlzIHNjaGVkdWVsZAorICAgICAgICAgICB2aWEgTm9kZTo6ZGlz
cGF0Y2hTY29wZWRFdmVudCwgZS5nLiBiZWNhdXNlIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUg
d2FzIHVwZGF0ZWQgZHVyaW5nCisgICAgICAgICAgIGEgc3R5bGUgdXBkYXRlIGF0IHRoZSBiZWdp
bm5pbmcgb2YgZG9jdW1lbnQuZXhlY0NvbWFuZC4gQmVjYXVzZSBTVkdVc2VFbGVtZW50OjpjbG9u
ZVRhcmdldAorICAgICAgICAgICBjb25zdHJ1Y3RzIHRoZSBzaGFkb3cgdHJlZSBieSBjbG9uaW5n
IHRoZSBvcmlnaW5hbCB0cmVlIHdoaWxlIGl0J3MgZGlzY29ubmVjdGVkIGZyb20gdGhlCisgICAg
ICAgICAgIGRvY3VtZW50LCBOb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50IHNlZXMg
aXNJblNoYWRvd1RyZWUoKSB0byBiZSBmYWxzZSBhbmQgaGFwcGlseQorICAgICAgICAgICB0cmll
cyB0byBkaXNwYWNoIERPTVN1YnRyZWVNb2RpZmllZCBldmVudCB1c2luZyBOb2RlOjpkaXNwYXRj
aFNjb3BlZEV2ZW50LiBUaGlzIHdvcmtzIGZpbmUKKyAgICAgICAgICAgd2hlbiB0aGUgZXZlbnQg
aXMgZGlzcGF0Y2hlZCBzeW5jaHJvbm91c2x5IHNpbmNlIHRoZXNlIGVsZW1lbnRzIGhhZCBuZXZl
ciBiZWVuIGV4cG9zZWQgdG8KKyAgICAgICAgICAgYW55IHNjcmlwdHMgeWV0IGFuZCB0aGV5IGFy
ZSBzdGlsbCBkaXNjb25uZWN0ZWQgc28gbm8gc2NyaXB0cyBoYXZlIGhhZCBhbiBvcHBvcnR1bml0
eSB0bworICAgICAgICAgICBhdHRhY2ggYW4gZXZlbnQgbGlzdGVuZXIuIEJ1dCB3aGVuIEV2ZW50
UXVldWVTY29wZSBpbiB0aGUgc3RhY2ssIE5vZGU6OmRpc3BhdGNoU2NvcGVkRXZlbnQKKyAgICAg
ICAgICAgd2lsbCBxdWV1ZSB1cCB0aGUgZXZlbnQgYW5kIGZpcmUgaXQgbGF0ZXIgd2hlbiB0aG9z
ZSBpbnN0YW5jZSBlbGVtZW50cyBoYWQgYmVlbiBpbnNlcnRlZAorICAgICAgICAgICBpbnRvIHVz
ZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMg
KDEpIGJ5IHNldmVyaW5nIGNvcnJlc3BvbmRpbmdFbGVtZW50IHJlbGF0aW9uc2hpcCBhcyBzb29u
IGFzIGFuIGluc3RhbmNlCisgICAgICAgIGlzIHJlbW92ZWQgZnJvbSBpdHMgdXNlIGVsZW1lbnQn
cyBzaGFkb3cgdHJlZSwgYW5kICgyKSBieSBub3QgZGlzcGF0Y2hpbmcgYSBzY2hlZHVsZWQgbXV0
YXRpb24KKyAgICAgICAgZXZlbnQgaWYgdGhlIHRhcmdldCBpcyBpbnNpZGUgYSBzaGFkb3cgdHJl
ZS4gTm90ZSB0aGF0IHRoaXMgcGF0Y2ggYWxzbyBhZGRyZXNzZXMgKDIpIGZvcgorICAgICAgICBh
IHJlZ3VsYXIgc2hhZG93IHRyZWUgYXR0YWNoZWQgYnkgYXV0aG9yIHNjcmlwdHMuCisKKyAgICAg
ICAgVGVzdHM6IGZhc3Qvc2hhZG93LWRvbS9tdXRhdGlvbi1ldmVudC1pbi1zaGFkb3ctdHJlZS5o
dG1sCisgICAgICAgICAgICAgICBzdmcvZG9tL211dGF0ZS1zeW1ib2wtc3VidHJlZS1yZWZlcmVu
Y2VkLWJ5LXVzZS1kdXJpbmctZXhlY0NvbW1hbmQuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2Rv
bS91cGRhdGUtc3ZnLXVzZS1zaGFkb3ctdHJlZS13aXRoLWV4ZWNDb21tYW5kLmh0bWwKKworICAg
ICAgICAqIGRvbS9TY29wZWRFdmVudFF1ZXVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjb3Bl
ZEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6On5TVkdFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKToKKwogMjAyMS0wNC0wMiAgUnlv
c3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQZW5kaW5nSW1hZ2VCaXRt
YXAgZ2V0cyBjcmVhdGVkIG9uIGEgc3RvcHBlZCBzY3JpcHQgZXhlY3V0aW9uIGNvbnRleHQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuaAppbmRleCAxZWI4OTE0NWVjNGI1OTRiODE0YmQ5OGI5ZmQxYzZkYjZiZmQxNmYyLi5j
NmJjZjZhMGNmOTNmM2E2ZTU1MTRkZWZlOTQzNTQ2M2JjMDAyMGNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAg
LTIxNiw2ICsyMTYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyZWVTY29wZSgpIGNvbnN0IHsg
cmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50Tm9kZSkgfHwgaGFzTm9kZUZs
YWcoTm9kZUZsYWc6OklzU2hhZG93Um9vdCk7IH0KICAgICBib29sIGlzRG9jdW1lbnRGcmFnbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50RnJhZ21l
bnQpOyB9CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7IHJldHVybiBoYXNOb2RlRmxh
ZyhOb2RlRmxhZzo6SXNTaGFkb3dSb290KTsgfQorICAgIGJvb2wgaXNVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3Q7IC8vIERlZmluZWQgaW4gU2hhZG93Um9vdC5oCiAKICAgICBib29sIGhhc0N1
c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5v
ZGVGbGFnOjpIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MpOyB9CiAKQEAgLTIyNSw3ICsy
MjYsNyBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIGluIGEgc2hhZG93IHRyZWUs
IHJldHVybnMgaXRzIHNoYWRvdyBob3N0LiBPdGhlcndpc2UsIHJldHVybnMgbnVsbC4KICAgICBX
RUJDT1JFX0VYUE9SVCBFbGVtZW50KiBzaGFkb3dIb3N0KCkgY29uc3Q7CiAgICAgU2hhZG93Um9v
dCogY29udGFpbmluZ1NoYWRvd1Jvb3QoKSBjb25zdDsKLSAgICBTaGFkb3dSb290KiBzaGFkb3dS
b290KCkgY29uc3Q7CisgICAgU2hhZG93Um9vdCogc2hhZG93Um9vdCgpIGNvbnN0OyAvLyBEZWZp
bmVkIGluIFNoYWRvd1Jvb3QuaAogICAgIGJvb2wgaXNDbG9zZWRTaGFkb3dIaWRkZW4oY29uc3Qg
Tm9kZSYpIGNvbnN0OwogCiAgICAgSFRNTFNsb3RFbGVtZW50KiBhc3NpZ25lZFNsb3QoKSBjb25z
dDsKQEAgLTI0MCw3ICsyNDEsNyBAQCBwdWJsaWM6CiAgICAgTm9kZSogbm9uQm91bmRhcnlTaGFk
b3dUcmVlUm9vdE5vZGUoKTsKIAogICAgIC8vIE5vZGUncyBwYXJlbnQgb3Igc2hhZG93IHRyZWUg
aG9zdC4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgY29uc3Q7
CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpIGNvbnN0OyAvLyBE
ZWZpbmVkIGluIFNoYWRvd1Jvb3QuaAogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudEluQ29tcG9z
ZWRUcmVlKCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudEluQ29tcG9zZWRUcmVl
KCkgY29uc3Q7CiAgICAgRWxlbWVudCogcGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1Njb3BlZEV2ZW50UXVldWUuY3BwCmluZGV4IDdiYjliMDE3YmZk
NmU2MjY0ZjQzYWE0YzcxMjcwMzVmYmY5OWEyMjEuLmE5ZDI4NDFkNDYyZGUyYTg0MDY1OWM1NjQ0
YzcwZjYzZDhiNWVlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY29wZWRFdmVu
dFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NvcGVkRXZlbnRRdWV1ZS5jcHAK
QEAgLTU2LDYgKzU2LDggQEAgdm9pZCBTY29wZWRFdmVudFF1ZXVlOjplbnF1ZXVlRXZlbnQoUmVm
PEV2ZW50PiYmIGV2ZW50KQogCiB2b2lkIFNjb3BlZEV2ZW50UXVldWU6OmRpc3BhdGNoRXZlbnQo
Y29uc3QgU2NvcGVkRXZlbnQmIGV2ZW50KSBjb25zdAogeworICAgIGlmIChldmVudC5ldmVudC0+
ZXZlbnRJbnRlcmZhY2UoKSA9PSBNdXRhdGlvbkV2ZW50SW50ZXJmYWNlVHlwZSAmJiBldmVudC50
YXJnZXQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVybjsKICAgICBldmVudC50YXJn
ZXQtPmRpc3BhdGNoRXZlbnQoZXZlbnQuZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aAppbmRleCA4OTBkNjkwYzZiYTY1Yzg0NTI4YjEyZTg0NDhkYzllZjAzODIxMTllLi5mNmQ5YmUx
NDhhYzE5MGI3OTYxMjdlYWVjN2VjZDE0NmNmODViNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKQEAgLTE1Myw2ICsxNTMsMTEgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIE5vZGU6OnNoYWRvd1Jv
b3QoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50PigqdGhpcykuc2hhZG93Um9v
dCgpOwogfQogCitpbmxpbmUgYm9vbCBOb2RlOjppc1VzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25z
dAoreworICAgIHJldHVybiBpc1NoYWRvd1Jvb3QoKSAmJiBkb3duY2FzdDxTaGFkb3dSb290Pigq
dGhpcykubW9kZSgpID09IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQ7Cit9CisKIGlubGluZSBD
b250YWluZXJOb2RlKiBOb2RlOjpwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkT3JHQ1RocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAppbmRleCA5YzE0MGNjMWQ0ZTAzOGE0MzYzOGNiNmRiMmM2YjBjYWEzNDJjZmNkLi5hYjVl
YWM0Y2UxYjk2YTg4Y2NhZjQyZjkxOTg1NDkyNDgwNDczMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCkBAIC0xNzEsOSArMTcxLDcgQEAgU1ZHRWxlbWVudDo6flNWR0VsZW1lbnQoKQog
ICAgIGlmIChtX3N2Z1JhcmVEYXRhKSB7CiAgICAgICAgIGZvciAoU1ZHRWxlbWVudCogaW5zdGFu
Y2UgOiBtX3N2Z1JhcmVEYXRhLT5pbnN0YW5jZXMoKSkKICAgICAgICAgICAgIGluc3RhbmNlLT5t
X3N2Z1JhcmVEYXRhLT5zZXRDb3JyZXNwb25kaW5nRWxlbWVudChudWxscHRyKTsKLSAgICAgICAg
aWYgKGF1dG8gY29ycmVzcG9uZGluZ0VsZW1lbnQgPSBtYWtlUmVmUHRyKG1fc3ZnUmFyZURhdGEt
PmNvcnJlc3BvbmRpbmdFbGVtZW50KCkpKQotICAgICAgICAgICAgY29ycmVzcG9uZGluZ0VsZW1l
bnQtPm1fc3ZnUmFyZURhdGEtPmluc3RhbmNlcygpLnJlbW92ZSh0aGlzKTsKLQorICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9zdmdSYXJlRGF0YS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSk7CiAg
ICAgICAgIG1fc3ZnUmFyZURhdGEgPSBudWxscHRyOwogICAgIH0KICAgICBkb2N1bWVudCgpLmFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS5yZWJ1aWxkQWxsRWxlbWVudFJlZmVyZW5jZXNGb3JUYXJnZXQo
KnRoaXMpOwpAQCAtMjUzLDYgKzI1MSw5IEBAIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21B
bmNlc3RvcihSZW1vdmFsVHlwZSByZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9kZSYgb2xkCiAgICAg
ICAgIGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnJlbW92ZUFsbEVsZW1lbnRSZWZl
cmVuY2VzRm9yVGFyZ2V0KCp0aGlzKTsKICAgICB9CiAgICAgaW52YWxpZGF0ZUluc3RhbmNlcygp
OworCisgICAgaWYgKHJlbW92YWxUeXBlLnRyZWVTY29wZUNoYW5nZWQgJiYgb2xkUGFyZW50T2ZS
ZW1vdmVkVHJlZS5pc1VzZXJBZ2VudFNoYWRvd1Jvb3QoKSkKKyAgICAgICAgc2V0Q29ycmVzcG9u
ZGluZ0VsZW1lbnQobnVsbHB0cik7CiB9CiAKIFNWR1NWR0VsZW1lbnQqIFNWR0VsZW1lbnQ6Om93
bmVyU1ZHRWxlbWVudCgpIGNvbnN0CkBAIC0zNzUsNiArMzc2LDcgQEAgYm9vbCBTVkdFbGVtZW50
OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50
TGlzdGVuZXIKICAgICBBU1NFUlQoIWluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSk7CiAgICAgZm9y
IChhdXRvKiBpbnN0YW5jZSA6IGluc3RhbmNlcygpKSB7CiAgICAgICAgIEFTU0VSVChpbnN0YW5j
ZS0+Y29ycmVzcG9uZGluZ0VsZW1lbnQoKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKGluc3Rh
bmNlLT5pc0luVXNlckFnZW50U2hhZG93VHJlZSgpKTsKICAgICAgICAgYm9vbCByZXN1bHQgPSBp
bnN0YW5jZS0+Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLmNvcHlS
ZWYoKSwgb3B0aW9ucyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwog
ICAgIH0KQEAgLTQwMiw2ICs0MDQsNyBAQCBib29sIFNWR0VsZW1lbnQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJgogICAgIEFT
U0VSVCghaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgpKTsKICAgICBmb3IgKGF1dG8mIGluc3RhbmNl
IDogaW5zdGFuY2VzKCkpIHsKICAgICAgICAgQVNTRVJUKGluc3RhbmNlLT5jb3JyZXNwb25kaW5n
RWxlbWVudCgpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoaW5zdGFuY2UtPmlzSW5Vc2VyQWdl
bnRTaGFkb3dUcmVlKCkpOwogCiAgICAgICAgIGlmIChpbnN0YW5jZS0+Tm9kZTo6cmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGQyMjA0MjkwZWU3YmZiYTcxZTFiMjNmYWI3OTY5MmNjODA2MWY0YmIu
LmNmYjAxYTE5MTgyNTRlZmFhYjFhYzU5Yzk4YjI4ZGMxYzkyNzI0NGEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAyMS0wNC0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBc3NlcnQgZmFpbHVyZSBpbiBpc0Nsb25lSW5TaGFkb3dUcmVlT2ZTVkdVc2VFbGVt
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQx
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCB0ZXN0cyBmb3IgbXV0YXRpbmcgbm9kZXMgd2hpY2ggaXMgbGF0ZXIgaW5zZXJ0ZWQgaW50byBh
IHNoYWRvdyB0cmVlIGR1cmluZyBleGVjQ29tbWFuZAorICAgICAgICBhcyB3ZWxsIGFzIGZvcmNp
bmcgYSBTVkcgdXNlIGVsZW1lbnQgdG8gdXBkYXRlIGl0cyBzaGFkb3cgdHJlZSBieSBtdXRhdGlu
ZyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBlbGVtZW50IHRyZWUgZHVyaW5nIGV4ZWNDb21t
YW5kLgorCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL211dGF0aW9uLWV2ZW50LWluLXNoYWRv
dy10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9zaGFkb3ctZG9tL211
dGF0aW9uLWV2ZW50LWluLXNoYWRvdy10cmVlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9k
b20vbXV0YXRlLXN5bWJvbC1zdWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29t
bWFuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9kb20vbXV0YXRlLXN5bWJv
bC1zdWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29tbWFuZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhl
Y0NvbW1hbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZG9tL3VwZGF0ZS1z
dmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQuaHRtbDogQWRkZWQuCisKIDIwMjEt
MDQtMDIgIEFtaXIgTWFyayBKciAgPGFtaXJfbWFya0BhcHBsZS5jb20+CiAKICAgICAgICAgWyBN
YWNPUyBdIG1lZGlhL21vZGVybi1tZWRpYS1jb250cm9scy9tYWNvcy1pbmxpbmUtbWVkaWEtY29u
dHJvbHMvbWFjb3MtaW5saW5lLW1lZGlhLWRyb3BwaW5nLWNvbnRyb2xzLmh0bWwgaXMgYSBmbGFr
eSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vbXV0YXRp
b24tZXZlbnQtaW4tc2hhZG93LXRyZWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL211dGF0aW9uLWV2ZW50LWluLXNoYWRvdy10cmVlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mMjg1MjUyNzY4MWM3MTQzYmM1ZWFhMGYwYTY0MTBhNWU1NmMwNTA0Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL211dGF0aW9uLWV2ZW50LWlu
LXNoYWRvdy10cmVlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3RzIG11
dGF0aW5nIHNoYWRvdyB0cmVlIGluc2lkZSBleGVjQ29tbWFuZC4gV2ViS2l0IHNob3VsZCBub3Qg
ZGlzcGFjaCBET00gbXV0YXRpb24gZXZlbnRzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBtdXRhdGlvbkV2ZW50c1dpdGgoKGVsZW1lbnQpID0+IGVsZW1lbnQuc2V0QXR0
cmlidXRlKCdjbGFzcycsICdmb28nKSkgaXMgIltdIgorUEFTUyBtdXRhdGlvbkV2ZW50c1dpdGgo
KGVsZW1lbnQpID0+IGVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c3BhbicpKSkgaXMgIltdIgorUEFTUyBtdXRhdGlvbkV2ZW50c1dpdGgoKGVsZW1lbnQpID0+IHsg
ZWxlbWVudC50ZXh0Q29udGVudCA9ICdoZWxsbyc7IGVsZW1lbnQuZmlyc3RDaGlsZC5hcHBlbmRE
YXRhKCcgd29ybGQnKSB9KSBpcyAiW10iCitQQVNTIG11dGF0aW9uRXZlbnRzV2l0aCgoZWxlbWVu
dCkgPT4gZWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NwYW4nKSkpKSBpcyAiW10iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL211dGF0aW9uLWV2ZW50LWluLXNoYWRvdy10cmVlLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3NoYWRvdy1kb20vbXV0YXRpb24tZXZlbnQtaW4tc2hhZG93LXRyZWUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NjY2ZmFlNmY5ZWU2ZjQ2NmM1NWZmMzY0MjI0NjRiZGI0ZDUzMDkwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL211dGF0aW9uLWV2ZW50LWlu
LXNoYWRvdy10cmVlLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIG11dGF0aW5nIHNoYWRv
dyB0cmVlIGluc2lkZSBleGVjQ29tbWFuZC4gV2ViS2l0IHNob3VsZCBub3QgZGlzcGFjaCBET00g
bXV0YXRpb24gZXZlbnRzLicpOworCitmdW5jdGlvbiBtdXRhdGlvbkV2ZW50c1dpdGgodGVzdEZ1
bmN0aW9uKQoreworICAgIGNvbnN0IGhvc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGhvc3QpOworICAgIGNvbnN0IHNoYWRv
d1Jvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7bW9kZTogJ2Nsb3NlZCd9KTsKKyAgICBzaGFkb3dS
b290LmlubmVySFRNTCA9ICc8ZGl2IGlkPSJlZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT5oZWxsbyA8
c3Bhbj48L3NwYW4+d29ybGQ8L2Rpdj4nOworICAgIGNvbnN0IGVkaXRvciA9IHNoYWRvd1Jvb3Qu
Z2V0RWxlbWVudEJ5SWQoJ2VkaXRvcicpOworICAgIGNvbnN0IGlmcmFtZSA9IHNoYWRvd1Jvb3Qu
cXVlcnlTZWxlY3Rvcignc3BhbicpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lmcmFtZScpKTsKKworICAgIGVkaXRvci5mb2N1cygpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCdzZWxlY3RBbGwnKTsKKworICAgIGNvbnN0IGV2ZW50cyA9IFtdOworICAgIGNvbnN0IGV2
ZW50VHlwZXMgPSBbJ0RPTVN1YnRyZWVNb2RpZmllZCcsICdET01Ob2RlSW5zZXJ0ZWQnLCAnRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50JywgJ0RPTU5vZGVSZW1vdmVkJywgJ0RPTU5vZGVSZW1v
dmVkRnJvbURvY3VtZW50JywgJ0RPTUNoYXJhY3RlckRhdGFNb2RpZmllZCddOworICAgIGlmcmFt
ZS5jb250ZW50V2luZG93Lm9udW5sb2FkID0gKCkgPT4geworICAgICAgICBjb25zdCBkaXYgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZm9yIChjb25zdCB0eXBlIG9m
IGV2ZW50VHlwZXMpCisgICAgICAgICAgICBkaXYuYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCAoZXZl
bnQpID0+IHsgZXZlbnRzLnB1c2goZXZlbnQudHlwZSk7IH0sIHtvbmNlOiB0cnVlfSk7CisgICAg
ICAgIHRlc3RGdW5jdGlvbihkaXYpOworICAgICAgICBzaGFkb3dSb290LmFwcGVuZENoaWxkKGRp
dik7CisgICAgfTsKKworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdkZWxldGUnLCBmYWxzZSwg
bnVsbCk7CisgICAgaG9zdC5yZW1vdmUoKTsKKworICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShl
dmVudHMpOworfQorCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoYG11dGF0aW9uRXZlbnRzV2l0aCgo
ZWxlbWVudCkgPT4gZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgJ2ZvbycpKWAsIGBbXWAp
Oworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGBtdXRhdGlvbkV2ZW50c1dpdGgoKGVsZW1lbnQpID0+
IGVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKSlgLCBg
W11gKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZyhgbXV0YXRpb25FdmVudHNXaXRoKChlbGVtZW50
KSA9PiB7IGVsZW1lbnQudGV4dENvbnRlbnQgPSAnaGVsbG8nOyBlbGVtZW50LmZpcnN0Q2hpbGQu
YXBwZW5kRGF0YSgnIHdvcmxkJykgfSlgLCBgW11gKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZyhg
bXV0YXRpb25FdmVudHNXaXRoKChlbGVtZW50KSA9PiBlbGVtZW50LmFwcGVuZENoaWxkKGVsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKSkpYCwgYFtdYCk7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVyaW5nLWV4
ZWNDb21tYW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2Zy9kb20vbXV0YXRlLXN5bWJv
bC1zdWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29tbWFuZC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTA1M2M0ZDVlMWViNjgwMjZlNzkwMjk5N2E4ODgxN2Y5NmFiNjgxNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20vbXV0YXRlLXN5bWJvbC1zdWJ0
cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACitUaGlzIHRlc3RzIG11dGF0aW5nIFNWRyBzeW1ib2wgZWxlbWVudCdzIHN1
YnRyZWUgcmVmZXJlbmNlZCBieSBhIFNWRyB1c2UgZWxlbWVudCBpbnNpZGUgYSBldmVudCBxdWV1
ZSBzY29wZS4KK1dlYktpdCBzaG91bGQgbm90IGhpdCBhbnkgYXNzZXJ0aW9ucyBvciBjcmFzaC4K
KworUEFTUy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9kb20vbXV0YXRlLXN5bWJvbC1z
dWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29tbWFuZC5odG1sIGIvTGF5b3V0
VGVzdHMvc3ZnL2RvbS9tdXRhdGUtc3ltYm9sLXN1YnRyZWUtcmVmZXJlbmNlZC1ieS11c2UtZHVy
aW5nLWV4ZWNDb21tYW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM2Zjc3ZmMwMmVmYWRiNDU0NmJmYjVk
ZGVhZTA4ODFlM2I0MDBhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9kb20v
bXV0YXRlLXN5bWJvbC1zdWJ0cmVlLXJlZmVyZW5jZWQtYnktdXNlLWR1cmluZy1leGVjQ29tbWFu
ZC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gbmVzdGVkU3VidHJl
ZU11dGF0aW9ucyguLi5jYWxsYmFja3MpIHsKKyAgICBjb25zdCBuZXh0Q2FsbGJhY2sgPSBjYWxs
YmFja3Muc2hpZnQoKTsKKyAgICBpZiAoIW5leHRDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOwor
ICAgIGcuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgKCkgPT4geworICAg
ICAgICBuZXN0ZWRTdWJ0cmVlTXV0YXRpb25zKC4uLmNhbGxiYWNrcyk7CisgICAgfSwge29uY2U6
IHRydWV9KTsKKyAgICBuZXh0Q2FsbGJhY2soKTsKK30KKworb25sb2FkID0gKCkgPT4geworICAg
IG5lc3RlZFN1YnRyZWVNdXRhdGlvbnMoCisgICAgICAgICgpID0+IGcuc2V0QXR0cmlidXRlKCJz
dHJva2UiLCAiYmx1ZSIpLAorICAgICAgICAoKSA9PiBkb2N1bWVudC5leGVjQ29tbWFuZCgidXNl
Y3NzIiwgZmFsc2UpLAorICAgICAgICAoKSA9PiB0c3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdyZWN0JykpLAorICAgICAgICAoKSA9PiBkb2N1bWVudC5leGVjQ29tbWFu
ZCgidXNlY3NzIiwgZmFsc2UpLAorICAgICAgICAoKSA9PiBnLnNldEF0dHJpYnV0ZSgib25jbGlj
ayIsICJ2YXIwMDA2MyIpKTsKKyAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9IGBUaGlzIHRl
c3RzIG11dGF0aW5nIFNWRyBzeW1ib2wgZWxlbWVudCdzIHN1YnRyZWUgcmVmZXJlbmNlZCBieSBh
IFNWRyB1c2UgZWxlbWVudCBpbnNpZGUgYSBldmVudCBxdWV1ZSBzY29wZS4KK1dlYktpdCBzaG91
bGQgbm90IGhpdCBhbnkgYXNzZXJ0aW9ucyBvciBjcmFzaC4KKworUEFTUy5gOworfQorPC9zY3Jp
cHQ+Cis8c3ZnPjxzeW1ib2wgaWQ9InN5bWJvbDEiPjxnIGlkPSJnIj48dHNwYW4gaWQ9InRzcGFu
Ii8+PC9zeW1ib2w+PHVzZSBocmVmPSIjc3ltYm9sMSIgLz4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N2Zy9kb20vdXBkYXRlLXN2Zy11c2Utc2hhZG93LXRyZWUtd2l0aC1leGVjQ29tbWFuZC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10
cmVlLXdpdGgtZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZjhmZGU3NzY0
YTQ2ODIyNjQ3NGJlN2FjYzNkNjEwYzA1ZmI3Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdmcvZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK1RoaXMgdGVzdHMgdXBkYXRpbmcgdGhlIFNW
RyB1c2UgZWxlbWVudCdzIHNoYWRvdyB0cmVlIGluc2lkZSBhIGV2ZW50IHF1ZXVlIHNjb3BlLgor
V2ViS2l0IHNob3VsZCBub3QgZGlzcGFjaCBhbnkgbXV0YXRpb24gZXZlbnRzCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1YnRyZWVNb2RpZmllZEZpcmVkIGlzIGZhbHNl
Citkb2N1bWVudC5leGVjQ29tbWFuZCgidXNlY3NzIiwgZmFsc2UpCitQQVNTIHN1YnRyZWVNb2Rp
ZmllZEZpcmVkIGlzIGZhbHNlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2RvbS91cGRhdGUtc3Zn
LXVzZS1zaGFkb3ctdHJlZS13aXRoLWV4ZWNDb21tYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcv
ZG9tL3VwZGF0ZS1zdmctdXNlLXNoYWRvdy10cmVlLXdpdGgtZXhlY0NvbW1hbmQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45YWJiZTA4MzYyMmYwOGQwM2ViODQ1ODNjZmIxZmJhN2JmMWFkM2FkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2RvbS91cGRhdGUtc3ZnLXVzZS1zaGFkb3ctdHJl
ZS13aXRoLWV4ZWNDb21tYW5kLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxib2R5PgorPHN2Zz48c3ltYm9sIGlkPSJzeW1ib2wxIj48ZyBpZD0iZyI+PHRz
cGFuIGlkPSJ0c3BhbiIvPjwvc3ltYm9sPjx1c2UgaWQ9InVzZSIgaHJlZj0iI3N5bWJvbDEiIC8+
PC9zdmc+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KKworZGVzY3JpcHRpb24oYFRoaXMgdGVzdHMgdXBkYXRpbmcgdGhlIFNWRyB1
c2UgZWxlbWVudCdzIHNoYWRvdyB0cmVlIGluc2lkZSBhIGV2ZW50IHF1ZXVlIHNjb3BlLjxicj4K
K1dlYktpdCBzaG91bGQgbm90IGRpc3BhY2ggYW55IG11dGF0aW9uIGV2ZW50c2ApOworCitnLnNl
dEF0dHJpYnV0ZSgic3Ryb2tlIiwgImJsdWUiKTsKK2xldCBzdWJ0cmVlTW9kaWZpZWRGaXJlZCA9
IGZhbHNlOworZy5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9kaWZpZWQiLCAoKSA9PiBz
dWJ0cmVlTW9kaWZpZWRGaXJlZCA9IHRydWUsIHtvbmNlOiB0cnVlfSk7CisKK3Nob3VsZEJlRmFs
c2UoJ3N1YnRyZWVNb2RpZmllZEZpcmVkJyk7CitldmFsQW5kTG9nKCdkb2N1bWVudC5leGVjQ29t
bWFuZCgidXNlY3NzIiwgZmFsc2UpJyk7CitzaG91bGRCZUZhbHNlKCdzdWJ0cmVlTW9kaWZpZWRG
aXJlZCcpOworCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="445100"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>