<?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>28891</bug_id>
          
          <creation_ts>2009-09-01 15:15:41 -0700</creation_ts>
          <short_desc>dataTransfer.types() should not return Files if file list is empty in the clipboard.</short_desc>
          <delta_ts>2009-09-08 11:03:30 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>eric</cc>
    
    <cc>noel.gordon</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>144010</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-09-01 15:15:41 -0700</bug_when>
    <thetext>dataTransfer.types() should not return Files if file list is empty in the clipboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144012</commentid>
    <comment_count>1</comment_count>
      <attachid>38890</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-09-01 15:23:28 -0700</bug_when>
    <thetext>Created attachment 38890
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144064</commentid>
    <comment_count>2</comment_count>
      <attachid>38890</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-01 17:18:00 -0700</bug_when>
    <thetext>Comment on attachment 38890
Proposed Patch

Bah!  Copy paste code is bad, even in LayoutTests. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144068</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-09-01 17:30:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 38890 [details])
&gt; Bah!  Copy paste code is bad, even in LayoutTests. :(

Not sure I understand your comment. I did copy &amp; paste some code in layout test script, but I looked at it carefully. Which part of the code do you refer to? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144120</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 00:10:20 -0700</bug_when>
    <thetext>Sorry, my brief comment wasn&apos;t very helpful. :)

     if (filesToDrag.length &gt; 0)
 16         eventShouldContainTransferType(event, &quot;Files&quot;);
 17     else
 18         eventShouldNotContainTransferType(event, &quot;Files&quot;);

looks repeated a bunch.  

Passing NSPasteboard to 
 107 static void addHTMLClipboardTypesForCocoaType(HashSet&lt;String&gt;&amp; resultTypes, NSString *cocoaType, NSPasteboard* pasteboard)
is a little ugly, but OK I guess.  There is some danger that the changeCount could have changed since we grabbed the types array, so that the pasteboard could now have files when it didn&apos;t before, or not have them when it did before.  I don&apos;t think that&apos;s gonna be an issue in this case though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144249</commentid>
    <comment_count>5</comment_count>
      <attachid>38932</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-09-02 11:05:21 -0700</bug_when>
    <thetext>Created attachment 38932
Proposed Patch

Changed the script to avoid duplicate code. Also added the comment to ClipboardMac.mm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144871</commentid>
    <comment_count>6</comment_count>
      <attachid>38932</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-09-04 11:04:06 -0700</bug_when>
    <thetext>Comment on attachment 38932
Proposed Patch

Just a few things to consider and reply to.

Meta questions:
* Where is a spec reference for this change? (What does Firefox/IE do?)
* Does the windows code/other platforms need an equivalent change?


&gt; diff --git a/LayoutTests/http/tests/security/clipboard/resources/clipboard-file-access.js b/LayoutTests/http/tests/security/clipboard/resources/clipboard-file-access.js

&gt; +function checkEventTransferType(event, typeString, shouldContain)

I&apos;m left asking shouldContain what?
How about &quot;shouldContainType&quot;?

Also, regarding the function namehHow about checkForEventTransferType?

&gt;  {
&gt; +    if (event.dataTransfer.types &amp;&amp; event.dataTransfer.types.indexOf(typeString) != -1) {

Why did the check for &quot;event.dataTransfer.types&quot; get added?


&gt; +        if (shouldContain)
&gt; +            testPassed(&quot;event.dataTransfer.types contains &quot; + typeString + &quot;.&quot;);
&gt; +        else
&gt; +            testFailed(&quot;event.dataTransfer.types should not contain &quot; + typeString + &quot;.&quot;);
&gt; +    } else {
&gt; +        if (shouldContain)
&gt; +            testFailed(&quot;event.dataTransfer.types &quot; + typeString + &quot; expected.&quot;);
&gt; +        else
&gt; +            testPassed(&quot;event.dataTransfer.types does not contain &quot; + typeString + &quot;.&quot;);
&gt; +    }

How about this instead?

   if (event.dataTransfer.types.indexOf(typeString) != -1) {
        passedCheck = shouldContain;
        message = &quot;event.dataTransfer.types contains &quot; + typeString + &quot;.&quot;;
    } else {
        passedCheck = !shouldContain;
        message = &quot;event.dataTransfer.types does not contain &quot; + typeString + &quot;.&quot;;
    }   
    if (passedCheck)
        testPassed(message);
    else
        testFailed(message);




&gt; diff --git a/WebCore/platform/mac/ClipboardMac.mm b/WebCore/platform/mac/ClipboardMac.mm
&gt; +static void addHTMLClipboardTypesForCocoaType(HashSet&lt;String&gt;&amp; resultTypes, NSString *cocoaType, NSPasteboard* pasteboard)

&quot;NSPasteboard*&quot; Since this is Objective-C the rule for * placement changes (just to keep you sharp :) ).



&gt; +        // If file list is empty, add nothing.

If *the* file list is empty ...

&gt; +        // Note that there is a chance that the file list count could have changed since we grabbed the types array.
&gt; +        // However, this is not really an issue for us doing a sanity check here.
&gt; +        NSArray *fileList = [pasteboard propertyListForType:NSFilenamesPboardType];
&gt; +        if ([fileList count] != 0) {

Avoid comparisons to 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144884</commentid>
    <comment_count>7</comment_count>
      <attachid>39079</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-09-04 11:59:29 -0700</bug_when>
    <thetext>Created attachment 39079
Proposed Patch

Fixed all the problems.

As to the meta-questions, I&apos;ve update the ChangeLog to indicate why we make the behavior change. Also, we do not need to update the implementation for other platforms since clipboard files are not supported there yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144992</commentid>
    <comment_count>8</comment_count>
      <attachid>39079</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-05 01:27:29 -0700</bug_when>
    <thetext>Comment on attachment 39079
Proposed Patch

Exception: Unknown committer: jianli@chromium.org
If you&apos;re a committer, please make sure you&apos;ve added yourself to:
WebKitTools/Scripts/modules/committers.py

If not, please don&apos;t set commit-queue+ :)

Marking cq- because noel seems to have raised an objection via email, waiting for him to respond.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145099</commentid>
    <comment_count>9</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2009-09-06 22:50:28 -0700</bug_when>
    <thetext>&gt; Marking cq- because noel seems to have raised an objection via email, waiting
&gt; for him to respond.

myu mistake, no objections from me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145371</commentid>
    <comment_count>10</comment_count>
      <attachid>39079</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 08:56:23 -0700</bug_when>
    <thetext>Comment on attachment 39079
Proposed Patch

Rejecting patch 39079 from commit-queue.  This patch will require manual commit.

[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--quiet&apos;, &apos;--exit-after-n-failures=1&apos;] failed with exit code 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145373</commentid>
    <comment_count>11</comment_count>
      <attachid>39079</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 09:00:42 -0700</bug_when>
    <thetext>Comment on attachment 39079
Proposed Patch

compositing/self-painting-layers.html -&gt; crashed

Caused by the commit-queue&apos;s arch nemesis, bug 28845.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145376</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-08 09:03:41 -0700</bug_when>
    <thetext>Actually, the trace looks different.  I filed bug 29035.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>145456</commentid>
    <comment_count>13</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-09-08 11:03:30 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/48169.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38890</attachid>
            <date>2009-09-01 15:23:28 -0700</date>
            <delta_ts>2009-09-02 11:05:21 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>28891</filename>
            <type>text/plain</type>
            <size>8370</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMTY2MDViLi42MTZhZGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDkt
MDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRhdGFUcmFuc2Zlci50eXBlcygpIHNob3VsZCBu
b3QgcmV0dXJuIEZpbGVzIGlmIGZpbGUgbGlzdCBpcyBlbXB0eSBpbiB0aGUgY2xpcGJvYXJkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4OTEKKwor
ICAgICAgICBVcGRhdGUgdGhlIHRlc3Qgc2NyaXB0IGFuZCBleHBlY3RlZCByZXN1bHQgdG8gcmVm
bGVjdCB0aGUgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xpcGJvYXJkLWZpbGUt
YWNjZXNzLmpzOgorCiAyMDA5LTA5LTAxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nl
c3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9h
cmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dAppbmRleCA1MjRkMzQwLi4zZGE4
ODNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2Fy
ZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTUsMTMgKzUsMTMgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogRHJhZ2dp
bmcgbm8gZmlsZXMgc2hvdWxkIHJldHVybiBhbiBlbXB0eSBmaWxlIGxpc3QgKGFyYml0cmFyeSBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwpOgogT24gZHJhZ2VudGVyOgotUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIudHlwZXMgY29udGFpbnMgRmlsZXMuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBl
cyBkb2VzIG5vdCBjb250YWluIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMu
bGVuZ3RoIGlzIDAKIE9uIGRyYWdvdmVyOgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMg
Y29udGFpbnMgRmlsZXMuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBkb2VzIG5vdCBj
b250YWluIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAK
IE9uIGRyb3A6Ci1QQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBjb250YWlucyBGaWxlcy4K
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90IGNvbnRhaW4gRmlsZXMuCiBQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAogRHJhZyBkcm9wIGEgc2lu
Z2xlIChub24tZXhpc3RhbnQpIGZpbGUgb250byBhbiBlbGVtZW50OgogT24gZHJhZ2VudGVyOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVz
b3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanMKaW5k
ZXggMWQ3ZjFjMy4uOTFmZWNmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xp
cGJvYXJkLWZpbGUtYWNjZXNzLmpzCkBAIC04LDEwICs4LDE0IEBAIGRyYWdUYXJnZXQuc3R5bGUu
aGVpZ2h0ID0gIjEwMHB4IjsKIC8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0
b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0
IG9mIHZpZXcgKGFuZCBiZSB1bmRyYWdhYmxlKQogZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
ZHJhZ1RhcmdldCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKIAordmFyIGZpbGVzVG9EcmFn
OwogZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLCBmdW5jdGlvbigpIHsK
ICAgICBkZWJ1ZygiT24gZHJhZ2VudGVyOiIpCiAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgPSAiY29weSI7Ci0gICAgZXZlbnRTaG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50
LCAiRmlsZXMiKTsKKyAgICBpZiAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCkKKyAgICAgICAgZXZl
bnRTaG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiKTsKKyAgICBlbHNlCisg
ICAgICAgIGV2ZW50U2hvdWxkTm90Q29udGFpblRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIik7
CiAgICAgZmlsZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIiwgW10pOwog
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9LCBmYWxzZSk7CkBAIC0xOSwyMSArMjMsMzAg
QEAgZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLCBmdW5jdGlvbigpIHsK
IGRyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ292ZXIiLCBmdW5jdGlvbigpIHsKICAg
ICBkZWJ1ZygiT24gZHJhZ292ZXI6IikKICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVj
dCA9ICJjb3B5IjsKLSAgICBldmVudFNob3VsZENvbnRhaW5UcmFuc2ZlclR5cGUoZXZlbnQsICJG
aWxlcyIpOworICAgIGlmIChmaWxlc1RvRHJhZy5sZW5ndGggPiAwKQorICAgICAgICBldmVudFNo
b3VsZENvbnRhaW5UcmFuc2ZlclR5cGUoZXZlbnQsICJGaWxlcyIpOworICAgIGVsc2UKKyAgICAg
ICAgZXZlbnRTaG91bGROb3RDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiKTsKICAg
ICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBbXSk7CiAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKIH0sIGZhbHNlKTsKIAogZHJhZ1RhcmdldC5hZGRFdmVu
dExpc3RlbmVyKCJkcmFnbGVhdmUiLCBmdW5jdGlvbigpIHsKICAgICBkZWJ1ZygiT24gZHJhZ2xl
YXZlOiIpCi0gICAgZXZlbnRTaG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMi
KTsKKyAgICBpZiAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCkKKyAgICAgICAgZXZlbnRTaG91bGRD
b250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiKTsKKyAgICBlbHNlCisgICAgICAgIGV2
ZW50U2hvdWxkTm90Q29udGFpblRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIik7CiAgICAgZmls
ZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIiwgW10pOwogfSwgZmFsc2Up
OwogCiB2YXIgZXhwZWN0ZWRGaWxlc09uRHJvcDsKIGRyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5l
cigiZHJvcCIsIGZ1bmN0aW9uKCkgewogICAgIGRlYnVnKCJPbiBkcm9wOiIpCi0gICAgZXZlbnRT
aG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiKTsKKyAgICBpZiAoZmlsZXNU
b0RyYWcubGVuZ3RoID4gMCkKKyAgICAgICAgZXZlbnRTaG91bGRDb250YWluVHJhbnNmZXJUeXBl
KGV2ZW50LCAiRmlsZXMiKTsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50U2hvdWxkTm90Q29udGFp
blRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIik7CiAgICAgZmlsZUxpc3RTaG91bGRCZSgiZXZl
bnQuZGF0YVRyYW5zZmVyLmZpbGVzIiwgZXhwZWN0ZWRGaWxlc09uRHJvcCk7CiAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKIH0sIGZhbHNlKTsKQEAgLTUxLDYgKzY0LDcgQEAgZnVuY3Rpb24g
bW92ZU1vdXNlVG9PdXRzaWRlT2ZFbGVtZW50KGVsZW1lbnQpIHsKIH0KIAogZnVuY3Rpb24gZHJh
Z0ZpbGVzT250b0RyYWdUYXJnZXQoZmlsZXMsIGxlYXZlKSB7CisgICAgZmlsZXNUb0RyYWcgPSBm
aWxlczsKICAgICBldmVudFNlbmRlci5iZWdpbkRyYWdXaXRoRmlsZXMoZmlsZXMpOwogICAgIG1v
dmVNb3VzZVRvQ2VudGVyT2ZFbGVtZW50KGRyYWdUYXJnZXQpOwogICAgIGlmIChsZWF2ZSAmJiBs
ZWF2ZSA9PT0gdHJ1ZSkKQEAgLTYwLDEwICs3NCwxOCBAQCBmdW5jdGlvbiBkcmFnRmlsZXNPbnRv
RHJhZ1RhcmdldChmaWxlcywgbGVhdmUpIHsKIAogZnVuY3Rpb24gZXZlbnRTaG91bGRDb250YWlu
VHJhbnNmZXJUeXBlKGV2ZW50LCB0eXBlU3RyaW5nKQogewotICAgaWYgKGV2ZW50LmRhdGFUcmFu
c2Zlci50eXBlcy5pbmRleE9mKHR5cGVTdHJpbmcpID09IC0xKQotICAgICAgIHRlc3RGYWlsZWQo
ImV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyAiICsgdHlwZVN0cmluZyArICIgZXhwZWN0ZWQuIik7
Ci0gICBlbHNlCi0gICAgICAgdGVzdFBhc3NlZCgiZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGNv
bnRhaW5zICIgKyB0eXBlU3RyaW5nICsgIi4iKTsKKyAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVy
LnR5cGVzICYmIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmRleE9mKHR5cGVTdHJpbmcpICE9
IC0xKQorICAgICAgICB0ZXN0UGFzc2VkKCJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29udGFp
bnMgIiArIHR5cGVTdHJpbmcgKyAiLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdEZhaWxlZCgi
ZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzICIgKyB0eXBlU3RyaW5nICsgIiBleHBlY3RlZC4iKTsK
K30KKworZnVuY3Rpb24gZXZlbnRTaG91bGROb3RDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCB0
eXBlU3RyaW5nKQoreworICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgJiYgZXZlbnQu
ZGF0YVRyYW5zZmVyLnR5cGVzLmluZGV4T2YodHlwZVN0cmluZykgIT0gLTEpCisgICAgICAgIHRl
c3RGYWlsZWQoImV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBzaG91bGQgbm90IGNvbnRhaW4gIiAr
IHR5cGVTdHJpbmcgKyAiLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCgiZXZlbnQu
ZGF0YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90IGNvbnRhaW4gIiArIHR5cGVTdHJpbmcgKyAiLiIp
OwogfQogCiBmdW5jdGlvbiBmaWxlTGlzdFNob3VsZEJlKGZpbGVMaXN0U3RyaW5nLCBmaWxlc0Fy
cmF5KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBlYjM2NWY0Li5lYjdkOTZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDA5LTA5LTAxICBKaWFuIExp
ICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBkYXRhVHJhbnNmZXIudHlwZXMoKSBzaG91bGQgbm90IHJldHVybiBG
aWxlcyBpZiBmaWxlIGxpc3QgaXMgZW1wdHkgaW4gdGhlIGNsaXBib2FyZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODkxCisKKyAgICAgICAgVGVz
dGVkIGJ5IGNsaXBib2FyZC1maWxlLWFjY2Vzcy5odG1sLgorCisgICAgICAgICogcGxhdGZvcm0v
bWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkZEhUTUxDbGlwYm9hcmRU
eXBlc0ZvckNvY29hVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRNYWM6OnR5cGVz
KToKKworMjAwOS0wOS0wMSAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CisKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgogCiAgICAgICAgIFtWOF0gRmlsZUxpc3Qg
Y2Fubm90IGJlIGFjY2Vzc2VkIHZpYSBpbmRleCBpbiBDaHJvbWl1bS4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5tbQppbmRleCBkZDBlYmI3Li4zZDRjZTQ1IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIFN0cmluZyB1dGlU
eXBlRnJvbUNvY29hVHlwZShOU1N0cmluZyAqdHlwZSkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKLXN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShIYXNoU2V0
PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBOU1N0cmluZyAqY29jb2FUeXBlKQorc3RhdGljIHZvaWQg
YWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKEhhc2hTZXQ8U3RyaW5nPiYgcmVzdWx0
VHlwZXMsIE5TU3RyaW5nICpjb2NvYVR5cGUsIE5TUGFzdGVib2FyZCogcGFzdGVib2FyZCkKIHsK
ICAgICAvLyBVVEkgbWF5IG5vdCBkbyB0aGVzZSByaWdodCwgc28gbWFrZSBzdXJlIHdlIGdldCB0
aGUgcmlnaHQsIHByZWRpY3RhYmxlIHJlc3VsdAogICAgIGlmIChbY29jb2FUeXBlIGlzRXF1YWxU
b1N0cmluZzpOU1N0cmluZ1Bib2FyZFR5cGVdKQpAQCAtMTEyLDEwICsxMTIsMTQgQEAgc3RhdGlj
IHZvaWQgYWRkSFRNTENsaXBib2FyZFR5cGVzRm9yQ29jb2FUeXBlKEhhc2hTZXQ8U3RyaW5nPiYg
cmVzdWx0VHlwZXMsIE5TU3QKICAgICBlbHNlIGlmIChbY29jb2FUeXBlIGlzRXF1YWxUb1N0cmlu
ZzpOU1VSTFBib2FyZFR5cGVdKQogICAgICAgICByZXN1bHRUeXBlcy5hZGQoInRleHQvdXJpLWxp
c3QiKTsKICAgICBlbHNlIGlmIChbY29jb2FUeXBlIGlzRXF1YWxUb1N0cmluZzpOU0ZpbGVuYW1l
c1Bib2FyZFR5cGVdKSB7Ci0gICAgICAgIC8vIEl0IGlzIHVua25vd24gaWYgTlNGaWxlbmFtZXNQ
Ym9hcmRUeXBlIGFsd2F5cyBpbXBsaWVzIE5TVVJMUGJvYXJkVHlwZSBpbiBDb2NvYSwKLSAgICAg
ICAgLy8gYnV0IE5TRmlsZW5hbWVzUGJvYXJkVHlwZSBzaG91bGQgaW1wbHkgYm90aCAndGV4dC91
cmktbGlzdCcgYW5kICdGaWxlcycKLSAgICAgICAgcmVzdWx0VHlwZXMuYWRkKCJ0ZXh0L3VyaS1s
aXN0Iik7Ci0gICAgICAgIHJlc3VsdFR5cGVzLmFkZCgiRmlsZXMiKTsKKyAgICAgICAgLy8gSWYg
ZmlsZSBsaXN0IGlzIGVtcHR5LCBhZGQgbm90aGluZworICAgICAgICBOU0FycmF5ICpmaWxlTGlz
dCA9IFtwYXN0ZWJvYXJkIHByb3BlcnR5TGlzdEZvclR5cGU6TlNGaWxlbmFtZXNQYm9hcmRUeXBl
XTsKKyAgICAgICAgaWYgKFtmaWxlTGlzdCBjb3VudF0gIT0gMCkgeworICAgICAgICAgICAgLy8g
SXQgaXMgdW5rbm93biBpZiBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUgYWx3YXlzIGltcGxpZXMgTlNV
UkxQYm9hcmRUeXBlIGluIENvY29hLAorICAgICAgICAgICAgLy8gYnV0IE5TRmlsZW5hbWVzUGJv
YXJkVHlwZSBzaG91bGQgaW1wbHkgYm90aCAndGV4dC91cmktbGlzdCcgYW5kICdGaWxlcycKKyAg
ICAgICAgICAgIHJlc3VsdFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCIpOworICAgICAgICAgICAg
cmVzdWx0VHlwZXMuYWRkKCJGaWxlcyIpOworICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChTdHJp
bmcgdXRpVHlwZSA9IHV0aVR5cGVGcm9tQ29jb2FUeXBlKGNvY29hVHlwZSkpCiAgICAgICAgIHJl
c3VsdFR5cGVzLmFkZCh1dGlUeXBlKTsKICAgICBlbHNlIHsKQEAgLTI3Niw3ICsyODAsNyBAQCBI
YXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkTWFjOjp0eXBlcygpIGNvbnN0CiAgICAgICAgIGlmIChb
cGJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIk5lWFQgcGxhaW4gYXNjaWkgcGFzdGVib2FyZCB0eXBl
Il0pCiAgICAgICAgICAgICBjb250aW51ZTsgICAvLyBza2lwIHRoaXMgYW5jaWVudCB0eXBlIHRo
YXQgZ2V0cyBhdXRvLXN1cHBsaWVkIGJ5IHNvbWUgc3lzdGVtIGNvbnZlcnNpb24KIAotICAgICAg
ICBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUocmVzdWx0LCBwYlR5cGUpOworICAg
ICAgICBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUocmVzdWx0LCBwYlR5cGUsIG1f
cGFzdGVib2FyZC5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsK
</data>
<flag name="review"
          id="19879"
          type_id="1"
          status="-"
          setter="eric"
    />
    <flag name="commit-queue"
          id="19880"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38932</attachid>
            <date>2009-09-02 11:05:21 -0700</date>
            <delta_ts>2009-09-04 11:59:29 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>28891_2</filename>
            <type>text/plain</type>
            <size>8417</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMTY2MDViLi42MTZhZGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDkt
MDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRhdGFUcmFuc2Zlci50eXBlcygpIHNob3VsZCBu
b3QgcmV0dXJuIEZpbGVzIGlmIGZpbGUgbGlzdCBpcyBlbXB0eSBpbiB0aGUgY2xpcGJvYXJkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4OTEKKwor
ICAgICAgICBVcGRhdGUgdGhlIHRlc3Qgc2NyaXB0IGFuZCBleHBlY3RlZCByZXN1bHQgdG8gcmVm
bGVjdCB0aGUgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xpcGJvYXJkLWZpbGUt
YWNjZXNzLmpzOgorCiAyMDA5LTA5LTAxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nl
c3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9h
cmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dAppbmRleCA1MjRkMzQwLi4zZGE4
ODNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2Fy
ZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTUsMTMgKzUsMTMgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogRHJhZ2dp
bmcgbm8gZmlsZXMgc2hvdWxkIHJldHVybiBhbiBlbXB0eSBmaWxlIGxpc3QgKGFyYml0cmFyeSBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwpOgogT24gZHJhZ2VudGVyOgotUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIudHlwZXMgY29udGFpbnMgRmlsZXMuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBl
cyBkb2VzIG5vdCBjb250YWluIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMu
bGVuZ3RoIGlzIDAKIE9uIGRyYWdvdmVyOgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMg
Y29udGFpbnMgRmlsZXMuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBkb2VzIG5vdCBj
b250YWluIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAK
IE9uIGRyb3A6Ci1QQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBjb250YWlucyBGaWxlcy4K
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90IGNvbnRhaW4gRmlsZXMuCiBQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAogRHJhZyBkcm9wIGEgc2lu
Z2xlIChub24tZXhpc3RhbnQpIGZpbGUgb250byBhbiBlbGVtZW50OgogT24gZHJhZ2VudGVyOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVz
b3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanMKaW5k
ZXggMWQ3ZjFjMy4uNDBiOGNiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xp
cGJvYXJkLWZpbGUtYWNjZXNzLmpzCkBAIC04LDEwICs4LDEyIEBAIGRyYWdUYXJnZXQuc3R5bGUu
aGVpZ2h0ID0gIjEwMHB4IjsKIC8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0
b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0
IG9mIHZpZXcgKGFuZCBiZSB1bmRyYWdhYmxlKQogZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
ZHJhZ1RhcmdldCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKIAordmFyIGZpbGVzVG9EcmFn
OwogZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLCBmdW5jdGlvbigpIHsK
ICAgICBkZWJ1ZygiT24gZHJhZ2VudGVyOiIpCiAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgPSAiY29weSI7Ci0gICAgZXZlbnRTaG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50
LCAiRmlsZXMiKTsKKyAgICB2YXIgc2hvdWxkQ29udGFpbiA9IChmaWxlc1RvRHJhZy5sZW5ndGgg
PiAwKTsKKyAgICBjaGVja0V2ZW50VHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiLCBzaG91bGRD
b250YWluKTsKICAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMi
LCBbXSk7CiAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKIH0sIGZhbHNlKTsKQEAgLTE5LDIx
ICsyMSwyNCBAQCBkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbnRlciIsIGZ1bmN0
aW9uKCkgewogZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIsIGZ1bmN0aW9u
KCkgewogICAgIGRlYnVnKCJPbiBkcmFnb3ZlcjoiKQogICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5k
cm9wRWZmZWN0ID0gImNvcHkiOwotICAgIGV2ZW50U2hvdWxkQ29udGFpblRyYW5zZmVyVHlwZShl
dmVudCwgIkZpbGVzIik7CisgICAgdmFyIHNob3VsZENvbnRhaW4gPSAoZmlsZXNUb0RyYWcubGVu
Z3RoID4gMCk7CisgICAgY2hlY2tFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hv
dWxkQ29udGFpbik7CiAgICAgZmlsZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRyYW5zZmVyLmZp
bGVzIiwgW10pOwogICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9LCBmYWxzZSk7CiAKIGRy
YWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2xlYXZlIiwgZnVuY3Rpb24oKSB7CiAgICAg
ZGVidWcoIk9uIGRyYWdsZWF2ZToiKQotICAgIGV2ZW50U2hvdWxkQ29udGFpblRyYW5zZmVyVHlw
ZShldmVudCwgIkZpbGVzIik7CisgICAgdmFyIHNob3VsZENvbnRhaW4gPSAoZmlsZXNUb0RyYWcu
bGVuZ3RoID4gMCk7CisgICAgY2hlY2tFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwg
c2hvdWxkQ29udGFpbik7CiAgICAgZmlsZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRyYW5zZmVy
LmZpbGVzIiwgW10pOwogfSwgZmFsc2UpOwogCiB2YXIgZXhwZWN0ZWRGaWxlc09uRHJvcDsKIGRy
YWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsIGZ1bmN0aW9uKCkgewogICAgIGRlYnVn
KCJPbiBkcm9wOiIpCi0gICAgZXZlbnRTaG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCAi
RmlsZXMiKTsKKyAgICB2YXIgc2hvdWxkQ29udGFpbiA9IChmaWxlc1RvRHJhZy5sZW5ndGggPiAw
KTsKKyAgICBjaGVja0V2ZW50VHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiLCBzaG91bGRDb250
YWluKTsKICAgICBmaWxlTGlzdFNob3VsZEJlKCJldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMiLCBl
eHBlY3RlZEZpbGVzT25Ecm9wKTsKICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogfSwgZmFs
c2UpOwpAQCAtNTEsNiArNTYsNyBAQCBmdW5jdGlvbiBtb3ZlTW91c2VUb091dHNpZGVPZkVsZW1l
bnQoZWxlbWVudCkgewogfQogCiBmdW5jdGlvbiBkcmFnRmlsZXNPbnRvRHJhZ1RhcmdldChmaWxl
cywgbGVhdmUpIHsKKyAgICBmaWxlc1RvRHJhZyA9IGZpbGVzOwogICAgIGV2ZW50U2VuZGVyLmJl
Z2luRHJhZ1dpdGhGaWxlcyhmaWxlcyk7CiAgICAgbW92ZU1vdXNlVG9DZW50ZXJPZkVsZW1lbnQo
ZHJhZ1RhcmdldCk7CiAgICAgaWYgKGxlYXZlICYmIGxlYXZlID09PSB0cnVlKQpAQCAtNTgsMTIg
KzY0LDE5IEBAIGZ1bmN0aW9uIGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KGZpbGVzLCBsZWF2ZSkg
ewogICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKIH0KIAotZnVuY3Rpb24gZXZlbnRTaG91bGRD
b250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCB0eXBlU3RyaW5nKQorZnVuY3Rpb24gY2hlY2tFdmVu
dFRyYW5zZmVyVHlwZShldmVudCwgdHlwZVN0cmluZywgc2hvdWxkQ29udGFpbikKIHsKLSAgIGlm
IChldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5kZXhPZih0eXBlU3RyaW5nKSA9PSAtMSkKLSAg
ICAgICB0ZXN0RmFpbGVkKCJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgIiArIHR5cGVTdHJpbmcg
KyAiIGV4cGVjdGVkLiIpOwotICAgZWxzZQotICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LmRhdGFU
cmFuc2Zlci50eXBlcyBjb250YWlucyAiICsgdHlwZVN0cmluZyArICIuIik7CisgICAgaWYgKGV2
ZW50LmRhdGFUcmFuc2Zlci50eXBlcyAmJiBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5kZXhP
Zih0eXBlU3RyaW5nKSAhPSAtMSkgeworICAgICAgICBpZiAoc2hvdWxkQ29udGFpbikKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBjb250YWlucyAiICsg
dHlwZVN0cmluZyArICIuIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBzaG91bGQgbm90IGNvbnRhaW4gIiArIHR5cGVTdHJp
bmcgKyAiLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzaG91bGRDb250YWluKQorICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzICIgKyB0eXBlU3Ry
aW5nICsgIiBleHBlY3RlZC4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90IGNvbnRhaW4gIiArIHR5cGVTdHJp
bmcgKyAiLiIpOworICAgIH0KIH0KIAogZnVuY3Rpb24gZmlsZUxpc3RTaG91bGRCZShmaWxlTGlz
dFN0cmluZywgZmlsZXNBcnJheSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggZWIzNjVmNC4uZWI3ZDk2YSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOCBAQAogMjAw
OS0wOS0wMSAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGF0YVRyYW5zZmVyLnR5cGVzKCkgc2hv
dWxkIG5vdCByZXR1cm4gRmlsZXMgaWYgZmlsZSBsaXN0IGlzIGVtcHR5IGluIHRoZSBjbGlwYm9h
cmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODg5
MQorCisgICAgICAgIFRlc3RlZCBieSBjbGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbC4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjph
ZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xp
cGJvYXJkTWFjOjp0eXBlcyk6CisKKzIwMDktMDktMDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21p
dW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KIAogICAgICAg
ICBbVjhdIEZpbGVMaXN0IGNhbm5vdCBiZSBhY2Nlc3NlZCB2aWEgaW5kZXggaW4gQ2hyb21pdW0u
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9XZWJD
b3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXggZGQwZWJiNy4uM2E3MWQxZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0
YXRpYyBTdHJpbmcgdXRpVHlwZUZyb21Db2NvYVR5cGUoTlNTdHJpbmcgKnR5cGUpCiAgICAgcmV0
dXJuIFN0cmluZygpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JD
b2NvYVR5cGUoSGFzaFNldDxTdHJpbmc+JiByZXN1bHRUeXBlcywgTlNTdHJpbmcgKmNvY29hVHlw
ZSkKK3N0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShIYXNoU2V0
PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBOU1N0cmluZyAqY29jb2FUeXBlLCBOU1Bhc3RlYm9hcmQq
IHBhc3RlYm9hcmQpCiB7CiAgICAgLy8gVVRJIG1heSBub3QgZG8gdGhlc2UgcmlnaHQsIHNvIG1h
a2Ugc3VyZSB3ZSBnZXQgdGhlIHJpZ2h0LCBwcmVkaWN0YWJsZSByZXN1bHQKICAgICBpZiAoW2Nv
Y29hVHlwZSBpc0VxdWFsVG9TdHJpbmc6TlNTdHJpbmdQYm9hcmRUeXBlXSkKQEAgLTExMiwxMCAr
MTEyLDE2IEBAIHN0YXRpYyB2b2lkIGFkZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShI
YXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBOU1N0CiAgICAgZWxzZSBpZiAoW2NvY29hVHlw
ZSBpc0VxdWFsVG9TdHJpbmc6TlNVUkxQYm9hcmRUeXBlXSkKICAgICAgICAgcmVzdWx0VHlwZXMu
YWRkKCJ0ZXh0L3VyaS1saXN0Iik7CiAgICAgZWxzZSBpZiAoW2NvY29hVHlwZSBpc0VxdWFsVG9T
dHJpbmc6TlNGaWxlbmFtZXNQYm9hcmRUeXBlXSkgewotICAgICAgICAvLyBJdCBpcyB1bmtub3du
IGlmIE5TRmlsZW5hbWVzUGJvYXJkVHlwZSBhbHdheXMgaW1wbGllcyBOU1VSTFBib2FyZFR5cGUg
aW4gQ29jb2EsCi0gICAgICAgIC8vIGJ1dCBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUgc2hvdWxkIGlt
cGx5IGJvdGggJ3RleHQvdXJpLWxpc3QnIGFuZCAnRmlsZXMnCi0gICAgICAgIHJlc3VsdFR5cGVz
LmFkZCgidGV4dC91cmktbGlzdCIpOwotICAgICAgICByZXN1bHRUeXBlcy5hZGQoIkZpbGVzIik7
CisgICAgICAgIC8vIElmIGZpbGUgbGlzdCBpcyBlbXB0eSwgYWRkIG5vdGhpbmcuCisgICAgICAg
IC8vIE5vdGUgdGhhdCB0aGVyZSBpcyBhIGNoYW5jZSB0aGF0IHRoZSBmaWxlIGxpc3QgY291bnQg
Y291bGQgaGF2ZSBjaGFuZ2VkIHNpbmNlIHdlIGdyYWJiZWQgdGhlIHR5cGVzIGFycmF5LgorICAg
ICAgICAvLyBIb3dldmVyLCB0aGlzIGlzIG5vdCByZWFsbHkgYW4gaXNzdWUgZm9yIHVzIGRvaW5n
IGEgc2FuaXR5IGNoZWNrIGhlcmUuCisgICAgICAgIE5TQXJyYXkgKmZpbGVMaXN0ID0gW3Bhc3Rl
Ym9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworICAgICAg
ICBpZiAoW2ZpbGVMaXN0IGNvdW50XSAhPSAwKSB7CisgICAgICAgICAgICAvLyBJdCBpcyB1bmtu
b3duIGlmIE5TRmlsZW5hbWVzUGJvYXJkVHlwZSBhbHdheXMgaW1wbGllcyBOU1VSTFBib2FyZFR5
cGUgaW4gQ29jb2EsCisgICAgICAgICAgICAvLyBidXQgTlNGaWxlbmFtZXNQYm9hcmRUeXBlIHNo
b3VsZCBpbXBseSBib3RoICd0ZXh0L3VyaS1saXN0JyBhbmQgJ0ZpbGVzJworICAgICAgICAgICAg
cmVzdWx0VHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgICAgICByZXN1bHRUeXBl
cy5hZGQoIkZpbGVzIik7CisgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKFN0cmluZyB1dGlUeXBl
ID0gdXRpVHlwZUZyb21Db2NvYVR5cGUoY29jb2FUeXBlKSkKICAgICAgICAgcmVzdWx0VHlwZXMu
YWRkKHV0aVR5cGUpOwogICAgIGVsc2UgewpAQCAtMjc2LDcgKzI4Miw3IEBAIEhhc2hTZXQ8U3Ry
aW5nPiBDbGlwYm9hcmRNYWM6OnR5cGVzKCkgY29uc3QKICAgICAgICAgaWYgKFtwYlR5cGUgaXNF
cXVhbFRvU3RyaW5nOkAiTmVYVCBwbGFpbiBhc2NpaSBwYXN0ZWJvYXJkIHR5cGUiXSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOyAgIC8vIHNraXAgdGhpcyBhbmNpZW50IHR5cGUgdGhhdCBnZXRzIGF1
dG8tc3VwcGxpZWQgYnkgc29tZSBzeXN0ZW0gY29udmVyc2lvbgogCi0gICAgICAgIGFkZEhUTUxD
bGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShyZXN1bHQsIHBiVHlwZSk7CisgICAgICAgIGFkZEhU
TUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShyZXN1bHQsIHBiVHlwZSwgbV9wYXN0ZWJvYXJk
LmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0Owo=
</data>
<flag name="review"
          id="19938"
          type_id="1"
          status="-"
          setter="levin"
    />
    <flag name="commit-queue"
          id="19939"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39079</attachid>
            <date>2009-09-04 11:59:29 -0700</date>
            <delta_ts>2009-09-08 10:25:36 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>28891_3</filename>
            <type>text/plain</type>
            <size>8502</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMTY2MDViLi42MTZhZGIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDkt
MDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRhdGFUcmFuc2Zlci50eXBlcygpIHNob3VsZCBu
b3QgcmV0dXJuIEZpbGVzIGlmIGZpbGUgbGlzdCBpcyBlbXB0eSBpbiB0aGUgY2xpcGJvYXJkLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4OTEKKwor
ICAgICAgICBVcGRhdGUgdGhlIHRlc3Qgc2NyaXB0IGFuZCBleHBlY3RlZCByZXN1bHQgdG8gcmVm
bGVjdCB0aGUgYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9jbGlwYm9hcmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xpcGJvYXJkLWZpbGUt
YWNjZXNzLmpzOgorCiAyMDA5LTA5LTAxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9jbGlwYm9hcmQtZmlsZS1hY2Nl
c3MtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9h
cmQvY2xpcGJvYXJkLWZpbGUtYWNjZXNzLWV4cGVjdGVkLnR4dAppbmRleCA1MjRkMzQwLi4zZGE4
ODNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2Fy
ZC9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY2xpcGJvYXJkL2NsaXBib2FyZC1maWxlLWFjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTUsMTMgKzUsMTMgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogRHJhZ2dp
bmcgbm8gZmlsZXMgc2hvdWxkIHJldHVybiBhbiBlbXB0eSBmaWxlIGxpc3QgKGFyYml0cmFyeSBp
bXBsZW1lbnRhdGlvbiBkZXRhaWwpOgogT24gZHJhZ2VudGVyOgotUEFTUyBldmVudC5kYXRhVHJh
bnNmZXIudHlwZXMgY29udGFpbnMgRmlsZXMuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBl
cyBkb2VzIG5vdCBjb250YWluIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMu
bGVuZ3RoIGlzIDAKIE9uIGRyYWdvdmVyOgotUEFTUyBldmVudC5kYXRhVHJhbnNmZXIudHlwZXMg
Y29udGFpbnMgRmlsZXMuCitQQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBkb2VzIG5vdCBj
b250YWluIEZpbGVzLgogUEFTUyBldmVudC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoIGlzIDAK
IE9uIGRyb3A6Ci1QQVNTIGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcyBjb250YWlucyBGaWxlcy4K
K1BBU1MgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90IGNvbnRhaW4gRmlsZXMuCiBQ
QVNTIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggaXMgMAogRHJhZyBkcm9wIGEgc2lu
Z2xlIChub24tZXhpc3RhbnQpIGZpbGUgb250byBhbiBlbGVtZW50OgogT24gZHJhZ2VudGVyOgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jbGlwYm9hcmQvcmVz
b3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY2xpcGJvYXJkL3Jlc291cmNlcy9jbGlwYm9hcmQtZmlsZS1hY2Nlc3MuanMKaW5k
ZXggMWQ3ZjFjMy4uNjE5N2I0NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jbGlwYm9hcmQvcmVzb3VyY2VzL2NsaXBib2FyZC1maWxlLWFjY2Vzcy5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2NsaXBib2FyZC9yZXNvdXJjZXMvY2xp
cGJvYXJkLWZpbGUtYWNjZXNzLmpzCkBAIC04LDEwICs4LDEyIEBAIGRyYWdUYXJnZXQuc3R5bGUu
aGVpZ2h0ID0gIjEwMHB4IjsKIC8vIEltcG9ydGFudCB0aGF0IHdlIHB1dCB0aGlzIGF0IHRoZSB0
b3Agb2YgdGhlIGRvYyBzbyB0aGF0IGxvZ2dpbmcgZG9lcyBub3QgY2F1c2UgaXQgdG8gZ28gb3V0
IG9mIHZpZXcgKGFuZCBiZSB1bmRyYWdhYmxlKQogZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
ZHJhZ1RhcmdldCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKIAordmFyIGZpbGVzVG9EcmFn
OwogZHJhZ1RhcmdldC5hZGRFdmVudExpc3RlbmVyKCJkcmFnZW50ZXIiLCBmdW5jdGlvbigpIHsK
ICAgICBkZWJ1ZygiT24gZHJhZ2VudGVyOiIpCiAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmRyb3BF
ZmZlY3QgPSAiY29weSI7Ci0gICAgZXZlbnRTaG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50
LCAiRmlsZXMiKTsKKyAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVu
Z3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwg
c2hvdWxkQ29udGFpblR5cGUpOwogICAgIGZpbGVMaXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFu
c2Zlci5maWxlcyIsIFtdKTsKICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogfSwgZmFsc2Up
OwpAQCAtMTksMjEgKzIxLDI0IEBAIGRyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ2Vu
dGVyIiwgZnVuY3Rpb24oKSB7CiBkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdvdmVy
IiwgZnVuY3Rpb24oKSB7CiAgICAgZGVidWcoIk9uIGRyYWdvdmVyOiIpCiAgICAgZXZlbnQuZGF0
YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAiY29weSI7Ci0gICAgZXZlbnRTaG91bGRDb250YWluVHJh
bnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiKTsKKyAgICB2YXIgc2hvdWxkQ29udGFpblR5cGUgPSAo
ZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVudFRyYW5zZmVyVHlwZShl
dmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOwogICAgIGZpbGVMaXN0U2hvdWxkQmUo
ImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIFtdKTsKICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwogfSwgZmFsc2UpOwogCiBkcmFnVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdsZWF2
ZSIsIGZ1bmN0aW9uKCkgewogICAgIGRlYnVnKCJPbiBkcmFnbGVhdmU6IikKLSAgICBldmVudFNo
b3VsZENvbnRhaW5UcmFuc2ZlclR5cGUoZXZlbnQsICJGaWxlcyIpOworICAgIHZhciBzaG91bGRD
b250YWluVHlwZSA9IChmaWxlc1RvRHJhZy5sZW5ndGggPiAwKTsKKyAgICBjaGVja0ZvckV2ZW50
VHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiLCBzaG91bGRDb250YWluVHlwZSk7CiAgICAgZmls
ZUxpc3RTaG91bGRCZSgiZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzIiwgW10pOwogfSwgZmFsc2Up
OwogCiB2YXIgZXhwZWN0ZWRGaWxlc09uRHJvcDsKIGRyYWdUYXJnZXQuYWRkRXZlbnRMaXN0ZW5l
cigiZHJvcCIsIGZ1bmN0aW9uKCkgewogICAgIGRlYnVnKCJPbiBkcm9wOiIpCi0gICAgZXZlbnRT
aG91bGRDb250YWluVHJhbnNmZXJUeXBlKGV2ZW50LCAiRmlsZXMiKTsKKyAgICB2YXIgc2hvdWxk
Q29udGFpblR5cGUgPSAoZmlsZXNUb0RyYWcubGVuZ3RoID4gMCk7CisgICAgY2hlY2tGb3JFdmVu
dFRyYW5zZmVyVHlwZShldmVudCwgIkZpbGVzIiwgc2hvdWxkQ29udGFpblR5cGUpOwogICAgIGZp
bGVMaXN0U2hvdWxkQmUoImV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcyIsIGV4cGVjdGVkRmlsZXNP
bkRyb3ApOwogICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiB9LCBmYWxzZSk7CkBAIC01MSw2
ICs1Niw3IEBAIGZ1bmN0aW9uIG1vdmVNb3VzZVRvT3V0c2lkZU9mRWxlbWVudChlbGVtZW50KSB7
CiB9CiAKIGZ1bmN0aW9uIGRyYWdGaWxlc09udG9EcmFnVGFyZ2V0KGZpbGVzLCBsZWF2ZSkgewor
ICAgIGZpbGVzVG9EcmFnID0gZmlsZXM7CiAgICAgZXZlbnRTZW5kZXIuYmVnaW5EcmFnV2l0aEZp
bGVzKGZpbGVzKTsKICAgICBtb3ZlTW91c2VUb0NlbnRlck9mRWxlbWVudChkcmFnVGFyZ2V0KTsK
ICAgICBpZiAobGVhdmUgJiYgbGVhdmUgPT09IHRydWUpCkBAIC01OCwxMiArNjQsMjEgQEAgZnVu
Y3Rpb24gZHJhZ0ZpbGVzT250b0RyYWdUYXJnZXQoZmlsZXMsIGxlYXZlKSB7CiAgICAgZXZlbnRT
ZW5kZXIubW91c2VVcCgpOwogfQogCi1mdW5jdGlvbiBldmVudFNob3VsZENvbnRhaW5UcmFuc2Zl
clR5cGUoZXZlbnQsIHR5cGVTdHJpbmcpCitmdW5jdGlvbiBjaGVja0ZvckV2ZW50VHJhbnNmZXJU
eXBlKGV2ZW50LCB0eXBlU3RyaW5nLCBzaG91bGRDb250YWluVHlwZSkKIHsKLSAgIGlmIChldmVu
dC5kYXRhVHJhbnNmZXIudHlwZXMuaW5kZXhPZih0eXBlU3RyaW5nKSA9PSAtMSkKLSAgICAgICB0
ZXN0RmFpbGVkKCJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgIiArIHR5cGVTdHJpbmcgKyAiIGV4
cGVjdGVkLiIpOwotICAgZWxzZQotICAgICAgIHRlc3RQYXNzZWQoImV2ZW50LmRhdGFUcmFuc2Zl
ci50eXBlcyBjb250YWlucyAiICsgdHlwZVN0cmluZyArICIuIik7CisgICAgdmFyIHBhc3NlZENo
ZWNrOworICAgIHZhciBtZXNzYWdlOworICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIudHlwZXMg
JiYgZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzLmluZGV4T2YodHlwZVN0cmluZykgIT0gLTEpIHsK
KyAgICAgICAgcGFzc2VkQ2hlY2sgPSBzaG91bGRDb250YWluVHlwZTsKKyAgICAgICAgbWVzc2Fn
ZSA9ICJldmVudC5kYXRhVHJhbnNmZXIudHlwZXMgY29udGFpbnMgIiArIHR5cGVTdHJpbmcgKyAi
LiI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcGFzc2VkQ2hlY2sgPSAhc2hvdWxkQ29udGFpblR5
cGU7CisgICAgICAgIG1lc3NhZ2UgPSAiZXZlbnQuZGF0YVRyYW5zZmVyLnR5cGVzIGRvZXMgbm90
IGNvbnRhaW4gIiArIHR5cGVTdHJpbmcgKyAiLiI7CisgICAgfQorICAgIGlmIChwYXNzZWRDaGVj
aykKKyAgICAgICAgdGVzdFBhc3NlZChtZXNzYWdlKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RG
YWlsZWQobWVzc2FnZSk7CiB9CiAKIGZ1bmN0aW9uIGZpbGVMaXN0U2hvdWxkQmUoZmlsZUxpc3RT
dHJpbmcsIGZpbGVzQXJyYXkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IGViMzY1ZjQuLjk1MzEyOTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMDkt
MDktMDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGRhdGFUcmFuc2Zlci50eXBlcygpIHNob3Vs
ZCBub3QgcmV0dXJuIEZpbGVzIGlmIGZpbGUgbGlzdCBpcyBlbXB0eSBpbiB0aGUgY2xpcGJvYXJk
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg4OTEK
KworICAgICAgICBXZSBjaGFuZ2UgdGhlIGJlaGF2aW9yIHRvIGhhbmRsZSB0aGUgZW1wdHkgZmls
ZSBsaXN0IGluIG9yZGVyIHRvIG1hdGNoIHRoZSBzcGVjLgorCisgICAgICAgIFRlc3RlZCBieSBj
bGlwYm9hcmQtZmlsZS1hY2Nlc3MuaHRtbC4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjphZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JD
b2NvYVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkTWFjOjp0eXBlcyk6CisKKzIw
MDktMDktMDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmll
d2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KIAogICAgICAgICBbVjhdIEZpbGVMaXN0IGNhbm5vdCBi
ZSBhY2Nlc3NlZCB2aWEgaW5kZXggaW4gQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9h
cmRNYWMubW0KaW5kZXggZGQwZWJiNy4uMGI0NjFmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBi
b2FyZE1hYy5tbQpAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBTdHJpbmcgdXRpVHlwZUZyb21D
b2NvYVR5cGUoTlNTdHJpbmcgKnR5cGUpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1zdGF0
aWMgdm9pZCBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUoSGFzaFNldDxTdHJpbmc+
JiByZXN1bHRUeXBlcywgTlNTdHJpbmcgKmNvY29hVHlwZSkKK3N0YXRpYyB2b2lkIGFkZEhUTUxD
bGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5cGVzLCBO
U1N0cmluZyAqY29jb2FUeXBlLCBOU1Bhc3RlYm9hcmQgKnBhc3RlYm9hcmQpCiB7CiAgICAgLy8g
VVRJIG1heSBub3QgZG8gdGhlc2UgcmlnaHQsIHNvIG1ha2Ugc3VyZSB3ZSBnZXQgdGhlIHJpZ2h0
LCBwcmVkaWN0YWJsZSByZXN1bHQKICAgICBpZiAoW2NvY29hVHlwZSBpc0VxdWFsVG9TdHJpbmc6
TlNTdHJpbmdQYm9hcmRUeXBlXSkKQEAgLTExMiwxMCArMTEyLDE2IEBAIHN0YXRpYyB2b2lkIGFk
ZEhUTUxDbGlwYm9hcmRUeXBlc0ZvckNvY29hVHlwZShIYXNoU2V0PFN0cmluZz4mIHJlc3VsdFR5
cGVzLCBOU1N0CiAgICAgZWxzZSBpZiAoW2NvY29hVHlwZSBpc0VxdWFsVG9TdHJpbmc6TlNVUkxQ
Ym9hcmRUeXBlXSkKICAgICAgICAgcmVzdWx0VHlwZXMuYWRkKCJ0ZXh0L3VyaS1saXN0Iik7CiAg
ICAgZWxzZSBpZiAoW2NvY29hVHlwZSBpc0VxdWFsVG9TdHJpbmc6TlNGaWxlbmFtZXNQYm9hcmRU
eXBlXSkgewotICAgICAgICAvLyBJdCBpcyB1bmtub3duIGlmIE5TRmlsZW5hbWVzUGJvYXJkVHlw
ZSBhbHdheXMgaW1wbGllcyBOU1VSTFBib2FyZFR5cGUgaW4gQ29jb2EsCi0gICAgICAgIC8vIGJ1
dCBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUgc2hvdWxkIGltcGx5IGJvdGggJ3RleHQvdXJpLWxpc3Qn
IGFuZCAnRmlsZXMnCi0gICAgICAgIHJlc3VsdFR5cGVzLmFkZCgidGV4dC91cmktbGlzdCIpOwot
ICAgICAgICByZXN1bHRUeXBlcy5hZGQoIkZpbGVzIik7CisgICAgICAgIC8vIElmIGZpbGUgbGlz
dCBpcyBlbXB0eSwgYWRkIG5vdGhpbmcuCisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGVyZSBpcyBh
IGNoYW5jZSB0aGF0IHRoZSBmaWxlIGxpc3QgY291bnQgY291bGQgaGF2ZSBjaGFuZ2VkIHNpbmNl
IHdlIGdyYWJiZWQgdGhlIHR5cGVzIGFycmF5LgorICAgICAgICAvLyBIb3dldmVyLCB0aGlzIGlz
IG5vdCByZWFsbHkgYW4gaXNzdWUgZm9yIHVzIGRvaW5nIGEgc2FuaXR5IGNoZWNrIGhlcmUuCisg
ICAgICAgIE5TQXJyYXkgKmZpbGVMaXN0ID0gW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlw
ZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVdOworICAgICAgICBpZiAoW2ZpbGVMaXN0IGNvdW50XSkg
eworICAgICAgICAgICAgLy8gSXQgaXMgdW5rbm93biBpZiBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUg
YWx3YXlzIGltcGxpZXMgTlNVUkxQYm9hcmRUeXBlIGluIENvY29hLAorICAgICAgICAgICAgLy8g
YnV0IE5TRmlsZW5hbWVzUGJvYXJkVHlwZSBzaG91bGQgaW1wbHkgYm90aCAndGV4dC91cmktbGlz
dCcgYW5kICdGaWxlcycKKyAgICAgICAgICAgIHJlc3VsdFR5cGVzLmFkZCgidGV4dC91cmktbGlz
dCIpOworICAgICAgICAgICAgcmVzdWx0VHlwZXMuYWRkKCJGaWxlcyIpOworICAgICAgICB9CiAg
ICAgfSBlbHNlIGlmIChTdHJpbmcgdXRpVHlwZSA9IHV0aVR5cGVGcm9tQ29jb2FUeXBlKGNvY29h
VHlwZSkpCiAgICAgICAgIHJlc3VsdFR5cGVzLmFkZCh1dGlUeXBlKTsKICAgICBlbHNlIHsKQEAg
LTI3Niw3ICsyODIsNyBAQCBIYXNoU2V0PFN0cmluZz4gQ2xpcGJvYXJkTWFjOjp0eXBlcygpIGNv
bnN0CiAgICAgICAgIGlmIChbcGJUeXBlIGlzRXF1YWxUb1N0cmluZzpAIk5lWFQgcGxhaW4gYXNj
aWkgcGFzdGVib2FyZCB0eXBlIl0pCiAgICAgICAgICAgICBjb250aW51ZTsgICAvLyBza2lwIHRo
aXMgYW5jaWVudCB0eXBlIHRoYXQgZ2V0cyBhdXRvLXN1cHBsaWVkIGJ5IHNvbWUgc3lzdGVtIGNv
bnZlcnNpb24KIAotICAgICAgICBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUocmVz
dWx0LCBwYlR5cGUpOworICAgICAgICBhZGRIVE1MQ2xpcGJvYXJkVHlwZXNGb3JDb2NvYVR5cGUo
cmVzdWx0LCBwYlR5cGUsIG1fcGFzdGVib2FyZC5nZXQoKSk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHJlc3VsdDsK
</data>
<flag name="review"
          id="20110"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="20111"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>