<?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>151030</bug_id>
          
          <creation_ts>2015-11-09 09:03:59 -0800</creation_ts>
          <short_desc>ASSERTION FAILED: roundedIntPoint(LayoutPoint(rendererMappedResult)) == result in WebCore::RenderGeometryMap::mapToContainer</short_desc>
          <delta_ts>2020-02-19 22:41:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=153576</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=155646</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=101609</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=88128</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Renata Hodovan">rhodovan.u-szeged</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>shihchieh_lee</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1140380</commentid>
    <comment_count>0</comment_count>
      <attachid>265056</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2015-11-09 09:03:59 -0800</bug_when>
    <thetext>Created attachment 265056
Test

Load the attached test with debug MiniBrowser:

parent.appendChild(child)} catch (err) {}parent = document.getElementById(&apos;id_0&apos;)parent.removeChild(parent.childNodes[
&lt;style&gt;
* {
    overflow-y: auto;
    -webkit-margin-after : -4425511469ex;
}
&lt;/style&gt;
&lt;hgroup&gt;&lt;/hgroup&gt;
&lt;h1&gt;a
    &lt;map&gt;
        &lt;h3&gt;&lt;/h3&gt;
    &lt;/map&gt;
&lt;/h1&gt;


OS: Ubuntu 15.04 x86_64
Checked build: debug EFL
Checked version: 009fb33


Backtrace:

ASSERTION FAILED: roundedIntPoint(rendererMappedResult) == roundedIntPoint(result)
../../Source/WebCore/rendering/RenderGeometryMap.cpp(118) : WebCore::FloatPoint WebCore::RenderGeometryMap::mapToContainer(const WebCore::FloatPoint&amp;, const WebCore::RenderLayerModelObject*) const
1   0x7f98eb09df97 WTFCrash
2   0x7f98f1a72b1f WebCore::RenderGeometryMap::mapToContainer(WebCore::FloatPoint const&amp;, WebCore::RenderLayerModelObject const*) const
3   0x7f98f1ac59b6 WebCore::RenderGeometryMap::absolutePoint(WebCore::FloatPoint const&amp;) const
4   0x7f98f1aa4f52 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, unsigned int)
5   0x7f98f1aa5431 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, unsigned int)
6   0x7f98f1aa5431 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, unsigned int)
7   0x7f98f1aa5431 WebCore::RenderLayer::updateLayerPositions(WebCore::RenderGeometryMap*, unsigned int)
8   0x7f98f1aa4e2b WebCore::RenderLayer::updateLayerPositionsAfterLayout(WebCore::RenderLayer const*, unsigned int)
9   0x7f98f177336c WebCore::FrameView::layout(bool)
10  0x7f98f11d35b8 WebCore::Document::implicitClose()
11  0x7f98f1636b1b WebCore::FrameLoader::checkCallImplicitClose()
12  0x7f98f1636852 WebCore::FrameLoader::checkCompleted()
13  0x7f98f16365c2 WebCore::FrameLoader::finishedParsing()
14  0x7f98f11dd5e8 WebCore::Document::finishedParsing()
15  0x7f98f2544799 WebCore::HTMLConstructionSite::finishedParsing()
16  0x7f98f1530210 WebCore::HTMLTreeBuilder::finished()
17  0x7f98f15008b4 WebCore::HTMLDocumentParser::end()
18  0x7f98f150098d WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd()
19  0x7f98f14ff66f WebCore::HTMLDocumentParser::prepareToStopParsing()
20  0x7f98f15009d0 WebCore::HTMLDocumentParser::attemptToEnd()
21  0x7f98f1500a87 WebCore::HTMLDocumentParser::finish()
22  0x7f98f16219f6 WebCore::DocumentWriter::end()
23  0x7f98f160b2cc WebCore::DocumentLoader::finishedLoading(double)
24  0x7f98f160b02a WebCore::DocumentLoader::notifyFinished(WebCore::CachedResource*)
25  0x7f98f16b6437 WebCore::CachedResource::checkNotify()
26  0x7f98f16b6546 WebCore::CachedResource::finishLoading(WebCore::SharedBuffer*)
27  0x7f98f16b273a WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*)
28  0x7f98f167b168 WebCore::SubresourceLoader::didFinishLoading(double)
29  0x7f98f1675c47 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*, double)
30  0x7f98f1e67560
31  0x7f98e768d5b6
Aborted (core dumped)

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f98eb09df9c in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321
321     *(int *)(uintptr_t)0xbbadbeef = 0;
#0  0x00007f98eb09df9c in WTFCrash () at ../../Source/WTF/wtf/Assertions.cpp:321
#1  0x00007f98f1a72b1f in WebCore::RenderGeometryMap::mapToContainer (this=0x7fff98ccb400, p=..., container=0x0) at ../../Source/WebCore/rendering/RenderGeometryMap.cpp:118
#2  0x00007f98f1ac59b6 in WebCore::RenderGeometryMap::absolutePoint (this=0x7fff98ccb400, p=...) at ../../Source/WebCore/rendering/RenderGeometryMap.h:85
#3  0x00007f98f1aa4f52 in WebCore::RenderLayer::updateLayerPositions (this=0x7f98d26a45a0, geometryMap=0x7fff98ccb400, flags=10) at ../../Source/WebCore/rendering/RenderLayer.cpp:477
#4  0x00007f98f1aa5431 in WebCore::RenderLayer::updateLayerPositions (this=0x7f98d26feb40, geometryMap=0x7fff98ccb400, flags=10) at ../../Source/WebCore/rendering/RenderLayer.cpp:557
#5  0x00007f98f1aa5431 in WebCore::RenderLayer::updateLayerPositions (this=0x7f98d26fea20, geometryMap=0x7fff98ccb400, flags=10) at ../../Source/WebCore/rendering/RenderLayer.cpp:557
#6  0x00007f98f1aa5431 in WebCore::RenderLayer::updateLayerPositions (this=0x7f98d26fe5a0, geometryMap=0x7fff98ccb400, flags=10) at ../../Source/WebCore/rendering/RenderLayer.cpp:557
#7  0x00007f98f1aa4e2b in WebCore::RenderLayer::updateLayerPositionsAfterLayout (this=0x7f98d26fe5a0, rootLayer=0x7f98d26fe5a0, flags=14) at ../../Source/WebCore/rendering/RenderLayer.cpp:460
#8  0x00007f98f177336c in WebCore::FrameView::layout (this=0x7f98d2425540, allowSubtree=true) at ../../Source/WebCore/page/FrameView.cpp:1455
#9  0x00007f98f11d35b8 in WebCore::Document::implicitClose (this=0x7f98d2426a40) at ../../Source/WebCore/dom/Document.cpp:2704
#10 0x00007f98f1636b1b in WebCore::FrameLoader::checkCallImplicitClose (this=0x7f98d26e4098) at ../../Source/WebCore/loader/FrameLoader.cpp:889
#11 0x00007f98f1636852 in WebCore::FrameLoader::checkCompleted (this=0x7f98d26e4098) at ../../Source/WebCore/loader/FrameLoader.cpp:835
#12 0x00007f98f16365c2 in WebCore::FrameLoader::finishedParsing (this=0x7f98d26e4098) at ../../Source/WebCore/loader/FrameLoader.cpp:756
#13 0x00007f98f11dd5e8 in WebCore::Document::finishedParsing (this=0x7f98d2426a40) at ../../Source/WebCore/dom/Document.cpp:4897
#14 0x00007f98f2544799 in WebCore::HTMLConstructionSite::finishedParsing (this=0x7f98d26fe6e0) at ../../Source/WebCore/html/parser/HTMLConstructionSite.cpp:403
#15 0x00007f98f1530210 in WebCore::HTMLTreeBuilder::finished (this=0x7f98d26fe6c0) at ../../Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2937
#16 0x00007f98f15008b4 in WebCore::HTMLDocumentParser::end (this=0x7f98d242e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:393
#17 0x00007f98f150098d in WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd (this=0x7f98d242e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:402
#18 0x00007f98f14ff66f in WebCore::HTMLDocumentParser::prepareToStopParsing (this=0x7f98d242e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:132
#19 0x00007f98f15009d0 in WebCore::HTMLDocumentParser::attemptToEnd (this=0x7f98d242e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:414
#20 0x00007f98f1500a87 in WebCore::HTMLDocumentParser::finish (this=0x7f98d242e840) at ../../Source/WebCore/html/parser/HTMLDocumentParser.cpp:442
#21 0x00007f98f16219f6 in WebCore::DocumentWriter::end (this=0x7f98d24249e0) at ../../Source/WebCore/loader/DocumentWriter.cpp:247
#22 0x00007f98f160b2cc in WebCore::DocumentLoader::finishedLoading (this=0x7f98d2424940, finishTime=0) at ../../Source/WebCore/loader/DocumentLoader.cpp:437
#23 0x00007f98f160b02a in WebCore::DocumentLoader::notifyFinished (this=0x7f98d2424940, resource=0x7f98d2436000) at ../../Source/WebCore/loader/DocumentLoader.cpp:384
#24 0x00007f98f16b6437 in WebCore::CachedResource::checkNotify (this=0x7f98d2436000) at ../../Source/WebCore/loader/cache/CachedResource.cpp:297
#25 0x00007f98f16b6546 in WebCore::CachedResource::finishLoading (this=0x7f98d2436000) at ../../Source/WebCore/loader/cache/CachedResource.cpp:313
#26 0x00007f98f16b273a in WebCore::CachedRawResource::finishLoading (this=0x7f98d2436000, data=0x7f98d27bb680) at ../../Source/WebCore/loader/cache/CachedRawResource.cpp:103
#27 0x00007f98f167b168 in WebCore::SubresourceLoader::didFinishLoading (this=0x7f98d242fa80, finishTime=0) at ../../Source/WebCore/loader/SubresourceLoader.cpp:372
#28 0x00007f98f1675c47 in WebCore::ResourceLoader::didFinishLoading (this=0x7f98d242fa80, finishTime=0) at ../../Source/WebCore/loader/ResourceLoader.cpp:638
#29 0x00007f98f1e67560 in WebCore::readCallback (asyncResult=0x19021a0, data=0x7f98d27bd660) at ../../Source/WebCore/platform/network/soup/ResourceHandleSoup.cpp:1341
#30 0x00007f98e768d5b6 in async_ready_callback_wrapper (source_object=0x180d5b0, res=0x19021a0, user_data=0x7f98d27bd660) at ginputstream.c:523
#31 0x00007f98e76b3b84 in g_task_return_now (task=0x19021a0) at gtask.c:1077
#32 0x00007f98e76b3ba9 in complete_in_idle_cb (task=0x19021a0) at gtask.c:1086
#33 0x00007f98e70ebadd in g_main_dispatch (context=0x18078d0) at gmain.c:3064
#34 g_main_context_dispatch (context=context@entry=0x18078d0) at gmain.c:3663
#35 0x00007f98e8a57e58 in _ecore_glib_select__locked (ecore_timeout=&lt;optimized out&gt;, efds=0x7fff98ccc250, wfds=0x7fff98ccc1d0, rfds=0x7fff98ccc150, ecore_fds=&lt;optimized out&gt;, ctx=&lt;optimized out&gt;) at lib/ecore/ecore_glib.c:172
#36 _ecore_glib_select (ecore_fds=&lt;optimized out&gt;, rfds=0x7fff98ccc150, wfds=0x7fff98ccc1d0, efds=0x7fff98ccc250, ecore_timeout=&lt;optimized out&gt;) at lib/ecore/ecore_glib.c:204
#37 0x00007f98e8a5b4a4 in _ecore_main_select (timeout=9.532824124368238e-130) at lib/ecore/ecore_main.c:1459
#38 0x00007f98e8a5bed4 in _ecore_main_loop_iterate_internal (once_only=once_only@entry=0) at lib/ecore/ecore_main.c:1893
#39 0x00007f98e8a5bfc7 in ecore_main_loop_begin () at lib/ecore/ecore_main.c:983
#40 0x00007f98eb0f8e8d in WTF::RunLoop::run () at ../../Source/WTF/wtf/efl/RunLoopEfl.cpp:49
#41 0x00007f98f0f58e1b in WebKit::ChildProcessMain&lt;WebKit::WebProcess, WebKit::WebProcessMain&gt; (argc=2, argv=0x7fff98ccc688) at ../../Source/WebKit2/Shared/unix/ChildProcessMain.h:61
#42 0x00007f98f0f58a29 in WebKit::WebProcessMainUnix (argc=2, argv=0x7fff98ccc688) at ../../Source/WebKit2/WebProcess/efl/WebProcessMainEfl.cpp:161
#43 0x00000000004008ea in main (argc=2, argv=0x7fff98ccc688) at ../../Source/WebKit2/WebProcess/EntryPoint/unix/WebProcessMain.cpp:44</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176174</commentid>
    <comment_count>1</comment_count>
      <attachid>274415</attachid>
    <who name="Renata Hodovan">rhodovan.u-szeged</who>
    <bug_when>2016-03-18 08:47:18 -0700</bug_when>
    <thetext>Created attachment 274415
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176235</commentid>
    <comment_count>2</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-03-18 11:11:19 -0700</bug_when>
    <thetext>*** Bug 155580 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176928</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-03-21 21:44:55 -0700</bug_when>
    <thetext>The function saturatedAddition (Source/WTF/wtf/SaturatedArithmetic.h) overflows when opening this test case (attachment 265056).

Is there a good way to assert something in case of overflow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177929</commentid>
    <comment_count>4</comment_count>
      <attachid>274898</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2016-03-25 04:13:32 -0700</bug_when>
    <thetext>Created attachment 274898
another test case

I create a new test case by slightly changing the original test case.
In this test, two values are far different:

&gt; +		rendererMappedResult	{m_x=164.000000 m_y=9.00000000 }	WebCore::FloatPoint
&gt; +		result	{m_x=164.000000 m_y=-2.00000000 }	WebCore::FloatPoint

Tested with trunk@198375 AppleWin port, Debug build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217710</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-04 17:42:22 -0700</bug_when>
    <thetext>This reproduces in r204037.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217711</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-08-04 17:43:05 -0700</bug_when>
    <thetext>&lt;rdar://problem/27711142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217712</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-08-04 17:43:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/27711147&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620001</commentid>
    <comment_count>8</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-17 17:27:50 -0800</bug_when>
    <thetext>Root cause of descrepency when m_accumulatedOffset is saturated:
In pushMappingsToAncestor, the offset of each layer is accumulated and stored in m_accumulatedOffset, and clamped by saturated value: 0x7FFFFFFF. On the other hand, in popMappingsToAncestor, offset of each layer is substracted from m_accumulatedOffset. However, when m_accumulatedOffset is saturated the substraction does not set m_accumulatedOffset back to the original offset of each layer, resulting in the assertion.

Verified root cause by workaround: Keep a snapshot of m_accumulatedOffset at each call to pushMappingsToAncestor, and restore the offset from the snapshot when popMappingsToAncestor is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620006</commentid>
    <comment_count>9</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-17 17:37:17 -0800</bug_when>
    <thetext>workaround:

-void RenderGeometryMap::stepInserted(const RenderGeometryMapStep&amp; step)
+void RenderGeometryMap::stepInserted(RenderGeometryMapStep&amp; step)
 {
     // RenderView&apos;s offset, is only applied when we have fixed-positions.
-    if (!step.m_renderer-&gt;isRenderView())
+    if (!step.m_renderer-&gt;isRenderView()) {
+        step.m_accumulatedOffsetCache = m_accumulatedOffset;
         m_accumulatedOffset += step.m_offset;
+    }

 void RenderGeometryMap::stepRemoved(const RenderGeometryMapStep&amp; step)
 {
     // RenderView&apos;s offset, is only applied when we have fixed-positions.
     if (!step.m_renderer-&gt;isRenderView())
-        m_accumulatedOffset -= step.m_offset;
+        m_accumulatedOffset = step.m_accumulatedOffsetCache;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620009</commentid>
    <comment_count>10</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-17 17:52:30 -0800</bug_when>
    <thetext>However, this work around adds LayoutSize for each RenderGeometryMapStep. Another approach can be saving the reference of RenderGeometryMapStep that overflows m_accumulatedOffset, and later only subtract offset starting at the overflowing RenderGeometryMapStep. Or, if it rarely happens in real world, we can remove the assertion, so it does not block other issues?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620027</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-17 18:17:38 -0800</bug_when>
    <thetext>(In reply to Jack from comment #10)
&gt; However, this work around adds LayoutSize for each RenderGeometryMapStep.
&gt; Another approach can be saving the reference of RenderGeometryMapStep that
&gt; overflows m_accumulatedOffset, and later only subtract offset starting at
&gt; the overflowing RenderGeometryMapStep. Or, if it rarely happens in real
&gt; world, we can remove the assertion, so it does not block other issues?

Can we change the assertion to detect the numeric overflow cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620049</commentid>
    <comment_count>12</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-17 19:33:09 -0800</bug_when>
    <thetext>In some test cases, m_accumulatedOffset is used after subtracting step offset. And if the subtraction happens when it is saturated, the result is a random value (not max int32). Therefore, asserting overflow m_accumulatedOffset would still fail in those cases.

(In reply to Simon Fraser (smfr) from comment #11)
&gt; Can we change the assertion to detect the numeric overflow cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620384</commentid>
    <comment_count>13</comment_count>
      <attachid>391107</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-18 15:29:26 -0800</bug_when>
    <thetext>Created attachment 391107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620395</commentid>
    <comment_count>14</comment_count>
      <attachid>391107</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-18 15:38:18 -0800</bug_when>
    <thetext>Comment on attachment 391107
Patch

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

&gt; Source/WebCore/rendering/RenderGeometryMap.cpp:112
&gt; +        ASSERT(roundedIntPoint(LayoutPoint(rendererMappedResult)) == result || m_accumulatedOffsetSaturated);

I think this is a good place for ASSERT_IMPLIES:
ASSERT_IMPLIES(!m_accumulatedOffsetSaturated, LayoutPoint(rendererMappedResult)) == result)

&gt; Source/WebCore/rendering/RenderGeometryMap.cpp:272
&gt; +        if (m_accumulatedOffset.width().mightBeSaturated() || m_accumulatedOffset.height().mightBeSaturated())
&gt; +            m_accumulatedOffsetSaturated = true;

Why don&apos;t we add:
LayoutSize::mightBeSaturated() which returns true if width or height are saturated, and change this to:
m_accumulatedOffsetSaturated |= m_accumulatedOffset.mightBeSaturated();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620469</commentid>
    <comment_count>15</comment_count>
      <attachid>391128</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-18 19:17:08 -0800</bug_when>
    <thetext>Created attachment 391128
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620471</commentid>
    <comment_count>16</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-18 19:18:44 -0800</bug_when>
    <thetext>Thanks for the great suggestions!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620484</commentid>
    <comment_count>17</comment_count>
      <attachid>391128</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-18 19:54:51 -0800</bug_when>
    <thetext>Comment on attachment 391128
Patch

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

Looks OK. I’m frustrated that we need the data member and can’t just check m_accumulatedOffset.mightBeSaturated(), but I assume we do need it.

&gt; Source/WebCore/rendering/RenderGeometryMap.cpp:112
&gt; +        ASSERT_IMPLIES(!m_accumulatedOffsetSaturated, roundedIntPoint(LayoutPoint(rendererMappedResult)) == result);

I think just adding the expression &quot;m_accumulatedOffsetSaturated &amp;&amp;&quot; to the assertion would be clearer than this use of ASSERT_IMPLIES. Maybe I’m biased, because I never heard of ASSERT_IMPLIES before today.

&gt; Source/WebCore/rendering/RenderGeometryMap.h:134
&gt; +    bool m_accumulatedOffsetSaturated { false };

m_accumulatedOffsetMightBeSaturated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620486</commentid>
    <comment_count>18</comment_count>
      <attachid>391128</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-02-18 19:56:32 -0800</bug_when>
    <thetext>Comment on attachment 391128
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderGeometryMap.cpp:112
&gt;&gt; +        ASSERT_IMPLIES(!m_accumulatedOffsetSaturated, roundedIntPoint(LayoutPoint(rendererMappedResult)) == result);
&gt; 
&gt; I think just adding the expression &quot;m_accumulatedOffsetSaturated &amp;&amp;&quot; to the assertion would be clearer than this use of ASSERT_IMPLIES. Maybe I’m biased, because I never heard of ASSERT_IMPLIES before today.

I guess Simon suggested using ASSERT_IMPLIES. But I still think this would be easier to read for me:

     ASSERT(m_accumulatedOffsetMightBeSaturated || roundedIntPoint(LayoutPoint(rendererMappedResult)) == result);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620521</commentid>
    <comment_count>19</comment_count>
      <attachid>391139</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-18 20:59:43 -0800</bug_when>
    <thetext>Created attachment 391139
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620523</commentid>
    <comment_count>20</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-18 21:10:13 -0800</bug_when>
    <thetext>Yeah, m_accumulatedOffset does not stay saturated. It&apos;s doable if we make the subtraction aware of saturated condition. However, that will change the behavior.

(In reply to Darin Adler from comment #17)
&gt; Looks OK. I’m frustrated that we need the data member and can’t just check
&gt; m_accumulatedOffset.mightBeSaturated(), but I assume we do need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620750</commentid>
    <comment_count>21</comment_count>
      <attachid>391139</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-19 11:18:52 -0800</bug_when>
    <thetext>Comment on attachment 391139
Patch

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

&gt; Source/WebCore/platform/graphics/LayoutSize.h:139
&gt; +#if ASSERT_ENABLED

No need to wrap this in #if ASSERT_ENABLED.  LayoutUnit::mightBeSaturated() isn&apos;t.

&gt; LayoutTests/fast/layers/geometry-map-saturated-offset-assert.html:10
&gt; +        -webkit-appearance:media-volume-slider-mute-button;
&gt; +        vertical-align:-53772756.9in;
&gt; +        overflow-y:hidden;
&gt; +        -webkit-padding-before:+.8mm;

Is this really the minimal test case? Can we do without  media-volume-slider-mute-button and the -webkit prefixes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620780</commentid>
    <comment_count>22</comment_count>
      <attachid>391185</attachid>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-19 11:57:51 -0800</bug_when>
    <thetext>Created attachment 391185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620803</commentid>
    <comment_count>23</comment_count>
    <who name="Jack">shihchieh_lee</who>
    <bug_when>2020-02-19 12:33:06 -0800</bug_when>
    <thetext>Yeah, interestingly -webkit-appearance is needed. I changed it to button so it looks more general. Tried radio but the problem doesn&apos;t reproduce.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621112</commentid>
    <comment_count>24</comment_count>
      <attachid>391185</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-19 22:41:25 -0800</bug_when>
    <thetext>Comment on attachment 391185
Patch

Clearing flags on attachment: 391185

Committed r257046: &lt;https://trac.webkit.org/changeset/257046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621113</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-19 22:41:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>265056</attachid>
            <date>2015-11-09 09:03:59 -0800</date>
            <delta_ts>2016-03-18 08:47:18 -0700</delta_ts>
            <desc>Test</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>274</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">cGFyZW50LmFwcGVuZENoaWxkKGNoaWxkKX0gY2F0Y2ggKGVycikge31wYXJlbnQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnaWRfMCcpcGFyZW50LnJlbW92ZUNoaWxkKHBhcmVudC5jaGlsZE5v
ZGVzWwo8c3R5bGU+CiogewogICAgb3ZlcmZsb3cteTogYXV0bzsKICAgIC13ZWJraXQtbWFyZ2lu
LWFmdGVyIDogLTQ0MjU1MTE0NjlleDsKfQo8L3N0eWxlPgo8aGdyb3VwPjwvaGdyb3VwPgo8aDE+
YQogICAgPG1hcD4KICAgICAgICA8aDM+PC9oMz4KICAgIDwvbWFwPgo8L2gxPg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>274415</attachid>
            <date>2016-03-18 08:47:18 -0700</date>
            <delta_ts>2016-03-18 08:47:18 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>test.html</filename>
            <type>text/html</type>
            <size>222</size>
            <attacher name="Renata Hodovan">rhodovan.u-szeged</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxzdHlsZT4KKnsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTptZWRpYS12
b2x1bWUtc2xpZGVyLW11dGUtYnV0dG9uOwogICAgdmVydGljYWwtYWxpZ246LTUzNzcyNzU2Ljlp
bjsKICAgIG92ZXJmbG93LXk6aGlkZGVuOwogICAgLXdlYmtpdC1wYWRkaW5nLWJlZm9yZTorLjht
bTsKfQo8L3N0eWxlPgo8bGk+PC9saT4KPGlucHV0PjwvaW5wdXQ+CjxiaWc+PC9iaWc+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>274898</attachid>
            <date>2016-03-25 04:13:32 -0700</date>
            <delta_ts>2016-03-25 04:13:32 -0700</delta_ts>
            <desc>another test case</desc>
            <filename>test2.html</filename>
            <type>text/html</type>
            <size>246</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">PHN0eWxlPgppbnB1dCB7CiAgICB2ZXJ0aWNhbC1hbGlnbjogLTUzNzcyNy41NjlpbjsKICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKfQpzcGFuIHsKICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbWVkaWEt
dm9sdW1lLXNsaWRlci1tdXRlLWJ1dHRvbjsKICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKICAgIC13
ZWJraXQtcGFkZGluZy1iZWZvcmU6IDFweDsKfQo8L3N0eWxlPgo8Ym9keT4KPGlucHV0Pgo8c3Bh
bj48L3NwYW4+CjwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391107</attachid>
            <date>2020-02-18 15:29:26 -0800</date>
            <delta_ts>2020-02-18 19:17:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151030-20200218152926.patch</filename>
            <type>text/plain</type>
            <size>6328</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMDAzODM3NGMwYWUyYjIxMWVlZTBmNGFmZjg5Njkx
YzM1ZmQ0ZmFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTE4ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6IHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkpID09
IHJlc3VsdCBpbiBXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTAzMAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjc3MTExNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhY2sgaWYgbV9hY2N1bXVsYXRlZE9mZnNldCBldmVy
IGJlY29tZXMgc2F0dXJhdGVkLCBhbmQgaWYgc28sIGRvIG5vdCBhc3NlcnQgb24gdW5leHBlY3Rl
ZCByZW5kZXJlck1hcHBlZFJlc3VsdC4gCisKKyAgICAgICAgVGVzdDogZmFzdC9sYXllcnMvZ2Vv
bWV0cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0Lmh0bWwKKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9t
ZXRyeU1hcDo6bWFwVG9Db250YWluZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
R2VvbWV0cnlNYXA6OnN0ZXBJbnNlcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9t
ZXRyeU1hcDo6c3RlcFJlbW92ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJHZW9tZXRy
eU1hcC5oOgorCiAyMDIwLTAyLTEwICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQ2MDU1KTogRGF0YSBkZXRlY3RlZCBVUkxzIGFy
ZSBubyBsb25nZXIgYmx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdlb21ldHJ5TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9t
ZXRyeU1hcC5jcHAKaW5kZXggYWExZTRmZGZiOGM2OWMzNGNiNjNkMGIwNGMxODc3MWQzOWYzN2Zi
OC4uZDk3MjE0YjU1NDIzYmFiMDJmNDRhNjVjNTAzNTMyNjk1YjBlZGIzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBAIC0xMDksNyArMTA5
LDcgQEAgRmxvYXRQb2ludCBSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIoY29uc3Qg
RmxvYXRQb2ludCYgcCwgY29uc3QgUmVuZGVyTGEKICAgICBpZiAoIWhhc0ZpeGVkUG9zaXRpb25T
dGVwKCkgJiYgIWhhc1RyYW5zZm9ybVN0ZXAoKSAmJiAhaGFzTm9uVW5pZm9ybVN0ZXAoKSAmJiAo
IWNvbnRhaW5lciB8fCAobV9tYXBwaW5nLnNpemUoKSAmJiBjb250YWluZXIgPT0gbV9tYXBwaW5n
WzBdLm1fcmVuZGVyZXIpKSkgewogICAgICAgICByZXN1bHQgPSBwICsgcm91bmRlZEludFNpemUo
bV9hY2N1bXVsYXRlZE9mZnNldCk7CiAgICAgICAgIC8vIFNob3VsZCBjb252ZXJ0IHRvIGEgTGF5
b3V0UG9pbnQgYmVjYXVzZSBvZiB0aGUgdW5pcXVlbmVzcyBvZiBMYXlvdXRVbml0Ojpyb3VuZAot
ICAgICAgICBBU1NFUlQocm91bmRlZEludFBvaW50KExheW91dFBvaW50KHJlbmRlcmVyTWFwcGVk
UmVzdWx0KSkgPT0gcmVzdWx0KTsKKyAgICAgICAgQVNTRVJUKHJvdW5kZWRJbnRQb2ludChMYXlv
dXRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkpID09IHJlc3VsdCB8fCBtX2FjY3VtdWxhdGVk
T2Zmc2V0U2F0dXJhdGVkKTsKICAgICB9IGVsc2UgewogICAgICAgICBUcmFuc2Zvcm1TdGF0ZSB0
cmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZTo6QXBwbHlUcmFuc2Zvcm1EaXJlY3Rpb24sIHAp
OwogICAgICAgICBtYXBUb0NvbnRhaW5lcih0cmFuc2Zvcm1TdGF0ZSwgY29udGFpbmVyKTsKQEAg
LTI2NSw4ICsyNjUsMTMgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6cG9wTWFwcGluZ3NUb0Fu
Y2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyKQogdm9pZCBSZW5kZXJHZW9t
ZXRyeU1hcDo6c3RlcEluc2VydGVkKGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCkK
IHsKICAgICAvLyBSZW5kZXJWaWV3J3Mgb2Zmc2V0LCBpcyBvbmx5IGFwcGxpZWQgd2hlbiB3ZSBo
YXZlIGZpeGVkLXBvc2l0aW9ucy4KLSAgICBpZiAoIXN0ZXAubV9yZW5kZXJlci0+aXNSZW5kZXJW
aWV3KCkpCisgICAgaWYgKCFzdGVwLm1fcmVuZGVyZXItPmlzUmVuZGVyVmlldygpKSB7CiAgICAg
ICAgIG1fYWNjdW11bGF0ZWRPZmZzZXQgKz0gc3RlcC5tX29mZnNldDsKKyNpZiBBU1NFUlRfRU5B
QkxFRAorICAgICAgICBpZiAobV9hY2N1bXVsYXRlZE9mZnNldC53aWR0aCgpLm1pZ2h0QmVTYXR1
cmF0ZWQoKSB8fCBtX2FjY3VtdWxhdGVkT2Zmc2V0LmhlaWdodCgpLm1pZ2h0QmVTYXR1cmF0ZWQo
KSkKKyAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRPZmZzZXRTYXR1cmF0ZWQgPSB0cnVlOworI2Vu
ZGlmCisgICAgfQogCiAgICAgaWYgKHN0ZXAubV9pc05vblVuaWZvcm0pCiAgICAgICAgICsrbV9u
b25Vbmlmb3JtU3RlcHNDb3VudDsKQEAgLTI4MSw4ICsyODYsMTMgQEAgdm9pZCBSZW5kZXJHZW9t
ZXRyeU1hcDo6c3RlcEluc2VydGVkKGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCkK
IHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnN0ZXBSZW1vdmVkKGNvbnN0IFJlbmRlckdlb21ldHJ5
TWFwU3RlcCYgc3RlcCkKIHsKICAgICAvLyBSZW5kZXJWaWV3J3Mgb2Zmc2V0LCBpcyBvbmx5IGFw
cGxpZWQgd2hlbiB3ZSBoYXZlIGZpeGVkLXBvc2l0aW9ucy4KLSAgICBpZiAoIXN0ZXAubV9yZW5k
ZXJlci0+aXNSZW5kZXJWaWV3KCkpCisgICAgaWYgKCFzdGVwLm1fcmVuZGVyZXItPmlzUmVuZGVy
VmlldygpKSB7CiAgICAgICAgIG1fYWNjdW11bGF0ZWRPZmZzZXQgLT0gc3RlcC5tX29mZnNldDsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBpZiAobV9hY2N1bXVsYXRlZE9mZnNldC53aWR0
aCgpLm1pZ2h0QmVTYXR1cmF0ZWQoKSB8fCBtX2FjY3VtdWxhdGVkT2Zmc2V0LmhlaWdodCgpLm1p
Z2h0QmVTYXR1cmF0ZWQoKSkKKyAgICAgICAgICAgIG1fYWNjdW11bGF0ZWRPZmZzZXRTYXR1cmF0
ZWQgPSB0cnVlOworI2VuZGlmCisgICAgfQogCiAgICAgaWYgKHN0ZXAubV9pc05vblVuaWZvcm0p
IHsKICAgICAgICAgQVNTRVJUKG1fbm9uVW5pZm9ybVN0ZXBzQ291bnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaAppbmRleCBhMTNjZDJkYzNmNTIyODhk
YWY0MDhjNjljNzkyNDgzN2YxM2E3NjA3Li4zNDU1NDgxZmY4OGRiMWNmNjY3ZmJmNTEwYTI2ODNl
NjAzMTA1NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2Vv
bWV0cnlNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlN
YXAuaApAQCAtMTMwLDYgKzEzMCw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyR2VvbWV0cnlNYXBT
dGVwcyBtX21hcHBpbmc7CiAgICAgTGF5b3V0U2l6ZSBtX2FjY3VtdWxhdGVkT2Zmc2V0OwogICAg
IE1hcENvb3JkaW5hdGVzRmxhZ3MgbV9tYXBDb29yZGluYXRlc0ZsYWdzOworI2lmIEFTU0VSVF9F
TkFCTEVECisgICAgYm9vbCBtX2FjY3VtdWxhdGVkT2Zmc2V0U2F0dXJhdGVkIHsgZmFsc2UgfTsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllZjZhYTQ5OTE4
ZmIzMTAwZTAxZWRiZDkyN2ZlZGEzZGI2NjM4N2QuLmExN2Q0MDNiNDlkZmUxNjExNzlmNTM2MzQ0
ZDE1OTFjZjE1MGMwZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0xOCAgSmFjayBM
ZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTEVE
OiByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQocmVuZGVyZXJNYXBwZWRSZXN1bHQpKSA9PSBy
ZXN1bHQgaW4gV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEwMzAKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI3NzExMTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIGlmIG1fYWNjdW11bGF0ZWRPZmZzZXQgZXZlciBi
ZWNvbWVzIHNhdHVyYXRlZCwgYW5kIGlmIHNvLCBkbyBub3QgYXNzZXJ0IG9uIHVuZXhwZWN0ZWQg
cmVuZGVyZXJNYXBwZWRSZXN1bHQuIAorCisgICAgICAgICogZmFzdC9sYXllcnMvZ2VvbWV0cnkt
bWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9sYXllcnMvZ2VvbWV0cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0Lmh0bWw6
IEFkZGVkLgorCiAyMDIwLTAyLTEwICBKYW1lcyBIb3dhcmQgIDxqYW1lc2hvd2FyZEBtYWMuY29t
PgogCiAgICAgICAgIFN0YW5kYXJkIGdhbWVwYWQgbWFwcGluZyBmb3IgR2FtZUNvbnRyb2xsZXJH
YW1lcGFkcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VvbWV0cnktbWFw
LXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1cmF0ZWQtb2Zmc2V0LWFzc2VydC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uODMyZGI4MTBjYTJjODYwMWE1OTUzNjQ5MGExNzY4MGFkNGQxYzliNgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1
cmF0ZWQtb2Zmc2V0LWFzc2VydC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorVGVzdHMgZ2Vv
bWV0cnkgbWFwIHdpdGggc2F0dXJhdGVkIG9mZnNldC4gVGhlIHRlc3QgcGFzc2VzIGlmIFdlYktp
dCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xheWVycy9nZW9tZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1cmF0ZWQtb2Zmc2V0
LWFzc2VydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZlMThkMTU3ZjE1ZjFlNjJlMDE1ODM5Zjg3MWZiMmM5
Yzc0OTg1YWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9nZW9t
ZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
c2NyaXB0Pg0KKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpDQorICAgICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsNCis8L3NjcmlwdD4NCis8c3R5bGU+DQorICAgIGlucHV0LCBiaWcgew0K
KyAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOm1lZGlhLXZvbHVtZS1zbGlkZXItbXV0ZS1idXR0
b247DQorICAgICAgICB2ZXJ0aWNhbC1hbGlnbjotNTM3NzI3NTYuOWluOw0KKyAgICAgICAgb3Zl
cmZsb3cteTpoaWRkZW47DQorICAgICAgICAtd2Via2l0LXBhZGRpbmctYmVmb3JlOisuOG1tOw0K
KyAgICB9DQorPC9zdHlsZT4NCis8bGk+PC9saT48aW5wdXQ+PC9pbnB1dD48YmlnPjwvYmlnPjxz
cGFuPlRlc3RzIGdlb21ldHJ5IG1hcCB3aXRoIHNhdHVyYXRlZCBvZmZzZXQuIFRoZSB0ZXN0IHBh
c3NlcyBpZiBXZWJLaXQgZG9lc24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9uLjwvc3Bhbj4N
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391128</attachid>
            <date>2020-02-18 19:17:08 -0800</date>
            <delta_ts>2020-02-18 20:49:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151030-20200218191707.patch</filename>
            <type>text/plain</type>
            <size>6921</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMmY2ZjUyODA5MjI3Yjc0ZTU4M2E1YmYzNGQ0NzEy
ZjJmMWU2MGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAyLTE4ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6IHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkpID09
IHJlc3VsdCBpbiBXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTAzMAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjc3MTExNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhY2sgaWYgbV9hY2N1bXVsYXRlZE9mZnNldCBldmVy
IGJlY29tZXMgc2F0dXJhdGVkLCBhbmQgaWYgc28sIGRvIG5vdCBhc3NlcnQgb24gdW5leHBlY3Rl
ZCByZW5kZXJlck1hcHBlZFJlc3VsdC4KKworICAgICAgICBUZXN0OiBmYXN0L2xheWVycy9nZW9t
ZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U2l6ZTo6
bWlnaHRCZVNhdHVyYXRlZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21l
dHJ5TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0Nv
bnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6c3Rl
cEluc2VydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpzdGVwUmVt
b3ZlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisKIDIwMjAt
MDItMTAgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIyNDYwNTUpOiBEYXRhIGRldGVjdGVkIFVSTHMgYXJlIG5vIGxvbmdlciBibHVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXpl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKaW5kZXgg
NmE5N2ZiNGZhMzc2NTJiNGY5MTFhZWEyNzg4YTYzNmEyMjIyMzcwZC4uZjExYmMzNzZmNzMwYTdk
ZmU1YzJlZDYyODU0MzVkZTA1YzE0NjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0xheW91dFNpemUuaApAQCAtMTM2LDYgKzEzNiwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBMYXlvdXRTaXplKHdpZHRoKCksIHdpZHRoKCkgKiBhc3BlY3RSYXRpby5oZWln
aHQoKSAvIGFzcGVjdFJhdGlvLndpZHRoKCkpOwogICAgIH0KIAorI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgYm9vbCBtaWdodEJlU2F0dXJhdGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3dpZHRoLm1pZ2h0QmVTYXR1cmF0ZWQoKSB8fCBtX2hlaWdodC5taWdodEJlU2F0dXJhdGVk
KCk7CisgICAgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX3dpZHRoOwog
ICAgIExheW91dFVuaXQgbV9oZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCBhYTFlNGZkZmI4YzY5YzM0Y2I2M2QwYjA0YzE4Nzcx
ZDM5ZjM3ZmI4Li43YzY4MWJiMWIwNzJkZWY3ZGY1NjI5OGRkZDAyZjk2ZDQ0MGQ4MmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTEw
OSw3ICsxMDksNyBAQCBGbG9hdFBvaW50IFJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0NvbnRhaW5l
cihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBSZW5kZXJMYQogICAgIGlmICghaGFzRml4ZWRQ
b3NpdGlvblN0ZXAoKSAmJiAhaGFzVHJhbnNmb3JtU3RlcCgpICYmICFoYXNOb25Vbmlmb3JtU3Rl
cCgpICYmICghY29udGFpbmVyIHx8IChtX21hcHBpbmcuc2l6ZSgpICYmIGNvbnRhaW5lciA9PSBt
X21hcHBpbmdbMF0ubV9yZW5kZXJlcikpKSB7CiAgICAgICAgIHJlc3VsdCA9IHAgKyByb3VuZGVk
SW50U2l6ZShtX2FjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICAgICAgLy8gU2hvdWxkIGNvbnZlcnQg
dG8gYSBMYXlvdXRQb2ludCBiZWNhdXNlIG9mIHRoZSB1bmlxdWVuZXNzIG9mIExheW91dFVuaXQ6
OnJvdW5kCi0gICAgICAgIEFTU0VSVChyb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQocmVuZGVy
ZXJNYXBwZWRSZXN1bHQpKSA9PSByZXN1bHQpOworICAgICAgICBBU1NFUlRfSU1QTElFUyghbV9h
Y2N1bXVsYXRlZE9mZnNldFNhdHVyYXRlZCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KHJl
bmRlcmVyTWFwcGVkUmVzdWx0KSkgPT0gcmVzdWx0KTsKICAgICB9IGVsc2UgewogICAgICAgICBU
cmFuc2Zvcm1TdGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZTo6QXBwbHlUcmFuc2Zv
cm1EaXJlY3Rpb24sIHApOwogICAgICAgICBtYXBUb0NvbnRhaW5lcih0cmFuc2Zvcm1TdGF0ZSwg
Y29udGFpbmVyKTsKQEAgLTI2NSw4ICsyNjUsMTIgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6
cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyKQog
dm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6c3RlcEluc2VydGVkKGNvbnN0IFJlbmRlckdlb21ldHJ5
TWFwU3RlcCYgc3RlcCkKIHsKICAgICAvLyBSZW5kZXJWaWV3J3Mgb2Zmc2V0LCBpcyBvbmx5IGFw
cGxpZWQgd2hlbiB3ZSBoYXZlIGZpeGVkLXBvc2l0aW9ucy4KLSAgICBpZiAoIXN0ZXAubV9yZW5k
ZXJlci0+aXNSZW5kZXJWaWV3KCkpCisgICAgaWYgKCFzdGVwLm1fcmVuZGVyZXItPmlzUmVuZGVy
VmlldygpKSB7CiAgICAgICAgIG1fYWNjdW11bGF0ZWRPZmZzZXQgKz0gc3RlcC5tX29mZnNldDsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBtX2FjY3VtdWxhdGVkT2Zmc2V0U2F0dXJhdGVk
IHw9IG1fYWNjdW11bGF0ZWRPZmZzZXQubWlnaHRCZVNhdHVyYXRlZCgpOworI2VuZGlmCisgICAg
fQogCiAgICAgaWYgKHN0ZXAubV9pc05vblVuaWZvcm0pCiAgICAgICAgICsrbV9ub25Vbmlmb3Jt
U3RlcHNDb3VudDsKQEAgLTI4MSw4ICsyODUsMTIgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6
c3RlcEluc2VydGVkKGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCkKIHZvaWQgUmVu
ZGVyR2VvbWV0cnlNYXA6OnN0ZXBSZW1vdmVkKGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwU3RlcCYg
c3RlcCkKIHsKICAgICAvLyBSZW5kZXJWaWV3J3Mgb2Zmc2V0LCBpcyBvbmx5IGFwcGxpZWQgd2hl
biB3ZSBoYXZlIGZpeGVkLXBvc2l0aW9ucy4KLSAgICBpZiAoIXN0ZXAubV9yZW5kZXJlci0+aXNS
ZW5kZXJWaWV3KCkpCisgICAgaWYgKCFzdGVwLm1fcmVuZGVyZXItPmlzUmVuZGVyVmlldygpKSB7
CiAgICAgICAgIG1fYWNjdW11bGF0ZWRPZmZzZXQgLT0gc3RlcC5tX29mZnNldDsKKyNpZiBBU1NF
UlRfRU5BQkxFRAorICAgICAgICBtX2FjY3VtdWxhdGVkT2Zmc2V0U2F0dXJhdGVkIHw9IG1fYWNj
dW11bGF0ZWRPZmZzZXQubWlnaHRCZVNhdHVyYXRlZCgpOworI2VuZGlmCisgICAgfQogCiAgICAg
aWYgKHN0ZXAubV9pc05vblVuaWZvcm0pIHsKICAgICAgICAgQVNTRVJUKG1fbm9uVW5pZm9ybVN0
ZXBzQ291bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdl
b21ldHJ5TWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAu
aAppbmRleCBhMTNjZDJkYzNmNTIyODhkYWY0MDhjNjljNzkyNDgzN2YxM2E3NjA3Li4zNDU1NDgx
ZmY4OGRiMWNmNjY3ZmJmNTEwYTI2ODNlNjAzMTA1NzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaApAQCAtMTMwLDYgKzEzMCw5IEBAIHByaXZhdGU6
CiAgICAgUmVuZGVyR2VvbWV0cnlNYXBTdGVwcyBtX21hcHBpbmc7CiAgICAgTGF5b3V0U2l6ZSBt
X2FjY3VtdWxhdGVkT2Zmc2V0OwogICAgIE1hcENvb3JkaW5hdGVzRmxhZ3MgbV9tYXBDb29yZGlu
YXRlc0ZsYWdzOworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgYm9vbCBtX2FjY3VtdWxhdGVkT2Zm
c2V0U2F0dXJhdGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDllZjZhYTQ5OTE4ZmIzMTAwZTAxZWRiZDkyN2ZlZGEzZGI2NjM4N2QuLmIx
MWRkMjhmZjg4ODdmMDQ1YzM4MWVhNDVkMmMyZTNhNDdmNDJiN2YgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMC0wMi0xOCAgSmFjayBMZWUgIDxzaGloY2hpZWhfbGVlQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQocmVu
ZGVyZXJNYXBwZWRSZXN1bHQpKSA9PSByZXN1bHQgaW4gV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlN
YXA6Om1hcFRvQ29udGFpbmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTEwMzAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3NzExMTQyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIGlmIG1f
YWNjdW11bGF0ZWRPZmZzZXQgZXZlciBiZWNvbWVzIHNhdHVyYXRlZCwgYW5kIGlmIHNvLCBkbyBu
b3QgYXNzZXJ0IG9uIHVuZXhwZWN0ZWQgcmVuZGVyZXJNYXBwZWRSZXN1bHQuCisKKyAgICAgICAg
KiBmYXN0L2xheWVycy9nZW9tZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xheWVycy9nZW9tZXRyeS1tYXAtc2F0dXJh
dGVkLW9mZnNldC1hc3NlcnQuaHRtbDogQWRkZWQuCisKIDIwMjAtMDItMTAgIEphbWVzIEhvd2Fy
ZCAgPGphbWVzaG93YXJkQG1hYy5jb20+CiAKICAgICAgICAgU3RhbmRhcmQgZ2FtZXBhZCBtYXBw
aW5nIGZvciBHYW1lQ29udHJvbGxlckdhbWVwYWRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2xheWVycy9nZW9tZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VvbWV0cnktbWFwLXNhdHVyYXRlZC1vZmZz
ZXQtYXNzZXJ0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzJkYjgxMGNhMmM4NjAxYTU5NTM2
NDkwYTE3NjgwYWQ0ZDFjOWI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
YXllcnMvZ2VvbWV0cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxIEBACitUZXN0cyBnZW9tZXRyeSBtYXAgd2l0aCBzYXR1cmF0ZWQgb2Zmc2V0LiBU
aGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jhc2ggb3IgaGl0IGFuIGFzc2VydGlv
bi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1
cmF0ZWQtb2Zmc2V0LWFzc2VydC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VvbWV0
cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUxOGQxNTdm
MTVmMWU2MmUwMTU4MzlmODcxZmIyYzljNzQ5ODVhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1cmF0ZWQtb2Zmc2V0LWFzc2VydC5o
dG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxzY3JpcHQ+DQorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikNCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOw0KKzwvc2NyaXB0Pg0KKzxzdHls
ZT4NCisgICAgaW5wdXQsIGJpZyB7DQorICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6bWVkaWEt
dm9sdW1lLXNsaWRlci1tdXRlLWJ1dHRvbjsNCisgICAgICAgIHZlcnRpY2FsLWFsaWduOi01Mzc3
Mjc1Ni45aW47DQorICAgICAgICBvdmVyZmxvdy15OmhpZGRlbjsNCisgICAgICAgIC13ZWJraXQt
cGFkZGluZy1iZWZvcmU6Ky44bW07DQorICAgIH0NCis8L3N0eWxlPg0KKzxsaT48L2xpPjxpbnB1
dD48L2lucHV0PjxiaWc+PC9iaWc+PHNwYW4+VGVzdHMgZ2VvbWV0cnkgbWFwIHdpdGggc2F0dXJh
dGVkIG9mZnNldC4gVGhlIHRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2Vzbid0IGNyYXNoIG9yIGhp
dCBhbiBhc3NlcnRpb24uPC9zcGFuPg0K
</data>
<flag name="review"
          id="406702"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391139</attachid>
            <date>2020-02-18 20:59:43 -0800</date>
            <delta_ts>2020-02-19 11:57:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151030-20200218205942.patch</filename>
            <type>text/plain</type>
            <size>6942</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMmY2ZjUyODA5MjI3Yjc0ZTU4M2E1YmYzNGQ0NzEy
ZjJmMWU2MGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAyLTE4ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6IHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkpID09
IHJlc3VsdCBpbiBXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTAzMAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjc3MTExNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhY2sgaWYgbV9hY2N1bXVsYXRlZE9mZnNldCBldmVy
IGJlY29tZXMgc2F0dXJhdGVkLCBhbmQgaWYgc28sIGRvIG5vdCBhc3NlcnQgb24gdW5leHBlY3Rl
ZCByZW5kZXJlck1hcHBlZFJlc3VsdC4KKworICAgICAgICBUZXN0OiBmYXN0L2xheWVycy9nZW9t
ZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U2l6ZTo6
bWlnaHRCZVNhdHVyYXRlZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21l
dHJ5TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0Nv
bnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6c3Rl
cEluc2VydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpzdGVwUmVt
b3ZlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisKIDIwMjAt
MDItMTAgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIyNDYwNTUpOiBEYXRhIGRldGVjdGVkIFVSTHMgYXJlIG5vIGxvbmdlciBibHVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXpl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKaW5kZXgg
NmE5N2ZiNGZhMzc2NTJiNGY5MTFhZWEyNzg4YTYzNmEyMjIyMzcwZC4uZjExYmMzNzZmNzMwYTdk
ZmU1YzJlZDYyODU0MzVkZTA1YzE0NjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0xheW91dFNpemUuaApAQCAtMTM2LDYgKzEzNiwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBMYXlvdXRTaXplKHdpZHRoKCksIHdpZHRoKCkgKiBhc3BlY3RSYXRpby5oZWln
aHQoKSAvIGFzcGVjdFJhdGlvLndpZHRoKCkpOwogICAgIH0KIAorI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgYm9vbCBtaWdodEJlU2F0dXJhdGVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX3dpZHRoLm1pZ2h0QmVTYXR1cmF0ZWQoKSB8fCBtX2hlaWdodC5taWdodEJlU2F0dXJhdGVk
KCk7CisgICAgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX3dpZHRoOwog
ICAgIExheW91dFVuaXQgbV9oZWlnaHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckdlb21ldHJ5TWFwLmNwcAppbmRleCBhYTFlNGZkZmI4YzY5YzM0Y2I2M2QwYjA0YzE4Nzcx
ZDM5ZjM3ZmI4Li5jYmIxNDY3ZTU2YTAwZWUzMTcwZDVmYWUxYTBkNDhlZWIxZDJiZWJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKQEAgLTEw
OSw3ICsxMDksNyBAQCBGbG9hdFBvaW50IFJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0NvbnRhaW5l
cihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBSZW5kZXJMYQogICAgIGlmICghaGFzRml4ZWRQ
b3NpdGlvblN0ZXAoKSAmJiAhaGFzVHJhbnNmb3JtU3RlcCgpICYmICFoYXNOb25Vbmlmb3JtU3Rl
cCgpICYmICghY29udGFpbmVyIHx8IChtX21hcHBpbmcuc2l6ZSgpICYmIGNvbnRhaW5lciA9PSBt
X21hcHBpbmdbMF0ubV9yZW5kZXJlcikpKSB7CiAgICAgICAgIHJlc3VsdCA9IHAgKyByb3VuZGVk
SW50U2l6ZShtX2FjY3VtdWxhdGVkT2Zmc2V0KTsKICAgICAgICAgLy8gU2hvdWxkIGNvbnZlcnQg
dG8gYSBMYXlvdXRQb2ludCBiZWNhdXNlIG9mIHRoZSB1bmlxdWVuZXNzIG9mIExheW91dFVuaXQ6
OnJvdW5kCi0gICAgICAgIEFTU0VSVChyb3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQocmVuZGVy
ZXJNYXBwZWRSZXN1bHQpKSA9PSByZXN1bHQpOworICAgICAgICBBU1NFUlQobV9hY2N1bXVsYXRl
ZE9mZnNldE1pZ2h0QmVTYXR1cmF0ZWQgfHwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KHJl
bmRlcmVyTWFwcGVkUmVzdWx0KSkgPT0gcmVzdWx0KTsKICAgICB9IGVsc2UgewogICAgICAgICBU
cmFuc2Zvcm1TdGF0ZSB0cmFuc2Zvcm1TdGF0ZShUcmFuc2Zvcm1TdGF0ZTo6QXBwbHlUcmFuc2Zv
cm1EaXJlY3Rpb24sIHApOwogICAgICAgICBtYXBUb0NvbnRhaW5lcih0cmFuc2Zvcm1TdGF0ZSwg
Y29udGFpbmVyKTsKQEAgLTI2NSw4ICsyNjUsMTIgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6
cG9wTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyKQog
dm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6c3RlcEluc2VydGVkKGNvbnN0IFJlbmRlckdlb21ldHJ5
TWFwU3RlcCYgc3RlcCkKIHsKICAgICAvLyBSZW5kZXJWaWV3J3Mgb2Zmc2V0LCBpcyBvbmx5IGFw
cGxpZWQgd2hlbiB3ZSBoYXZlIGZpeGVkLXBvc2l0aW9ucy4KLSAgICBpZiAoIXN0ZXAubV9yZW5k
ZXJlci0+aXNSZW5kZXJWaWV3KCkpCisgICAgaWYgKCFzdGVwLm1fcmVuZGVyZXItPmlzUmVuZGVy
VmlldygpKSB7CiAgICAgICAgIG1fYWNjdW11bGF0ZWRPZmZzZXQgKz0gc3RlcC5tX29mZnNldDsK
KyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBtX2FjY3VtdWxhdGVkT2Zmc2V0TWlnaHRCZVNh
dHVyYXRlZCB8PSBtX2FjY3VtdWxhdGVkT2Zmc2V0Lm1pZ2h0QmVTYXR1cmF0ZWQoKTsKKyNlbmRp
ZgorICAgIH0KIAogICAgIGlmIChzdGVwLm1faXNOb25Vbmlmb3JtKQogICAgICAgICArK21fbm9u
VW5pZm9ybVN0ZXBzQ291bnQ7CkBAIC0yODEsOCArMjg1LDEyIEBAIHZvaWQgUmVuZGVyR2VvbWV0
cnlNYXA6OnN0ZXBJbnNlcnRlZChjb25zdCBSZW5kZXJHZW9tZXRyeU1hcFN0ZXAmIHN0ZXApCiB2
b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpzdGVwUmVtb3ZlZChjb25zdCBSZW5kZXJHZW9tZXRyeU1h
cFN0ZXAmIHN0ZXApCiB7CiAgICAgLy8gUmVuZGVyVmlldydzIG9mZnNldCwgaXMgb25seSBhcHBs
aWVkIHdoZW4gd2UgaGF2ZSBmaXhlZC1wb3NpdGlvbnMuCi0gICAgaWYgKCFzdGVwLm1fcmVuZGVy
ZXItPmlzUmVuZGVyVmlldygpKQorICAgIGlmICghc3RlcC5tX3JlbmRlcmVyLT5pc1JlbmRlclZp
ZXcoKSkgewogICAgICAgICBtX2FjY3VtdWxhdGVkT2Zmc2V0IC09IHN0ZXAubV9vZmZzZXQ7Cisj
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgbV9hY2N1bXVsYXRlZE9mZnNldE1pZ2h0QmVTYXR1
cmF0ZWQgfD0gbV9hY2N1bXVsYXRlZE9mZnNldC5taWdodEJlU2F0dXJhdGVkKCk7CisjZW5kaWYK
KyAgICB9CiAKICAgICBpZiAoc3RlcC5tX2lzTm9uVW5pZm9ybSkgewogICAgICAgICBBU1NFUlQo
bV9ub25Vbmlmb3JtU3RlcHNDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJHZW9tZXRyeU1hcC5oCmluZGV4IGExM2NkMmRjM2Y1MjI4OGRhZjQwOGM2OWM3OTI0ODM3ZjEz
YTc2MDcuLmVlMTc5MWFlOTVhMWNmMWZkZDY5Y2MxZjY0NjE1NDg2YjIwZDE3NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oCkBAIC0xMzAsNiArMTMw
LDkgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJHZW9tZXRyeU1hcFN0ZXBzIG1fbWFwcGluZzsKICAg
ICBMYXlvdXRTaXplIG1fYWNjdW11bGF0ZWRPZmZzZXQ7CiAgICAgTWFwQ29vcmRpbmF0ZXNGbGFn
cyBtX21hcENvb3JkaW5hdGVzRmxhZ3M7CisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICBib29sIG1f
YWNjdW11bGF0ZWRPZmZzZXRNaWdodEJlU2F0dXJhdGVkIHsgZmFsc2UgfTsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllZjZhYTQ5OTE4ZmIzMTAwZTAxZWRi
ZDkyN2ZlZGEzZGI2NjM4N2QuLmIxMWRkMjhmZjg4ODdmMDQ1YzM4MWVhNDVkMmMyZTNhNDdmNDJi
N2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wMi0xOCAgSmFjayBMZWUgIDxzaGloY2hp
ZWhfbGVlQGFwcGxlLmNvbT4KKworICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByb3VuZGVkSW50
UG9pbnQoTGF5b3V0UG9pbnQocmVuZGVyZXJNYXBwZWRSZXN1bHQpKSA9PSByZXN1bHQgaW4gV2Vi
Q29yZTo6UmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEwMzAKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI3NzExMTQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRyYWNrIGlmIG1fYWNjdW11bGF0ZWRPZmZzZXQgZXZlciBiZWNvbWVzIHNhdHVy
YXRlZCwgYW5kIGlmIHNvLCBkbyBub3QgYXNzZXJ0IG9uIHVuZXhwZWN0ZWQgcmVuZGVyZXJNYXBw
ZWRSZXN1bHQuCisKKyAgICAgICAgKiBmYXN0L2xheWVycy9nZW9tZXRyeS1tYXAtc2F0dXJhdGVk
LW9mZnNldC1hc3NlcnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xheWVy
cy9nZW9tZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQuaHRtbDogQWRkZWQuCisKIDIw
MjAtMDItMTAgIEphbWVzIEhvd2FyZCAgPGphbWVzaG93YXJkQG1hYy5jb20+CiAKICAgICAgICAg
U3RhbmRhcmQgZ2FtZXBhZCBtYXBwaW5nIGZvciBHYW1lQ29udHJvbGxlckdhbWVwYWRzCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9nZW9tZXRyeS1tYXAtc2F0dXJhdGVkLW9m
ZnNldC1hc3NlcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VvbWV0
cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
MzJkYjgxMGNhMmM4NjAxYTU5NTM2NDkwYTE3NjgwYWQ0ZDFjOWI2Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VvbWV0cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQt
YXNzZXJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitUZXN0cyBnZW9tZXRyeSBtYXAgd2l0
aCBzYXR1cmF0ZWQgb2Zmc2V0LiBUaGUgdGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXNuJ3QgY3Jh
c2ggb3IgaGl0IGFuIGFzc2VydGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbGF5
ZXJzL2dlb21ldHJ5LW1hcC1zYXR1cmF0ZWQtb2Zmc2V0LWFzc2VydC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9sYXllcnMvZ2VvbWV0cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmUxOGQxNTdmMTVmMWU2MmUwMTU4MzlmODcxZmIyYzljNzQ5ODVhZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1
cmF0ZWQtb2Zmc2V0LWFzc2VydC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzxzY3JpcHQ+DQorICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikNCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
Ow0KKzwvc2NyaXB0Pg0KKzxzdHlsZT4NCisgICAgaW5wdXQsIGJpZyB7DQorICAgICAgICAtd2Vi
a2l0LWFwcGVhcmFuY2U6bWVkaWEtdm9sdW1lLXNsaWRlci1tdXRlLWJ1dHRvbjsNCisgICAgICAg
IHZlcnRpY2FsLWFsaWduOi01Mzc3Mjc1Ni45aW47DQorICAgICAgICBvdmVyZmxvdy15OmhpZGRl
bjsNCisgICAgICAgIC13ZWJraXQtcGFkZGluZy1iZWZvcmU6Ky44bW07DQorICAgIH0NCis8L3N0
eWxlPg0KKzxsaT48L2xpPjxpbnB1dD48L2lucHV0PjxiaWc+PC9iaWc+PHNwYW4+VGVzdHMgZ2Vv
bWV0cnkgbWFwIHdpdGggc2F0dXJhdGVkIG9mZnNldC4gVGhlIHRlc3QgcGFzc2VzIGlmIFdlYktp
dCBkb2Vzbid0IGNyYXNoIG9yIGhpdCBhbiBhc3NlcnRpb24uPC9zcGFuPg0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391185</attachid>
            <date>2020-02-19 11:57:51 -0800</date>
            <delta_ts>2020-02-19 22:41:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151030-20200219115750.patch</filename>
            <type>text/plain</type>
            <size>6889</size>
            <attacher name="Jack">shihchieh_lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWJhODU1YzBhMDRmZDhk
MWM2ZjU4YzNlZDcwZWI3OTQzMWMwYjdlNS4uMmY2ZjUyODA5MjI3Yjc0ZTU4M2E1YmYzNGQ0NzEy
ZjJmMWU2MGYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTAyLTE4ICBKYWNr
IExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEFTU0VSVElPTiBGQUlM
RUQ6IHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkpID09
IHJlc3VsdCBpbiBXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTAzMAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjc3MTExNDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhY2sgaWYgbV9hY2N1bXVsYXRlZE9mZnNldCBldmVy
IGJlY29tZXMgc2F0dXJhdGVkLCBhbmQgaWYgc28sIGRvIG5vdCBhc3NlcnQgb24gdW5leHBlY3Rl
ZCByZW5kZXJlck1hcHBlZFJlc3VsdC4KKworICAgICAgICBUZXN0OiBmYXN0L2xheWVycy9nZW9t
ZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQuaHRtbAorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U2l6ZTo6
bWlnaHRCZVNhdHVyYXRlZCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21l
dHJ5TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjptYXBUb0Nv
bnRhaW5lciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6c3Rl
cEluc2VydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFwOjpzdGVwUmVt
b3ZlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmg6CisKIDIwMjAt
MDItMTAgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIyNDYwNTUpOiBEYXRhIGRldGVjdGVkIFVSTHMgYXJlIG5vIGxvbmdlciBibHVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXpl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRTaXplLmgKaW5kZXgg
NmE5N2ZiNGZhMzc2NTJiNGY5MTFhZWEyNzg4YTYzNmEyMjIyMzcwZC4uMTgyODMyMWU4NmNmYzdi
YmYxMGQ0YzljM2Q1NmE4YzBkZmM5NDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTGF5b3V0U2l6ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0xheW91dFNpemUuaApAQCAtMTM2LDYgKzEzNiwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBMYXlvdXRTaXplKHdpZHRoKCksIHdpZHRoKCkgKiBhc3BlY3RSYXRpby5oZWln
aHQoKSAvIGFzcGVjdFJhdGlvLndpZHRoKCkpOwogICAgIH0KIAorICAgIGJvb2wgbWlnaHRCZVNh
dHVyYXRlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV93aWR0aC5taWdodEJlU2F0
dXJhdGVkKCkgfHwgbV9oZWlnaHQubWlnaHRCZVNhdHVyYXRlZCgpOworICAgIH0KKwogcHJpdmF0
ZToKICAgICBMYXlvdXRVbml0IG1fd2lkdGg7CiAgICAgTGF5b3V0VW5pdCBtX2hlaWdodDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCmluZGV4IGFh
MWU0ZmRmYjhjNjljMzRjYjYzZDBiMDRjMTg3NzFkMzlmMzdmYjguLmNiYjE0NjdlNTZhMDBlZTMx
NzBkNWZhZTFhMGQ0OGVlYjFkMmJlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdlb21ldHJ5TWFwLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIEZsb2F0UG9pbnQgUmVu
ZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0
IFJlbmRlckxhCiAgICAgaWYgKCFoYXNGaXhlZFBvc2l0aW9uU3RlcCgpICYmICFoYXNUcmFuc2Zv
cm1TdGVwKCkgJiYgIWhhc05vblVuaWZvcm1TdGVwKCkgJiYgKCFjb250YWluZXIgfHwgKG1fbWFw
cGluZy5zaXplKCkgJiYgY29udGFpbmVyID09IG1fbWFwcGluZ1swXS5tX3JlbmRlcmVyKSkpIHsK
ICAgICAgICAgcmVzdWx0ID0gcCArIHJvdW5kZWRJbnRTaXplKG1fYWNjdW11bGF0ZWRPZmZzZXQp
OwogICAgICAgICAvLyBTaG91bGQgY29udmVydCB0byBhIExheW91dFBvaW50IGJlY2F1c2Ugb2Yg
dGhlIHVuaXF1ZW5lc3Mgb2YgTGF5b3V0VW5pdDo6cm91bmQKLSAgICAgICAgQVNTRVJUKHJvdW5k
ZWRJbnRQb2ludChMYXlvdXRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkpID09IHJlc3VsdCk7
CisgICAgICAgIEFTU0VSVChtX2FjY3VtdWxhdGVkT2Zmc2V0TWlnaHRCZVNhdHVyYXRlZCB8fCBy
b3VuZGVkSW50UG9pbnQoTGF5b3V0UG9pbnQocmVuZGVyZXJNYXBwZWRSZXN1bHQpKSA9PSByZXN1
bHQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFRyYW5zZm9ybVN0YXRlIHRyYW5zZm9ybVN0YXRl
KFRyYW5zZm9ybVN0YXRlOjpBcHBseVRyYW5zZm9ybURpcmVjdGlvbiwgcCk7CiAgICAgICAgIG1h
cFRvQ29udGFpbmVyKHRyYW5zZm9ybVN0YXRlLCBjb250YWluZXIpOwpAQCAtMjY1LDggKzI2NSwx
MiBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwb3BNYXBwaW5nc1RvQW5jZXN0b3IoY29uc3Qg
UmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIpCiB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpzdGVw
SW5zZXJ0ZWQoY29uc3QgUmVuZGVyR2VvbWV0cnlNYXBTdGVwJiBzdGVwKQogewogICAgIC8vIFJl
bmRlclZpZXcncyBvZmZzZXQsIGlzIG9ubHkgYXBwbGllZCB3aGVuIHdlIGhhdmUgZml4ZWQtcG9z
aXRpb25zLgotICAgIGlmICghc3RlcC5tX3JlbmRlcmVyLT5pc1JlbmRlclZpZXcoKSkKKyAgICBp
ZiAoIXN0ZXAubV9yZW5kZXJlci0+aXNSZW5kZXJWaWV3KCkpIHsKICAgICAgICAgbV9hY2N1bXVs
YXRlZE9mZnNldCArPSBzdGVwLm1fb2Zmc2V0OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAg
IG1fYWNjdW11bGF0ZWRPZmZzZXRNaWdodEJlU2F0dXJhdGVkIHw9IG1fYWNjdW11bGF0ZWRPZmZz
ZXQubWlnaHRCZVNhdHVyYXRlZCgpOworI2VuZGlmCisgICAgfQogCiAgICAgaWYgKHN0ZXAubV9p
c05vblVuaWZvcm0pCiAgICAgICAgICsrbV9ub25Vbmlmb3JtU3RlcHNDb3VudDsKQEAgLTI4MSw4
ICsyODUsMTIgQEAgdm9pZCBSZW5kZXJHZW9tZXRyeU1hcDo6c3RlcEluc2VydGVkKGNvbnN0IFJl
bmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCkKIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnN0ZXBS
ZW1vdmVkKGNvbnN0IFJlbmRlckdlb21ldHJ5TWFwU3RlcCYgc3RlcCkKIHsKICAgICAvLyBSZW5k
ZXJWaWV3J3Mgb2Zmc2V0LCBpcyBvbmx5IGFwcGxpZWQgd2hlbiB3ZSBoYXZlIGZpeGVkLXBvc2l0
aW9ucy4KLSAgICBpZiAoIXN0ZXAubV9yZW5kZXJlci0+aXNSZW5kZXJWaWV3KCkpCisgICAgaWYg
KCFzdGVwLm1fcmVuZGVyZXItPmlzUmVuZGVyVmlldygpKSB7CiAgICAgICAgIG1fYWNjdW11bGF0
ZWRPZmZzZXQgLT0gc3RlcC5tX29mZnNldDsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBt
X2FjY3VtdWxhdGVkT2Zmc2V0TWlnaHRCZVNhdHVyYXRlZCB8PSBtX2FjY3VtdWxhdGVkT2Zmc2V0
Lm1pZ2h0QmVTYXR1cmF0ZWQoKTsKKyNlbmRpZgorICAgIH0KIAogICAgIGlmIChzdGVwLm1faXNO
b25Vbmlmb3JtKSB7CiAgICAgICAgIEFTU0VSVChtX25vblVuaWZvcm1TdGVwc0NvdW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmgKaW5kZXggYTEzY2Qy
ZGMzZjUyMjg4ZGFmNDA4YzY5Yzc5MjQ4MzdmMTNhNzYwNy4uZWUxNzkxYWU5NWExY2YxZmRkNjlj
YzFmNjQ2MTU0ODZiMjBkMTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdlb21ldHJ5TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdlb21ldHJ5TWFwLmgKQEAgLTEzMCw2ICsxMzAsOSBAQCBwcml2YXRlOgogICAgIFJlbmRlckdl
b21ldHJ5TWFwU3RlcHMgbV9tYXBwaW5nOwogICAgIExheW91dFNpemUgbV9hY2N1bXVsYXRlZE9m
ZnNldDsKICAgICBNYXBDb29yZGluYXRlc0ZsYWdzIG1fbWFwQ29vcmRpbmF0ZXNGbGFnczsKKyNp
ZiBBU1NFUlRfRU5BQkxFRAorICAgIGJvb2wgbV9hY2N1bXVsYXRlZE9mZnNldE1pZ2h0QmVTYXR1
cmF0ZWQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggOWVmNmFhNDk5MThmYjMxMDBlMDFlZGJkOTI3ZmVkYTNkYjY2Mzg3ZC4uYjExZGQyOGZm
ODg4N2YwNDVjMzgxZWE0NWQyYzJlM2E0N2Y0MmI3ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisy
MDIwLTAyLTE4ICBKYWNrIExlZSAgPHNoaWhjaGllaF9sZWVAYXBwbGUuY29tPgorCisgICAgICAg
IEFTU0VSVElPTiBGQUlMRUQ6IHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChyZW5kZXJlck1h
cHBlZFJlc3VsdCkpID09IHJlc3VsdCBpbiBXZWJDb3JlOjpSZW5kZXJHZW9tZXRyeU1hcDo6bWFw
VG9Db250YWluZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MTAzMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjc3MTExNDI+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJhY2sgaWYgbV9hY2N1bXVs
YXRlZE9mZnNldCBldmVyIGJlY29tZXMgc2F0dXJhdGVkLCBhbmQgaWYgc28sIGRvIG5vdCBhc3Nl
cnQgb24gdW5leHBlY3RlZCByZW5kZXJlck1hcHBlZFJlc3VsdC4KKworICAgICAgICAqIGZhc3Qv
bGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1cmF0ZWQtb2Zmc2V0LWFzc2VydC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbGF5ZXJzL2dlb21ldHJ5LW1hcC1zYXR1cmF0ZWQtb2Zm
c2V0LWFzc2VydC5odG1sOiBBZGRlZC4KKwogMjAyMC0wMi0xMCAgSmFtZXMgSG93YXJkICA8amFt
ZXNob3dhcmRAbWFjLmNvbT4KIAogICAgICAgICBTdGFuZGFyZCBnYW1lcGFkIG1hcHBpbmcgZm9y
IEdhbWVDb250cm9sbGVyR2FtZXBhZHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbGF5
ZXJzL2dlb21ldHJ5LW1hcC1zYXR1cmF0ZWQtb2Zmc2V0LWFzc2VydC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2xheWVycy9nZW9tZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3Nl
cnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMmRiODEwY2EyYzg2MDFhNTk1MzY0OTBhMTc2
ODBhZDRkMWM5YjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9n
ZW9tZXRyeS1tYXAtc2F0dXJhdGVkLW9mZnNldC1hc3NlcnQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEgQEAKK1Rlc3RzIGdlb21ldHJ5IG1hcCB3aXRoIHNhdHVyYXRlZCBvZmZzZXQuIFRoZSB0ZXN0
IHBhc3NlcyBpZiBXZWJLaXQgZG9lc24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9uLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sYXllcnMvZ2VvbWV0cnktbWFwLXNhdHVyYXRlZC1v
ZmZzZXQtYXNzZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xheWVycy9nZW9tZXRyeS1tYXAt
c2F0dXJhdGVkLW9mZnNldC1hc3NlcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MDNiMWQ1ODQzMGI1ZmNj
MDZmOGNlNjlkNTkzZjY0NGI4ZTE4MjI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9sYXllcnMvZ2VvbWV0cnktbWFwLXNhdHVyYXRlZC1vZmZzZXQtYXNzZXJ0Lmh0bWwKQEAg
LTAsMCArMSwxMyBAQAorPHNjcmlwdD4NCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQ0KKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7DQorPC9zY3JpcHQ+DQorPHN0eWxlPg0KKyAg
ICBpbnB1dCwgYmlnIHsNCisgICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTpidXR0b247DQorICAg
ICAgICB2ZXJ0aWNhbC1hbGlnbjotNTM3NzI3NTYuOWluOw0KKyAgICAgICAgb3ZlcmZsb3cteTpo
aWRkZW47DQorICAgICAgICAtd2Via2l0LXBhZGRpbmctYmVmb3JlOisuOG1tOw0KKyAgICB9DQor
PC9zdHlsZT4NCis8bGk+PC9saT48aW5wdXQ+PC9pbnB1dD48YmlnPjwvYmlnPjxzcGFuPlRlc3Rz
IGdlb21ldHJ5IG1hcCB3aXRoIHNhdHVyYXRlZCBvZmZzZXQuIFRoZSB0ZXN0IHBhc3NlcyBpZiBX
ZWJLaXQgZG9lc24ndCBjcmFzaCBvciBoaXQgYW4gYXNzZXJ0aW9uLjwvc3Bhbj4NCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>