<?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>144752</bug_id>
          
          <creation_ts>2015-05-07 12:16:14 -0700</creation_ts>
          <short_desc>Remove convenience constructors for TextRun</short_desc>
          <delta_ts>2015-05-11 18:09:56 -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>New Bugs</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>144806</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1092690</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 12:16:14 -0700</bug_when>
    <thetext>Remove convenience constructors for TextRun</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092693</commentid>
    <comment_count>1</comment_count>
      <attachid>252607</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 12:18:36 -0700</bug_when>
    <thetext>Created attachment 252607
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092700</commentid>
    <comment_count>2</comment_count>
      <attachid>252607</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-07 12:26:27 -0700</bug_when>
    <thetext>Comment on attachment 252607
Patch

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

&gt; Source/WebCore/platform/graphics/TextRun.h:57
&gt; +    explicit TextRun(StringView stringView, float xpos = 0, float expansion = 0, ExpansionBehavior expansionBehavior = AllowTrailingExpansion | ForbidLeadingExpansion, TextDirection direction = LTR, bool directionalOverride = false, bool characterScanForCodePath = true, RoundingHacks roundingHacks = RunRounding | WordRounding)
&gt; +        : m_text(stringView)
&gt; +        , m_charactersLength(stringView.length())

Maybe text instead of stringView?

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:208
&gt; +        if (style.fontCascade().codePath(TextRun(StringView(textRenderer.text()))) != FontCascade::Simple)

I’m surprised the explicit cast to StringView is needed. I think we should fix whatever problem is leading to our need to do that.

&gt; Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp:200
&gt; -    TextRun run(segment.text.characters&lt;CharacterType&gt;() + segmentFrom, segmentTo - segmentFrom);
&gt; +    TextRun run(StringView(segment.text.characters&lt;CharacterType&gt;() + segmentFrom, segmentTo - segmentFrom));

I think this shows us a bit of a refactoring mistake. I’m not sure this function template needs to be a template at all, and if segment.text is already a StringView then this code should just be:

    TextRun run(segment.text.substring(segmentFrom, segmentTo - segmentFrom));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092899</commentid>
    <comment_count>3</comment_count>
      <attachid>252663</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-07 17:37:14 -0700</bug_when>
    <thetext>Created attachment 252663
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093218</commentid>
    <comment_count>4</comment_count>
      <attachid>252663</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-05-08 10:06:55 -0700</bug_when>
    <thetext>Comment on attachment 252663
Patch for landing

r+ on the WTF changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093221</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-08 10:12:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 252663 [details]
&gt; Patch for landing
&gt; 
&gt; r+ on the WTF changes.

Darin r+&apos;ed the rest of this so I&apos;ll land it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093222</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-08 10:19:29 -0700</bug_when>
    <thetext>Committed r183996: &lt;http://trac.webkit.org/changeset/183996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093251</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-08 11:48:20 -0700</bug_when>
    <thetext>There are two new text-related failures on Windows after this commit: https://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r183996%20(51695)/results.html

I&apos;m going to watch it a little longer before rolling out, it&apos;s not clear enough how this caused the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093253</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-08 11:56:22 -0700</bug_when>
    <thetext>Oh, this change broke all tests on ASan, that may explain it. Rolling out.

==272==ERROR: AddressSanitizer: heap-use-after-free on address 0x603000109a64 at pc 0x0001170c9e77 bp 0x7fff564a04b0 sp 0x7fff564a04a8
READ of size 1 at 0x603000109a64 thread T0
==272==WARNING: failed to fork external symbolizer (errno: 1)
    #0 0x1170c9e76 in WebCore::Latin1TextIterator::consume(int&amp;, unsigned int&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x239fe76)
    #1 0x114e6ea72 in unsigned int WebCore::WidthIterator::advanceInternal&lt;WebCore::Latin1TextIterator&gt;(WebCore::Latin1TextIterator&amp;, WebCore::GlyphBuffer*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x144a72)
    #2 0x114d3b80b in WebCore::WidthIterator::advance(int, WebCore::GlyphBuffer*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1180b)
    #3 0x1159489ec in WebCore::FontCascade::floatWidthForSimpleText(WebCore::TextRun const&amp;, WTF::HashSet&lt;WebCore::Font const*, WTF::PtrHash&lt;WebCore::Font const*&gt;, WTF::HashTraits&lt;WebCore::Font const*&gt; &gt;*, WebCore::GlyphOverflow*) const (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0xc1e9ec)
    #4 0x1159487c1 in WebCore::FontCascade::width(WebCore::TextRun const&amp;, WTF::HashSet&lt;WebCore::Font const*, WTF::PtrHash&lt;WebCore::Font const*&gt;, WTF::HashTraits&lt;WebCore::Font const*&gt; &gt;*, WebCore::GlyphOverflow*) const (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0xc1e7c1)
    #5 0x116bb7fb9 in float WebCore::SimpleLineLayout::TextFragmentIterator::runWidth&lt;unsigned char&gt;(WebCore::SimpleLineLayout::FlowContents::Segment const&amp;, unsigned int, unsigned int, float) const (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1e8dfb9)
    #6 0x116bb7646 in WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition(WebCore::SimpleLineLayout::TextFragmentIterator::PositionType, unsigned int, float&amp;, float, bool&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1e8d646)
    #7 0x116bb6ef9 in WebCore::SimpleLineLayout::TextFragmentIterator::findNextTextFragment(float) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1e8cef9)
    #8 0x116bb6aef in WebCore::SimpleLineLayout::TextFragmentIterator::nextTextFragment(float) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1e8caef)
    #9 0x116c7245a in WebCore::SimpleLineLayout::firstFragment(WebCore::SimpleLineLayout::TextFragmentIterator&amp;, WebCore::SimpleLineLayout::LineState&amp;, WebCore::SimpleLineLayout::LineState const&amp;, WTF::Vector&lt;WebCore::SimpleLineLayout::Run, 10ul, WTF::CrashOnOverflow, 16ul&gt;&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1f4845a)
    #10 0x116c71ca2 in WebCore::SimpleLineLayout::createLineRuns(WebCore::SimpleLineLayout::LineState&amp;, WebCore::SimpleLineLayout::LineState const&amp;, WTF::Vector&lt;WebCore::SimpleLineLayout::Run, 10ul, WTF::CrashOnOverflow, 16ul&gt;&amp;, WebCore::SimpleLineLayout::TextFragmentIterator&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1f47ca2)
    #11 0x116c71425 in WebCore::SimpleLineLayout::createTextRuns(WTF::Vector&lt;WebCore::SimpleLineLayout::Run, 10ul, WTF::CrashOnOverflow, 16ul&gt;&amp;, WebCore::RenderBlockFlow&amp;, unsigned int&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1f47425)
    #12 0x116c70f70 in WebCore::SimpleLineLayout::create(WebCore::RenderBlockFlow&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1f46f70)
    #13 0x116825114 in WebCore::RenderBlockFlow::layoutSimpleLines(bool, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1afb114)
    #14 0x11681f702 in WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af5702)
    #15 0x114dc5ae2 in WebCore::RenderBlock::layout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x9bae2)
    #16 0x116823ef3 in WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&amp;, WebCore::RenderBlockFlow::MarginInfo&amp;, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af9ef3)
    #17 0x116821192 in WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af7192)
    #18 0x11681f716 in WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af5716)
    #19 0x114dc5ae2 in WebCore::RenderBlock::layout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x9bae2)
    #20 0x116823ef3 in WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&amp;, WebCore::RenderBlockFlow::MarginInfo&amp;, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af9ef3)
    #21 0x116821192 in WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af7192)
    #22 0x11681f716 in WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af5716)
    #23 0x114dc5ae2 in WebCore::RenderBlock::layout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x9bae2)
    #24 0x116823ef3 in WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&amp;, WebCore::RenderBlockFlow::MarginInfo&amp;, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af9ef3)
    #25 0x116821192 in WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af7192)
    #26 0x11681f716 in WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af5716)
    #27 0x114dc5ae2 in WebCore::RenderBlock::layout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x9bae2)
    #28 0x116823ef3 in WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&amp;, WebCore::RenderBlockFlow::MarginInfo&amp;, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af9ef3)
    #29 0x116821192 in WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af7192)
    #30 0x11681f716 in WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af5716)
    #31 0x114dc5ae2 in WebCore::RenderBlock::layout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x9bae2)
    #32 0x116823ef3 in WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&amp;, WebCore::RenderBlockFlow::MarginInfo&amp;, WebCore::LayoutUnit&amp;, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af9ef3)
    #33 0x116821192 in WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af7192)
    #34 0x11681f716 in WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1af5716)
    #35 0x114dc5ae2 in WebCore::RenderBlock::layout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x9bae2)
    #36 0x116acfc1d in WebCore::RenderView::layoutContent(WebCore::LayoutState const&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1da5c1d)
    #37 0x114dc557c in WebCore::RenderView::layout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x9b57c)
    #38 0x114db9ccb in WebCore::FrameView::layout(bool) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x8fccb)
    #39 0x114ea37e7 in WebCore::Document::updateLayout() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1797e7)
    #40 0x115680121 in WebCore::Document::updateLayoutIgnorePendingStylesheets(WebCore::Document::RunPostLayoutTasks) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x956121)
    #41 0x1150c5f62 in WebCore::Element::focus(bool, WebCore::FocusDirection) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x39bf62)
    #42 0x115124807 in WebCore::jsElementPrototypeFunctionFocus(JSC::ExecState*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x3fa807)
    #43 0x5b6cb5c01027  (&lt;unknown module&gt;)
    #44 0x11418f2d4 in llint_entry (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/JavaScriptCore.framework/Versions/A/JavaScriptCore+0xa802d4)
    #45 0x1141897e5 in vmEntryToJavaScript (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/JavaScriptCore.framework/Versions/A/JavaScriptCore+0xa7a7e5)
    #46 0x113fad48f in JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/JavaScriptCore.framework/Versions/A/JavaScriptCore+0x89e48f)
    #47 0x113742521 in JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/JavaScriptCore.framework/Versions/A/JavaScriptCore+0x33521)
    #48 0x11373da20 in JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/JavaScriptCore.framework/Versions/A/JavaScriptCore+0x2ea20)
    #49 0x1161a698d in WebCore::JSMainThreadExecState::evaluate(JSC::ExecState*, JSC::SourceCode const&amp;, JSC::JSValue, JSC::JSValue*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x147c98d)
    #50 0x116b4b932 in WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&amp;, WebCore::DOMWrapperWorld&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1e21932)
    #51 0x114e3c9f8 in WebCore::ScriptController::evaluate(WebCore::ScriptSourceCode const&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1129f8)
    #52 0x114e3c8dd in WebCore::ScriptElement::executeScript(WebCore::ScriptSourceCode const&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1128dd)
    #53 0x114e3b93d in WebCore::ScriptElement::prepareScript(WTF::TextPosition const&amp;, WebCore::ScriptElement::LegacyTypeSupport) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x11193d)
    #54 0x114e3a5b4 in WebCore::HTMLScriptRunner::runScript(WebCore::Element*, WTF::TextPosition const&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1105b4)
    #55 0x114e3a2c5 in WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr&lt;WebCore::Element&gt;, WTF::TextPosition const&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x1102c5)
    #56 0x114e39d5d in WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x10fd5d)
    #57 0x114d81c53 in WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode, WebCore::PumpSession&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x57c53)
    #58 0x114d80628 in WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x56628)
    #59 0x114eadf7d in WebCore::HTMLDocumentParser::resumeParsingAfterScriptExecution() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x183f7d)
    #60 0x114f71cc1 in WebCore::HTMLDocumentParser::notifyFinished(WebCore::CachedResource*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x247cc1)
    #61 0x114e57c67 in WebCore::CachedResource::checkNotify() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x12dc67)
    #62 0x114e57a28 in WebCore::SubresourceLoader::didFinishLoading(double) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebCore.framework/Versions/A/WebCore+0x12da28)
    #63 0x1125ba235 in void IPC::handleMessage&lt;Messages::WebResourceLoader::DidFinishResourceLoad, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(double)&gt;(IPC::MessageDecoder&amp;, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(double)) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebKit.framework/WebKit+0x8ca235)
    #64 0x1125b94aa in WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebKit.framework/WebKit+0x8c94aa)
    #65 0x112033cca in WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&amp;, IPC::MessageDecoder&amp;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebKit.framework/WebKit+0x343cca)
    #66 0x111eb6706 in IPC::Connection::dispatchMessage(std::__1::unique_ptr&lt;IPC::MessageDecoder, std::__1::default_delete&lt;IPC::MessageDecoder&gt; &gt;) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebKit.framework/WebKit+0x1c6706)
    #67 0x111ebca8c in IPC::Connection::dispatchOneMessage() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/WebKit.framework/WebKit+0x1cca8c)
    #68 0x1143b91f7 in WTF::RunLoop::performWork() (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/JavaScriptCore.framework/Versions/A/JavaScriptCore+0xcaa1f7)
    #69 0x1143ba02e in WTF::RunLoop::performWork(void*) (/Volumes/Data/slave/yosemite-asan-production-wk2-tests/build/buildToTest/JavaScriptCore.framework/Versions/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093255</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 11:58:24 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 144806</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093404</commentid>
    <comment_count>10</comment_count>
      <attachid>252663</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-08 23:19:57 -0700</bug_when>
    <thetext>Comment on attachment 252663
Patch for landing

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

&gt; Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp:200
&gt; +    TextRun run(StringView(segment.text.substring(segmentFrom, segmentTo - segmentFrom)));

Well, this is embarrassing. segment.text is a string, and String::substring() returns a string, which, in this context, is a temporary. StringView is non-owning, so it immediately points into the temporary, which gets deleted as soon as this line concludes. Then, we use the StringView below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093405</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-08 23:34:27 -0700</bug_when>
    <thetext>Committed r184037: &lt;http://trac.webkit.org/changeset/184037&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093456</commentid>
    <comment_count>12</comment_count>
      <attachid>252663</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-09 16:15:48 -0700</bug_when>
    <thetext>Comment on attachment 252663
Patch for landing

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

&gt;&gt; Source/WebCore/rendering/SimpleLineLayoutTextFragmentIterator.cpp:200
&gt;&gt; +    TextRun run(StringView(segment.text.substring(segmentFrom, segmentTo - segmentFrom)));
&gt; 
&gt; Well, this is embarrassing. segment.text is a string, and String::substring() returns a string, which, in this context, is a temporary. StringView is non-owning, so it immediately points into the temporary, which gets deleted as soon as this line concludes. Then, we use the StringView below.

This is not what we want. This allocates memory and we don’t want to do that; copying the substring into a new StringImpl hurts performance in a way that should be measurable. Here’s what we want to stay efficient:

    TextRun run(StringView(segment.text).substring(segmentFrom, segmentTo - segmentFrom));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093984</commentid>
    <comment_count>13</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-05-11 18:09:56 -0700</bug_when>
    <thetext>Committed r184138: &lt;http://trac.webkit.org/changeset/184138&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252607</attachid>
            <date>2015-05-07 12:18:36 -0700</date>
            <delta_ts>2015-05-07 12:26:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144752-20150507121719.patch</filename>
            <type>text/plain</type>
            <size>11491</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQzYmMzMjc0OWM0Yzc3
YmQ1ZWNkNmNmMjNjNjY0MDAzNmVhZjc3ZC4uNjg1YTIwNzNlZDhkNWYwYzEzNTc0NzM5YWFkYmJj
ZWE2N2M1YzQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA1LTA3ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGNv
bnZlbmllbmNlIGNvbnN0cnVjdG9ycyBmb3IgVGV4dFJ1bgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzUyCisKKyAgICAgICAgVGhlc2UgY29udmVu
aWVuY2UgY29uc3RydWN0b3JzIGFyZSB1bm5lY2Vzc2FyeS4gTW92aW5nIHRoZSBjb2RlIHRoYXQg
bWFrZXMgdGhlIFN0cmluZ1ZpZXcKKyAgICAgICAgYmFjayB0byB0aGUgY2FsbCBzaXRlIHdpbGwg
YWxzbyBoZWxwIHVzIG1ha2UgdGhpbmdzIG1vcmUgZWxlZ2FudCBpbiBmdXR1cmUgcmVmYWN0b3Jp
bmcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8g
bmV3IHRlc3RzIGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnN0cmluZ1dpZHRoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0UnVuKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvRHJhZ0ltYWdlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6d2lkdGhXaXRoRm9udCk6
CisgICAgICAgIChXZWJDb3JlOjpkcmF3QXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1Np
bXBsZUxpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6
Y2FuVXNlRm9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dFRleHRGcmFn
bWVudEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OlRl
eHRGcmFnbWVudEl0ZXJhdG9yOjpTdHlsZTo6U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2lt
cGxlTGluZUxheW91dDo6VGV4dEZyYWdtZW50SXRlcmF0b3I6OnJ1bldpZHRoKToKKyAgICAgICAg
KiByZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFBhaW50
ZXI6OnBhaW50VGV4dCk6CisKIDIwMTUtMDUtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxl
LmNvbT4KIAogICAgICAgICBUcmllZCB0byBmaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmlu
ZGV4IGYyMjJmOGZmNWQ2N2M0YjVhNDQ2OWY4NzIzMzU4ODg3M2NiYmFiOTEuLjM5ODA0MTMzNDJk
Y2FiZTRkNjVhZjdhNTg3ZDM2ZmQ3YWM0MTRkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxNS0wNS0wNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlbW92ZSBjb252ZW5pZW5jZSBjb25zdHJ1Y3RvcnMgZm9yIFRleHRS
dW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDc1
MgorCisgICAgICAgIFRoZXNlIGNvbnZlbmllbmNlIGNvbnN0cnVjdG9ycyBhcmUgdW5uZWNlc3Nh
cnkuIE1vdmluZyB0aGUgY29kZSB0aGF0IG1ha2VzIHRoZSBTdHJpbmdWaWV3CisgICAgICAgIGJh
Y2sgdG8gdGhlIGNhbGwgc2l0ZSB3aWxsIGFsc28gaGVscCB1cyBtYWtlIHRoaW5ncyBtb3JlIGVs
ZWdhbnQgaW4gZnV0dXJlIHJlZmFjdG9yaW5nLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJl
aGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW06
CisgICAgICAgICgtW05TU3RyaW5nIF93ZWJfZHJhd0F0UG9pbnQ6Zm9udDp0ZXh0Q29sb3I6YWxs
b3dpbmdGb250U21vb3RoaW5nOl0pOgorICAgICAgICAoLVtOU1N0cmluZyBfd2ViX3dpZHRoV2l0
aEZvbnQ6XSk6CisKIDIwMTUtMDUtMDcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4K
IAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTkzMTcxNDA+IFtYY29kZV0gUmVtb3ZlIHVzYWdl
IG9mIEFzcGVuRmFtaWx5LnhjY29uZmlnIGluIFNvdXJjZS8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IDY2YWZiZWEz
ZDFkYjY0MTUzNjJiZDE1ZjE2MWMzNTNiYzM2OTg1ZDYuLjU4MGJlMDk3NTM2NDk0MDZkM2ViMTIz
Y2FjYjcxMmIzZjQ0MTYwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyB1
bnNpZ25lZCBsZWZ0VHJ1bmNhdGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpCiAKIHN0YXRpYyBmbG9hdCBzdHJpbmdXaWR0aChjb25zdCBGb250Q2Fz
Y2FkZSYgcmVuZGVyZXIsIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IGJvb2wgZGlzYWJsZVJvdW5kaW5nSGFja3MpCiB7Ci0gICAgVGV4dFJ1biBydW4oY2hhcmFjdGVy
cywgbGVuZ3RoKTsKKyAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KGNoYXJhY3RlcnMsIGxlbmd0
aCkpOwogICAgIGlmIChkaXNhYmxlUm91bmRpbmdIYWNrcykKICAgICAgICAgcnVuLmRpc2FibGVS
b3VuZGluZ0hhY2tzKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVyLndpZHRoKHJ1bik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKaW5kZXggMjcxMjFlOTBjYmNkYTFk
YzhkNDY4NDJhNDNlYjIxYTFjY2NlY2IxNC4uODY5ZTY2NTdhMTBkZDcwYjUyODEyMzVhNzZjNjMy
YzdmZDQ4ODNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGV4dFJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4u
aApAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIHVuc2lnbmVkIFJvdW5k
aW5nSGFja3M7CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcgcywgZmxvYXQgeHBv
cyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJl
aGF2aW9yID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24s
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUg
PSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hh
Y2tzIHJvdW5kaW5nSGFja3MgPSBSdW5Sb3VuZGluZyB8IFdvcmRSb3VuZGluZykKLSAgICAgICAg
OiBtX3RleHQocykKLSAgICAgICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgocy5sZW5ndGgoKSkKKyAg
ICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgZmxvYXQgeHBvcyA9IDAs
IGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9y
ID0gQWxsb3dUcmFpbGluZ0V4cGFuc2lvbiB8IEZvcmJpZExlYWRpbmdFeHBhbnNpb24sIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxz
ZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlLCBSb3VuZGluZ0hhY2tzIHJv
dW5kaW5nSGFja3MgPSBSdW5Sb3VuZGluZyB8IFdvcmRSb3VuZGluZykKKyAgICAgICAgOiBtX3Rl
eHQoc3RyaW5nVmlldykKKyAgICAgICAgLCBtX2NoYXJhY3RlcnNMZW5ndGgoc3RyaW5nVmlldy5s
ZW5ndGgoKSkKICAgICAgICAgLCBtX3RhYlNpemUoMCkKICAgICAgICAgLCBtX3hwb3MoeHBvcykK
ICAgICAgICAgLCBtX2hvcml6b250YWxHbHlwaFN0cmV0Y2goMSkKQEAgLTcwLDIxICs3MCw2IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJp
bmcmIHMpCi0gICAgICAgIDogVGV4dFJ1bihTdHJpbmdWaWV3KHMpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBUZXh0UnVuKGNvbnN0IExDaGFyKiBjLCB1bnNpZ25lZCBsZW4pCi0gICAgICAgIDogVGV4
dFJ1bihTdHJpbmdWaWV3KGMsIGxlbikpCi0gICAgewotICAgIH0KLQotICAgIFRleHRSdW4oY29u
c3QgVUNoYXIqIGMsIHVuc2lnbmVkIGxlbikKLSAgICAgICAgOiBUZXh0UnVuKFN0cmluZ1ZpZXco
YywgbGVuKSkKLSAgICB7Ci0gICAgfQotCiAgICAgVGV4dFJ1biBzdWJSdW4odW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHN0YXJ0T2Zmc2V0IDwgbV90ZXh0Lmxlbmd0aCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCmluZGV4IDM1M2Vm
OGQyMzg1NGQ5YTZmNTExNDM3NDQ0NjViY2FiMmJmZTRiOTMuLjY2YjFlYjg2NzYzY2M5MGYxN2E0
NTIwZmNiZjUwYjczNjVmYzBjZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9EcmFnSW1hZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdJbWFnZU1hYy5tbQpAQCAtMTkyLDcgKzE5Miw3IEBAIHN0YXRpYyBmbG9hdCB3aWR0aFdpdGhG
b250KE5TU3RyaW5nICpzdHJpbmcsIE5TRm9udCAqZm9udCkKICAgICAKICAgICBpZiAoY2FuVXNl
RmFzdFJlbmRlcmVyKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCkpIHsKICAgICAgICAgRm9udENhc2Nh
ZGUgd2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0YShyZWludGVycHJldF9jYXN0PENURm9udFJl
Zj4oZm9udCksIFtmb250IHBvaW50U2l6ZV0pKTsKLSAgICAgICAgVGV4dFJ1biBydW4oYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoKTsKKyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhidWZmZXIu
ZGF0YSgpLCBsZW5ndGgpKTsKICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAg
ICAgICAgIHJldHVybiB3ZWJDb3JlRm9udC53aWR0aChydW4pOwogICAgIH0KQEAgLTIyNCw3ICsy
MjQsNyBAQCBzdGF0aWMgdm9pZCBkcmF3QXRQb2ludChOU1N0cmluZyAqc3RyaW5nLCBOU1BvaW50
IHBvaW50LCBOU0ZvbnQgKmZvbnQsIE5TQ29sb3IgKgogICAgICAgICAgICAgQ0dDb250ZXh0U2Nh
bGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7CiAgICAgICAgICAgICAKICAgICAgICAgRm9udENhc2Nh
ZGUgd2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0YShyZWludGVycHJldF9jYXN0PENURm9udFJl
Zj4oZm9udCksIFtmb250IHBvaW50U2l6ZV0pLCBBbnRpYWxpYXNlZCk7Ci0gICAgICAgIFRleHRS
dW4gcnVuKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmlu
Z1ZpZXcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRp
bmdIYWNrcygpOwogCiAgICAgICAgIENHRmxvYXQgcmVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCmluZGV4IDVlMmVkMzA0MWRkNDczZDRkYzQ5MWIy
NzkxMmEwNzNlNDFkYTAxYmQuLmY1Zjk0MjUxZWJiZDc5OTE1ZmJhZDM4NjAyMDFmNTMxOWU4ZDkx
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAK
QEAgLTIwNSw3ICsyMDUsNyBAQCBib29sIGNhblVzZUZvcihjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
IGZsb3cpCiAgICAgICAgIGlmICh0ZXh0UmVuZGVyZXIuaXNDb21iaW5lVGV4dCgpIHx8IHRleHRS
ZW5kZXJlci5pc0NvdW50ZXIoKSB8fCB0ZXh0UmVuZGVyZXIuaXNRdW90ZSgpIHx8IHRleHRSZW5k
ZXJlci5pc1RleHRGcmFnbWVudCgpCiAgICAgICAgICAgICB8fCB0ZXh0UmVuZGVyZXIuaXNTVkdJ
bmxpbmVUZXh0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChzdHls
ZS5mb250Q2FzY2FkZSgpLmNvZGVQYXRoKFRleHRSdW4odGV4dFJlbmRlcmVyLnRleHQoKSkpICE9
IEZvbnRDYXNjYWRlOjpTaW1wbGUpCisgICAgICAgIGlmIChzdHlsZS5mb250Q2FzY2FkZSgpLmNv
ZGVQYXRoKFRleHRSdW4oU3RyaW5nVmlldyh0ZXh0UmVuZGVyZXIudGV4dCgpKSkpICE9IEZvbnRD
YXNjYWRlOjpTaW1wbGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICgh
Y2FuVXNlRm9yVGV4dCh0ZXh0UmVuZGVyZXIsIHByaW1hcnlGb250KSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKaW5kZXggN2FmNzg1
YmNiMTUzYzU0MWNjN2U4MzBhMzkyOTM3NWQ5ZGZmNmZkNC4uMTM4NjBlNzc5ZmYxNzY1YTZhYmY1
ZDAxNjg5ZWE5MDEzYzBhOWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxlOjpTdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLCBwcmVzZXJ2ZU5ld2xpbmUoc3R5bGUucHJlc2Vy
dmVOZXdsaW5lKCkpCiAgICAgLCB3cmFwTGluZXMoc3R5bGUuYXV0b1dyYXAoKSkKICAgICAsIGJy
ZWFrV29yZE9uT3ZlcmZsb3coc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gQnJlYWtPdmVyZmxvd1dy
YXAgJiYgKHdyYXBMaW5lcyB8fCBwcmVzZXJ2ZU5ld2xpbmUpKQotICAgICwgc3BhY2VXaWR0aChm
b250LndpZHRoKFRleHRSdW4oJnNwYWNlLCAxKSkpCisgICAgLCBzcGFjZVdpZHRoKGZvbnQud2lk
dGgoVGV4dFJ1bihTdHJpbmdWaWV3KCZzcGFjZSwgMSkpKSkKICAgICAsIHRhYldpZHRoKGNvbGxh
cHNlV2hpdGVzcGFjZSA/IDAgOiBzdHlsZS50YWJTaXplKCkpCiAgICAgLCBsb2NhbGUoc3R5bGUu
bG9jYWxlKCkpCiB7CkBAIC0xOTcsNyArMTk3LDcgQEAgZmxvYXQgVGV4dEZyYWdtZW50SXRlcmF0
b3I6OnJ1bldpZHRoKGNvbnN0IEZsb3dDb250ZW50czo6U2VnbWVudCYgc2VnbWVudCwgdW5zaWcK
ICAgICBib29sIG1lYXN1cmVXaXRoRW5kU3BhY2UgPSBtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFj
ZSAmJiBzZWdtZW50VG8gPCBzZWdtZW50LnRleHQubGVuZ3RoKCkgJiYgc2VnbWVudC50ZXh0W3Nl
Z21lbnRUb10gPT0gJyAnOwogICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNlKQogICAgICAgICAr
K3NlZ21lbnRUbzsKLSAgICBUZXh0UnVuIHJ1bihzZWdtZW50LnRleHQuY2hhcmFjdGVyczxDaGFy
YWN0ZXJUeXBlPigpICsgc2VnbWVudEZyb20sIHNlZ21lbnRUbyAtIHNlZ21lbnRGcm9tKTsKKyAg
ICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHNlZ21lbnQudGV4dC5jaGFyYWN0ZXJzPENoYXJhY3Rl
clR5cGU+KCkgKyBzZWdtZW50RnJvbSwgc2VnbWVudFRvIC0gc2VnbWVudEZyb20pKTsKICAgICBy
dW4uc2V0WFBvcyh4UG9zaXRpb24pOwogICAgIHJ1bi5zZXRUYWJTaXplKCEhbV9zdHlsZS50YWJX
aWR0aCwgbV9zdHlsZS50YWJXaWR0aCk7CiAgICAgZmxvYXQgd2lkdGggPSBtX3N0eWxlLmZvbnQu
d2lkdGgocnVuKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFp
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCmluZGV4
IDEyNzQ2ZjY0NWNmYWIyN2ViOGQ5NTkzNTViYmVjOWI2Yjk4OTZjMmMuLmU0Mjg2YzA0MTAzY2Ni
NzliNGU2ZTY2YjdiYmI1NDI2ZmMyZDY4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9UZXh0UGFpbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHRQYWludGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50
VGV4dCgpCiAgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3RleHRQYWludFN0eWxlLCBV
c2VFbXBoYXNpc01hcmtDb2xvcik7CiAKLSAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxUZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4oJm9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyLCAxKTsKKyAgICAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXh0UnVuPiBvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlclRleHRSdW4oU3RyaW5nVmlldygmb2Jq
ZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKTsKICAgICAgICAgICAgIFRleHRSdW4mIGVtcGhh
c2lzTWFya1RleHRSdW4gPSBtX2NvbWJpbmVkVGV4dCA/IG9iamVjdFJlcGxhY2VtZW50Q2hhcmFj
dGVyVGV4dFJ1bi5nZXQoKSA6IG1fdGV4dFJ1bjsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgZW1w
aGFzaXNNYXJrVGV4dE9yaWdpbiA9IG1fY29tYmluZWRUZXh0ID8gRmxvYXRQb2ludChib3hPcmln
aW4ueCgpICsgbV9ib3hSZWN0LndpZHRoKCkgLyAyLCBib3hPcmlnaW4ueSgpICsgbV9mb250LmZv
bnRNZXRyaWNzKCkuYXNjZW50KCkpIDogbV90ZXh0T3JpZ2luOwogICAgICAgICAgICAgaWYgKG1f
Y29tYmluZWRUZXh0KQpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVGV4dFBhaW50ZXI6OnBhaW50
VGV4dCgpCiAgICAgICAgIGlmICghbV9lbXBoYXNpc01hcmsuaXNFbXB0eSgpKSB7CiAgICAgICAg
ICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQobV9jb250ZXh0LCBtX3NlbGVjdGlvblBhaW50U3R5
bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9yKTsKIAotICAgICAgICAgICAgREVQUkVDQVRFRF9ERUZJ
TkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1
biwgKCZvYmplY3RSZXBsYWNlbWVudENoYXJhY3RlciwgMSkpOworICAgICAgICAgICAgREVQUkVD
QVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFRleHRSdW4sIG9iamVjdFJlcGxhY2VtZW50Q2hhcmFj
dGVyVGV4dFJ1biwgKFN0cmluZ1ZpZXcoJm9iamVjdFJlcGxhY2VtZW50Q2hhcmFjdGVyLCAxKSkp
OwogICAgICAgICAgICAgVGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1fY29tYmluZWRU
ZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuIDogbV90ZXh0UnVuOwogICAg
ICAgICAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2luID0gbV9jb21iaW5lZFRl
eHQgPyBGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBtX2JveFJlY3Qud2lkdGgoKSAvIDIsIGJv
eE9yaWdpbi55KCkgKyBtX2ZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgOiBtX3RleHRPcmln
aW47CiAgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tIGIvU291cmNlL1dlYktpdC9t
YWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQppbmRleCAzYjBkMGJiYzJlNWI3NDcxM2Jm
MzY2Njc0MWVhZDliNDA1MDliNDliLi43YmE2ZTkzM2ZjMDlmN2Q5OWI4NzY1MGJkMGFmYTA1ZGJm
MDU2NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5n
RXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRy
YXMubW0KQEAgLTkzLDcgKzkzLDcgQEAgLSAodm9pZClfd2ViX2RyYXdBdFBvaW50OihOU1BvaW50
KXBvaW50IGZvbnQ6KE5TRm9udCAqKWZvbnQgdGV4dENvbG9yOihOU0NvbG9yICoKICAgICAgICAg
ICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEpOwogCiAgICAgICAgIEZvbnRD
YXNjYWRlIHdlYkNvcmVGb250KEZvbnRQbGF0Zm9ybURhdGEocmVpbnRlcnByZXRfY2FzdDxDVEZv
bnRSZWY+KGZvbnQpLCBbZm9udCBwb2ludFNpemVdKSwgZm9udFNtb290aGluZ0lzQWxsb3dlZCA/
IEF1dG9TbW9vdGhpbmcgOiBBbnRpYWxpYXNlZCk7Ci0gICAgICAgIFRleHRSdW4gcnVuKGJ1ZmZl
ci5kYXRhKCksIGxlbmd0aCk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcoYnVmZmVy
LmRhdGEoKSwgbGVuZ3RoKSk7CiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwog
CiAgICAgICAgIENHRmxvYXQgcmVkOwpAQCAtMTM5LDcgKzEzOSw3IEBAIC0gKGZsb2F0KV93ZWJf
d2lkdGhXaXRoRm9udDooTlNGb250ICopZm9udAogCiAgICAgaWYgKGNhblVzZUZhc3RSZW5kZXJl
cihidWZmZXIuZGF0YSgpLCBsZW5ndGgpKSB7CiAgICAgICAgIEZvbnRDYXNjYWRlIHdlYkNvcmVG
b250KEZvbnRQbGF0Zm9ybURhdGEocmVpbnRlcnByZXRfY2FzdDxDVEZvbnRSZWY+KGZvbnQpLCBb
Zm9udCBwb2ludFNpemVdKSk7Ci0gICAgICAgIFRleHRSdW4gcnVuKGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCk7CisgICAgICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcoYnVmZmVyLmRhdGEoKSwgbGVu
Z3RoKSk7CiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwogICAgICAgICByZXR1
cm4gd2ViQ29yZUZvbnQud2lkdGgocnVuKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="277444"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252663</attachid>
            <date>2015-05-07 17:37:14 -0700</date>
            <delta_ts>2015-05-08 10:06:55 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-144752-20150507173556.patch</filename>
            <type>text/plain</type>
            <size>14839</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzOTQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDMxMzVhNGE0NDE1NTY2M2YxMjYwOWM2
OGY3NGQ3NDA0MzBkZThjYzIuLmNlZmY4YThhZWJlMWQ1ODQ5YmRhZTRmM2FjNWQyNmU2ZTlhNmI5
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMDUtMDcgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgY29udmVuaWVuY2UgY29uc3Ry
dWN0b3JzIGZvciBUZXh0UnVuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDQ3NTIKKworICAgICAgICBObyByZWFzb24gd2h5IFN0cmluZ1ZpZXcgc2hv
dWxkbid0IGhhdmUgYSBTdHJpbmdJbXBsKiBjb25zdHJ1Y3Rvci4KKworICAgICAgICBUZXN0OiBT
dHJpbmdWaWV3OEJpdCBpbiBUZXN0V2ViS2l0QVBJCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg6IEFkZCB0aGUgY29uc3RydWN0b3IuCisKIDIwMTUtMDUtMDcgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEFsbCBzcGVsbCBj
aGVja2luZyBsYXlvdXQgdGVzdHMgZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlhZWU2NTE1YzBkOTBlMjk3
MDhiODk3NzNlNjkxNDgwNWE1YTFmYjguLmEyNDY2ZmNkNTM3ZWQ0NThjNmEzZTY3NTc0NmFkYzlm
NDhmMmE1MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxNS0wNS0wNyAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBjb252
ZW5pZW5jZSBjb25zdHJ1Y3RvcnMgZm9yIFRleHRSdW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDc1MgorCisgICAgICAgIFRoZXNlIGNvbnZlbmll
bmNlIGNvbnN0cnVjdG9ycyBhcmUgdW5uZWNlc3NhcnkuIE1vdmluZyB0aGUgY29kZSB0aGF0IG1h
a2VzIHRoZSBTdHJpbmdWaWV3CisgICAgICAgIGJhY2sgdG8gdGhlIGNhbGwgc2l0ZSB3aWxsIGFs
c28gaGVscCB1cyBtYWtlIHRoaW5ncyBtb3JlIGVsZWdhbnQgaW4gZnV0dXJlIHJlZmFjdG9yaW5n
LgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6Zm9ybWF0TnVtYmVyRm9yQ3VzdG9tQ1NTVGV4dCk6IFJlbW92ZSBhbWJpZ3VvdXMgY2Fs
bC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3RyaW5nV2lkdGgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1RleHRSdW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OlRleHRSdW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjp3aWR0
aFdpdGhGb250KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdBdFBvaW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpjYW5Vc2VGb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5
b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGlu
ZUxheW91dDo6VGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxlOjpTdHlsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpUZXh0RnJhZ21lbnRJdGVyYXRvcjo6cnVuV2lkdGgp
OgorICAgICAgICAqIHJlbmRlcmluZy9UZXh0UGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KToKKwogMjAxNS0wNS0wNiAgRGVhbiBKYWNrc29uICA8
ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgSGFuZGxlIGJhY2tkcm9wIHZpZXdzIHRoYXQgaGF2
ZSB0byB0aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOWI0MjJiM2UwNTVkMzg5MWJhNTk4MDE1Y2Vl
NjdhYjQ2NmIzM2RkYi4uZWY3MDUxZjNkZTYwMmEyM2IxY2NjYzA5OTIzN2Q5MDRkNzZmOGRjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE1LTA1LTA3ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIGNvbnZlbmll
bmNlIGNvbnN0cnVjdG9ycyBmb3IgVGV4dFJ1bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NzUyCisKKyAgICAgICAgVGhlc2UgY29udmVuaWVuY2Ug
Y29uc3RydWN0b3JzIGFyZSB1bm5lY2Vzc2FyeS4gTW92aW5nIHRoZSBjb2RlIHRoYXQgbWFrZXMg
dGhlIFN0cmluZ1ZpZXcKKyAgICAgICAgYmFjayB0byB0aGUgY2FsbCBzaXRlIHdpbGwgYWxzbyBo
ZWxwIHVzIG1ha2UgdGhpbmdzIG1vcmUgZWxlZ2FudCBpbiBmdXR1cmUgcmVmYWN0b3JpbmcuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2UgdGhlcmUgaXMgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTWlzYy9X
ZWJLaXROU1N0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQ
b2ludDpmb250OnRleHRDb2xvcjphbGxvd2luZ0ZvbnRTbW9vdGhpbmc6XSk6CisgICAgICAgICgt
W05TU3RyaW5nIF93ZWJfd2lkdGhXaXRoRm9udDpdKToKKwogMjAxNS0wNS0wNSAgTXlsZXMgQy4g
TWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmVydCAiSW50cm9k
dWNpbmcgdGhlIFBsYXRmb3JtIEFic3RyYWN0aW9uIExheWVyIChQQUwpIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaAppbmRleCBkOWNlNzRjOGFhMjEyNGJkNjIxODNhYTk2Njg3MDBjOTk4NmVhNzQw
Li4yMTZkMmY1YzQ4OTAzMzk1MjhkMDA3ZDM2YzE1OTg1ZDVkYTcyNjBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmdWaWV3
KGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCYpOworICAg
IFN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1wbCopOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgTENo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFN0cmluZ1ZpZXcoY29uc3QgVUNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogCkBAIC0yNzEsNiArMjcyLDE4IEBAIGlubGluZSBTdHJpbmdWaWV3OjpT
dHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwmIHN0cmluZykKICAgICAgICAgaW5pdGlhbGl6ZShz
dHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7CiB9CiAKK2lubGluZSBTdHJp
bmdWaWV3OjpTdHJpbmdWaWV3KGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZykKK3sKKyAgICBpZiAo
IXN0cmluZykKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0VW5kZXJseWluZ1N0cmluZyhzdHJp
bmcpOworICAgIGlmIChzdHJpbmctPmlzOEJpdCgpKQorICAgICAgICBpbml0aWFsaXplKHN0cmlu
Zy0+Y2hhcmFjdGVyczgoKSwgc3RyaW5nLT5sZW5ndGgoKSk7CisgICAgZWxzZQorICAgICAgICBp
bml0aWFsaXplKHN0cmluZy0+Y2hhcmFjdGVyczE2KCksIHN0cmluZy0+bGVuZ3RoKCkpOworfQor
CiBpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
ICAgICBzZXRVbmRlcmx5aW5nU3RyaW5nKHN0cmluZy5pbXBsKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggZDg4OTUwNDAzN2Y0NGIzZWY1NjI1Yzc5ZjU2
NWI2MTlhMTczMGMxMS4uNzE3OThlZThkNmI1M2NkMDJkMTUwNTkzNTY5OGEyNWU4YTFiMTMxMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0xMDUxLDcgKzEw
NTEsNyBAQCBBTFdBWVNfSU5MSU5FIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVt
YmVyRm9yQ3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OwogICAgICAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDYgKyBtX3ZhbHVlLnN0cmluZy0+bGVu
Z3RoKCkpOwogICAgICAgICByZXN1bHQuYXBwZW5kTGl0ZXJhbCgiYXR0cigiKTsKLSAgICAgICAg
cmVzdWx0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3Ry
aW5nKG1fdmFsdWUuc3RyaW5nKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKIAogICAg
ICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCA2NmFmYmVhM2QxZGI2
NDE1MzYyYmQxNWYxNjFjMzUzYmMzNjk4NWQ2Li41ODBiZTA5NzUzNjQ5NDA2ZDNlYjEyM2NhY2I3
MTJiM2Y0NDE2MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9TdHJpbmdUcnVuY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1N0cmluZ1RydW5jYXRvci5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgdW5zaWdu
ZWQgbGVmdFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaQogCiBzdGF0aWMgZmxvYXQgc3RyaW5nV2lkdGgoY29uc3QgRm9udENhc2NhZGUm
IHJlbmRlcmVyLCBjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29s
IGRpc2FibGVSb3VuZGluZ0hhY2tzKQogewotICAgIFRleHRSdW4gcnVuKGNoYXJhY3RlcnMsIGxl
bmd0aCk7CisgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBsZW5ndGgpKTsK
ICAgICBpZiAoZGlzYWJsZVJvdW5kaW5nSGFja3MpCiAgICAgICAgIHJ1bi5kaXNhYmxlUm91bmRp
bmdIYWNrcygpOwogICAgIHJldHVybiByZW5kZXJlci53aWR0aChydW4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCmluZGV4IDI3MTIxZTkwY2JjZGExZGM4ZDQ2
ODQyYTQzZWIyMWExY2NjZWNiMTQuLjFmMWVmMWY2NjczNTljZTlhMWY2OGUxMzMxYjg2YmMzMDYw
Y2ViODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRS
dW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgKQEAg
LTUyLDkgKzUyLDkgQEAgcHVibGljOgogCiAgICAgdHlwZWRlZiB1bnNpZ25lZCBSb3VuZGluZ0hh
Y2tzOwogCi0gICAgZXhwbGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHMsIGZsb2F0IHhwb3MgPSAw
LCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlv
ciA9IEFsbG93VHJhaWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFs
c2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyBy
b3VuZGluZ0hhY2tzID0gUnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCi0gICAgICAgIDogbV90
ZXh0KHMpCi0gICAgICAgICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKHMubGVuZ3RoKCkpCisgICAgZXhw
bGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHRleHQsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBh
bnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IEFsbG93VHJh
aWxpbmdFeHBhbnNpb24gfCBGb3JiaWRMZWFkaW5nRXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hh
cmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSwgUm91bmRpbmdIYWNrcyByb3VuZGluZ0hhY2tz
ID0gUnVuUm91bmRpbmcgfCBXb3JkUm91bmRpbmcpCisgICAgICAgIDogbV90ZXh0KHRleHQpCisg
ICAgICAgICwgbV9jaGFyYWN0ZXJzTGVuZ3RoKHRleHQubGVuZ3RoKCkpCiAgICAgICAgICwgbV90
YWJTaXplKDApCiAgICAgICAgICwgbV94cG9zKHhwb3MpCiAgICAgICAgICwgbV9ob3Jpem9udGFs
R2x5cGhTdHJldGNoKDEpCkBAIC03MCwyMSArNzAsNiBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIGV4cGxpY2l0IFRleHRSdW4oY29uc3QgU3RyaW5nJiBzKQotICAgICAgICA6IFRleHRS
dW4oU3RyaW5nVmlldyhzKSkKLSAgICB7Ci0gICAgfQotCi0gICAgVGV4dFJ1bihjb25zdCBMQ2hh
ciogYywgdW5zaWduZWQgbGVuKQotICAgICAgICA6IFRleHRSdW4oU3RyaW5nVmlldyhjLCBsZW4p
KQotICAgIHsKLSAgICB9Ci0KLSAgICBUZXh0UnVuKGNvbnN0IFVDaGFyKiBjLCB1bnNpZ25lZCBs
ZW4pCi0gICAgICAgIDogVGV4dFJ1bihTdHJpbmdWaWV3KGMsIGxlbikpCi0gICAgewotICAgIH0K
LQogICAgIFRleHRSdW4gc3ViUnVuKHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBsZW5n
dGgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihzdGFydE9mZnNldCA8IG1fdGV4dC5sZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL0RyYWdJbWFnZU1hYy5tbQppbmRleCAzNTNlZjhkMjM4NTRkOWE2ZjUxMTQzNzQ0NDY1
YmNhYjJiZmU0YjkzLi42NmIxZWI4Njc2M2NjOTBmMTdhNDUyMGZjYmY1MGI3MzY1ZmMwY2Y5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0ltYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnSW1hZ2VNYWMubW0KQEAgLTE5Miw3
ICsxOTIsNyBAQCBzdGF0aWMgZmxvYXQgd2lkdGhXaXRoRm9udChOU1N0cmluZyAqc3RyaW5nLCBO
U0ZvbnQgKmZvbnQpCiAgICAgCiAgICAgaWYgKGNhblVzZUZhc3RSZW5kZXJlcihidWZmZXIuZGF0
YSgpLCBsZW5ndGgpKSB7CiAgICAgICAgIEZvbnRDYXNjYWRlIHdlYkNvcmVGb250KEZvbnRQbGF0
Zm9ybURhdGEocmVpbnRlcnByZXRfY2FzdDxDVEZvbnRSZWY+KGZvbnQpLCBbZm9udCBwb2ludFNp
emVdKSk7Ci0gICAgICAgIFRleHRSdW4gcnVuKGJ1ZmZlci5kYXRhKCksIGxlbmd0aCk7CisgICAg
ICAgIFRleHRSdW4gcnVuKFN0cmluZ1ZpZXcoYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKSk7CiAgICAg
ICAgIHJ1bi5kaXNhYmxlUm91bmRpbmdIYWNrcygpOwogICAgICAgICByZXR1cm4gd2ViQ29yZUZv
bnQud2lkdGgocnVuKTsKICAgICB9CkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgZHJh
d0F0UG9pbnQoTlNTdHJpbmcgKnN0cmluZywgTlNQb2ludCBwb2ludCwgTlNGb250ICpmb250LCBO
U0NvbG9yICoKICAgICAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4dCwgMSwgLTEp
OwogICAgICAgICAgICAgCiAgICAgICAgIEZvbnRDYXNjYWRlIHdlYkNvcmVGb250KEZvbnRQbGF0
Zm9ybURhdGEocmVpbnRlcnByZXRfY2FzdDxDVEZvbnRSZWY+KGZvbnQpLCBbZm9udCBwb2ludFNp
emVdKSwgQW50aWFsaWFzZWQpOwotICAgICAgICBUZXh0UnVuIHJ1bihidWZmZXIuZGF0YSgpLCBs
ZW5ndGgpOworICAgICAgICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkpOwogICAgICAgICBydW4uZGlzYWJsZVJvdW5kaW5nSGFja3MoKTsKIAogICAgICAgICBD
R0Zsb2F0IHJlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVM
aW5lTGF5b3V0VGV4dEZyYWdtZW50SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKaW5kZXggN2FmNzg1
YmNiMTUzYzU0MWNjN2U4MzBhMzkyOTM3NWQ5ZGZmNmZkNC4uZDAxZTg5ZDM1NzkzMmNiMDQ1ZDVk
Y2E3OTUzNGZiMzI0NjMyNjFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRUZXh0RnJhZ21lbnRJdGVyYXRvci5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgVGV4dEZyYWdtZW50SXRlcmF0b3I6OlN0eWxlOjpTdHlsZShjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgLCBwcmVzZXJ2ZU5ld2xpbmUoc3R5bGUucHJlc2Vy
dmVOZXdsaW5lKCkpCiAgICAgLCB3cmFwTGluZXMoc3R5bGUuYXV0b1dyYXAoKSkKICAgICAsIGJy
ZWFrV29yZE9uT3ZlcmZsb3coc3R5bGUub3ZlcmZsb3dXcmFwKCkgPT0gQnJlYWtPdmVyZmxvd1dy
YXAgJiYgKHdyYXBMaW5lcyB8fCBwcmVzZXJ2ZU5ld2xpbmUpKQotICAgICwgc3BhY2VXaWR0aChm
b250LndpZHRoKFRleHRSdW4oJnNwYWNlLCAxKSkpCisgICAgLCBzcGFjZVdpZHRoKGZvbnQud2lk
dGgoVGV4dFJ1bihTdHJpbmdWaWV3KCZzcGFjZSwgMSkpKSkKICAgICAsIHRhYldpZHRoKGNvbGxh
cHNlV2hpdGVzcGFjZSA/IDAgOiBzdHlsZS50YWJTaXplKCkpCiAgICAgLCBsb2NhbGUoc3R5bGUu
bG9jYWxlKCkpCiB7CkBAIC0xOTcsNyArMTk3LDcgQEAgZmxvYXQgVGV4dEZyYWdtZW50SXRlcmF0
b3I6OnJ1bldpZHRoKGNvbnN0IEZsb3dDb250ZW50czo6U2VnbWVudCYgc2VnbWVudCwgdW5zaWcK
ICAgICBib29sIG1lYXN1cmVXaXRoRW5kU3BhY2UgPSBtX3N0eWxlLmNvbGxhcHNlV2hpdGVzcGFj
ZSAmJiBzZWdtZW50VG8gPCBzZWdtZW50LnRleHQubGVuZ3RoKCkgJiYgc2VnbWVudC50ZXh0W3Nl
Z21lbnRUb10gPT0gJyAnOwogICAgIGlmIChtZWFzdXJlV2l0aEVuZFNwYWNlKQogICAgICAgICAr
K3NlZ21lbnRUbzsKLSAgICBUZXh0UnVuIHJ1bihzZWdtZW50LnRleHQuY2hhcmFjdGVyczxDaGFy
YWN0ZXJUeXBlPigpICsgc2VnbWVudEZyb20sIHNlZ21lbnRUbyAtIHNlZ21lbnRGcm9tKTsKKyAg
ICBUZXh0UnVuIHJ1bihTdHJpbmdWaWV3KHNlZ21lbnQudGV4dC5zdWJzdHJpbmcoc2VnbWVudEZy
b20sIHNlZ21lbnRUbyAtIHNlZ21lbnRGcm9tKSkpOwogICAgIHJ1bi5zZXRYUG9zKHhQb3NpdGlv
bik7CiAgICAgcnVuLnNldFRhYlNpemUoISFtX3N0eWxlLnRhYldpZHRoLCBtX3N0eWxlLnRhYldp
ZHRoKTsKICAgICBmbG9hdCB3aWR0aCA9IG1fc3R5bGUuZm9udC53aWR0aChydW4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0UGFpbnRlci5jcHAKaW5kZXggMTI3NDZmNjQ1Y2ZhYjI3ZWI4
ZDk1OTM1NWJiZWM5YjZiOTg5NmMyYy4uZTQyODZjMDQxMDNjY2I3OWI0ZTZlNjZiN2JiYjU0MjZm
YzJkNjg3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRQYWludGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dFBhaW50ZXIuY3BwCkBAIC0x
NzAsNyArMTcwLDcgQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KCkKICAgICAgICAgaWYg
KCFtX2VtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHVwZGF0ZUdyYXBoaWNz
Q29udGV4dChtX2NvbnRleHQsIG1fdGV4dFBhaW50U3R5bGUsIFVzZUVtcGhhc2lzTWFya0NvbG9y
KTsKIAotICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRleHRSdW4+IG9iamVjdFJl
cGxhY2VtZW50Q2hhcmFjdGVyVGV4dFJ1bigmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEp
OworICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRleHRSdW4+IG9iamVjdFJlcGxh
Y2VtZW50Q2hhcmFjdGVyVGV4dFJ1bihTdHJpbmdWaWV3KCZvYmplY3RSZXBsYWNlbWVudENoYXJh
Y3RlciwgMSkpOwogICAgICAgICAgICAgVGV4dFJ1biYgZW1waGFzaXNNYXJrVGV4dFJ1biA9IG1f
Y29tYmluZWRUZXh0ID8gb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLmdldCgpIDog
bV90ZXh0UnVuOwogICAgICAgICAgICAgRmxvYXRQb2ludCBlbXBoYXNpc01hcmtUZXh0T3JpZ2lu
ID0gbV9jb21iaW5lZFRleHQgPyBGbG9hdFBvaW50KGJveE9yaWdpbi54KCkgKyBtX2JveFJlY3Qu
d2lkdGgoKSAvIDIsIGJveE9yaWdpbi55KCkgKyBtX2ZvbnQuZm9udE1ldHJpY3MoKS5hc2NlbnQo
KSkgOiBtX3RleHRPcmlnaW47CiAgICAgICAgICAgICBpZiAobV9jb21iaW5lZFRleHQpCkBAIC0x
OTYsNyArMTk2LDcgQEAgdm9pZCBUZXh0UGFpbnRlcjo6cGFpbnRUZXh0KCkKICAgICAgICAgaWYg
KCFtX2VtcGhhc2lzTWFyay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHVwZGF0ZUdyYXBoaWNz
Q29udGV4dChtX2NvbnRleHQsIG1fc2VsZWN0aW9uUGFpbnRTdHlsZSwgVXNlRW1waGFzaXNNYXJr
Q29sb3IpOwogCi0gICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoVGV4
dFJ1biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoJm9iamVjdFJlcGxhY2Vt
ZW50Q2hhcmFjdGVyLCAxKSk7CisgICAgICAgICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNf
TE9DQUwoVGV4dFJ1biwgb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXJUZXh0UnVuLCAoU3RyaW5n
Vmlldygmb2JqZWN0UmVwbGFjZW1lbnRDaGFyYWN0ZXIsIDEpKSk7CiAgICAgICAgICAgICBUZXh0
UnVuJiBlbXBoYXNpc01hcmtUZXh0UnVuID0gbV9jb21iaW5lZFRleHQgPyBvYmplY3RSZXBsYWNl
bWVudENoYXJhY3RlclRleHRSdW4gOiBtX3RleHRSdW47CiAgICAgICAgICAgICBGbG9hdFBvaW50
IGVtcGhhc2lzTWFya1RleHRPcmlnaW4gPSBtX2NvbWJpbmVkVGV4dCA/IEZsb2F0UG9pbnQoYm94
T3JpZ2luLngoKSArIG1fYm94UmVjdC53aWR0aCgpIC8gMiwgYm94T3JpZ2luLnkoKSArIG1fZm9u
dC5mb250TWV0cmljcygpLmFzY2VudCgpKSA6IG1fdGV4dE9yaWdpbjsKICAgICAgICAgICAgIGlm
IChtX2NvbWJpbmVkVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2Vi
S2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3Ry
aW5nRXh0cmFzLm1tCmluZGV4IDNiMGQwYmJjMmU1Yjc0NzEzYmYzNjY2NzQxZWFkOWI0MDUwOWI0
OWIuLjdiYTZlOTMzZmMwOWY3ZDk5Yjg3NjUwYmQwYWZhMDVkYmYwNTY1ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KKysrIGIvU291
cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAtOTMsNyArOTMs
NyBAQCAtICh2b2lkKV93ZWJfZHJhd0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgZm9udDooTlNGb250
ICopZm9udCB0ZXh0Q29sb3I6KE5TQ29sb3IgKgogICAgICAgICAgICAgQ0dDb250ZXh0U2NhbGVD
VE0oY2dDb250ZXh0LCAxLCAtMSk7CiAKICAgICAgICAgRm9udENhc2NhZGUgd2ViQ29yZUZvbnQo
Rm9udFBsYXRmb3JtRGF0YShyZWludGVycHJldF9jYXN0PENURm9udFJlZj4oZm9udCksIFtmb250
IHBvaW50U2l6ZV0pLCBmb250U21vb3RoaW5nSXNBbGxvd2VkID8gQXV0b1Ntb290aGluZyA6IEFu
dGlhbGlhc2VkKTsKLSAgICAgICAgVGV4dFJ1biBydW4oYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsK
KyAgICAgICAgVGV4dFJ1biBydW4oU3RyaW5nVmlldyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsK
ICAgICAgICAgcnVuLmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAKICAgICAgICAgQ0dGbG9hdCBy
ZWQ7CkBAIC0xMzksNyArMTM5LDcgQEAgLSAoZmxvYXQpX3dlYl93aWR0aFdpdGhGb250OihOU0Zv
bnQgKilmb250CiAKICAgICBpZiAoY2FuVXNlRmFzdFJlbmRlcmVyKGJ1ZmZlci5kYXRhKCksIGxl
bmd0aCkpIHsKICAgICAgICAgRm9udENhc2NhZGUgd2ViQ29yZUZvbnQoRm9udFBsYXRmb3JtRGF0
YShyZWludGVycHJldF9jYXN0PENURm9udFJlZj4oZm9udCksIFtmb250IHBvaW50U2l6ZV0pKTsK
LSAgICAgICAgVGV4dFJ1biBydW4oYnVmZmVyLmRhdGEoKSwgbGVuZ3RoKTsKKyAgICAgICAgVGV4
dFJ1biBydW4oU3RyaW5nVmlldyhidWZmZXIuZGF0YSgpLCBsZW5ndGgpKTsKICAgICAgICAgcnVu
LmRpc2FibGVSb3VuZGluZ0hhY2tzKCk7CiAgICAgICAgIHJldHVybiB3ZWJDb3JlRm9udC53aWR0
aChydW4pOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA0OWVkODJhNDlhZDEzNjIwZGI3YmM5M2JiZDFkZmJmZDI3NzkxODk1Li4xNTVm
YzVhMDEzYzIxYWZlNzIwMTYzNzVjNjJmMjY4MTA5YjkxZWQzIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDUt
MDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgY29udmVuaWVuY2UgY29uc3RydWN0b3JzIGZvciBUZXh0UnVuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ3NTIKKworICAgICAgICBUZXN0
IHRoZSBTdHJpbmdWaWV3IHdoaWNoIHRha2VzIGEgU3RyaW5nSW1wbCouCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcDoKKyAgICAgICAgKFN0cmluZ1Zp
ZXc4Qml0KTogVGVzdGluZyBpczhCaXQoKSBvbiBTdHJpbmdWaWV3CisKIDIwMTUtMDUtMDUgIE15
bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQg
IkludHJvZHVjaW5nIHRoZSBQbGF0Zm9ybSBBYnN0cmFjdGlvbiBMYXllciAoUEFMKSIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKaW5kZXggMTUzY2U1NTY1
MDE5YjlhYWE2ZDExMDQ5NTlmNDk1OTJkYzQ0MjZiZC4uYWIwZmVhZjQwZDRhMzZkMTA3Zjk0M2Jl
ZjkwYWQ5YTQ5MDliNDg1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvU3RyaW5nVmlldy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Ry
aW5nVmlldy5jcHAKQEAgLTY5Nyw0ICs2OTcsMjMgQEAgVEVTVChXVEYsIFN0cmluZ1ZpZXdFbmRz
V2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aExhdGluMUNoYXJhY3RlcnMpCiAgICAgRVhQRUNUX0ZB
TFNFKHJlZmVyZW5jZVVURjguZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShyZWZlcmVuY2UpKTsK
IH0KIAorVEVTVChXVEYsIFN0cmluZ1ZpZXc4Qml0KQoreworICAgIFN0cmluZ1ZpZXcgbnVsbFZp
ZXc7CisgICAgU3RyaW5nVmlldyBlbXB0eVZpZXcgPSBTdHJpbmdWaWV3OjplbXB0eSgpOworICAg
IEVYUEVDVF9UUlVFKFN0cmluZ1ZpZXcoKS5pczhCaXQoKSk7CisgICAgRVhQRUNUX1RSVUUoU3Ry
aW5nVmlldzo6ZW1wdHkoKS5pczhCaXQoKSk7CisKKyAgICBMQ2hhciogbGNoYXJQdHIgPSBudWxs
cHRyOworICAgIFVDaGFyKiB1Y2hhclB0ciA9IG51bGxwdHI7CisgICAgRVhQRUNUX1RSVUUoU3Ry
aW5nVmlldyhsY2hhclB0ciwgMCkuaXM4Qml0KCkpOworICAgIEVYUEVDVF9GQUxTRShTdHJpbmdW
aWV3KHVjaGFyUHRyLCAwKS5pczhCaXQoKSk7CisKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmdWaWV3
KFN0cmluZyhsY2hhclB0ciwgMCkpLmlzOEJpdCgpKTsKKyAgICBFWFBFQ1RfVFJVRShTdHJpbmdW
aWV3KFN0cmluZyh1Y2hhclB0ciwgMCkpLmlzOEJpdCgpKTsKKworICAgIEVYUEVDVF9UUlVFKFN0
cmluZ1ZpZXcoU3RyaW5nKCkuaW1wbCgpKS5pczhCaXQoKSk7CisgICAgRVhQRUNUX1RSVUUoU3Ry
aW5nVmlldyhlbXB0eVN0cmluZygpLmltcGwoKSkuaXM4Qml0KCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="277499"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>