<?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>208311</bug_id>
          
          <creation_ts>2020-02-27 07:52:09 -0800</creation_ts>
          <short_desc>Crash in RenderStyle::hasExplicitlySetDirection</short_desc>
          <delta_ts>2020-04-06 05:58:20 -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>DOM</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="Ali Juma">ajuma</reporter>
          <assigned_to name="Eugene But">eugenebut</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>eugenebut</cc>
    
    <cc>ews-feeder</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>product-security</cc>
    
    <cc>rniwa</cc>
    
    <cc>rohitrao</cc>
    
    <cc>sdefresne</cc>
    
    <cc>shihchieh_lee</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1623472</commentid>
    <comment_count>0</comment_count>
      <attachid>391868</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2020-02-27 07:52:09 -0800</bug_when>
    <thetext>Created attachment 391868
Minimal test case

Filing this as a security bug since it was found using a fuzzer; there&apos;s no disclosure deadline for this bug.

Crash stack:
=================================================================
==46072==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000070 (pc 0x0004b836e7a1 bp 0x7ffee4169930 sp 0x7ffee4169930 T0)
==46072==The signal is caused by a READ memory access.
==46072==Hint: address points to the zero page.
==46072==WARNING: invalid path to external symbolizer!
==46072==WARNING: Failed to use and restart external symbolizer!
    #0 0x4b836e7a0 in WebCore::RenderStyle::hasExplicitlySetDirection() const (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x47f47a0)
    #1 0x4b8305cc4 in WebCore::RenderBox::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x478bcc4)
    #2 0x4b8305849 in WebCore::RenderBlock::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x478b849)
    #3 0x4b83598b6 in WebCore::RenderBlockFlow::styleDidChange(WebCore::StyleDifference, WebCore::RenderStyle const*) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x47df8b6)
    #4 0x4b88de674 in WebCore::RenderTreeUpdater::createRenderer(WebCore::Element&amp;, WebCore::RenderStyle&amp;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x4d64674)
    #5 0x4b88dc72a in WebCore::RenderTreeUpdater::updateElementRenderer(WebCore::Element&amp;, WebCore::Style::ElementUpdate const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x4d6272a)
    #6 0x4b88dbdd1 in WebCore::RenderTreeUpdater::updateRenderTree(WebCore::ContainerNode&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x4d61dd1)
    #7 0x4b88db40b in WebCore::RenderTreeUpdater::commit(std::__1::unique_ptr&lt;WebCore::Style::Update const, std::__1::default_delete&lt;WebCore::Style::Update const&gt; &gt;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x4d6140b)
    #8 0x4b6aad4bd in WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2f334bd)
    #9 0x4b6aae280 in WebCore::Document::updateStyleIfNeeded() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2f34280)
    #10 0x4b6aa72c3 in WebCore::Document::updateLayout() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2f2d2c3)
    #11 0x4b6aa9472 in WebCore::Document::updateLayoutIgnorePendingStylesheets(WebCore::Document::RunPostLayoutTasks) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2f2f472)
    #12 0x4b6ecfe0a in WebCore::VisiblePosition::canonicalPosition(WebCore::Position const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x3355e0a)
    #13 0x4b6ecfb90 in WebCore::VisiblePosition::init(WebCore::Position const&amp;, WebCore::EAffinity) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x3355b90)
    #14 0x4b6ed70a5 in WebCore::VisibleSelection::setBaseAndExtentToDeepEquivalents() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x335d0a5)
    #15 0x4b6ed5972 in WebCore::VisibleSelection::validate(WebCore::TextGranularity) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x335b972)
    #16 0x4b6e122c5 in WebCore::FrameSelection::moveTo(WebCore::Position const&amp;, WebCore::EAffinity, WebCore::EUserTriggered) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x32982c5)
    #17 0x4b79549ee in WebCore::DOMSelection::collapseToEnd() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x3dda9ee)
    #18 0x4b44b6435 in WebCore::jsDOMSelectionPrototypeFunctionCollapseToEndBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDOMSelection*, JSC::ThrowScope&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x93c435)
    #19 0x4b4338330 in long long WebCore::IDLOperation&lt;WebCore::JSDOMSelection&gt;::call&lt;&amp;(WebCore::jsDOMSelectionPrototypeFunctionCollapseToEndBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSDOMSelection*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x7be330)
    #20 0x49e53c601177  (&lt;unknown module&gt;)
    #21 0x49e57c600427  (&lt;unknown module&gt;)
    #22 0x4ce6c43d8 in vmEntryToJavaScript (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xa753d8)
    #23 0x4cfcec937 in JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x209d937)
    #24 0x4d0318140 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c9140)
    #25 0x4d0318242 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c9242)
    #26 0x4d031861f in JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c961f)
    #27 0x4b641401b in WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x289a01b)
    #28 0x4b643d071 in WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x28c3071)
    #29 0x4b6bdf35b in WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;, WebCore::EventTarget::EventInvokePhase) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x306535b)
    #30 0x4b6bda6f2 in WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x30606f2)
    #31 0x4b6bc765d in WebCore::EventContext::handleLocalEvents(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) const (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304d65d)
    #32 0x4b6bc8529 in WebCore::dispatchEventInDOM(WebCore::Event&amp;, WebCore::EventPath const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304e529)
    #33 0x4b6bc7fad in WebCore::EventDispatcher::dispatchEvent(WebCore::Node&amp;, WebCore::Event&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304dfad)
    #34 0x4b6bc7a6d in WebCore::EventDispatcher::dispatchScopedEvent(WebCore::Node&amp;, WebCore::Event&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304da6d)
    #35 0x4b6c61297 in WebCore::Node::dispatchSubtreeModifiedEvent() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x30e7297)
    #36 0x4b6a4d018 in WebCore::ContainerNode::replaceChild(WebCore::Node&amp;, WebCore::Node&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2ed3018)
    #37 0x4b6c5455e in WebCore::Node::replaceChild(WebCore::Node&amp;, WebCore::Node&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x30da55e)
    #38 0x4b4c8c2e4 in WebCore::jsNodePrototypeFunctionReplaceChildBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSNode*, JSC::ThrowScope&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x11122e4)
    #39 0x4b4c09c85 in long long WebCore::IDLOperation&lt;WebCore::JSNode&gt;::call&lt;&amp;(WebCore::jsNodePrototypeFunctionReplaceChildBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSNode*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x108fc85)
    #40 0x49e53c601177  (&lt;unknown module&gt;)
    #41 0x49e57c6005c5  (&lt;unknown module&gt;)
    #42 0x4ce6c43d8 in vmEntryToJavaScript (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xa753d8)
    #43 0x4cfcec937 in JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x209d937)
    #44 0x4d0318140 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c9140)
    #45 0x4d0318242 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c9242)
    #46 0x4d031861f in JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c961f)
    #47 0x4b641401b in WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x289a01b)
    #48 0x4b643d071 in WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext&amp;, WebCore::Event&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x28c3071)
    #49 0x4b6bdf35b in WebCore::EventTarget::innerInvokeEventListeners(WebCore::Event&amp;, WTF::Vector&lt;WTF::RefPtr&lt;WebCore::RegisteredEventListener, WTF::DumbPtrTraits&lt;WebCore::RegisteredEventListener&gt; &gt;, 1ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;, WebCore::EventTarget::EventInvokePhase) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x306535b)
    #50 0x4b6bda6f2 in WebCore::EventTarget::fireEventListeners(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x30606f2)
    #51 0x4b6bc765d in WebCore::EventContext::handleLocalEvents(WebCore::Event&amp;, WebCore::EventTarget::EventInvokePhase) const (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304d65d)
    #52 0x4b6bc8529 in WebCore::dispatchEventInDOM(WebCore::Event&amp;, WebCore::EventPath const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304e529)
    #53 0x4b6bc7fad in WebCore::EventDispatcher::dispatchEvent(WebCore::Node&amp;, WebCore::Event&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304dfad)
    #54 0x4b6bc7a6d in WebCore::EventDispatcher::dispatchScopedEvent(WebCore::Node&amp;, WebCore::Event&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x304da6d)
    #55 0x4b6c61297 in WebCore::Node::dispatchSubtreeModifiedEvent() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x30e7297)
    #56 0x4b6a4b537 in WebCore::ContainerNode::appendChildWithoutPreInsertionValidityCheck(WebCore::Node&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2ed1537)
    #57 0x4b6a4f874 in WebCore::ContainerNode::appendChild(WebCore::Node&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2ed5874)
    #58 0x4b6c548f4 in WebCore::Node::appendChild(WebCore::Node&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x30da8f4)
    #59 0x4b4c8bcab in WebCore::jsNodePrototypeFunctionAppendChildBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSNode*, JSC::ThrowScope&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x1111cab)
    #60 0x4b4c09ac5 in long long WebCore::IDLOperation&lt;WebCore::JSNode&gt;::call&lt;&amp;(WebCore::jsNodePrototypeFunctionAppendChildBody(JSC::JSGlobalObject*, JSC::CallFrame*, WebCore::JSNode*, JSC::ThrowScope&amp;)), (WebCore::CastedThisErrorBehavior)0&gt;(JSC::JSGlobalObject&amp;, JSC::CallFrame&amp;, char const*) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x108fac5)
    #61 0x49e53c601177  (&lt;unknown module&gt;)
    #62 0x4ce6db45b in llint_entry (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xa8c45b)
    #63 0x4ce6c43d8 in vmEntryToJavaScript (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0xa753d8)
    #64 0x4cfcec937 in JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x209d937)
    #65 0x4d0318140 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c9140)
    #66 0x4d0318242 in JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c9242)
    #67 0x4d031861f in JSC::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/JavaScriptCore.framework/Versions/A/JavaScriptCore:x86_64+0x26c961f)
    #68 0x4b641401b in WebCore::JSExecState::profiledCall(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x289a01b)
    #69 0x4b64defa8 in WebCore::ScheduledAction::executeFunctionInContext(JSC::JSGlobalObject*, JSC::JSValue, WebCore::ScriptExecutionContext&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x2964fa8)
    #70 0x4b64de95a in WebCore::ScheduledAction::execute(WebCore::Document&amp;) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x296495a)
    #71 0x4b7958aaa in WebCore::DOMTimer::fired() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x3ddeaaa)
    #72 0x4b7cb6f06 in WebCore::ThreadTimers::sharedTimerFiredInternal() (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x413cf06)
    #73 0x4b7d2e40e in WebCore::timerFired(__CFRunLoopTimer*, void*) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebCore.framework/Versions/A/WebCore:x86_64+0x41b440e)
    #74 0x7fff3d7fee14 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x59e14)
    #75 0x7fff3d7fe9c0 in __CFRunLoopDoTimer (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x599c0)
    #76 0x7fff3d7fe4f9 in __CFRunLoopDoTimers (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x594f9)
    #77 0x7fff3d7dfb33 in __CFRunLoopRun (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x3ab33)
    #78 0x7fff3d7df084 in CFRunLoopRunSpecific (/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation:x86_64+0x3a084)
    #79 0x7fff3fa53a9e in -[NSRunLoop(NSRunLoop) runMode:beforeDate:] (/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation:x86_64+0x1ca9e)
    #80 0x7fff3fa53973 in -[NSRunLoop(NSRunLoop) run] (/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation:x86_64+0x1c973)
    #81 0x7fff69ecb1d6 in _xpc_objc_main (/usr/lib/system/libxpc.dylib:x86_64+0x111d6)
    #82 0x7fff69ecacd8 in xpc_main (/usr/lib/system/libxpc.dylib:x86_64+0x10cd8)
    #83 0x4a8904465 in WebKit::XPCServiceMain(int, char const**) (/Users/chrome-bot/clusterfuzz/bot/builds/mac_asan_webkit/custom/Release/WebKit.framework/Versions/A/WebKit:x86_64+0x904465)
    #84 0x7fff69c983d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4)
==46072==Register values:
rax = 0x000000000000000e  rbx = 0x00007ffee4169a40  rcx = 0x000010000000000e  rdx = 0x0000000000000000
rdi = 0x0000000000000070  rsi = 0x0000000000000000  rbp = 0x00007ffee4169930  rsp = 0x00007ffee4169930
 r8 = 0x0000000000000000   r9 = 0x0000100000000000  r10 = 0x00000004ba065168  r11 = 0xfffffffffffffec0
r12 = 0x0000612000a93840  r13 = 0x0000000000c2b700  r14 = 0x0000000000000000  r15 = 0x0000000000000000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623473</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-27 07:52:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/59847043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631961</commentid>
    <comment_count>2</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-19 19:25:41 -0700</bug_when>
    <thetext>RenderBox::styleDidChange crashes when changing style for HTMLBodyElement element.
Crash happens on dereferencing null document().documentElement()-&gt;renderer() pointer:

if (.... || !documentElementRenderer-&gt;style().hasExplicitlySetWritingMode())) {


During the crash web page reattaches &lt;body&gt; element to &lt;desc&gt; element:
document.getElementsByTagName(&quot;desc&quot;)[0].appendChild(document.getElementById(&quot;body&quot;));

with JavaScript below:

function DOMSubtreeModifiedHandler() {
  var desc = document.createElementNS(&apos;http://www.w3.org/2000/svg&apos;, &apos;desc&apos;);
  try {
    document.appendChild(desc);
  }
  catch(e) {
    // Can cause JS stack overflow.
  }
  document.replaceChild(document.getElementById(&quot;body&quot;), event.srcElement);
}
document.addEventListener(&quot;DOMSubtreeModified&quot;, DOMSubtreeModifiedHandler);
setTimeout(function() {
  document.getElementById(&quot;head&quot;).outerHTML = &quot;&quot;;
  document.getElementsByTagName(&quot;desc&quot;)[0].appendChild(document.getElementById(&quot;body&quot;));
});

It does not feel right that document().documentElement()-&gt;renderer() is null, but RenderBox code has a few places with null pointer checks for document().documentElement()-&gt;renderer(), so for me it&apos;s hard to reason about document().documentElement()-&gt;renderer() lifetime.

I will upload a patch with cleaned up test case (test case attached to this bug is quite complicated) and null pointer check. But I don&apos;t think that adding pointer check is the right fix. I&apos;m not sure where to look further, but I can continue debugging if someone could provide me with pointers. Finally this does not look like a security bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631993</commentid>
    <comment_count>3</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-19 21:31:42 -0700</bug_when>
    <thetext>Chrome does not allow appending &lt;body&gt; as a child for another element and prints the following error in dev tools console:

Uncaught TypeError: Failed to execute &apos;appendChild&apos; on &apos;Node&apos;: parameter 1 is not of type &apos;Node&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632000</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-19 21:43:17 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #3)
&gt; Chrome does not allow appending &lt;body&gt; as a child for another element and
&gt; prints the following error in dev tools console:
&gt; 
&gt; Uncaught TypeError: Failed to execute &apos;appendChild&apos; on &apos;Node&apos;: parameter 1
&gt; is not of type &apos;Node&apos;.

How about Firefox?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632001</commentid>
    <comment_count>5</comment_count>
      <attachid>394068</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-19 22:01:53 -0700</bug_when>
    <thetext>Created attachment 394068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632003</commentid>
    <comment_count>6</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-19 22:10:33 -0700</bug_when>
    <thetext>Firefox does not add &lt;desc&gt; element. The following code inside DOMSubtreeModified callback seems to be no-op:

var desc = document.createElementNS(&apos;http://www.w3.org/2000/svg&apos;, &apos;desc&apos;);
try {
  document.appendChild(desc);
}

Please note that my patch is mostly to demo the problem with small test case. I know that LayoutTests/ChangeLog is no good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632004</commentid>
    <comment_count>7</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-19 22:12:49 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #2)

There is a reentrance allowing &lt;desc&gt; be the first and only child of the document thus in Document::childrenChanged we set documentElement to &lt;desc&gt;.

&gt; It does not feel right that document().documentElement()-&gt;renderer() is
&gt; null, but RenderBox code has a few places with null pointer checks for
&gt; document().documentElement()-&gt;renderer(), so for me it&apos;s hard to reason
&gt; about document().documentElement()-&gt;renderer() lifetime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632006</commentid>
    <comment_count>8</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-19 22:18:19 -0700</bug_when>
    <thetext>Sorry the assignee wasn&apos;t changed so we overlapped. I was using a similar reduced test case to demonstrate the reentrancy:

&lt;html id=HTML&gt;
&lt;head&gt;
&lt;script&gt;
    function appendDesc() {
        document.execCommand(&quot;SelectAll&quot;);
        document.appendChild(document.createElementNS(&apos;http://www.w3.org/2000/svg&apos;, &apos;desc&apos;));
    }
    document.addEventListener(&quot;DOMSubtreeModified&quot;, appendDesc);
    window.onload = () =&gt; {
        document.replaceChild(BODY.cloneNode(), HTML);
    };
&lt;/script&gt;
&lt;body id=BODY dir=&quot;rtl&quot;&gt;

This seems to be what happens:
1. Whole HTML subtree is removed in the middle of replacing HTML in document. Document becomes empty now.
2. DOMSubtreeModified is triggered so we reenter JSC and carry out commands of “SelectAll” and “appendChild”. In appending, we create a SVGDescElement and inserting it into empty Document.
3. Since SVGDescElement doesn’t require renderer, so its renderer is set to null.
4. Since Document is empty, the SVGDescElement becomes the “documentElement”.
5. After DOMSubtreeModified event is handled, we resume the command of replacing HTML, and insert cloned BODY into document.
6. After replace command is done, we dispatch subtree modified event again.
7. This time in JSC reentrance while carrying out “SelectAll”, we update the render tree and create renderer for BODY element.
8. In initializing render style for BODY element, because the test case specify direction to be “right to left”, we attempt to update the direction.
9. Before updating, we check if documentElement’s renderer style has explicity direction setting. However, since SVGDescElement has no renderer, the code crashes when accessing nullptr.

Node tree when the crash happens:
*#document	0x124a8d810 (renderer 0x124a8cf90) 
	desc	0x124a8eac0 (renderer 0x0) 
	BODY	0x124a8e9c0 (renderer 0x124a8d3a0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632009</commentid>
    <comment_count>9</comment_count>
      <attachid>394068</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-19 22:29:31 -0700</bug_when>
    <thetext>Comment on attachment 394068
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:348
&gt; +        if (documentElementRenderer) {

Is it possible that &quot;isDocElementRenderer&quot; is true so we don&apos;t need to check documentElementRenderer? Not sure if it is a valid scenario to handle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632010</commentid>
    <comment_count>10</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-19 22:42:43 -0700</bug_when>
    <thetext>In this case, we do not seem to be able to choose documentElement, so probably it is a valid scenario to have renderer-less documentElement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632013</commentid>
    <comment_count>11</comment_count>
      <attachid>394069</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-19 23:07:40 -0700</bug_when>
    <thetext>Created attachment 394069
Minimized test case

Hi Eugene, thanks for reducing the test case. Alan further minimized the test. Would you like to use it for the fast test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632083</commentid>
    <comment_count>12</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-03-20 08:11:02 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #2)
&gt; RenderBox::styleDidChange crashes when changing style for HTMLBodyElement
&gt; element.
&gt; Crash happens on dereferencing null document().documentElement()-&gt;renderer()
&gt; pointer:
&gt; 
&gt; if (.... ||
&gt; !documentElementRenderer-&gt;style().hasExplicitlySetWritingMode())) {
&gt; 
&gt; 
&gt; During the crash web page reattaches &lt;body&gt; element to &lt;desc&gt; element:
&gt; document.getElementsByTagName(&quot;desc&quot;)[0].appendChild(document.
&gt; getElementById(&quot;body&quot;));
&gt; 
&gt; with JavaScript below:
&gt; 
&gt; function DOMSubtreeModifiedHandler() {
&gt;   var desc = document.createElementNS(&apos;http://www.w3.org/2000/svg&apos;, &apos;desc&apos;);
&gt;   try {
&gt;     document.appendChild(desc);
&gt;   }
&gt;   catch(e) {
&gt;     // Can cause JS stack overflow.
&gt;   }
&gt;   document.replaceChild(document.getElementById(&quot;body&quot;), event.srcElement);
&gt; }
&gt; document.addEventListener(&quot;DOMSubtreeModified&quot;, DOMSubtreeModifiedHandler);
&gt; setTimeout(function() {
&gt;   document.getElementById(&quot;head&quot;).outerHTML = &quot;&quot;;
&gt;  
&gt; document.getElementsByTagName(&quot;desc&quot;)[0].appendChild(document.
&gt; getElementById(&quot;body&quot;));
&gt; });
&gt; 
&gt; It does not feel right that document().documentElement()-&gt;renderer() is
&gt; null, but RenderBox code has a few places with null pointer checks for
&gt; document().documentElement()-&gt;renderer(), so for me it&apos;s hard to reason
&gt; about document().documentElement()-&gt;renderer() lifetime.
&gt; 
&gt; I will upload a patch with cleaned up test case (test case attached to this
&gt; bug is quite complicated) and null pointer check. But I don&apos;t think that
&gt; adding pointer check is the right fix. I&apos;m not sure where to look further,
&gt; but I can continue debugging if someone could provide me with pointers.
&gt; Finally this does not look like a security bug.
I agree. It does not seem right to have a nullptr documentElement renderer at all. We should not get into this state though DOM mutation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632136</commentid>
    <comment_count>13</comment_count>
      <attachid>394094</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-20 09:53:45 -0700</bug_when>
    <thetext>Created attachment 394094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632145</commentid>
    <comment_count>14</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-20 10:10:14 -0700</bug_when>
    <thetext>&gt;&gt; Hi Eugene, thanks for reducing the test case. Alan further minimized the test. Would you like to use it for the fast test?

Alan&apos;s test case looks great. Updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632157</commentid>
    <comment_count>15</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-20 10:23:37 -0700</bug_when>
    <thetext>&gt;&gt; I agree. It does not seem right to have a nullptr documentElement renderer at all. We should not get into this state though DOM mutation.

Per comment #8 it looks like body is detached from the document, which might be a reasonable cause for null renderer.

Alan, do you think WebKit should prevent replacing body with another element? This is what Chrome does: 
Uncaught DOMException: Failed to execute &apos;replaceChild&apos; on &apos;Node&apos;: Only one element on document allowed.

Or maybe WebKit should prevent adding &lt;desc&gt; child element? This is what Firefox does:
HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy

There might be a few different ways to get into the state when body is detached and renderer is null (original test case produced by the Fuzzer is slightly different from test case in comment #11). Do you prefer fixing all use cases which prevent WebKit from getting into crashing state or do you think it is more practical to not crash, when WebKit gets into this bad state with detached body and null renderer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632233</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-20 13:07:29 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #15)
&gt; &gt;&gt; I agree. It does not seem right to have a nullptr documentElement renderer at all. We should not get into this state though DOM mutation.
&gt; 
&gt; Per comment #8 it looks like body is detached from the document, which might
&gt; be a reasonable cause for null renderer.
&gt; 
&gt; Alan, do you think WebKit should prevent replacing body with another
&gt; element? This is what Chrome does: 
&gt; Uncaught DOMException: Failed to execute &apos;replaceChild&apos; on &apos;Node&apos;: Only one
&gt; element on document allowed.
&gt; 
&gt; Or maybe WebKit should prevent adding &lt;desc&gt; child element? This is what
&gt; Firefox does:
&gt; HierarchyRequestError: Node cannot be inserted at the specified point in the
&gt; hierarchy

We should probably do something about this. What does HTML / DOM spec say?

&gt; There might be a few different ways to get into the state when body is
&gt; detached and renderer is null (original test case produced by the Fuzzer is
&gt; slightly different from test case in comment #11). Do you prefer fixing all
&gt; use cases which prevent WebKit from getting into crashing state or do you
&gt; think it is more practical to not crash, when WebKit gets into this bad
&gt; state with detached body and null renderer?

Can&apos;t we have &lt;!DOCTYPE html&gt;&lt;html style=&quot;display: none&quot;&gt;? That&apos;d force the document element to not have a renderer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632357</commentid>
    <comment_count>17</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-20 16:15:00 -0700</bug_when>
    <thetext>&gt; We should probably do something about this. What does HTML / DOM spec say?

Chatted with Ali, and he said this:

&lt;quote&gt;
Chrome throws an exception here: https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/renderer/core/dom/document.cc;drc=ee4cff87f02e46e1fbbdaef0aa123e05761b35e8;l=5018?originalUrl=https:%2F%2Fcs.chromium.org%2F

Very conveniently, there&apos;s a comment above that method that cites the spec :)  I think the relevant part is from https://dom.spec.whatwg.org/#concept-node-replace, where it says if &quot;parent has an element child that is not child&quot;, i.e., the document element already has a child (presumably |body|) and we&apos;re trying to replace that child with another one, then we should throw an exception.
&lt;/quote&gt; 

&gt; Can&apos;t we have &lt;!DOCTYPE html&gt;&lt;html style=&quot;display: none&quot;&gt;? That&apos;d force the document element to not have a renderer?

Document renderer was not null for &lt;!DOCTYPE html&gt;&lt;html style=&quot;display: none&quot;&gt;


Document::CanAcceptChild is present in both WebKit and Blink. Next week I will try fixing the bug inside Document::CanAcceptChild by throwing JS exception. Please let me know if you want to keep null pointer check (which has pros and cons).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632386</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-20 17:12:46 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #17)
&gt; &gt; We should probably do something about this. What does HTML / DOM spec say?
&gt; 
&gt; Chatted with Ali, and he said this:
&gt; 
&gt; &lt;quote&gt;
&gt; Chrome throws an exception here:
&gt; https://source.chromium.org/chromium/chromium/src/+/master:third_party/blink/
&gt; renderer/core/dom/document.cc;drc=ee4cff87f02e46e1fbbdaef0aa123e05761b35e8;
&gt; l=5018?originalUrl=https:%2F%2Fcs.chromium.org%2F
&gt; 
&gt; Very conveniently, there&apos;s a comment above that method that cites the spec
&gt; :)  I think the relevant part is from
&gt; https://dom.spec.whatwg.org/#concept-node-replace, where it says if &quot;parent
&gt; has an element child that is not child&quot;, i.e., the document element already
&gt; has a child (presumably |body|) and we&apos;re trying to replace that child with
&gt; another one, then we should throw an exception.
&gt; &lt;/quote&gt; 
&gt; 
&gt; &gt; Can&apos;t we have &lt;!DOCTYPE html&gt;&lt;html style=&quot;display: none&quot;&gt;? That&apos;d force the document element to not have a renderer?
&gt; 
&gt; Document renderer was not null for &lt;!DOCTYPE html&gt;&lt;html style=&quot;display:
&gt; none&quot;&gt;
&gt; 
&gt; 
&gt; Document::CanAcceptChild is present in both WebKit and Blink. Next week I
&gt; will try fixing the bug inside Document::CanAcceptChild by throwing JS
&gt; exception. Please let me know if you want to keep null pointer check (which
&gt; has pros and cons).

I think we can forego with a null check for the renderer for now. If we find that there are other cases in which we&apos;d hit the same code path, we can reconsider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632387</commentid>
    <comment_count>19</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-03-20 17:14:52 -0700</bug_when>
    <thetext>&gt; &gt; There might be a few different ways to get into the state when body is
&gt; &gt; detached and renderer is null (original test case produced by the Fuzzer is
&gt; &gt; slightly different from test case in comment #11). Do you prefer fixing all
&gt; &gt; use cases which prevent WebKit from getting into crashing state or do you
&gt; &gt; think it is more practical to not crash, when WebKit gets into this bad
&gt; &gt; state with detached body and null renderer?
&gt; 
&gt; Can&apos;t we have &lt;!DOCTYPE html&gt;&lt;html style=&quot;display: none&quot;&gt;? That&apos;d force the
&gt; document element to not have a renderer?
and then we would not have a body renderer either to set the style on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633445</commentid>
    <comment_count>20</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 13:21:07 -0700</bug_when>
    <thetext>Hi Eugene,

Would you like to submit the null check or prefer us to make the patch? Please feel free to let me know.

Thanks,
Jack

(In reply to Ryosuke Niwa from comment #18)
&gt; I think we can forego with a null check for the renderer for now. If we find
&gt; that there are other cases in which we&apos;d hit the same code path, we can
&gt; reconsider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633634</commentid>
    <comment_count>21</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-24 16:12:58 -0700</bug_when>
    <thetext>Hi Jack. I was going to work on a proper fix tomorrow (sorry I had to switch and work on something else). That fix would throw JS exception from Document::CanAcceptChild to make sure that body does not get detached. Ryosuke advised against null check.

What would be a good way for me to communicate when I actively work on the bug and when I don&apos;t? In the future can leave the comments when I have to switch and work on something else instead of disappearing for a few days. 

For this specific bug, are you ok to wait for 1-2 days or there is some deadline when you have to fix the crash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633711</commentid>
    <comment_count>22</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-03-24 17:55:37 -0700</bug_when>
    <thetext>Hi Eugene,

Oh, sorry, there is no rush. The old patch was not obsoleted so I thought you would like to have a temporary fix before finding some time to work on the exception.

Let me change the assignee so there is no confusion in communication. I will update our internal tracking system when the patch is ready.
 
Thanks for working on this issue.

Jack

(In reply to Eugene But from comment #21)
&gt; Hi Jack. I was going to work on a proper fix tomorrow (sorry I had to switch
&gt; and work on something else). That fix would throw JS exception from
&gt; Document::CanAcceptChild to make sure that body does not get detached.
&gt; Ryosuke advised against null check.
&gt; 
&gt; What would be a good way for me to communicate when I actively work on the
&gt; bug and when I don&apos;t? In the future can leave the comments when I have to
&gt; switch and work on something else instead of disappearing for a few days. 
&gt; 
&gt; For this specific bug, are you ok to wait for 1-2 days or there is some
&gt; deadline when you have to fix the crash?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634047</commentid>
    <comment_count>23</comment_count>
      <attachid>394543</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 14:09:29 -0700</bug_when>
    <thetext>Created attachment 394543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634048</commentid>
    <comment_count>24</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 14:13:32 -0700</bug_when>
    <thetext>The last patch fixes the crash. The patch was uploaded to run the tests. I&apos;m still trying to find a better way to write the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634100</commentid>
    <comment_count>25</comment_count>
      <attachid>394560</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 16:17:09 -0700</bug_when>
    <thetext>Created attachment 394560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634101</commentid>
    <comment_count>26</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 16:18:41 -0700</bug_when>
    <thetext>Updated the test. I still have to check if the fix cause other tests to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634131</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-25 17:35:22 -0700</bug_when>
    <thetext>There is no security implication here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634134</commentid>
    <comment_count>28</comment_count>
      <attachid>394560</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-25 17:46:44 -0700</bug_when>
    <thetext>Comment on attachment 394560
Patch

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

&gt; Source/WebCore/ChangeLog:25
&gt; +        Hence the fix is to return false from Document::canAcceptChild if |newChild| is ELEMENT_NODE and
&gt; +        |refChild| does not exist. This logic was copied from Document::CanAcceptChild method in Chromium&apos;s Blink:

Why? This doesn&apos;t follow from from the above spec text at all.
For starters your code change applies to both pre-insert and replace, which seems incorrect,
and there is nothing in the spec which suggests that we must throw HierarchyRequestError
when child is null in that concept to replace a node.
For starters, it&apos;s non sense for refChild to be null when replacing a node.

&gt; Source/WebCore/ChangeLog:28
&gt; +        Reviewed by NOBODY (OOPS!).

This line should appear before the long description bug after the bug URL. See other entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634142</commentid>
    <comment_count>29</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 18:22:54 -0700</bug_when>
    <thetext>&gt;&gt; Why? This doesn&apos;t follow from from the above spec text at all.
Yep, sorry about that. I misread |if (num_elements &gt; 1 || num_doctypes &gt; 1) {| and for some reason thought that num_elements is expected to be greater than 0. I will try counting the number of elements, like Chromium does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634152</commentid>
    <comment_count>30</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 18:55:28 -0700</bug_when>
    <thetext>My assumption about bug in Document::canAcceptChild was incorrect. canAcceptChild correctly returns false if |newChild| is ELEMENT_NODE and Document already has ELEMENT_NODE child.

Maybe it&apos;s actually ok that document().documentElement()-&gt;renderer() is null for detached body, because body does not have a document? Unless the spec forbids detaching body in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634159</commentid>
    <comment_count>31</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-25 19:04:42 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #30)
&gt; My assumption about bug in Document::canAcceptChild was incorrect.
&gt; canAcceptChild correctly returns false if |newChild| is ELEMENT_NODE and
&gt; Document already has ELEMENT_NODE child.
&gt; 
&gt; Maybe it&apos;s actually ok that document().documentElement()-&gt;renderer() is null
&gt; for detached body, because body does not have a document? Unless the spec
&gt; forbids detaching body in the first place.

First off, document().documentElement() is typically a HTML element or SVG element, not body element. The issue here isn&apos;t so much about body being detached but rather than there are two elements (desc &amp; body) that are direct children of a document, which is clearly not allowed in the spec bug. It looks we&apos;re getting to that state based on the observation on https://bugs.webkit.org/show_bug.cgi?id=208311#c8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634161</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-25 19:06:29 -0700</bug_when>
    <thetext>For example, if I try to execute document.appendChild(document.createElement(&apos;div&apos;)) in about:blank, I get HierarchyRequestError. So in theory, we should never get to a state where we have two elements as direct children of document. We need to figure out why &amp; how we&apos;re getting to that state given the check we have in Document::canAcceptChild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634183</commentid>
    <comment_count>33</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 19:45:54 -0700</bug_when>
    <thetext>Thanks, this makes sense. Looks like Document::canAcceptChild properly rejects SVG elements, but allows adding &lt;body&gt; as the second child. Digging into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634190</commentid>
    <comment_count>34</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 20:30:12 -0700</bug_when>
    <thetext>Perhaps this is the piece of code in ContainerNode.cpp where things go wrong:

    // If oldChild == newChild then oldChild no longer has a parent at this point.
    if (oldChild.parentNode()) {
        auto removeResult = removeChild(oldChild);
        if (removeResult.hasException())
            return removeResult.releaseException();

        // Does this one more time because removeChild() fires a MutationEvent.
        for (auto&amp; child : targets) {
            validityResult = checkPreReplacementValidity(*this, child, oldChild, ShouldValidateChildParent::No);



removeChild(oldChild) fires mutation events and appends SVG to the document. 

checkPreReplacementValidity calls canAcceptChild, which allows adding body as the second child of the document:
bool Document::canAcceptChild(const Node&amp; newChild, const Node* refChild, AcceptChildOperation operation) const
{
    if (operation == AcceptChildOperation::Replace &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType())
        return true;


Chromium on the other hand does an extra checks in RecheckNodeInsertionStructuralPrereq method:

https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/dom/container_node.cc?type=cs&amp;sq=package:chromium&amp;g=0&amp;l=287

where oldChild/refChild argument is passed as null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634214</commentid>
    <comment_count>35</comment_count>
      <attachid>394578</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 22:39:34 -0700</bug_when>
    <thetext>Created attachment 394578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634215</commentid>
    <comment_count>36</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-25 22:40:55 -0700</bug_when>
    <thetext>I don&apos;t particularly like the fix in the last patch, but it may work without breaking other things and I&apos;d like to run tests for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634218</commentid>
    <comment_count>37</comment_count>
      <attachid>394578</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-25 22:43:32 -0700</bug_when>
    <thetext>Comment on attachment 394578
Patch

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

&gt; Source/WebCore/dom/ContainerNode.cpp:528
&gt; +            validityResult = checkAcceptChild(

Please don&apos;t use 80-character line warp.
All of this code should fit in a single line.

&gt; Source/WebCore/dom/ContainerNode.cpp:535
&gt; +                // oldChild could be removed inside MutationEvent handler. In
&gt; +                // that case use InsertOrAdd operation, which has stricter
&gt; +                // checks comparing to Replace.
&gt; +                oldChild.parentNode() ?
&gt; +                    Document::AcceptChildOperation::Replace :
&gt; +                    Document::AcceptChildOperation::InsertOrAdd,

We should probably compute this in a separate statement in the prior line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634395</commentid>
    <comment_count>38</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 10:23:40 -0700</bug_when>
    <thetext>The last patch fixes the crash, but replace-child.html layout test failed:

test(&apos;replacing doctype with element&apos;, function() {
  doc = parser.parseFromString(&apos;&lt;!DOCTYPE html&gt;&lt;body/&gt;&apos;, &apos;text/xml&apos;);
  doc.removeChild(doc.documentElement);             
  newChild = doc.createElement(&apos;bar&apos;);

  shouldNotThrow(&apos;doc.replaceChild(newChild, doc.doctype)&apos;); 
});

In this test doc.replaceChild(newChild, doc.doctype) actually threw an exception.

I will try another approach, which still fixes the crash and pass replace-child.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634405</commentid>
    <comment_count>39</comment_count>
      <attachid>394622</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 10:30:59 -0700</bug_when>
    <thetext>Created attachment 394622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634548</commentid>
    <comment_count>40</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 13:43:07 -0700</bug_when>
    <thetext>Should I worry about failing tests on mac-debug-wk1? Failing tests that I checked are all related to threading assertions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634556</commentid>
    <comment_count>41</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2020-03-26 13:55:48 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #40)
&gt; Should I worry about failing tests on mac-debug-wk1? Failing tests that I
&gt; checked are all related to threading assertions.

Those failures look unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634570</commentid>
    <comment_count>42</comment_count>
      <attachid>394622</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-26 14:33:36 -0700</bug_when>
    <thetext>Comment on attachment 394622
Patch

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

&gt; Source/WebCore/dom/Document.cpp:3876
&gt; -    if (operation == AcceptChildOperation::Replace &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType())
&gt; +    if (operation == AcceptChildOperation::Replace &amp;&amp; refChild-&gt;parentNode() &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType())

What is this check about?
Maybe we&apos;re trying to check that refChild-&gt;parentNode() == this to detect mutation event related changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634576</commentid>
    <comment_count>43</comment_count>
      <attachid>394658</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 14:40:44 -0700</bug_when>
    <thetext>Created attachment 394658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634586</commentid>
    <comment_count>44</comment_count>
      <attachid>394658</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-26 14:57:41 -0700</bug_when>
    <thetext>Comment on attachment 394658
Patch

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

&gt; Source/WebCore/ChangeLog:25
&gt; +        Replace operations if new child had the same type as old child, even if old child does not have parent.

This check isn&apos;t quite right. The refChild could be removed from Document but then inserted elsewhere.

&gt; Source/WebCore/dom/Document.cpp:3876
&gt; +    if (operation == AcceptChildOperation::Replace &amp;&amp; refChild-&gt;parentNode() &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType())

So this should really be checking refChild-&gt;parentNode() == this.
I also suggest writing a test case where you&apos;d insert the old body into some other element
(e.g. just document.createElement(&apos;div&apos;).appendChild(body) inside the mutation event);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634588</commentid>
    <comment_count>45</comment_count>
      <attachid>394622</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 15:00:39 -0700</bug_when>
    <thetext>Comment on attachment 394622
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:3876
&gt;&gt; +    if (operation == AcceptChildOperation::Replace &amp;&amp; refChild-&gt;parentNode() &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType())
&gt; 
&gt; What is this check about?
&gt; Maybe we&apos;re trying to check that refChild-&gt;parentNode() == this to detect mutation event related changes?

Sorry for confusion. I&apos;ve uploaded this patch to test if the fix work without explaining the fix. 

Now, to answer your question. It is my understanding that the original code |if (operation == Replace &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType()) return true;| is optimization. The code after early return (line 3879 and below) performs all required and correct checks but it&apos;s just slower, because it has to check if document has element child.

I think original code assumes that Replace consists of 2 steps: #1 remove old child; #2 add new child. This assumption does not take into account that mutation event could add a child between steps 1 and 2. canAcceptChild() can still use this optimization iff old child has a parent that is &quot;this document&quot;. But optimization with early return can&apos;t be used if |refChild| was removed. 

After writing this explanation, now I see a flaw in my patch. Instead of checking that |refChild-&gt;parentNode()| is not null, we should actually check that |refChild-&gt;parentNode() == this|, because mutation event can cause refChild to be reattached to another parent. I&apos;m going to upload a new patch to run the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634589</commentid>
    <comment_count>46</comment_count>
      <attachid>394622</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 15:01:21 -0700</bug_when>
    <thetext>Comment on attachment 394622
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:3876
&gt;&gt;&gt; +    if (operation == AcceptChildOperation::Replace &amp;&amp; refChild-&gt;parentNode() &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType())
&gt;&gt; 
&gt;&gt; What is this check about?
&gt;&gt; Maybe we&apos;re trying to check that refChild-&gt;parentNode() == this to detect mutation event related changes?
&gt; 
&gt; Sorry for confusion. I&apos;ve uploaded this patch to test if the fix work without explaining the fix. 
&gt; 
&gt; Now, to answer your question. It is my understanding that the original code |if (operation == Replace &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType()) return true;| is optimization. The code after early return (line 3879 and below) performs all required and correct checks but it&apos;s just slower, because it has to check if document has element child.
&gt; 
&gt; I think original code assumes that Replace consists of 2 steps: #1 remove old child; #2 add new child. This assumption does not take into account that mutation event could add a child between steps 1 and 2. canAcceptChild() can still use this optimization iff old child has a parent that is &quot;this document&quot;. But optimization with early return can&apos;t be used if |refChild| was removed. 
&gt; 
&gt; After writing this explanation, now I see a flaw in my patch. Instead of checking that |refChild-&gt;parentNode()| is not null, we should actually check that |refChild-&gt;parentNode() == this|, because mutation event can cause refChild to be reattached to another parent. I&apos;m going to upload a new patch to run the tests.

Sorry for confusion. I&apos;ve uploaded this patch to test if the fix work without explaining the fix. 

Now, to answer your question. It is my understanding that the original code |if (operation == Replace &amp;&amp; refChild-&gt;nodeType() == newChild.nodeType()) return true;| is optimization. The code after early return (line 3879 and below) performs all required and correct checks but it&apos;s just slower, because it has to check if document has element child.

I think original code assumes that Replace consists of 2 steps: #1 remove old child; #2 add new child. This assumption does not take into account that mutation event could add a child between steps 1 and 2. canAcceptChild() can still use this optimization iff old child has a parent that is &quot;this document&quot;. But optimization with early return can&apos;t be used if |refChild| was removed. 

After writing this explanation, now I see a flaw in my patch. Instead of checking that |refChild-&gt;parentNode()| is not null, we should actually check that |refChild-&gt;parentNode() == this| as you suggested, because mutation event can cause refChild to be reattached to another parent. I&apos;m going to upload a new patch to run the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634626</commentid>
    <comment_count>47</comment_count>
      <attachid>394669</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 16:13:04 -0700</bug_when>
    <thetext>Created attachment 394669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634644</commentid>
    <comment_count>48</comment_count>
      <attachid>394669</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-26 16:47:42 -0700</bug_when>
    <thetext>Comment on attachment 394669
Patch

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

Cool. New patch makes sense to me.

&gt; Source/WebCore/ChangeLog:26
&gt; +        Replace operations if new child had the same type as old child, even if old child does not have parent.
&gt; +        The absence of parent (or parent that is not &quot;this document&quot;) means that old child was removed from

Now that we&apos;ve fixed the bug in your previous patch, this explanation should be updated too.
Also, please insert a blank line to split these two paragraphs.

&gt; Source/WebCore/ChangeLog:32
&gt; +        Test: fast/dom/add-document-child-during-document-child-replacement.html
&gt; +        Test: fast/dom/add-document-child-and-reparent-old-child-during-document-child-replacement.html

This should instead be:
Tests: fast/dom/add-document-child-during-document-child-replacement.html
       fast/dom/add-document-child-and-reparent-old-child-during-document-child-replacement.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634667</commentid>
    <comment_count>49</comment_count>
      <attachid>394682</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 17:39:08 -0700</bug_when>
    <thetext>Created attachment 394682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634673</commentid>
    <comment_count>50</comment_count>
      <attachid>394669</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-26 17:53:39 -0700</bug_when>
    <thetext>Comment on attachment 394669
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:26
&gt;&gt; +        The absence of parent (or parent that is not &quot;this document&quot;) means that old child was removed from
&gt; 
&gt; Now that we&apos;ve fixed the bug in your previous patch, this explanation should be updated too.
&gt; Also, please insert a blank line to split these two paragraphs.

Done.

&gt;&gt; Source/WebCore/ChangeLog:32
&gt;&gt; +        Test: fast/dom/add-document-child-and-reparent-old-child-during-document-child-replacement.html
&gt; 
&gt; This should instead be:
&gt; Tests: fast/dom/add-document-child-during-document-child-replacement.html
&gt;        fast/dom/add-document-child-and-reparent-old-child-during-document-child-replacement.html

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634697</commentid>
    <comment_count>51</comment_count>
      <attachid>394682</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-26 18:55:51 -0700</bug_when>
    <thetext>Comment on attachment 394682
Patch

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

&gt; Source/WebCore/dom/Document.cpp:3874
&gt;  bool Document::canAcceptChild(const Node&amp; newChild, const Node* refChild, AcceptChildOperation operation) const

Can’t help noticing that this function is not written with efficiency in mind. The nodeType virtual function is pretty expensive and we call it 3 times!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634803</commentid>
    <comment_count>52</comment_count>
      <attachid>394682</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-27 07:05:07 -0700</bug_when>
    <thetext>Comment on attachment 394682
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:3874
&gt;&gt;  bool Document::canAcceptChild(const Node&amp; newChild, const Node* refChild, AcceptChildOperation operation) const
&gt; 
&gt; Can’t help noticing that this function is not written with efficiency in mind. The nodeType virtual function is pretty expensive and we call it 3 times!

newChild.nodeType() is called twice and refChild-&gt;nodeType() is called once. We could create a local variable to compute newChild.nodeType() only once. Given that &quot;this patch&quot; makes canAcceptChild() slower, do you prefer to add optimization with local variable in this patch or in follow up patch to separate bug fix from performance optimization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634838</commentid>
    <comment_count>53</comment_count>
      <attachid>394682</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-03-27 09:47:10 -0700</bug_when>
    <thetext>Comment on attachment 394682
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:3874
&gt;&gt;&gt;  bool Document::canAcceptChild(const Node&amp; newChild, const Node* refChild, AcceptChildOperation operation) const
&gt;&gt; 
&gt;&gt; Can’t help noticing that this function is not written with efficiency in mind. The nodeType virtual function is pretty expensive and we call it 3 times!
&gt; 
&gt; newChild.nodeType() is called twice and refChild-&gt;nodeType() is called once. We could create a local variable to compute newChild.nodeType() only once. Given that &quot;this patch&quot; makes canAcceptChild() slower, do you prefer to add optimization with local variable in this patch or in follow up patch to separate bug fix from performance optimization?

Follow up in a separate bug. It’s unrelated to this patch.

Not clear that micro-optimization here would be good, but this can be optimized for all the common cases to not call nodeType at all, using functions like isElementNode and isTextNode that are inline single bit checks. Only exotic cases would require calls to nodeType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1634890</commentid>
    <comment_count>54</comment_count>
      <attachid>394682</attachid>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-27 11:08:34 -0700</bug_when>
    <thetext>Comment on attachment 394682
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:3874
&gt;&gt;&gt;&gt;  bool Document::canAcceptChild(const Node&amp; newChild, const Node* refChild, AcceptChildOperation operation) const
&gt;&gt;&gt; 
&gt;&gt;&gt; Can’t help noticing that this function is not written with efficiency in mind. The nodeType virtual function is pretty expensive and we call it 3 times!
&gt;&gt; 
&gt;&gt; newChild.nodeType() is called twice and refChild-&gt;nodeType() is called once. We could create a local variable to compute newChild.nodeType() only once. Given that &quot;this patch&quot; makes canAcceptChild() slower, do you prefer to add optimization with local variable in this patch or in follow up patch to separate bug fix from performance optimization?
&gt; 
&gt; Follow up in a separate bug. It’s unrelated to this patch.
&gt; 
&gt; Not clear that micro-optimization here would be good, but this can be optimized for all the common cases to not call nodeType at all, using functions like isElementNode and isTextNode that are inline single bit checks. Only exotic cases would require calls to nodeType.

Filed https://bugs.webkit.org/show_bug.cgi?id=209667</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635112</commentid>
    <comment_count>55</comment_count>
      <attachid>394682</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-27 20:54:58 -0700</bug_when>
    <thetext>Comment on attachment 394682
Patch

Great. New patch looks good! By the way, in the future, you can also set cq? for the commit queue. You can specify --commit-queue to webkit-patch if you&apos;re using that script to upload a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635116</commentid>
    <comment_count>56</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-27 21:00:43 -0700</bug_when>
    <thetext>Committed r259152: &lt;https://trac.webkit.org/changeset/259152&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394682.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635541</commentid>
    <comment_count>57</comment_count>
    <who name="Eugene But">eugenebut</who>
    <bug_when>2020-03-30 09:26:12 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #55)
&gt; Comment on attachment 394682 [details]
&gt; Patch
&gt; 
&gt; Great. New patch looks good! By the way, in the future, you can also set cq?
&gt; for the commit queue. You can specify --commit-queue to webkit-patch if
&gt; you&apos;re using that script to upload a patch.

Thanks. I will use --commit-queue for patches which in my opinion are ready for commit. Is it still ok to upload patches just to run tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635609</commentid>
    <comment_count>58</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-30 11:21:50 -0700</bug_when>
    <thetext>(In reply to Eugene But from comment #57)
&gt; (In reply to Ryosuke Niwa from comment #55)
&gt; &gt; Comment on attachment 394682 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Great. New patch looks good! By the way, in the future, you can also set cq?
&gt; &gt; for the commit queue. You can specify --commit-queue to webkit-patch if
&gt; &gt; you&apos;re using that script to upload a patch.
&gt; 
&gt; Thanks. I will use --commit-queue for patches which in my opinion are ready
&gt; for commit. Is it still ok to upload patches just to run tests?

Yes, if you&apos;re uploading tests just to get through EWS, you can pass --no-review or unset r? from the patch (you can do this from &quot;Details&quot;). Once you think the patch is ready for a code review, you can either set r? on an existing patch, or upload a new patch with r?.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>391868</attachid>
            <date>2020-02-27 07:52:09 -0800</date>
            <delta_ts>2020-02-27 07:52:09 -0800</delta_ts>
            <desc>Minimal test case</desc>
            <filename>explicitly-set-direction.html</filename>
            <type>text/html</type>
            <size>2057</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGRlZmVyPSJkZWZlciI+DQpmdW5jdGlvbiBl
dmVudF9oYW5kbGVyXzQ2NF9ET01TdWJ0cmVlTW9kaWZpZWQoKSB7DQogIHZhciBvRWxlbWVudCA9
IGV2ZW50LnNyY0VsZW1lbnQ7DQogIHZhciBvU2VsZWN0aW9uPXdpbmRvdy5nZXRTZWxlY3Rpb24o
KTsNCiAgaWYgKCFvU2VsZWN0aW9uLnJhbmdlQ291bnQpIHsNCiAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIlNlbGVjdEFsbCIpDQogIH0NCiAgdmFyIG9SYW5nZSA9IG9TZWxlY3Rpb24ucmFuZ2VDb3Vu
dCA/IG9TZWxlY3Rpb24uZ2V0UmFuZ2VBdCgxNyAlIG9TZWxlY3Rpb24ucmFuZ2VDb3VudCkgOiBu
dWxsOw0KICAgIHZhciBvSW5zZXJ0ZWRFbGVtZW50ID1mdW5jdGlvbigpew0KICAgIHZhciBvTmV3
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmcnLCAnZGVzYycpOw0KICAgICAgdHJ5e2RvY3VtZW50LmFwcGVuZENoaWxkKG9OZXdFbGVt
ZW50KX0NCiAgICAgIGNhdGNoKGUpe30NCiAgfSgpOw0KdmFyIG9Eb2N1bWVudEZyYWdtZW50ID0g
b1JhbmdlLmV4dHJhY3RDb250ZW50cygpDQpvU2VsZWN0aW9uLmNvbGxhcHNlVG9FbmQoKQ0Kb0Vs
ZW1lbnQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoKGZ1bmN0aW9uKCl7DQogICAgdmFyIGFvRWxl
bWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOw0KICAgICAgICByZXR1
cm4gYW9FbGVtZW50c1s2NyAlIGFvRWxlbWVudHMubGVuZ3RoXS5jbG9uZU5vZGUoKTsNCiAgfSko
KSwgb0VsZW1lbnQpDQp9DQpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9k
aWZpZWQiLCBldmVudF9oYW5kbGVyXzQ2NF9ET01TdWJ0cmVlTW9kaWZpZWQpOw0Kc2V0VGltZW91
dChmdW5jdGlvbigpew0KICB2YXIgb0VsZW1lbnQgPWZ1bmN0aW9uKCl7DQogICAgdmFyIGFvRWxl
bWVudHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOw0KICAgIGlmIChhb0Vs
ZW1lbnRzLmxlbmd0aCkgcmV0dXJuIGFvRWxlbWVudHNbNDEgJSBhb0VsZW1lbnRzLmxlbmd0aF07
DQogIH0oKTsNCm9FbGVtZW50LnRleHRDb250ZW50ID0gJ1FAWVlZWVlZWVlZWVkwYmI5Xi9KLCws
LCwsLCwtLS0tJw0KICAgIGlmIChvUGFyZW50KSB7DQogICAgICB2YXIgb1ByZXZpb3VzU2libGlu
ZyA9IG9QYXJlbnQuY2hpbGROb2Rlc1syNCAlIG9QYXJlbnQuY2hpbGROb2Rlcy5sZW5ndGhdOw0K
ICAgIH0NCiAgdmFyIG9FbGVtZW50ID1mdW5jdGlvbigpew0KICAgIHZhciBhb0VsZW1lbnRzID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTsNCiAgICBpZiAoYW9FbGVtZW50cy5s
ZW5ndGgpIHJldHVybiBhb0VsZW1lbnRzWzEgJSBhb0VsZW1lbnRzLmxlbmd0aF07DQogIH0oKTsN
Cm9FbGVtZW50Lm91dGVySFRNTCA9ICIiDQogIHZhciBvRWxlbWVudCA9ZnVuY3Rpb24oKXsNCiAg
ICB2YXIgYW9FbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7DQog
ICAgaWYgKGFvRWxlbWVudHMubGVuZ3RoKSByZXR1cm4gYW9FbGVtZW50c1s3ICUgYW9FbGVtZW50
cy5sZW5ndGhdOw0KICB9KCk7DQpvRWxlbWVudCA9IGRvY3VtZW50LmFkb3B0Tm9kZShvRWxlbWVu
dCkNCiAgICB2YXIgb1BhcmVudCA9ZnVuY3Rpb24oKXsNCiAgICB2YXIgYW9FbGVtZW50cyA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7DQogICAgaWYgKGFvRWxlbWVudHMubGVu
Z3RoKSByZXR1cm4gYW9FbGVtZW50c1s4MSAlIGFvRWxlbWVudHMubGVuZ3RoXTsNCiAgfSgpOw0K
ICAgICAgaWYgKG9QcmV2aW91c1NpYmxpbmcpIHsNCiAgICAgIH0gZWxzZSB7DQpvUGFyZW50LmFw
cGVuZENoaWxkKG9FbGVtZW50KQ0KICAgICAgfQ0KfSk7DQo8L3NjcmlwdD4NCjxib2R5IGNsYXNz
PSJDTEFTUzAgQ0xBU1M0IiBkaXI9InJ0bCI+DQo8dGV4dGFyZWEgY2xhc3M9IkNMQVNTMTIgQ0xB
U1MxMyJyb3dzPSIwIj4NCjwvdGV4dGFyZWE+DQo8cHJlIGNsYXNzPSB4bWw6c3BhY2U9InByZXNl
cnZlIj4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394068</attachid>
            <date>2020-03-19 22:01:53 -0700</date>
            <delta_ts>2020-03-20 09:53:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200319220152.patch</filename>
            <type>text/plain</type>
            <size>7574</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJlbmRlckJveDo6
c3R5bGVEaWRDaGFuZ2UgY3Jhc2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVs
ZW1lbnQgZWxlbWVudC4KKyAgICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51
bGwgZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisg
ICAgICAgIGlmICguLi4uIHx8ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSkpIHsKKworICAgICAgICBEdXJpbmcgdGhlIGNyYXNo
IHdlYiBwYWdlIHJlYXR0YWNoZXMgPGJvZHk+IGVsZW1lbnQgdG8gPGRlc2M+IGVsZW1lbnQ6Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkZXNjIilbMF0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKSk7CisKKyAgICAgICAgVE9ETzogZmln
dXJlIG91dCBhbmQgZXhwbGFpbiB3aHkgaXQncyBvayBmb3IgcmVuZGVyZXIgdG8gYmUgbnVsbC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBm
YXN0L2RvbS9hcHBlbmQtYm9keS1hcy1jaGlsZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6c3R5bGVEaWRDaGFu
Z2UpOgorCiAyMDIwLTAzLTE5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFVwc3RyZWFtIGEgdmFyaWV0eSBvZiBDb2NvYS1wbGF0Zm9ybSBIQVZFIGFu
ZCBFTkFCTEUgbWFjcm9zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAkocmV2aXNpb24gMjU4NzA2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NSwyOSArMzQ1LDMxIEBAIHZvaWQgUmVuZGVyQm94
OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmYKICAgICAgICAgYm9vbCByb290U3R5bGVDaGFuZ2Vk
ID0gZmFsc2U7CiAgICAgICAgIGJvb2wgdmlld0RpcmVjdGlvbk9yV3JpdGluZ01vZGVDaGFuZ2Vk
ID0gZmFsc2U7CiAgICAgICAgIGF1dG8qIHJvb3RSZW5kZXJlciA9IGlzQm9keVJlbmRlcmVyID8g
ZG9jdW1lbnRFbGVtZW50UmVuZGVyZXIgOiBudWxscHRyOwotICAgICAgICBpZiAodmlld1N0eWxl
LmRpcmVjdGlvbigpICE9IG5ld1N0eWxlLmRpcmVjdGlvbigpICYmIChpc0RvY0VsZW1lbnRSZW5k
ZXJlciB8fCAhZG9jdW1lbnRFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuaGFzRXhwbGljaXRseVNl
dERpcmVjdGlvbigpKSkgewotICAgICAgICAgICAgdmlld1N0eWxlLnNldERpcmVjdGlvbihuZXdT
dHlsZS5kaXJlY3Rpb24oKSk7Ci0gICAgICAgICAgICB2aWV3RGlyZWN0aW9uT3JXcml0aW5nTW9k
ZUNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKGlzQm9keVJlbmRlcmVyKSB7Ci0gICAg
ICAgICAgICAgICAgcm9vdFJlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXREaXJlY3Rpb24obmV3
U3R5bGUuZGlyZWN0aW9uKCkpOwotICAgICAgICAgICAgICAgIHJvb3RTdHlsZUNoYW5nZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVmV2lk
dGhzUmVjYWxjKCk7CisgICAgICAgIGlmIChkb2N1bWVudEVsZW1lbnRSZW5kZXJlcikgeworICAg
ICAgICAgICAgaWYgKHZpZXdTdHlsZS5kaXJlY3Rpb24oKSAhPSBuZXdTdHlsZS5kaXJlY3Rpb24o
KSAmJiAoaXNEb2NFbGVtZW50UmVuZGVyZXIgfHwgIWRvY3VtZW50RWxlbWVudFJlbmRlcmVyLT5z
dHlsZSgpLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICB2
aWV3U3R5bGUuc2V0RGlyZWN0aW9uKG5ld1N0eWxlLmRpcmVjdGlvbigpKTsKKyAgICAgICAgICAg
ICAgICB2aWV3RGlyZWN0aW9uT3JXcml0aW5nTW9kZUNoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGlmIChpc0JvZHlSZW5kZXJlcikgeworICAgICAgICAgICAgICAgICAgICByb290UmVu
ZGVyZXItPm11dGFibGVTdHlsZSgpLnNldERpcmVjdGlvbihuZXdTdHlsZS5kaXJlY3Rpb24oKSk7
CisgICAgICAgICAgICAgICAgICAgIHJvb3RTdHlsZUNoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNh
bGMoKTsKIAotICAgICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnRvcENvbnRlbnREaXJlY3Rp
b25EaWRDaGFuZ2UoKTsKLSAgICAgICAgfQorICAgICAgICAgICAgICAgIHZpZXcoKS5mcmFtZVZp
ZXcoKS50b3BDb250ZW50RGlyZWN0aW9uRGlkQ2hhbmdlKCk7CisgICAgICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHZpZXdTdHlsZS53cml0aW5nTW9kZSgpICE9IG5ld1N0eWxlLndyaXRpbmdNb2Rl
KCkgJiYgKGlzRG9jRWxlbWVudFJlbmRlcmVyIHx8ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+
c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSkpIHsKLSAgICAgICAgICAgIHZp
ZXdTdHlsZS5zZXRXcml0aW5nTW9kZShuZXdTdHlsZS53cml0aW5nTW9kZSgpKTsKLSAgICAgICAg
ICAgIHZpZXdEaXJlY3Rpb25PcldyaXRpbmdNb2RlQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAg
ICB2aWV3KCkuc2V0SG9yaXpvbnRhbFdyaXRpbmdNb2RlKG5ld1N0eWxlLmlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpOwotICAgICAgICAgICAgdmlldygpLm1hcmtBbGxEZXNjZW5kYW50c1dpdGhG
bG9hdHNGb3JMYXlvdXQoKTsKLSAgICAgICAgICAgIGlmIChpc0JvZHlSZW5kZXJlcikgewotICAg
ICAgICAgICAgICAgIHJvb3RTdHlsZUNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJv
b3RSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0V3JpdGluZ01vZGUobmV3U3R5bGUud3JpdGlu
Z01vZGUoKSk7Ci0gICAgICAgICAgICAgICAgcm9vdFJlbmRlcmVyLT5zZXRIb3Jpem9udGFsV3Jp
dGluZ01vZGUobmV3U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CisgICAgICAgICAg
ICBpZiAodmlld1N0eWxlLndyaXRpbmdNb2RlKCkgIT0gbmV3U3R5bGUud3JpdGluZ01vZGUoKSAm
JiAoaXNEb2NFbGVtZW50UmVuZGVyZXIgfHwgIWRvY3VtZW50RWxlbWVudFJlbmRlcmVyLT5zdHls
ZSgpLmhhc0V4cGxpY2l0bHlTZXRXcml0aW5nTW9kZSgpKSkgeworICAgICAgICAgICAgICAgIHZp
ZXdTdHlsZS5zZXRXcml0aW5nTW9kZShuZXdTdHlsZS53cml0aW5nTW9kZSgpKTsKKyAgICAgICAg
ICAgICAgICB2aWV3RGlyZWN0aW9uT3JXcml0aW5nTW9kZUNoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIHZpZXcoKS5zZXRIb3Jpem9udGFsV3JpdGluZ01vZGUobmV3U3R5bGUuaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgdmlldygpLm1hcmtBbGxEZXNj
ZW5kYW50c1dpdGhGbG9hdHNGb3JMYXlvdXQoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNCb2R5
UmVuZGVyZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgcm9vdFN0eWxlQ2hhbmdlZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIHJvb3RSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0V3Jp
dGluZ01vZGUobmV3U3R5bGUud3JpdGluZ01vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIHJv
b3RSZW5kZXJlci0+c2V0SG9yaXpvbnRhbFdyaXRpbmdNb2RlKG5ld1N0eWxlLmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXRO
ZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogICAgICAgICB9CiAKICNp
ZiBFTkFCTEUoREFSS19NT0RFX0NTUykKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODcwNikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTAzLTE5ICBFdWdlbmUgQnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBU
ZXN0IGZvciBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlIGNyYXNoIGZpeAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBUaGlzIHRlc3QgYXBwZW5kcyA8Ym9k
eT4gZWxlbWVudCB0byBuYW1lc3BhY2VkIDxkZXNjPiBlbGVtZW50LgorCisgICAgICAgICogZmFz
dC9kb20vYXBwZW5kLWJvZHktYXMtY2hpbGQuaHRtbDoKKwogMjAyMC0wMy0xOSAgSmFzb24gTGF3
cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgYW5kIE1h
YyB3azIgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL3N0YWxlLXdoaWxl
LXJldmFsaWRhdGUvZnJhbWUtcmVtb3ZhbC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9hcHBlbmQtYm9keS1hcy1jaGlsZC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYXBwZW5kLWJvZHktYXMtY2hpbGQtZXhw
ZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2FwcGVuZC1i
b2R5LWFzLWNoaWxkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ25vZGUn
KSB0byBOb2RlLnJlcGxhY2VDaGlsZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE5vZGUKK0NPTlNP
TEUgTUVTU0FHRTogbGluZSAxNjogVHlwZUVycm9yOiBBcmd1bWVudCAxICgnbm9kZScpIHRvIE5v
ZGUucmVwbGFjZUNoaWxkIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTm9kZQorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDE2OiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdub2RlJykgdG8gTm9kZS5yZXBs
YWNlQ2hpbGQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBOb2RlCitDT05TT0xFIE1FU1NBR0U6IGxp
bmUgMTY6IE5vdEZvdW5kRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBmb3VuZCBoZXJlLgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDE2OiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdub2RlJykg
dG8gTm9kZS5yZXBsYWNlQ2hpbGQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBOb2RlCitDT05TT0xF
IE1FU1NBR0U6IGxpbmUgMTY6IFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ25vZGUnKSB0byBOb2Rl
LnJlcGxhY2VDaGlsZCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIE5vZGUKK0NPTlNPTEUgTUVTU0FH
RTogbGluZSAxNjogVHlwZUVycm9yOiBBcmd1bWVudCAxICgnbm9kZScpIHRvIE5vZGUucmVwbGFj
ZUNoaWxkIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTm9kZQorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDE2OiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdub2RlJykgdG8gTm9kZS5yZXBsYWNlQ2hpbGQg
bXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBOb2RlCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTY6IE5v
dEZvdW5kRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBmb3VuZCBoZXJlLgorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9hcHBlbmQtYm9keS1hcy1jaGlsZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FwcGVuZC1ib2R5LWFzLWNoaWxkLmh0bWwJKG5vbmV4
aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vYXBwZW5kLWJvZHktYXMtY2hpbGQuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACis8aGVhZCBpZD0iaGVhZCI+DQorICA8
c2NyaXB0Pg0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAgICB3aW5kb3cudGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOw0KKyAgICB9DQorDQorICAgIGZ1bmN0aW9uIERPTVN1YnRyZWVNb2RpZmllZEhhbmRs
ZXIoKSB7DQorICAgICAgdmFyIGRlc2MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ2Rlc2MnKTsNCisgICAgICB0cnkgew0KKyAgICAgICAg
ZG9jdW1lbnQuYXBwZW5kQ2hpbGQoZGVzYyk7DQorICAgICAgfQ0KKyAgICAgIGNhdGNoKGUpIHsN
CisgICAgICAgIC8vIENhbiBjYXVzZSBKUyBzdGFjayBvdmVyZmxvdy4NCisgICAgICB9DQorICAg
ICAgZG9jdW1lbnQucmVwbGFjZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5Iiks
IGV2ZW50LnNyY0VsZW1lbnQpOw0KKyAgICB9DQorICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIERPTVN1YnRyZWVNb2RpZmllZEhhbmRsZXIpOw0KKyAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJoZWFkIikub3V0ZXJIVE1MID0gIiI7DQorICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImRlc2MiKVswXS5hcHBlbmRDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9k
eSIpKTsNCisgICAgICAgICANCisgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAg
ICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsNCisgICAgICB9DQorICAgIH0pOw0K
KyAgPC9zY3JpcHQ+DQorPC9oZWFkPg0KKzxib2R5IGlkPSJib2R5Ij48L2JvZHk+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>394069</attachid>
            <date>2020-03-19 23:07:40 -0700</date>
            <delta_ts>2020-03-19 23:07:40 -0700</delta_ts>
            <desc>Minimized test case</desc>
            <filename>59847043-reduction.html</filename>
            <type>text/html</type>
            <size>360</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">PGJvZHkgZGlyPSJydGwiPjwvYm9keT4KPHNjcmlwdD4KZG9jdW1lbnQuYm9keS5vZmZzZXRIZWln
aHQ7CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIsIGZ1bmN0
aW9uKCkgewogICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOwogICAgbGV0IHN2
ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcn
LCAnZGVzYycpOwogICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoc3ZnKTsKfSk7CmRvY3VtZW50LnJl
cGxhY2VDaGlsZChkb2N1bWVudC5ib2R5LmNsb25lTm9kZSgpLCBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQpOwo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394094</attachid>
            <date>2020-03-20 09:53:45 -0700</date>
            <delta_ts>2020-03-25 14:09:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200320095345.patch</filename>
            <type>text/plain</type>
            <size>6549</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJlbmRlckJveDo6
c3R5bGVEaWRDaGFuZ2UgY3Jhc2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVs
ZW1lbnQgZWxlbWVudC4KKyAgICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51
bGwgZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisg
ICAgICAgIGlmICguLi4uIHx8ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSkpIHsKKworICAgICAgICBEdXJpbmcgdGhlIGNyYXNo
IHdlYiBwYWdlIGRldGFjaGVzIDxib2R5PiBlbGVtZW50IGZyb20gdGhlIGRvY3VtZW50OgorICAg
ICAgICBkb2N1bWVudC5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuYm9keSwgZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50KTsKKworICAgICAgICBUT0RPOiBmaWd1cmUgb3V0IGFuZCBleHBsYWluIHdoeSBp
dCdzIG9rIGZvciByZW5kZXJlciB0byBiZSBudWxsLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IHJlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVt
ZW50Lmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSk6CisKIDIwMjAtMDMtMTkgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYSB2
YXJpZXR5IG9mIENvY29hLXBsYXRmb3JtIEhBVkUgYW5kIEVOQUJMRSBtYWNyb3MKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAyNTg3MDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQ1LDI5ICszNDUsMzEgQEAgdm9pZCBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlm
ZgogICAgICAgICBib29sIHJvb3RTdHlsZUNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgYm9vbCB2
aWV3RGlyZWN0aW9uT3JXcml0aW5nTW9kZUNoYW5nZWQgPSBmYWxzZTsKICAgICAgICAgYXV0byog
cm9vdFJlbmRlcmVyID0gaXNCb2R5UmVuZGVyZXIgPyBkb2N1bWVudEVsZW1lbnRSZW5kZXJlciA6
IG51bGxwdHI7Ci0gICAgICAgIGlmICh2aWV3U3R5bGUuZGlyZWN0aW9uKCkgIT0gbmV3U3R5bGUu
ZGlyZWN0aW9uKCkgJiYgKGlzRG9jRWxlbWVudFJlbmRlcmVyIHx8ICFkb2N1bWVudEVsZW1lbnRS
ZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKCkpKSB7Ci0gICAgICAg
ICAgICB2aWV3U3R5bGUuc2V0RGlyZWN0aW9uKG5ld1N0eWxlLmRpcmVjdGlvbigpKTsKLSAgICAg
ICAgICAgIHZpZXdEaXJlY3Rpb25PcldyaXRpbmdNb2RlQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAg
ICAgICBpZiAoaXNCb2R5UmVuZGVyZXIpIHsKLSAgICAgICAgICAgICAgICByb290UmVuZGVyZXIt
Pm11dGFibGVTdHlsZSgpLnNldERpcmVjdGlvbihuZXdTdHlsZS5kaXJlY3Rpb24oKSk7Ci0gICAg
ICAgICAgICAgICAgcm9vdFN0eWxlQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBzZXROZWVkc0xheW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKKyAgICAgICAgaWYg
KGRvY3VtZW50RWxlbWVudFJlbmRlcmVyKSB7CisgICAgICAgICAgICBpZiAodmlld1N0eWxlLmRp
cmVjdGlvbigpICE9IG5ld1N0eWxlLmRpcmVjdGlvbigpICYmIChpc0RvY0VsZW1lbnRSZW5kZXJl
ciB8fCAhZG9jdW1lbnRFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuaGFzRXhwbGljaXRseVNldERp
cmVjdGlvbigpKSkgeworICAgICAgICAgICAgICAgIHZpZXdTdHlsZS5zZXREaXJlY3Rpb24obmV3
U3R5bGUuZGlyZWN0aW9uKCkpOworICAgICAgICAgICAgICAgIHZpZXdEaXJlY3Rpb25PcldyaXRp
bmdNb2RlQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGlzQm9keVJlbmRlcmVy
KSB7CisgICAgICAgICAgICAgICAgICAgIHJvb3RSZW5kZXJlci0+bXV0YWJsZVN0eWxlKCkuc2V0
RGlyZWN0aW9uKG5ld1N0eWxlLmRpcmVjdGlvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgcm9v
dFN0eWxlQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1JlY2FsYygpOwogCi0gICAgICAgICAgICB2aWV3
KCkuZnJhbWVWaWV3KCkudG9wQ29udGVudERpcmVjdGlvbkRpZENoYW5nZSgpOwotICAgICAgICB9
CisgICAgICAgICAgICAgICAgdmlldygpLmZyYW1lVmlldygpLnRvcENvbnRlbnREaXJlY3Rpb25E
aWRDaGFuZ2UoKTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAodmlld1N0eWxlLndyaXRp
bmdNb2RlKCkgIT0gbmV3U3R5bGUud3JpdGluZ01vZGUoKSAmJiAoaXNEb2NFbGVtZW50UmVuZGVy
ZXIgfHwgIWRvY3VtZW50RWxlbWVudFJlbmRlcmVyLT5zdHlsZSgpLmhhc0V4cGxpY2l0bHlTZXRX
cml0aW5nTW9kZSgpKSkgewotICAgICAgICAgICAgdmlld1N0eWxlLnNldFdyaXRpbmdNb2RlKG5l
d1N0eWxlLndyaXRpbmdNb2RlKCkpOwotICAgICAgICAgICAgdmlld0RpcmVjdGlvbk9yV3JpdGlu
Z01vZGVDaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHZpZXcoKS5zZXRIb3Jpem9udGFsV3Jp
dGluZ01vZGUobmV3U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7Ci0gICAgICAgICAg
ICB2aWV3KCkubWFya0FsbERlc2NlbmRhbnRzV2l0aEZsb2F0c0ZvckxheW91dCgpOwotICAgICAg
ICAgICAgaWYgKGlzQm9keVJlbmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAgcm9vdFN0eWxlQ2hh
bmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcm9vdFJlbmRlcmVyLT5tdXRhYmxlU3R5bGUo
KS5zZXRXcml0aW5nTW9kZShuZXdTdHlsZS53cml0aW5nTW9kZSgpKTsKLSAgICAgICAgICAgICAg
ICByb290UmVuZGVyZXItPnNldEhvcml6b250YWxXcml0aW5nTW9kZShuZXdTdHlsZS5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpKTsKKyAgICAgICAgICAgIGlmICh2aWV3U3R5bGUud3JpdGluZ01v
ZGUoKSAhPSBuZXdTdHlsZS53cml0aW5nTW9kZSgpICYmIChpc0RvY0VsZW1lbnRSZW5kZXJlciB8
fCAhZG9jdW1lbnRFbGVtZW50UmVuZGVyZXItPnN0eWxlKCkuaGFzRXhwbGljaXRseVNldFdyaXRp
bmdNb2RlKCkpKSB7CisgICAgICAgICAgICAgICAgdmlld1N0eWxlLnNldFdyaXRpbmdNb2RlKG5l
d1N0eWxlLndyaXRpbmdNb2RlKCkpOworICAgICAgICAgICAgICAgIHZpZXdEaXJlY3Rpb25Pcldy
aXRpbmdNb2RlQ2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdmlldygpLnNldEhvcml6
b250YWxXcml0aW5nTW9kZShuZXdTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKKyAg
ICAgICAgICAgICAgICB2aWV3KCkubWFya0FsbERlc2NlbmRhbnRzV2l0aEZsb2F0c0ZvckxheW91
dCgpOworICAgICAgICAgICAgICAgIGlmIChpc0JvZHlSZW5kZXJlcikgeworICAgICAgICAgICAg
ICAgICAgICByb290U3R5bGVDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm9v
dFJlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKS5zZXRXcml0aW5nTW9kZShuZXdTdHlsZS53cml0aW5n
TW9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcm9vdFJlbmRlcmVyLT5zZXRIb3Jpem9udGFs
V3JpdGluZ01vZGUobmV3U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldE5lZWRzTGF5b3V0QW5kUHJlZldpZHRoc1Jl
Y2FsYygpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXRBbmRQcmVm
V2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIH0KIAogI2lmIEVOQUJMRShEQVJLX01PREVfQ1NTKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjU4NzA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDMtMTkgIEV1Z2VuZSBCdXQgIDxldWdl
bmVidXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRlc3QgZm9yIFJlbmRlckJveDo6c3R5bGVE
aWRDaGFuZ2UgY3Jhc2ggZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDgzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKQor
CisgICAgICAgIFRoaXMgdGVzdCByZXBsYWNlcyA8Ym9keT4gd2l0aCBkb2N1bWVudCBlbGVtZW50
LgorCisgICAgICAgICogcmVwbGFjZS1ib2R5LXdpdGgtZG9jLWVsZW1lbnQuaHRtbDoKKwogMjAy
MC0wMy0xOSAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbIGlPUyB3azIgYW5kIE1hYyB3azIgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2ZldGNoL3N0YWxlLXdoaWxlLXJldmFsaWRhdGUvZnJhbWUtcmVtb3ZhbC5odG1sIGlzIGZsYWt5
IGZhaWxpbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlLWJvZHktd2l0aC1k
b2MtZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vcmVwbGFjZS1ib2R5LXdpdGgtZG9jLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVtZW50
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxMDogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxk
IHlpZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6
IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNv
cnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBIaWVyYXJjaHlSZXF1
ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5vZGUgdHJl
ZS4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVwbGFjZS1ib2R5LXdpdGgtZG9jLWVs
ZW1lbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlLWJv
ZHktd2l0aC1kb2MtZWxlbWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL3JlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNyBAQAorPGJvZHk+PC9ib2R5Pg0KKzxzY3JpcHQ+DQorICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsNCisgICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KKyAg
ICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7DQorICB9DQorDQorICBkb2N1bWVu
dC5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9kaWZpZWQiLCBmdW5jdGlvbigpIHsNCisg
ICAgICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZycsICdkZXNjJyk7DQorICAgICAgZG9jdW1lbnQuYXBwZW5kQ2hpbGQoc3ZnKTsN
CisgIH0pOw0KKyAgZG9jdW1lbnQucmVwbGFjZUNoaWxkKGRvY3VtZW50LmJvZHksIGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCk7DQorDQorICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsNCisgICAg
d2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOw0KKyAgfQ0KKzwvc2NyaXB0Pg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394543</attachid>
            <date>2020-03-25 14:09:29 -0700</date>
            <delta_ts>2020-03-25 16:17:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200325140929.patch</filename>
            <type>text/plain</type>
            <size>5044</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJlbmRlckJveDo6
c3R5bGVEaWRDaGFuZ2UgY3Jhc2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVs
ZW1lbnQgZWxlbWVudC4KKyAgICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51
bGwgZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisg
ICAgICAgIGlmICguLi4uIHx8ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSkpIHsKKworICAgICAgICBEdXJpbmcgdGhlIGNyYXNo
IHdlYiBwYWdlIGRldGFjaGVzIDxib2R5PiBlbGVtZW50IGZyb20gdGhlIGRvY3VtZW50IGFuZCBy
ZXBsYWNlcyBpdCB3aXRoIGRvY3VtZW50RWxlbWVudDoKKyAgICAgICAgZG9jdW1lbnQucmVwbGFj
ZUNoaWxkKGRvY3VtZW50LmJvZHksIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CisKKyAgICAg
ICAgVGhpcyBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgYnkgc3BlYzogCisgICAgICAgIAorICAg
ICAgICBJZiBwYXJlbnQgaXMgYSBkb2N1bWVudCwgYW5kIGFueSBvZiB0aGUgc3RhdGVtZW50cyBi
ZWxvdywgc3dpdGNoZWQgb24gbm9kZSwKKyAgICAgICAgYXJlIHRydWUsIHRoZW4gdGhyb3cgYSAi
SGllcmFyY2h5UmVxdWVzdEVycm9yIiBET01FeGNlcHRpb246CisgICAgICAgICAgICAuLi4uLi4u
CisgICAgICAgICAgICBlbGVtZW50CisgICAgICAgICAgICAgICAgcGFyZW50IGhhcyBhbiBlbGVt
ZW50IGNoaWxkIHRoYXQgaXMgbm90IGNoaWxkIG9yIGEgZG9jdHlwZSBpcyBmb2xsb3dpbmcgY2hp
bGQuCisgICAgICAgICAgICAuLi4uLi4KKyAgICAgICAgaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNjb25jZXB0LW5vZGUtcmVwbGFjZQorCisgICAgICAgIEhlbmNlIHRoZSBmaXggaXMgdG8g
cmV0dXJuIGZhbHNlIGZyb20gRG9jdW1lbnQ6OmNhbkFjY2VwdENoaWxkIGlmIHxuZXdDaGlsZHwg
aXMgRUxFTUVOVF9OT0RFIGFuZAorICAgICAgICB8cmVmQ2hpbGR8IGRvZXMgbm90IGV4aXN0LiBU
aGlzIGxvZ2ljIHdhcyBjb3BpZWQgZnJvbSBEb2N1bWVudDo6Q2FuQWNjZXB0Q2hpbGQgbWV0aG9k
IGluIENocm9taXVtJ3MgQmxpbms6CisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2No
cm9taXVtL3NyYy90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2RvbS9kb2N1bWVudC5j
Yz9xPSUyMnBhcmVudCtoYXMrYW4rZWxlbWVudCtjaGlsZCt0aGF0K2lzK25vdCtjaGlsZCUyMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL3JlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHls
ZURpZENoYW5nZSk6CisKIDIwMjAtMDMtMTkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYSB2YXJpZXR5IG9mIENvY29hLXBsYXRmb3Jt
IEhBVkUgYW5kIEVOQUJMRSBtYWNyb3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMjU4NzA2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzkxNiw2ICszOTE2LDkgQEAgYm9vbCBEb2N1bWVudDo6Y2FuQWNjZXB0Q2hp
bGQoY29uc3QgTm9kZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBFTEVNRU5UX05P
REU6IHsKKyAgICAgICAgaWYgKCFyZWZDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgICAgICBhdXRvKiBleGlzdGluZ0VsZW1lbnRDaGlsZCA9IGZpcnN0RWxlbWVudENoaWxk
KCk7CiAgICAgICAgIGlmIChvcGVyYXRpb24gPT0gQWNjZXB0Q2hpbGRPcGVyYXRpb246OlJlcGxh
Y2UpIHsKICAgICAgICAgICAgIGlmIChleGlzdGluZ0VsZW1lbnRDaGlsZCAmJiBleGlzdGluZ0Vs
ZW1lbnRDaGlsZCAhPSByZWZDaGlsZCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODcwNikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIw
LTAzLTE5ICBFdWdlbmUgQnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBU
ZXN0IGZvciBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlIGNyYXNoIGZpeAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBUaGlzIHRlc3QgcmVwbGFjZXMgPGJv
ZHk+IHdpdGggZG9jdW1lbnQgZWxlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQgYnkgc3BlYzoK
KyAgICAgICAgCisgICAgICAgIElmIHBhcmVudCBpcyBhIGRvY3VtZW50LCBhbmQgYW55IG9mIHRo
ZSBzdGF0ZW1lbnRzIGJlbG93LCBzd2l0Y2hlZCBvbiBub2RlLAorICAgICAgICBhcmUgdHJ1ZSwg
dGhlbiB0aHJvdyBhICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiIERPTUV4Y2VwdGlvbjoKKyAgICAg
ICAgICAgIC4uLi4uLi4KKyAgICAgICAgICAgIGVsZW1lbnQKKyAgICAgICAgICAgICAgICBwYXJl
bnQgaGFzIGFuIGVsZW1lbnQgY2hpbGQgdGhhdCBpcyBub3QgY2hpbGQgb3IgYSBkb2N0eXBlIGlz
IGZvbGxvd2luZyBjaGlsZC4KKyAgICAgICAgICAgIC4uLi4uLgorICAgICAgICBodHRwczovL2Rv
bS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtbm9kZS1yZXBsYWNlCisKKyAgICAgICAgKiByZXBs
YWNlLWJvZHktd2l0aC1kb2MtZWxlbWVudC5odG1sOgorCiAyMDIwLTAzLTE5ICBKYXNvbiBMYXdy
ZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBhbmQgTWFj
IHdrMiBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvc3RhbGUtd2hpbGUt
cmV2YWxpZGF0ZS9mcmFtZS1yZW1vdmFsLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVtZW50LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlLWJvZHktd2l0
aC1kb2MtZWxlbWVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVwbGFjZS1ib2R5LXdpdGgtZG9jLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEwOiBIaWVy
YXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0
IG5vZGUgdHJlZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogSGllcmFyY2h5UmVxdWVzdEVy
cm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlpZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJh
dGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9yZXBsYWNlLWJvZHktd2l0aC1kb2MtZWxlbWVudC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVtZW50
Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVwbGFjZS1ib2R5
LXdpdGgtZG9jLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACis8
Ym9keT48L2JvZHk+DQorPHNjcmlwdD4NCisgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgew0KKyAg
ICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorICAgIHdpbmRvdy50ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsNCisgIH0NCisNCisgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIo
IkRPTVN1YnRyZWVNb2RpZmllZCIsIGZ1bmN0aW9uKCkgew0KKyAgICBsZXQgc3ZnID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycsICdkZXNjJyk7
DQorICAgIGRvY3VtZW50LmFwcGVuZENoaWxkKHN2Zyk7DQorICB9KTsNCisgIGRvY3VtZW50LnJl
cGxhY2VDaGlsZChkb2N1bWVudC5ib2R5LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOw0KKw0K
KyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7DQorICAgIHdpbmRvdy50ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsNCisgIH0NCis8L3NjcmlwdD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394560</attachid>
            <date>2020-03-25 16:17:09 -0700</date>
            <delta_ts>2020-03-25 22:39:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200325161708.patch</filename>
            <type>text/plain</type>
            <size>4917</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJlbmRlckJveDo6
c3R5bGVEaWRDaGFuZ2UgY3Jhc2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVs
ZW1lbnQgZWxlbWVudC4KKyAgICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51
bGwgZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisg
ICAgICAgIGlmICguLi4uIHx8ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNF
eHBsaWNpdGx5U2V0V3JpdGluZ01vZGUoKSkpIHsKKworICAgICAgICBEdXJpbmcgdGhlIGNyYXNo
IHdlYiBwYWdlIGRldGFjaGVzIDxib2R5PiBlbGVtZW50IGZyb20gdGhlIGRvY3VtZW50IGFuZCBy
ZXBsYWNlcyBpdCB3aXRoIGRvY3VtZW50RWxlbWVudDoKKyAgICAgICAgZG9jdW1lbnQucmVwbGFj
ZUNoaWxkKGRvY3VtZW50LmJvZHksIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CisKKyAgICAg
ICAgVGhpcyBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgYnkgc3BlYzogCisgICAgICAgIAorICAg
ICAgICBJZiBwYXJlbnQgaXMgYSBkb2N1bWVudCwgYW5kIGFueSBvZiB0aGUgc3RhdGVtZW50cyBi
ZWxvdywgc3dpdGNoZWQgb24gbm9kZSwKKyAgICAgICAgYXJlIHRydWUsIHRoZW4gdGhyb3cgYSAi
SGllcmFyY2h5UmVxdWVzdEVycm9yIiBET01FeGNlcHRpb246CisgICAgICAgICAgICAuLi4uLi4u
CisgICAgICAgICAgICBlbGVtZW50CisgICAgICAgICAgICAgICAgcGFyZW50IGhhcyBhbiBlbGVt
ZW50IGNoaWxkIHRoYXQgaXMgbm90IGNoaWxkIG9yIGEgZG9jdHlwZSBpcyBmb2xsb3dpbmcgY2hp
bGQuCisgICAgICAgICAgICAuLi4uLi4KKyAgICAgICAgaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNjb25jZXB0LW5vZGUtcmVwbGFjZQorCisgICAgICAgIEhlbmNlIHRoZSBmaXggaXMgdG8g
cmV0dXJuIGZhbHNlIGZyb20gRG9jdW1lbnQ6OmNhbkFjY2VwdENoaWxkIGlmIHxuZXdDaGlsZHwg
aXMgRUxFTUVOVF9OT0RFIGFuZAorICAgICAgICB8cmVmQ2hpbGR8IGRvZXMgbm90IGV4aXN0LiBU
aGlzIGxvZ2ljIHdhcyBjb3BpZWQgZnJvbSBEb2N1bWVudDo6Q2FuQWNjZXB0Q2hpbGQgbWV0aG9k
IGluIENocm9taXVtJ3MgQmxpbms6CisgICAgICAgIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2No
cm9taXVtL3NyYy90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2RvbS9kb2N1bWVudC5j
Yz9xPSUyMnBhcmVudCtoYXMrYW4rZWxlbWVudCtjaGlsZCt0aGF0K2lzK25vdCtjaGlsZCUyMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL3JlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVtZW50Lmh0bWwKKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpzdHls
ZURpZENoYW5nZSk6CisKIDIwMjAtMDMtMTkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYSB2YXJpZXR5IG9mIENvY29hLXBsYXRmb3Jt
IEhBVkUgYW5kIEVOQUJMRSBtYWNyb3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMjU4NzA2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzkxNiw2ICszOTE2LDkgQEAgYm9vbCBEb2N1bWVudDo6Y2FuQWNjZXB0Q2hp
bGQoY29uc3QgTm9kZQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBFTEVNRU5UX05P
REU6IHsKKyAgICAgICAgaWYgKCFyZWZDaGlsZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgICAgICBhdXRvKiBleGlzdGluZ0VsZW1lbnRDaGlsZCA9IGZpcnN0RWxlbWVudENoaWxk
KCk7CiAgICAgICAgIGlmIChvcGVyYXRpb24gPT0gQWNjZXB0Q2hpbGRPcGVyYXRpb246OlJlcGxh
Y2UpIHsKICAgICAgICAgICAgIGlmIChleGlzdGluZ0VsZW1lbnRDaGlsZCAmJiBleGlzdGluZ0Vs
ZW1lbnRDaGlsZCAhPSByZWZDaGlsZCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODcwNikKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDIw
LTAzLTE5ICBFdWdlbmUgQnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBU
ZXN0IGZvciBSZW5kZXJCb3g6OnN0eWxlRGlkQ2hhbmdlIGNyYXNoIGZpeAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MzExCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKworICAgICAgICBUaGlzIHRlc3QgcmVwbGFjZXMgPGJv
ZHk+IHdpdGggZG9jdW1lbnQgZWxlbWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQgYnkgc3BlYzoK
KyAgICAgICAgCisgICAgICAgIElmIHBhcmVudCBpcyBhIGRvY3VtZW50LCBhbmQgYW55IG9mIHRo
ZSBzdGF0ZW1lbnRzIGJlbG93LCBzd2l0Y2hlZCBvbiBub2RlLAorICAgICAgICBhcmUgdHJ1ZSwg
dGhlbiB0aHJvdyBhICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiIERPTUV4Y2VwdGlvbjoKKyAgICAg
ICAgICAgIC4uLi4uLi4KKyAgICAgICAgICAgIGVsZW1lbnQKKyAgICAgICAgICAgICAgICBwYXJl
bnQgaGFzIGFuIGVsZW1lbnQgY2hpbGQgdGhhdCBpcyBub3QgY2hpbGQgb3IgYSBkb2N0eXBlIGlz
IGZvbGxvd2luZyBjaGlsZC4KKyAgICAgICAgICAgIC4uLi4uLgorICAgICAgICBodHRwczovL2Rv
bS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtbm9kZS1yZXBsYWNlCisKKyAgICAgICAgKiByZXBs
YWNlLWJvZHktd2l0aC1kb2MtZWxlbWVudC5odG1sOgorCiAyMDIwLTAzLTE5ICBKYXNvbiBMYXdy
ZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBhbmQgTWFj
IHdrMiBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvc3RhbGUtd2hpbGUt
cmV2YWxpZGF0ZS9mcmFtZS1yZW1vdmFsLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxhY2UtYm9keS13aXRoLWRvYy1lbGVtZW50LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlLWJvZHktd2l0
aC1kb2MtZWxlbWVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVwbGFjZS1ib2R5LXdpdGgtZG9jLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIHJlcGxhY2UtYm9keS13aXRoLWRvYy1l
bGVtZW50IAorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXBsYWNlLWJvZHktd2l0aC1k
b2MtZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3JlcGxh
Y2UtYm9keS13aXRoLWRvYy1lbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVwbGFjZS1ib2R5LXdpdGgtZG9jLWVsZW1lbnQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE2IEBACis8Ym9keSBkaXI9InJ0bCI+PC9ib2R5Pg0KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pg0KKzxz
Y3JpcHQ+DQordGVzdChmdW5jdGlvbigpIHsNCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRIZWln
aHQ7DQorICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmllZCIs
IGZ1bmN0aW9uKCkgew0KKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIp
Ow0KKyAgICAgICAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLCAiZGVzYyIpOw0KKyAgICAgICAgYXNzZXJ0X3Rocm93cygiSGll
cmFyY2h5UmVxdWVzdEVycm9yIiwgZnVuY3Rpb24oKSB7DQorICAgICAgICAgIGRvY3VtZW50LmFw
cGVuZENoaWxkKHN2Zyk7DQorICAgICAgICB9KTsNCisgICAgfSk7DQorICAgIGRvY3VtZW50LnJl
cGxhY2VDaGlsZChkb2N1bWVudC5ib2R5LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOw0KK30p
Ow0KKzwvc2NyaXB0Pg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394578</attachid>
            <date>2020-03-25 22:39:34 -0700</date>
            <delta_ts>2020-03-26 10:30:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200325223933.patch</filename>
            <type>text/plain</type>
            <size>6263</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UgY3Jh
c2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVsZW1lbnQgZWxlbWVudC4KKyAg
ICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51bGwgZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisgICAgICAgIGlmICguLi4uIHx8
ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0V3JpdGlu
Z01vZGUoKSkpIHsKKworICAgICAgICBUaGF0IEhUTUxCb2R5RWxlbWVudCB3YXMgYWRkZWQgYXMg
YSBzZWNvbmQgY2hpbGQgb2YgZG9jdW1lbnQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIHBlciBzcGVj
OiAKKyAgICAgICAgCisgICAgICAgIElmIHBhcmVudCBpcyBhIGRvY3VtZW50LCBhbmQgYW55IG9m
IHRoZSBzdGF0ZW1lbnRzIGJlbG93LCBzd2l0Y2hlZCBvbiBub2RlLAorICAgICAgICBhcmUgdHJ1
ZSwgdGhlbiB0aHJvdyBhICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiIERPTUV4Y2VwdGlvbjoKKyAg
ICAgICAgICAgIC4uLi4uLi4KKyAgICAgICAgICAgIGVsZW1lbnQKKyAgICAgICAgICAgICAgICBw
YXJlbnQgaGFzIGFuIGVsZW1lbnQgY2hpbGQgdGhhdCBpcyBub3QgY2hpbGQgb3IgYSBkb2N0eXBl
IGlzIGZvbGxvd2luZyBjaGlsZC4KKyAgICAgICAgICAgIC4uLi4uLgorICAgICAgICBodHRwczov
L2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtbm9kZS1yZXBsYWNlCisKKyAgICAgICAgVGhp
cyBwYXRjaCB1cGRhdGVzIENvbnRhaW5lck5vZGU6OnJlcGxhY2VDaGlsZCBpbXBsZW1lbnRhdGlv
biB0byByZWNoZWNrIGlmIG5ld0VsZW1lbnQKKyAgICAgICAgc3RpbGwgaGFzIGEgcGFyZW50IGFm
dGVyIGV4ZWN1dGluZyBNdXRhdGlvbkV2ZW50IGFmdGVyIGNhbGxpbmcgcmVtb3ZlQ2hpbGQuIElm
IHBhcmVudAorICAgICAgICB3YXMgcmVtb3ZlZCB0aGVuIGNhbGwgY2hlY2tBY2NlcHRDaGlsZCB3
aXRoIEFjY2VwdENoaWxkT3BlcmF0aW9uOjpJbnNlcnRPckFkZAorICAgICAgICBpbnN0ZWFkIG9m
IEFjY2VwdENoaWxkT3BlcmF0aW9uOjpSZXBsYWNlLCBzbyBEb2N1bWVudDo6Y2FuQWNjZXB0Q2hp
bGQgY291bGQKKyAgICAgICAgY29ycmVjdGx5IHJldmFsaWRhdGUgYWRkaXRpb24gb2YgYSBuZXcg
Y2hpbGQuCisgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGls
ZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQuaHRtbAorCisgICAgICAgICogU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKToKKwogMjAyMC0wMy0xOSAgVGltIEhvcnRvbiAgPHRp
bW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhIHZhcmlldHkgb2Yg
Q29jb2EtcGxhdGZvcm0gSEFWRSBhbmQgRU5BQkxFIG1hY3JvcwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAkocmV2aXNpb24gMjU4NzA2KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjUsNyArNTI1LDE1IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnRhaW5lck5vZGU6OnJlcGxhY2UKIAogICAgICAgICAvLyBE
b2VzIHRoaXMgb25lIG1vcmUgdGltZSBiZWNhdXNlIHJlbW92ZUNoaWxkKCkgZmlyZXMgYSBNdXRh
dGlvbkV2ZW50LgogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogdGFyZ2V0cykgewotICAgICAg
ICAgICAgdmFsaWRpdHlSZXN1bHQgPSBjaGVja1ByZVJlcGxhY2VtZW50VmFsaWRpdHkoKnRoaXMs
IGNoaWxkLCBvbGRDaGlsZCwgU2hvdWxkVmFsaWRhdGVDaGlsZFBhcmVudDo6Tm8pOworICAgICAg
ICAgICAgdmFsaWRpdHlSZXN1bHQgPSBjaGVja0FjY2VwdENoaWxkKAorICAgICAgICAgICAgICAg
ICp0aGlzLCBjaGlsZCwgJm9sZENoaWxkLAorICAgICAgICAgICAgICAgIC8vIG9sZENoaWxkIGNv
dWxkIGJlIHJlbW92ZWQgaW5zaWRlIE11dGF0aW9uRXZlbnQgaGFuZGxlci4gSW4KKyAgICAgICAg
ICAgICAgICAvLyB0aGF0IGNhc2UgdXNlIEluc2VydE9yQWRkIG9wZXJhdGlvbiwgd2hpY2ggaGFz
IHN0cmljdGVyCisgICAgICAgICAgICAgICAgLy8gY2hlY2tzIGNvbXBhcmluZyB0byBSZXBsYWNl
LgorICAgICAgICAgICAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUoKSA/CisgICAgICAgICAgICAg
ICAgICAgIERvY3VtZW50OjpBY2NlcHRDaGlsZE9wZXJhdGlvbjo6UmVwbGFjZSA6CisgICAgICAg
ICAgICAgICAgICAgIERvY3VtZW50OjpBY2NlcHRDaGlsZE9wZXJhdGlvbjo6SW5zZXJ0T3JBZGQs
CisgICAgICAgICAgICAgICAgU2hvdWxkVmFsaWRhdGVDaGlsZFBhcmVudDo6Tm8pOwogICAgICAg
ICAgICAgaWYgKHZhbGlkaXR5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgICAg
IHJldHVybiB2YWxpZGl0eVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgICAgIH0KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI1ODcwNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAzLTE5ICBFdWdlbmUgQnV0ICA8ZXVnZW5l
YnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXN0IGZvciBSZW5kZXJCb3g6OnN0eWxlRGlk
Q2hhbmdlIGNyYXNoIGZpeAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA4MzExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkKKwor
ICAgICAgICBUaGlzIHRlc3QgYWRkcyBzdmcgY2hpbGQgdG8gYSBkb2N1bWVudCBmcm9tIG11dGF0
aW9uIGV2ZW50IG9ic2VydmVyIHdoaWxlIGV4aXN0aW5nIGRvY3VtZW50IGNoaWxkIGlzIGJlaW5n
IHJlcGxhY2VkLgorICAgICAgICBBZnRlciBhZGRpbmcgc3ZnIGNoaWxkIHRoZSBkb2N1bWVudCBz
aG91bGQgcmVqZWN0IHRoZSByZXBsYWNlbWVudCBvZiBleGlzdGluZyBjaGlsZCwgcGVyIHNwZWM6
CisgICAgICAgIAorICAgICAgICBJZiBwYXJlbnQgaXMgYSBkb2N1bWVudCwgYW5kIGFueSBvZiB0
aGUgc3RhdGVtZW50cyBiZWxvdywgc3dpdGNoZWQgb24gbm9kZSwKKyAgICAgICAgYXJlIHRydWUs
IHRoZW4gdGhyb3cgYSAiSGllcmFyY2h5UmVxdWVzdEVycm9yIiBET01FeGNlcHRpb246CisgICAg
ICAgICAgICAuLi4uLi4uCisgICAgICAgICAgICBlbGVtZW50CisgICAgICAgICAgICAgICAgcGFy
ZW50IGhhcyBhbiBlbGVtZW50IGNoaWxkIHRoYXQgaXMgbm90IGNoaWxkIG9yIGEgZG9jdHlwZSBp
cyBmb2xsb3dpbmcgY2hpbGQuCisgICAgICAgICAgICAuLi4uLi4KKyAgICAgICAgaHR0cHM6Ly9k
b20uc3BlYy53aGF0d2cub3JnLyNjb25jZXB0LW5vZGUtcmVwbGFjZQorCisgICAgICAgICogYWRk
LWRvY3VtZW50LWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sOgor
CiAyMDIwLTAzLTE5ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFsgaU9TIHdrMiBhbmQgTWFjIHdrMiBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvZmV0Y2gvc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZS9mcmFtZS1yZW1vdmFsLmh0bWwgaXMg
Zmxha3kgZmFpbGluZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1j
aGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmct
ZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1lbnQt
Y2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NyBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhl
IG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3Vs
ZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6
IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNv
cnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVl
c3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVl
LgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9w
ZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorUEFTUyBkb2N1bWVu
dC5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuYm9keSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB0
aHJldyBleGNlcHRpb24gSGllcmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxk
IHlpZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYWRkLWRvY3VtZW50LWNo
aWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sCShub25leGlzdGVudCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1l
bnQtY2hpbGQtcmVwbGFjZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBA
Cis8Ym9keSBkaXI9InJ0bCI+PC9ib2R5Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQ+DQorICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0SGVpZ2h0Ow0KKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVl
TW9kaWZpZWQiLCBmdW5jdGlvbigpIHsNCisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJT
ZWxlY3RBbGwiKTsNCisgICAgICAgIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgImRlc2MiKTsNCisgICAgICAgIGRvY3VtZW50
LmFwcGVuZENoaWxkKHN2Zyk7DQorICAgIH0pOw0KKw0KKyAgICBzaG91bGRUaHJvd0Vycm9yTmFt
ZSgiZG9jdW1lbnQucmVwbGFjZUNoaWxkKGRvY3VtZW50LmJvZHksIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCkiLCAiSGllcmFyY2h5UmVxdWVzdEVycm9yIik7DQorPC9zY3JpcHQ+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394622</attachid>
            <date>2020-03-26 10:30:59 -0700</date>
            <delta_ts>2020-03-26 16:13:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200326103059.patch</filename>
            <type>text/plain</type>
            <size>5442</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UgY3Jh
c2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVsZW1lbnQgZWxlbWVudC4KKyAg
ICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51bGwgZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisgICAgICAgIGlmICguLi4uIHx8
ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0V3JpdGlu
Z01vZGUoKSkpIHsKKworICAgICAgICBUaGF0IEhUTUxCb2R5RWxlbWVudCB3YXMgYWRkZWQgYXMg
YSBzZWNvbmQgY2hpbGQgb2YgZG9jdW1lbnQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIHBlciBzcGVj
OiAKKyAgICAgICAgCisgICAgICAgIElmIHBhcmVudCBpcyBhIGRvY3VtZW50LCBhbmQgYW55IG9m
IHRoZSBzdGF0ZW1lbnRzIGJlbG93LCBzd2l0Y2hlZCBvbiBub2RlLAorICAgICAgICBhcmUgdHJ1
ZSwgdGhlbiB0aHJvdyBhICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiIERPTUV4Y2VwdGlvbjoKKyAg
ICAgICAgICAgIC4uLi4uLi4KKyAgICAgICAgICAgIGVsZW1lbnQKKyAgICAgICAgICAgICAgICBw
YXJlbnQgaGFzIGFuIGVsZW1lbnQgY2hpbGQgdGhhdCBpcyBub3QgY2hpbGQgb3IgYSBkb2N0eXBl
IGlzIGZvbGxvd2luZyBjaGlsZC4KKyAgICAgICAgICAgIC4uLi4uLgorICAgICAgICBodHRwczov
L2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtbm9kZS1yZXBsYWNlCisKKyAgICAgICAgVE9E
TzogZXhwbGFpbiB3aGF0IHRoaXMgcGF0Y2ggY2hhbmdlcyBhbmQgd2h5IHRoaXMgaXMgdGhlIHJp
Z2h0IHNvbHV0aW9uCisgICAgICAgCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2FkZC1kb2N1bWVu
dC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQuaHRtbAorCisgICAgICAg
ICogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpjYW5BY2NlcHRDaGlsZCk6CisKIDIwMjAtMDMtMTkgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXBzdHJlYW0gYSB2YXJpZXR5IG9mIENv
Y29hLXBsYXRmb3JtIEhBVkUgYW5kIEVOQUJMRSBtYWNyb3MKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMjU4NzA2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg3Myw3ICszODczLDcgQEAgYm9vbCBEb2N1bWVudDo6
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZQogCiBib29sIERvY3VtZW50OjpjYW5BY2NlcHRDaGls
ZChjb25zdCBOb2RlJiBuZXdDaGlsZCwgY29uc3QgTm9kZSogcmVmQ2hpbGQsIEFjY2VwdENoaWxk
T3BlcmF0aW9uIG9wZXJhdGlvbikgY29uc3QKIHsKLSAgICBpZiAob3BlcmF0aW9uID09IEFjY2Vw
dENoaWxkT3BlcmF0aW9uOjpSZXBsYWNlICYmIHJlZkNoaWxkLT5ub2RlVHlwZSgpID09IG5ld0No
aWxkLm5vZGVUeXBlKCkpCisgICAgaWYgKG9wZXJhdGlvbiA9PSBBY2NlcHRDaGlsZE9wZXJhdGlv
bjo6UmVwbGFjZSAmJiByZWZDaGlsZC0+cGFyZW50Tm9kZSgpICYmIHJlZkNoaWxkLT5ub2RlVHlw
ZSgpID09IG5ld0NoaWxkLm5vZGVUeXBlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
c3dpdGNoIChuZXdDaGlsZC5ub2RlVHlwZSgpKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTg3MDYp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBA
QAorMjAyMC0wMy0xOSAgRXVnZW5lIEJ1dCAgPGV1Z2VuZWJ1dEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgVGVzdCBmb3IgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSBjcmFzaCBmaXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAgVGhpcyB0ZXN0IGFkZHMg
c3ZnIGNoaWxkIHRvIGEgZG9jdW1lbnQgZnJvbSBtdXRhdGlvbiBldmVudCBvYnNlcnZlciB3aGls
ZSBleGlzdGluZyBkb2N1bWVudCBjaGlsZCBpcyBiZWluZyByZXBsYWNlZC4KKyAgICAgICAgQWZ0
ZXIgYWRkaW5nIHN2ZyBjaGlsZCB0aGUgZG9jdW1lbnQgc2hvdWxkIHJlamVjdCB0aGUgcmVwbGFj
ZW1lbnQgb2YgZXhpc3RpbmcgY2hpbGQsIHBlciBzcGVjOgorICAgICAgICAKKyAgICAgICAgSWYg
cGFyZW50IGlzIGEgZG9jdW1lbnQsIGFuZCBhbnkgb2YgdGhlIHN0YXRlbWVudHMgYmVsb3csIHN3
aXRjaGVkIG9uIG5vZGUsCisgICAgICAgIGFyZSB0cnVlLCB0aGVuIHRocm93IGEgIkhpZXJhcmNo
eVJlcXVlc3RFcnJvciIgRE9NRXhjZXB0aW9uOgorICAgICAgICAgICAgLi4uLi4uLgorICAgICAg
ICAgICAgZWxlbWVudAorICAgICAgICAgICAgICAgIHBhcmVudCBoYXMgYW4gZWxlbWVudCBjaGls
ZCB0aGF0IGlzIG5vdCBjaGlsZCBvciBhIGRvY3R5cGUgaXMgZm9sbG93aW5nIGNoaWxkLgorICAg
ICAgICAgICAgLi4uLi4uCisgICAgICAgIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29u
Y2VwdC1ub2RlLXJlcGxhY2UKKworICAgICAgICAqIGFkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmct
ZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQuaHRtbDoKKwogMjAyMC0wMy0xOSAgSmFzb24gTGF3
cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgYW5kIE1h
YyB3azIgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL3N0YWxlLXdoaWxl
LXJldmFsaWRhdGUvZnJhbWUtcmVtb3ZhbC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNo
aWxkLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2Vt
ZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9h
ZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQg
YW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4OiBIaWVyYXJj
aHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5v
ZGUgdHJlZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6
IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4KK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24g
d291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4KK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4g
aW5jb3JyZWN0IG5vZGUgdHJlZS4KK1BBU1MgZG9jdW1lbnQucmVwbGFjZUNoaWxkKGRvY3VtZW50
LmJvZHksIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkgdGhyZXcgZXhjZXB0aW9uIEhpZXJhcmNo
eVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9k
ZSB0cmVlLi4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYWRkLWRvY3VtZW50LWNoaWxk
LWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hp
bGQtcmVwbGFjZW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50Lmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPGJvZHkgZGlyPSJydGwiPjwvYm9k
eT4NCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4NCis8c2NyaXB0Pg0KKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodDsNCisgICAgZG9j
dW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIiwgZnVuY3Rpb24oKSB7
DQorICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7DQorICAgICAgICBs
ZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2ZyIsICJkZXNjIik7DQorICAgICAgICBkb2N1bWVudC5hcHBlbmRDaGlsZChzdmcpOw0KKyAg
ICB9KTsNCisNCisgICAgc2hvdWxkVGhyb3dFcnJvck5hbWUoImRvY3VtZW50LnJlcGxhY2VDaGls
ZChkb2N1bWVudC5ib2R5LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIiwgIkhpZXJhcmNoeVJl
cXVlc3RFcnJvciIpOw0KKzwvc2NyaXB0Pg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394658</attachid>
            <date>2020-03-26 14:40:44 -0700</date>
            <delta_ts>2020-03-26 16:13:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200326144044.patch</filename>
            <type>text/plain</type>
            <size>6089</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UgY3Jh
c2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVsZW1lbnQgZWxlbWVudC4KKyAg
ICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51bGwgZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisgICAgICAgIGlmICguLi4uIHx8
ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0V3JpdGlu
Z01vZGUoKSkpIHsKKworICAgICAgICBUaGF0IEhUTUxCb2R5RWxlbWVudCB3YXMgYWRkZWQgYXMg
dGhlIHNlY29uZCBjaGlsZCBvZiBkb2N1bWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQgcGVyIHNw
ZWM6IAorICAgICAgICAKKyAgICAgICAgSWYgcGFyZW50IGlzIGEgZG9jdW1lbnQsIGFuZCBhbnkg
b2YgdGhlIHN0YXRlbWVudHMgYmVsb3csIHN3aXRjaGVkIG9uIG5vZGUsCisgICAgICAgIGFyZSB0
cnVlLCB0aGVuIHRocm93IGEgIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIgRE9NRXhjZXB0aW9uOgor
ICAgICAgICAgICAgLi4uLi4uLgorICAgICAgICAgICAgZWxlbWVudAorICAgICAgICAgICAgICAg
IHBhcmVudCBoYXMgYW4gZWxlbWVudCBjaGlsZCB0aGF0IGlzIG5vdCBjaGlsZCBvciBhIGRvY3R5
cGUgaXMgZm9sbG93aW5nIGNoaWxkLgorICAgICAgICAgICAgLi4uLi4uCisgICAgICAgIGh0dHBz
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ub2RlLXJlcGxhY2UKKworICAgICAgICBU
aGlzIHBhdGNoIHByZXZlbnRzIGFkZGluZyBIVE1MQm9keUVsZW1lbnQgYXMgdGhlIHNlY29uZCBj
aGlsZCBieSBydW5uaW5nIG1vcmUgc3RyaWN0IGNoZWNrcworICAgICAgICBpbnNpZGUgV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNhbkFjY2VwdENoaWxkKCkuIFByZXZpb3VzbHkgY2FuQWNjZXB0Q2hpbGQo
KSB3b3VsZCBhbGxvdyBhbGwKKyAgICAgICAgUmVwbGFjZSBvcGVyYXRpb25zIGlmIG5ldyBjaGls
ZCBoYWQgdGhlIHNhbWUgdHlwZSBhcyBvbGQgY2hpbGQsIGV2ZW4gaWYgb2xkIGNoaWxkIGRvZXMg
bm90IGhhdmUgcGFyZW50LgorICAgICAgICBUaGUgYWJzZW5jZSBvZiBwYXJlbnQgbWVhbnMgdGhh
dCBvbGQgY2hpbGQgd2FzIHJlbW92ZWQgZnJvbSBkb2N1bWVudCBhbmQgaXQgaXMgcG9zc2libGUg
dGhhdCBtdXRhdGlvbgorICAgICAgICBldmVudCBoYW5kbGVyIGhhcyBhbHJlYWR5IGFkZGVkIGEg
bmV3IGNoaWxkIHRvIGRvY3VtZW50LiBUaGlzIGlzIG5vcm1hbCBzaXR1YXRpb24sIGJ1dCBpdCBt
ZWFucyB0aGF0CisgICAgICAgIGNhbkFjY2VwdENoaWxkKCkgY2FuIG5vdCBzaG9ydCBjaXJjdWl0
IG9ubHkgb24gY29tcGFyaW5nIHRoZSB0eXBlcyBvZiBvbGQgYW5kIG5ldyBjaGlsZCwgYW5kIGhh
cyB0bworICAgICAgICBydW4gYWxsIGNoZWNrcyBsaXN0ZWQgaW4gaHR0cHM6Ly9kb20uc3BlYy53
aGF0d2cub3JnLyNjb25jZXB0LW5vZGUtcmVwbGFjZQorICAgICAgIAorICAgICAgICBUZXN0OiBm
YXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2Vt
ZW50Lmh0bWwKKworICAgICAgICAqIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2FuQWNjZXB0Q2hpbGQpOgorCiAyMDIwLTAzLTE5
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3Ry
ZWFtIGEgdmFyaWV0eSBvZiBDb2NvYS1wbGF0Zm9ybSBIQVZFIGFuZCBFTkFCTEUgbWFjcm9zCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDI1ODcwNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NzMsNyArMzg3Myw3
IEBAIGJvb2wgRG9jdW1lbnQ6OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUKIAogYm9vbCBEb2N1
bWVudDo6Y2FuQWNjZXB0Q2hpbGQoY29uc3QgTm9kZSYgbmV3Q2hpbGQsIGNvbnN0IE5vZGUqIHJl
ZkNoaWxkLCBBY2NlcHRDaGlsZE9wZXJhdGlvbiBvcGVyYXRpb24pIGNvbnN0CiB7Ci0gICAgaWYg
KG9wZXJhdGlvbiA9PSBBY2NlcHRDaGlsZE9wZXJhdGlvbjo6UmVwbGFjZSAmJiByZWZDaGlsZC0+
bm9kZVR5cGUoKSA9PSBuZXdDaGlsZC5ub2RlVHlwZSgpKQorICAgIGlmIChvcGVyYXRpb24gPT0g
QWNjZXB0Q2hpbGRPcGVyYXRpb246OlJlcGxhY2UgJiYgcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSAm
JiByZWZDaGlsZC0+bm9kZVR5cGUoKSA9PSBuZXdDaGlsZC5ub2RlVHlwZSgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIHN3aXRjaCAobmV3Q2hpbGQubm9kZVR5cGUoKSkgewpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjU4NzA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjAtMDMtMTkgIEV1Z2VuZSBCdXQgIDxldWdlbmVidXRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFRlc3QgZm9yIFJlbmRlckJveDo6c3R5bGVEaWRDaGFu
Z2UgY3Jhc2ggZml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDgzMTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKQorCisgICAg
ICAgIFRoaXMgdGVzdCBhZGRzIHN2ZyBjaGlsZCB0byBhIGRvY3VtZW50IGZyb20gbXV0YXRpb24g
ZXZlbnQgb2JzZXJ2ZXIgd2hpbGUgZXhpc3RpbmcgZG9jdW1lbnQgY2hpbGQgaXMgYmVpbmcgcmVw
bGFjZWQuCisgICAgICAgIEFmdGVyIGFkZGluZyBzdmcgY2hpbGQsIHRoZSBkb2N1bWVudCBzaG91
bGQgcmVqZWN0IHRoZSByZXBsYWNlbWVudCBvZiBleGlzdGluZyBjaGlsZCwgcGVyIHNwZWM6Cisg
ICAgICAgIAorICAgICAgICBJZiBwYXJlbnQgaXMgYSBkb2N1bWVudCwgYW5kIGFueSBvZiB0aGUg
c3RhdGVtZW50cyBiZWxvdywgc3dpdGNoZWQgb24gbm9kZSwKKyAgICAgICAgYXJlIHRydWUsIHRo
ZW4gdGhyb3cgYSAiSGllcmFyY2h5UmVxdWVzdEVycm9yIiBET01FeGNlcHRpb246CisgICAgICAg
ICAgICAuLi4uLi4uCisgICAgICAgICAgICBlbGVtZW50CisgICAgICAgICAgICAgICAgcGFyZW50
IGhhcyBhbiBlbGVtZW50IGNoaWxkIHRoYXQgaXMgbm90IGNoaWxkIG9yIGEgZG9jdHlwZSBpcyBm
b2xsb3dpbmcgY2hpbGQuCisgICAgICAgICAgICAuLi4uLi4KKyAgICAgICAgaHR0cHM6Ly9kb20u
c3BlYy53aGF0d2cub3JnLyNjb25jZXB0LW5vZGUtcmVwbGFjZQorCisgICAgICAgICogYWRkLWRv
Y3VtZW50LWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sOgorCiAy
MDIwLTAzLTE5ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgaU9TIHdrMiBhbmQgTWFjIHdrMiBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvZmV0Y2gvc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZS9mcmFtZS1yZW1vdmFsLmh0bWwgaXMgZmxh
a3kgZmFpbGluZy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGls
ZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9j
dW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hp
bGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9w
ZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5
aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhp
ZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJl
Y3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RF
cnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJh
dGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorUEFTUyBkb2N1bWVudC5y
ZXBsYWNlQ2hpbGQoZG9jdW1lbnQuYm9keSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB0aHJl
dyBleGNlcHRpb24gSGllcmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlp
ZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYWRkLWRvY3VtZW50LWNoaWxk
LWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1lbnQt
Y2hpbGQtcmVwbGFjZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8
Ym9keSBkaXI9InJ0bCI+PC9ib2R5Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQ+DQorICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0SGVpZ2h0Ow0KKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9k
aWZpZWQiLCBmdW5jdGlvbigpIHsNCisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxl
Y3RBbGwiKTsNCisgICAgICAgIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgImRlc2MiKTsNCisgICAgICAgIGRvY3VtZW50LmFw
cGVuZENoaWxkKHN2Zyk7DQorICAgIH0pOw0KKw0KKyAgICBzaG91bGRUaHJvd0Vycm9yTmFtZSgi
ZG9jdW1lbnQucmVwbGFjZUNoaWxkKGRvY3VtZW50LmJvZHksIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCkiLCAiSGllcmFyY2h5UmVxdWVzdEVycm9yIik7DQorPC9zY3JpcHQ+DQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394669</attachid>
            <date>2020-03-26 16:13:04 -0700</date>
            <delta_ts>2020-03-26 17:39:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200326161304.patch</filename>
            <type>text/plain</type>
            <size>8820</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UgY3Jh
c2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVsZW1lbnQgZWxlbWVudC4KKyAg
ICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51bGwgZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisgICAgICAgIGlmICguLi4uIHx8
ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0V3JpdGlu
Z01vZGUoKSkpIHsKKworICAgICAgICBUaGF0IEhUTUxCb2R5RWxlbWVudCB3YXMgYWRkZWQgYXMg
dGhlIHNlY29uZCBjaGlsZCBvZiBkb2N1bWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQgcGVyIHNw
ZWM6IAorICAgICAgICAKKyAgICAgICAgSWYgcGFyZW50IGlzIGEgZG9jdW1lbnQsIGFuZCBhbnkg
b2YgdGhlIHN0YXRlbWVudHMgYmVsb3csIHN3aXRjaGVkIG9uIG5vZGUsCisgICAgICAgIGFyZSB0
cnVlLCB0aGVuIHRocm93IGEgIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIgRE9NRXhjZXB0aW9uOgor
ICAgICAgICAgICAgLi4uLi4uLgorICAgICAgICAgICAgZWxlbWVudAorICAgICAgICAgICAgICAg
IHBhcmVudCBoYXMgYW4gZWxlbWVudCBjaGlsZCB0aGF0IGlzIG5vdCBjaGlsZCBvciBhIGRvY3R5
cGUgaXMgZm9sbG93aW5nIGNoaWxkLgorICAgICAgICAgICAgLi4uLi4uCisgICAgICAgIGh0dHBz
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ub2RlLXJlcGxhY2UKKworICAgICAgICBU
aGlzIHBhdGNoIHByZXZlbnRzIGFkZGluZyBIVE1MQm9keUVsZW1lbnQgYXMgdGhlIHNlY29uZCBj
aGlsZCBieSBydW5uaW5nIG1vcmUgc3RyaWN0IGNoZWNrcworICAgICAgICBpbnNpZGUgV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNhbkFjY2VwdENoaWxkKCkuIFByZXZpb3VzbHkgY2FuQWNjZXB0Q2hpbGQo
KSB3b3VsZCBhbGxvdyBhbGwKKyAgICAgICAgUmVwbGFjZSBvcGVyYXRpb25zIGlmIG5ldyBjaGls
ZCBoYWQgdGhlIHNhbWUgdHlwZSBhcyBvbGQgY2hpbGQsIGV2ZW4gaWYgb2xkIGNoaWxkIGRvZXMg
bm90IGhhdmUgcGFyZW50LgorICAgICAgICBUaGUgYWJzZW5jZSBvZiBwYXJlbnQgKG9yIHBhcmVu
dCB0aGF0IGlzIG5vdCAidGhpcyBkb2N1bWVudCIpIG1lYW5zIHRoYXQgb2xkIGNoaWxkIHdhcyBy
ZW1vdmVkIGZyb20KKyAgICAgICAgZG9jdW1lbnQgYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQgbXV0
YXRpb24gZXZlbnQgaGFuZGxlciBoYXMgYWxyZWFkeSBhZGRlZCBhIG5ldyBjaGlsZCB0byBkb2N1
bWVudC4KKyAgICAgICAgVGhpcyBpcyBub3JtYWwgc2l0dWF0aW9uLCBidXQgaXQgbWVhbnMgdGhh
dCBjYW5BY2NlcHRDaGlsZCgpIGNhbiBub3Qgc2hvcnQgY2lyY3VpdCBvbmx5IG9uIGNvbXBhcmlu
ZworICAgICAgICB0aGUgdHlwZXMgb2Ygb2xkIGFuZCBuZXcgY2hpbGQsIGFuZCBoYXMgdG8gcnVu
IGFsbCBjaGVja3MgbGlzdGVkIGluIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2Vw
dC1ub2RlLXJlcGxhY2UKKyAgICAgICAKKyAgICAgICAgVGVzdDogZmFzdC9kb20vYWRkLWRvY3Vt
ZW50LWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sCisgICAgICAg
IFRlc3Q6IGZhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1hbmQtcmVwYXJlbnQtb2xkLWNoaWxk
LWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sCisKKyAgICAgICAgKiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OmNhbkFjY2VwdENoaWxkKToKKwogMjAyMC0wMy0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVcHN0cmVhbSBhIHZhcmlldHkgb2YgQ29jb2EtcGxh
dGZvcm0gSEFWRSBhbmQgRU5BQkxFIG1hY3JvcwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAyNTg3MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODczLDcgKzM4NzMsNyBAQCBib29sIERvY3VtZW50OjpjaGlsZFR5
cGVBbGxvd2VkKE5vZGVUeXBlCiAKIGJvb2wgRG9jdW1lbnQ6OmNhbkFjY2VwdENoaWxkKGNvbnN0
IE5vZGUmIG5ld0NoaWxkLCBjb25zdCBOb2RlKiByZWZDaGlsZCwgQWNjZXB0Q2hpbGRPcGVyYXRp
b24gb3BlcmF0aW9uKSBjb25zdAogewotICAgIGlmIChvcGVyYXRpb24gPT0gQWNjZXB0Q2hpbGRP
cGVyYXRpb246OlJlcGxhY2UgJiYgcmVmQ2hpbGQtPm5vZGVUeXBlKCkgPT0gbmV3Q2hpbGQubm9k
ZVR5cGUoKSkKKyAgICBpZiAob3BlcmF0aW9uID09IEFjY2VwdENoaWxkT3BlcmF0aW9uOjpSZXBs
YWNlICYmIHJlZkNoaWxkLT5wYXJlbnROb2RlKCkgPT0gdGhpcyAmJiByZWZDaGlsZC0+bm9kZVR5
cGUoKSA9PSBuZXdDaGlsZC5ub2RlVHlwZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IHN3aXRjaCAobmV3Q2hpbGQubm9kZVR5cGUoKSkgewpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU4NzA2
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMjAtMDMtMTkgIEV1Z2VuZSBCdXQgIDxldWdlbmVidXRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFRlc3QgZm9yIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UgY3Jhc2ggZml4CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgzMTEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKQorCisgICAgICAgIGFkZC1kb2N1bWVudC1j
aGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQuaHRtbCB0ZXN0IGFkZHMgc3Zn
IGNoaWxkIHRvIGEgZG9jdW1lbnQKKyAgICAgICAgZnJvbSBtdXRhdGlvbiBldmVudCBvYnNlcnZl
ciB3aGlsZSBleGlzdGluZyBkb2N1bWVudCBjaGlsZCBpcyBiZWluZyByZXBsYWNlZC4KKyAgICAg
ICAgQWZ0ZXIgYWRkaW5nIHN2ZyBjaGlsZCwgdGhlIGRvY3VtZW50IHNob3VsZCByZWplY3QgdGhl
IHJlcGxhY2VtZW50IG9mIGV4aXN0aW5nIGNoaWxkLCBwZXIgc3BlYzoKKyAgICAgICAgCisgICAg
ICAgIElmIHBhcmVudCBpcyBhIGRvY3VtZW50LCBhbmQgYW55IG9mIHRoZSBzdGF0ZW1lbnRzIGJl
bG93LCBzd2l0Y2hlZCBvbiBub2RlLAorICAgICAgICBhcmUgdHJ1ZSwgdGhlbiB0aHJvdyBhICJI
aWVyYXJjaHlSZXF1ZXN0RXJyb3IiIERPTUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIC4uLi4uLi4K
KyAgICAgICAgICAgIGVsZW1lbnQKKyAgICAgICAgICAgICAgICBwYXJlbnQgaGFzIGFuIGVsZW1l
bnQgY2hpbGQgdGhhdCBpcyBub3QgY2hpbGQgb3IgYSBkb2N0eXBlIGlzIGZvbGxvd2luZyBjaGls
ZC4KKyAgICAgICAgICAgIC4uLi4uLgorICAgICAgICBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2NvbmNlcHQtbm9kZS1yZXBsYWNlCisKKyAgICAgICAgYWRkLWRvY3VtZW50LWNoaWxkLWFu
ZC1yZXBhcmVudC1vbGQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50Lmh0
bWwgcmVwYXJlbnRzIHRoZSBvbGQgY2hpbGQKKyAgICAgICAgdG8gY3JlYXRlIHNsaWdodGx5IGRp
ZmZlcmVudCBzdGF0ZSB3aGVyZSBvbGQgY2hpbGQgc3RpbGwgaGFzIGEgcGFyZW50IGJ1dCB0aGF0
IHBhcmVudCBpcyBub3QgZG9jdW1lbnQuCisgCisgICAgICAgICogYWRkLWRvY3VtZW50LWNoaWxk
LWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sOgorICAgICAgICAqIGFkZC1k
b2N1bWVudC1jaGlsZC1hbmQtcmVwYXJlbnQtb2xkLWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGls
ZC1yZXBsYWNlbWVudC5odG1sOgorCiAyMDIwLTAzLTE5ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3Jl
bmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBhbmQgTWFjIHdrMiBdIGltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZS9m
cmFtZS1yZW1vdmFsLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1hbmQtcmVwYXJlbnQtb2xkLWNoaWxkLWR1cmluZy1k
b2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vYWRkLWRvY3VtZW50LWNoaWxkLWFuZC1yZXBhcmVudC1vbGQtY2hp
bGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtYW5kLXJl
cGFyZW50LW9sZC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDk6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBh
biBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IEhpZXJhcmNo
eVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9k
ZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjog
VGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDk6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3
b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDk6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBp
bmNvcnJlY3Qgbm9kZSB0cmVlLgorUEFTUyBkb2N1bWVudC5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQu
Ym9keSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB0aHJldyBleGNlcHRpb24gSGllcmFyY2h5
UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlpZWxkIGFuIGluY29ycmVjdCBub2Rl
IHRyZWUuLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQt
YW5kLXJlcGFyZW50LW9sZC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hp
bGQtYW5kLXJlcGFyZW50LW9sZC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1l
bnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1l
bnQtY2hpbGQtYW5kLXJlcGFyZW50LW9sZC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVw
bGFjZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACis8Ym9keSBkaXI9
InJ0bCI+PC9ib2R5Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQ+DQorICAgIGxldCBkb2N1bWVudERvY3VtZW50RWxlbWVu
dCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsNCisgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRI
ZWlnaHQ7DQorICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTVN1YnRyZWVNb2RpZmll
ZCIsIGZ1bmN0aW9uKCkgew0KKyAgICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFs
bCIpOw0KKyAgICAgICAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAiZGVzYyIpOw0KKyAgICAgICAgZG9jdW1lbnQuYXBwZW5k
Q2hpbGQoc3ZnKTsNCisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLmFwcGVu
ZENoaWxkKGRvY3VtZW50RG9jdW1lbnRFbGVtZW50KTsNCisgICAgfSk7DQorDQorICAgIHNob3Vs
ZFRocm93RXJyb3JOYW1lKCJkb2N1bWVudC5yZXBsYWNlQ2hpbGQoZG9jdW1lbnQuYm9keSwgZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50KSIsICJIaWVyYXJjaHlSZXF1ZXN0RXJyb3IiKTsNCis8L3Nj
cmlwdD4NCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVy
aW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50
LWNoaWxkLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJl
cGxhY2VtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKK0NP
TlNPTEUgTUVTU0FHRTogbGluZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRp
b24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4KK0NPTlNPTEUgTUVTU0FHRTog
bGluZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQg
YW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4OiBIaWVyYXJj
aHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5v
ZGUgdHJlZS4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6
IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4KK0NPTlNP
TEUgTUVTU0FHRTogbGluZSA4OiBIaWVyYXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24g
d291bGQgeWllbGQgYW4gaW5jb3JyZWN0IG5vZGUgdHJlZS4KK1BBU1MgZG9jdW1lbnQucmVwbGFj
ZUNoaWxkKGRvY3VtZW50LmJvZHksIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkgdGhyZXcgZXhj
ZXB0aW9uIEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBh
biBpbmNvcnJlY3Qgbm9kZSB0cmVlLi4KKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vYWRk
LWRvY3VtZW50LWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJp
bmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxk
LXJlcGxhY2VtZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPGJvZHkg
ZGlyPSJydGwiPjwvYm9keT4NCis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4NCis8c2NyaXB0Pg0KKyAgICBkb2N1bWVudC5ib2R5Lm9mZnNldEhl
aWdodDsNCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVk
IiwgZnVuY3Rpb24oKSB7DQorICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxs
Iik7DQorICAgICAgICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIsICJkZXNjIik7DQorICAgICAgICBkb2N1bWVudC5hcHBlbmRD
aGlsZChzdmcpOw0KKyAgICB9KTsNCisNCisgICAgc2hvdWxkVGhyb3dFcnJvck5hbWUoImRvY3Vt
ZW50LnJlcGxhY2VDaGlsZChkb2N1bWVudC5ib2R5LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQp
IiwgIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIpOw0KKzwvc2NyaXB0Pg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394682</attachid>
            <date>2020-03-26 17:39:08 -0700</date>
            <delta_ts>2020-03-27 21:00:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208311-20200326173907.patch</filename>
            <type>text/plain</type>
            <size>8825</size>
            <attacher name="Eugene But">eugenebut</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1ODc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTE5ICBFdWdlbmUg
QnV0ICA8ZXVnZW5lYnV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBGaXggbnVsbCBwb2ludGVy
IGNyYXNoIGluIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbmRlckJveDo6c3R5bGVEaWRDaGFuZ2UgY3Jh
c2hlcyB3aGVuIGNoYW5naW5nIHN0eWxlIGZvciBIVE1MQm9keUVsZW1lbnQgZWxlbWVudC4KKyAg
ICAgICAgQ3Jhc2ggaGFwcGVucyBvbiBkZXJlZmVyZW5jaW5nIG51bGwgZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKS0+cmVuZGVyZXIoKSBwb2ludGVyOgorCisgICAgICAgIGlmICguLi4uIHx8
ICFkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+c3R5bGUoKS5oYXNFeHBsaWNpdGx5U2V0V3JpdGlu
Z01vZGUoKSkpIHsKKworICAgICAgICBUaGF0IEhUTUxCb2R5RWxlbWVudCB3YXMgYWRkZWQgYXMg
dGhlIHNlY29uZCBjaGlsZCBvZiBkb2N1bWVudCwgd2hpY2ggaXMgbm90IGFsbG93ZWQgcGVyIHNw
ZWM6IAorICAgICAgICAKKyAgICAgICAgSWYgcGFyZW50IGlzIGEgZG9jdW1lbnQsIGFuZCBhbnkg
b2YgdGhlIHN0YXRlbWVudHMgYmVsb3csIHN3aXRjaGVkIG9uIG5vZGUsCisgICAgICAgIGFyZSB0
cnVlLCB0aGVuIHRocm93IGEgIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIgRE9NRXhjZXB0aW9uOgor
ICAgICAgICAgICAgLi4uLi4uLgorICAgICAgICAgICAgZWxlbWVudAorICAgICAgICAgICAgICAg
IHBhcmVudCBoYXMgYW4gZWxlbWVudCBjaGlsZCB0aGF0IGlzIG5vdCBjaGlsZCBvciBhIGRvY3R5
cGUgaXMgZm9sbG93aW5nIGNoaWxkLgorICAgICAgICAgICAgLi4uLi4uCisgICAgICAgIGh0dHBz
Oi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2VwdC1ub2RlLXJlcGxhY2UKKworICAgICAgICBU
aGlzIHBhdGNoIHByZXZlbnRzIGFkZGluZyBIVE1MQm9keUVsZW1lbnQgYXMgdGhlIHNlY29uZCBj
aGlsZCBieSBydW5uaW5nIG1vcmUgc3RyaWN0IGNoZWNrcworICAgICAgICBpbnNpZGUgV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNhbkFjY2VwdENoaWxkKCkuIFByZXZpb3VzbHkgY2FuQWNjZXB0Q2hpbGQo
KSB3b3VsZCBhbGxvdyBhbGwKKyAgICAgICAgUmVwbGFjZSBvcGVyYXRpb25zIGlmIG5ldyBjaGls
ZCBoYWQgdGhlIHNhbWUgdHlwZSBhcyBvbGQgY2hpbGQsIGV2ZW4gaWYgb2xkIGNoaWxkIGhhcyBj
aGFuZ2VkIHRoZSBwYXJlbnQuCisKKyAgICAgICAgSWYgb2xkIGNoaWxkIGhhcyBjaGFuZ2VkIHRo
ZSBwYXJlbnQgKHBhcmVudCBpcyBub3QgZG9jdW1lbnQpLCBpdCBtZWFucyB0aGF0IGNoaWxkIHdh
cyByZW1vdmVkIGZyb20gZG9jdW1lbnQKKyAgICAgICAgYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQg
bXV0YXRpb24gZXZlbnQgaGFuZGxlciBoYXMgYWxyZWFkeSBhZGRlZCBhIG5ldyBjaGlsZCB0byBk
b2N1bWVudC4gVGhpcyBpcyBub3JtYWwKKyAgICAgICAgc2l0dWF0aW9uLCBidXQgaXQgbWVhbnMg
dGhhdCBjYW5BY2NlcHRDaGlsZCgpIGNhbiBub3Qgc2hvcnQgY2lyY3VpdCBvbmx5IG9uIGNvbXBh
cmluZyB0aGUgdHlwZXMgb2Ygb2xkIGFuZAorICAgICAgICBuZXcgY2hpbGQsIGFuZCBoYXMgdG8g
cnVuIGFsbCBjaGVja3MgbGlzdGVkIGluIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29u
Y2VwdC1ub2RlLXJlcGxhY2UKKyAgICAgICAKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL2FkZC1k
b2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vYWRkLWRvY3VtZW50LWNoaWxkLWFuZC1yZXBhcmVudC1vbGQt
Y2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50Lmh0bWwKKworICAgICAgICAq
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6Y2FuQWNjZXB0Q2hpbGQpOgorCiAyMDIwLTAzLTE5ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVwc3RyZWFtIGEgdmFyaWV0eSBvZiBDb2Nv
YS1wbGF0Zm9ybSBIQVZFIGFuZCBFTkFCTEUgbWFjcm9zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHJldmlzaW9uIDI1ODcwNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NzMsNyArMzg3Myw3IEBAIGJvb2wgRG9jdW1lbnQ6OmNo
aWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUKIAogYm9vbCBEb2N1bWVudDo6Y2FuQWNjZXB0Q2hpbGQo
Y29uc3QgTm9kZSYgbmV3Q2hpbGQsIGNvbnN0IE5vZGUqIHJlZkNoaWxkLCBBY2NlcHRDaGlsZE9w
ZXJhdGlvbiBvcGVyYXRpb24pIGNvbnN0CiB7Ci0gICAgaWYgKG9wZXJhdGlvbiA9PSBBY2NlcHRD
aGlsZE9wZXJhdGlvbjo6UmVwbGFjZSAmJiByZWZDaGlsZC0+bm9kZVR5cGUoKSA9PSBuZXdDaGls
ZC5ub2RlVHlwZSgpKQorICAgIGlmIChvcGVyYXRpb24gPT0gQWNjZXB0Q2hpbGRPcGVyYXRpb246
OlJlcGxhY2UgJiYgcmVmQ2hpbGQtPnBhcmVudE5vZGUoKSA9PSB0aGlzICYmIHJlZkNoaWxkLT5u
b2RlVHlwZSgpID09IG5ld0NoaWxkLm5vZGVUeXBlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgc3dpdGNoIChuZXdDaGlsZC5ub2RlVHlwZSgpKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NTg3MDYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyOCBAQAorMjAyMC0wMy0xOSAgRXVnZW5lIEJ1dCAgPGV1Z2VuZWJ1dEBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgVGVzdCBmb3IgUmVuZGVyQm94OjpzdHlsZURpZENoYW5nZSBjcmFzaCBmaXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODMxMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAgYWRkLWRvY3Vt
ZW50LWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sIHRlc3QgYWRk
cyBzdmcgY2hpbGQgdG8gYSBkb2N1bWVudAorICAgICAgICBmcm9tIG11dGF0aW9uIGV2ZW50IG9i
c2VydmVyIHdoaWxlIGV4aXN0aW5nIGRvY3VtZW50IGNoaWxkIGlzIGJlaW5nIHJlcGxhY2VkLgor
ICAgICAgICBBZnRlciBhZGRpbmcgc3ZnIGNoaWxkLCB0aGUgZG9jdW1lbnQgc2hvdWxkIHJlamVj
dCB0aGUgcmVwbGFjZW1lbnQgb2YgZXhpc3RpbmcgY2hpbGQsIHBlciBzcGVjOgorICAgICAgICAK
KyAgICAgICAgSWYgcGFyZW50IGlzIGEgZG9jdW1lbnQsIGFuZCBhbnkgb2YgdGhlIHN0YXRlbWVu
dHMgYmVsb3csIHN3aXRjaGVkIG9uIG5vZGUsCisgICAgICAgIGFyZSB0cnVlLCB0aGVuIHRocm93
IGEgIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIgRE9NRXhjZXB0aW9uOgorICAgICAgICAgICAgLi4u
Li4uLgorICAgICAgICAgICAgZWxlbWVudAorICAgICAgICAgICAgICAgIHBhcmVudCBoYXMgYW4g
ZWxlbWVudCBjaGlsZCB0aGF0IGlzIG5vdCBjaGlsZCBvciBhIGRvY3R5cGUgaXMgZm9sbG93aW5n
IGNoaWxkLgorICAgICAgICAgICAgLi4uLi4uCisgICAgICAgIGh0dHBzOi8vZG9tLnNwZWMud2hh
dHdnLm9yZy8jY29uY2VwdC1ub2RlLXJlcGxhY2UKKworICAgICAgICBhZGQtZG9jdW1lbnQtY2hp
bGQtYW5kLXJlcGFyZW50LW9sZC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1l
bnQuaHRtbCByZXBhcmVudHMgdGhlIG9sZCBjaGlsZAorICAgICAgICB0byBjcmVhdGUgc2xpZ2h0
bHkgZGlmZmVyZW50IHN0YXRlIHdoZXJlIG9sZCBjaGlsZCBzdGlsbCBoYXMgYSBwYXJlbnQgYnV0
IHRoYXQgcGFyZW50IGlzIG5vdCBkb2N1bWVudC4KKyAKKyAgICAgICAgKiBhZGQtZG9jdW1lbnQt
Y2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50Lmh0bWw6CisgICAgICAgICog
YWRkLWRvY3VtZW50LWNoaWxkLWFuZC1yZXBhcmVudC1vbGQtY2hpbGQtZHVyaW5nLWRvY3VtZW50
LWNoaWxkLXJlcGxhY2VtZW50Lmh0bWw6CisKIDIwMjAtMDMtMTkgIEphc29uIExhd3JlbmNlICA8
bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1Mgd2syIGFuZCBNYWMgd2syIF0g
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9mZXRjaC9zdGFsZS13aGlsZS1yZXZhbGlk
YXRlL2ZyYW1lLXJlbW92YWwuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vYWRkLWRvY3VtZW50LWNoaWxkLWFuZC1yZXBhcmVudC1vbGQtY2hpbGQtZHVy
aW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9hZGQtZG9jdW1lbnQtY2hpbGQtYW5kLXJlcGFyZW50LW9s
ZC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1h
bmQtcmVwYXJlbnQtb2xkLWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3IEBACitDT05TT0xFIE1FU1NB
R0U6IGxpbmUgOTogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlp
ZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgOTogSGll
cmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlpZWxkIGFuIGluY29ycmVj
dCBub2RlIHRyZWUuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgOTogSGllcmFyY2h5UmVxdWVzdEVy
cm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlpZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuCitD
T05TT0xFIE1FU1NBR0U6IGxpbmUgOTogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0
aW9uIHdvdWxkIHlpZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuCitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgOTogSGllcmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlpZWxk
IGFuIGluY29ycmVjdCBub2RlIHRyZWUuCitQQVNTIGRvY3VtZW50LnJlcGxhY2VDaGlsZChkb2N1
bWVudC5ib2R5LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIHRocmV3IGV4Y2VwdGlvbiBIaWVy
YXJjaHlSZXF1ZXN0RXJyb3I6IFRoZSBvcGVyYXRpb24gd291bGQgeWllbGQgYW4gaW5jb3JyZWN0
IG5vZGUgdHJlZS4uCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1j
aGlsZC1hbmQtcmVwYXJlbnQtb2xkLWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNl
bWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVu
dC1jaGlsZC1hbmQtcmVwYXJlbnQtb2xkLWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBs
YWNlbWVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1k
b2N1bWVudC1jaGlsZC1hbmQtcmVwYXJlbnQtb2xkLWNoaWxkLWR1cmluZy1kb2N1bWVudC1jaGls
ZC1yZXBsYWNlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQgQEAKKzxib2R5
IGRpcj0icnRsIj48L2JvZHk+DQorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdD4NCisgICAgbGV0IGRvY3VtZW50RG9jdW1lbnRF
bGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Ow0KKyAgICBkb2N1bWVudC5ib2R5Lm9m
ZnNldEhlaWdodDsNCisgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1v
ZGlmaWVkIiwgZnVuY3Rpb24oKSB7DQorICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2Vs
ZWN0QWxsIik7DQorICAgICAgICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJo
dHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJkZXNjIik7DQorICAgICAgICBkb2N1bWVudC5h
cHBlbmRDaGlsZChzdmcpOw0KKyAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyku
YXBwZW5kQ2hpbGQoZG9jdW1lbnREb2N1bWVudEVsZW1lbnQpOw0KKyAgICB9KTsNCisNCisgICAg
c2hvdWxkVGhyb3dFcnJvck5hbWUoImRvY3VtZW50LnJlcGxhY2VDaGlsZChkb2N1bWVudC5ib2R5
LCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpIiwgIkhpZXJhcmNoeVJlcXVlc3RFcnJvciIpOw0K
Kzwvc2NyaXB0Pg0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGls
ZC1kdXJpbmctZG9jdW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9j
dW1lbnQtY2hpbGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1lbnQtY2hp
bGQtcmVwbGFjZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNyBA
QAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9w
ZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNT
QUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5
aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhp
ZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJl
Y3Qgbm9kZSB0cmVlLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RF
cnJvcjogVGhlIG9wZXJhdGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgor
Q09OU09MRSBNRVNTQUdFOiBsaW5lIDg6IEhpZXJhcmNoeVJlcXVlc3RFcnJvcjogVGhlIG9wZXJh
dGlvbiB3b3VsZCB5aWVsZCBhbiBpbmNvcnJlY3Qgbm9kZSB0cmVlLgorUEFTUyBkb2N1bWVudC5y
ZXBsYWNlQ2hpbGQoZG9jdW1lbnQuYm9keSwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB0aHJl
dyBleGNlcHRpb24gSGllcmFyY2h5UmVxdWVzdEVycm9yOiBUaGUgb3BlcmF0aW9uIHdvdWxkIHlp
ZWxkIGFuIGluY29ycmVjdCBub2RlIHRyZWUuLgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9hZGQtZG9jdW1lbnQtY2hpbGQtZHVyaW5nLWRvY3VtZW50LWNoaWxkLXJlcGxhY2VtZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vYWRkLWRvY3VtZW50LWNoaWxk
LWR1cmluZy1kb2N1bWVudC1jaGlsZC1yZXBsYWNlbWVudC5odG1sCShub25leGlzdGVudCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2FkZC1kb2N1bWVudC1jaGlsZC1kdXJpbmctZG9jdW1lbnQt
Y2hpbGQtcmVwbGFjZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8
Ym9keSBkaXI9InJ0bCI+PC9ib2R5Pg0KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQ+DQorICAgIGRvY3VtZW50LmJvZHkub2Zm
c2V0SGVpZ2h0Ow0KKyAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9k
aWZpZWQiLCBmdW5jdGlvbigpIHsNCisgICAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxl
Y3RBbGwiKTsNCisgICAgICAgIGxldCBzdmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgImRlc2MiKTsNCisgICAgICAgIGRvY3VtZW50LmFw
cGVuZENoaWxkKHN2Zyk7DQorICAgIH0pOw0KKw0KKyAgICBzaG91bGRUaHJvd0Vycm9yTmFtZSgi
ZG9jdW1lbnQucmVwbGFjZUNoaWxkKGRvY3VtZW50LmJvZHksIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCkiLCAiSGllcmFyY2h5UmVxdWVzdEVycm9yIik7DQorPC9zY3JpcHQ+DQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>