<?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>97905</bug_id>
          
          <creation_ts>2012-09-28 06:30:53 -0700</creation_ts>
          <short_desc>[SVG] Update of element referenced by multiple &apos;use&apos; nodes is absurdly slow</short_desc>
          <delta_ts>2013-02-20 13:45:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</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>98047</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Branimir Lambov">blambov</reporter>
          <assigned_to name="Florin Malita">fmalita</assigned_to>
          <cc>fmalita</cc>
    
    <cc>krit</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>730593</commentid>
    <comment_count>0</comment_count>
      <attachid>166239</attachid>
    <who name="Branimir Lambov">blambov</who>
    <bug_when>2012-09-28 06:30:53 -0700</bug_when>
    <thetext>Created attachment 166239
Testcase

The attached SVG animation contains an unit element that is used to draw a few hundred triangles by a hierarchy of &apos;use&apos; nodes. 

The file animates the scale attribute of the unit element. This results in an update that takes tens of second for a single frame (i.e. on the order of 1/10 s for each triangle drawn!).

Tested on Chrome Linux + MacOS and Safari MacOS, all have the problem.


Opera runs this animation at 50 fps. Internet Explorer also does this smoothly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730635</commentid>
    <comment_count>1</comment_count>
    <who name="Branimir Lambov">blambov</who>
    <bug_when>2012-09-28 07:19:25 -0700</bug_when>
    <thetext>Additionally, if you leave the &apos;qqqqq&apos; definition unused (e.g. by changing line 51 to refer to &apos;#qqq&apos; instead), the file&apos;s performance will not improve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730784</commentid>
    <comment_count>2</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-09-28 10:32:44 -0700</bug_when>
    <thetext>This has the same profile as https://bugs.webkit.org/show_bug.cgi?id=97910, so I suspect it&apos;s the same problem:

+   3.81%  SignalSender  libpthread-2.15.so  [.] pthread_mutex_lock
+   3.65%  SignalSender  libpthread-2.15.so  [.] pthread_mutex_unlock
+   1.79%  SignalSender  libwebkit.so        [.] WTF::StringHasher::addCharactersToHash(unsigned short, unsigned short)
+   1.49%  SignalSender  libwebkit.so        [.] WTF::Locker&lt;WTF::Mutex&gt;::Locker(WTF::Mutex&amp;)
+   1.39%  SignalSender  libwebkit.so        [.] WTF::intHash(unsigned long)
+   1.34%  SignalSender  libwebkit.so        [.] WTF::OwnPtr&lt;WTF::Mutex&gt;::operator*() const
+   1.03%  SignalSender  libwebkit.so        [.] WebCore::Node::getFlag(WebCore::Node::NodeFlags) const
+   1.01%  SignalSender  libwebkit.so        [.] WTF::Mutex::lock()
+   0.92%  SignalSender  libpthread-2.15.so  [.] pthread_getspecific
+   0.92%  SignalSender  libwebkit.so        [.] WTF::ThreadRestrictionVerifier::isSafeToUse() const
+   0.81%  SignalSender  libwebkit.so        [.] unsigned int WTF::StringHasher::computeHashAndMaskTop8Bits&lt;unsigned short, &amp;(WTF::StringHasher::defaultConverter(unsigned short))&gt;(
+   0.78%  SignalSender  chrome              [.] (anonymous namespace)::FL_Previous_No_Check(void*)
+   0.69%  SignalSender  chrome              [.] PackedCache&lt;36, unsigned long&gt;::GetOrDefault(unsigned long, unsigned long) const
+   0.68%  SignalSender  libwebkit.so        [.] WTF::RefPtr&lt;WTF::StringImpl&gt;::get() const
+   0.67%  SignalSender  libwebkit.so        [.] WTF::currentThread()
+   0.61%  SignalSender  libwebkit.so        [.] WTF::Mutex::unlock()
+   0.58%  SignalSender  chrome              [.] base::subtle::Acquire_Load(long const volatile*)
+   0.57%  SignalSender  libwebkit.so        [.] WTF::ThreadIdentifierData::identifier()
+   0.56%  SignalSender  libwebkit.so        [.] WTF::StringHasher::defaultConverter(unsigned short)
+   0.56%  SignalSender  libwebkit.so        [.] WebCore::Node::document() const
+   0.55%  SignalSender  chrome              [.] TCMalloc_PageMap3&lt;36&gt;::get(unsigned long) const
+   0.55%  SignalSender  libwebkit.so        [.] WTF::RefCountedBase::derefBase()
+   0.53%  SignalSender  libwebkit.so        [.] WTF::RefCountedBase::ref()
+   0.53%  SignalSender  libwebkit.so        [.] WTF::Locker&lt;WTF::Mutex&gt;::~Locker()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>730809</commentid>
    <comment_count>3</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-09-28 11:03:36 -0700</bug_when>
    <thetext>There are all kinds of nasty going on here, we&apos;re rebuilding the shadow and instance trees waaaay more times than we should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731458</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2012-10-01 01:11:20 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; There are all kinds of nasty going on here, we&apos;re rebuilding the shadow and instance trees waaaay more times than we should.


            &lt;g id=&quot;unit&quot;&gt;
		&lt;polygon points=&quot;0,0 10,0 5,8.66025403784439&quot;/&gt;	    
	    &lt;/g&gt;


            unit.setAttribute(&apos;transform&apos;, &apos;scale(&apos; + (Math.abs(f%20-10)/10) + &apos;)&apos;);

This causes all instance &amp; shadow trees of all the &lt;use&gt; elements referencing &quot;unit&quot; to be rebuilt.
If this would use &lt;animateTransform&gt; exactly this kind of cloning is suppressed. An SVGAnimateTransformElement knows how to update all instances without having to rebuild/reclone.

Unfortunately I have zero time at the moment for large patches, what we really want to assure:
- Only rebuild shadow/dom trees if the DOM is mutated by insertions or removal.
- Never rebuild the trees for attribute changes, we can always find all instances of a cloned element and propagate updates to them for both XML DOM (setAttribute) and SVG DOM (foo.x.baseVal.value=..) changes.

This would fix the root of these problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>731622</commentid>
    <comment_count>5</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-10-01 05:59:13 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; - Only rebuild shadow/dom trees if the DOM is mutated by insertions or removal.
&gt; - Never rebuild the trees for attribute changes, we can always find all instances of a cloned element and propagate updates to them for both XML DOM (setAttribute) and SVG DOM (foo.x.baseVal.value=..) changes.
&gt; 
&gt; This would fix the root of these problems.

Agreed, these are good ideas Niko and they should greatly improve use performance.

In this bug/example, there&apos;s a particularly bad interaction going on on top of the expensive tree rebuild: rebuilding dependent use trees is recursive, causing many unnecessary updates that just get thrown away.

Say we have L groups containing N use elements each, and each use in L depends on all other uses in L-1 (in the example L = 5 and N = 4), and all uses in group0 depend on some element. If the element is updated, we start rebuilding use0 in group0 and then we&apos;re immediately rebuilding all dependent uses in group1 (which propagates recursively all the way). Then we move on to use1, and again invalidate and rebuild all the uses in group1 and so on. That introduces a N^L factor for this kind of setup because we&apos;re not rebuilding the trees in topological (sorted use-dependency) order.

I believe this should not be too hard to address if we have a separate (recursive) invalidation phase and a non-recursive rebuild phase. I&apos;m playing with it right now, hope to have something working in the next days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732979</commentid>
    <comment_count>6</comment_count>
      <attachid>166736</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-10-02 12:52:50 -0700</bug_when>
    <thetext>Created attachment 166736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>732983</commentid>
    <comment_count>7</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2012-10-02 13:02:14 -0700</bug_when>
    <thetext>The patch doesn&apos;t address the general slowness of &lt;use&gt; shadow/instance tree rebuilds (will focus on that in https://bugs.webkit.org/show_bug.cgi?id=97910), but it removes many redundant updates triggered by this test (on my workstation it increases the framerate from ~0.04fps to ~9.5fps).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834658</commentid>
    <comment_count>8</comment_count>
      <attachid>166736</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-02-15 23:45:27 -0800</bug_when>
    <thetext>Comment on attachment 166736
Patch

Sounds reasonable. Not sure if it still applies so. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837667</commentid>
    <comment_count>9</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-02-20 13:01:29 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 166736 [details])
&gt; Sounds reasonable. Not sure if it still applies so. r=me.

Yes, this is still relevant. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837670</commentid>
    <comment_count>10</comment_count>
      <attachid>189361</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-02-20 13:03:15 -0800</bug_when>
    <thetext>Created attachment 189361
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837695</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2013-02-20 13:25:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 166736 [details] [details])
&gt; &gt; Sounds reasonable. Not sure if it still applies so. r=me.
&gt; 
&gt; Yes, this is still relevant. Thanks!

If the patch still applies to ToT. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837716</commentid>
    <comment_count>12</comment_count>
      <attachid>189361</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-20 13:45:12 -0800</bug_when>
    <thetext>Comment on attachment 189361
Patch for landing

Clearing flags on attachment: 189361

Committed r143498: &lt;http://trac.webkit.org/changeset/143498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837717</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-20 13:45:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>166239</attachid>
            <date>2012-09-28 06:30:53 -0700</date>
            <delta_ts>2012-09-28 06:30:53 -0700</delta_ts>
            <desc>Testcase</desc>
            <filename>use-levels-scale-unit.svg</filename>
            <type>image/svg+xml</type>
            <size>4207</size>
            <attacher name="Branimir Lambov">blambov</attacher>
            
              <data encoding="base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHN0eWxlPSJwb2ludGVyLWV2
ZW50czogbm9uZTsgd2lkdGg6IDU1MHB4OyBoZWlnaHQ6IDQwMHB4OyI+CiAgICA8ZGVmcz4KICAg
ICAgICAgPG1hc2sgaWQ9Im1hc2siPgogICAgICAgICAgICA8ZyBpZD0idW5pdCI+CgkJPHBvbHln
b24gcG9pbnRzPSIwLDAgMTAsMCA1LDguNjYwMjU0MDM3ODQ0MzkiLz4JICAgIAoJICAgIDwvZz4K
CiAgICAgICAgICAgIDxnIGlkPSJxIj4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiN1
bml0IiB4PSIxMCIgeT0iMCIgZmlsbD0icmVkIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpo
cmVmPSIjdW5pdCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsMCkgcm90YXRlKDYwKSIgZmlsbD0i
Z3JlZW4iLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiN1bml0IiB0cmFuc2Zvcm09
InRyYW5zbGF0ZSgxMCwwKSByb3RhdGUoMTIwKSIgZmlsbD0iYmx1ZSIvPgogICAgICAgICAgICAg
IDx1c2UgeGxpbms6aHJlZj0iI3VuaXQiIHRyYW5zZm9ybT0icm90YXRlKDYwKSB0cmFuc2xhdGUo
MTAsMCkgcm90YXRlKC02MCkiIGZpbGw9InB1cnBsZSIvPgoJICAgIDwvZz4KCiAgICAgICAgICAg
IDxnIGlkPSJxcSI+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcSIgeD0iMjAiIHk9
IjAiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxIiB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgyMCwwKSByb3RhdGUoNjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIj
cSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAsMCkgcm90YXRlKDEyMCkiLz4KICAgICAgICAgICAg
ICA8dXNlIHhsaW5rOmhyZWY9IiN1bml0IiB0cmFuc2Zvcm09InJvdGF0ZSg2MCkgdHJhbnNsYXRl
KDIwLDApIHJvdGF0ZSgtNjApIHNjYWxlKDIpIiBmaWxsPSJwdXJwbGUiLz4KICAgICAgICAgICAg
PC9nPgoKICAgICAgICAgICAgPGcgaWQ9InFxcSI+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpo
cmVmPSIjcXEiIHg9IjQwIiB5PSIwIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIj
cXEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQwLDApIHJvdGF0ZSg2MCkiLz4KICAgICAgICAgICAg
ICA8dXNlIHhsaW5rOmhyZWY9IiNxcSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDAsMCkgcm90YXRl
KDEyMCkiLz4KICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNxIiB0cmFuc2Zvcm09InJv
dGF0ZSg2MCkgdHJhbnNsYXRlKDQwLDApIHJvdGF0ZSgtNjApIHNjYWxlKDIpIi8+CiAgICAgICAg
ICAgIDwvZz4KCiAgICAgICAgICAgIDxnIGlkPSJxcXFxIj4KICAgICAgICAgICAgICA8dXNlIHhs
aW5rOmhyZWY9IiNxcXEiIHg9IjgwIiB5PSIwIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpo
cmVmPSIjcXFxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MCwwKSByb3RhdGUoNjApIi8+CiAgICAg
ICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXFxIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MCww
KSByb3RhdGUoMTIwKSIvPgogICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxIiAgdHJh
bnNmb3JtPSJyb3RhdGUoNjApIHRyYW5zbGF0ZSg4MCwwKSByb3RhdGUoLTYwKSBzY2FsZSgyKSIv
PgoKICAgICAgICAgICAgPC9nPgogICAgICAgICAgICA8ZyBpZD0icXFxcXEiPgogICAgICAgICAg
ICAgIDx1c2UgeGxpbms6aHJlZj0iI3FxcXEiIHg9IjE2MCIgeT0iMCIvPgogICAgICAgICAgICAg
IDx1c2UgeGxpbms6aHJlZj0iI3FxcXEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MCwwKSByb3Rh
dGUoNjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcXFxcSIgdHJhbnNmb3Jt
PSJ0cmFuc2xhdGUoMTYwLDApIHJvdGF0ZSgxMjApIi8+CiAgICAgICAgICAgICAgPHVzZSB4bGlu
azpocmVmPSIjcXFxIiB0cmFuc2Zvcm09InJvdGF0ZSg2MCkgdHJhbnNsYXRlKDE2MCwwKSByb3Rh
dGUoLTYwKSBzY2FsZSgyKSIvPgogICAgICAgICAgICA8L2c+Cgk8L21hc2s+CjwhLS0KLS0+CiAg
ICA8bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQxIiB4MT0iMCUiIHkxPSIwJSIgeDI9IjEwMCUiIHky
PSIwJSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0eWxlPSJzdG9wLWNvbG9yOnJnYigwLDI1
NSwwKTtzdG9wLW9wYWNpdHk6MSIgLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxMDAlIiBzdHlsZT0i
c3RvcC1jb2xvcjpyZ2IoMjU1LDAsMCk7c3RvcC1vcGFjaXR5OjEiIC8+CiAgICA8L2xpbmVhckdy
YWRpZW50PgogICAgPC9kZWZzPgoJCQk8ZyBpZD0ibW92ZSI+Cjx1c2UgeGxpbms6aHJlZj0iI3Fx
cXFxIiA+CjwhLS0KCjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MDAiIGhlaWdodD0iNDAwIiBm
aWxsPSJ1cmwoI2dyYWQxKSIgbWFzaz0idXJsKCNtYXNrKSIvPgotLT4KPC91c2U+CgkJCTwvZz4K
CQkJPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzAwIDIwMCkiPjxyZWN0IHdpZHRoPSI3MCIgaGVp
Z2h0PSIyNiIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJyZ2IoMjU1LDI1NSwyNTUpIiBmaWxsLW9w
YWNpdHk9IjEuMDAwIiBzdHJva2U9InJnYigwLDAsMCkiIHN0cm9rZS1vcGFjaXR5PSIxLjAwMCI+
PC9yZWN0Pjx0ZXh0IGlkPSJGUFMiIHk9IjIzIiBmb250LWZhbWlseT0iVmVyZGFuYSIgZm9udC1z
aXplPSIyMyI+MDwvdGV4dD4KCQkJPC9nPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ly88IVtDREFUQVsKICAgIHZhciBmID0gMDsKCQl2YXIgdGltZXMgPSBbRGF0ZS5ub3coKV07CiAg
ICB2YXIgcGljYWNodSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwaWNhY2h1Jyk7CiAgICB2
YXIgc3ZnID0gImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIjsKICAgIHZhciB4bGluayA9ICJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIjsKICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibW92ZSIpOwogICAgdmFyIGlkPSIjcXFxIjsKICAgIHZhciB1bml0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVuaXQiKTsKICAgIAogICAgcmVxdWVzdEFuaW1h
dGlvbkZyYW1lID0KICAgICAgd2luZG93WydyZXF1ZXN0QW5pbWF0aW9uRnJhbWUnXSB8fAogICAg
ICB3aW5kb3dbJ3dlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSddIHx8CiAgICAgIHdpbmRvd1sn
bW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lJ10gfHwKICAgICAgd2luZG93WydvUmVxdWVzdEFuaW1h
dGlvbkZyYW1lJ10gfHwKICAgICAgd2luZG93Wydtc1JlcXVlc3RBbmltYXRpb25GcmFtZSddIHx8
CiAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoY2Fs
bGJhY2ssIDEwMDAgLyA2MCk7CiAgICAgIH07CgoJCWZ1bmN0aW9uIGZyYW1lKCkgewoJCQl0aW1l
cy5wdXNoKERhdGUubm93KCkpOwoJCSAgdmFyIGZwcyA9ICh0aW1lc1t0aW1lcy5sZW5ndGggLSAx
XSAtIHRpbWVzWzBdKSAvICh0aW1lcy5sZW5ndGggLSAxKTsKCQkJd2hpbGUgKHRpbWVzLmxlbmd0
aCA+IDEwKSB7CgkJCQl0aW1lcy5zaGlmdCgpOwoJCQl9CgkJCWRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJGUFMiKS50ZXh0Q29udGVudCA9ICgxMDAwL2ZwcykudG9GaXhlZCgyKTsKCQkJdmFyIG07
CgoJCQkvL3ZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2ZywgInVzZSIpOwoJ
CQkvL3ZhciBub2RlID0gY29udGFpbmVyLmZpcnN0RWxlbWVudENoaWxkOwoJCQkvL25vZGUuc2V0
QXR0cmlidXRlTlMoeGxpbmssICJocmVmIiwgaWQpOwoJCQkvL25vZGUuc2V0QXR0cmlidXRlKCJ4
IiwgMTAgKyBNYXRoLmFicyhmJTIwLTEwKSk7CgkJCS8vY29udGFpbmVyLnJlcGxhY2VDaGlsZChu
b2RlLCBjb250YWluZXIuZmlyc3RFbGVtZW50Q2hpbGQpOwogICAgICAgICAgICAgICAgICAgICAg
ICB1bml0LnNldEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgJ3NjYWxlKCcgKyAoTWF0aC5hYnMoZiUy
MC0xMCkvMTApICsgJyknKTsKCgkJCWYrKzsKICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZy
YW1lKTsKCQl9OwogICAgCiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWUpOwovLyAgICBz
ZXRJbnRlcnZhbChmcmFtZSwgMCk7Ci8vXV0+PC9zY3JpcHQ+Cjwvc3ZnPgoKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>166736</attachid>
            <date>2012-10-02 12:52:50 -0700</date>
            <delta_ts>2013-02-20 13:03:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97905-20121002155202.patch</filename>
            <type>text/plain</type>
            <size>4442</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBmYzIxZTJjOGUwNTkz
Njg2ZTM4YjliODJkMmJiNjMyOTEyOGM5MS4uZWE1OTFmMjE4OTlmZTM1ZDgwMDU3NGQwMDg1YmNm
MzZkNjViMzYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEwLTAyICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NWR10gVXBkYXRl
IG9mIGVsZW1lbnQgcmVmZXJlbmNlZCBieSBtdWx0aXBsZSAndXNlJyBub2RlcyBpcyBhYnN1cmRs
eSBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
YnVpbGRpbmcgdGhlIHNoYWRvdyBhbmQgaW5zdGFuY2UgdHJlZXMgb2YgZGVwZW5kZW50IHVzZSBu
b2RlcyByZWN1cnNpdmVseSBjYW4gYmUKKyAgICAgICAgZXh0cmVtZWx5IGluZWZmaWNpZW50IHdp
dGggbm9uLXRyaXZpYWwgZGVwZW5kZW5jeSBncmFwaHMgKHRoZSB0cmVlcyBhcmUgbm90IGNvbnN0
cnVjdGVkCisgICAgICAgIGluIHRvcG9sb2dpY2FsIG9yZGVyKS4KKyAgICAgICAgCisgICAgICAg
IFRvIGF2b2lkIHJlZHVuZGFudCBidWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZSgpIGludm9rYXRp
b25zLCBzZXBhcmF0ZSB0aGUgaW52YWxpZGF0aW9uCisgICAgICAgIHBoYXNlIGZyb20gdGhlIGFj
dHVhbCB0cmVlIChyZSlidWlsZGluZyBwaGFzZSwgYW5kIG9ubHkgZGVzY2VuZCBpbnRvIHRoZSBk
ZXBlbmRlbmN5IERBRworICAgICAgICBkdXJpbmcgdGhlIGludmFsaWRhdGlvbiBwaGFzZSAocmVj
dXJzaW9uIGFsc28gc3RvcHMgYXQgbm9kZXMgdGhhdCBoYXZlIGJlZW4gcHJldmlvdXNseQorICAg
ICAgICBpbnZhbGlkYXRlZCkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiBmdW5jdGlvbmFsIGNv
dmVyYWdlIHByb3ZpZGVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBwZXJmb21hbmNlIHRyYWNrZWQgYnkK
KyAgICAgICAgUGVyZm9ybWFuY2VUZXN0cy9TVkcvU3ZnTmVzdGVkVXNlLmh0bWwuCisKKyAgICAg
ICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjpidWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdV
c2VFbGVtZW50OjppbnZhbGlkYXRlU2hhZG93VHJlZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmludmFsaWRhdGVEZXBlbmRlbnRTaGFkb3dU
cmVlcyk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKFNWR1VzZUVs
ZW1lbnQpOgorCiAyMDEyLTEwLTAyICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgVUlTb3VyY2VDb2RlIGNyZWF0aW9u
IG91dCBmcm9tIFJlc291cmNlU2NyaXB0TWFwcGluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcAppbmRleCBkMTllYTE5NWRmMjBhMmVmNjM5ZjZhMWU5OWEyMGIyNTgyYjk1MGUxLi4w
NzliZjk2MzI4NTI4ODY5ZTdjMzdlMmRkNmIwOTVkYjc0MDRkNDcxIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCkBAIC00MTcsMTAgKzQxNywxMCBAQCB2b2lkIFNWR1VzZUVsZW1l
bnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2VzKCkKIAogdm9pZCBTVkdVc2VFbGVtZW50OjpidWls
ZFBlbmRpbmdSZXNvdXJjZSgpCiB7Ci0gICAgaWYgKCFyZWZlcmVuY2VkRG9jdW1lbnQoKSkKKyAg
ICBpZiAoIXJlZmVyZW5jZWREb2N1bWVudCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAg
IHJldHVybjsKICAgICBjbGVhclJlc291cmNlUmVmZXJlbmNlcygpOwotICAgIGlmICghaW5Eb2N1
bWVudCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpCisgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFN0cmluZyBpZDsKQEAgLTQzOCw4ICs0MzgsMTEgQEAgdm9pZCBT
VkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAodGFyZ2V0LT5pc1NWR0VsZW1lbnQoKSkKKyAgICBpZiAodGFyZ2V0LT5p
c1NWR0VsZW1lbnQoKSkgewogICAgICAgICBidWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZShzdGF0
aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0KSk7CisgICAgICAgIGludmFsaWRhdGVEZXBlbmRl
bnRTaGFkb3dUcmVlcygpOworICAgIH0KKwogICAgIEFTU0VSVCghbV9uZWVkc1NoYWRvd1RyZWVS
ZWNyZWF0aW9uKTsKIH0KIApAQCAtNTI1LDEwICs1MjgsNiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6
OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVlKFNWR0VsZW1lbnQqIHRhcmdldCkKICAgICAvLyBV
cGRhdGUgcmVsYXRpdmUgbGVuZ3RoIGluZm9ybWF0aW9uLgogICAgIHVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKCk7CiAKLSAgICAvLyBSZWJ1aWxkIGFsbCBkZXBlbmRlbnQgdXNlIGVs
ZW1lbnRzLgotICAgIEFTU0VSVChkb2N1bWVudCgpKTsKLSAgICBkb2N1bWVudCgpLT5hY2Nlc3NT
VkdFeHRlbnNpb25zKCktPnJlbW92ZUFsbEVsZW1lbnRSZWZlcmVuY2VzRm9yVGFyZ2V0KHRoaXMp
OwotCiAgICAgLy8gRXZlbnR1YWxseSBkdW1wIGluc3RhbmNlIHRyZWUKICNpZmRlZiBEVU1QX0lO
U1RBTkNFX1RSRUUKICAgICBTdHJpbmcgdGV4dDsKQEAgLTkxNCw2ICs5MTMsMjAgQEAgdm9pZCBT
VkdVc2VFbGVtZW50OjppbnZhbGlkYXRlU2hhZG93VHJlZSgpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX25lZWRzU2hhZG93VHJlZVJlY3JlYXRpb24gPSB0cnVlOwogICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKKyAgICBpbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKTsKK30KKwordm9p
ZCBTVkdVc2VFbGVtZW50OjppbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKQoreworICAg
IC8vIFJlY3Vyc2l2ZWx5IGludmFsaWRhdGUgZGVwZW5kZW50IDx1c2U+IHNoYWRvdyB0cmVlcwor
ICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4mIGluc3RhbmNlcyA9IGluc3Rh
bmNlc0ZvckVsZW1lbnQoKTsKKyAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0YW5jZXMuZW5kKCk7CisgICAgZm9yIChIYXNoU2V0
PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGluc3RhbmNlcy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKFNWR1VzZUVsZW1lbnQqIGVsZW1l
bnQgPSAoKml0KS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKSkgeworICAgICAgICAgICAgQVNT
RVJUKGVsZW1lbnQtPmluRG9jdW1lbnQoKSk7CisgICAgICAgICAgICBlbGVtZW50LT5pbnZhbGlk
YXRlU2hhZG93VHJlZSgpOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIFNWR1VzZUVsZW1l
bnQ6OnRyYW5zZmVyVXNlQXR0cmlidXRlc1RvUmVwbGFjZWRFbGVtZW50KFNWR0VsZW1lbnQqIGZy
b20sIFNWR0VsZW1lbnQqIHRvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKaW5k
ZXggNDZlZThiMzQxMmEwZDgxOTE5ZTUyMzZiYjBhNTE5NzVjMGEyYjU3Zi4uOGExYzBkMWUyMzdj
YjM4OGI0MzQ0OTA1YWFjM2VmZjUzYTczNzQxMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGFu
aW1hdGVkSW5zdGFuY2VSb290KCkgY29uc3Q7CiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0
YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KE5vZGUqKSBjb25zdDsKICAgICB2b2lkIGludmFsaWRh
dGVTaGFkb3dUcmVlKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMo
KTsKIAogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXJDbGlwQ2hpbGQoKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189361</attachid>
            <date>2013-02-20 13:03:15 -0800</date>
            <delta_ts>2013-02-20 13:45:12 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-97905-20130220155936.patch</filename>
            <type>text/plain</type>
            <size>4416</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzNDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI4ZjZmNDgzNDVkODZm
MTlhYjZjNDhjY2RlMjY5ZGY2M2JhYzFjMy4uODEwMDI0NDI2YzE5YWI2N2U3YzFkODFmMTdmODZl
ZjJjMmUwMDM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEzLTAyLTIwICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1NWR10gVXBkYXRl
IG9mIGVsZW1lbnQgcmVmZXJlbmNlZCBieSBtdWx0aXBsZSAndXNlJyBub2RlcyBpcyBhYnN1cmRs
eSBzbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NzkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KKworICAgICAgICBSZWJ1
aWxkaW5nIHRoZSBzaGFkb3cgYW5kIGluc3RhbmNlIHRyZWVzIG9mIGRlcGVuZGVudCB1c2Ugbm9k
ZXMgcmVjdXJzaXZlbHkgY2FuIGJlCisgICAgICAgIGV4dHJlbWVseSBpbmVmZmljaWVudCB3aXRo
IG5vbi10cml2aWFsIGRlcGVuZGVuY3kgZ3JhcGhzICh0aGUgdHJlZXMgYXJlIG5vdCBjb25zdHJ1
Y3RlZAorICAgICAgICBpbiB0b3BvbG9naWNhbCBvcmRlcikuCisKKyAgICAgICAgVG8gYXZvaWQg
cmVkdW5kYW50IGJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVlKCkgaW52b2thdGlvbnMsIHNlcGFy
YXRlIHRoZSBpbnZhbGlkYXRpb24KKyAgICAgICAgcGhhc2UgZnJvbSB0aGUgYWN0dWFsIHRyZWUg
KHJlKWJ1aWxkaW5nIHBoYXNlLCBhbmQgb25seSBkZXNjZW5kIGludG8gdGhlIGRlcGVuZGVuY3kg
REFHCisgICAgICAgIGR1cmluZyB0aGUgaW52YWxpZGF0aW9uIHBoYXNlIChyZWN1cnNpb24gYWxz
byBzdG9wcyBhdCBub2RlcyB0aGF0IGhhdmUgYmVlbiBwcmV2aW91c2x5CisgICAgICAgIGludmFs
aWRhdGVkKS4KKworICAgICAgICBObyBuZXcgdGVzdHM6IGZ1bmN0aW9uYWwgY292ZXJhZ2UgcHJv
dmlkZWQgYnkgZXhpc3RpbmcgdGVzdHMsIHBlcmZvbWFuY2UgdHJhY2tlZCBieQorICAgICAgICBQ
ZXJmb3JtYW5jZVRlc3RzL1NWRy9TdmdOZXN0ZWRVc2UuaHRtbC4KKworICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmJ1aWxk
UGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmJ1aWxk
U2hhZG93QW5kSW5zdGFuY2VUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6
OmludmFsaWRhdGVTaGFkb3dUcmVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKToKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAoU1ZHVXNlRWxlbWVudCk6CisK
IDIwMTMtMDItMjAgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGZpeCBmb3IgZnJvbnRlbmQgY2xvc3VyZSBjb21waWxlIGVy
cm9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAwYjcyY2Y2ZmYwMmE4
YWI4ZGY1MDdlYTYwNzYzNGIxMzM3OTdkZmNiLi4wZjI5NmI5ZWYxOGIwODZlOTM1ZThlZjQzMTFm
N2YxMjA3MGIzYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC00MDks
MTAgKzQwOSwxMCBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmNsZWFyUmVzb3VyY2VSZWZlcmVuY2Vz
KCkKIAogdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiB7Ci0gICAg
aWYgKCFyZWZlcmVuY2VkRG9jdW1lbnQoKSkKKyAgICBpZiAoIXJlZmVyZW5jZWREb2N1bWVudCgp
IHx8IGlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBjbGVhclJlc291cmNl
UmVmZXJlbmNlcygpOwotICAgIGlmICghaW5Eb2N1bWVudCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkp
CisgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBp
ZDsKQEAgLTQzMCw4ICs0MzAsMTEgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdS
ZXNvdXJjZSgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAodGFyZ2V0LT5pc1NW
R0VsZW1lbnQoKSkKKyAgICBpZiAodGFyZ2V0LT5pc1NWR0VsZW1lbnQoKSkgewogICAgICAgICBi
dWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZShzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0
KSk7CisgICAgICAgIGludmFsaWRhdGVEZXBlbmRlbnRTaGFkb3dUcmVlcygpOworICAgIH0KKwog
ICAgIEFTU0VSVCghbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0aW9uKTsKIH0KIApAQCAtNTE3LDEw
ICs1MjAsNiBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkU2hhZG93QW5kSW5zdGFuY2VUcmVl
KFNWR0VsZW1lbnQqIHRhcmdldCkKICAgICAvLyBVcGRhdGUgcmVsYXRpdmUgbGVuZ3RoIGluZm9y
bWF0aW9uLgogICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKLSAgICAv
LyBSZWJ1aWxkIGFsbCBkZXBlbmRlbnQgdXNlIGVsZW1lbnRzLgotICAgIEFTU0VSVChkb2N1bWVu
dCgpKTsKLSAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlYnVpbGRBbGxF
bGVtZW50UmVmZXJlbmNlc0ZvclRhcmdldCh0aGlzKTsKLQogICAgIC8vIEV2ZW50dWFsbHkgZHVt
cCBpbnN0YW5jZSB0cmVlCiAjaWZkZWYgRFVNUF9JTlNUQU5DRV9UUkVFCiAgICAgU3RyaW5nIHRl
eHQ7CkBAIC05MDYsNiArOTA1LDIwIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0ZVNo
YWRvd1RyZWUoKQogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0
aW9uID0gdHJ1ZTsKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgaW52YWxpZGF0ZURl
cGVuZGVudFNoYWRvd1RyZWVzKCk7Cit9CisKK3ZvaWQgU1ZHVXNlRWxlbWVudDo6aW52YWxpZGF0
ZURlcGVuZGVudFNoYWRvd1RyZWVzKCkKK3sKKyAgICAvLyBSZWN1cnNpdmVseSBpbnZhbGlkYXRl
IGRlcGVuZGVudCA8dXNlPiBzaGFkb3cgdHJlZXMKKyAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1l
bnRJbnN0YW5jZSo+JiBpbnN0YW5jZXMgPSBpbnN0YW5jZXNGb3JFbGVtZW50KCk7CisgICAgY29u
c3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5z
dGFuY2VzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIGlmIChTVkdVc2VFbGVtZW50KiBlbGVtZW50ID0gKCppdCktPmNvcnJlc3BvbmRpbmdV
c2VFbGVtZW50KCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5pbkRvY3VtZW50KCkp
OworICAgICAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKKyAgICAgICAg
fQorICAgIH0KIH0KIAogdm9pZCBTVkdVc2VFbGVtZW50Ojp0cmFuc2ZlclVzZUF0dHJpYnV0ZXNU
b1JlcGxhY2VkRWxlbWVudChTVkdFbGVtZW50KiBmcm9tLCBTVkdFbGVtZW50KiB0bykgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IGI3ZDA5NjY0ZmE1OTZhNGRjMTZiMTg2
Y2IzZmZmNmQxZDgzZjZjYzQuLmE3YTFlYWY4MDUyZmY3OWQ5YzkzNjBhMWNkOWE5ZDJjMmM1MmQ0
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJs
aWM6CiAgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBhbmltYXRlZEluc3RhbmNlUm9vdCgpIGNvbnN0
OwogICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChO
b2RlKikgY29uc3Q7CiAgICAgdm9pZCBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOworICAgIHZvaWQg
aW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKCk7CiAKICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyQ2xpcENoaWxkKCkgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>