<?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>42937</bug_id>
          
          <creation_ts>2010-07-24 17:15:25 -0700</creation_ts>
          <short_desc>splitTextAt*IfNeed and splitTextElementAt*IfNeed need to be cleaned up</short_desc>
          <delta_ts>2010-07-25 21:11:52 -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>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39989</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>255758</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-24 17:15:25 -0700</bug_when>
    <thetext>splitTextAtStartIfNeed, splitTextAtEndIfNeed, splitTextElementAtStartIfNeed and splitTextElementAtEndIfNeed need to be cleaned up to fix the bug 39989.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255768</commentid>
    <comment_count>1</comment_count>
      <attachid>62512</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-24 17:50:37 -0700</bug_when>
    <thetext>Created attachment 62512
clean up

Split the cleanup from the patch for the bug 39989.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255769</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-24 17:52:56 -0700</bug_when>
    <thetext>Attachment 62512 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/editing/ApplyStyleCommand.cpp:1538:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1545:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1548:  Declaration has space between type name and * in Node *prevNode  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1550:  Declaration has space between type name and * in Node *startNode  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1558:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1565:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1568:  Declaration has space between type name and * in Node *prevNode  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1570:  Declaration has space between type name and * in Node *startNode  [whitespace/declaration] [3]
Total errors found: 8 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255770</commentid>
    <comment_count>3</comment_count>
      <attachid>62513</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-24 17:52:58 -0700</bug_when>
    <thetext>Created attachment 62513
fixed needS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255771</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-24 17:53:40 -0700</bug_when>
    <thetext>Attachment 62513 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/editing/ApplyStyleCommand.cpp:1538:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1545:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1548:  Declaration has space between type name and * in Node *prevNode  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1550:  Declaration has space between type name and * in Node *startNode  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1558:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1565:  Declaration has space between type name and * in Text *text  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1568:  Declaration has space between type name and * in Node *prevNode  [whitespace/declaration] [3]
WebCore/editing/ApplyStyleCommand.cpp:1570:  Declaration has space between type name and * in Node *startNode  [whitespace/declaration] [3]
Total errors found: 8 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255774</commentid>
    <comment_count>5</comment_count>
      <attachid>62515</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-24 17:56:41 -0700</bug_when>
    <thetext>Created attachment 62515
fixed references and pointers (space before &amp;/*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255866</commentid>
    <comment_count>6</comment_count>
      <attachid>62515</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-07-25 19:35:46 -0700</bug_when>
    <thetext>Comment on attachment 62515
fixed references and pointers (space before &amp;/*)


&gt; -
&gt; -bool ApplyStyleCommand::splitTextElementAtEndIfNeeded(const Position &amp;start, const Position &amp;end)
&gt; +    

nit: Do not add whitespace at the end of line.

&gt;  }
&gt; -
&gt; +    
&gt;  static bool areIdenticalElements(Node *first, Node *second)

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255868</commentid>
    <comment_count>7</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-07-25 20:02:58 -0700</bug_when>
    <thetext>In the ChangeLog &quot;No new tests added.&quot;

This should explain why no new tests were added. Was it because no user visible functionality should have changed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255870</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-25 20:29:48 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 62515 [details])
&gt; 
&gt; &gt; -
&gt; &gt; -bool ApplyStyleCommand::splitTextElementAtEndIfNeeded(const Position &amp;start, const Position &amp;end)
&gt; &gt; +    
&gt; 
&gt; nit: Do not add whitespace at the end of line.
&gt; 
&gt; &gt;  }
&gt; &gt; -
&gt; &gt; +    
&gt; &gt;  static bool areIdenticalElements(Node *first, Node *second)
&gt; 
&gt; ditto.

Thanks for the review &amp; style check.  I didn&apos;t catch that.

(In reply to comment #7)
&gt; In the ChangeLog &quot;No new tests added.&quot;
&gt; 
&gt; This should explain why no new tests were added. Was it because no user visible functionality should have changed?

I thought it&apos;s quite normal to omit the reason or mentioning of test at all when the bug itself says it&apos;s a clean up. But I&apos;ll change it to &quot;No new tests added since this is a clean up&quot; per your request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>255893</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-25 21:11:52 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/64028.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62512</attachid>
            <date>2010-07-24 17:50:37 -0700</date>
            <delta_ts>2010-07-24 17:52:58 -0700</delta_ts>
            <desc>clean up</desc>
            <filename>fix42937</filename>
            <type>text/plain</type>
            <size>10246</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDAxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDctMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3Bs
aXRUZXh0QXQqSWZOZWVkIGFuZCBzcGxpdFRleHRFbGVtZW50QXQqSWZOZWVkIG5lZWRzIHRvIGJl
IGNsZWFuZWQgdXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQyOTM3CisKKyAgICAgICAgSXNvbGF0ZWQgdGhlIGNvZGUgdG8gZGVjaWRlIHdoZXRoZXIg
b3Igbm90IHRleHQgbm9kZSBzaG91bGQgYmUgc3BsaXQgaW50byBpc1ZhbGlkQ2FyZXRQb3NpdGlv
bkluVGV4dE5vZGUuCisgICAgICAgIE1vdmVkIHRoZSBjb25kaXRpb24gY2hlY2sgb3V0IG9mICpJ
Zk5lZWRlZCBtZXRob2RzIHRvIGFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UgYW5kIGFwcGx5
SW5saW5lU3R5bGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFkZGVkLgorCisgICAgICAgICog
ZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0
eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZSk6IFVzZXMgaXNWYWxpZENh
cmV0UG9zaXRpb25JblRleHROb2RlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1h
bmQ6OmFwcGx5SW5saW5lU3R5bGUpOiBVc2VzIGlzVmFsaWRDYXJldFBvc2l0aW9uSW5UZXh0Tm9k
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdFN0YXJ0
KTogUmVuYW1lZCBmcm9tIHNwbGl0VGV4dEF0U3RhcnRJZk5lZWRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdEVuZCk6IFJlbmFtZWQgZnJvbSBzcGxp
dFRleHRBdEVuZElmTmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
OnNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0KTogUmVuYW1lZCBmcm9tIHNwbGl0VGV4dEVsZW1lbnRB
dFN0YXJ0SWZOZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6c3Bs
aXRUZXh0RWxlbWVudEF0RW5kKTogUmVuYW1lZCBmcm9tIHNwbGl0VGV4dEVsZW1lbnRBdEVuZElm
TmVlZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmlzVmFsaWRDYXJl
dFBvc2l0aW9uSW5UZXh0Tm9kZSk6IFJldHVybnMgdHJ1ZSBpZiB0aGUgcG9zaXRpb24gbGllcyB3
aXRoaW4gYSB0ZXh0IG5vZGUuCisgICAgICAgICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5o
OgorCiAyMDEwLTA3LTI0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9lZGl0aW5n
L0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvQXBw
bHlTdHlsZUNvbW1hbmQuY3BwCShyZXZpc2lvbiA2NDAxMykKKysrIFdlYkNvcmUvZWRpdGluZy9B
cHBseVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4NCwxMyArNjg0LDE0IEBA
IHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVGb24KICAgICB9CiAKICAgICAv
LyBTcGxpdCB0aGUgc3RhcnQgdGV4dCBub2RlcyBpZiBuZWVkZWQgdG8gYXBwbHkgc3R5bGUuCi0g
ICAgYm9vbCBzcGxpdFN0YXJ0ID0gc3BsaXRUZXh0QXRTdGFydElmTmVlZGVkKHN0YXJ0LCBlbmQp
OyAKLSAgICBpZiAoc3BsaXRTdGFydCkgeworICAgIGlmIChpc1ZhbGlkQ2FyZXRQb3NpdGlvbklu
VGV4dE5vZGUoc3RhcnQpKSB7CisgICAgICAgIHNwbGl0VGV4dEF0U3RhcnQoc3RhcnQsIGVuZCk7
CiAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbigpOwogICAgICAgICBlbmQgPSBlbmRQb3Np
dGlvbigpOwogICAgIH0KLSAgICBib29sIHNwbGl0RW5kID0gc3BsaXRUZXh0QXRFbmRJZk5lZWRl
ZChzdGFydCwgZW5kKTsKLSAgICBpZiAoc3BsaXRFbmQpIHsKKworICAgIGlmIChpc1ZhbGlkQ2Fy
ZXRQb3NpdGlvbkluVGV4dE5vZGUoZW5kKSkgeworICAgICAgICBzcGxpdFRleHRBdEVuZChzdGFy
dCwgZW5kKTsKICAgICAgICAgc3RhcnQgPSBzdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGVuZCA9
IGVuZFBvc2l0aW9uKCk7CiAgICAgfQpAQCAtOTA3LDE2ICs5MDgsMTggQEAgdm9pZCBBcHBseVN0
eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZQogICAgIH0KIAogICAgIC8vIHNwbGl0IHRoZSBz
dGFydCBub2RlIGFuZCBjb250YWluaW5nIGVsZW1lbnQgaWYgdGhlIHNlbGVjdGlvbiBzdGFydHMg
aW5zaWRlIG9mIGl0Ci0gICAgYm9vbCBzcGxpdFN0YXJ0ID0gc3BsaXRUZXh0RWxlbWVudEF0U3Rh
cnRJZk5lZWRlZChzdGFydCwgZW5kKTsgCisgICAgYm9vbCBzcGxpdFN0YXJ0ID0gaXNWYWxpZENh
cmV0UG9zaXRpb25JblRleHROb2RlKHN0YXJ0KTsKICAgICBpZiAoc3BsaXRTdGFydCkgeworICAg
ICAgICBzcGxpdFRleHRFbGVtZW50QXRTdGFydChzdGFydCwgZW5kKTsKICAgICAgICAgc3RhcnQg
PSBzdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGVuZCA9IGVuZFBvc2l0aW9uKCk7CiAgICAgICAg
IHN0YXJ0RHVtbXlTcGFuQW5jZXN0b3IgPSBkdW1teVNwYW5BbmNlc3RvckZvck5vZGUoc3RhcnQu
bm9kZSgpKTsKICAgICB9CiAKICAgICAvLyBzcGxpdCB0aGUgZW5kIG5vZGUgYW5kIGNvbnRhaW5p
bmcgZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9uIGVuZHMgaW5zaWRlIG9mIGl0Ci0gICAgYm9vbCBz
cGxpdEVuZCA9IHNwbGl0VGV4dEVsZW1lbnRBdEVuZElmTmVlZGVkKHN0YXJ0LCBlbmQpOworICAg
IGJvb2wgc3BsaXRFbmQgPSBpc1ZhbGlkQ2FyZXRQb3NpdGlvbkluVGV4dE5vZGUoZW5kKTsKICAg
ICBpZiAoc3BsaXRFbmQpIHsKKyAgICAgICAgc3BsaXRUZXh0RWxlbWVudEF0RW5kKHN0YXJ0LCBl
bmQpOwogICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgZW5kID0gZW5k
UG9zaXRpb24oKTsKICAgICAgICAgZW5kRHVtbXlTcGFuQW5jZXN0b3IgPSBkdW1teVNwYW5BbmNl
c3RvckZvck5vZGUoZW5kLm5vZGUoKSk7CkBAIC0xNTI5LDY0ICsxNTMyLDU1IEBAIGJvb2wgQXBw
bHlTdHlsZUNvbW1hbmQ6Om5vZGVGdWxseVVuc2VsZWMKICAgICByZXR1cm4gaXNGdWxseUJlZm9y
ZVN0YXJ0IHx8IGlzRnVsbHlBZnRlckVuZDsKIH0KIAordm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6
c3BsaXRUZXh0QXRTdGFydChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZl
bmQpCit7CisgICAgaW50IGVuZE9mZnNldEFkanVzdG1lbnQgPSBzdGFydC5ub2RlKCkgPT0gZW5k
Lm5vZGUoKSA/IHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgOiAwOworICAgIFRleHQg
KnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Lm5vZGUoKSk7CisgICAgc3BsaXRUZXh0
Tm9kZSh0ZXh0LCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKKyAgICB1cGRhdGVT
dGFydEVuZChQb3NpdGlvbihzdGFydC5ub2RlKCksIDApLCBQb3NpdGlvbihlbmQubm9kZSgpLCBl
bmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKK30K
IAotYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0QXRTdGFydElmTmVlZGVkKGNvbnN0
IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVuZCkKK3ZvaWQgQXBwbHlTdHlsZUNv
bW1hbmQ6OnNwbGl0VGV4dEF0RW5kKGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRp
b24gJmVuZCkKIHsKLSAgICBpZiAoc3RhcnQubm9kZSgpLT5pc1RleHROb2RlKCkgJiYgc3RhcnQu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IGNhcmV0TWluT2Zmc2V0KHN0YXJ0Lm5vZGUoKSkg
JiYgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8IGNhcmV0TWF4T2Zmc2V0KHN0YXJ0
Lm5vZGUoKSkpIHsKLSAgICAgICAgaW50IGVuZE9mZnNldEFkanVzdG1lbnQgPSBzdGFydC5ub2Rl
KCkgPT0gZW5kLm5vZGUoKSA/IHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgOiAwOwot
ICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihzdGFydC5ub2RlKCkpOwot
ICAgICAgICBzcGxpdFRleHROb2RlKHRleHQsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCkpOwotICAgICAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydC5ub2RlKCksIDApLCBQ
b3NpdGlvbihlbmQubm9kZSgpLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSAtIGVuZE9m
ZnNldEFkanVzdG1lbnQpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVy
biBmYWxzZTsKKyAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCAqPihlbmQubm9kZSgp
KTsKKyAgICBzcGxpdFRleHROb2RlKHRleHQsIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
KTsKKworICAgIE5vZGUgKnByZXZOb2RlID0gdGV4dC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAg
QVNTRVJUKHByZXZOb2RlKTsKKyAgICBOb2RlICpzdGFydE5vZGUgPSBzdGFydC5ub2RlKCkgPT0g
ZW5kLm5vZGUoKSA/IHByZXZOb2RlIDogc3RhcnQubm9kZSgpOworICAgIEFTU0VSVChzdGFydE5v
ZGUpOworICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgc3RhcnQuZGVwcmVj
YXRlZEVkaXRpbmdPZmZzZXQoKSksIFBvc2l0aW9uKHByZXZOb2RlLCBjYXJldE1heE9mZnNldChw
cmV2Tm9kZSkpKTsKIH0KIAotYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0QXRFbmRJ
Zk5lZWRlZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCit2b2lk
IEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVtZW50QXRTdGFydChjb25zdCBQb3NpdGlv
biAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCiB7Ci0gICAgaWYgKGVuZC5ub2RlKCktPmlz
VGV4dE5vZGUoKSAmJiBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA+IGNhcmV0TWluT2Zm
c2V0KGVuZC5ub2RlKCkpICYmIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgY2FyZXRN
YXhPZmZzZXQoZW5kLm5vZGUoKSkpIHsKLSAgICAgICAgVGV4dCAqdGV4dCA9IHN0YXRpY19jYXN0
PFRleHQgKj4oZW5kLm5vZGUoKSk7Ci0gICAgICAgIHNwbGl0VGV4dE5vZGUodGV4dCwgZW5kLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotICAgICAgICAKLSAgICAgICAgTm9kZSAqcHJldk5v
ZGUgPSB0ZXh0LT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICAgICAgQVNTRVJUKHByZXZOb2RlKTsK
LSAgICAgICAgTm9kZSAqc3RhcnROb2RlID0gc3RhcnQubm9kZSgpID09IGVuZC5ub2RlKCkgPyBw
cmV2Tm9kZSA6IHN0YXJ0Lm5vZGUoKTsKLSAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZSk7Ci0gICAg
ICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgc3RhcnQuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSksIFBvc2l0aW9uKHByZXZOb2RlLCBjYXJldE1heE9mZnNldChwcmV2Tm9k
ZSkpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQubm9kZSgpID8g
c3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7CisgICAgVGV4dCAqdGV4dCA9IHN0
YXRpY19jYXN0PFRleHQgKj4oc3RhcnQubm9kZSgpKTsKKyAgICBzcGxpdFRleHROb2RlQ29udGFp
bmluZ0VsZW1lbnQodGV4dCwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAg
dXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLT5wYXJlbnROb2RlKCksIHN0YXJ0
Lm5vZGUoKS0+bm9kZUluZGV4KCkpLCBQb3NpdGlvbihlbmQubm9kZSgpLCBlbmQuZGVwcmVjYXRl
ZEVkaXRpbmdPZmZzZXQoKSAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKIH0KIAotYm9vbCBBcHBs
eVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0U3RhcnRJZk5lZWRlZChjb25zdCBQb3Np
dGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCit2b2lkIEFwcGx5U3R5bGVDb21tYW5k
OjpzcGxpdFRleHRFbGVtZW50QXRFbmQoY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQb3Np
dGlvbiAmZW5kKQogewotICAgIGlmIChzdGFydC5ub2RlKCktPmlzVGV4dE5vZGUoKSAmJiBzdGFy
dC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQoc3RhcnQubm9kZSgp
KSAmJiBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgY2FyZXRNYXhPZmZzZXQoc3Rh
cnQubm9kZSgpKSkgewotICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5v
ZGUoKSA9PSBlbmQubm9kZSgpID8gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7
Ci0gICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Lm5vZGUoKSk7
Ci0gICAgICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudCh0ZXh0LCBzdGFydC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKKyAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4
dCAqPihlbmQubm9kZSgpKTsKKyAgICBzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQodGV4
dCwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwogCi0gICAgICAgIHVwZGF0ZVN0YXJ0
RW5kKFBvc2l0aW9uKHN0YXJ0Lm5vZGUoKS0+cGFyZW50Tm9kZSgpLCBzdGFydC5ub2RlKCktPm5v
ZGVJbmRleCgpKSwgUG9zaXRpb24oZW5kLm5vZGUoKSwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCkgLSBlbmRPZmZzZXRBZGp1c3RtZW50KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgTm9kZSAqcHJldk5vZGUgPSB0ZXh0LT5wYXJlbnQo
KS0+cHJldmlvdXNTaWJsaW5nKCktPmxhc3RDaGlsZCgpOworICAgIEFTU0VSVChwcmV2Tm9kZSk7
CisgICAgTm9kZSAqc3RhcnROb2RlID0gc3RhcnQubm9kZSgpID09IGVuZC5ub2RlKCkgPyBwcmV2
Tm9kZSA6IHN0YXJ0Lm5vZGUoKTsKKyAgICBBU1NFUlQoc3RhcnROb2RlKTsKKyAgICB1cGRhdGVT
dGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCkpLCBQb3NpdGlvbihwcmV2Tm9kZS0+cGFyZW50KCksIHByZXZOb2RlLT5ub2RlSW5kZXgoKSAr
IDEpKTsKIH0KLQotYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0RW5k
SWZOZWVkZWQoY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQb3NpdGlvbiAmZW5kKQorICAg
IAorYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6aXNWYWxpZENhcmV0UG9zaXRpb25JblRleHROb2Rl
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKLSAgICBpZiAoZW5kLm5vZGUoKS0+aXNUZXh0
Tm9kZSgpICYmIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQo
ZW5kLm5vZGUoKSkgJiYgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBjYXJldE1heE9m
ZnNldChlbmQubm9kZSgpKSkgewotICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4
dCAqPihlbmQubm9kZSgpKTsKLSAgICAgICAgc3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50
KHRleHQsIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKLQotICAgICAgICBOb2RlICpw
cmV2Tm9kZSA9IHRleHQtPnBhcmVudCgpLT5wcmV2aW91c1NpYmxpbmcoKS0+bGFzdENoaWxkKCk7
Ci0gICAgICAgIEFTU0VSVChwcmV2Tm9kZSk7Ci0gICAgICAgIE5vZGUgKnN0YXJ0Tm9kZSA9IHN0
YXJ0Lm5vZGUoKSA9PSBlbmQubm9kZSgpID8gcHJldk5vZGUgOiBzdGFydC5ub2RlKCk7Ci0gICAg
ICAgIEFTU0VSVChzdGFydE5vZGUpOwotICAgICAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihz
dGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpLCBQb3NpdGlvbihwcmV2
Tm9kZS0+cGFyZW50KCksIHByZXZOb2RlLT5ub2RlSW5kZXgoKSArIDEpKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBOb2RlKiBub2RlID0gcG9z
aXRpb24ubm9kZSgpOworICAgIGlmICghbm9kZS0+aXNUZXh0Tm9kZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgaW50IG9mZnNldEluVGV4dCA9IHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCk7CisgICAgcmV0dXJuIChvZmZzZXRJblRleHQgPiBjYXJldE1pbk9mZnNldChu
b2RlKSAmJiBvZmZzZXRJblRleHQgPCBjYXJldE1heE9mZnNldChub2RlKSk7CiB9Ci0KKyAgICAK
IHN0YXRpYyBib29sIGFyZUlkZW50aWNhbEVsZW1lbnRzKE5vZGUgKmZpcnN0LCBOb2RlICpzZWNv
bmQpCiB7CiAgICAgLy8gY2hlY2sgdGhhdCB0YWcgbmFtZSBhbmQgYWxsIGF0dHJpYnV0ZSBuYW1l
cyBhbmQgdmFsdWVzIGFyZSBpZGVudGljYWwKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0
eWxlQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5oCShyZXZpc2lvbiA2NDAxMykKKysrIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSwxMCArOTEsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFwcGx5SW5saW5lU3R5bGVUb1JhbmdlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwg
Y29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKICAgICB2b2lkIGFk
ZEJsb2NrU3R5bGUoY29uc3QgU3R5bGVDaGFuZ2UmLCBIVE1MRWxlbWVudCopOwogICAgIHZvaWQg
YWRkSW5saW5lU3R5bGVJZk5lZWRlZChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIE5vZGUq
IHN0YXJ0LCBOb2RlKiBlbmQpOwotICAgIGJvb2wgc3BsaXRUZXh0QXRTdGFydElmTmVlZGVkKGNv
bnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7Ci0gICAgYm9vbCBzcGxp
dFRleHRBdEVuZElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCk7Ci0gICAgYm9vbCBzcGxpdFRleHRFbGVtZW50QXRTdGFydElmTmVlZGVkKGNvbnN0IFBv
c2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7Ci0gICAgYm9vbCBzcGxpdFRleHRF
bGVtZW50QXRFbmRJZk5lZWRlZChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9u
JiBlbmQpOworICAgIHZvaWQgc3BsaXRUZXh0QXRTdGFydChjb25zdCBQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IFBvc2l0aW9uJiBlbmQpOworICAgIHZvaWQgc3BsaXRUZXh0QXRFbmQoY29uc3QgUG9z
aXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKKyAgICB2b2lkIHNwbGl0VGV4dEVs
ZW1lbnRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCk7
CisgICAgdm9pZCBzcGxpdFRleHRFbGVtZW50QXRFbmQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBQb3NpdGlvbiYgZW5kKTsKKyAgICBib29sIGlzVmFsaWRDYXJldFBvc2l0aW9uSW5UZXh0
Tm9kZShjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pOwogICAgIGJvb2wgbWVyZ2VTdGFydFdpdGhQ
cmV2aW91c0lmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCk7CiAgICAgYm9vbCBtZXJnZUVuZFdpdGhOZXh0SWZJZGVudGljYWwoY29uc3QgUG9zaXRp
b24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKICAgICB2b2lkIGNsZWFudXBVbnN0eWxl
ZEFwcGxlU3R5bGVTcGFucyhOb2RlKiBkdW1teVNwYW5BbmNlc3Rvcik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62513</attachid>
            <date>2010-07-24 17:52:58 -0700</date>
            <delta_ts>2010-07-24 17:57:03 -0700</delta_ts>
            <desc>fixed needS</desc>
            <filename>fix42937b</filename>
            <type>text/plain</type>
            <size>10245</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDAxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDctMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3Bs
aXRUZXh0QXQqSWZOZWVkIGFuZCBzcGxpdFRleHRFbGVtZW50QXQqSWZOZWVkIG5lZWQgdG8gYmUg
Y2xlYW5lZCB1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDI5MzcKKworICAgICAgICBJc29sYXRlZCB0aGUgY29kZSB0byBkZWNpZGUgd2hldGhlciBv
ciBub3QgdGV4dCBub2RlIHNob3VsZCBiZSBzcGxpdCBpbnRvIGlzVmFsaWRDYXJldFBvc2l0aW9u
SW5UZXh0Tm9kZS4KKyAgICAgICAgTW92ZWQgdGhlIGNvbmRpdGlvbiBjaGVjayBvdXQgb2YgKklm
TmVlZGVkIG1ldGhvZHMgdG8gYXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZSBhbmQgYXBwbHlJ
bmxpbmVTdHlsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKTogVXNlcyBpc1ZhbGlkQ2Fy
ZXRQb3NpdGlvbkluVGV4dE5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlJbmxpbmVTdHlsZSk6IFVzZXMgaXNWYWxpZENhcmV0UG9zaXRpb25JblRleHROb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEF0U3RhcnQp
OiBSZW5hbWVkIGZyb20gc3BsaXRUZXh0QXRTdGFydElmTmVlZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEF0RW5kKTogUmVuYW1lZCBmcm9tIHNwbGl0
VGV4dEF0RW5kSWZOZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
c3BsaXRUZXh0RWxlbWVudEF0U3RhcnQpOiBSZW5hbWVkIGZyb20gc3BsaXRUZXh0RWxlbWVudEF0
U3RhcnRJZk5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxp
dFRleHRFbGVtZW50QXRFbmQpOiBSZW5hbWVkIGZyb20gc3BsaXRUZXh0RWxlbWVudEF0RW5kSWZO
ZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6aXNWYWxpZENhcmV0
UG9zaXRpb25JblRleHROb2RlKTogUmV0dXJucyB0cnVlIGlmIHRoZSBwb3NpdGlvbiBsaWVzIHdp
dGhpbiBhIHRleHQgbm9kZS4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmg6
CisKIDIwMTAtMDctMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY0MDEzKQorKysgV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg0LDEzICs2ODQsMTQgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbgogICAgIH0KIAogICAgIC8v
IFNwbGl0IHRoZSBzdGFydCB0ZXh0IG5vZGVzIGlmIG5lZWRlZCB0byBhcHBseSBzdHlsZS4KLSAg
ICBib29sIHNwbGl0U3RhcnQgPSBzcGxpdFRleHRBdFN0YXJ0SWZOZWVkZWQoc3RhcnQsIGVuZCk7
IAotICAgIGlmIChzcGxpdFN0YXJ0KSB7CisgICAgaWYgKGlzVmFsaWRDYXJldFBvc2l0aW9uSW5U
ZXh0Tm9kZShzdGFydCkpIHsKKyAgICAgICAgc3BsaXRUZXh0QXRTdGFydChzdGFydCwgZW5kKTsK
ICAgICAgICAgc3RhcnQgPSBzdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGVuZCA9IGVuZFBvc2l0
aW9uKCk7CiAgICAgfQotICAgIGJvb2wgc3BsaXRFbmQgPSBzcGxpdFRleHRBdEVuZElmTmVlZGVk
KHN0YXJ0LCBlbmQpOwotICAgIGlmIChzcGxpdEVuZCkgeworCisgICAgaWYgKGlzVmFsaWRDYXJl
dFBvc2l0aW9uSW5UZXh0Tm9kZShlbmQpKSB7CisgICAgICAgIHNwbGl0VGV4dEF0RW5kKHN0YXJ0
LCBlbmQpOwogICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgZW5kID0g
ZW5kUG9zaXRpb24oKTsKICAgICB9CkBAIC05MDcsMTYgKzkwOCwxOCBAQCB2b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlCiAgICAgfQogCiAgICAgLy8gc3BsaXQgdGhlIHN0
YXJ0IG5vZGUgYW5kIGNvbnRhaW5pbmcgZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBp
bnNpZGUgb2YgaXQKLSAgICBib29sIHNwbGl0U3RhcnQgPSBzcGxpdFRleHRFbGVtZW50QXRTdGFy
dElmTmVlZGVkKHN0YXJ0LCBlbmQpOyAKKyAgICBib29sIHNwbGl0U3RhcnQgPSBpc1ZhbGlkQ2Fy
ZXRQb3NpdGlvbkluVGV4dE5vZGUoc3RhcnQpOwogICAgIGlmIChzcGxpdFN0YXJ0KSB7CisgICAg
ICAgIHNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0KHN0YXJ0LCBlbmQpOwogICAgICAgICBzdGFydCA9
IHN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24oKTsKICAgICAgICAg
c3RhcnREdW1teVNwYW5BbmNlc3RvciA9IGR1bW15U3BhbkFuY2VzdG9yRm9yTm9kZShzdGFydC5u
b2RlKCkpOwogICAgIH0KIAogICAgIC8vIHNwbGl0IHRoZSBlbmQgbm9kZSBhbmQgY29udGFpbmlu
ZyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24gZW5kcyBpbnNpZGUgb2YgaXQKLSAgICBib29sIHNw
bGl0RW5kID0gc3BsaXRUZXh0RWxlbWVudEF0RW5kSWZOZWVkZWQoc3RhcnQsIGVuZCk7CisgICAg
Ym9vbCBzcGxpdEVuZCA9IGlzVmFsaWRDYXJldFBvc2l0aW9uSW5UZXh0Tm9kZShlbmQpOwogICAg
IGlmIChzcGxpdEVuZCkgeworICAgICAgICBzcGxpdFRleHRFbGVtZW50QXRFbmQoc3RhcnQsIGVu
ZCk7CiAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbigpOwogICAgICAgICBlbmQgPSBlbmRQ
b3NpdGlvbigpOwogICAgICAgICBlbmREdW1teVNwYW5BbmNlc3RvciA9IGR1bW15U3BhbkFuY2Vz
dG9yRm9yTm9kZShlbmQubm9kZSgpKTsKQEAgLTE1MjksNjQgKzE1MzIsNTUgQEAgYm9vbCBBcHBs
eVN0eWxlQ29tbWFuZDo6bm9kZUZ1bGx5VW5zZWxlYwogICAgIHJldHVybiBpc0Z1bGx5QmVmb3Jl
U3RhcnQgfHwgaXNGdWxseUFmdGVyRW5kOwogfQogCit2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpz
cGxpdFRleHRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVu
ZCkKK3sKKyAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQu
bm9kZSgpID8gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7CisgICAgVGV4dCAq
dGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4oc3RhcnQubm9kZSgpKTsKKyAgICBzcGxpdFRleHRO
b2RlKHRleHQsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOworICAgIHVwZGF0ZVN0
YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Lm5vZGUoKSwgMCksIFBvc2l0aW9uKGVuZC5ub2RlKCksIGVu
ZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gZW5kT2Zmc2V0QWRqdXN0bWVudCkpOworfQog
Ci1ib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdFN0YXJ0SWZOZWVkZWQoY29uc3Qg
UG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQb3NpdGlvbiAmZW5kKQordm9pZCBBcHBseVN0eWxlQ29t
bWFuZDo6c3BsaXRUZXh0QXRFbmQoY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQb3NpdGlv
biAmZW5kKQogewotICAgIGlmIChzdGFydC5ub2RlKCktPmlzVGV4dE5vZGUoKSAmJiBzdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQoc3RhcnQubm9kZSgpKSAm
JiBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgY2FyZXRNYXhPZmZzZXQoc3RhcnQu
bm9kZSgpKSkgewotICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUo
KSA9PSBlbmQubm9kZSgpID8gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7Ci0g
ICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Lm5vZGUoKSk7Ci0g
ICAgICAgIHNwbGl0VGV4dE5vZGUodGV4dCwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSk7Ci0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Lm5vZGUoKSwgMCksIFBv
c2l0aW9uKGVuZC5ub2RlKCksIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIC0gZW5kT2Zm
c2V0QWRqdXN0bWVudCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KGVuZC5ub2RlKCkp
OworICAgIHNwbGl0VGV4dE5vZGUodGV4dCwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkp
OworCisgICAgTm9kZSAqcHJldk5vZGUgPSB0ZXh0LT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICBB
U1NFUlQocHJldk5vZGUpOworICAgIE5vZGUgKnN0YXJ0Tm9kZSA9IHN0YXJ0Lm5vZGUoKSA9PSBl
bmQubm9kZSgpID8gcHJldk5vZGUgOiBzdGFydC5ub2RlKCk7CisgICAgQVNTRVJUKHN0YXJ0Tm9k
ZSk7CisgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnROb2RlLCBzdGFydC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpKSwgUG9zaXRpb24ocHJldk5vZGUsIGNhcmV0TWF4T2Zmc2V0KHBy
ZXZOb2RlKSkpOwogfQogCi1ib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRBdEVuZElm
TmVlZGVkKGNvbnN0IFBvc2l0aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVuZCkKK3ZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9u
ICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVuZCkKIHsKLSAgICBpZiAoZW5kLm5vZGUoKS0+aXNU
ZXh0Tm9kZSgpICYmIGVuZC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gY2FyZXRNaW5PZmZz
ZXQoZW5kLm5vZGUoKSkgJiYgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBjYXJldE1h
eE9mZnNldChlbmQubm9kZSgpKSkgewotICAgICAgICBUZXh0ICp0ZXh0ID0gc3RhdGljX2Nhc3Q8
VGV4dCAqPihlbmQubm9kZSgpKTsKLSAgICAgICAgc3BsaXRUZXh0Tm9kZSh0ZXh0LCBlbmQuZGVw
cmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7Ci0gICAgICAgIAotICAgICAgICBOb2RlICpwcmV2Tm9k
ZSA9IHRleHQtPnByZXZpb3VzU2libGluZygpOwotICAgICAgICBBU1NFUlQocHJldk5vZGUpOwot
ICAgICAgICBOb2RlICpzdGFydE5vZGUgPSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHBy
ZXZOb2RlIDogc3RhcnQubm9kZSgpOwotICAgICAgICBBU1NFUlQoc3RhcnROb2RlKTsKLSAgICAg
ICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnROb2RlLCBzdGFydC5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpKSwgUG9zaXRpb24ocHJldk5vZGUsIGNhcmV0TWF4T2Zmc2V0KHByZXZOb2Rl
KSkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAg
IGludCBlbmRPZmZzZXRBZGp1c3RtZW50ID0gc3RhcnQubm9kZSgpID09IGVuZC5ub2RlKCkgPyBz
dGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDogMDsKKyAgICBUZXh0ICp0ZXh0ID0gc3Rh
dGljX2Nhc3Q8VGV4dCAqPihzdGFydC5ub2RlKCkpOworICAgIHNwbGl0VGV4dE5vZGVDb250YWlu
aW5nRWxlbWVudCh0ZXh0LCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKKyAgICB1
cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydC5ub2RlKCktPnBhcmVudE5vZGUoKSwgc3RhcnQu
bm9kZSgpLT5ub2RlSW5kZXgoKSksIFBvc2l0aW9uKGVuZC5ub2RlKCksIGVuZC5kZXByZWNhdGVk
RWRpdGluZ09mZnNldCgpIC0gZW5kT2Zmc2V0QWRqdXN0bWVudCkpOwogfQogCi1ib29sIEFwcGx5
U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVtZW50QXRTdGFydElmTmVlZGVkKGNvbnN0IFBvc2l0
aW9uICZzdGFydCwgY29uc3QgUG9zaXRpb24gJmVuZCkKK3ZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6
OnNwbGl0VGV4dEVsZW1lbnRBdEVuZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0
aW9uICZlbmQpCiB7Ci0gICAgaWYgKHN0YXJ0Lm5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmIHN0YXJ0
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBjYXJldE1pbk9mZnNldChzdGFydC5ub2RlKCkp
ICYmIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBjYXJldE1heE9mZnNldChzdGFy
dC5ub2RlKCkpKSB7Ci0gICAgICAgIGludCBlbmRPZmZzZXRBZGp1c3RtZW50ID0gc3RhcnQubm9k
ZSgpID09IGVuZC5ub2RlKCkgPyBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDogMDsK
LSAgICAgICAgVGV4dCAqdGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4oc3RhcnQubm9kZSgpKTsK
LSAgICAgICAgc3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50KHRleHQsIHN0YXJ0LmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOworICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0
ICo+KGVuZC5ub2RlKCkpOworICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudCh0ZXh0
LCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKLSAgICAgICAgdXBkYXRlU3RhcnRF
bmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLT5wYXJlbnROb2RlKCksIHN0YXJ0Lm5vZGUoKS0+bm9k
ZUluZGV4KCkpLCBQb3NpdGlvbihlbmQubm9kZSgpLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKSAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKKyAgICBOb2RlICpwcmV2Tm9kZSA9IHRleHQtPnBhcmVudCgp
LT5wcmV2aW91c1NpYmxpbmcoKS0+bGFzdENoaWxkKCk7CisgICAgQVNTRVJUKHByZXZOb2RlKTsK
KyAgICBOb2RlICpzdGFydE5vZGUgPSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHByZXZO
b2RlIDogc3RhcnQubm9kZSgpOworICAgIEFTU0VSVChzdGFydE5vZGUpOworICAgIHVwZGF0ZVN0
YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSksIFBvc2l0aW9uKHByZXZOb2RlLT5wYXJlbnQoKSwgcHJldk5vZGUtPm5vZGVJbmRleCgpICsg
MSkpOwogfQotCi1ib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVtZW50QXRFbmRJ
Zk5lZWRlZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCisgICAg
Citib29sIEFwcGx5U3R5bGVDb21tYW5kOjppc1ZhbGlkQ2FyZXRQb3NpdGlvbkluVGV4dE5vZGUo
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewotICAgIGlmIChlbmQubm9kZSgpLT5pc1RleHRO
b2RlKCkgJiYgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBjYXJldE1pbk9mZnNldChl
bmQubm9kZSgpKSAmJiBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8IGNhcmV0TWF4T2Zm
c2V0KGVuZC5ub2RlKCkpKSB7Ci0gICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0
ICo+KGVuZC5ub2RlKCkpOwotICAgICAgICBzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQo
dGV4dCwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotCi0gICAgICAgIE5vZGUgKnBy
ZXZOb2RlID0gdGV4dC0+cGFyZW50KCktPnByZXZpb3VzU2libGluZygpLT5sYXN0Q2hpbGQoKTsK
LSAgICAgICAgQVNTRVJUKHByZXZOb2RlKTsKLSAgICAgICAgTm9kZSAqc3RhcnROb2RlID0gc3Rh
cnQubm9kZSgpID09IGVuZC5ub2RlKCkgPyBwcmV2Tm9kZSA6IHN0YXJ0Lm5vZGUoKTsKLSAgICAg
ICAgQVNTRVJUKHN0YXJ0Tm9kZSk7Ci0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0
YXJ0Tm9kZSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSksIFBvc2l0aW9uKHByZXZO
b2RlLT5wYXJlbnQoKSwgcHJldk5vZGUtPm5vZGVJbmRleCgpICsgMSkpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIE5vZGUqIG5vZGUgPSBwb3Np
dGlvbi5ub2RlKCk7CisgICAgaWYgKCFub2RlLT5pc1RleHROb2RlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpbnQgb2Zmc2V0SW5UZXh0ID0gcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKTsKKyAgICByZXR1cm4gKG9mZnNldEluVGV4dCA+IGNhcmV0TWluT2Zmc2V0KG5v
ZGUpICYmIG9mZnNldEluVGV4dCA8IGNhcmV0TWF4T2Zmc2V0KG5vZGUpKTsKIH0KLQorICAgIAog
c3RhdGljIGJvb2wgYXJlSWRlbnRpY2FsRWxlbWVudHMoTm9kZSAqZmlyc3QsIE5vZGUgKnNlY29u
ZCkKIHsKICAgICAvLyBjaGVjayB0aGF0IHRhZyBuYW1lIGFuZCBhbGwgYXR0cmlidXRlIG5hbWVz
IGFuZCB2YWx1ZXMgYXJlIGlkZW50aWNhbApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmgJKHJldmlzaW9uIDY0MDEzKQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEwICs5MSwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgYXBwbHlJbmxpbmVTdHlsZVRvUmFuZ2UoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBj
b25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgYWRk
QmxvY2tTdHlsZShjb25zdCBTdHlsZUNoYW5nZSYsIEhUTUxFbGVtZW50Kik7CiAgICAgdm9pZCBh
ZGRJbmxpbmVTdHlsZUlmTmVlZGVkKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgTm9kZSog
c3RhcnQsIE5vZGUqIGVuZCk7Ci0gICAgYm9vbCBzcGxpdFRleHRBdFN0YXJ0SWZOZWVkZWQoY29u
c3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKLSAgICBib29sIHNwbGl0
VGV4dEF0RW5kSWZOZWVkZWQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKTsKLSAgICBib29sIHNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0SWZOZWVkZWQoY29uc3QgUG9z
aXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKLSAgICBib29sIHNwbGl0VGV4dEVs
ZW1lbnRBdEVuZElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCk7CisgICAgdm9pZCBzcGxpdFRleHRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwg
Y29uc3QgUG9zaXRpb24mIGVuZCk7CisgICAgdm9pZCBzcGxpdFRleHRBdEVuZChjb25zdCBQb3Np
dGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOworICAgIHZvaWQgc3BsaXRUZXh0RWxl
bWVudEF0U3RhcnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsK
KyAgICB2b2lkIHNwbGl0VGV4dEVsZW1lbnRBdEVuZChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IFBvc2l0aW9uJiBlbmQpOworICAgIGJvb2wgaXNWYWxpZENhcmV0UG9zaXRpb25JblRleHRO
b2RlKGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbik7CiAgICAgYm9vbCBtZXJnZVN0YXJ0V2l0aFBy
ZXZpb3VzSWZJZGVudGljYWwoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYg
ZW5kKTsKICAgICBib29sIG1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbChjb25zdCBQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgY2xlYW51cFVuc3R5bGVk
QXBwbGVTdHlsZVNwYW5zKE5vZGUqIGR1bW15U3BhbkFuY2VzdG9yKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62515</attachid>
            <date>2010-07-24 17:56:41 -0700</date>
            <delta_ts>2010-07-25 19:35:46 -0700</delta_ts>
            <desc>fixed references and pointers (space before &amp;/*)</desc>
            <filename>fix42937c</filename>
            <type>text/plain</type>
            <size>10242</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDAxNykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDctMjQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgc3Bs
aXRUZXh0QXQqSWZOZWVkIGFuZCBzcGxpdFRleHRFbGVtZW50QXQqSWZOZWVkIG5lZWQgdG8gYmUg
Y2xlYW5lZCB1cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDI5MzcKKworICAgICAgICBJc29sYXRlZCB0aGUgY29kZSB0byBkZWNpZGUgd2hldGhlciBv
ciBub3QgdGV4dCBub2RlIHNob3VsZCBiZSBzcGxpdCBpbnRvIGlzVmFsaWRDYXJldFBvc2l0aW9u
SW5UZXh0Tm9kZS4KKyAgICAgICAgTW92ZWQgdGhlIGNvbmRpdGlvbiBjaGVjayBvdXQgb2YgKklm
TmVlZGVkIG1ldGhvZHMgdG8gYXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZSBhbmQgYXBwbHlJ
bmxpbmVTdHlsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYWRkZWQuCisKKyAgICAgICAgKiBl
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5
bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKTogVXNlcyBpc1ZhbGlkQ2Fy
ZXRQb3NpdGlvbkluVGV4dE5vZGUuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFu
ZDo6YXBwbHlJbmxpbmVTdHlsZSk6IFVzZXMgaXNWYWxpZENhcmV0UG9zaXRpb25JblRleHROb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEF0U3RhcnQp
OiBSZW5hbWVkIGZyb20gc3BsaXRUZXh0QXRTdGFydElmTmVlZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEF0RW5kKTogUmVuYW1lZCBmcm9tIHNwbGl0
VGV4dEF0RW5kSWZOZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6
c3BsaXRUZXh0RWxlbWVudEF0U3RhcnQpOiBSZW5hbWVkIGZyb20gc3BsaXRUZXh0RWxlbWVudEF0
U3RhcnRJZk5lZWRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzcGxp
dFRleHRFbGVtZW50QXRFbmQpOiBSZW5hbWVkIGZyb20gc3BsaXRUZXh0RWxlbWVudEF0RW5kSWZO
ZWVkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6aXNWYWxpZENhcmV0
UG9zaXRpb25JblRleHROb2RlKTogUmV0dXJucyB0cnVlIGlmIHRoZSBwb3NpdGlvbiBsaWVzIHdp
dGhpbiBhIHRleHQgbm9kZS4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmg6
CisKIDIwMTAtMDctMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHBhcm9nYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcv
QXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDY0MDEzKQorKysgV2ViQ29yZS9lZGl0aW5nL0Fw
cGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg0LDEzICs2ODQsMTQgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbgogICAgIH0KIAogICAgIC8v
IFNwbGl0IHRoZSBzdGFydCB0ZXh0IG5vZGVzIGlmIG5lZWRlZCB0byBhcHBseSBzdHlsZS4KLSAg
ICBib29sIHNwbGl0U3RhcnQgPSBzcGxpdFRleHRBdFN0YXJ0SWZOZWVkZWQoc3RhcnQsIGVuZCk7
IAotICAgIGlmIChzcGxpdFN0YXJ0KSB7CisgICAgaWYgKGlzVmFsaWRDYXJldFBvc2l0aW9uSW5U
ZXh0Tm9kZShzdGFydCkpIHsKKyAgICAgICAgc3BsaXRUZXh0QXRTdGFydChzdGFydCwgZW5kKTsK
ICAgICAgICAgc3RhcnQgPSBzdGFydFBvc2l0aW9uKCk7CiAgICAgICAgIGVuZCA9IGVuZFBvc2l0
aW9uKCk7CiAgICAgfQotICAgIGJvb2wgc3BsaXRFbmQgPSBzcGxpdFRleHRBdEVuZElmTmVlZGVk
KHN0YXJ0LCBlbmQpOwotICAgIGlmIChzcGxpdEVuZCkgeworCisgICAgaWYgKGlzVmFsaWRDYXJl
dFBvc2l0aW9uSW5UZXh0Tm9kZShlbmQpKSB7CisgICAgICAgIHNwbGl0VGV4dEF0RW5kKHN0YXJ0
LCBlbmQpOwogICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgZW5kID0g
ZW5kUG9zaXRpb24oKTsKICAgICB9CkBAIC05MDcsMTYgKzkwOCwxOCBAQCB2b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlCiAgICAgfQogCiAgICAgLy8gc3BsaXQgdGhlIHN0
YXJ0IG5vZGUgYW5kIGNvbnRhaW5pbmcgZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBp
bnNpZGUgb2YgaXQKLSAgICBib29sIHNwbGl0U3RhcnQgPSBzcGxpdFRleHRFbGVtZW50QXRTdGFy
dElmTmVlZGVkKHN0YXJ0LCBlbmQpOyAKKyAgICBib29sIHNwbGl0U3RhcnQgPSBpc1ZhbGlkQ2Fy
ZXRQb3NpdGlvbkluVGV4dE5vZGUoc3RhcnQpOwogICAgIGlmIChzcGxpdFN0YXJ0KSB7CisgICAg
ICAgIHNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0KHN0YXJ0LCBlbmQpOwogICAgICAgICBzdGFydCA9
IHN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24oKTsKICAgICAgICAg
c3RhcnREdW1teVNwYW5BbmNlc3RvciA9IGR1bW15U3BhbkFuY2VzdG9yRm9yTm9kZShzdGFydC5u
b2RlKCkpOwogICAgIH0KIAogICAgIC8vIHNwbGl0IHRoZSBlbmQgbm9kZSBhbmQgY29udGFpbmlu
ZyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24gZW5kcyBpbnNpZGUgb2YgaXQKLSAgICBib29sIHNw
bGl0RW5kID0gc3BsaXRUZXh0RWxlbWVudEF0RW5kSWZOZWVkZWQoc3RhcnQsIGVuZCk7CisgICAg
Ym9vbCBzcGxpdEVuZCA9IGlzVmFsaWRDYXJldFBvc2l0aW9uSW5UZXh0Tm9kZShlbmQpOwogICAg
IGlmIChzcGxpdEVuZCkgeworICAgICAgICBzcGxpdFRleHRFbGVtZW50QXRFbmQoc3RhcnQsIGVu
ZCk7CiAgICAgICAgIHN0YXJ0ID0gc3RhcnRQb3NpdGlvbigpOwogICAgICAgICBlbmQgPSBlbmRQ
b3NpdGlvbigpOwogICAgICAgICBlbmREdW1teVNwYW5BbmNlc3RvciA9IGR1bW15U3BhbkFuY2Vz
dG9yRm9yTm9kZShlbmQubm9kZSgpKTsKQEAgLTE1MjksNjQgKzE1MzIsNTUgQEAgYm9vbCBBcHBs
eVN0eWxlQ29tbWFuZDo6bm9kZUZ1bGx5VW5zZWxlYwogICAgIHJldHVybiBpc0Z1bGx5QmVmb3Jl
U3RhcnQgfHwgaXNGdWxseUFmdGVyRW5kOwogfQogCit2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpz
cGxpdFRleHRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVu
ZCkKK3sKKyAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQu
bm9kZSgpID8gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7CisgICAgVGV4dCog
dGV4dCA9IHN0YXRpY19jYXN0PFRleHQqPihzdGFydC5ub2RlKCkpOworICAgIHNwbGl0VGV4dE5v
ZGUodGV4dCwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgdXBkYXRlU3Rh
cnRFbmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLCAwKSwgUG9zaXRpb24oZW5kLm5vZGUoKSwgZW5k
LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSBlbmRPZmZzZXRBZGp1c3RtZW50KSk7Cit9CiAK
LWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEF0U3RhcnRJZk5lZWRlZChjb25zdCBQ
b3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCit2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjpzcGxpdFRleHRBdEVuZChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9u
JiBlbmQpCiB7Ci0gICAgaWYgKHN0YXJ0Lm5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmIHN0YXJ0LmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBjYXJldE1pbk9mZnNldChzdGFydC5ub2RlKCkpICYm
IHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPCBjYXJldE1heE9mZnNldChzdGFydC5u
b2RlKCkpKSB7Ci0gICAgICAgIGludCBlbmRPZmZzZXRBZGp1c3RtZW50ID0gc3RhcnQubm9kZSgp
ID09IGVuZC5ub2RlKCkgPyBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDogMDsKLSAg
ICAgICAgVGV4dCAqdGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4oc3RhcnQubm9kZSgpKTsKLSAg
ICAgICAgc3BsaXRUZXh0Tm9kZSh0ZXh0LCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgp
KTsKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLCAwKSwgUG9z
aXRpb24oZW5kLm5vZGUoKSwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgLSBlbmRPZmZz
ZXRBZGp1c3RtZW50KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgVGV4dCogdGV4dCA9IHN0YXRpY19jYXN0PFRleHQgKj4oZW5kLm5vZGUoKSk7
CisgICAgc3BsaXRUZXh0Tm9kZSh0ZXh0LCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7
CisKKyAgICBOb2RlKiBwcmV2Tm9kZSA9IHRleHQtPnByZXZpb3VzU2libGluZygpOworICAgIEFT
U0VSVChwcmV2Tm9kZSk7CisgICAgTm9kZSogc3RhcnROb2RlID0gc3RhcnQubm9kZSgpID09IGVu
ZC5ub2RlKCkgPyBwcmV2Tm9kZSA6IHN0YXJ0Lm5vZGUoKTsKKyAgICBBU1NFUlQoc3RhcnROb2Rl
KTsKKyAgICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCkpLCBQb3NpdGlvbihwcmV2Tm9kZSwgY2FyZXRNYXhPZmZzZXQocHJl
dk5vZGUpKSk7CiB9CiAKLWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNwbGl0VGV4dEF0RW5kSWZO
ZWVkZWQoY29uc3QgUG9zaXRpb24gJnN0YXJ0LCBjb25zdCBQb3NpdGlvbiAmZW5kKQordm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0U3RhcnQoY29uc3QgUG9zaXRpb24m
IHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKQogewotICAgIGlmIChlbmQubm9kZSgpLT5pc1Rl
eHROb2RlKCkgJiYgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBjYXJldE1pbk9mZnNl
dChlbmQubm9kZSgpKSAmJiBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8IGNhcmV0TWF4
T2Zmc2V0KGVuZC5ub2RlKCkpKSB7Ci0gICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxU
ZXh0ICo+KGVuZC5ub2RlKCkpOwotICAgICAgICBzcGxpdFRleHROb2RlKHRleHQsIGVuZC5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpKTsKLSAgICAgICAgCi0gICAgICAgIE5vZGUgKnByZXZOb2Rl
ID0gdGV4dC0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgIEFTU0VSVChwcmV2Tm9kZSk7Ci0g
ICAgICAgIE5vZGUgKnN0YXJ0Tm9kZSA9IHN0YXJ0Lm5vZGUoKSA9PSBlbmQubm9kZSgpID8gcHJl
dk5vZGUgOiBzdGFydC5ub2RlKCk7Ci0gICAgICAgIEFTU0VSVChzdGFydE5vZGUpOwotICAgICAg
ICB1cGRhdGVTdGFydEVuZChQb3NpdGlvbihzdGFydE5vZGUsIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCkpLCBQb3NpdGlvbihwcmV2Tm9kZSwgY2FyZXRNYXhPZmZzZXQocHJldk5vZGUp
KSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAg
aW50IGVuZE9mZnNldEFkanVzdG1lbnQgPSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHN0
YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgOiAwOworICAgIFRleHQqIHRleHQgPSBzdGF0
aWNfY2FzdDxUZXh0Kj4oc3RhcnQubm9kZSgpKTsKKyAgICBzcGxpdFRleHROb2RlQ29udGFpbmlu
Z0VsZW1lbnQodGV4dCwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CisgICAgdXBk
YXRlU3RhcnRFbmQoUG9zaXRpb24oc3RhcnQubm9kZSgpLT5wYXJlbnROb2RlKCksIHN0YXJ0Lm5v
ZGUoKS0+bm9kZUluZGV4KCkpLCBQb3NpdGlvbihlbmQubm9kZSgpLCBlbmQuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKSAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKIH0KIAotYm9vbCBBcHBseVN0
eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudEF0U3RhcnRJZk5lZWRlZChjb25zdCBQb3NpdGlv
biAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCit2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpz
cGxpdFRleHRFbGVtZW50QXRFbmQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlv
biYgZW5kKQogewotICAgIGlmIChzdGFydC5ub2RlKCktPmlzVGV4dE5vZGUoKSAmJiBzdGFydC5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpID4gY2FyZXRNaW5PZmZzZXQoc3RhcnQubm9kZSgpKSAm
JiBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpIDwgY2FyZXRNYXhPZmZzZXQoc3RhcnQu
bm9kZSgpKSkgewotICAgICAgICBpbnQgZW5kT2Zmc2V0QWRqdXN0bWVudCA9IHN0YXJ0Lm5vZGUo
KSA9PSBlbmQubm9kZSgpID8gc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA6IDA7Ci0g
ICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+KHN0YXJ0Lm5vZGUoKSk7Ci0g
ICAgICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudCh0ZXh0LCBzdGFydC5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpKTsKKyAgICBUZXh0KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8VGV4dCo+
KGVuZC5ub2RlKCkpOworICAgIHNwbGl0VGV4dE5vZGVDb250YWluaW5nRWxlbWVudCh0ZXh0LCBl
bmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSk7CiAKLSAgICAgICAgdXBkYXRlU3RhcnRFbmQo
UG9zaXRpb24oc3RhcnQubm9kZSgpLT5wYXJlbnROb2RlKCksIHN0YXJ0Lm5vZGUoKS0+bm9kZUlu
ZGV4KCkpLCBQb3NpdGlvbihlbmQubm9kZSgpLCBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQo
KSAtIGVuZE9mZnNldEFkanVzdG1lbnQpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIHJldHVybiBmYWxzZTsKKyAgICBOb2RlKiBwcmV2Tm9kZSA9IHRleHQtPnBhcmVudCgpLT5w
cmV2aW91c1NpYmxpbmcoKS0+bGFzdENoaWxkKCk7CisgICAgQVNTRVJUKHByZXZOb2RlKTsKKyAg
ICBOb2RlKiBzdGFydE5vZGUgPSBzdGFydC5ub2RlKCkgPT0gZW5kLm5vZGUoKSA/IHByZXZOb2Rl
IDogc3RhcnQubm9kZSgpOworICAgIEFTU0VSVChzdGFydE5vZGUpOworICAgIHVwZGF0ZVN0YXJ0
RW5kKFBvc2l0aW9uKHN0YXJ0Tm9kZSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSks
IFBvc2l0aW9uKHByZXZOb2RlLT5wYXJlbnQoKSwgcHJldk5vZGUtPm5vZGVJbmRleCgpICsgMSkp
OwogfQotCi1ib29sIEFwcGx5U3R5bGVDb21tYW5kOjpzcGxpdFRleHRFbGVtZW50QXRFbmRJZk5l
ZWRlZChjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9uICZlbmQpCisgICAgCiti
b29sIEFwcGx5U3R5bGVDb21tYW5kOjppc1ZhbGlkQ2FyZXRQb3NpdGlvbkluVGV4dE5vZGUoY29u
c3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewotICAgIGlmIChlbmQubm9kZSgpLT5pc1RleHROb2Rl
KCkgJiYgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkgPiBjYXJldE1pbk9mZnNldChlbmQu
bm9kZSgpKSAmJiBlbmQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSA8IGNhcmV0TWF4T2Zmc2V0
KGVuZC5ub2RlKCkpKSB7Ci0gICAgICAgIFRleHQgKnRleHQgPSBzdGF0aWNfY2FzdDxUZXh0ICo+
KGVuZC5ub2RlKCkpOwotICAgICAgICBzcGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQodGV4
dCwgZW5kLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCkpOwotCi0gICAgICAgIE5vZGUgKnByZXZO
b2RlID0gdGV4dC0+cGFyZW50KCktPnByZXZpb3VzU2libGluZygpLT5sYXN0Q2hpbGQoKTsKLSAg
ICAgICAgQVNTRVJUKHByZXZOb2RlKTsKLSAgICAgICAgTm9kZSAqc3RhcnROb2RlID0gc3RhcnQu
bm9kZSgpID09IGVuZC5ub2RlKCkgPyBwcmV2Tm9kZSA6IHN0YXJ0Lm5vZGUoKTsKLSAgICAgICAg
QVNTRVJUKHN0YXJ0Tm9kZSk7Ci0gICAgICAgIHVwZGF0ZVN0YXJ0RW5kKFBvc2l0aW9uKHN0YXJ0
Tm9kZSwgc3RhcnQuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSksIFBvc2l0aW9uKHByZXZOb2Rl
LT5wYXJlbnQoKSwgcHJldk5vZGUtPm5vZGVJbmRleCgpICsgMSkpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIE5vZGUqIG5vZGUgPSBwb3NpdGlv
bi5ub2RlKCk7CisgICAgaWYgKCFub2RlLT5pc1RleHROb2RlKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpbnQgb2Zmc2V0SW5UZXh0ID0gcG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKKyAgICByZXR1cm4gKG9mZnNldEluVGV4dCA+IGNhcmV0TWluT2Zmc2V0KG5vZGUp
ICYmIG9mZnNldEluVGV4dCA8IGNhcmV0TWF4T2Zmc2V0KG5vZGUpKTsKIH0KLQorICAgIAogc3Rh
dGljIGJvb2wgYXJlSWRlbnRpY2FsRWxlbWVudHMoTm9kZSAqZmlyc3QsIE5vZGUgKnNlY29uZCkK
IHsKICAgICAvLyBjaGVjayB0aGF0IHRhZyBuYW1lIGFuZCBhbGwgYXR0cmlidXRlIG5hbWVzIGFu
ZCB2YWx1ZXMgYXJlIGlkZW50aWNhbApJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmgJKHJldmlzaW9uIDY0MDEzKQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDEwICs5MSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
YXBwbHlJbmxpbmVTdHlsZVRvUmFuZ2UoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBjb25z
dCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgYWRkQmxv
Y2tTdHlsZShjb25zdCBTdHlsZUNoYW5nZSYsIEhUTUxFbGVtZW50Kik7CiAgICAgdm9pZCBhZGRJ
bmxpbmVTdHlsZUlmTmVlZGVkKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgTm9kZSogc3Rh
cnQsIE5vZGUqIGVuZCk7Ci0gICAgYm9vbCBzcGxpdFRleHRBdFN0YXJ0SWZOZWVkZWQoY29uc3Qg
UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKLSAgICBib29sIHNwbGl0VGV4
dEF0RW5kSWZOZWVkZWQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5k
KTsKLSAgICBib29sIHNwbGl0VGV4dEVsZW1lbnRBdFN0YXJ0SWZOZWVkZWQoY29uc3QgUG9zaXRp
b24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKLSAgICBib29sIHNwbGl0VGV4dEVsZW1l
bnRBdEVuZElmTmVlZGVkKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVu
ZCk7CisgICAgdm9pZCBzcGxpdFRleHRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29u
c3QgUG9zaXRpb24mIGVuZCk7CisgICAgdm9pZCBzcGxpdFRleHRBdEVuZChjb25zdCBQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOworICAgIHZvaWQgc3BsaXRUZXh0RWxlbWVu
dEF0U3RhcnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKKyAg
ICB2b2lkIHNwbGl0VGV4dEVsZW1lbnRBdEVuZChjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
IFBvc2l0aW9uJiBlbmQpOworICAgIGJvb2wgaXNWYWxpZENhcmV0UG9zaXRpb25JblRleHROb2Rl
KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbik7CiAgICAgYm9vbCBtZXJnZVN0YXJ0V2l0aFByZXZp
b3VzSWZJZGVudGljYWwoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5k
KTsKICAgICBib29sIG1lcmdlRW5kV2l0aE5leHRJZklkZW50aWNhbChjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgY2xlYW51cFVuc3R5bGVkQXBw
bGVTdHlsZVNwYW5zKE5vZGUqIGR1bW15U3BhbkFuY2VzdG9yKTsK
</data>
<flag name="review"
          id="50742"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>