<?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>145820</bug_id>
          
          <creation_ts>2015-06-09 15:13:56 -0700</creation_ts>
          <short_desc>[DFG] Avoid OSR exit in the middle of string concatenation</short_desc>
          <delta_ts>2015-06-18 16:45:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1100811</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 15:13:56 -0700</bug_when>
    <thetext>From June 5, (as long as I can check in buildbot&apos;s history), JSC test: tagged-templates.js tes fails occasionally.
Picking up some failure samples, dfg-eager / ftl-eager fail.

https://build.webkit.org/builders/Apple%20Yosemite%20Release%20JSC%20%28Tests%29?numbuilds=200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100825</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 15:54:53 -0700</bug_when>
    <thetext>Reproduced by the following test.


function shouldBe(actual, expected) {
    if (actual !== expected)
        throw new Error(&apos;bad value: &apos; + JSON.stringify(actual));
}

function raw(siteObject) {
    var result = &apos;&apos;;
    for (var i = 0; i &lt; siteObject.raw.length; ++i) {
        result += siteObject.raw[i];
        if ((i + 1) &lt; arguments.length) {
            result += arguments[i + 1];
        }
    }
    return result;
}

function Counter() {
    var count = 0;
    return {
        toString() {
            return count++;
        }
    };
}

for (var i = 0; i &lt; 10000; ++i) {
    print(i);
    var c = Counter();
    shouldBe(raw`Hello ${c} World ${c}`, `Hello 0 World 1`);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100830</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 16:00:42 -0700</bug_when>
    <thetext>Now investigating...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100832</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 16:04:50 -0700</bug_when>
    <thetext>Hm, it looks this issue exists from the long ago. I&apos;ll check the compiled code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100834</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 16:09:03 -0700</bug_when>
    <thetext>It fails in DFG phase. --useDFGJIT=false --useFTLJIT=false makes silent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100849</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 16:29:28 -0700</bug_when>
    <thetext>tagged-template-less reproducing code.

function shouldBe(actual, expected) {
    if (actual !== expected)
        throw new Error(&apos;bad value: &apos; + JSON.stringify(actual));
}

function raw(siteObject) {
    var result = &apos;&apos;;
    for (var i = 0; i &lt; siteObject.raw.length; ++i) {
        result += siteObject.raw[i];
        if ((i + 1) &lt; arguments.length) {
            result += arguments[i + 1];
        }
    }
    return result;
}

function Counter() {
    var count = 0;
    return {
        count: 0,
        toString() {
            return this.count++;
        }
    };
}

for (var i = 0; i &lt; 10000; ++i) {
    var c = Counter();
    shouldBe(raw({ raw: [&apos;Hello &apos;, &apos; World &apos;, &apos;&apos;] }, c, c), &quot;Hello 0 World 1&quot;);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100855</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 16:34:45 -0700</bug_when>
    <thetext>Smaller code for reproduce

function shouldBe(actual, expected) {
    if (actual !== expected)
        throw new Error(&apos;bad value: &apos; + JSON.stringify(actual));
}

function raw(siteObject) {
    var result = &apos;&apos;;
    for (var i = 0; i &lt; arguments.length; ++i) {
        result += arguments[i];
    }
    return result;
}

function Counter() {
    return {
        count: 0,
        toString() {
            return this.count++;
        }
    };
}

for (var i = 0; i &lt; 10000; ++i) {
    var c = Counter();
    shouldBe(raw(c, c), &quot;01&quot;);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101254</commentid>
    <comment_count>7</comment_count>
      <attachid>254714</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-11 04:49:51 -0700</bug_when>
    <thetext>Created attachment 254714
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101255</commentid>
    <comment_count>8</comment_count>
      <attachid>254715</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-11 04:53:25 -0700</bug_when>
    <thetext>Created attachment 254715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101621</commentid>
    <comment_count>9</comment_count>
      <attachid>254715</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-12 09:56:15 -0700</bug_when>
    <thetext>Comment on attachment 254715
Patch

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

I’m not the right reviewer for the strategy change here, but I do have one small comment.

&gt; Source/JavaScriptCore/bytecode/SpeculatedType.h:87
&gt; +static const SpeculatedType SpecPrimitive          = SpecFullNumber | SpecMisc | SpecString | SpecSymbol;

All the other combinations are written out in hex, not as expressions. Lets not be so different here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101763</commentid>
    <comment_count>10</comment_count>
      <attachid>254843</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-12 18:08:41 -0700</bug_when>
    <thetext>Created attachment 254843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101764</commentid>
    <comment_count>11</comment_count>
      <attachid>254715</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-12 18:09:19 -0700</bug_when>
    <thetext>Comment on attachment 254715
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/bytecode/SpeculatedType.h:87
&gt;&gt; +static const SpeculatedType SpecPrimitive          = SpecFullNumber | SpecMisc | SpecString | SpecSymbol;
&gt; 
&gt; All the other combinations are written out in hex, not as expressions. Lets not be so different here.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102090</commentid>
    <comment_count>12</comment_count>
      <attachid>254908</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-15 17:05:30 -0700</bug_when>
    <thetext>Created attachment 254908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102091</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-15 17:05:49 -0700</bug_when>
    <thetext>The root cause of this issue is that,

ArithAdd for String:left is converted into

MakeRope(left, ToString(ToPrimitive(right)))

However, `ToPrimitive` may have observable side effect. (calling object.{valueOf,toString})
So if it is converted into

MakeRope(left, Check(String, ToPrimitive(right)))

And Check failed, OSR exit will be performed to the original ArithAdd bytecode point and it redundantly performs ToPrimitive observable execution.



To fix this issue fundamentally, I think we should introduce ToStringToPrimitive DFG bytecode because the above ToPrimitive and ToString is not splittable.
But this patch could fix the current situation because of the following 3 reasons.

1. ToPrimitive(SpecObject) case

When performing ToPrimitive(SpecObject), we speculate the result as the all primitive values conservatively in this patch. So ToString &amp; ToPrimitive are not converted into Identity(Check:...) in Fixup phase. So OSR exit doesn&apos;t occur.

2. ToPrimitive(SpecString), but object comes

ToPrimitive(SpecString) will be converted into Check:String.
So before executing the observable side effect, OSR exit will be executed.

3. ToPrimitive(SpecString  | SpecInt32), but object comes

ToPrimitive and ToString have the almost same fixup in DFG Fixup phase.
And ToPrimitive(SpecString | SpecInt32) will propagate the same `SpecString | SpecInt32` as the result of ToPrimitive.
So, as a result, when ToString is converted into Check, ToPrimitive is also converted into Check. So before executing the observable side effect in ToPrimitive, OSR exit always occurs.

The problematic situation is (1) ToPrimitive performs observable side effect and it doesn&apos;t raise OSR exit, but, (2) ToString performs OSR exit. By this patch, this situation is avoided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102394</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-16 16:55:15 -0700</bug_when>
    <thetext>Could anyone take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102402</commentid>
    <comment_count>15</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-16 17:08:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; The root cause of this issue is that,
&gt; 
&gt; ArithAdd for String:left is converted into
&gt; 
&gt; MakeRope(left, ToString(ToPrimitive(right)))
&gt; 
&gt; However, `ToPrimitive` may have observable side effect. (calling
&gt; object.{valueOf,toString})
&gt; So if it is converted into
&gt; 
&gt; MakeRope(left, Check(String, ToPrimitive(right)))
&gt; 
&gt; And Check failed, OSR exit will be performed to the original ArithAdd
&gt; bytecode point and it redundantly performs ToPrimitive observable execution.

The bug here is that ToString shouldn&apos;t have been converted to Check.

&gt; 
&gt; 
&gt; 
&gt; To fix this issue fundamentally, I think we should introduce
&gt; ToStringToPrimitive DFG bytecode because the above ToPrimitive and ToString
&gt; is not splittable.
&gt; But this patch could fix the current situation because of the following 3
&gt; reasons.
&gt; 
&gt; 1. ToPrimitive(SpecObject) case
&gt; 
&gt; When performing ToPrimitive(SpecObject), we speculate the result as the all
&gt; primitive values conservatively in this patch. So ToString &amp; ToPrimitive are
&gt; not converted into Identity(Check:...) in Fixup phase. So OSR exit doesn&apos;t
&gt; occur.
&gt; 
&gt; 2. ToPrimitive(SpecString), but object comes
&gt; 
&gt; ToPrimitive(SpecString) will be converted into Check:String.
&gt; So before executing the observable side effect, OSR exit will be executed.
&gt; 
&gt; 3. ToPrimitive(SpecString  | SpecInt32), but object comes
&gt; 
&gt; ToPrimitive and ToString have the almost same fixup in DFG Fixup phase.
&gt; And ToPrimitive(SpecString | SpecInt32) will propagate the same `SpecString
&gt; | SpecInt32` as the result of ToPrimitive.
&gt; So, as a result, when ToString is converted into Check, ToPrimitive is also
&gt; converted into Check. So before executing the observable side effect in
&gt; ToPrimitive, OSR exit always occurs.
&gt; 
&gt; The problematic situation is (1) ToPrimitive performs observable side effect
&gt; and it doesn&apos;t raise OSR exit, but, (2) ToString performs OSR exit. By this
&gt; patch, this situation is avoided.

Another possible correct solution is to use ValueAdd for cases like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102407</commentid>
    <comment_count>16</comment_count>
      <attachid>254908</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-16 17:12:21 -0700</bug_when>
    <thetext>Comment on attachment 254908
Patch

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

It&apos;s not obvious to me what bug this particular patch fixes.

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1481
&gt; +            // FIXME: Since ToString and ToPrimitive are originated from the same bytecode and ToPrimitive
&gt; +            // may have an observable side effect, inherently these DFG bytecodes are unsplittable; after
&gt; +            // performing an observable side effect on ToPrimitive, ToString should not perform OSR exit.
&gt; +            // Introducing combined, unsplittable DFG node ToPrimitiveToString could solve this situation.

No, we don&apos;t need a new node type.  The solution is just for FixupPhase not to turn the ToString into a check.

You don&apos;t have to worry about any phase after FixupPhase to turn the ToString into a check.  So, you only need to worry about what FixupPhase does.  You don&apos;t need new node types.

Also, it&apos;s likely that the best solution is just to use ValueAdd in cases where this problem would arise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102517</commentid>
    <comment_count>17</comment_count>
      <attachid>255009</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-17 02:50:41 -0700</bug_when>
    <thetext>Created attachment 255009
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102518</commentid>
    <comment_count>18</comment_count>
      <attachid>255010</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-17 02:52:14 -0700</bug_when>
    <thetext>Created attachment 255010
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102519</commentid>
    <comment_count>19</comment_count>
      <attachid>254908</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-17 02:54:07 -0700</bug_when>
    <thetext>Comment on attachment 254908
Patch

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

Thanks!!

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1481
&gt;&gt; +            // Introducing combined, unsplittable DFG node ToPrimitiveToString could solve this situation.
&gt; 
&gt; No, we don&apos;t need a new node type.  The solution is just for FixupPhase not to turn the ToString into a check.
&gt; 
&gt; You don&apos;t have to worry about any phase after FixupPhase to turn the ToString into a check.  So, you only need to worry about what FixupPhase does.  You don&apos;t need new node types.
&gt; 
&gt; Also, it&apos;s likely that the best solution is just to use ValueAdd in cases where this problem would arise.

Ah! I misunderstood about Fixup phase.
I thought fixup is iterated until it gets a fixed-point, but it iterate blocks only once.
So by avoiding fixing up onto ToString when generating it, we can solve this problem.

I think, using MakeRope(left, ToString(ToPrimitive(left))) is efficient than ValueAdd and keeping it is nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102983</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-18 11:46:04 -0700</bug_when>
    <thetext>Updated, could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103087</commentid>
    <comment_count>21</comment_count>
      <attachid>255010</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 16:45:49 -0700</bug_when>
    <thetext>Comment on attachment 255010
Patch

Clearing flags on attachment: 255010

Committed r185728: &lt;http://trac.webkit.org/changeset/185728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103088</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 16:45:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254714</attachid>
            <date>2015-06-11 04:49:51 -0700</date>
            <delta_ts>2015-06-11 04:53:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145820-20150611204922.patch</filename>
            <type>text/plain</type>
            <size>6850</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZGI3YjA2MmYwMGQwNTg5MzVhMjcwYTE4MDE2ZGRiZjFlMDk4NTNlLi45MDhiZjY5NzNmOGFmOWU5
NWJhMTM1Y2RhNjBiNjRiMzRhOWVmNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0wNi0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSByZXN1bHQgb2YgVG9QcmltaXRpdmUgc2hvdWxkIGJlIHNw
ZWN1bGF0ZWQgYWxsIHByaW1pdGl2ZSB2YWx1ZXMgaWYgdGhlIGdpdmVuIHR5cGUgY29udGFpbnMg
YW4gb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ1ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmVmb3JlIHRoaXMgcGF0Y2gsIFRvUHJpbWl0aXZlKG9iamVjdCkgaXMgc3BlY3VsYXRlZCB0
byBTcGVjU3RyaW5nLgorICAgICAgICBERkcgY29tcGlsZXMgQXJpdGhBZGQgd2l0aCBTdHJpbmcg
dHlwZSBpbnRvIE1ha2VSb3BlKGxlZnQsIFRvU3RyaW5nKFRvUHJpbWl0aXZlKHJpZ2h0KSkpLgor
ICAgICAgICBBbmQgaWYgdGhlIHJpZ2h0IGlzIHNwZWN1bGF0ZWQgdG8gU3BlY1N0cmluZywgVG9T
dHJpbmcgaXMgb21pdHRlZC4gQW5kIHdlIHRoaW5rIHRoZXJlJ3MgT1NSIGV4aXQgc2FmZS4KKyAg
ICAgICAgSG93ZXZlciwgVG9QcmltaXRpdmUob2JqZWN0KSBtYXkgcmV0dXJuIGFuIGFyYml0cmFy
eSBwcmltaXRpdmUgdmFsdWVzLgorICAgICAgICBTbyBpZiB0aGUgYG9iamVjdC50b1N0cmluZygp
YCByZXR1cm5zIGEgbm9uLXN0cmluZyB2YWx1ZSAobGlrZSBhIG51bWJlciksIE9TUiBleGl0IGlz
IGV4ZWN1dGVkLAorICAgICAgICBhbmQgd2UgcmV0dXJuIGludG8gdGhlIHByaW9yIHRvIHRoZSBU
b1ByaW1pdGl2ZS4gQXMgdGhlIHJlc3VsdCwgdGhlIG9ic2VydmFibGUgYG9iamVjdC50b1N0cmlu
ZygpYCBpcyBjYWxsZWQgdHdpY2UuCisKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpyZXN1bHRPZlRvUHJpbWl0aXZlKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChyYXcpOgorICAgICAgICAoQ291bnRlcik6CisKIDIwMTUtMDYt
MTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQVNT
RVJUSU9OIEZBSUxFRDogcy5sZW5ndGgoKSA+IDEgb24gTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZs
YWdzLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKaW5kZXggYmQwNDVjM2FjNDQ1NzA2ZjliYzg1ZDRmNWIzODNjNjg4ZGMzZGRjMi4uNDU0
OWExNjY3ZjFjYjVhYjc5MGZlOTVhMGQ0MmFjMDgyMTQ4MTM0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTg0LDYgKzg0LDcgQEAK
IHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgID0gMHgx
MDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGVpdGhlciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgID0gMHgzMDAwMDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGVpdGhlciBhIGJvb2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgID0gU3BlY0Z1bGxOdW1iZXIg
fCBTcGVjTWlzYyB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sOwogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgPSAweDNiYmZmZmZmOyAvLyBJdCBjYW4g
YmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTIuCiBzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICA9IDB4N2JiZmZmZmY7IC8vIEl0IGNhbiBi
ZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCBkNWFmOTI3NmI0NTMwYzBlMWFiZTMyNzRlMDM2ZTA1ZmUxZjI3Y2E4Li4wMjFkNjU4
MzJjZDIyZmQ2YmNkMmVlNzVhZGNhMzE5MjlkMzM2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBA
IC0xNDYyLDcgKzE0NjIsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmICghKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3Bl
Y0Z1bGxOdW1iZXIgfCBTcGVjQm9vbGVhbiB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkpIHsK
KyAgICAgICAgaWYgKCEoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNQcmlt
aXRpdmUpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwog
ICAgICAgICAgICAgZm9yTm9kZShub2RlKSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDcwLDcgKzE0NzAsNyBAQAogICAgICAgICAKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgCi0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCAoU3BlY0hlYXBUb3Ag
JiB+U3BlY0NlbGwpIHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUobV9ncmFwaCwgKFNwZWNIZWFwVG9wICYgflNwZWNDZWxsKSB8IFNwZWNQ
cmltaXRpdmUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRl
eCBmZDhkZjRkOTk0MThjNjM3ZDQ4ZGZhMTlhMzg4MzBhNWZlYzIzOGM0Li5kY2I5NjkwYzMzODk4
MTFmYjllZjFmZDA0Y2ExODBlY2NjMjE4ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNDUxLDcgKzQ1MSw3
IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZTogewotICAgICAgICAgICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY0Z1bGxO
dW1iZXIgfCBTcGVjQm9vbGVhbiB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkKKyAgICAgICAg
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3Bl
Y1ByaW1pdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKaW5kZXggY2RlMDliZjEyMWIyMWY4YTRmZWI2MGRmYTI0ZmI0MjBiNmE5YmFiYS4u
NmFjNTI5N2Q4MmE5OWZjZjUwNjRkODdjN2UyZDBlZjJkM2EwMDExYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKQEAgLTM3LDkgKzM3LDExIEBACiBTcGVjdWxhdGVkVHlwZSByZXN1bHRPZlRvUHJp
bWl0aXZlKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgJiBTcGVjT2JqZWN0
KSB7Ci0gICAgICAgIC8vIE9iamVjdHMgZ2V0IHR1cm5lZCBpbnRvIHN0cmluZ3MuIFNvIGlmIHRo
ZSBpbnB1dCBoYXMgaGludHMgb2Ygb2JqZWN0bmVzcywKLSAgICAgICAgLy8gdGhlIG91dHB1dCB3
aWxsIGhhdmUgaGluc3RzIG9mIHN0cmluZ2luZXNzLgotICAgICAgICByZXR1cm4gbWVyZ2VTcGVj
dWxhdGlvbnModHlwZSAmIH5TcGVjT2JqZWN0LCBTcGVjU3RyaW5nKTsKKyAgICAgICAgLy8gSWYg
VG9QcmltaXRpdmUgaXMgcGVyZm9ybWVkIG9udG8gYW4gb2JqZWN0LCBpdCBpcyB0eXBpY2FsbHkg
dHVybmVkIGludG8gU3RyaW5nIGJlY2F1c2UgInRvU3RyaW5nIiBtZXRob2QgaXMgY2FsbGVkLgor
ICAgICAgICAvLyBIb3dldmVyLCBFQ01BMjYyIFRvUHJpbWl0aXZlIHNwZWMgb25seSBndWFyYW50
ZWVzIHRoYXQgdGhlIHJlc3VsdCBvZiBUb1ByaW1pdGl2ZSBiZWNvbWVzIGEgcHJpbWl0aXZlIHZh
bHVlLgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0IHRoZSByZXN1bHQgb2YgInRvU3RyaW5nIiBt
YXkgYmVjb21lIHRoZSBvdGhlciBwcmltaXRpdmUgdmFsdWVzIGxpa2UgYSBudW1iZXIuCisgICAg
ICAgIC8vIFRvIGhhbmRsZSBpdCwgd2UgY29uc2VydmF0aXZlbHkgc3BlY3VsYXRlIHRoZSByZXN1
bHQgb2YgdHlwZSBjYW5uIHRha2UgYWxsIHByaW1pdGl2ZSB2YWx1ZXMuCisgICAgICAgIHJldHVy
biBtZXJnZVNwZWN1bGF0aW9ucyh0eXBlICYgflNwZWNPYmplY3QsIFNwZWNQcmltaXRpdmUpOwog
ICAgIH0KICAgICAKICAgICByZXR1cm4gdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qcyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10
eXBlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYTE4YTE5MTQxNDU2YTg5ZmJhMzdiNmFkNWU5MmU2ZGI5YmE1
Mjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy90b3ByaW1pdGl2ZS1zcGVjdWxhdGVkLXR5cGVzLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBKU09OLnN0cmlu
Z2lmeShhY3R1YWwpKTsKK30KKworZnVuY3Rpb24gcmF3KGFycmF5KSB7CisgICAgdmFyIHJlc3Vs
dCA9ICcnOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgcmVzdWx0ICs9IGFycmF5W2ldOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitmdW5jdGlvbiBDb3VudGVyKCkgeworICAgIHJldHVybiB7CisgICAgICAgIGNvdW50OiAwLAor
ICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIC8vIFJldHVybiBhIG51bWJlciBldmVu
IGlmIHRoZSAidG9TdHJpbmciIG1ldGhvZC4KKyAgICAgICAgICAgIHJldHVybiB0aGlzLmNvdW50
Kys7CisgICAgICAgIH0KKyAgICB9OworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpIHsKKyAgICB2YXIgYyA9IENvdW50ZXIoKTsKKyAgICBzaG91bGRCZShyYXcoW2MsIGNdKSwg
IjAxIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254715</attachid>
            <date>2015-06-11 04:53:25 -0700</date>
            <delta_ts>2015-06-12 18:08:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145820-20150611205255.patch</filename>
            <type>text/plain</type>
            <size>6862</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZGI3YjA2MmYwMGQwNTg5MzVhMjcwYTE4MDE2ZGRiZjFlMDk4NTNlLi45MDhiZjY5NzNmOGFmOWU5
NWJhMTM1Y2RhNjBiNjRiMzRhOWVmNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0wNi0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSByZXN1bHQgb2YgVG9QcmltaXRpdmUgc2hvdWxkIGJlIHNw
ZWN1bGF0ZWQgYWxsIHByaW1pdGl2ZSB2YWx1ZXMgaWYgdGhlIGdpdmVuIHR5cGUgY29udGFpbnMg
YW4gb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ1ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmVmb3JlIHRoaXMgcGF0Y2gsIFRvUHJpbWl0aXZlKG9iamVjdCkgaXMgc3BlY3VsYXRlZCB0
byBTcGVjU3RyaW5nLgorICAgICAgICBERkcgY29tcGlsZXMgQXJpdGhBZGQgd2l0aCBTdHJpbmcg
dHlwZSBpbnRvIE1ha2VSb3BlKGxlZnQsIFRvU3RyaW5nKFRvUHJpbWl0aXZlKHJpZ2h0KSkpLgor
ICAgICAgICBBbmQgaWYgdGhlIHJpZ2h0IGlzIHNwZWN1bGF0ZWQgdG8gU3BlY1N0cmluZywgVG9T
dHJpbmcgaXMgb21pdHRlZC4gQW5kIHdlIHRoaW5rIHRoZXJlJ3MgT1NSIGV4aXQgc2FmZS4KKyAg
ICAgICAgSG93ZXZlciwgVG9QcmltaXRpdmUob2JqZWN0KSBtYXkgcmV0dXJuIGFuIGFyYml0cmFy
eSBwcmltaXRpdmUgdmFsdWVzLgorICAgICAgICBTbyBpZiB0aGUgYG9iamVjdC50b1N0cmluZygp
YCByZXR1cm5zIGEgbm9uLXN0cmluZyB2YWx1ZSAobGlrZSBhIG51bWJlciksIE9TUiBleGl0IGlz
IGV4ZWN1dGVkLAorICAgICAgICBhbmQgd2UgcmV0dXJuIGludG8gdGhlIHByaW9yIHRvIHRoZSBU
b1ByaW1pdGl2ZS4gQXMgdGhlIHJlc3VsdCwgdGhlIG9ic2VydmFibGUgYG9iamVjdC50b1N0cmlu
ZygpYCBpcyBjYWxsZWQgdHdpY2UuCisKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpyZXN1bHRPZlRvUHJpbWl0aXZlKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChyYXcpOgorICAgICAgICAoQ291bnRlcik6CisKIDIwMTUtMDYt
MTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQVNT
RVJUSU9OIEZBSUxFRDogcy5sZW5ndGgoKSA+IDEgb24gTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZs
YWdzLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVj
dWxhdGVkVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmgKaW5kZXggYmQwNDVjM2FjNDQ1NzA2ZjliYzg1ZDRmNWIzODNjNjg4ZGMzZGRjMi4uNDU0
OWExNjY3ZjFjYjVhYjc5MGZlOTVhMGQ0MmFjMDgyMTQ4MTM0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgKQEAgLTg0LDYgKzg0LDcgQEAK
IHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQm9vbGVhbiAgICAgICAgICAgID0gMHgx
MDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgQm9vbGVhbi4KIHN0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjT3RoZXIgICAgICAgICAgICAgID0gMHgyMDAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IGVpdGhlciBOdWxsIG9yIFVuZGVmaW5lZC4KIHN0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjTWlzYyAgICAgICAgICAgICAgID0gMHgzMDAwMDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGVpdGhlciBhIGJvb2xlYW4sIE51bGwsIG9yIFVuZGVmaW5lZC4KK3N0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjUHJpbWl0aXZlICAgICAgICAgID0gU3BlY0Z1bGxOdW1iZXIg
fCBTcGVjTWlzYyB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sOwogc3RhdGljIGNvbnN0IFNwZWN1
bGF0ZWRUeXBlIFNwZWNIZWFwVG9wICAgICAgICAgICAgPSAweDNiYmZmZmZmOyAvLyBJdCBjYW4g
YmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTIuCiBzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5ICAgICAgICAgICAgICA9IDB4NDAwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJrZXIuCiBzdGF0aWMgY29uc3QgU3BlY3Vs
YXRlZFR5cGUgU3BlY0J5dGVjb2RlVG9wICAgICAgICA9IDB4N2JiZmZmZmY7IC8vIEl0IGNhbiBi
ZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mi4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAppbmRleCBkNWFmOTI3NmI0NTMwYzBlMWFiZTMyNzRlMDM2ZTA1ZmUxZjI3Y2E4Li4wMjFkNjU4
MzJjZDIyZmQ2YmNkMmVlNzVhZGNhMzE5MjlkMzM2Y2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBA
IC0xNDYyLDcgKzE0NjIsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmICghKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3Bl
Y0Z1bGxOdW1iZXIgfCBTcGVjQm9vbGVhbiB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkpIHsK
KyAgICAgICAgaWYgKCEoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNQcmlt
aXRpdmUpKSB7CiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOwog
ICAgICAgICAgICAgZm9yTm9kZShub2RlKSA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNDcwLDcgKzE0NzAsNyBAQAogICAgICAgICAKICAgICAgICAg
Y2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAg
ICAgCi0gICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCAoU3BlY0hlYXBUb3Ag
JiB+U3BlY0NlbGwpIHwgU3BlY1N0cmluZyB8IFNwZWNTeW1ib2wpOworICAgICAgICBmb3JOb2Rl
KG5vZGUpLnNldFR5cGUobV9ncmFwaCwgKFNwZWNIZWFwVG9wICYgflNwZWNDZWxsKSB8IFNwZWNQ
cmltaXRpdmUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRl
eCBmZDhkZjRkOTk0MThjNjM3ZDQ4ZGZhMTlhMzg4MzBhNWZlYzIzOGM0Li5kY2I5NjkwYzMzODk4
MTFmYjllZjFmZDA0Y2ExODBlY2NjMjE4ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcApAQCAtNDUxLDcgKzQ1MSw3
IEBAIGNsYXNzIENvbnN0YW50Rm9sZGluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgY2FzZSBUb1ByaW1pdGl2ZTogewotICAgICAgICAgICAgICAg
IGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH4oU3BlY0Z1bGxO
dW1iZXIgfCBTcGVjQm9vbGVhbiB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKSkKKyAgICAgICAg
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3Bl
Y1ByaW1pdGl2ZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvSWRlbnRpdHkoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKaW5kZXggY2RlMDliZjEyMWIyMWY4YTRmZWI2MGRmYTI0ZmI0MjBiNmE5YmFiYS4u
ZWZmNGFlNGZiMDdmOTUyMWRiMDVjNzhmMWU3M2FkYjQxOGI5M2Y5MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKQEAgLTM3LDkgKzM3LDExIEBACiBTcGVjdWxhdGVkVHlwZSByZXN1bHRPZlRvUHJp
bWl0aXZlKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgJiBTcGVjT2JqZWN0
KSB7Ci0gICAgICAgIC8vIE9iamVjdHMgZ2V0IHR1cm5lZCBpbnRvIHN0cmluZ3MuIFNvIGlmIHRo
ZSBpbnB1dCBoYXMgaGludHMgb2Ygb2JqZWN0bmVzcywKLSAgICAgICAgLy8gdGhlIG91dHB1dCB3
aWxsIGhhdmUgaGluc3RzIG9mIHN0cmluZ2luZXNzLgotICAgICAgICByZXR1cm4gbWVyZ2VTcGVj
dWxhdGlvbnModHlwZSAmIH5TcGVjT2JqZWN0LCBTcGVjU3RyaW5nKTsKKyAgICAgICAgLy8gV2hl
biBUb1ByaW1pdGl2ZSBpcyBwZXJmb3JtZWQgb250byBhbiBvYmplY3QsIHRoZSB2YWx1ZSBpcyB0
eXBpY2FsbHkgdHVybmVkIGludG8gU3RyaW5nIGJlY2F1c2UgInRvU3RyaW5nIiBtZXRob2QgaXMg
Y2FsbGVkLgorICAgICAgICAvLyBIb3dldmVyLCBFQ01BMjYyIFRvUHJpbWl0aXZlIHNwZWMgb25s
eSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlc3VsdCBvZiBUb1ByaW1pdGl2ZSBiZWNvbWVzIGEgcHJp
bWl0aXZlIHZhbHVlLgorICAgICAgICAvLyBJdCBtZWFucyB0aGF0IHRoZSByZXN1bHQgb2YgInRv
U3RyaW5nIiBtYXkgYmVjb21lIHRoZSBvdGhlciBwcmltaXRpdmUgdmFsdWVzIGxpa2UgYSBudW1i
ZXIuCisgICAgICAgIC8vIFRvIGhhbmRsZSBpdCwgd2UgY29uc2VydmF0aXZlbHkgc3BlY3VsYXRl
IHRoZSByZXN1bHQgb2YgdHlwZTsgaXQgY2FuIHRha2UgYWxsIHByaW1pdGl2ZSB2YWx1ZXMuCisg
ICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9ucyh0eXBlICYgflNwZWNPYmplY3QsIFNwZWNQ
cmltaXRpdmUpOwogICAgIH0KICAgICAKICAgICByZXR1cm4gdHlwZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10
eXBlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdG9wcmltaXRpdmUt
c3BlY3VsYXRlZC10eXBlcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYTE4YTE5MTQxNDU2YTg5ZmJhMzdiNmFk
NWU5MmU2ZGI5YmE1Mjg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy90b3ByaW1pdGl2ZS1zcGVjdWxhdGVkLXR5cGVzLmpzCkBAIC0wLDAgKzEs
MjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0
dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcg
KyBKU09OLnN0cmluZ2lmeShhY3R1YWwpKTsKK30KKworZnVuY3Rpb24gcmF3KGFycmF5KSB7Cisg
ICAgdmFyIHJlc3VsdCA9ICcnOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IGFycmF5W2ldOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitmdW5jdGlvbiBDb3VudGVyKCkgeworICAgIHJldHVybiB7CisgICAgICAg
IGNvdW50OiAwLAorICAgICAgICB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIC8vIFJldHVybiBh
IG51bWJlciBldmVuIGlmIHRoZSAidG9TdHJpbmciIG1ldGhvZC4KKyAgICAgICAgICAgIHJldHVy
biB0aGlzLmNvdW50Kys7CisgICAgICAgIH0KKyAgICB9OworfQorCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIgYyA9IENvdW50ZXIoKTsKKyAgICBzaG91bGRCZShy
YXcoW2MsIGNdKSwgIjAxIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254843</attachid>
            <date>2015-06-12 18:08:41 -0700</date>
            <delta_ts>2015-06-15 17:05:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145820-20150613100810.patch</filename>
            <type>text/plain</type>
            <size>6866</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NDgwYTIxZjdjM2Y2Njk4MDY5OTAzYmVjYzlmMTY1YzY5OTNhY2ZkLi41NDVlNTBjYjFkODUyYTk0
YzAzMmY1NjFhOGNjYjAxMTJmOTUwNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0wNi0xMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSByZXN1bHQgb2YgVG9QcmltaXRpdmUgc2hvdWxkIGJlIHNw
ZWN1bGF0ZWQgYWxsIHByaW1pdGl2ZSB2YWx1ZXMgaWYgdGhlIGdpdmVuIHR5cGUgY29udGFpbnMg
YW4gb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ1ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmVmb3JlIHRoaXMgcGF0Y2gsIFRvUHJpbWl0aXZlKG9iamVjdCkgaXMgc3BlY3VsYXRlZCB0
byBTcGVjU3RyaW5nLgorICAgICAgICBERkcgY29tcGlsZXMgQXJpdGhBZGQgd2l0aCBTdHJpbmcg
dHlwZSBpbnRvIE1ha2VSb3BlKGxlZnQsIFRvU3RyaW5nKFRvUHJpbWl0aXZlKHJpZ2h0KSkpLgor
ICAgICAgICBBbmQgaWYgdGhlIHJpZ2h0IGlzIHNwZWN1bGF0ZWQgdG8gU3BlY1N0cmluZywgVG9T
dHJpbmcgaXMgb21pdHRlZC4gQW5kIHdlIHRoaW5rIHRoZXJlJ3MgT1NSIGV4aXQgc2FmZS4KKyAg
ICAgICAgSG93ZXZlciwgVG9QcmltaXRpdmUob2JqZWN0KSBtYXkgcmV0dXJuIGFuIGFyYml0cmFy
eSBwcmltaXRpdmUgdmFsdWVzLgorICAgICAgICBTbyBpZiB0aGUgYG9iamVjdC50b1N0cmluZygp
YCByZXR1cm5zIGEgbm9uLXN0cmluZyB2YWx1ZSAobGlrZSBhIG51bWJlciksIE9TUiBleGl0IGlz
IGV4ZWN1dGVkLAorICAgICAgICBhbmQgd2UgcmV0dXJuIGludG8gdGhlIHByaW9yIHRvIHRoZSBU
b1ByaW1pdGl2ZS4gQXMgdGhlIHJlc3VsdCwgdGhlIG9ic2VydmFibGUgYG9iamVjdC50b1N0cmlu
ZygpYCBpcyBjYWxsZWQgdHdpY2UuCisKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlw
ZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50
cyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpyZXN1bHRPZlRvUHJpbWl0aXZlKToKKyAgICAgICAgKiB0ZXN0cy9z
dHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qczogQWRkZWQuCisgICAgICAgIChz
aG91bGRCZSk6CisgICAgICAgIChyYXcpOgorICAgICAgICAoQ291bnRlcik6CisKIDIwMTUtMDYt
MTIgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRAYXBwbGUuY29tPgogCiAgICAgICAg
IERGRyBPYmplY3QgQWxsb2NhdGlvbiBTaW5raW5nIHNob3VsZCBub3QgY29uc2lkZXIgR2V0Q2xv
c3VyZVZhciBhcyBlc2NhcGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
cGVjdWxhdGVkVHlwZS5oCmluZGV4IGJkMDQ1YzNhYzQ0NTcwNmY5YmM4NWQ0ZjViMzgzYzY4OGRj
M2RkYzIuLjQ0NDRjZTViYjI0ZDEyMmEwNTg1NTJhOWY0MGM3Mzg1ZWJjMTg4YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCkBAIC04NCw2
ICs4NCw3IEBACiBzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0Jvb2xlYW4gICAgICAg
ICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCiBzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgICA9IDB4MjAwMDAwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgTnVsbCBvciBVbmRlZmluZWQuCiBzdGF0aWMgY29u
c3QgU3BlY3VsYXRlZFR5cGUgU3BlY01pc2MgICAgICAgICAgICAgICA9IDB4MzAwMDAwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBlaXRoZXIgYSBib29sZWFuLCBOdWxsLCBvciBVbmRlZmluZWQuCitz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1ByaW1pdGl2ZSAgICAgICAgICA9IDB4Mzdm
NzAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIHByaW1pdGl2ZSB2YWx1ZS4KIHN0YXRpYyBjb25z
dCBTcGVjdWxhdGVkVHlwZSBTcGVjSGVhcFRvcCAgICAgICAgICAgID0gMHgzYmJmZmZmZjsgLy8g
SXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyLgogc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAgICAgICAgPSAweDQwMDAwMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgogc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNCeXRlY29kZVRvcCAgICAgICAgPSAweDdiYmZmZmZmOyAvLyBJ
dCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZSwgZXhjZXB0IGZvciBTcGVjSW50NTIuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKaW5kZXggZDVhZjkyNzZiNDUzMGMwZTFhYmUzMjc0ZTAzNmUwNWZlMWYyN2NhOC4u
MDIxZDY1ODMyY2QyMmZkNmJjZDJlZTc1YWRjYTMxOTI5ZDMzNmNjMSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaApAQCAtMTQ2Miw3ICsxNDYyLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBpZiAoIShmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUg
JiB+KFNwZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4gfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJv
bCkpKSB7CisgICAgICAgIGlmICghKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5T
cGVjUHJpbWl0aXZlKSkgewogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0
cnVlKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZSkgPSBmb3JOb2RlKG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3MCw3ICsxNDcwLDcgQEAKICAgICAgICAgCiAg
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CiAgICAgICAgIAotICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgKFNwZWNI
ZWFwVG9wICYgflNwZWNDZWxsKSB8IFNwZWNTdHJpbmcgfCBTcGVjU3ltYm9sKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIChTcGVjSGVhcFRvcCAmIH5TcGVjQ2VsbCkg
fCBTcGVjUHJpbWl0aXZlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHAKaW5kZXggZmQ4ZGY0ZDk5NDE4YzYzN2Q0OGRmYTE5YTM4ODMwYTVmZWMyMzhjNC4uZGNiOTY5
MGMzMzg5ODExZmI5ZWYxZmQwNGNhMTgwZWNjYzIxOGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTQ1MSw3
ICs0NTEsNyBAQCBjbGFzcyBDb25zdGFudEZvbGRpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsKLSAgICAgICAg
ICAgICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+KFNw
ZWNGdWxsTnVtYmVyIHwgU3BlY0Jvb2xlYW4gfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCkpCisg
ICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBl
ICYgflNwZWNQcmltaXRpdmUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb0lkZW50aXR5KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCmluZGV4IGNkZTA5YmYxMjFiMjFmOGE0ZmViNjBkZmEyNGZiNDIwYjZh
OWJhYmEuLmJkMjMyMzI5ZmY1Y2NhNjQxOGQyM2E2OGY4NGJmZGM3NjUyMDI4NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCkBAIC0zNyw5ICszNywxMSBAQAogU3BlY3VsYXRlZFR5cGUgcmVzdWx0
T2ZUb1ByaW1pdGl2ZShTcGVjdWxhdGVkVHlwZSB0eXBlKQogewogICAgIGlmICh0eXBlICYgU3Bl
Y09iamVjdCkgewotICAgICAgICAvLyBPYmplY3RzIGdldCB0dXJuZWQgaW50byBzdHJpbmdzLiBT
byBpZiB0aGUgaW5wdXQgaGFzIGhpbnRzIG9mIG9iamVjdG5lc3MsCi0gICAgICAgIC8vIHRoZSBv
dXRwdXQgd2lsbCBoYXZlIGhpbnN0cyBvZiBzdHJpbmdpbmVzcy4KLSAgICAgICAgcmV0dXJuIG1l
cmdlU3BlY3VsYXRpb25zKHR5cGUgJiB+U3BlY09iamVjdCwgU3BlY1N0cmluZyk7CisgICAgICAg
IC8vIFdoZW4gVG9QcmltaXRpdmUgaXMgcGVyZm9ybWVkIG9udG8gYW4gb2JqZWN0LCB0aGUgdmFs
dWUgaXMgdHlwaWNhbGx5IHR1cm5lZCBpbnRvIFN0cmluZyBiZWNhdXNlICJ0b1N0cmluZyIgbWV0
aG9kIGlzIGNhbGxlZC4KKyAgICAgICAgLy8gSG93ZXZlciwgRUNNQTI2MiBUb1ByaW1pdGl2ZSBz
cGVjIG9ubHkgZ3VhcmFudGVlcyB0aGF0IHRoZSByZXN1bHQgb2YgVG9QcmltaXRpdmUgYmVjb21l
cyBhIHByaW1pdGl2ZSB2YWx1ZS4KKyAgICAgICAgLy8gSXQgbWVhbnMgdGhhdCB0aGUgcmVzdWx0
IG9mICJ0b1N0cmluZyIgbWF5IGJlY29tZSB0aGUgb3RoZXIgcHJpbWl0aXZlIHZhbHVlcyBsaWtl
IGEgbnVtYmVyLgorICAgICAgICAvLyBUbyBoYW5kbGUgaXQsIHdlIGNvbnNlcnZhdGl2ZWx5IHNw
ZWN1bGF0ZSB0aGUgcmVzdWx0IHR5cGU7IGl0IGNhbiB0YWtlIGFsbCBwcmltaXRpdmUgdmFsdWVz
LgorICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlvbnModHlwZSAmIH5TcGVjT2JqZWN0LCBT
cGVjUHJpbWl0aXZlKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIHR5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvcHJpbWl0aXZlLXNwZWN1bGF0
ZWQtdHlwZXMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvcHJpbWl0
aXZlLXNwZWN1bGF0ZWQtdHlwZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2ExOGExOTE0MTQ1NmE4OWZiYTM3
YjZhZDVlOTJlNmRiOWJhNTI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qcwpAQCAtMCww
ICsxLDI3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVl
OiAnICsgSlNPTi5zdHJpbmdpZnkoYWN0dWFsKSk7Cit9CisKK2Z1bmN0aW9uIHJhdyhhcnJheSkg
eworICAgIHZhciByZXN1bHQgPSAnJzsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxl
bmd0aDsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBhcnJheVtpXTsKKyAgICB9CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gQ291bnRlcigpIHsKKyAgICByZXR1cm4geworICAg
ICAgICBjb3VudDogMCwKKyAgICAgICAgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICAvLyBSZXR1
cm4gYSBudW1iZXIgZXZlbiBpZiB0aGUgInRvU3RyaW5nIiBtZXRob2QuCisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5jb3VudCsrOworICAgICAgICB9CisgICAgfTsKK30KKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxMDAwMDsgKytpKSB7CisgICAgdmFyIGMgPSBDb3VudGVyKCk7CisgICAgc2hvdWxk
QmUocmF3KFtjLCBjXSksICIwMSIpOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254908</attachid>
            <date>2015-06-15 17:05:30 -0700</date>
            <delta_ts>2015-06-17 02:50:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145820-20150616090455.patch</filename>
            <type>text/plain</type>
            <size>10008</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NDNlODQ0OWFhOTM4NWIyODczYzY4OTlhNmFjMTE1ZDRkZThmNWViLi4xOGQ0OTExMTRlMzA1Y2Fj
MGE3N2U1NjIxOTRkZWFiMjc2MmM0Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxNS0wNi0xNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSByZXN1bHQgb2YgVG9QcmltaXRpdmUgc2hvdWxkIGJlIHNw
ZWN1bGF0ZWQgYWxsIHByaW1pdGl2ZSB2YWx1ZXMgaWYgdGhlIGdpdmVuIHR5cGUgY29udGFpbnMg
YW4gb2JqZWN0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ1ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQmVmb3JlIHRoaXMgcGF0Y2gsIFRvUHJpbWl0aXZlKFNwZWNPYmplY3QpIGlzIHNwZWN1bGF0
ZWQgdG8gU3BlY1N0cmluZy4KKyAgICAgICAgREZHIGNvbXBpbGVzIEFyaXRoQWRkIHdpdGggU3Ry
aW5nIHR5cGUgaW50byBNYWtlUm9wZShsZWZ0LCBUb1N0cmluZyhUb1ByaW1pdGl2ZShyaWdodCkp
KS4KKworICAgICAgICBTbyB3aGVuIHJpZ2h0IGlzIHNwZWN1bGF0ZWQgYXMgU3BlY09iamVjdCwg
VG9QcmltaXRpdmUoU3BlY09iamVjdCkgaXMgc3BlY3VsYXRlZCBhcyBTcGVjU3RyaW5nLgorICAg
ICAgICBJdCBsZWFkcyBUb1N0cmluZyB0byBiZWNvbWUgSWRlbnRpdHkgd2l0aCBhIHNwZWN1bGF0
ZWQgdHlwZSBjaGVjay4KKworICAgICAgICBIb3dldmVyLCBUb1ByaW1pdGl2ZSBhbmQgVG9TdHJp
bmcgYXJlIG9yaWdpbmF0ZWQgZnJvbSB0aGUgc2FtZSBieXRlY29kZS4gQW5kIFRvUHJpbWl0aXZl
IG1heSBoYXZlCisgICAgICAgIGFuIG9ic2VydmFibGUgc2lkZSBlZmZlY3Qgd2hlbiB0aGUgZ2l2
ZW4gcGFyYW1ldGVyIGlzIGFuIG9iamVjdCAoY2FsbGluZyBvYmplY3Que3RvU3RyaW5nLHZhbHVl
T2Z9KS4KKworICAgICAgICBTbyB3aGVuIG9iamVjdC50b1N0cmluZygpIHJldHVybnMgYSBudW1i
ZXIgKGl0IGlzIGFsbG93ZWQgaW4gdGhlIEVTIHNwZWMpLCBUb1ByaW1pdGl2ZSBwZXJmb3Jtcwor
ICAgICAgICBvYnNlcnZhYmxlIGBvYmplY3QudG9TdHJpbmcoKWAgY2FsbGluZy4gQnV0IFRvU3Ry
aW5nIGlzIGNvbnZlcnRlZCBpbnRvIGEgc3BlY3VsYXRlZCB0eXBlIGNoZWNrIGZvcgorICAgICAg
ICBTcGVjU3RyaW5nIGFuZCBpdCByYWlzZXMgT1NSIGV4aXQuIEFuZCB3ZSBleGl0IHRvIHRoZSBv
cmlnaW5hbCBBcml0aEFkZCdzIGJ5dGVjb2RlIHBvc2l0aW9uIGFuZAorICAgICAgICBpdCByZWR1
bmRhbnRseSBwZXJmb3JtcyBhbiBvYnNlcnZhYmxlIFRvUHJpbWl0aXZlIGV4ZWN1dGlvbi4KKwor
ICAgICAgICBUbyBmaXggdGhpcyBpc3N1ZSBmdW5kYW1lbnRhbGx5LCBJIHRoaW5rIHdlIHNob3Vs
ZCBpbnRyb2R1Y2UgVG9TdHJpbmdUb1ByaW1pdGl2ZSBERkcgYnl0ZWNvZGUgYmVjYXVzZQorICAg
ICAgICB0aGUgYWJvdmUgVG9QcmltaXRpdmUgYW5kIFRvU3RyaW5nIGlzIG5vdCBzcGxpdHRhYmxl
LiBCdXQgdGhpcyBwYXRjaCBjb3VsZCBmaXggdGhlIGN1cnJlbnQgc2l0dWF0aW9uCisgICAgICAg
IGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyAzIHJlYXNvbnMuCisKKyAgICAgICAgMS4gVG9Qcmlt
aXRpdmUoU3BlY09iamVjdCkgY2FzZQorCisgICAgICAgIFdoZW4gcGVyZm9ybWluZyBUb1ByaW1p
dGl2ZShTcGVjT2JqZWN0KSwgd2Ugc3BlY3VsYXRlIHRoZSByZXN1bHQgYXMgdGhlIGFsbCBwcmlt
aXRpdmUgdmFsdWVzCisgICAgICAgIGNvbnNlcnZhdGl2ZWx5IGluIHRoaXMgcGF0Y2guIFNvIFRv
U3RyaW5nICYgVG9QcmltaXRpdmUgYXJlIG5vdCBjb252ZXJ0ZWQgaW50byBJZGVudGl0eShDaGVj
azouLi4pCisgICAgICAgIGluIEZpeHVwIHBoYXNlLiBTbyBPU1IgZXhpdCBkb2Vzbid0IG9jY3Vy
LgorCisgICAgICAgIDIuIFRvUHJpbWl0aXZlKFNwZWNTdHJpbmcpLCBidXQgb2JqZWN0IGNvbWVz
CisKKyAgICAgICAgVG9QcmltaXRpdmUoU3BlY1N0cmluZykgd2lsbCBiZSBjb252ZXJ0ZWQgaW50
byBDaGVjazpTdHJpbmcuIFNvIGJlZm9yZSBleGVjdXRpbmcgdGhlIG9ic2VydmFibGUgc2lkZQor
ICAgICAgICBlZmZlY3QsIE9TUiBleGl0IHdpbGwgYmUgZXhlY3V0ZWQuCisKKyAgICAgICAgMy4g
VG9QcmltaXRpdmUoU3BlY1N0cmluZyAgfCBTcGVjSW50MzIpLCBidXQgb2JqZWN0IGNvbWVzCisK
KyAgICAgICAgVG9QcmltaXRpdmUgYW5kIFRvU3RyaW5nIGhhdmUgdGhlIGFsbW9zdCBzYW1lIGZp
eHVwIGluIERGRyBGaXh1cCBwaGFzZS4KKyAgICAgICAgQW5kIFRvUHJpbWl0aXZlKFNwZWNTdHJp
bmcgfCBTcGVjSW50MzIpIHdpbGwgcHJvcGFnYXRlIHRoZSBzYW1lIGBTcGVjU3RyaW5nIHwgU3Bl
Y0ludDMyYAorICAgICAgICBhcyB0aGUgcmVzdWx0IG9mIFRvUHJpbWl0aXZlLiBTbywgYXMgYSBy
ZXN1bHQsIHdoZW4gVG9TdHJpbmcgaXMgY29udmVydGVkIGludG8gQ2hlY2ssIFRvUHJpbWl0aXZl
CisgICAgICAgIGlzIGFsc28gY29udmVydGVkIGludG8gQ2hlY2suIFNvIGJlZm9yZSBleGVjdXRp
bmcgdGhlIG9ic2VydmFibGUgc2lkZSBlZmZlY3QgaW4gVG9QcmltaXRpdmUsIE9TUiBleGl0Cisg
ICAgICAgIGFsd2F5cyBvY2N1cnMuCisKKyAgICAgICAgVGhlIHByb2JsZW1hdGljIHNpdHVhdGlv
biBpcyAoMSkgVG9QcmltaXRpdmUgcGVyZm9ybXMgb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdCBhbmQg
aXQgZG9lc24ndCByYWlzZSBPU1IKKyAgICAgICAgZXhpdCwgYnV0LCAoMikgVG9TdHJpbmcgcGVy
Zm9ybXMgT1NSIGV4aXQuIEJ5IHRoaXMgcGF0Y2gsIHRoaXMgc2l0dWF0aW9uIGlzIGF2b2lkZWQu
CisKKyAgICAgICAgKiBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAg
ICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRU
b01ha2VGYXN0U3RyaW5nQWRkKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OnJlc3VsdE9mVG9QcmltaXRpdmUpOgor
ICAgICAgICAqIHRlc3RzL3N0cmVzcy90b3ByaW1pdGl2ZS1zcGVjdWxhdGVkLXR5cGVzLmpzOiBB
ZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHJhdyk6CisgICAgICAgIChDb3Vu
dGVyKToKKwogMjAxNS0wNi0xMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGUudGFibGUoKSB3aXRoIGEgbGlzdCBv
ZiBvYmplY3RzIG5vIGxvbmdlciB3b3JrcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaAppbmRleCBiZDA0NWMzYWM0NDU3MDZmOWJjODVkNGY1YjM4
M2M2ODhkYzNkZGMyLi40NDQ0Y2U1YmIyNGQxMjJhMDU4NTUyYTlmNDBjNzM4NWViYzE4OGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuaApA
QCAtODQsNiArODQsNyBAQAogc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFu
ICAgICAgICAgICAgPSAweDEwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgog
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPdGhlciAgICAgICAgICAgICAgPSAweDIw
MDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIE51bGwgb3IgVW5kZWZpbmVkLgogc3Rh
dGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNNaXNjICAgICAgICAgICAgICAgPSAweDMwMDAw
MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgZWl0aGVyIGEgYm9vbGVhbiwgTnVsbCwgb3IgVW5kZWZp
bmVkLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNQcmltaXRpdmUgICAgICAgICAg
PSAweDM3ZjcwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBwcmltaXRpdmUgdmFsdWUuCiBzdGF0
aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0hlYXBUb3AgICAgICAgICAgICA9IDB4M2JiZmZm
ZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLCBleGNlcHQgZm9yIFNwZWNJbnQ1Mi4K
IHN0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRW1wdHkgICAgICAgICAgICAgID0gMHg0
MDAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KIHN0YXRp
YyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQnl0ZWNvZGVUb3AgICAgICAgID0gMHg3YmJmZmZm
ZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUsIGV4Y2VwdCBmb3IgU3BlY0ludDUyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCmluZGV4IGQ1YWY5Mjc2YjQ1MzBjMGUxYWJlMzI3NGUwMzZlMDVmZTFm
MjdjYTguLjAyMWQ2NTgzMmNkMjJmZDZiY2QyZWU3NWFkY2EzMTkyOWQzMzZjYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKQEAgLTE0NjIsNyArMTQ2Miw3IEBACiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKCEoZm9yTm9kZShub2RlLT5jaGlsZDEoKSku
bV90eXBlICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNCb29sZWFuIHwgU3BlY1N0cmluZyB8IFNw
ZWNTeW1ib2wpKSkgeworICAgICAgICBpZiAoIShmb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5
cGUgJiB+U3BlY1ByaW1pdGl2ZSkpIHsKICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRDb25z
dGFudHModHJ1ZSk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGUpID0gZm9yTm9kZShub2RlLT5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE0NzAsNyArMTQ3MCw3IEBACiAgICAg
ICAgIAogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVy
TGltaXQpOwogICAgICAgICAKLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgs
IChTcGVjSGVhcFRvcCAmIH5TcGVjQ2VsbCkgfCBTcGVjU3RyaW5nIHwgU3BlY1N5bWJvbCk7Cisg
ICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCAoU3BlY0hlYXBUb3AgJiB+U3Bl
Y0NlbGwpIHwgU3BlY1ByaW1pdGl2ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCmluZGV4IGZkOGRmNGQ5OTQxOGM2MzdkNDhkZmExOWEzODgzMGE1ZmVjMjM4YzQu
LmRjYjk2OTBjMzM4OTgxMWZiOWVmMWZkMDRjYTE4MGVjY2MyMThlZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCkBA
IC00NTEsNyArNDUxLDcgQEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjYXNlIFRvUHJpbWl0aXZlOiB7Ci0g
ICAgICAgICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBl
ICYgfihTcGVjRnVsbE51bWJlciB8IFNwZWNCb29sZWFuIHwgU3BlY1N0cmluZyB8IFNwZWNTeW1i
b2wpKQorICAgICAgICAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
Lm1fdHlwZSAmIH5TcGVjUHJpbWl0aXZlKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBub2RlLT5jb252ZXJ0VG9JZGVudGl0eSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggMTVh
ZThmNjgzYWFmNGM5MzRhY2Y0YmJhOGQ5ZWU3YTYxNWIwMjY5ZS4uZDEyNjA1ZmJjN2ZjNzRiODI3
ZTk2Y2ZmYTk4N2Y0ZWU5MTFkNDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC0xNDc0LDcgKzE0NzQsMTIgQEAgY2xhc3MgRml4dXBQaGFzZSA6
IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gU28gdGhhdCdz
IHdoYXQgd2UgZW1pdC4gTkIsIHdlIG5lZWQgdG8gZG8gYWxsIHJlbGV2YW50IHR5cGUgY2hlY2tz
IG9uIEBsZWZ0IGJlZm9yZSB3ZSBkbwogICAgICAgICAgICAgLy8gYW55dGhpbmcgdG8gQHJpZ2h0
LCBzaW5jZSBUb1ByaW1pdGl2ZSBtYXkgYmUgZWZmZWN0ZnVsLgotICAgICAgICAgICAgCisKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBTaW5jZSBUb1N0cmluZyBhbmQgVG9QcmltaXRpdmUgYXJlIG9y
aWdpbmF0ZWQgZnJvbSB0aGUgc2FtZSBieXRlY29kZSBhbmQgVG9QcmltaXRpdmUKKyAgICAgICAg
ICAgIC8vIG1heSBoYXZlIGFuIG9ic2VydmFibGUgc2lkZSBlZmZlY3QsIGluaGVyZW50bHkgdGhl
c2UgREZHIGJ5dGVjb2RlcyBhcmUgdW5zcGxpdHRhYmxlOyBhZnRlcgorICAgICAgICAgICAgLy8g
cGVyZm9ybWluZyBhbiBvYnNlcnZhYmxlIHNpZGUgZWZmZWN0IG9uIFRvUHJpbWl0aXZlLCBUb1N0
cmluZyBzaG91bGQgbm90IHBlcmZvcm0gT1NSIGV4aXQuCisgICAgICAgICAgICAvLyBJbnRyb2R1
Y2luZyBjb21iaW5lZCwgdW5zcGxpdHRhYmxlIERGRyBub2RlIFRvUHJpbWl0aXZlVG9TdHJpbmcg
Y291bGQgc29sdmUgdGhpcyBzaXR1YXRpb24uCisKICAgICAgICAgICAgIE5vZGUqIHRvUHJpbWl0
aXZlID0gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgICAgICBtX2luZGV4
SW5CbG9jaywgcmVzdWx0T2ZUb1ByaW1pdGl2ZShyaWdodC0+cHJlZGljdGlvbigpKSwgVG9Qcmlt
aXRpdmUsCiAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLCBFZGdlKHJpZ2h0Lm5vZGUoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBjZGUwOWJmMTIxYjIxZjhhNGZlYjYwZGZhMjRm
YjQyMGI2YTliYWJhLi5iZDIzMjMyOWZmNWNjYTY0MThkMjNhNjhmODRiZmRjNzY1MjAyODU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtMzcsOSArMzcsMTEgQEAKIFNwZWN1bGF0ZWRUeXBl
IHJlc3VsdE9mVG9QcmltaXRpdmUoU3BlY3VsYXRlZFR5cGUgdHlwZSkKIHsKICAgICBpZiAodHlw
ZSAmIFNwZWNPYmplY3QpIHsKLSAgICAgICAgLy8gT2JqZWN0cyBnZXQgdHVybmVkIGludG8gc3Ry
aW5ncy4gU28gaWYgdGhlIGlucHV0IGhhcyBoaW50cyBvZiBvYmplY3RuZXNzLAotICAgICAgICAv
LyB0aGUgb3V0cHV0IHdpbGwgaGF2ZSBoaW5zdHMgb2Ygc3RyaW5naW5lc3MuCi0gICAgICAgIHJl
dHVybiBtZXJnZVNwZWN1bGF0aW9ucyh0eXBlICYgflNwZWNPYmplY3QsIFNwZWNTdHJpbmcpOwor
ICAgICAgICAvLyBXaGVuIFRvUHJpbWl0aXZlIGlzIHBlcmZvcm1lZCBvbnRvIGFuIG9iamVjdCwg
dGhlIHZhbHVlIGlzIHR5cGljYWxseSB0dXJuZWQgaW50byBTdHJpbmcgYmVjYXVzZSAidG9TdHJp
bmciIG1ldGhvZCBpcyBjYWxsZWQuCisgICAgICAgIC8vIEhvd2V2ZXIsIEVDTUEyNjIgVG9Qcmlt
aXRpdmUgc3BlYyBvbmx5IGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVzdWx0IG9mIFRvUHJpbWl0aXZl
IGJlY29tZXMgYSBwcmltaXRpdmUgdmFsdWUuCisgICAgICAgIC8vIEl0IG1lYW5zIHRoYXQgdGhl
IHJlc3VsdCBvZiAidG9TdHJpbmciIG1heSBiZWNvbWUgdGhlIG90aGVyIHByaW1pdGl2ZSB2YWx1
ZXMgbGlrZSBhIG51bWJlci4KKyAgICAgICAgLy8gVG8gaGFuZGxlIGl0LCB3ZSBjb25zZXJ2YXRp
dmVseSBzcGVjdWxhdGUgdGhlIHJlc3VsdCB0eXBlOyBpdCBjYW4gdGFrZSBhbGwgcHJpbWl0aXZl
IHZhbHVlcy4KKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRpb25zKHR5cGUgJiB+U3BlY09i
amVjdCwgU3BlY1ByaW1pdGl2ZSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiB0eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90b3ByaW1pdGl2ZS1z
cGVjdWxhdGVkLXR5cGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90
b3ByaW1pdGl2ZS1zcGVjdWxhdGVkLXR5cGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNhMThhMTkxNDE0NTZh
ODlmYmEzN2I2YWQ1ZTkyZTZkYjliYTUyODQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvcHJpbWl0aXZlLXNwZWN1bGF0ZWQtdHlwZXMuanMK
QEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIEpTT04uc3RyaW5naWZ5KGFjdHVhbCkpOworfQorCitmdW5jdGlvbiByYXco
YXJyYXkpIHsKKyAgICB2YXIgcmVzdWx0ID0gJyc7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
cnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICByZXN1bHQgKz0gYXJyYXlbaV07CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIENvdW50ZXIoKSB7CisgICAgcmV0dXJu
IHsKKyAgICAgICAgY291bnQ6IDAsCisgICAgICAgIHRvU3RyaW5nKCkgeworICAgICAgICAgICAg
Ly8gUmV0dXJuIGEgbnVtYmVyIGV2ZW4gaWYgdGhlICJ0b1N0cmluZyIgbWV0aG9kLgorICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuY291bnQrKzsKKyAgICAgICAgfQorICAgIH07Cit9CisKK2ZvciAo
dmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBjID0gQ291bnRlcigpOworICAg
IHNob3VsZEJlKHJhdyhbYywgY10pLCAiMDEiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255009</attachid>
            <date>2015-06-17 02:50:41 -0700</date>
            <delta_ts>2015-06-17 02:52:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145820-20150617185005.patch</filename>
            <type>text/plain</type>
            <size>3927</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDZkZjQ5MzE0NmUxZjJiNGIxMjA3NTdiODY0NWQzZTkxZmFlMzAzLi45ZjA3ZWQ0ZTM2YWFlMWFk
NzY4MDBjOWNiNGRkYWEyMDNlZDU4YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNS0wNi0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBBdm9pZCBPU1IgZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHN0
cmluZyBjb25jYXRuYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NTgyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIERGRyBhdHRlbXB0IHRvIGNvbXBpbGUgVmFsdWVBZGQgd2l0aCBTdHJpbmcgdHlw
ZSBpbnRvIE1ha2VSb3BlKGxlZnQsIFRvU3RyaW5nKFRvUHJpbWl0aXZlKHJpZ2h0KSkpLgorCisg
ICAgICAgIFNvIHdoZW4gcmlnaHQgaXMgc3BlY3VsYXRlZCBhcyBTcGVjT2JqZWN0LCBUb1ByaW1p
dGl2ZShTcGVjT2JqZWN0KSBpcyBzcGVjdWxhdGVkIGFzIFNwZWNTdHJpbmcuCisgICAgICAgIEl0
IGxlYWRzIFRvU3RyaW5nIHRvIGJlY29tZSBJZGVudGl0eSB3aXRoIGEgc3BlY3VsYXRlZCB0eXBl
IGNoZWNrLgorCisgICAgICAgIEhvd2V2ZXIsIFRvUHJpbWl0aXZlIGFuZCBUb1N0cmluZyBhcmUg
b3JpZ2luYXRlZCBmcm9tIHRoZSBzYW1lIGJ5dGVjb2RlLiBBbmQgVG9QcmltaXRpdmUgbWF5IGhh
dmUKKyAgICAgICAgYW4gb2JzZXJ2YWJsZSBzaWRlIGVmZmVjdCB3aGVuIHRoZSBnaXZlbiBwYXJh
bWV0ZXIgaXMgYW4gb2JqZWN0IChjYWxsaW5nIG9iamVjdC57dG9TdHJpbmcsdmFsdWVPZn0pLgor
CisgICAgICAgIFNvIHdoZW4gb2JqZWN0LnRvU3RyaW5nKCkgcmV0dXJucyBhIG51bWJlciAoaXQg
aXMgYWxsb3dlZCBpbiB0aGUgRVMgc3BlYyksIFRvUHJpbWl0aXZlIHBlcmZvcm1zCisgICAgICAg
IG9ic2VydmFibGUgYG9iamVjdC50b1N0cmluZygpYCBjYWxsaW5nLiBCdXQgVG9TdHJpbmcgaXMg
Y29udmVydGVkIGludG8gYSBzcGVjdWxhdGVkIHR5cGUgY2hlY2sgZm9yCisgICAgICAgIFNwZWNT
dHJpbmcgYW5kIGl0IHJhaXNlcyBPU1IgZXhpdC4gQW5kIHdlIGV4aXQgdG8gdGhlIG9yaWdpbmFs
IFZhbHVlQWRkJ3MgYnl0ZWNvZGUgcG9zaXRpb24gYW5kCisgICAgICAgIGl0IHJlZHVuZGFudGx5
IHBlcmZvcm1zIGFuIG9ic2VydmFibGUgVG9QcmltaXRpdmUgZXhlY3V0aW9uLgorCisgICAgICAg
IFRvIGZpeCB0aGlzLCB0aGlzIHBhdGNoIGF2b2lkIGZpeGluZyB1cCBmb3IgbmV3bHkgaW50cm9k
dWNlZCBUb1N0cmluZyBub2RlLgorICAgICAgICBTaW5jZSBmaXggdXAgcGhhc2UgaXMgbm90IGl0
ZXJhdGVkIHJlcGVhdGVkbHksIGJ5IGF2b2lkaW5nIGZpeGluZyB1cCB3aGVuIGdlbmVyYXRpbmcg
dGhlIG5vZGUsCisgICAgICAgIHdlIGNhbiBhdm9pZCBjb252ZXJzaW9uIGZyb20gVG9TdHJpbmcg
dG8gQ2hlY2suCisKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Rml4dXBQaGFzZTo6YXR0ZW1wdFRvTWFrZUZhc3RTdHJpbmdBZGQpOgorICAgICAg
ICAqIHRlc3RzL3N0cmVzcy90b3ByaW1pdGl2ZS1zcGVjdWxhdGVkLXR5cGVzLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHJhdyk6CisgICAgICAgIChDb3VudGVyKToK
KwogMjAxNS0wNi0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IEZUTCBzaG91bGQgZWxpbWluYXRlIGFycmF5IGJvdW5kcyBjaGVja3MgaW4gbG9vcHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IDE1YWU4ZjY4M2Fh
ZjRjOTM0YWNmNGJiYThkOWVlN2E2MTViMDI2OWUuLjg3MjI3NWRiYTA4ZjFhMmY4NGVlZDY4NTU3
YmExYTQwNWU5Y2FhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcApAQCAtMTQ4Miw4ICsxNDgyLDEyIEBAIGNsYXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMg
UGhhc2UgewogICAgICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrLCBTcGVjU3RyaW5nLCBUb1N0
cmluZywgbm9kZS0+b3JpZ2luLCBFZGdlKHRvUHJpbWl0aXZlKSk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGZpeHVwVG9QcmltaXRpdmUodG9QcmltaXRpdmUpOwotICAgICAgICAgICAgZml4
dXBUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9yKHRvU3RyaW5nKTsKLSAgICAgICAgICAg
IAorCisgICAgICAgICAgICAvLyBEb24ndCBmaXggdXAgVG9TdHJpbmcuIFRvU3RyaW5nIGFuZCBU
b1ByaW1pdGl2ZSBhcmUgb3JpZ2luYXRlZCBmcm9tIHRoZSBzYW1lIGJ5dGVjb2RlIGFuZAorICAg
ICAgICAgICAgLy8gVG9QcmltaXRpdmUgbWF5IGhhdmUgYW4gb2JzZXJ2YWJsZSBzaWRlIGVmZmVj
dC4gVG9TdHJpbmcgc2hvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgaW50byBDaGVjaworICAgICAgICAg
ICAgLy8gd2l0aCBzcGVjdWxhdGl2ZSB0eXBlIGNoZWNrIGJlY2F1c2UgT1NSIGV4aXQgcmVwcm9k
dWNlIGFuIG9ic2VydmFibGUgc2lkZSBlZmZlY3QgZG9uZSBpbgorICAgICAgICAgICAgLy8gVG9Q
cmltaXRpdmUuCisKICAgICAgICAgICAgIHJpZ2h0LnNldE5vZGUodG9TdHJpbmcpOwogICAgICAg
ICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy90b3ByaW1pdGl2ZS1zcGVjdWxhdGVkLXR5cGVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy90b3ByaW1pdGl2ZS1zcGVjdWxhdGVkLXR5cGVzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjNhMThhMTkxNDE0NTZhODlmYmEzN2I2YWQ1ZTkyZTZkYjliYTUyODQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RvcHJpbWl0aXZlLXNw
ZWN1bGF0ZWQtdHlwZXMuanMKQEAgLTAsMCArMSwyNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0
dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIEpTT04uc3RyaW5naWZ5KGFjdHVhbCkpOwor
fQorCitmdW5jdGlvbiByYXcoYXJyYXkpIHsKKyAgICB2YXIgcmVzdWx0ID0gJyc7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7ICsraSkgeworICAgICAgICByZXN1bHQgKz0g
YXJyYXlbaV07CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIENvdW50
ZXIoKSB7CisgICAgcmV0dXJuIHsKKyAgICAgICAgY291bnQ6IDAsCisgICAgICAgIHRvU3RyaW5n
KCkgeworICAgICAgICAgICAgLy8gUmV0dXJuIGEgbnVtYmVyIGV2ZW4gaWYgdGhlICJ0b1N0cmlu
ZyIgbWV0aG9kLgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuY291bnQrKzsKKyAgICAgICAgfQor
ICAgIH07Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciBj
ID0gQ291bnRlcigpOworICAgIHNob3VsZEJlKHJhdyhbYywgY10pLCAiMDEiKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255010</attachid>
            <date>2015-06-17 02:52:14 -0700</date>
            <delta_ts>2015-06-18 16:45:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145820-20150617185138.patch</filename>
            <type>text/plain</type>
            <size>3928</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZDZkZjQ5MzE0NmUxZjJiNGIxMjA3NTdiODY0NWQzZTkxZmFlMzAzLi4wZTA0MjIxMDkwZmQ5OTM1
OTYxOTdkMTJjYzM5ZGM0N2VkNjY2NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAxNS0wNi0xNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXSBBdm9pZCBPU1IgZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHN0
cmluZyBjb25jYXRlbmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDU4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBERkcgYXR0ZW1wdCB0byBjb21waWxlIFZhbHVlQWRkIHdpdGggU3RyaW5nIHR5
cGUgaW50byBNYWtlUm9wZShsZWZ0LCBUb1N0cmluZyhUb1ByaW1pdGl2ZShyaWdodCkpKS4KKwor
ICAgICAgICBTbyB3aGVuIHJpZ2h0IGlzIHNwZWN1bGF0ZWQgYXMgU3BlY09iamVjdCwgVG9Qcmlt
aXRpdmUoU3BlY09iamVjdCkgaXMgc3BlY3VsYXRlZCBhcyBTcGVjU3RyaW5nLgorICAgICAgICBJ
dCBsZWFkcyBUb1N0cmluZyB0byBiZWNvbWUgSWRlbnRpdHkgd2l0aCBhIHNwZWN1bGF0ZWQgdHlw
ZSBjaGVjay4KKworICAgICAgICBIb3dldmVyLCBUb1ByaW1pdGl2ZSBhbmQgVG9TdHJpbmcgYXJl
IG9yaWdpbmF0ZWQgZnJvbSB0aGUgc2FtZSBieXRlY29kZS4gQW5kIFRvUHJpbWl0aXZlIG1heSBo
YXZlCisgICAgICAgIGFuIG9ic2VydmFibGUgc2lkZSBlZmZlY3Qgd2hlbiB0aGUgZ2l2ZW4gcGFy
YW1ldGVyIGlzIGFuIG9iamVjdCAoY2FsbGluZyBvYmplY3Que3RvU3RyaW5nLHZhbHVlT2Z9KS4K
KworICAgICAgICBTbyB3aGVuIG9iamVjdC50b1N0cmluZygpIHJldHVybnMgYSBudW1iZXIgKGl0
IGlzIGFsbG93ZWQgaW4gdGhlIEVTIHNwZWMpLCBUb1ByaW1pdGl2ZSBwZXJmb3JtcworICAgICAg
ICBvYnNlcnZhYmxlIGBvYmplY3QudG9TdHJpbmcoKWAgY2FsbGluZy4gQnV0IFRvU3RyaW5nIGlz
IGNvbnZlcnRlZCBpbnRvIGEgc3BlY3VsYXRlZCB0eXBlIGNoZWNrIGZvcgorICAgICAgICBTcGVj
U3RyaW5nIGFuZCBpdCByYWlzZXMgT1NSIGV4aXQuIEFuZCB3ZSBleGl0IHRvIHRoZSBvcmlnaW5h
bCBWYWx1ZUFkZCdzIGJ5dGVjb2RlIHBvc2l0aW9uIGFuZAorICAgICAgICBpdCByZWR1bmRhbnRs
eSBwZXJmb3JtcyBhbiBvYnNlcnZhYmxlIFRvUHJpbWl0aXZlIGV4ZWN1dGlvbi4KKworICAgICAg
ICBUbyBmaXggdGhpcywgdGhpcyBwYXRjaCBhdm9pZCBmaXhpbmcgdXAgZm9yIG5ld2x5IGludHJv
ZHVjZWQgVG9TdHJpbmcgbm9kZS4KKyAgICAgICAgU2luY2UgZml4IHVwIHBoYXNlIGlzIG5vdCBp
dGVyYXRlZCByZXBlYXRlZGx5LCBieSBhdm9pZGluZyBmaXhpbmcgdXAgd2hlbiBnZW5lcmF0aW5n
IHRoZSBub2RlLAorICAgICAgICB3ZSBjYW4gYXZvaWQgY29udmVyc2lvbiBmcm9tIFRvU3RyaW5n
IHRvIENoZWNrLgorCisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkZpeHVwUGhhc2U6OmF0dGVtcHRUb01ha2VGYXN0U3RyaW5nQWRkKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qczogQWRkZWQu
CisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChyYXcpOgorICAgICAgICAoQ291bnRlcik6
CisKIDIwMTUtMDYtMDkgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGVEwgc2hvdWxkIGVsaW1pbmF0ZSBhcnJheSBib3VuZHMgY2hlY2tzIGluIGxvb3BzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCAxNWFlOGY2ODNh
YWY0YzkzNGFjZjRiYmE4ZDllZTdhNjE1YjAyNjllLi44NzIyNzVkYmEwOGYxYTJmODRlZWQ2ODU1
N2JhMWE0MDVlOWNhYTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAKQEAgLTE0ODIsOCArMTQ4MiwxMiBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICBtX2luZGV4SW5CbG9jaywgU3BlY1N0cmluZywgVG9T
dHJpbmcsIG5vZGUtPm9yaWdpbiwgRWRnZSh0b1ByaW1pdGl2ZSkpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBmaXh1cFRvUHJpbWl0aXZlKHRvUHJpbWl0aXZlKTsKLSAgICAgICAgICAgIGZp
eHVwVG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvcih0b1N0cmluZyk7Ci0gICAgICAgICAg
ICAKKworICAgICAgICAgICAgLy8gRG9uJ3QgZml4IHVwIFRvU3RyaW5nLiBUb1N0cmluZyBhbmQg
VG9QcmltaXRpdmUgYXJlIG9yaWdpbmF0ZWQgZnJvbSB0aGUgc2FtZSBieXRlY29kZSBhbmQKKyAg
ICAgICAgICAgIC8vIFRvUHJpbWl0aXZlIG1heSBoYXZlIGFuIG9ic2VydmFibGUgc2lkZSBlZmZl
Y3QuIFRvU3RyaW5nIHNob3VsZCBub3QgYmUgY29udmVydGVkIGludG8gQ2hlY2sKKyAgICAgICAg
ICAgIC8vIHdpdGggc3BlY3VsYXRpdmUgdHlwZSBjaGVjayBiZWNhdXNlIE9TUiBleGl0IHJlcHJv
ZHVjZSBhbiBvYnNlcnZhYmxlIHNpZGUgZWZmZWN0IGRvbmUgaW4KKyAgICAgICAgICAgIC8vIFRv
UHJpbWl0aXZlLgorCiAgICAgICAgICAgICByaWdodC5zZXROb2RlKHRvU3RyaW5nKTsKICAgICAg
ICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvdG9wcmltaXRpdmUtc3BlY3VsYXRlZC10eXBlcy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zYTE4YTE5MTQxNDU2YTg5ZmJhMzdiNmFkNWU5MmU2ZGI5YmE1Mjg0Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90b3ByaW1pdGl2ZS1z
cGVjdWxhdGVkLXR5cGVzLmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFj
dHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBKU09OLnN0cmluZ2lmeShhY3R1YWwpKTsK
K30KKworZnVuY3Rpb24gcmF3KGFycmF5KSB7CisgICAgdmFyIHJlc3VsdCA9ICcnOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9
IGFycmF5W2ldOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBDb3Vu
dGVyKCkgeworICAgIHJldHVybiB7CisgICAgICAgIGNvdW50OiAwLAorICAgICAgICB0b1N0cmlu
ZygpIHsKKyAgICAgICAgICAgIC8vIFJldHVybiBhIG51bWJlciBldmVuIGlmIHRoZSAidG9TdHJp
bmciIG1ldGhvZC4KKyAgICAgICAgICAgIHJldHVybiB0aGlzLmNvdW50Kys7CisgICAgICAgIH0K
KyAgICB9OworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpIHsKKyAgICB2YXIg
YyA9IENvdW50ZXIoKTsKKyAgICBzaG91bGRCZShyYXcoW2MsIGNdKSwgIjAxIik7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>