<?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>143105</bug_id>
          
          <creation_ts>2015-03-26 10:14:16 -0700</creation_ts>
          <short_desc>REGRESSION (r181993): inspector-protocol/debugger/setBreakpoint-dfg-and-modify-local.html crashes</short_desc>
          <delta_ts>2015-03-30 17:46:21 -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>JavaScriptCore</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143160</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080315</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-26 10:14:16 -0700</bug_when>
    <thetext>inspector-protocol/debugger/setBreakpoint-dfg-and-modify-local.html crashes every time on Windows and Linux:

https://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=inspector-protocol%2Fdebugger%2FsetBreakpoint-dfg-and-modify-local.html

STDERR: ASSERTION FAILED: from.isCell() &amp;&amp; from.asCell()-&gt;JSCell::inherits(std::remove_pointer&lt;To&gt;::type::info())
STDERR: ../../Source/JavaScriptCore/runtime/JSCell.h(250) : To JSC::jsCast(JSC::JSValue) [with To = JSC::JSScope*]
STDERR: 1   0x7f63e6ff3479 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrashWithSecurityImplication+0x1e) [0x7f63e6ff3479]
STDERR: 2   0x7f63e69871ae /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(JSC::JSScope* JSC::jsCast&lt;JSC::JSScope*&gt;(JSC::JSValue)+0x6a) [0x7f63e69871ae]
STDERR: 3   0x7f63e6986e3e /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(JSC::Register::scope() const+0x20) [0x7f63e6986e3e]
STDERR: 4   0x7f63e6986dd7 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(JSC::ExecState::scope(int) const+0x2b) [0x7f63e6986dd7]
STDERR: 5   0x7f63e69865dc /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(JSC::DebuggerCallFrame::scope()+0x112) [0x7f63e69865dc]
STDERR: 6   0x7f63e6c710f5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(Inspector::ScriptDebugServer::exceptionOrCaughtValue(JSC::ExecState*)+0x97) [0x7f63e6c710f5]
STDERR: 7   0x7f63e6c7003a /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(Inspector::ScriptDebugServer::dispatchDidPause(Inspector::ScriptDebugListener*)+0x134) [0x7f63e6c7003a]
STDERR: 8   0x7f63e6c70b57 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(Inspector::ScriptDebugServer::dispatchFunctionToListeners(WTF::HashSet&lt;Inspector::ScriptDebugListener*, WTF::PtrHash&lt;Inspector::ScriptDebugListener*&gt;, WTF::HashTraits&lt;Inspector::ScriptDebugListener*&gt; &gt; const&amp;, void (Inspector::ScriptDebugServer::*)(Inspector::ScriptDebugListener*))+0x9f) [0x7f63e6c70b57]
STDERR: 9   0x7f63e6c70a86 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(Inspector::ScriptDebugServer::dispatchFunctionToListeners(void (Inspector::ScriptDebugServer::*)(Inspector::ScriptDebugListener*))+0x9a) [0x7f63e6c70a86]
STDERR: 10  0x7f63e6c70e4d /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(Inspector::ScriptDebugServer::handlePause(JSC::JSGlobalObject*, JSC::Debugger::ReasonForPause)+0x45) [0x7f63e6c70e4d]
STDERR: 11  0x7f63e69768a1 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(JSC::Debugger::pauseIfNeeded(JSC::ExecState*)+0x25d) [0x7f63e69768a1]
STDERR: 12  0x7f63e6976622 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(JSC::Debugger::updateCallFrameAndPauseIfNeeded(JSC::ExecState*)+0x36) [0x7f63e6976622]
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080316</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-26 10:14:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/20310775&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080395</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-03-26 13:44:21 -0700</bug_when>
    <thetext>*** Bug 143109 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080399</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-26 13:52:53 -0700</bug_when>
    <thetext>This bug is not unique to Windows and Linux.  On Mac, the inspector-protocol/debugger tests were just excluded by TestExpectations.

I verified that inspector-protocol/debugger/setBreakpoint-dfg-and-modify-local.html runs to completion with a debug build of r181992.  With r182004 (which has all of Fil&apos;s fixes after 181993), the crash reproduces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080400</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-26 13:57:53 -0700</bug_when>
    <thetext>frame #1: 0x00000001004baaef JavaScriptCore`JSC::JSScope* JSC::jsCast&lt;JSC::JSScope*&gt;(from=JSValue at 0x00007fff5fbf9e88) + 111 at JSCell.h:250
   247 	template&lt;typename To&gt;
   248 	inline To jsCast(JSValue from)
   249 	{
-&gt; 250 	    ASSERT_WITH_SECURITY_IMPLICATION(from.isCell() &amp;&amp; from.asCell()-&gt;JSCell::inherits(std::remove_pointer&lt;To&gt;::type::info()));
   251 	    return static_cast&lt;To&gt;(from.asCell());
   252 	}
   253 	
(lldb) up
frame #2: 0x00000001004baa72 JavaScriptCore`JSC::Register::scope(this=0x00007fff5fbfa468) const + 34 at JSScope.h:239
   236 	
   237 	inline JSScope* Register::scope() const
   238 	{
-&gt; 239 	    return jsCast&lt;JSScope*&gt;(jsValue());
   240 	}
   241 	
   242 	inline JSGlobalObject* ExecState::lexicalGlobalObject() const
(lldb) p jsValue()
(JSC::JSValue) $0 = {
  u = {
    asInt64 = 10
    ptr = 0x000000000000000a
    asBits = (payload = 10, tag = 0)
  }
}
(lldb) up
frame #3: 0x00000001004b9f6d JavaScriptCore`JSC::ExecState::scope(this=0x00007fff5fbfa470, scopeRegisterOffset=-1) const + 45 at CallFrame.h:50
   47  	        CodeBlock* codeBlock() const { return this[JSStack::CodeBlock].Register::codeBlock(); }
   48  	        JSScope* scope(int scopeRegisterOffset) const
   49  	        {
-&gt; 50  	            ASSERT(this[scopeRegisterOffset].Register::scope());
   51  	            return this[scopeRegisterOffset].Register::scope();
   52  	        }
   53  	


(lldb) p this-&gt;vm().topCallFrame
(JSC::ExecState *) $2 = 0x00007fff5fbfa420

(lldb) p this
(JSC::ExecState *) $3 = 0x00007fff5fbfa470

(lldb) p debugPrintStack(this-&gt;vm().topCallFrame)
      frame 0x7fff5fbfa420 {
         name &apos;breakpointBasic&apos;
         sourceURL &apos;file:///Volumes/Data/ws2/OpenSource/LayoutTests/inspector-protocol/debugger/resources/breakpoint.js&apos;
         isInlinedFrame 0
         callee 0x11a169770
         returnPC 0x34b3272039e7
         callerFrame 0x7fff5fbfa470
         rawLocationBits 13 0xd
         codeBlock 0x11b6a7720
            bytecodeOffset 13 0xd / 54
            line 3
            column 5
            jitType 2 &lt;InterpreterThunk&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }
      frame 0x7fff5fbfa470 {                                                    &lt;============================================ the CallFrame whose Scope we&apos;re not happy about.
         name &apos;notInlineable2&apos;
         sourceURL &apos;file:///Volumes/Data/ws2/OpenSource/LayoutTests/inspector-protocol/debugger/resources/breakpoint.js&apos;
         isInlinedFrame 0
         callee 0x11a1694f0
         returnPC 0x100aeb906
         callerFrame 0x7fff5fbfa4d0
         rawLocationBits 111 0x6f
         codeBlock 0x11b7844c0
            bytecodeOffset 111 0x6f / 143
            line 64
            column 24
            jitType 3 &lt;BaselineJIT&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }
      frame 0x7fff5fbfa4d0 {
         name &apos;callNotInlineable2&apos;
         sourceURL &apos;file:///Volumes/Data/ws2/OpenSource/LayoutTests/inspector-protocol/debugger/resources/breakpoint.js&apos;
         isInlinedFrame 0
         callee 0x11a169470
         returnPC 0x100aeb906
         callerFrame 0x7fff5fbfa520
         rawLocationBits 42 0x2a
         codeBlock 0x11b6a7000
            bytecodeOffset 42 0x2a / 187
            line 79
            column 32
            jitType 2 &lt;InterpreterThunk&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }
      frame 0x7fff5fbfa520 {
         name &apos;eval code&apos;
         sourceURL &apos;&apos;
         isInlinedFrame 0
         callee 0x11a0ff150
         returnPC 0x100ae51c9
         callerFrame 0x7fff5fbfbaf0
         rawLocationBits 32 0x20
         codeBlock 0x11b577be0
            bytecodeOffset 32 0x20 / 48
            line 1
            column 19
            jitType 2 &lt;InterpreterThunk&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }
      frame 0x7fff5fbfbaf0 {
         name &apos;eval&apos;
         sourceURL &apos;[native code]&apos;
         isInlinedFrame 0
         callee 0x11a16e230
         returnPC 0x100aeb893
         callerFrame 0x7fff5fbfbb60
         rawLocationBits 1 0x1
         codeBlock 0x0
      }
      frame 0x7fff5fbfbb60 {
         name &apos;_evaluateOn&apos;
         sourceURL &apos;&apos;
         isInlinedFrame 0
         callee 0x11a24eeb0
         returnPC 0x100aeb893
         callerFrame 0x7fff5fbfbc30
         rawLocationBits 1173 0x495
         codeBlock 0x11b790be0
            bytecodeOffset 1173 0x495 / 1630
            line 108
            column 29
            jitType 2 &lt;InterpreterThunk&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }
      frame 0x7fff5fbfbc30 {
         name &apos;_evaluateAndWrap&apos;
         sourceURL &apos;&apos;
         isInlinedFrame 0
         callee 0x11a24ef30
         returnPC 0x100aeb893
         callerFrame 0x7fff5fbfbcd0
         rawLocationBits 199 0xc7
         codeBlock 0x11b790980
            bytecodeOffset 199 0xc7 / 421
            line 86
            column 105
            jitType 2 &lt;InterpreterThunk&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }
      frame 0x7fff5fbfbcd0 {
         name &apos;evaluate&apos;
         sourceURL &apos;&apos;
         isInlinedFrame 0
         callee 0x11a24eff0
         returnPC 0x100ae51c9
         callerFrame 0x0
         rawLocationBits 169 0xa9
         codeBlock 0x11b790720
            bytecodeOffset 169 0xa9 / 185
            line 76
            column 30
            jitType 2 &lt;InterpreterThunk&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }
(lldb)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080401</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-26 13:59:11 -0700</bug_when>
    <thetext>If we are in DFG or FTL code then there is no notion of a scope register.  If all is well, the DFG/FTL CodeBlock should report that its scope register is invalid.  The debugger should then avoid reading the scope register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080402</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-26 14:01:50 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; If we are in DFG or FTL code then there is no notion of a scope register. 
&gt; If all is well, the DFG/FTL CodeBlock should report that its scope register
&gt; is invalid.  The debugger should then avoid reading the scope register.

The offending call frame is a Baseline JIT frame (jitType 3):

      frame 0x7fff5fbfa470 {
         name &apos;notInlineable2&apos;
         sourceURL &apos;file:///Volumes/Data/ws2/OpenSource/LayoutTests/inspector-protocol/debugger/resources/breakpoint.js&apos;
         isInlinedFrame 0
         callee 0x11a1694f0
         returnPC 0x100aeb906
         callerFrame 0x7fff5fbfa4d0
         rawLocationBits 111 0x6f
         codeBlock 0x11b7844c0
            bytecodeOffset 111 0x6f / 143
            line 64
            column 24
            jitType 3 &lt;BaselineJIT&gt; isOptimizingJIT 0
            hasCodeOrigins 0
      }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080405</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-26 14:11:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; The offending call frame is a Baseline JIT frame (jitType 3):
&gt; 
&gt;       frame 0x7fff5fbfa470 {
&gt;          name &apos;notInlineable2&apos;

According to compilation logging, I see:

Optimized #ETji8F:[0x11b741720-&gt;0x11b7bfbe0-&gt;0x11a1ad370, NoneFunctionCall, 200] using DFGMode with DFG into 1409 bytes in 5.993043 ms.
Optimized notInlineable2#B9qPQQ:[0x11b5f04c0-&gt;0x11b7884c0-&gt;0x11a1aec70, NoneFunctionCall, 143] using DFGMode with DFG into 2086 bytes in 3.700699 ms.

    // Note: notInlineable2 was DFG compiled.

Optimized dispatchMessageAsync#C3jYlh:[0x11b5e5260-&gt;0x11b7bf980-&gt;0x11a1adf70, NoneFunctionCall, 204] using DFGMode with DFG into 2044 bytes in 5.551525 ms.

Speculation failure in dispatchMessageAsync#C3jYlh:[0x11b5e5260-&gt;0x11b7bf980-&gt;0x11a1adf70, DFGFunctionCall, 204] @ exit #4 (bc#93, BadConstantCache) with executeCounter = 0.000000/1706.000000, -1000, reoptimizationRetryCounter = 0, optimizationDelayCounter = 5, osrExitCounter = 0
     ... // And a whole bunch more of these, and then ...

Speculation failure in notInlineable2#B9qPQQ:[0x11b5f04c0-&gt;0x11b7884c0-&gt;0x11a1aec70, DFGFunctionCall, 143] @ exit #5 (bc#111, InadequateCoverage) with executeCounter = 0.000000/1564.000000, -1000, reoptimizationRetryCounter = 0, optimizationDelayCounter = 5, osrExitCounter = 0
    GPRs at time of exit: rax:0x7 rdx:0x11a027301 rcx:0x1 rbx:0x11a5df8f0 rdi:0x11a57e070 rsi:0x10107af20 r8:0x2a01 r9:0x15 r10:0x17 r12:0x0 r13:0x7fff5fbfc7a0
    FPRs at time of exit: xmm0:cdcdcdcdcdcdcdcd:-6277438562204192487878988888393020692503707483087375482269988814848.000000 xmm1:4000000000000000:2.000000 xmm2:4330000000000000:4503599627370496.000000 xmm3:c3dffffffffff41a:-9223372036851656704.000000 xmm4:6c6f437472617473:21049630149871791053826342618222142983692456644967968893798936375648742956543650966195804022640459996779983966877891001984633477511305401509268213325978467394641525279739396411731393716219460619266686303157939601408.000000 xmm5:7473222c22223a22:8767393038784822975565048324879067089945013814682974788281033316551431634195104624424045912715265664370247167655522244915117819586740099857108239245644458920684638480833845936489766873021065194489714291357449872173134346573967951577187762141067353260032.000000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080690</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-27 12:05:50 -0700</bug_when>
    <thetext>Skipped the crashing test in r182072: &lt;http://trac.webkit.org/r182072&gt;.  Please revert when the bug is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081347</commentid>
    <comment_count>9</comment_count>
      <attachid>249778</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-30 15:48:09 -0700</bug_when>
    <thetext>Created attachment 249778
the patch.

I tested this patch by turning on Options::forceDebuggerBytecodeGeneration and running the JSC stress tests with the patch.  Unfortunately, this uncovered may pre-existing regressions not due to this patch (see webkit.org/b/143160).  So, instead of expecting no failures, I made sure that there are no new failures between the results of running with and without this patch, both with Options::forceDebuggerBytecodeGeneration enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081349</commentid>
    <comment_count>10</comment_count>
      <attachid>249778</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-30 15:57:07 -0700</bug_when>
    <thetext>Comment on attachment 249778
the patch.

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

You need to fix the flushing in setLocal().

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:402
&gt; +        if (m_hasDebuggerEnabled &amp;&amp; operand == m_codeBlock-&gt;scopeRegister())
&gt; +            flush(operand);

This is wrong.  You have to flush before setting, not after.  Please look at how the argument flush happens, above.  You should do the flush at the same point where argument flushes happen.

A Flush is a liveness marker.  You flush at the point where a variable gets killed.  Since the scope is &quot;always&quot; live, it gets killed when you set a new value.  Therefore, just before doing a SetLocal with a new value, you must do a Flush on the old value.

Also, I believe that you need to conditionalize this on setMode != ImmediateNakedSet.  So, inside that if block, just after where we dofindArgumentPositionForLocal(), you should do this Flush.

&gt; Source/JavaScriptCore/dfg/DFGStackLayoutPhase.cpp:178
&gt; +        if (LIKELY(!m_graph.hasDebuggerEnabled()))

Probably no need to use LIKELY in the compiler, because the costs of these operations are so small relative to the real heavy phases.  But I don&apos;t object to this and you don&apos;t have to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081393</commentid>
    <comment_count>11</comment_count>
      <attachid>249784</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-30 17:31:37 -0700</bug_when>
    <thetext>Created attachment 249784
patch 2: applied Filip&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1081409</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-30 17:46:21 -0700</bug_when>
    <thetext>Thanks.  Landed in r182167: &lt;http://trac.webkit.org/r182167&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249778</attachid>
            <date>2015-03-30 15:48:09 -0700</date>
            <delta_ts>2015-03-30 17:31:37 -0700</delta_ts>
            <desc>the patch.</desc>
            <filename>bug-143105.patch</filename>
            <type>text/plain</type>
            <size>8766</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE1LTAzLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OIChyMTgxOTkzKTogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFr
cG9pbnQtZGZnLWFuZC1tb2RpZnktbG9jYWwuaHRtbCBjcmFzaGVzLgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTQzMTA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdpdGggcjE4MTk5MywgdGhlIERGRyBhbmQgRlRMIG1heSBlbGlkZSB0
aGUgc3RvcmluZyBvZiB0aGUgc2NvcGUgcmVnaXN0ZXIuICBBcyBhIHJlc3VsdCwKKyAgICAgICAg
b24gT1NSIGV4aXRzIGZyb20gREZHIC8gRlRMIGZyYW1lcyB3aGVyZSB0aGlzIGVsaXNpb24gaGFz
IHRha2UgcGxhY2UsIHdlIG1heSBnZXQgYmFzZWxpbmUKKyAgICAgICAgSklUIGZyYW1lcyB0aGF0
IG1heSBoYXZlIGl0cyBzY29wZSByZWdpc3RlciBub3Qgc2V0LiAgVGhlIERlYnVnZ2VyJ3MgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbgorICAgICAgICB3aGljaCByZWxpZXMgb24gdGhlIHNjb3BlIHJl
Z2lzdGVyIGlzIG5vdCBoYXBweSBhYm91dCB0aGlzLiAgRm9yIGV4YW1wbGUsIHRoaXMgcmVzdWx0
cyBpbiBhCisgICAgICAgIGNyYXNoIGluIHRoZSBsYXlvdXQgdGVzdCBpbnNwZWN0b3ItcHJvdG9j
b2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1kZmctYW5kLW1vZGlmeS1sb2NhbC5odG1sLgorCisg
ICAgICAgIFRoZSBmaXggaXMgdG8gZGlzYWJsZSBpbmxpbmluZyB3aGVuIHRoZSBkZWJ1Z2dlciBp
cyBpbiB1c2UuICBBbHNvLCB3ZSBhZGQgRmx1c2ggbm9kZXMgdG8KKyAgICAgICAgZW5zdXJlIHRo
YXQgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGlzIGZsdXNoZWQgdG8gdGhlIHJlZ2lzdGVyIGlu
IHRoZSBzdGFjayBmcmFtZS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9jYWwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaCk6CisgICAgICAgIC0gQWRkIGNvZGUgdG8gZmx1
c2ggdGhlIHNjb3BlIHJlZ2lzdGVyLgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAtIFByZXRlbmQgdGhhdCBhbGwgY29kZUJsb2NrcyBh
cmUgdG9vIGV4cGVuc2l2ZSB0byBpbmxpbmUgaWYgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZSwgdGhl
cmVieQorICAgICAgICAgIGRpc2FibGluZyBpbmxpbmluZyB3aGVuZXZlciB0aGUgZGVidWdnZXIg
aXMgaW4gdXNlLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6aGFzRGVidWdnZXJFbmFibGVkKToKKyAgICAgICAgKiBkZmcvREZHU3Rh
Y2tMYXlvdXRQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6
cnVuKToKKyAgICAgICAgLSBVcGRhdGUgdGhlIERGRyBjb2RlQmxvY2sncyBzY29wZVJlZ2lzdGVy
IHNpbmNlIGl0IGNhbiBiZSBtb3ZlZCBkdXJpbmcgc3RhY2sgbGF5b3V0LgorICAgICAgICAqIGZ0
bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjptbUFsbG9jYXRlRGF0YVNlY3Rp
b24pOgorICAgICAgICAtIFVwZGF0ZSB0aGUgRlRMIGNvZGVCbG9jaydzIHNjb3BlUmVnaXN0ZXIg
c2luY2UgaXQgY2FuIGJlIG1vdmVkIGR1cmluZyBzdGFjayBsYXlvdXQuCisKIDIwMTUtMDMtMzAg
IFBlciBBcm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIEF2b2lkIHVz
aW5nIGhhcmRjb2RlZCB2YWx1ZXMgZm9yIEpTVmFsdWU6OkludDMyVGFnLCBpZiBwb3NzaWJsZS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxODIxNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2lubGluZVN0YWNrVG9wKDApCiAgICAgICAgICwgbV9oYXZlQnVpbHRP
cGVyYW5kTWFwcyhmYWxzZSkKICAgICAgICAgLCBtX2N1cnJlbnRJbnN0cnVjdGlvbigwKQorICAg
ICAgICAsIG1faGFzRGVidWdnZXJFbmFibGVkKGdyYXBoLmhhc0RlYnVnZ2VyRW5hYmxlZCgpKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fcHJvZmlsZWRCbG9jayk7CiAgICAgfQpAQCAtMzk2LDYg
KzM5Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwubG9jYWwobG9jYWwpID0gbm9kZTsKIAogICAgICAgICBtX2N1cnJlbnRTZW1hbnRpY09yaWdp
biA9IG9sZFNlbWFudGljT3JpZ2luOworCisgICAgICAgIGlmIChtX2hhc0RlYnVnZ2VyRW5hYmxl
ZCAmJiBvcGVyYW5kID09IG1fY29kZUJsb2NrLT5zY29wZVJlZ2lzdGVyKCkpCisgICAgICAgICAg
ICBmbHVzaChvcGVyYW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCkBAIC01MjIs
NiArNTI2LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIGludCBudW1Bcmd1bWVudHM7CiAg
ICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGlubGluZVN0YWNr
RW50cnktPm1faW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICBBU1NFUlQoIW1faGFzRGVi
dWdnZXJFbmFibGVkKTsKICAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxGcmFt
ZS0+YXJndW1lbnRzLnNpemUoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJhbWUtPmlz
Q2xvc3VyZUNhbGwpCiAgICAgICAgICAgICAgICAgZmx1c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRy
eS0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihKU1N0YWNrOjpDYWxsZWUpKSk7CkBAIC01
MzEsNiArNTM2LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IGlubGlu
ZVN0YWNrRW50cnktPm1fY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCk7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgYXJndW1lbnQgPSBudW1Bcmd1bWVudHM7IGFyZ3VtZW50LS0gPiAxOykKICAgICAg
ICAgICAgIGZsdXNoRGlyZWN0KGlubGluZVN0YWNrRW50cnktPnJlbWFwT3BlcmFuZCh2aXJ0dWFs
UmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpKTsKKyAgICAgICAgaWYgKG1faGFzRGVidWdn
ZXJFbmFibGVkKQorICAgICAgICAgICAgZmx1c2gobV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIo
KSk7CiAgICAgfQogCiAgICAgdm9pZCBmbHVzaEZvclRlcm1pbmFsKCkKQEAgLTk5Nyw2ICsxMDA0
LDcgQEAgcHJpdmF0ZToKICAgICBTdHViSW5mb01hcCBtX2RmZ1N0dWJJbmZvczsKICAgICAKICAg
ICBJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rpb247CisgICAgYm9vbCBtX2hhc0RlYnVn
Z2VyRW5hYmxlZDsKIH07CiAKICNkZWZpbmUgTkVYVF9PUENPREUobmFtZSkgXApAQCAtMTE2OCw2
ICsxMTc2LDEyIEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2EKICAg
ICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygiQ29uc2lkZXJpbmcgaW5saW5pbmcgIiwg
Y2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmlnaW4oKSwgIlxuIik7CiAgICAgCisgICAg
aWYgKG1faGFzRGVidWdnZXJFbmFibGVkKSB7CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVzZSB0aGUgZGVidWdnZXIgaXMgaW4gdXNl
LlxuIik7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsKKyAgICB9CisKICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVuY3Rpb25FeGVjdXRhYmxlKCk7CiAgICAg
aWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE4MjE1NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3
NCw5IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4mIHBsYW4sIExvbmdMaXYKICAgICAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBtX211c3RIYW5kbGVWYWx1ZXMuc2l6ZSgpOyBpLS07KQogICAg
ICAgICBtX211c3RIYW5kbGVWYWx1ZXNbaV0gPSBmcmVlemVGcmFnaWxlKHBsYW4ubXVzdEhhbmRs
ZVZhbHVlc1tpXSk7CisKKyAgICBtX2hhc0RlYnVnZ2VyRW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9j
ay0+Z2xvYmFsT2JqZWN0KCktPmhhc0RlYnVnZ2VyKCkKKyAgICAgICAgfHwgT3B0aW9uczo6Zm9y
Y2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwogfQogCiBHcmFwaDo6fkdyYXBoKCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE4MjE1NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAt
NzA5LDcgKzcwOSw5IEBAIHB1YmxpYzoKICAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQg
aGFuZGxlQXNzZXJ0aW9uRmFpbHVyZSgKICAgICAgICAgQmFzaWNCbG9jayosIGNvbnN0IGNoYXIq
IGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwKICAgICAgICAgY29uc3QgY2hh
ciogYXNzZXJ0aW9uKTsKLSAgICAKKworICAgIGJvb2wgaGFzRGVidWdnZXJFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7IH0KKwogICAgIFZNJiBtX3ZtOwogICAg
IFBsYW4mIG1fcGxhbjsKICAgICBDb2RlQmxvY2sqIG1fY29kZUJsb2NrOwpAQCAtNzkxLDYgKzc5
Myw3IEBAIHB1YmxpYzoKICAgICBVbmlmaWNhdGlvblN0YXRlIG1fdW5pZmljYXRpb25TdGF0ZTsK
ICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFuU3RhZ2U6OkluaXRpYWwgfTsKICAgICBS
ZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKKyAgICBib29sIG1faGFzRGVidWdnZXJFbmFi
bGVkOwogcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGhhbmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFz
aWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxvY2sqLCBCYXNpY0Jsb2NrKiBzdWNjZXNz
b3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdGFja0xheW91dFBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5
b3V0UGhhc2UuY3BwCShyZXZpc2lvbiAxODIxNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1
LDEwIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8vIFRoaXMgcmVnaXN0ZXIgaXMgbmV2
ZXIgdmFsaWQgZm9yIERGRyBjb2RlIGJsb2Nrcy4KICAgICAgICAgY29kZUJsb2NrKCktPnNldEFj
dGl2YXRpb25SZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSk7Ci0gICAgICAgIGNvZGVCbG9jaygp
LT5zZXRTY29wZVJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlcigpKTsKKyAgICAgICAgaWYgKExJS0VM
WSghbV9ncmFwaC5oYXNEZWJ1Z2dlckVuYWJsZWQoKSkpCisgICAgICAgICAgICBjb2RlQmxvY2so
KS0+c2V0U2NvcGVSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvZGVCbG9jaygpLT5zZXRTY29wZVJlZ2lzdGVyKGFzc2lnbihhbGxvY2F0aW9u
LCBjb2RlQmxvY2soKS0+c2NvcGVSZWdpc3RlcigpKSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gbV9ncmFwaC5tX2lubGluZVZhcmlhYmxlRGF0YS5zaXplKCk7IGktLTspIHsKICAgICAg
ICAgICAgIElubGluZVZhcmlhYmxlRGF0YSBkYXRhID0gbV9ncmFwaC5tX2lubGluZVZhcmlhYmxl
RGF0YVtpXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAko
cmV2aXNpb24gMTgyMTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMyMiw5IEBAIHN0YXRpYyB2b2lkIGZpeEZ1
bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+Y2Fs
bGVlUmVjb3ZlcnkgPQogICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVj
b3Zlcnkud2l0aExvY2Fsc09mZnNldChsb2NhbHNPZmZzZXQpOwogICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGdyYXBoLmhhc0RlYnVnZ2VyRW5hYmxlZCgpKQorICAgICAgICAgICAgY29kZUJsb2Nr
LT5zZXRTY29wZVJlZ2lzdGVyKGNvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpICsgbG9jYWxzT2Zm
c2V0KTsKICAgICB9CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6OkxhYmVsIHN0YWNrT3ZlcmZs
b3dFeGNlcHRpb247CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODIxNTQpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wMy0zMCAgTWFy
ayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjE4MTk5
Myk6IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9zZXRCcmVha3BvaW50LWRmZy1hbmQtbW9k
aWZ5LWxvY2FsLmh0bWwgY3Jhc2hlcy4KKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0
MzEwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIC0gVW5kaWQgdGVzdCBza2lwcGVkIGluIHIxODIw
NzIuCisKIDIwMTUtMDMtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIERvbid0IGNhY2hlIHJlc291cmNlcyB0aGF0IGFyZSB2ZXJ5IHVubGlrZWx5IHRvIGJl
IHJldXNlZApJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAxODIxNTQpCisrKyBMYXlv
dXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcg
QEAgd2Via2l0Lm9yZy9iLzE0MTY2MSBmYXN0L3RleHQvZW1vamkuaHRtbAogd2Via2l0Lm9yZy9i
LzE0MjU0OCBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQtYnktY2hhcmFjdGVyLTAwNy5odG1sIFsg
RmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xMjg3MzYgaW5zcGVjdG9yLXByb3RvY29sL2RlYnVn
Z2VyL3NldEJyZWFrcG9pbnQtZGZnLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQotd2Via2l0Lm9yZy9i
LzE0MzEwNSBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1kZmctYW5k
LW1vZGlmeS1sb2NhbC5odG1sIFsgU2tpcCBdICMgQ3Jhc2hpbmcKK3dlYmtpdC5vcmcvYi8xMzQ5
ODIgaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtZGZnLWFuZC1tb2Rp
ZnktbG9jYWwuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAKICMgQ1NTIEZvbnQgTG9hZGluZyBpcyBu
b3QgeWV0IGVuYWJsZWQgb24gYWxsIHBsYXRmb3Jtcwogd2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0
L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0bWwgWyBTa2lwIF0K
</data>
<flag name="review"
          id="274612"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249784</attachid>
            <date>2015-03-30 17:31:37 -0700</date>
            <delta_ts>2015-03-30 17:41:17 -0700</delta_ts>
            <desc>patch 2: applied Filip&apos;s feedback</desc>
            <filename>bug-143105.patch</filename>
            <type>text/plain</type>
            <size>8904</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgyMTU0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE1LTAzLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
RUdSRVNTSU9OIChyMTgxOTkzKTogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFr
cG9pbnQtZGZnLWFuZC1tb2RpZnktbG9jYWwuaHRtbCBjcmFzaGVzLgorICAgICAgICA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMTQzMTA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdpdGggcjE4MTk5MywgdGhlIERGRyBhbmQgRlRMIG1heSBlbGlkZSB0
aGUgc3RvcmluZyBvZiB0aGUgc2NvcGUgcmVnaXN0ZXIuICBBcyBhIHJlc3VsdCwKKyAgICAgICAg
b24gT1NSIGV4aXRzIGZyb20gREZHIC8gRlRMIGZyYW1lcyB3aGVyZSB0aGlzIGVsaXNpb24gaGFz
IHRha2UgcGxhY2UsIHdlIG1heSBnZXQgYmFzZWxpbmUKKyAgICAgICAgSklUIGZyYW1lcyB0aGF0
IG1heSBoYXZlIGl0cyBzY29wZSByZWdpc3RlciBub3Qgc2V0LiAgVGhlIERlYnVnZ2VyJ3MgY3Vy
cmVudCBpbXBsZW1lbnRhdGlvbgorICAgICAgICB3aGljaCByZWxpZXMgb24gdGhlIHNjb3BlIHJl
Z2lzdGVyIGlzIG5vdCBoYXBweSBhYm91dCB0aGlzLiAgRm9yIGV4YW1wbGUsIHRoaXMgcmVzdWx0
cyBpbiBhCisgICAgICAgIGNyYXNoIGluIHRoZSBsYXlvdXQgdGVzdCBpbnNwZWN0b3ItcHJvdG9j
b2wvZGVidWdnZXIvc2V0QnJlYWtwb2ludC1kZmctYW5kLW1vZGlmeS1sb2NhbC5odG1sLgorCisg
ICAgICAgIFRoZSBmaXggaXMgdG8gZGlzYWJsZSBpbmxpbmluZyB3aGVuIHRoZSBkZWJ1Z2dlciBp
cyBpbiB1c2UuICBBbHNvLCB3ZSBhZGQgRmx1c2ggbm9kZXMgdG8KKyAgICAgICAgZW5zdXJlIHRo
YXQgdGhlIHNjb3BlIHJlZ2lzdGVyIHZhbHVlIGlzIGZsdXNoZWQgdG8gdGhlIHJlZ2lzdGVyIGlu
IHRoZSBzdGFjayBmcmFtZS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OkJ5dGVDb2RlUGFyc2VyKToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9jYWwpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpmbHVzaCk6CisgICAgICAgIC0gQWRkIGNvZGUgdG8gZmx1
c2ggdGhlIHNjb3BlIHJlZ2lzdGVyLgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjppbmxpbmluZ0Nvc3QpOgorICAgICAgICAtIFByZXRlbmQgdGhhdCBhbGwgY29kZUJsb2NrcyBh
cmUgdG9vIGV4cGVuc2l2ZSB0byBpbmxpbmUgaWYgdGhlIGRlYnVnZ2VyIGlzIGluIHVzZSwgdGhl
cmVieQorICAgICAgICAgIGRpc2FibGluZyBpbmxpbmluZyB3aGVuZXZlciB0aGUgZGVidWdnZXIg
aXMgaW4gdXNlLgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OkdyYXBoKToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpHcmFwaDo6aGFzRGVidWdnZXJFbmFibGVkKToKKyAgICAgICAgKiBkZmcvREZHU3Rh
Y2tMYXlvdXRQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3RhY2tMYXlvdXRQaGFzZTo6
cnVuKToKKyAgICAgICAgLSBVcGRhdGUgdGhlIERGRyBjb2RlQmxvY2sncyBzY29wZVJlZ2lzdGVy
IHNpbmNlIGl0IGNhbiBiZSBtb3ZlZCBkdXJpbmcgc3RhY2sgbGF5b3V0LgorICAgICAgICAqIGZ0
bC9GVExDb21waWxlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjptbUFsbG9jYXRlRGF0YVNlY3Rp
b24pOgorICAgICAgICAtIFVwZGF0ZSB0aGUgRlRMIGNvZGVCbG9jaydzIHNjb3BlUmVnaXN0ZXIg
c2luY2UgaXQgY2FuIGJlIG1vdmVkIGR1cmluZyBzdGFjayBsYXlvdXQuCisKIDIwMTUtMDMtMzAg
IFBlciBBcm5lIFZvbGxhbiAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIEF2b2lkIHVz
aW5nIGhhcmRjb2RlZCB2YWx1ZXMgZm9yIEpTVmFsdWU6OkludDMyVGFnLCBpZiBwb3NzaWJsZS4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxODIxNTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYgKzE0Nyw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2lubGluZVN0YWNrVG9wKDApCiAgICAgICAgICwgbV9oYXZlQnVpbHRP
cGVyYW5kTWFwcyhmYWxzZSkKICAgICAgICAgLCBtX2N1cnJlbnRJbnN0cnVjdGlvbigwKQorICAg
ICAgICAsIG1faGFzRGVidWdnZXJFbmFibGVkKGdyYXBoLmhhc0RlYnVnZ2VyRW5hYmxlZCgpKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fcHJvZmlsZWRCbG9jayk7CiAgICAgfQpAQCAtMzg1LDYg
KzM4Niw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVu
dFBvc2l0aW9uID0gZmluZEFyZ3VtZW50UG9zaXRpb25Gb3JMb2NhbChvcGVyYW5kKTsKICAgICAg
ICAgICAgIGlmIChhcmd1bWVudFBvc2l0aW9uKQogICAgICAgICAgICAgICAgIGZsdXNoRGlyZWN0
KG9wZXJhbmQsIGFyZ3VtZW50UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZSBpZiAobV9oYXNE
ZWJ1Z2dlckVuYWJsZWQgJiYgb3BlcmFuZCA9PSBtX2NvZGVCbG9jay0+c2NvcGVSZWdpc3Rlcigp
KQorICAgICAgICAgICAgICAgIGZsdXNoKG9wZXJhbmQpOwogICAgICAgICB9CiAKICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBuZXdWYXJpYWJsZUFjY2Vz
c0RhdGEob3BlcmFuZCk7CkBAIC01MjIsNiArNTI1LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIGludCBudW1Bcmd1bWVudHM7CiAgICAgICAgIGlmIChJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSA9IGlubGluZVN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lKSB7CisgICAg
ICAgICAgICBBU1NFUlQoIW1faGFzRGVidWdnZXJFbmFibGVkKTsKICAgICAgICAgICAgIG51bUFy
Z3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKTsKICAgICAgICAgICAg
IGlmIChpbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwpCiAgICAgICAgICAgICAgICAgZmx1
c2hEaXJlY3QoaW5saW5lU3RhY2tFbnRyeS0+cmVtYXBPcGVyYW5kKFZpcnR1YWxSZWdpc3RlcihK
U1N0YWNrOjpDYWxsZWUpKSk7CkBAIC01MzEsNiArNTM1LDggQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIG51bUFyZ3VtZW50cyA9IGlubGluZVN0YWNrRW50cnktPm1fY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBudW1Bcmd1bWVudHM7
IGFyZ3VtZW50LS0gPiAxOykKICAgICAgICAgICAgIGZsdXNoRGlyZWN0KGlubGluZVN0YWNrRW50
cnktPnJlbWFwT3BlcmFuZCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpKTsK
KyAgICAgICAgaWYgKG1faGFzRGVidWdnZXJFbmFibGVkKQorICAgICAgICAgICAgZmx1c2gobV9j
b2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgdm9pZCBmbHVzaEZvclRl
cm1pbmFsKCkKQEAgLTk5Nyw2ICsxMDAzLDcgQEAgcHJpdmF0ZToKICAgICBTdHViSW5mb01hcCBt
X2RmZ1N0dWJJbmZvczsKICAgICAKICAgICBJbnN0cnVjdGlvbiogbV9jdXJyZW50SW5zdHJ1Y3Rp
b247CisgICAgYm9vbCBtX2hhc0RlYnVnZ2VyRW5hYmxlZDsKIH07CiAKICNkZWZpbmUgTkVYVF9P
UENPREUobmFtZSkgXApAQCAtMTE2OCw2ICsxMTc1LDEyIEBAIHVuc2lnbmVkIEJ5dGVDb2RlUGFy
c2VyOjppbmxpbmluZ0Nvc3QoQ2EKICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgZGF0YUxvZygi
Q29uc2lkZXJpbmcgaW5saW5pbmcgIiwgY2FsbGVlLCAiIGludG8gIiwgY3VycmVudENvZGVPcmln
aW4oKSwgIlxuIik7CiAgICAgCisgICAgaWYgKG1faGFzRGVidWdnZXJFbmFibGVkKSB7CisgICAg
ICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgZGF0YUxvZygiICAgIEZhaWxpbmcgYmVjYXVz
ZSB0aGUgZGVidWdnZXIgaXMgaW4gdXNlLlxuIik7CisgICAgICAgIHJldHVybiBVSU5UX01BWDsK
KyAgICB9CisKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUuZnVu
Y3Rpb25FeGVjdXRhYmxlKCk7CiAgICAgaWYgKCFleGVjdXRhYmxlKSB7CiAgICAgICAgIGlmICh2
ZXJib3NlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHJldmlz
aW9uIDE4MjE1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw5IEBAIEdyYXBoOjpHcmFwaChWTSYgdm0sIFBsYW4m
IHBsYW4sIExvbmdMaXYKICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX211c3RIYW5kbGVW
YWx1ZXMuc2l6ZSgpOyBpLS07KQogICAgICAgICBtX211c3RIYW5kbGVWYWx1ZXNbaV0gPSBmcmVl
emVGcmFnaWxlKHBsYW4ubXVzdEhhbmRsZVZhbHVlc1tpXSk7CisKKyAgICBtX2hhc0RlYnVnZ2Vy
RW5hYmxlZCA9IG1fcHJvZmlsZWRCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmhhc0RlYnVnZ2VyKCkK
KyAgICAgICAgfHwgT3B0aW9uczo6Zm9yY2VEZWJ1Z2dlckJ5dGVjb2RlR2VuZXJhdGlvbigpOwog
fQogCiBHcmFwaDo6fkdyYXBoKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgJKHJldmlzaW9uIDE4MjE1NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguaAkod29ya2luZyBjb3B5KQpAQCAtNzA5LDcgKzcwOSw5IEBAIHB1YmxpYzoKICAgICBOT19S
RVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgaGFuZGxlQXNzZXJ0aW9uRmFpbHVyZSgKICAgICAgICAg
QmFzaWNCbG9jayosIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbiwKICAgICAgICAgY29uc3QgY2hhciogYXNzZXJ0aW9uKTsKLSAgICAKKworICAgIGJvb2wg
aGFzRGVidWdnZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9oYXNEZWJ1Z2dlckVuYWJsZWQ7
IH0KKwogICAgIFZNJiBtX3ZtOwogICAgIFBsYW4mIG1fcGxhbjsKICAgICBDb2RlQmxvY2sqIG1f
Y29kZUJsb2NrOwpAQCAtNzkxLDYgKzc5Myw3IEBAIHB1YmxpYzoKICAgICBVbmlmaWNhdGlvblN0
YXRlIG1fdW5pZmljYXRpb25TdGF0ZTsKICAgICBQbGFuU3RhZ2UgbV9wbGFuU3RhZ2UgeyBQbGFu
U3RhZ2U6OkluaXRpYWwgfTsKICAgICBSZWZDb3VudFN0YXRlIG1fcmVmQ291bnRTdGF0ZTsKKyAg
ICBib29sIG1faGFzRGVidWdnZXJFbmFibGVkOwogcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGhh
bmRsZVN1Y2Nlc3NvcihWZWN0b3I8QmFzaWNCbG9jayosIDE2PiYgd29ya2xpc3QsIEJhc2ljQmxv
Y2sqLCBCYXNpY0Jsb2NrKiBzdWNjZXNzb3IpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTdGFja0xheW91dFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCShyZXZpc2lvbiAxODIxNTQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0YWNrTGF5b3V0UGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzUsNyArMTc1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAg
IC8vIFRoaXMgcmVnaXN0ZXIgaXMgbmV2ZXIgdmFsaWQgZm9yIERGRyBjb2RlIGJsb2Nrcy4KICAg
ICAgICAgY29kZUJsb2NrKCktPnNldEFjdGl2YXRpb25SZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIo
KSk7Ci0gICAgICAgIGNvZGVCbG9jaygpLT5zZXRTY29wZVJlZ2lzdGVyKFZpcnR1YWxSZWdpc3Rl
cigpKTsKKyAgICAgICAgaWYgKExJS0VMWSghbV9ncmFwaC5oYXNEZWJ1Z2dlckVuYWJsZWQoKSkp
CisgICAgICAgICAgICBjb2RlQmxvY2soKS0+c2V0U2NvcGVSZWdpc3RlcihWaXJ0dWFsUmVnaXN0
ZXIoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVCbG9jaygpLT5zZXRTY29wZVJl
Z2lzdGVyKGFzc2lnbihhbGxvY2F0aW9uLCBjb2RlQmxvY2soKS0+c2NvcGVSZWdpc3RlcigpKSk7
CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2lubGluZVZhcmlhYmxlRGF0
YS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIElubGluZVZhcmlhYmxlRGF0YSBkYXRhID0g
bV9ncmFwaC5tX2lubGluZVZhcmlhYmxlRGF0YVtpXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTgyMTU0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDYgKzMy
Miw5IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAg
ICAgIGlubGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3ZlcnkgPQogICAgICAgICAgICAgICAgIGlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVlUmVjb3Zlcnkud2l0aExvY2Fsc09mZnNldChsb2NhbHNPZmZz
ZXQpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGdyYXBoLmhhc0RlYnVnZ2VyRW5hYmxlZCgp
KQorICAgICAgICAgICAgY29kZUJsb2NrLT5zZXRTY29wZVJlZ2lzdGVyKGNvZGVCbG9jay0+c2Nv
cGVSZWdpc3RlcigpICsgbG9jYWxzT2Zmc2V0KTsKICAgICB9CiAgICAgCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkxhYmVsIHN0YWNrT3ZlcmZsb3dFeGNlcHRpb247CkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
ODIxNTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNS0wMy0zMCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjE4MTk5Myk6IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9z
ZXRCcmVha3BvaW50LWRmZy1hbmQtbW9kaWZ5LWxvY2FsLmh0bWwgY3Jhc2hlcy4KKyAgICAgICAg
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE0MzEwNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIC0gVW5k
aWQgdGVzdCBza2lwcGVkIGluIHIxODIwNzIuCisKIDIwMTUtMDMtMzAgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IGNhY2hlIHJlc291cmNlcyB0aGF0
IGFyZSB2ZXJ5IHVubGlrZWx5IHRvIGJlIHJldXNlZApJbmRleDogTGF5b3V0VGVzdHMvVGVzdEV4
cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCShy
ZXZpc2lvbiAxODIxNTQpCisrKyBMYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgd2Via2l0Lm9yZy9iLzE0MTY2MSBmYXN0L3RleHQv
ZW1vamkuaHRtbAogd2Via2l0Lm9yZy9iLzE0MjU0OCBlZGl0aW5nL3NlbGVjdGlvbi9leHRlbmQt
YnktY2hhcmFjdGVyLTAwNy5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xMjg3MzYg
aW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3NldEJyZWFrcG9pbnQtZGZnLmh0bWwgWyBGYWls
dXJlIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE0MzEwNSBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdn
ZXIvc2V0QnJlYWtwb2ludC1kZmctYW5kLW1vZGlmeS1sb2NhbC5odG1sIFsgU2tpcCBdICMgQ3Jh
c2hpbmcKK3dlYmtpdC5vcmcvYi8xMzQ5ODIgaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Nl
dEJyZWFrcG9pbnQtZGZnLWFuZC1tb2RpZnktbG9jYWwuaHRtbCBbIEZhaWx1cmUgUGFzcyBdCiAK
ICMgQ1NTIEZvbnQgTG9hZGluZyBpcyBub3QgeWV0IGVuYWJsZWQgb24gYWxsIHBsYXRmb3Jtcwog
d2Via2l0Lm9yZy9iLzEzNTM5MCBmYXN0L2Nzcy9mb250bG9hZGVyLWRvd25sb2FkLWVycm9yLmh0
bWwgWyBTa2lwIF0K
</data>
<flag name="review"
          id="274621"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>