<?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>47424</bug_id>
          
          <creation_ts>2010-10-08 11:06:29 -0700</creation_ts>
          <short_desc>unlink removes inline style of anchor elements</short_desc>
          <delta_ts>2010-10-15 21:10:43 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>47428</dependson>
          <blocked>47710</blocked>
    
    <blocked>43017</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>jparent</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>291765</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-08 11:06:29 -0700</bug_when>
    <thetext>WebKit removes all inline style declaration from anchor elements on unlink.

Reproduction steps:
1. Goto http://www.mozilla.org/editor/midasdemo/
2. Type in the following HTML in HTML source mode.
hello
&lt;a href=&quot;/&quot; style=&quot;font-weight: bold;display:block;&quot;&gt;world&lt;/a&gt;
WebKit
3. Select all
4. Unlink

Expected result (Firefox and Internet Explorer get this result):
hello
&lt;span style=&quot;style-weight: bold;display:block;&quot;&gt;world
WebKit

Actual result:
hello world WebKit.

Both .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291788</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-08 11:48:32 -0700</bug_when>
    <thetext>Weird.  Now it seems like the only Firefox does this (Internet Explorer does not preserve style).
Firefox also removes all other attributes such as lang, title, and class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292234</commentid>
    <comment_count>2</comment_count>
      <attachid>70382</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-09 17:47:45 -0700</bug_when>
    <thetext>Created attachment 70382
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293007</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-12 11:33:00 -0700</bug_when>
    <thetext>I&apos;m stuck with this bug because preserving style may introduce multiple nodes into DOM and we currently don&apos;t have a good way of dealing with this situation if styles were to contain non-inline styles.

If we&apos;re removing a as in
&lt;a href=&quot;/&quot; style=&quot;font-weight:bold;&quot;&gt;&lt;div id=&quot;div1&quot;&gt;hello&lt;/div&gt;world&lt;/a&gt;

Then we must replace a with a block element or push the style down into child nodes.  Or we either get
&lt;div style=&quot;font-weight:bold;&quot;&gt;&lt;div id=&quot;div1&quot;&gt;hello&lt;/div&gt;world&lt;/div&gt;
or
&lt;div id=&quot;div1&quot; style=&quot;font-weight:bold;&quot;&gt;hello&lt;/div&gt;world

However, we if we had
&lt;a href=&quot;/&quot; style=&quot;font-weight:bold;&quot;&gt;&lt;i&gt;hello&lt;/i&gt;world&lt;/a&gt;WebKit

we must get:
&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;i&gt;hello&lt;/i&gt;world&lt;/span&gt;WebKit
or
&lt;b&gt;&lt;i&gt;hello&lt;/i&gt;world&lt;/b&gt;WebKit

On the other hand, if we had
&lt;a href=&quot;/&quot; style=&quot;font-weight:bold;&quot;&gt;&lt;div&gt;hello&lt;/div&gt;world&lt;/a&gt;WebKit

we can&apos;t replace a with anything.  we ought to get:
&lt;div style=&quot;font-weight: bold;&quot;&gt;hello&lt;/div&gt;&lt;b&gt;world&lt;/b&gt;
or some variant of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294558</commentid>
    <comment_count>4</comment_count>
      <attachid>70826</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-14 20:21:27 -0700</bug_when>
    <thetext>Created attachment 70826
fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294826</commentid>
    <comment_count>5</comment_count>
      <attachid>70826</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-10-15 11:11:07 -0700</bug_when>
    <thetext>Comment on attachment 70826
fixes the bug

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

&gt; WebCore/editing/ApplyStyleCommand.cpp:1229
&gt;      if (m_styledInlineElement &amp;&amp; element-&gt;hasTagName(m_styledInlineElement-&gt;tagQName())) {
&gt; -        if (mode != RemoveNone) {
&gt; -            if (extractedStyle &amp;&amp; element-&gt;inlineStyleDecl())
&gt; -                extractedStyle-&gt;merge(element-&gt;inlineStyleDecl());
&gt; -            removeNodePreservingChildren(element);
&gt; -        }
&gt; +        if (mode == RemoveNone)
&gt; +            return true;
&gt; +        ASSERT(extractedStyle);
&gt; +        if (element-&gt;inlineStyleDecl())
&gt; +            extractedStyle-&gt;merge(element-&gt;inlineStyleDecl());
&gt; +        removeNodePreservingChildren(element);
&gt;          return true;
&gt;      }

This seems to be entirely refactoring and not part of the bug fix. Might be nice to land it separately.

&gt; WebCore/editing/ApplyStyleCommand.cpp:1592
&gt; +            Node* childNode = 0;

It seems dangerous that this is a raw pointer. Can’t removeInlineStyleFromElement result in some kind of mutation?

&gt; WebCore/editing/ApplyStyleCommand.cpp:1598
&gt; +            removeInlineStyleFromElement(style.get(), elem,  RemoveIfNeeded, styleToPushDown.get());

Two spaces here after one of the commas.

&gt; WebCore/editing/ApplyStyleCommand.cpp:1616
&gt; +                for (;childNode; childNode = childNode-&gt;nextSibling())

Please put a space after that first semicolon.

&gt; WebCore/editing/ApplyStyleCommand.cpp:1880
&gt; +    Position positionToComputeStyle;

Not quite a grammatical name. Maybe positionForStyleComputation instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294916</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-15 14:12:15 -0700</bug_when>
    <thetext>Thanks for reviewing all my patches today!  And I&apos;m always impressed with how thorough your reviews are.

(In reply to comment #5)
&gt; (From update of attachment 70826 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70826&amp;action=review
&gt; 
&gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:1229
&gt; &gt;      if (m_styledInlineElement &amp;&amp; element-&gt;hasTagName(m_styledInlineElement-&gt;tagQName())) {
&gt; &gt; -        if (mode != RemoveNone) {
&gt; &gt; -            if (extractedStyle &amp;&amp; element-&gt;inlineStyleDecl())
&gt; &gt; -                extractedStyle-&gt;merge(element-&gt;inlineStyleDecl());
&gt; &gt; -            removeNodePreservingChildren(element);
&gt; &gt; -        }
&gt; &gt; +        if (mode == RemoveNone)
&gt; &gt; +            return true;
&gt; &gt; +        ASSERT(extractedStyle);
&gt; &gt; +        if (element-&gt;inlineStyleDecl())
&gt; &gt; +            extractedStyle-&gt;merge(element-&gt;inlineStyleDecl());
&gt; &gt; +        removeNodePreservingChildren(element);
&gt; &gt;          return true;
&gt; &gt;      }
&gt; 
&gt; This seems to be entirely refactoring and not part of the bug fix. Might be nice to land it separately.

Not really.  This change makes sure that extractedStyle is always specified when mode isn&apos;t RemoveNone to prevent making the same mistakes.  We should never be calling removeInlineStyleFromElement when mode is removeNone and element is a styled inline element because that result in a loss of inline style declaration.  I added a comment to WebCore/ChangeLog.

&gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:1592
&gt; &gt; +            Node* childNode = 0;
&gt; 
&gt; It seems dangerous that this is a raw pointer. Can’t removeInlineStyleFromElement result in some kind of mutation?

Good point. Changed node, next, prev, next, and childNode to RefPtr&lt;Node&gt;.

&gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:1598
&gt; &gt; +            removeInlineStyleFromElement(style.get(), elem,  RemoveIfNeeded, styleToPushDown.get());
&gt; 
&gt; Two spaces here after one of the commas.

Fixed.

&gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:1616
&gt; &gt; +                for (;childNode; childNode = childNode-&gt;nextSibling())
&gt; 
&gt; Please put a space after that first semicolon.

Fixed.

&gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:1880
&gt; &gt; +    Position positionToComputeStyle;
&gt; 
&gt; Not quite a grammatical name. Maybe positionForStyleComputation instead?

Renamed to positionForStyle&quot;Comparison&quot; because the position is used to take the diff of the style at that position and the style we&apos;re applying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295106</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-15 21:10:43 -0700</bug_when>
    <thetext>Committed r69910: &lt;http://trac.webkit.org/changeset/69910&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70382</attachid>
            <date>2010-10-09 17:47:45 -0700</date>
            <delta_ts>2010-10-14 20:21:23 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-47424-20101009174743.patch</filename>
            <type>text/plain</type>
            <size>9222</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTQ2MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMTAtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdW5s
aW5rIHJlbW92ZXMgaW5saW5lIHN0eWxlIG9mIGFuY2hvciBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0MjQKKworICAgICAgICBUaGUg
YnVnIHdhcyBjYXVzZWQgYnkgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCBhbHdheXMgcmVt
b3ZpbmcgdGhlIHN0eWxlZCBlbGVtZW50IGV2ZW4gd2hlbiBpdCBoYXMgaW5saW5lIHN0eWxlIGRl
Y2xhcmF0aW9uLgorICAgICAgICBGaXhlZCB0aGUgYnVnIGJ5IHJlcGxhY2luZyB0aGUgc3R5bGVk
IGVsZW1lbnQgYnkgYSBzcGFuIHdoaWxlIHByZXNlcnZpbmcgdGhlIHN0eWxlIGF0dHJpYnV0ZS4g
IFdlIGNhbm5vdCBkbyB0aGlzIHJlcGxhY2VtZW50CisgICAgICAgIHdoZW4gd2UgYXJlIHB1c2hp
bmcgZG93biBzdHlsZSBiZWNhdXNlIGl0IHByZXZlbnRzIGFwcGx5SW5saW5lU3R5bGVUb05vZGVS
YWdlIGZyb20gZXh0ZW5kaW5nIGEgcnVuIHByb3Blcmx5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKE9PUFMhKQorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGVGcm9t
RWxlbWVudCk6IFJlcGxhY2VzIHRoZSBzdHlsZWQgZWxlbWVudCBieSBhIHNwYW4gd2hlbiBleHRy
YWN0ZWRTdHlsZSA9IDAuCisgICAgICAgICogZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVwbGFjZU5vZGVX
aXRoU3BhblByZXNlcnZpbmdDaGlsZHJlbkFuZEF0dHJpYnV0ZXMpOiBDYWxscyBSZXBsYWNlTm9k
ZVdpdGhTcGFuQ29tbWFuZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUVkaXRDb21tYW5k
OjpyZXBsYWNlTm9kZVdpdGhTcGFuUHJlc2VydmluZ0NoaWxkcmVuQW5kU3R5bGVBdHRyaWJ1dGUp
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAg
ICAgICogZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6UmVwbGFjZU5vZGVXaXRoU3BhbkNv
bW1hbmQpOiBBZGRlZCBBdHRyaWJ1dGVzVG9Db3B5IHRvIHRoZSBhcmd1bWVudCBsaXN0LgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OnN3YXBJbk5vZGVQcmVz
ZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKTogQ29udmVydGVkIHRvIGEgbWVtYmVyIGZ1bmN0
aW9uIGJlY2F1c2UKKyAgICAgICAgaXQgc2VlbXMgdG8gc2VlIHRoZSB2YWx1ZSBvZiBtX2F0dHJp
YnV0ZXNUb0NvcHkuCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFu
ZC5oOiBBZGRlZCBBdHRyaWJ1dGVzVG9Db3B5LgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZU5v
ZGVXaXRoU3BhbkNvbW1hbmQ6OmNyZWF0ZSk6IEFkZGVkIEF0dHJpYnV0ZXNUb0NvcHkgdG8gdGhl
IGFyZ3VtZW50IGxpc3QuCisKIDIwMTAtMTAtMDkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDY5NDU5KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMTUwLDcgKzIxMTUwLDYgQEAKIAkJCWlzYSA9IFBCWFByb2pl
Y3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZD
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87
CiAJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRS
ZWdpb24gPSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93
blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcAkocmV2aXNpb24gNjk0NTkpCisrKyBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHls
ZUNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjE4LDE2ICsxMjE4LDI3IEBAIGJvb2wg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKICAgICBpZiAoIWVsZW1lbnQtPnBh
cmVudE5vZGUoKSB8fCAhZWxlbWVudC0+cGFyZW50Tm9kZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBib29sIHJlbW92ZWQgPSBmYWxzZTsKICAg
ICBpZiAobV9zdHlsZWRJbmxpbmVFbGVtZW50ICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUobV9zdHls
ZWRJbmxpbmVFbGVtZW50LT50YWdRTmFtZSgpKSkgewotICAgICAgICBpZiAobW9kZSAhPSBSZW1v
dmVOb25lKSB7Ci0gICAgICAgICAgICBpZiAoZXh0cmFjdGVkU3R5bGUgJiYgZWxlbWVudC0+aW5s
aW5lU3R5bGVEZWNsKCkpCisgICAgICAgIGlmIChtb2RlID09IFJlbW92ZU5vbmUpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gV2hlbiBwdXNoaW5nIGRvd24gc3R5bGUsIHdl
IHNob3VsZG4ndCBiZSByZXBsYWNpbmcgc3R5bGVkIGVsZW1lbnQgYnkgc3BhbgorICAgICAgICAv
LyBzaW5jZSB3ZSB3aWxsIGFwcGx5IHRoZSBleHRyYWN0ZWQgc3R5bGUgbGF0ZXIuCisgICAgICAg
IGlmIChleHRyYWN0ZWRTdHlsZSkgeworICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmlubGluZVN0
eWxlRGVjbCgpKQogICAgICAgICAgICAgICAgIGV4dHJhY3RlZFN0eWxlLT5tZXJnZShlbGVtZW50
LT5pbmxpbmVTdHlsZURlY2woKSk7CiAgICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0No
aWxkcmVuKGVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGVsZW1lbnQgPSByZXBsYWNlTm9kZVdpdGhTcGFu
UHJlc2VydmluZ0NoaWxkcmVuQW5kU3R5bGVBdHRyaWJ1dGUoZWxlbWVudCk7CisgICAgICAgIGlm
IChpc1NwYW5XaXRob3V0QXR0cmlidXRlc09yVW5zdHlsZVN0eWxlU3BhbihlbGVtZW50KSkgewor
ICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKSk7CisgICAgICAg
ICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKGVsZW1lbnQpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlZCA9IHRydWU7CiAgICAgfQog
Ci0gICAgYm9vbCByZW1vdmVkID0gZmFsc2U7CiAgICAgaWYgKHJlbW92ZUltcGxpY2l0bHlTdHls
ZWRFbGVtZW50KHN0eWxlLCBlbGVtZW50LCBtb2RlLCBleHRyYWN0ZWRTdHlsZSkpCiAgICAgICAg
IHJlbW92ZWQgPSB0cnVlOwogCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENv
bW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAJKHJldmlzaW9uIDY5NDU5KQorKysgV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVk
aXRDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI2LDExICsyMjYsMTkgQEAgSFRNTEVs
ZW1lbnQqIENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYQogICAgIC8vIEl0IHdvdWxkIGFsc28g
YmUgcG9zc2libGUgdG8gaW1wbGVtZW50IGFsbCBvZiBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFu
ZAogICAgIC8vIGFzIGEgc2VyaWVzIG9mIGV4aXN0aW5nIHNtYWxsZXIgZWRpdCBjb21tYW5kcy4g
IFNvbWVvbmUgd2hvIHdhbnRlZCB0bwogICAgIC8vIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGVkaXQg
Y29tbWFuZHMgY291bGQgZG8gc28gaGVyZS4KLSAgICBSZWZQdHI8UmVwbGFjZU5vZGVXaXRoU3Bh
bkNvbW1hbmQ+IGNvbW1hbmQgPSBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6Y3JlYXRlKG5v
ZGUpOworICAgIFJlZlB0cjxSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZD4gY29tbWFuZCA9IFJl
cGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpjcmVhdGUobm9kZSwgUmVwbGFjZU5vZGVXaXRoU3Bh
bkNvbW1hbmQ6OkFsbEF0dHJpYnV0ZXMpOwogICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKGNv
bW1hbmQpOwogICAgIC8vIFJldHVybmluZyBhIHJhdyBwb2ludGVyIGhlcmUgaXMgT0sgYmVjYXVz
ZSB0aGUgY29tbWFuZCBpcyByZXRhaW5lZCBieQogICAgIC8vIGFwcGx5Q29tbWFuZFRvQ29tcG9z
aXRlICh0aHVzIHJldGFpbmluZyB0aGUgc3BhbiksIGFuZCB0aGUgc3BhbiBpcyBhbHNvCi0gICAg
Ly8gaW4gdGhlIERPTSB0cmVlLCBhbmQgdGh1cyBhbGl2ZSB3aGllIGl0IGhhcyBhIHBhcmVudC4K
KyAgICAvLyBpbiB0aGUgRE9NIHRyZWUsIGFuZCB0aHVzIGFsaXZlIHdoaWxlIGl0IGhhcyBhIHBh
cmVudC4KKyAgICBBU1NFUlQoY29tbWFuZC0+c3BhbkVsZW1lbnQoKS0+aW5Eb2N1bWVudCgpKTsK
KyAgICByZXR1cm4gY29tbWFuZC0+c3BhbkVsZW1lbnQoKTsKK30KKworSFRNTEVsZW1lbnQqIENv
bXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNlTm9kZVdpdGhTcGFuUHJlc2VydmluZ0NoaWxkcmVu
QW5kU3R5bGVBdHRyaWJ1dGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKQoreworICAgIFJlZlB0cjxS
ZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZD4gY29tbWFuZCA9IFJlcGxhY2VOb2RlV2l0aFNwYW5D
b21tYW5kOjpjcmVhdGUobm9kZSwgUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OlN0eWxlQXR0
cmlidXRlKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShjb21tYW5kKTsKICAgICBBU1NF
UlQoY29tbWFuZC0+c3BhbkVsZW1lbnQoKS0+aW5Eb2N1bWVudCgpKTsKICAgICByZXR1cm4gY29t
bWFuZC0+c3BhbkVsZW1lbnQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oCShyZXZpc2lvbiA2OTQ1OSkKKysrIFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHJlbW92ZUNoaWxkcmVuSW5SYW5nZShQYXNzUmVmUHRyPE5vZGU+LCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCB0byk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGUoUGFzc1Jl
ZlB0cjxOb2RlPik7CiAgICAgSFRNTEVsZW1lbnQqIHJlcGxhY2VOb2RlV2l0aFNwYW5QcmVzZXJ2
aW5nQ2hpbGRyZW5BbmRBdHRyaWJ1dGVzKFBhc3NSZWZQdHI8Tm9kZT4pOworICAgIEhUTUxFbGVt
ZW50KiByZXBsYWNlTm9kZVdpdGhTcGFuUHJlc2VydmluZ0NoaWxkcmVuQW5kU3R5bGVBdHRyaWJ1
dGUoUGFzc1JlZlB0cjxOb2RlPiBub2RlKTsKICAgICB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5n
Q2hpbGRyZW4oUGFzc1JlZlB0cjxOb2RlPik7CiAgICAgdm9pZCByZW1vdmVOb2RlQW5kUHJ1bmVB
bmNlc3RvcnMoUGFzc1JlZlB0cjxOb2RlPik7CiAgICAgdm9pZCBwcnVuZShQYXNzUmVmUHRyPE5v
ZGU+KTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21t
YW5kLmNwcAkocmV2aXNpb24gNjk0NTkpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVX
aXRoU3BhbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNCArNDEsMTUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1SZXBsYWNl
Tm9kZVdpdGhTcGFuQ29tbWFuZDo6UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQoUGFzc1JlZlB0
cjxOb2RlPiBub2RlKQorUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OlJlcGxhY2VOb2RlV2l0
aFNwYW5Db21tYW5kKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgQXR0cmlidXRlc1RvQ29weSBhdHRy
aWJ1dGVzVG9Db3B5KQogICAgIDogU2ltcGxlRWRpdENvbW1hbmQobm9kZS0+ZG9jdW1lbnQoKSkK
ICAgICAsIG1fbm9kZShub2RlKQorICAgICwgbV9hdHRyaWJ1dGVzVG9Db3B5KGF0dHJpYnV0ZXNU
b0NvcHkpCiB7CiAgICAgQVNTRVJUKG1fbm9kZSk7CiB9CiAKLXN0YXRpYyB2b2lkIHN3YXBJbk5v
ZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKE5vZGUqIG5ld05vZGUsIE5vZGUqIG5v
ZGVUb1JlcGxhY2UpCit2b2lkIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kOjpzd2FwSW5Ob2Rl
UHJlc2VydmluZ0F0dHJpYnV0ZXNBbmRDaGlsZHJlbihOb2RlKiBuZXdOb2RlLCBOb2RlKiBub2Rl
VG9SZXBsYWNlKQogewogICAgIEFTU0VSVChub2RlVG9SZXBsYWNlLT5pbkRvY3VtZW50KCkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtNjMsNyArNjQsMTUgQEAgc3RhdGljIHZvaWQg
c3dhcEluTm9kZVByZXNlcnZpbmdBdHRyaWJ1dAogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9
CiAKLSAgICBuZXdOb2RlLT5hdHRyaWJ1dGVzKCktPnNldEF0dHJpYnV0ZXMoKm5vZGVUb1JlcGxh
Y2UtPmF0dHJpYnV0ZXMoKSk7CisgICAgaWYgKG1fYXR0cmlidXRlc1RvQ29weSA9PSBBbGxBdHRy
aWJ1dGVzKQorICAgICAgICBuZXdOb2RlLT5hdHRyaWJ1dGVzKCktPnNldEF0dHJpYnV0ZXMoKm5v
ZGVUb1JlcGxhY2UtPmF0dHJpYnV0ZXMoKSk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCht
X2F0dHJpYnV0ZXNUb0NvcHkgPT0gU3R5bGVBdHRyaWJ1dGUpOworICAgICAgICBuZXdOb2RlLT5h
dHRyaWJ1dGVzKCktPnJlbW92ZUF0dHJpYnV0ZShzdHlsZUF0dHIpOworICAgICAgICBBdHRyaWJ1
dGUqIHN0eWxlID0gbm9kZVRvUmVwbGFjZS0+YXR0cmlidXRlcygpLT5nZXRBdHRyaWJ1dGVJdGVt
KHN0eWxlQXR0cik7CisgICAgICAgIGlmIChzdHlsZSkKKyAgICAgICAgICAgIG5ld05vZGUtPmF0
dHJpYnV0ZXMoKS0+YWRkQXR0cmlidXRlKHN0eWxlKTsKKyAgICB9CiAKICAgICBwYXJlbnROb2Rl
LT5yZW1vdmVDaGlsZChub2RlVG9SZXBsYWNlLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CkluZGV4
OiBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaAkocmV2aXNp
b24gNjk0NTkpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDAsMjEgKzQwLDI2IEBAIGNsYXNzIEhUTUxFbGVtZW50Owog
Ly8gTW9yZSBhY2N1cmF0ZWx5LCB0aGlzIGlzIFJlcGxhY2VOb2RlV2l0aFNwYW5QcmVzZXJ2aW5n
Q2hpbGRyZW5BbmRBdHRyaWJ1dGVzQ29tbWFuZAogY2xhc3MgUmVwbGFjZU5vZGVXaXRoU3BhbkNv
bW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENvbW1hbmQgewogcHVibGljOgotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxO
b2RlPiBub2RlKQorICAgIGVudW0gQXR0cmlidXRlc1RvQ29weSB7IEFsbEF0dHJpYnV0ZXMsIFN0
eWxlQXR0cmlidXRlIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXBsYWNlTm9kZVdpdGhT
cGFuQ29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgQXR0cmlidXRlc1RvQ29w
eSBhdHRyaWJ1dGVzVG9Db3B5ICkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQobm9kZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kKG5vZGUsIGF0dHJpYnV0ZXNUb0NvcHkp
KTsKICAgICB9CiAKICAgICBIVE1MRWxlbWVudCogc3BhbkVsZW1lbnQoKSB7IHJldHVybiBtX3Nw
YW5FbGVtZW50LmdldCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgUmVwbGFjZU5vZGVXaXRoU3BhbkNv
bW1hbmQoUGFzc1JlZlB0cjxOb2RlPik7CisgICAgUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQo
UGFzc1JlZlB0cjxOb2RlPiwgQXR0cmlidXRlc1RvQ29weSk7CisKKyAgICB2b2lkIHN3YXBJbk5v
ZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKE5vZGUqIG5ld05vZGUsIE5vZGUqIG5v
ZGVUb1JlcGxhY2UpOwogCiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZG9VbmFwcGx5KCk7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAgIFJlZlB0
cjxIVE1MRWxlbWVudD4gbV9zcGFuRWxlbWVudDsKKyAgICBBdHRyaWJ1dGVzVG9Db3B5IG1fYXR0
cmlidXRlc1RvQ29weTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70826</attachid>
            <date>2010-10-14 20:21:27 -0700</date>
            <delta_ts>2010-10-15 11:11:07 -0700</delta_ts>
            <desc>fixes the bug</desc>
            <filename>bug-47424-20101014202125.patch</filename>
            <type>text/plain</type>
            <size>16034</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2OTgzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMTAtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdW5s
aW5rIHJlbW92ZXMgaW5saW5lIHN0eWxlIG9mIGFuY2hvciBlbGVtZW50cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0MjQKKworICAgICAgICBUaGUg
YnVnIHdhcyBjYXVzZWQgYnkgb3VyIG5vdCBleHRyYWN0aW5nIHN0eWxlcyB3aGVuIHRoZSBhbmNo
b3IgZWxlbWVudCBpcyByZW1vdmVkIGJ5IHJlbW92ZUlubGluZVN0eWxlLgorICAgICAgICBCZWNh
dXNlIHdlIHJlbW92ZWQgdGhlIGVsZW1lbnQgd2l0aG91dCBwdXNoaW5nIGl0cyBpbmxpbmUgc3R5
bGUgZG93biwgd2UgbG9zdCBzdHlsZSBpbmZvcm1hdGlvbi4KKworICAgICAgICBGaXhlZCB0aGUg
YnVnIGJ5IHB1c2hpbmcgZG93biBzdHlsZXMgaW4gcmVtb3ZlSW5saW5lU3R5bGUgYXMgZG9uZSBp
biBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZS4KKyAgICAgICAgQWxzbyBmaXhlZCBhIGJ1
ZyBpbiBhZGRJbmxpbmVTdHlsZUlmTmVlZGVkIHdoZXJlIFN0eWxlQ2hhbmdlIGluY29ycmVjdGx5
IHJlbW92ZWQgc3R5bGVzIG9mIHRoZSBjb250YWluZXIKKyAgICAgICAgbm9kZSBhcyBzdXBwb3Nl
ZCB0byB0aGF0IG9mIHN0YXJ0Tm9kZSBmcm9tIHRoZSBzdHlsZSB0byBhcHBseSB3aGVuIHN0YXJ0
Tm9kZSBpcyBub3QgYW4gZWxlbWVudC4KKworICAgICAgICBUZXN0OiBlZGl0aW5nL2V4ZWNDb21t
YW5kL3RvZ2dsZS11bmxpbmsuaHRtbAorCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5s
aW5lU3R5bGVGcm9tRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFu
ZDo6cmVtb3ZlSW5saW5lU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1h
bmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQpOgorCiAyMDEwLTEwLTE0ICBKdXN0aW4gU2NodWgg
IDxqc2NodWhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmlu
c29uLgpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA2
OTQ1OSkKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMTksMTEgKzEyMTksMTIgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVt
b3ZlSW5saW5lU3R5bAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAobV9zdHlsZWRJ
bmxpbmVFbGVtZW50ICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUobV9zdHlsZWRJbmxpbmVFbGVtZW50
LT50YWdRTmFtZSgpKSkgewotICAgICAgICBpZiAobW9kZSAhPSBSZW1vdmVOb25lKSB7Ci0gICAg
ICAgICAgICBpZiAoZXh0cmFjdGVkU3R5bGUgJiYgZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkp
Ci0gICAgICAgICAgICAgICAgZXh0cmFjdGVkU3R5bGUtPm1lcmdlKGVsZW1lbnQtPmlubGluZVN0
eWxlRGVjbCgpKTsKLSAgICAgICAgICAgIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oZWxl
bWVudCk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKG1vZGUgPT0gUmVtb3ZlTm9uZSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBBU1NFUlQoZXh0cmFjdGVkU3R5bGUpOworICAg
ICAgICBpZiAoZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkpCisgICAgICAgICAgICBleHRyYWN0
ZWRTdHlsZS0+bWVyZ2UoZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkpOworICAgICAgICByZW1v
dmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKGVsZW1lbnQpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTE1ODcsNyArMTU4OCwxNCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpy
ZW1vdmVJbmxpbmVTdHlsCiAgICAgICAgICAgICBIVE1MRWxlbWVudCogZWxlbSA9IHN0YXRpY19j
YXN0PEhUTUxFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgICAgICBOb2RlKiBwcmV2ID0gZWxlbS0+
dHJhdmVyc2VQcmV2aW91c05vZGVQb3N0T3JkZXIoKTsKICAgICAgICAgICAgIE5vZGUqIG5leHQg
PSBlbGVtLT50cmF2ZXJzZU5leHROb2RlKCk7Ci0gICAgICAgICAgICByZW1vdmVJbmxpbmVTdHls
ZUZyb21FbGVtZW50KHN0eWxlLmdldCgpLCBlbGVtKTsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVUb1B1c2hEb3duOworICAgICAgICAgICAgTm9k
ZSogY2hpbGROb2RlID0gMDsKKyAgICAgICAgICAgIGlmIChtX3N0eWxlZElubGluZUVsZW1lbnQg
JiYgZWxlbS0+aGFzVGFnTmFtZShtX3N0eWxlZElubGluZUVsZW1lbnQtPnRhZ1FOYW1lKCkpKSB7
CisgICAgICAgICAgICAgICAgc3R5bGVUb1B1c2hEb3duID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IGVsZW0tPmZpcnN0
Q2hpbGQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVG
cm9tRWxlbWVudChzdHlsZS5nZXQoKSwgZWxlbSwgIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVz
aERvd24uZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFlbGVtLT5pbkRvY3VtZW50KCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAocy5ub2RlKCkgPT0gZWxlbSkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBTaW5jZSBlbGVtIG11c3QgaGF2ZSBiZWVuIGZ1bGx5IHNlbGVjdGVkLCBhbmQgaXQgaXMg
YXQgdGhlIHN0YXJ0CkBAIC0xNjAzLDYgKzE2MTEsMTEgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFu
ZDo6cmVtb3ZlSW5saW5lU3R5bAogICAgICAgICAgICAgICAgICAgICBlID0gUG9zaXRpb24ocHJl
diwgbGFzdE9mZnNldEZvckVkaXRpbmcocHJldikpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHN0eWxlVG9QdXNoRG93bikgeworICAgICAgICAg
ICAgICAgIGZvciAoO2NoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLT5uZXh0U2libGlu
ZygpKQorICAgICAgICAgICAgICAgICAgICBhcHBseUlubGluZVN0eWxlVG9QdXNoRG93bihjaGls
ZE5vZGUsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKG5vZGUgPT0gZW5kLm5vZGUoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTg2Myw3ICsxODc2LDE5IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFkZEJsb2NrU3R5bGUo
Y28KIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWZOZWVkZWQoQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24gKnN0eWxlLCBOb2RlICpzdGFydE5vZGUsIE5vZGUgKmVuZE5v
ZGUsIEVBZGRTdHlsZWRFbGVtZW50IGFkZFN0eWxlZEVsZW1lbnQpCiB7CiAgICAgLy8gSXQncyBv
a2F5IHRvIG9idGFpbiB0aGUgc3R5bGUgYXQgdGhlIHN0YXJ0Tm9kZSBiZWNhdXNlIHdlJ3ZlIHJl
bW92ZWQgYWxsIHJlbGV2YW50IHN0eWxlcyBmcm9tIHRoZSBjdXJyZW50IHJ1bi4KLSAgICBTdHls
ZUNoYW5nZSBzdHlsZUNoYW5nZShzdHlsZSwgUG9zaXRpb24oc3RhcnROb2RlLCAwKSk7CisgICAg
UmVmUHRyPEhUTUxFbGVtZW50PiBkdW1teUVsZW1lbnQ7CisgICAgUG9zaXRpb24gcG9zaXRpb25U
b0NvbXB1dGVTdHlsZTsKKyAgICBpZiAoIXN0YXJ0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7Cisg
ICAgICAgIGR1bW15RWxlbWVudCA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoZG9jdW1lbnQoKSk7
CisgICAgICAgIGluc2VydE5vZGVBdChkdW1teUVsZW1lbnQsIHBvc2l0aW9uQmVmb3JlTm9kZShz
dGFydE5vZGUpKTsKKyAgICAgICAgcG9zaXRpb25Ub0NvbXB1dGVTdHlsZSA9IHBvc2l0aW9uQmVm
b3JlTm9kZShkdW1teUVsZW1lbnQuZ2V0KCkpOworICAgIH0gZWxzZQorICAgICAgICBwb3NpdGlv
blRvQ29tcHV0ZVN0eWxlID0gZmlyc3RQb3NpdGlvbkluTm9kZShzdGFydE5vZGUpOworCisgICAg
U3R5bGVDaGFuZ2Ugc3R5bGVDaGFuZ2Uoc3R5bGUsIHBvc2l0aW9uVG9Db21wdXRlU3R5bGUpOwor
CisgICAgaWYgKGR1bW15RWxlbWVudCkKKyAgICAgICAgcmVtb3ZlTm9kZShkdW1teUVsZW1lbnQp
OwogCiAgICAgLy8gRmluZCBhcHByb3ByaWF0ZSBmb250IGFuZCBzcGFuIGVsZW1lbnRzIHRvcC1k
b3duLgogICAgIEhUTUxFbGVtZW50KiBmb250Q29udGFpbmVyID0gMDsKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDY5ODM1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTAtMTAtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgdW5saW5r
IHJlbW92ZXMgaW5saW5lIHN0eWxlIG9mIGFuY2hvciBlbGVtZW50cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0MjQKKworICAgICAgICBBZGRlZCBh
IHRlc3QgdG8gZW5zdXJlIGV4ZWNDb21tYW5kKCd1bmxpbmsnLCBmYWxzZSwgbnVsbCkgcHJlc2Vy
dmVzIHRoZSBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb24uCisKKyAgICAgICAgKiBlZGl0aW5nL2V4
ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUtdW5saW5rLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3RTaW5nbGVUb2dnbGUpOgorICAgICAgICAoc2VsZWN0QWxsKToKKyAgICAgICAgKHNlbGVj
dEZpcnN0VHdvV29yZHMpOgorICAgICAgICAoc2VsZWN0TGFzdFR3b1dvcmRzKToKKyAgICAgICAg
KHNlbGVjdExhc3RXb3JkKToKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS11
bmxpbmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5k
L3RvZ2dsZS11bmxpbmsuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zdHlsZS9zY3Jp
cHQtdGVzdHMvbWFrZS10ZXh0LXdyaXRpbmctZGlyZWN0aW9uLWlubGluZS5qczogU3BlY2lmaWVz
IGJvdGggZGlyZWN0aW9uCisgICAgICAgIGFuZCB1bmljb2RlLWJpZGkgcHJvcGVydGllcyBpbnN0
ZWFkIG9mIGp1c3QgZGlyZWN0aW9uIHByb3BlcnR5LgorCiAyMDEwLTEwLTE0ICBLaW51a28gWWFz
dWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBhc3NzaWdu
ZWQgYSBidWcgbnVtYmVyIHRvIGZhaWxpbmcgZmlsZXN5c3RlbSB0ZXN0cy4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXVubGluay1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtdW5saW5r
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvdG9nZ2xlLXVubGluay1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjIgQEAKK1Rlc3QgdG8gbWFrZSBzdXJlIHdlIHByZXNlcnZlIHN0eWxlcyB3aGVuIHJlbW92aW5n
IGxpbmtzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHVubGluayBvbiBh
bGwgb2YgImhlbGxvIDxiPndvcmxkPC9iPiIgeWllbGRzICJoZWxsbyA8Yj53b3JsZDwvYj4iCitQ
QVNTIHVubGluayBvbiBhbGwgb2YgIjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+PHU+aGVs
bG8gd29ybGQ8L3U+PC9hPiIgeWllbGRzICI8dT5oZWxsbyB3b3JsZDwvdT4iCitQQVNTIHVubGlu
ayBvbiBhbGwgb2YgImhlbGxvIDxpPjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+d29ybGQ8
L2E+PC9pPiIgeWllbGRzICJoZWxsbyA8aT53b3JsZDwvaT4iCitQQVNTIHVubGluayBvbiBhbGwg
b2YgImhlbGxvIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtd2VpZ2h0
OiBib2xkOyI+d29ybGQ8L2E+IiB5aWVsZHMgImhlbGxvIDxiPndvcmxkPC9iPiIKK1BBU1MgdW5s
aW5rIG9uIGFsbCBvZiAiaGVsbG8gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIiBzdHlsZT0i
Y29sb3I6IGJsdWU7Ij53b3JsZDwvYT4gV2ViS2l0IiB5aWVsZHMgImhlbGxvIDxmb250IGNsYXNz
PSJBcHBsZS1zdHlsZS1zcGFuIiBjb2xvcj0iIzAwMDBGRiI+d29ybGQ8L2ZvbnQ+IFdlYktpdCIK
K1BBU1MgdW5saW5rIG9uIGFsbCBvZiAiaGVsbG8gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcv
IiBzdHlsZT0iY29sb3I6IGJsdWU7IGRpc3BsYXk6IGJsb2NrOyI+d29ybGQ8L2E+IFdlYktpdCIg
eWllbGRzICJoZWxsbyA8Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgY29sb3I9IiMwMDAw
RkYiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7
Ij53b3JsZDwvc3Bhbj48L2ZvbnQ+IFdlYktpdCIKK1BBU1MgdW5saW5rIG9uIGxhc3QgdHdvIHdv
cmRzIG9mICI8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iIHN0eWxlPSJmb250LXNpemU6IGxh
cmdlOyI+aGVsbG8gd29ybGQ8L2E+IFdlYktpdCIgeWllbGRzICI8YSBocmVmPSJodHRwOi8vd2Vi
a2l0Lm9yZy8iIHN0eWxlPSJmb250LXNpemU6IGxhcmdlOyI+aGVsbG8gPC9hPjxmb250IGNsYXNz
PSJBcHBsZS1zdHlsZS1zcGFuIiBzaXplPSI0Ij53b3JsZDwvZm9udD4gV2ViS2l0IgorUEFTUyB1
bmxpbmsgb24gbGFzdCB0d28gd29yZHMgb2YgImhlbGxvIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQu
b3JnLyIgc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2U7Ij53b3JsZCA8c3BhbiBzdHlsZT0iZm9udC1z
aXplOiBzbWFsbDsgIj5XZWJLaXQ8L3NwYW4+IHJvY2tzPC9hPiIgeWllbGRzICJoZWxsbyA8YSBo
cmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPjxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBz
aXplPSI0Ij53b3JsZCA8L2ZvbnQ+PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IHNtYWxsOyAi
PldlYktpdDwvc3Bhbj48Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc2l6ZT0iNCI+IHJv
Y2tzPC9mb250PiIKK1BBU1MgdW5saW5rIG9uIGZpcnN0IHR3byB3b3JkcyBvZiAiaGVsbG8gPGEg
aHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PGI+
d29ybGQ8L2I+IFdlYktpdDwvYT4iIHlpZWxkcyAiaGVsbG8gPGIgc3R5bGU9ImZvbnQtc3R5bGU6
IGl0YWxpYzsgIj53b3JsZDwvYj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPjxpPiBXZWJL
aXQ8L2k+PC9hPiIKK1BBU1MgdW5saW5rIG9uIGFsbCBvZiAiPGEgaHJlZj0iaHR0cDovL3dlYmtp
dC5vcmcvIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyI+PGRpdj5oZWxsbzwvZGl2
PjxkaXY+d29ybGQ8L2Rpdj48L2E+IiB5aWVsZHMgIjxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IHllbGxvdzsgIj5oZWxsbzwvZGl2PjxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHll
bGxvdzsgIj53b3JsZDwvZGl2PiIKK1BBU1MgdW5saW5rIG9uIGFsbCBvZiAiaGVsbG88YSBocmVm
PSJodHRwOi8vd2Via2l0Lm9yZy8iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Ij48
ZGl2PndvcmxkPC9kaXY+PC9hPldlYktpdCIgeWllbGRzICJoZWxsbzxkaXYgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6IHllbGxvdzsgIj53b3JsZDwvZGl2PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHls
ZS1zcGFuIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyI+V2ViS2l0PC9zcGFuPiIK
K1BBU1MgdW5saW5rIG9uIGxhc3QgdHdvIHdvcmRzIG9mICI8YSBocmVmPSJodHRwOi8vd2Via2l0
Lm9yZy8iIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjxkaXY+aGVsbG88L2Rpdj48ZGl2Pndv
cmxkIFdlYktpdDwvZGl2PjwvYT4iIHlpZWxkcyAiPGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJv
bGQ7ICI+PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbzwvYT48L2Rpdj48ZGl2IHN0
eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj53b3JsZCBXZWJLaXQ8L2Rpdj4iCitQQVNTIHVubGlu
ayBvbiBsYXN0IHdvcmQgb2YgIjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyIgc3R5bGU9ImZv
bnQtd2VpZ2h0OiBib2xkOyI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsiPmhlbGxv
PC9kaXY+PGRpdj53b3JsZDwvZGl2PjwvYT4iIHlpZWxkcyAiPGRpdiBzdHlsZT0iZm9udC13ZWln
aHQ6IG5vcm1hbDsgIj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhlbGxvPC9hPjwvZGl2
PjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPndvcmxkPC9kaXY+IgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXVubGluay5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXVubGluay5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC90b2dnbGUtdW5saW5r
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3RvZ2dsZS11
bmxpbmsuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUtdW5saW5rLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRl
c3RzL3RvZ2dsZS11bmxpbmsuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUtdW5saW5rLmpzCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY4IEBACitkZXNjcmlwdGlvbigiVGVzdCB0byBtYWtlIHN1cmUgd2UgcHJlc2Vy
dmUgc3R5bGVzIHdoZW4gcmVtb3ZpbmcgbGlua3MiKQorCit2YXIgdGVzdENvbnRhaW5lciA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwordGVzdENvbnRhaW5lci5jb250ZW50RWRpdGFi
bGUgPSB0cnVlOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXN0Q29udGFpbmVyKTsKKwor
ZnVuY3Rpb24gdGVzdFNpbmdsZVRvZ2dsZSh0b2dnbGVDb21tYW5kLCBpbml0aWFsQ29udGVudHMs
IHNlbGVjdG9yLCBleHBlY3RlZENvbnRlbnRzKQoreworICAgIHRlc3RDb250YWluZXIuaW5uZXJI
VE1MID0gaW5pdGlhbENvbnRlbnRzOworICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdG9yKHRlc3RD
b250YWluZXIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKHRvZ2dsZUNvbW1hbmQsIGZhbHNl
LCAnaHR0cDovL3dlYmtpdC5vcmcvJyk7CisgICAgYWN0aW9uID0gdG9nZ2xlQ29tbWFuZCArICcg
b24gJyArIHNlbGVjdGVkICsgJyBvZiAiJyArIGluaXRpYWxDb250ZW50cyArICciIHlpZWxkcyAi
JyArIHRlc3RDb250YWluZXIuaW5uZXJIVE1MICsgJyInOworICAgIGlmICh0ZXN0Q29udGFpbmVy
LmlubmVySFRNTCA9PT0gZXhwZWN0ZWRDb250ZW50cykKKyAgICAgICAgdGVzdFBhc3NlZChhY3Rp
b24pOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZChhY3Rpb24gKyAnLCBleHBlY3RlZCAi
JyArIGV4cGVjdGVkQ29udGVudHMgKyAnIicpOworfQorCitmdW5jdGlvbiBzZWxlY3RBbGwoY29u
dGFpbmVyKSB7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFsbENoaWxkcmVuKGNv
bnRhaW5lcik7CisgICAgcmV0dXJuICdhbGwnOworfQorCitmdW5jdGlvbiBzZWxlY3RGaXJzdFR3
b1dvcmRzKGNvbnRhaW5lcikgeworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlv
bihjb250YWluZXIsIDApOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVu
ZCcsICdmb3J3YXJkJywgJ3dvcmQnKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9kaWZ5
KCdleHRlbmQnLCAnZm9yd2FyZCcsICd3b3JkJyk7CisgICAgcmV0dXJuICdmaXJzdCB0d28gd29y
ZHMnOworfQorCitmdW5jdGlvbiBzZWxlY3RMYXN0VHdvV29yZHMoY29udGFpbmVyKSB7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGNvbnRhaW5lciwgY29udGFpbmVyLmNo
aWxkTm9kZXMubGVuZ3RoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdleHRl
bmQnLCAnYmFja3dhcmQnLCAnd29yZCcpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2Rp
ZnkoJ2V4dGVuZCcsICdiYWNrd2FyZCcsICd3b3JkJyk7CisgICAgcmV0dXJuICdsYXN0IHR3byB3
b3Jkcyc7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdExhc3RXb3JkKGNvbnRhaW5lcikgeworICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihjb250YWluZXIsIGNvbnRhaW5lci5jaGls
ZE5vZGVzLmxlbmd0aCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5k
JywgJ2JhY2t3YXJkJywgJ3dvcmQnKTsKKyAgICByZXR1cm4gJ2xhc3Qgd29yZCc7Cit9CisKK3Rl
c3RTaW5nbGVUb2dnbGUoInVubGluayIsICdoZWxsbyA8Yj53b3JsZDwvYj4nLCBzZWxlY3RBbGws
ICdoZWxsbyA8Yj53b3JsZDwvYj4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUoInVubGluayIsICc8YSBo
cmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPjx1PmhlbGxvIHdvcmxkPC91PjwvYT4nLCBzZWxlY3RB
bGwsICc8dT5oZWxsbyB3b3JsZDwvdT4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUoInVubGluayIsICdo
ZWxsbyA8aT48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPndvcmxkPC9hPjwvaT4nLCBzZWxl
Y3RBbGwsICdoZWxsbyA8aT53b3JsZDwvaT4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUoInVubGluayIs
ICdoZWxsbyA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iIHN0eWxlPSJmb250LXdlaWdodDog
Ym9sZDsiPndvcmxkPC9hPicsIHNlbGVjdEFsbCwgJ2hlbGxvIDxiPndvcmxkPC9iPicpOwordGVz
dFNpbmdsZVRvZ2dsZSgidW5saW5rIiwgJ2hlbGxvIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3Jn
LyIgc3R5bGU9ImNvbG9yOiBibHVlOyI+d29ybGQ8L2E+IFdlYktpdCcsIHNlbGVjdEFsbCwgJ2hl
bGxvIDxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBjb2xvcj0iIzAwMDBGRiI+d29ybGQ8
L2ZvbnQ+IFdlYktpdCcpOwordGVzdFNpbmdsZVRvZ2dsZSgidW5saW5rIiwgJ2hlbGxvIDxhIGhy
ZWY9Imh0dHA6Ly93ZWJraXQub3JnLyIgc3R5bGU9ImNvbG9yOiBibHVlOyBkaXNwbGF5OiBibG9j
azsiPndvcmxkPC9hPiBXZWJLaXQnLCBzZWxlY3RBbGwsICdoZWxsbyA8Zm9udCBjbGFzcz0iQXBw
bGUtc3R5bGUtc3BhbiIgY29sb3I9IiMwMDAwRkYiPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7Ij53b3JsZDwvc3Bhbj48L2ZvbnQ+IFdlYktpdCcp
OwordGVzdFNpbmdsZVRvZ2dsZSgidW5saW5rIiwgJzxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3Jn
LyIgc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2U7Ij5oZWxsbyB3b3JsZDwvYT4gV2ViS2l0JywKKyAg
ICBzZWxlY3RMYXN0VHdvV29yZHMsICc8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iIHN0eWxl
PSJmb250LXNpemU6IGxhcmdlOyI+aGVsbG8gPC9hPjxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIiBzaXplPSI0Ij53b3JsZDwvZm9udD4gV2ViS2l0Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJ1
bmxpbmsiLCAnaGVsbG8gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC1z
aXplOiBsYXJnZTsiPndvcmxkIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IHNtYWxsOyAiPldlYktp
dDwvc3Bhbj4gcm9ja3M8L2E+JywKKyAgICBzZWxlY3RMYXN0VHdvV29yZHMsICdoZWxsbyA8YSBo
cmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPjxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBz
aXplPSI0Ij53b3JsZCA8L2ZvbnQ+PC9hPjxzcGFuIHN0eWxlPSJmb250LXNpemU6IHNtYWxsOyAi
PldlYktpdDwvc3Bhbj48Zm9udCBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc2l6ZT0iNCI+IHJv
Y2tzPC9mb250PicpOwordGVzdFNpbmdsZVRvZ2dsZSgidW5saW5rIiwgJ2hlbGxvIDxhIGhyZWY9
Imh0dHA6Ly93ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjxiPndvcmxk
PC9iPiBXZWJLaXQ8L2E+JywKKyAgICBzZWxlY3RGaXJzdFR3b1dvcmRzLCAnaGVsbG8gPGIgc3R5
bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsgIj53b3JsZDwvYj48YSBocmVmPSJodHRwOi8vd2Via2l0
Lm9yZy8iPjxpPiBXZWJLaXQ8L2k+PC9hPicpOworCit0ZXN0U2luZ2xlVG9nZ2xlKCJ1bmxpbmsi
LCAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjog
eWVsbG93OyI+PGRpdj5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+JywKKyAgICBzZWxl
Y3RBbGwsICc8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7ICI+aGVsbG88L2Rp
dj48ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7ICI+d29ybGQ8L2Rpdj4nKTsK
K3Rlc3RTaW5nbGVUb2dnbGUoInVubGluayIsICdoZWxsbzxhIGhyZWY9Imh0dHA6Ly93ZWJraXQu
b3JnLyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHllbGxvdzsiPjxkaXY+d29ybGQ8L2Rpdj48
L2E+V2ViS2l0JywKKyAgICBzZWxlY3RBbGwsICdoZWxsbzxkaXYgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IHllbGxvdzsgIj53b3JsZDwvZGl2PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFu
IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyI+V2ViS2l0PC9zcGFuPicpOwordGVz
dFNpbmdsZVRvZ2dsZSgidW5saW5rIiwgJzxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyIgc3R5
bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PGRpdj5oZWxsbzwvZGl2PjxkaXY+d29ybGQgV2ViS2l0
PC9kaXY+PC9hPicsCisgICAgc2VsZWN0TGFzdFR3b1dvcmRzLCAnPGRpdiBzdHlsZT0iZm9udC13
ZWlnaHQ6IGJvbGQ7ICI+PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbzwvYT48L2Rp
dj48ZGl2IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj53b3JsZCBXZWJLaXQ8L2Rpdj4nKTsK
K3Rlc3RTaW5nbGVUb2dnbGUoInVubGluayIsICc8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8i
IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3Jt
YWw7Ij5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+JywKKyAgICBzZWxlY3RMYXN0V29y
ZCwgJzxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7ICI+PGEgaHJlZj0iaHR0cDovL3dl
YmtpdC5vcmcvIj5oZWxsbzwvYT48L2Rpdj48ZGl2IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsg
Ij53b3JsZDwvZGl2PicpOworCitkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWlu
ZXIpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvc3R5bGUvc2NyaXB0LXRlc3RzL21ha2UtdGV4dC13cml0aW5nLWRpcmVjdGlvbi1p
bmxpbmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zdHlsZS9zY3JpcHQt
dGVzdHMvbWFrZS10ZXh0LXdyaXRpbmctZGlyZWN0aW9uLWlubGluZS5qcwkocmV2aXNpb24gNjk0
NTkpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3N0eWxlL3NjcmlwdC10ZXN0cy9tYWtlLXRleHQt
d3JpdGluZy1kaXJlY3Rpb24taW5saW5lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3
IEBAIG1vZGlmeVdyaXRpbmdEaXJlY3Rpb24oJzxkaXYgZGlyPSJydGwiPjwKIG1vZGlmeVdyaXRp
bmdEaXJlY3Rpb24oJzxkaXYgZGlyPSJydGwiPtmH2YbYpyA8c3BhbiBkaXI9Imx0ciI+2YrZg9iq
2Kgg2KfZhNmG2LUg2KfZhNi52LHYqNmKPC9zcGFuPjwvZGl2PicsIHNlbGVjdFRoaXJkV29yZCwg
J05hdHVyYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBkaXI9InJ0bCI+2YfZhtin
IDxzcGFuIGRpcj0ibHRyIj7ZitmD2KrYqDwvc3Bhbj4g2KfZhNmG2LU8c3BhbiBkaXI9Imx0ciI+
INin2YTYudix2KjZijwvc3Bhbj48L2Rpdj4nKTsKIG1vZGlmeVdyaXRpbmdEaXJlY3Rpb24oJzxk
aXYgZGlyPSJydGwiPtmH2YbYpyA8c3BhbiBkaXI9Imx0ciI+2YrZg9iq2Kgg2KfZhNmG2LUg2KfZ
hNi52LHYqNmKPC9zcGFuPjwvZGl2PicsIHNlbGVjdFRoaXJkV29yZCwgJ0xlZnRUb1JpZ2h0JywK
LSAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgZGlyPSJydGwiPjxzcGFuIHN0eWxlPSJkaXJl
Y3Rpb246IGx0cjsiPtmH2YbYpyDZitmD2KrYqCDYp9mE2YbYtSDYp9mE2LnYsdio2Yo8L3NwYW4+
PC9kaXY+Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGRpcj0icnRsIj48c3BhbiBz
dHlsZT0idW5pY29kZS1iaWRpOiBlbWJlZDsgZGlyZWN0aW9uOiBsdHI7Ij7Zh9mG2Kcg2YrZg9iq
2Kgg2KfZhNmG2LUg2KfZhNi52LHYqNmKPC9zcGFuPjwvZGl2PicpOwogbW9kaWZ5V3JpdGluZ0Rp
cmVjdGlvbignPGRpdiBkaXI9InJ0bCI+2YfZhtinIDxzcGFuIGRpcj0ibHRyIj7ZitmD2KrYqCDY
p9mE2YbYtSDYp9mE2LnYsdio2Yo8L3NwYW4+PC9kaXY+Jywgc2VsZWN0VGhpcmRXb3JkLCAnUmln
aHRUb0xlZnQnLAogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBkaXI9InJ0bCI+2YfZhtin
IDxzcGFuIGRpcj0ibHRyIj7ZitmD2KrYqDwvc3Bhbj48c3BhbiBzdHlsZT0idW5pY29kZS1iaWRp
OiBlbWJlZDsiPiDYp9mE2YbYtTwvc3Bhbj48c3BhbiBkaXI9Imx0ciI+INin2YTYudix2KjZijwv
c3Bhbj48L2Rpdj4nKTsKIAo=
</data>
<flag name="review"
          id="60738"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>