<?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>144257</bug_id>
          
          <creation_ts>2015-04-27 03:11:28 -0700</creation_ts>
          <short_desc>REGRESSION (r183373): ASSERT failed in wtf/SHA1.h</short_desc>
          <delta_ts>2015-04-29 10:46:14 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=144339</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144263</blocked>
    
    <blocked>142691</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>joepeck</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088979</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-27 03:11:28 -0700</bug_when>
    <thetext>https://build.webkit.org/builders/Apple%20Yosemite%20Debug%20JSC%20%28Tests%29/builds/1036/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088984</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-27 03:20:23 -0700</bug_when>
    <thetext>OK. I&apos;ve found the issue.
SHA1 is used to calculate CodeBlockHash.
To calculate hash value, we pass the source code UTF-8 string to SHA1::addBytes.
However, in SHA1::addBytes, there&apos;s assertion `input.length() == strlen(string)`.

In the template-literal-syntax.js, we perform `eval` with the script contains &quot;\0&quot;. As the result, `strlen(string)` accidentally shortened by the contained &quot;\0&quot;, and assertion fails.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088990</commentid>
    <comment_count>2</comment_count>
      <attachid>251733</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-27 03:47:52 -0700</bug_when>
    <thetext>Created attachment 251733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088991</commentid>
    <comment_count>3</comment_count>
      <attachid>251733</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-04-27 04:03:04 -0700</bug_when>
    <thetext>Comment on attachment 251733
Patch

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

The fix looks good to me, but I&apos;m not sure if the source code can 
contain null characters, so I would let JSC experts to review this fix.

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        So when performing `strlen` on the source code&apos;s CString, it returnes the incorrect length.

typo: returnes -&gt; returns

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        It allow the given bytes to contain a null character.

typo: allow -&gt; allows</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088994</commentid>
    <comment_count>4</comment_count>
      <attachid>251734</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-27 04:06:25 -0700</bug_when>
    <thetext>Created attachment 251734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089038</commentid>
    <comment_count>5</comment_count>
      <attachid>251734</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-27 09:33:28 -0700</bug_when>
    <thetext>Comment on attachment 251734
Patch

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

&gt; Source/JavaScriptCore/bytecode/CodeBlockHash.cpp:47
&gt; -    sha1.addBytes(sourceCode.toUTF8());
&gt; +    CString sourceCodeBytes = sourceCode.toUTF8();
&gt; +    // Since the source code string can contain a null character,
&gt; +    // pass the bytes and length explicitly instead of passing CString as an argument.
&gt; +    sha1.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(sourceCodeBytes.data()), sourceCodeBytes.length());

This should be fixed by removing the incorrect assertion from SHA1::addBytes, not by changing the code here at all. That function already has the correct algorithm, it just has a misguided assertion.

But at some point, this code should be made be better in other ways. We don’t need a single copy of all the data in UTF-8 just so we can pass it to the SHA1 algorithm; we just need a view of it in chunks that we can pass in. The best API for something like that is not something that allocated a UTF8 string, but rather a streaming decoder that can give us ranges of bytes in UTF-8 form. This enables two optimizations: 1) if the string is stored in an 8-bit buffer and is all ASCII then we can just compute the SHA1 in place without allocating any memory at all; 2) we don’t need to heap allocate a single object big enough to translate the entire thing to UTF-8. Instead we can use a fixed size buffer and not bother with heap allocations at all. An idiom I like to use for this is a “chunky iterator” which returns points to subsequent runs of UTF-8 bytes. The caller decides how big the runs are.

I think SourceCode and String need something like this. It makes no sense to copy all the source code into a large memory buffer just to compute an SHA1 of it. One way to do it is to make a function that takes a std::function that gets a pointer and a length to UTF-8 bytes that gets called repeatedly until the entire string is iterated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089058</commentid>
    <comment_count>6</comment_count>
      <attachid>251734</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-27 10:08:37 -0700</bug_when>
    <thetext>Comment on attachment 251734
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlockHash.cpp:47
&gt;&gt; +    sha1.addBytes(reinterpret_cast&lt;const uint8_t*&gt;(sourceCodeBytes.data()), sourceCodeBytes.length());
&gt; 
&gt; This should be fixed by removing the incorrect assertion from SHA1::addBytes, not by changing the code here at all. That function already has the correct algorithm, it just has a misguided assertion.
&gt; 
&gt; But at some point, this code should be made be better in other ways. We don’t need a single copy of all the data in UTF-8 just so we can pass it to the SHA1 algorithm; we just need a view of it in chunks that we can pass in. The best API for something like that is not something that allocated a UTF8 string, but rather a streaming decoder that can give us ranges of bytes in UTF-8 form. This enables two optimizations: 1) if the string is stored in an 8-bit buffer and is all ASCII then we can just compute the SHA1 in place without allocating any memory at all; 2) we don’t need to heap allocate a single object big enough to translate the entire thing to UTF-8. Instead we can use a fixed size buffer and not bother with heap allocations at all. An idiom I like to use for this is a “chunky iterator” which returns points to subsequent runs of UTF-8 bytes. The caller decides how big the runs are.
&gt; 
&gt; I think SourceCode and String need something like this. It makes no sense to copy all the source code into a large memory buffer just to compute an SHA1 of it. One way to do it is to make a function that takes a std::function that gets a pointer and a length to UTF-8 bytes that gets called repeatedly until the entire string is iterated.

You&apos;re completely right.
We should stream the decoded UTF-8 bytes into SHA1 instead of the current &quot;alloc, convert and use&quot; implementation.
I&apos;ve opened the new issue to implement it[1].

So in the meantime, to fix the debug builds, I&apos;ll upload the simple patch dropping the assertion in SHA1.

[1]: https://bugs.webkit.org/show_bug.cgi?id=144263</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089060</commentid>
    <comment_count>7</comment_count>
      <attachid>251754</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-27 10:17:11 -0700</bug_when>
    <thetext>Created attachment 251754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089144</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-27 12:54:08 -0700</bug_when>
    <thetext>CString is not a data buffer, so a CString object with a null byte is simply invalid. I don&apos;t think that the assertion is incorrect, the original patch looks a lot better to me.

We&apos;ve had enough hard to diagnose bugs caused by null bytes in CStrings in the past to make me want to disallow this in every way possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089182</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-27 14:09:46 -0700</bug_when>
    <thetext>Committed r183421: &lt;http://trac.webkit.org/changeset/183421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089183</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2015-04-27 14:10:33 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r183421: &lt;http://trac.webkit.org/changeset/183421&gt;

I&apos;ve skipped three tests failing on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089211</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-27 14:58:08 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; CString is not a data buffer, so a CString object with a null byte is simply
&gt; invalid.

I don’t agree. That’s not the intent of the CString class, although perhaps it should be in the future.

&gt; I don&apos;t think that the assertion is incorrect, the original patch
&gt; looks a lot better to me.

We should use Vector&lt;char&gt; for these purposes if a CString can’t have a null byte.

&gt; We&apos;ve had enough hard to diagnose bugs caused by null bytes in CStrings in
&gt; the past to make me want to disallow this in every way possible.

OK, but that is a statement about the future, not about the present.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089260</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-27 16:33:52 -0700</bug_when>
    <thetext>&gt; OK, but that is a statement about the future, not about the present.

CString is documented like this:

// A container for a null-terminated char array supporting copy-on-write
// assignment.  The contained char array may be null.

A null terminated string with null bytes in the middle does not really make sense. And in fact, we allow CStrings whose length is bigger than string length, because null termination is the truth.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089270</commentid>
    <comment_count>13</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-04-27 16:46:32 -0700</bug_when>
    <thetext>Don&apos;t forget to unskip the tests when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089479</commentid>
    <comment_count>14</comment_count>
      <attachid>251842</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-28 06:09:55 -0700</bug_when>
    <thetext>Created attachment 251842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089481</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-28 06:10:36 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; OK, but that is a statement about the future, not about the present.
&gt; 
&gt; CString is documented like this:
&gt; 
&gt; // A container for a null-terminated char array supporting copy-on-write
&gt; // assignment.  The contained char array may be null.
&gt; 
&gt; A null terminated string with null bytes in the middle does not really make
&gt; sense. And in fact, we allow CStrings whose length is bigger than string
&gt; length, because null termination is the truth.

Thank you for your comment.

&gt; And in fact, we allow CStrings whose length is bigger than string length, because null termination is the truth.

So, it seems that the current assertion `input.length() == strlen(string)` is problematic anyway.

OK, so I propose the following fix,

1. Dropping SHA1::addBytes(CString) interface.

SHA1 should feed byte streams (bytes). So the interface accepting CString is not good I think. And if CString should not contain a NULL character, we should insert assertions into CString instead of SHA1::addBytes(CString). Seeing the code, CodeBlockHash is the only user of this.

2. Add StringImpl::utf8BufferForRange -&gt; Vector&lt;char&gt; function.

It returns Vector instead of CString.
And we implement utf8ForRange based on this function.

3. Use returned buffer vector in CodeBlockHash.

Use a buffer vector instead of CString because CString should not contain a null character.

And I&apos;ve upload the revised patch. darin@ &amp; ap@, could you review this once more?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089482</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-28 06:11:56 -0700</bug_when>
    <thetext>I&apos;ve get an TestWebKitAPI build error. Just dropping this test (SHA1::addBytes(CString)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089484</commentid>
    <comment_count>17</comment_count>
      <attachid>251843</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-28 06:28:13 -0700</bug_when>
    <thetext>Created attachment 251843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089485</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-28 06:30:10 -0700</bug_when>
    <thetext>And unskip template literal tests...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089488</commentid>
    <comment_count>19</comment_count>
      <attachid>251844</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-28 06:31:46 -0700</bug_when>
    <thetext>Created attachment 251844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089489</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-28 06:33:12 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Don&apos;t forget to unskip the tests when landing.

Thank you! Now win32 issue is also fixed by peavo@
http://trac.webkit.org/changeset/183465

So unskipping the tests in the updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089522</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-28 08:24:22 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; OK, but that is a statement about the future, not about the present.
&gt; 
&gt; CString is documented like this:
&gt; 
&gt; // A container for a null-terminated char array supporting copy-on-write
&gt; // assignment.  The contained char array may be null.
&gt; 
&gt; A null terminated string with null bytes in the middle does not really make
&gt; sense. And in fact, we allow CStrings whose length is bigger than string
&gt; length, because null termination is the truth.

If this was actually CString’s contract, then CString::length function would have the strlen assertion, not SHA1::addBytes.

We allow CString with null characters in them, and they can be used at call sites that don’t care about null character termination at all and are just using CString as a holder for a string of 8-bit characters. If we didn’t allow this use, the String::UTF8 would need to fail when decoding a null character rather than successfully a CString with an embedded null character.

I am happy for us to make this change and forbid this usage, but despite the comment you cite, this is not the full truth about what CString is today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089523</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-04-28 08:28:52 -0700</bug_when>
    <thetext>I do see, however, that there are some CString functions that do not support the strings with embedded null characters the way I thought they did.

CString functions that work properly with embedded null characters:

    data
    mutableData
    length
    isNull
    isSafeToSendToAnotherThread
    buffer
    isHashTableDeletedValue
    == (when both sides are CString)

Functions that do not:

    hash
    &lt;
    == (when one side is a CString and the other is a const char*)

It’s clear that we should either forbid the embedded null characters entirely, or make the functions all support them.

Alexey, lets figure out what we want to do about this and file a new bug about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089611</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-28 10:52:00 -0700</bug_when>
    <thetext>Thank you for the helpful analysis! I filed bug 144339 to track this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089988</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-29 08:17:41 -0700</bug_when>
    <thetext>Changing CString not to contain null character needs large changes and it is now handled in bug 144339.
So in this issue, I suggest the simplest solution; just dropping the assertion.
If it&apos;s not good because CString should not contain a null-character, I think it will be fixed in bug 144339.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1089994</commentid>
    <comment_count>25</comment_count>
      <attachid>251951</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-29 08:33:40 -0700</bug_when>
    <thetext>Created attachment 251951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090064</commentid>
    <comment_count>26</comment_count>
      <attachid>251951</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-29 10:46:09 -0700</bug_when>
    <thetext>Comment on attachment 251951
Patch

Clearing flags on attachment: 251951

Committed r183559: &lt;http://trac.webkit.org/changeset/183559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090065</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-29 10:46:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251733</attachid>
            <date>2015-04-27 03:47:52 -0700</date>
            <delta_ts>2015-04-27 04:06:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144257-20150427194644.patch</filename>
            <type>text/plain</type>
            <size>3153</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZjFiYjIwMzNlYmY2NzU2ZWIxMDZlZmI0MzcxYjIxNDUwZjVhOGI4Li45MmU2NDEwY2EwMmI2Mjk3
MDg4NWZjMDQ2MTFkMTU1NWMxZWNkNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0wNC0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3
dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTSEExIGlzIHVzZWQgdG8gY2FsY3VsYXRlIENvZGVCbG9ja0hhc2guCisgICAgICAgIFRvIGNh
bGN1bGF0ZSBoYXNoIHZhbHVlLCB3ZSBwYXNzIHRoZSBzb3VyY2UgY29kZSBVVEYtOCBDU3RyaW5n
IHRvIFNIQTE6OmFkZEJ5dGVzLgorICAgICAgICBIb3dldmVyLCB0aGUgc291cmNlIGNvZGUgY2Fu
IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFNvIHdoZW4gcGVyZm9ybWluZyBgc3Ry
bGVuYCBvbiB0aGUgc291cmNlIGNvZGUncyBDU3RyaW5nLCBpdCByZXR1cm5lcyB0aGUgaW5jb3Jy
ZWN0IGxlbmd0aC4KKyAgICAgICAgSW4gU0hBMTo6YWRkQnl0ZXMsIHRoZXJlJ3MgYXNzZXJ0aW9u
IGBpbnB1dC5sZW5ndGgoKSA9PSBzdHJsZW4oc3RyaW5nKWAgYW5kIGl0IGZhaWxzLgorCisgICAg
ICAgIEluIHRoZSB0ZW1wbGF0ZS1saXRlcmFsLXN5bnRheC5qcywgd2UgcGVyZm9ybSBgZXZhbGAg
d2l0aCB0aGUgc2NyaXB0IGNvbnRhaW5zICJcMCIuCisgICAgICAgIEFzIHRoZSByZXN1bHQsIGBz
dHJsZW4oc3RyaW5nKWAgYWNjaWRlbnRhbGx5IHNob3J0ZW5lZCBieSB0aGUgY29udGFpbmVkICJc
MCIsIGFuZCBhc3NlcnRpb24gZmFpbHMuCisKKyAgICAgICAgSW5zdGVhZCBvZiBwYXNzaW5nIENT
dHJpbmcgKG51bGwtdGVybWluYXRlZCBDIHN0cmluZykgdG8gU0hBMTo6YWRkQnl0ZXMsCisgICAg
ICAgIHdlIHBhc3MgdGhlIGJ5dGVzIGFuZCBsZW5ndGggZXhwbGljaXRseS4KKyAgICAgICAgSXQg
YWxsb3cgdGhlIGdpdmVuIGJ5dGVzIHRvIGNvbnRhaW4gYSBudWxsIGNoYXJhY3Rlci4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2tIYXNoOjpDb2RlQmxvY2tIYXNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZXZhbC1zY3Jp
cHQtY29udGFpbnMtbnVsbC1jaGFyYWN0ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQ2xhc3MgYm9keSBlbmRpbmcgd2l0aCBhIHNlbWljb2xvbiB0
aHJvd3MgYSBTeW50YXhFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0hhc2guY3BwCmluZGV4IDg3YzA5MmY2NGE4OTEzNjQyNjExODBlNjUyYTk0N2Rm
ZTNkZTk2ZTUuLmNkM2NlZDQxNjA5ZDkzNDA1MjE2ZWE1MzJhOWU2YzkyOTI0MjI3YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKQEAg
LTQxLDcgKzQxLDEwIEBACiAgICAgOiBtX2hhc2goMCkKIHsKICAgICBTSEExIHNoYTE7Ci0gICAg
c2hhMS5hZGRCeXRlcyhzb3VyY2VDb2RlLnRvVVRGOCgpKTsKKyAgICBDU3RyaW5nIHNvdXJjZUNv
ZGVCeXRlcyA9IHNvdXJjZUNvZGUudG9VVEY4KCk7CisgICAgLy8gU2luY2UgdGhlIHNvdXJjZSBj
b2RlIHN0cmluZyBjYW4gY29udGFpbiBhIG51bGwgY2hhcmFjdGVyLAorICAgIC8vIHBhc3MgdGhl
IGJ5dGVzIGFuZCBsZW5ndGggZXhwbGljaXRseSBpbnN0ZWFkIG9mIHBhc3NpbmcgQ1N0cmluZyBh
cyBhbiBhcmd1bWVudC4KKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNvdXJjZUNvZGVCeXRlcy5kYXRhKCkpLCBzb3VyY2VDb2RlQnl0ZXMubGVuZ3Ro
KCkpOwogICAgIFNIQTE6OkRpZ2VzdCBkaWdlc3Q7CiAgICAgc2hhMS5jb21wdXRlSGFzaChkaWdl
c3QpOwogICAgIG1faGFzaCArPSBkaWdlc3RbMF0gfCAoZGlnZXN0WzFdIDw8IDgpIHwgKGRpZ2Vz
dFsyXSA8PCAxNikgfCAoZGlnZXN0WzNdIDw8IDI0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXZhbC1zY3JpcHQtY29udGFpbnMtbnVsbC1jaGFyYWN0
ZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNv
bnRhaW5zLW51bGwtY2hhcmFjdGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxOTIxNWRhNDljMjdkYmI0Y2Jl
NmQ5ZjdkYTA1ZWZkNWQ0YjNlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFjdGVyLmpz
CkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
YWQgdmFsdWU6ICIgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHNob3Vs
ZEJlKGV2YWwoIihgXDBgKSIpLCAiXDAiKTsKKyAgICBzaG91bGRCZShldmFsKCIoJ1wwJykiKSwg
IlwwIik7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKQorICAgIHRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251734</attachid>
            <date>2015-04-27 04:06:25 -0700</date>
            <delta_ts>2015-04-27 10:17:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144257-20150427200517.patch</filename>
            <type>text/plain</type>
            <size>3153</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZjFiYjIwMzNlYmY2NzU2ZWIxMDZlZmI0MzcxYjIxNDUwZjVhOGI4Li4xMGQyZTAzOWY1NzU3MmY2
MDU1ZGNjOGM2N2NjNzRhNTgyNWY2NzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0wNC0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3
dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTSEExIGlzIHVzZWQgdG8gY2FsY3VsYXRlIENvZGVCbG9ja0hhc2guCisgICAgICAgIFRvIGNh
bGN1bGF0ZSBoYXNoIHZhbHVlLCB3ZSBwYXNzIHRoZSBzb3VyY2UgY29kZSBVVEYtOCBDU3RyaW5n
IHRvIFNIQTE6OmFkZEJ5dGVzLgorICAgICAgICBIb3dldmVyLCB0aGUgc291cmNlIGNvZGUgY2Fu
IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFNvIHdoZW4gcGVyZm9ybWluZyBgc3Ry
bGVuYCBvbiB0aGUgc291cmNlIGNvZGUncyBDU3RyaW5nLCBpdCByZXR1cm5zIHRoZSBpbmNvcnJl
Y3QgbGVuZ3RoLgorICAgICAgICBJbiBTSEExOjphZGRCeXRlcywgdGhlcmUncyBhc3NlcnRpb24g
YGlucHV0Lmxlbmd0aCgpID09IHN0cmxlbihzdHJpbmcpYCBhbmQgaXQgZmFpbHMuCisKKyAgICAg
ICAgSW4gdGhlIHRlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzLCB3ZSBwZXJmb3JtIGBldmFsYCB3
aXRoIHRoZSBzY3JpcHQgY29udGFpbnMgIlwwIi4KKyAgICAgICAgQXMgdGhlIHJlc3VsdCwgYHN0
cmxlbihzdHJpbmcpYCBhY2NpZGVudGFsbHkgc2hvcnRlbmVkIGJ5IHRoZSBjb250YWluZWQgIlww
IiwgYW5kIGFzc2VydGlvbiBmYWlscy4KKworICAgICAgICBJbnN0ZWFkIG9mIHBhc3NpbmcgQ1N0
cmluZyAobnVsbC10ZXJtaW5hdGVkIEMgc3RyaW5nKSB0byBTSEExOjphZGRCeXRlcywKKyAgICAg
ICAgd2UgcGFzcyB0aGUgYnl0ZXMgYW5kIGxlbmd0aCBleHBsaWNpdGx5LgorICAgICAgICBJdCBh
bGxvd3MgdGhlIGdpdmVuIGJ5dGVzIHRvIGNvbnRhaW4gYSBudWxsIGNoYXJhY3Rlci4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2tIYXNoOjpDb2RlQmxvY2tIYXNoKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZXZhbC1zY3Jp
cHQtY29udGFpbnMtbnVsbC1jaGFyYWN0ZXIuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdCk6CisKIDIwMTUtMDQtMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQ2xhc3MgYm9keSBlbmRpbmcgd2l0aCBhIHNlbWljb2xvbiB0
aHJvd3MgYSBTeW50YXhFcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9ja0hhc2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9ja0hhc2guY3BwCmluZGV4IDg3YzA5MmY2NGE4OTEzNjQyNjExODBlNjUyYTk0N2Rm
ZTNkZTk2ZTUuLmNkM2NlZDQxNjA5ZDkzNDA1MjE2ZWE1MzJhOWU2YzkyOTI0MjI3YjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKQEAg
LTQxLDcgKzQxLDEwIEBACiAgICAgOiBtX2hhc2goMCkKIHsKICAgICBTSEExIHNoYTE7Ci0gICAg
c2hhMS5hZGRCeXRlcyhzb3VyY2VDb2RlLnRvVVRGOCgpKTsKKyAgICBDU3RyaW5nIHNvdXJjZUNv
ZGVCeXRlcyA9IHNvdXJjZUNvZGUudG9VVEY4KCk7CisgICAgLy8gU2luY2UgdGhlIHNvdXJjZSBj
b2RlIHN0cmluZyBjYW4gY29udGFpbiBhIG51bGwgY2hhcmFjdGVyLAorICAgIC8vIHBhc3MgdGhl
IGJ5dGVzIGFuZCBsZW5ndGggZXhwbGljaXRseSBpbnN0ZWFkIG9mIHBhc3NpbmcgQ1N0cmluZyBh
cyBhbiBhcmd1bWVudC4KKyAgICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNvdXJjZUNvZGVCeXRlcy5kYXRhKCkpLCBzb3VyY2VDb2RlQnl0ZXMubGVuZ3Ro
KCkpOwogICAgIFNIQTE6OkRpZ2VzdCBkaWdlc3Q7CiAgICAgc2hhMS5jb21wdXRlSGFzaChkaWdl
c3QpOwogICAgIG1faGFzaCArPSBkaWdlc3RbMF0gfCAoZGlnZXN0WzFdIDw8IDgpIHwgKGRpZ2Vz
dFsyXSA8PCAxNikgfCAoZGlnZXN0WzNdIDw8IDI0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXZhbC1zY3JpcHQtY29udGFpbnMtbnVsbC1jaGFyYWN0
ZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNv
bnRhaW5zLW51bGwtY2hhcmFjdGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxOTIxNWRhNDljMjdkYmI0Y2Jl
NmQ5ZjdkYTA1ZWZkNWQ0YjNlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFjdGVyLmpz
CkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJi
YWQgdmFsdWU6ICIgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHNob3Vs
ZEJlKGV2YWwoIihgXDBgKSIpLCAiXDAiKTsKKyAgICBzaG91bGRCZShldmFsKCIoJ1wwJykiKSwg
IlwwIik7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsg
KytpKQorICAgIHRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251754</attachid>
            <date>2015-04-27 10:17:11 -0700</date>
            <delta_ts>2015-04-28 06:09:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144257-20150428021603.patch</filename>
            <type>text/plain</type>
            <size>3986</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
ZjFiYjIwMzNlYmY2NzU2ZWIxMDZlZmI0MzcxYjIxNDUwZjVhOGI4Li42NzEzYTdiMTExM2NhMjU2
NmJkM2M0ZDEzNzRhYWJjZWI1NTcyMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNS0wNC0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3
dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTSEExIGlzIHVzZWQgdG8gY2FsY3VsYXRlIENvZGVCbG9ja0hhc2guCisgICAgICAgIFRvIGNh
bGN1bGF0ZSBoYXNoIHZhbHVlLCB3ZSBwYXNzIHRoZSBzb3VyY2UgY29kZSBVVEYtOCBDU3RyaW5n
IHRvIFNIQTE6OmFkZEJ5dGVzLgorICAgICAgICBIb3dldmVyLCB0aGUgc291cmNlIGNvZGUgY2Fu
IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFNvIHdoZW4gcGVyZm9ybWluZyBgc3Ry
bGVuYCBvbiB0aGUgc291cmNlIGNvZGUncyBDU3RyaW5nLCBpdCByZXR1cm5zIHRoZSBpbmNvcnJl
Y3QgbGVuZ3RoLgorICAgICAgICBJbiBTSEExOjphZGRCeXRlcywgdGhlcmUncyBhc3NlcnRpb24g
YGlucHV0Lmxlbmd0aCgpID09IHN0cmxlbihzdHJpbmcpYCBhbmQgaXQgZmFpbHMuCisKKyAgICAg
ICAgSW4gdGhlIHRlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzLCB3ZSBwZXJmb3JtIGBldmFsYCB3
aXRoIHRoZSBzY3JpcHQgY29udGFpbnMgIlwwIi4KKyAgICAgICAgQXMgdGhlIHJlc3VsdCwgYHN0
cmxlbihzdHJpbmcpYCBhY2NpZGVudGFsbHkgc2hvcnRlbmVkIGJ5IHRoZSBjb250YWluZWQgIlww
IiwgYW5kIGFzc2VydGlvbiBmYWlscy4KKworICAgICAgICBUaGlzIGFzc2VydGlvbiBpcyBub3Qg
Y29ycmVjdCBiZWNhdXNlIFNIQTEgaW1wbGVtZW50YXRpb24gZG9lc24ndCByZXF1aXJlIHRoYXQg
YSBnaXZlbiBieXRlcworICAgICAgICBkb24ndCBjb250YWluIGEgbnVsbCBjaGFyYWN0ZXIuIFNv
IGp1c3QgZHJvcCB0aGUgYXNzZXJ0aW9uLgorCisgICAgICAgIEluIHRoZSBjdXJyZW50IGltcGxl
bWVudGF0aW9uLCB3ZSBvbmNlIGNvbnZlcnQgdGhlIGVudGlyZSBzb3VyY2UgY29kZSB0byB0aGUg
bmV3bHkgYWxsb2NhdGVkCisgICAgICAgIFVURi04IHN0cmluZyBhbmQgcGFzcyBpdCB0byB0aGUg
U0hBMSBwcm9jZXNzaW5nLiBIb3dldmVyLCB0aGlzIGlzIG1lbW9yeSBjb25zdW1pbmcuCisgICAg
ICAgIElkZWFsbHksIHdlIHNob3VsZCBzdHJlYW0gdGhlIGRlY29kZWQgYnl0ZXMgaW50byB0aGUg
U0hBMSBwcm9jZXNzaW5nIGl0ZXJhdGl2ZWx5LgorICAgICAgICBXZSdsbCBpbXBsZW1lbnQgaXQg
aW4gdGhlIHNlcGFyYXRlIHBhdGNoWzFdLgorCisgICAgICAgIFsxXTogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2MworCisgICAgICAgICogdGVzdHMvc3RyZXNz
L2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFjdGVyLmpzOiBBZGRlZC4KKyAgICAgICAg
KHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorCiAyMDE1LTA0LTI2ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIENsYXNzIGJvZHkgZW5kaW5nIHdpdGggYSBz
ZW1pY29sb24gdGhyb3dzIGEgU3ludGF4RXJyb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMjhmMmRkMTdkYTgxZjc3MjczZDU5
MGI3Nzk2ZjAyNTFmODliODU1Yi4uODQwYzg2Mjc4ZDE2NGQ3MDg0MGQyN2Q0N2RlMjFiNDNiNTc0
OWM3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNS0wNC0yNyAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNT
RVJUIGZhaWxlZCBpbiB3dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHd0Zi9TSEExLmg6CisgICAgICAgIChXVEY6OlNIQTE6OmFkZEJ5
dGVzKToKKwogMjAxNS0wNC0yNSAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV8zRF9SRU5ERVJJTkcgdG8gRU5BQkxFXzNEX1RS
QU5TRk9STVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
ZXZhbC1zY3JpcHQtY29udGFpbnMtbnVsbC1jaGFyYWN0ZXIuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFjdGVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxOTIxNWRhNDljMjdkYmI0Y2JlNmQ5ZjdkYTA1ZWZkNWQ0YjNlNmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2V2YWwt
c2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFjdGVyLmpzCkBAIC0wLDAgKzEsMTMgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWU6ICIgKyBhY3R1YWwpOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHNob3VsZEJlKGV2YWwoIihgXDBgKSIpLCAiXDAi
KTsKKyAgICBzaG91bGRCZShldmFsKCIoJ1wwJykiKSwgIlwwIik7Cit9Citub0lubGluZSh0ZXN0
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgIHRlc3QoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaCBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAppbmRl
eCA2MzM2NWNmMDA4ZjYxNmQ0NDFmZDJiMmU3YjUxNTE3MWIxYTNiMzg4Li4wMDliNDg0YWQ5YzE4
MGUyYjNiY2ZmNGViYjczYjVmMmJhM2VhNDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9T
SEExLmgKKysrIGIvU291cmNlL1dURi93dGYvU0hBMS5oCkBAIC01MiwxMSArNTIsNiBAQCBjbGFz
cyBTSEExIHsKICAgICB2b2lkIGFkZEJ5dGVzKGNvbnN0IENTdHJpbmcmIGlucHV0KQogICAgIHsK
ICAgICAgICAgY29uc3QgY2hhciogc3RyaW5nID0gaW5wdXQuZGF0YSgpOwotICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCB0aGUgY3JlYXRvciBvZiB0aGUgQ1N0cmluZyBkaWRuJ3QgbWFrZSB0aGUg
bWlzdGFrZQotICAgICAgICAvLyBvZiBmb3JjaW5nIGxlbmd0aCgpIHRvIGJlIHRoZSBzaXplIG9m
IHRoZSBidWZmZXIgdXNlZCB0byBjcmVhdGUgdGhlCi0gICAgICAgIC8vIHN0cmluZywgcHJpb3Ig
dG8gaW5zZXJ0aW5nIHRoZSBudWxsIHRlcm1pbmF0b3IgZWFybGllciBpbiB0aGUKLSAgICAgICAg
Ly8gc2VxdWVuY2UuCi0gICAgICAgIEFTU0VSVChpbnB1dC5sZW5ndGgoKSA9PSBzdHJsZW4oc3Ry
aW5nKSk7CiAgICAgICAgIGFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+
KHN0cmluZyksIGlucHV0Lmxlbmd0aCgpKTsKICAgICB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgYWRkQnl0ZXMoY29uc3QgdWludDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251842</attachid>
            <date>2015-04-28 06:09:55 -0700</date>
            <delta_ts>2015-04-29 08:28:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144257-20150428220845.patch</filename>
            <type>text/plain</type>
            <size>12167</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzdiYmQyZjdhZGU5OWFkZGFjZDhkYmM2NThkNDJiMzM5OTAyNGUzLi5jOWE0MmRmMmI2MjllNjA3
MjIxNTE1NDRlOGI1N2QzNWU0YWYyNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNS0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3
dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTSEExIGlzIHVzZWQgdG8gY2FsY3VsYXRlIENvZGVCbG9ja0hhc2guCisgICAgICAgIFRvIGNh
bGN1bGF0ZSBoYXNoIHZhbHVlLCB3ZSBwYXNzIHRoZSBzb3VyY2UgY29kZSBVVEYtOCBDU3RyaW5n
IHRvIFNIQTE6OmFkZEJ5dGVzLgorICAgICAgICBIb3dldmVyLCB0aGUgc291cmNlIGNvZGUgY2Fu
IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFNvIHdoZW4gcGVyZm9ybWluZyBgc3Ry
bGVuYCBvbiB0aGUgc291cmNlIGNvZGUncyBDU3RyaW5nLCBpdCByZXR1cm5zIHRoZSBpbmNvcnJl
Y3QgbGVuZ3RoLgorICAgICAgICBJbiBTSEExOjphZGRCeXRlcywgdGhlcmUncyBhc3NlcnRpb24g
YGlucHV0Lmxlbmd0aCgpID09IHN0cmxlbihzdHJpbmcpYCBhbmQgaXQgZmFpbHMuCisKKyAgICAg
ICAgSW4gdGhlIHRlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzLCB3ZSBwZXJmb3JtIGBldmFsYCB3
aXRoIHRoZSBzY3JpcHQgY29udGFpbnMgIlwwIi4KKyAgICAgICAgQXMgdGhlIHJlc3VsdCwgYHN0
cmxlbihzdHJpbmcpYCBhY2NpZGVudGFsbHkgc2hvcnRlbmVkIGJ5IHRoZSBjb250YWluZWQgIlww
IiwgYW5kIGFzc2VydGlvbiBmYWlscy4KKworICAgICAgICBTSEExOjphZGRCeXRlcyhDU3RyaW5n
KSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIFNIQTEgc2hvdWxkIGZlZWQgYnl0ZSBzdHJlYW1zIGFu
ZAorICAgICAgICBzaG91bGQgbm90IGFjY2VwdCBDU3RyaW5nIGJlY2F1c2UgQ1N0cmluZyBoYXMg
YSBsaW1pdGF0aW9uIHRoYXQgaXQgc2hvdWxkIG5vdCBjb250YWluCisgICAgICAgIGEgbnVsbCBj
aGFyYWN0ZXIgaW4gaXRzIGNvbnRlbnQuCisKKyAgICAgICAgQW5kIHRoaXMgYXNzZXJ0aW9uIGlz
IG5vdCBhcHByb3ByaWF0ZSBiZWNhdXNlIHRoaXMgaW52YXJpYW50IHNob3VsZCBiZSBhc3NlcnRl
ZCBpbiBDU3RyaW5nIHNpZGUKKyAgICAgICAgaWYgQ1N0cmluZyBzaG91bGQgbm90IGNvbnRhaW4g
YSBudWxsIGNoYXJhY3RlciBpbnN0ZWFkIG9mIHRoZSBTSEExOjphZGRCeXRlcyBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyB0aGUgU3Ry
aW5nSW1wbDo6dXRmOEJ1ZmZlckZvclJhbmdlIC0+IFN0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvciBp
bnRlcmZhY2UuCisgICAgICAgIEl0IHJldHVybnMgU3RyaW5nSW1wbDo6QnVmZmVyVmVjdG9yIChW
ZWN0b3I8Y2hhciwgMTAyND4pIGFuZCBpdCBkb2Vzbid0IHRoZSBpbnZhcmlhbnQgdGhhdCBpdHMg
Y29udGVudAorICAgICAgICBkb2VzIG5vdCBoYXZlIGEgbnVsbCBjaGFyYWN0ZXIuCisKKyAgICAg
ICAgSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIG9uY2UgY29udmVydCB0aGUgZW50
aXJlIHNvdXJjZSBjb2RlIHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQKKyAgICAgICAgVVRGLTggc3Ry
aW5nIGFuZCBwYXNzIGl0IHRvIHRoZSBTSEExIHByb2Nlc3NpbmcuIEhvd2V2ZXIsIHRoaXMgaXMg
bWVtb3J5IGNvbnN1bWluZy4KKyAgICAgICAgSWRlYWxseSwgd2Ugc2hvdWxkIHN0cmVhbSB0aGUg
ZGVjb2RlZCBieXRlcyBpbnRvIHRoZSBTSEExIHByb2Nlc3NpbmcgaXRlcmF0aXZlbHkuCisgICAg
ICAgIFdlJ2xsIGltcGxlbWVudCBpdCBpbiB0aGUgc2VwYXJhdGUgcGF0Y2hbMV0uCisKKyAgICAg
ICAgWzFdOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjYzCisK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFzaCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUu
Y3BwOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjp0b1VURjhCdWZmZXIpOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlOjp0b1VURjgpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmg6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFj
dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorCiAy
MDE1LTA0LTI3ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWdFeHAgbWF0Y2hlcyBhcnJheXMgc2hvdWxkIHVzZSBjb250aWd1b3VzIGluZGV4aW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA4Yjk2ZmNmODNhZThlZWIxYzQyNzVkZGEzMzc4NDA0YzBkZjAzMjczLi4yZTc2YTM5ZGUyOWFj
ZjUxNDM5ZTY1YzM0MTNjODhkNzhkZjFkMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA0
LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFJF
R1JFU1NJT04gKHIxODMzNzMpOiBBU1NFUlQgZmFpbGVkIGluIHd0Zi9TSEExLmgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTdHJpbmdJbXBsOjp1
dGY4QnVmZmVyRm9yUmFuZ2UuIEl0IHJldHVybnMgVmVjdG9yPGNoYXIsIDEwMjQ+IGFuZCBpdCBk
b2VzIG5vdAorICAgICAgICBoYXZlIHRoZSBpbnZhcmlhbnQgdGhhdCBpdHMgY29udGVudCBkb2Vz
IG5vdCBoYXZlIGEgbnVsbCBjaGFyYWN0ZXIgd2hpbGUgQ1N0cmluZyBoYXMKKyAgICAgICAgdGhp
cyBpbnZhcmlhbnQuCisgICAgICAgIEFuZCBpbXBsZW1lbnQgdXRmOEZvclJhbmdlIGJhc2VkIG9u
IHRoaXMgZnVuY3Rpb24uCisKKyAgICAgICAgQW5kIGRyb3AgU0hBMTo6YWRkQnl0ZXMoQ1N0cmlu
ZykgaW50ZXJmYWNlIGJlY2F1c2UgaXQgaXMgcHJvYmxlbWF0aWMuCisgICAgICAgIFNIQTEgLyBN
RDUgZXRjLiBzaG91bGQgb25seSBhY2NlcHQgYnl0ZXMuCisKKyAgICAgICAgKiB3dGYvU0hBMS5o
OgorICAgICAgICAoV1RGOjpTSEExOjphZGRCeXRlcyk6CisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnV0ZjhGb3JDaGFyYWN0ZXJz
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKToKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKIDIwMTUtMDQtMjcgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbmFtZSBXVEZfVVNFXzNEX0dSQVBI
SUNTIHRvIEVOQUJMRV9HUkFQSElDU19DT05URVhUXzNECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKaW5kZXggODdjMDkyZjY0YTg5MTM2NDI2
MTE4MGU2NTJhOTQ3ZGZlM2RlOTZlNS4uNGM1MzRlODQ0N2M4Njc3NzA3ZDdjMGIwMGVkMmI3MjQx
MDNiYTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9ja0hhc2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tIYXNoLmNwcApAQCAtNDEsNyArNDEsOCBAQAogICAgIDogbV9oYXNoKDApCiB7CiAgICAgU0hB
MSBzaGExOwotICAgIHNoYTEuYWRkQnl0ZXMoc291cmNlQ29kZS50b1VURjgoKSk7CisgICAgU3Ry
aW5nSW1wbDo6QnVmZmVyVmVjdG9yIGJ1ZmZlclZlY3RvciA9IHNvdXJjZUNvZGUudG9VVEY4QnVm
ZmVyKCk7CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihidWZmZXJWZWN0b3IuZGF0YSgpKSwgYnVmZmVyVmVjdG9yLnNpemUoKSk7CiAgICAgU0hBMTo6
RGlnZXN0IGRpZ2VzdDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGRpZ2VzdCk7CiAgICAgbV9oYXNo
ICs9IGRpZ2VzdFswXSB8IChkaWdlc3RbMV0gPDwgOCkgfCAoZGlnZXN0WzJdIDw8IDE2KSB8IChk
aWdlc3RbM10gPDwgMjQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29k
ZS5jcHAKaW5kZXggOGVmMTY4ZGVhYTkyYzM1YTgxYTQyN2Q4NjYwODljMDE4OTUyY2YyMS4uY2M0
MDhjNDAzOGM0OWZiZjA3NTA3M2IyZWU1ZjFjMWQ5M2RiY2ZmMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuY3BwCkBAIC0zMSwxMSArMzEsMjMgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK1N0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvciBTb3VyY2VDb2RlOjp0b1VU
RjhCdWZmZXIoKSBjb25zdAoreworICAgIGlmICghbV9wcm92aWRlcikKKyAgICAgICAgcmV0dXJu
IFN0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvcigpOworCisgICAgLy8gQmVjYXVzZSB3ZSBkbyBub3Qg
dXNlIHN0cmljdCBjb252ZXJzaW9uIG1vZGUgZm9yIHRoaXMgVVRGLTggY29udmVyc2lvbiwKKyAg
ICAvLyBjb252ZXJzaW9uIGFsd2F5cyBzdWNjZWVkIHVubGVzcyB0aGUgbGVuZ3RoIG9mIHRoZSBj
b252ZXJ0ZWQgc3RyaW5nIGV4Y2VlZHMgVUlOVDMyX01BWC4KKyAgICAvLyBJbiBzdWNoIGEgY2Fz
ZSwgdXRmOEJ1ZmZlckZvclJhbmdlIGFsd2F5cyByZXR1cm5zIGFuIGVtcHR5IGJ1ZmZlciB2ZWN0
b3IuCisgICAgYm9vbCBjb252ZXJzaW9uRXJyb3IgPSBmYWxzZTsKKyAgICByZXR1cm4gbV9wcm92
aWRlci0+c291cmNlKCkuaW1wbCgpLT51dGY4QnVmZmVyRm9yUmFuZ2UobV9zdGFydENoYXIsIG1f
ZW5kQ2hhciAtIG1fc3RhcnRDaGFyLCBjb252ZXJzaW9uRXJyb3IpOworfQorCiBDU3RyaW5nIFNv
dXJjZUNvZGU6OnRvVVRGOCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Byb3ZpZGVyKQogICAgICAg
ICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0gICAgCisKICAgICByZXR1cm4gbV9wcm92aWRlci0+
c291cmNlKCkuaW1wbCgpLT51dGY4Rm9yUmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhciAtIG1f
c3RhcnRDaGFyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUu
aAppbmRleCA3M2QyM2RiODJhZjI1ZWE0NmMwZjg5Nzg1Y2U0MjRiYjYwZWI2MWE3Li5iMTVhODg3
MTlkMmUwODA0ZmYzMjY4YjYzOWUyNDUyYWRhNGJhOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZUNvZGUuaApAQCAtODcsNiArODcsNyBAQAogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBDU3RyaW5nIHRvVVRGOCgpIGNvbnN0OworICAgICAgICBTdHJpbmdJbXBs
OjpCdWZmZXJWZWN0b3IgdG9VVEY4QnVmZmVyKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBp
bnRwdHJfdCBwcm92aWRlcklEKCkgY29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9ldmFsLXNjcmlwdC1jb250YWlucy1udWxsLWNo
YXJhY3Rlci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXZhbC1zY3Jp
cHQtY29udGFpbnMtbnVsbC1jaGFyYWN0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE5MjE1ZGE0OWMyN2Ri
YjRjYmU2ZDlmN2RhMDVlZmQ1ZDRiM2U2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXZhbC1zY3JpcHQtY29udGFpbnMtbnVsbC1jaGFyYWN0
ZXIuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoImJhZCB2YWx1ZTogIiArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
c2hvdWxkQmUoZXZhbCgiKGBcMGApIiksICJcMCIpOworICAgIHNob3VsZEJlKGV2YWwoIignXDAn
KSIpLCAiXDAiKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU0hBMS5o
IGIvU291cmNlL1dURi93dGYvU0hBMS5oCmluZGV4IDYzMzY1Y2YwMDhmNjE2ZDQ0MWZkMmIyZTdi
NTE1MTcxYjFhM2IzODguLmE3ZTUxOTVmY2YzODBjZDRmNWRmMWIwY2JjNzJlYWU0ZTNiNmI2MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9T
SEExLmgKQEAgLTQ5LDE2ICs0OSw2IEBAIGNsYXNzIFNIQTEgewogICAgIHsKICAgICAgICAgYWRk
Qnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCkpOwogICAgIH0KLSAgICB2b2lkIGFkZEJ5
dGVzKGNvbnN0IENTdHJpbmcmIGlucHV0KQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogc3Ry
aW5nID0gaW5wdXQuZGF0YSgpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY3JlYXRv
ciBvZiB0aGUgQ1N0cmluZyBkaWRuJ3QgbWFrZSB0aGUgbWlzdGFrZQotICAgICAgICAvLyBvZiBm
b3JjaW5nIGxlbmd0aCgpIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBjcmVh
dGUgdGhlCi0gICAgICAgIC8vIHN0cmluZywgcHJpb3IgdG8gaW5zZXJ0aW5nIHRoZSBudWxsIHRl
cm1pbmF0b3IgZWFybGllciBpbiB0aGUKLSAgICAgICAgLy8gc2VxdWVuY2UuCi0gICAgICAgIEFT
U0VSVChpbnB1dC5sZW5ndGgoKSA9PSBzdHJsZW4oc3RyaW5nKSk7Ci0gICAgICAgIGFkZEJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZyksIGlucHV0Lmxlbmd0aCgp
KTsKLSAgICB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWlu
dDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gU2l6ZSBvZiB0aGUgU0hBMSBo
YXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA4M2IxNTIzOWUxMmVkYjUxMGM5
ZjQwZWU2YzgyZWYwZWRkNjczYTZjLi4zNjMxOTBhY2Y2OTg0NjA3MmYxYWNkYzk0MTZmYmIxOTFl
MzlhNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTIxOTIsMzQgKzIxOTIs
MzggQEAgQ1N0cmluZyBTdHJpbmdJbXBsOjp1dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLAogICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwg
MCk7CiAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSAvIDMpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0gICAgVmVjdG9yPGNoYXIsIDEwMjQ+
IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsKKyAgICBCdWZmZXJWZWN0b3IgYnVmZmVyVmVjdG9y
KGxlbmd0aCAqIDMpOwogICAgIGNoYXIqIGJ1ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7CiAg
ICAgaWYgKCF1dGY4SW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIGJ1ZmZlciwgYnVmZmVyVmVjdG9y
LnNpemUoKSwgbW9kZSkpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAgICAgcmV0dXJuIENT
dHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVyIC0gYnVmZmVyVmVjdG9yLmRhdGEoKSk7
CiB9CiAKLUNTdHJpbmcgU3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdAorYXV0byBTdHJpbmdJ
bXBsOjp1dGY4QnVmZmVyRm9yUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgs
IGJvb2wmIHN1Y2Nlc3MsIENvbnZlcnNpb25Nb2RlIG1vZGUpIGNvbnN0IC0+IEJ1ZmZlclZlY3Rv
cgogewogICAgIEFTU0VSVChvZmZzZXQgPD0gdGhpcy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChv
ZmZzZXQgKyBsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOwotICAgIAotICAgIGlmICghbGVuZ3Ro
KQotICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CisKKyAgICBpZiAoIWxlbmd0aCkgewor
ICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIEJ1ZmZlclZlY3RvcigpOwor
ICAgIH0KIAogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwg
dGhlIGNoYXJhY3RlcnMKICAgICAvLyAoYW4gaW5kaXZpZHVhbCBVVEYtMTYgVUNoYXIgY2FuIG9u
bHkgZXhwYW5kIHRvIDMgVVRGLTggYnl0ZXMpLgogICAgIC8vIE9wdGltaXphdGlvbiBpZGVhcywg
aWYgd2UgZmluZCB0aGlzIGZ1bmN0aW9uIGlzIGhvdDoKLSAgICAvLyAgKiBXZSBjb3VsZCBzcGVj
dWxhdGl2ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZmZXIgdG8gY29udGFpbiAnbGVuZ3RoJyAKKyAg
ICAvLyAgKiBXZSBjb3VsZCBzcGVjdWxhdGl2ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZmZXIgdG8g
Y29udGFpbiAnbGVuZ3RoJwogICAgIC8vICAgIGNoYXJhY3RlcnMsIGFuZCByZXNpemUgaWYgbmVj
ZXNzYXJ5IChpLmUuIGlmIHRoZSBidWZmZXIgY29udGFpbnMKICAgICAvLyAgICBub24tYXNjaWkg
Y2hhcmFjdGVycykuIChBbHRlcm5hdGl2ZWx5LCBzY2FuIHRoZSBidWZmZXIgZmlyc3QgZm9yCiAg
ICAgLy8gICAgYXNjaWkgY2hhcmFjdGVycywgc28gd2Uga25vdyB0aGlzIHdpbGwgYmUgc3VmZmlj
aWVudCkuCiAgICAgLy8gICogV2UgY291bGQgYWxsb2NhdGUgYSBDU3RyaW5nQnVmZmVyIHdpdGgg
YW4gYXBwcm9wcmlhdGUgc2l6ZSB0bwogICAgIC8vICAgIGhhdmUgYSBnb29kIGNoYW5jZSBvZiBi
ZWluZyBhYmxlIHRvIHdyaXRlIHRoZSBzdHJpbmcgaW50byB0aGUKICAgICAvLyAgICBidWZmZXIg
d2l0aG91dCByZWFsbG9jaW5nIChzYXksIDEuNSB4IGxlbmd0aCkuCi0gICAgaWYgKGxlbmd0aCA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCi0gICAgICAgIHJldHVy
biBDU3RyaW5nKCk7Ci0gICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGgg
KiAzKTsKKyAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIC8gMykgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybiBCdWZm
ZXJWZWN0b3IoKTsKKyAgICB9CisgICAgQnVmZmVyVmVjdG9yIGJ1ZmZlclZlY3RvcihsZW5ndGgg
KiAzKTsKIAogICAgIGNoYXIqIGJ1ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7CiAKQEAgLTIy
MjksMTEgKzIyMzMsMjQgQEAgQ1N0cmluZyBTdHJpbmdJbXBsOjp1dGY4Rm9yUmFuZ2UodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvbnZlcnNpb25Nb2QKICAgICAgICAgQ29udmVy
c2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0TGF0aW4xVG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFy
YWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQp
OyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9u
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCF1dGY4SW1wbCh0aGlzLT5jaGFyYWN0ZXJzMTYo
KSArIG9mZnNldCwgbGVuZ3RoLCBidWZmZXIsIGJ1ZmZlclZlY3Rvci5zaXplKCksIG1vZGUpKQot
ICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICAgICAgaWYgKCF1dGY4SW1wbCh0aGlz
LT5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoLCBidWZmZXIsIGJ1ZmZlclZlY3Rvci5z
aXplKCksIG1vZGUpKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm4gQnVmZmVyVmVjdG9yKCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
Q1N0cmluZyhidWZmZXJWZWN0b3IuZGF0YSgpLCBidWZmZXIgLSBidWZmZXJWZWN0b3IuZGF0YSgp
KTsKKyAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICBidWZmZXJWZWN0b3Iuc2hyaW5rKGJ1ZmZlciAt
IGJ1ZmZlclZlY3Rvci5kYXRhKCkpOworICAgIHJldHVybiBidWZmZXJWZWN0b3I7Cit9CisKK0NT
dHJpbmcgU3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdAoreworICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOworICAgIEJ1ZmZlclZlY3RvciBidWZmZXJWZWN0b3IgPSB1dGY4QnVmZmVyRm9yUmFu
Z2Uob2Zmc2V0LCBsZW5ndGgsIHN1Y2Nlc3MsIG1vZGUpOworICAgIGlmICghc3VjY2VzcykKKyAg
ICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICByZXR1cm4gQ1N0cmluZyhidWZmZXJWZWN0b3Iu
ZGF0YSgpLCBidWZmZXJWZWN0b3Iuc2l6ZSgpKTsKIH0KIAogQ1N0cmluZyBTdHJpbmdJbXBsOjp1
dGY4KENvbnZlcnNpb25Nb2RlIG1vZGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmlu
ZGV4IDkzOTkwMjhlZDM3MDJmZGEwMTE4Yzc2NjFjZjhhZGYwMGYzZDExY2UuLmFlZWQxZWI0ODY3
ZjRiOWY3Yzg0ODY2ODRiNTVhYTQ2NTY4ZGRkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC01MTQsNiArNTE0LDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAjZW5kaWYKIAogICAgIHN0
YXRpYyBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyB1dGY4Rm9yQ2hhcmFjdGVycyhjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kZSA9IExl
bmllbnRDb252ZXJzaW9uKTsKKyAgICB0eXBlZGVmIFZlY3RvcjxjaGFyLCAxMDI0PiBCdWZmZXJW
ZWN0b3I7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIEJ1ZmZlclZlY3RvciB1dGY4QnVmZmVy
Rm9yUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wmIHN1Y2Nlc3Ms
IENvbnZlcnNpb25Nb2RlID0gTGVuaWVudENvbnZlcnNpb24pIGNvbnN0OwogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjhGb3JSYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCwgQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50Q29udmVyc2lvbikgY29uc3Q7CiAg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOChDb252ZXJzaW9uTW9kZSA9IExl
bmllbnRDb252ZXJzaW9uKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251843</attachid>
            <date>2015-04-28 06:28:13 -0700</date>
            <delta_ts>2015-04-28 06:31:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144257-20150428222704.patch</filename>
            <type>text/plain</type>
            <size>13504</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzdiYmQyZjdhZGU5OWFkZGFjZDhkYmM2NThkNDJiMzM5OTAyNGUzLi5jOWE0MmRmMmI2MjllNjA3
MjIxNTE1NDRlOGI1N2QzNWU0YWYyNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNS0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3
dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTSEExIGlzIHVzZWQgdG8gY2FsY3VsYXRlIENvZGVCbG9ja0hhc2guCisgICAgICAgIFRvIGNh
bGN1bGF0ZSBoYXNoIHZhbHVlLCB3ZSBwYXNzIHRoZSBzb3VyY2UgY29kZSBVVEYtOCBDU3RyaW5n
IHRvIFNIQTE6OmFkZEJ5dGVzLgorICAgICAgICBIb3dldmVyLCB0aGUgc291cmNlIGNvZGUgY2Fu
IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFNvIHdoZW4gcGVyZm9ybWluZyBgc3Ry
bGVuYCBvbiB0aGUgc291cmNlIGNvZGUncyBDU3RyaW5nLCBpdCByZXR1cm5zIHRoZSBpbmNvcnJl
Y3QgbGVuZ3RoLgorICAgICAgICBJbiBTSEExOjphZGRCeXRlcywgdGhlcmUncyBhc3NlcnRpb24g
YGlucHV0Lmxlbmd0aCgpID09IHN0cmxlbihzdHJpbmcpYCBhbmQgaXQgZmFpbHMuCisKKyAgICAg
ICAgSW4gdGhlIHRlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzLCB3ZSBwZXJmb3JtIGBldmFsYCB3
aXRoIHRoZSBzY3JpcHQgY29udGFpbnMgIlwwIi4KKyAgICAgICAgQXMgdGhlIHJlc3VsdCwgYHN0
cmxlbihzdHJpbmcpYCBhY2NpZGVudGFsbHkgc2hvcnRlbmVkIGJ5IHRoZSBjb250YWluZWQgIlww
IiwgYW5kIGFzc2VydGlvbiBmYWlscy4KKworICAgICAgICBTSEExOjphZGRCeXRlcyhDU3RyaW5n
KSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIFNIQTEgc2hvdWxkIGZlZWQgYnl0ZSBzdHJlYW1zIGFu
ZAorICAgICAgICBzaG91bGQgbm90IGFjY2VwdCBDU3RyaW5nIGJlY2F1c2UgQ1N0cmluZyBoYXMg
YSBsaW1pdGF0aW9uIHRoYXQgaXQgc2hvdWxkIG5vdCBjb250YWluCisgICAgICAgIGEgbnVsbCBj
aGFyYWN0ZXIgaW4gaXRzIGNvbnRlbnQuCisKKyAgICAgICAgQW5kIHRoaXMgYXNzZXJ0aW9uIGlz
IG5vdCBhcHByb3ByaWF0ZSBiZWNhdXNlIHRoaXMgaW52YXJpYW50IHNob3VsZCBiZSBhc3NlcnRl
ZCBpbiBDU3RyaW5nIHNpZGUKKyAgICAgICAgaWYgQ1N0cmluZyBzaG91bGQgbm90IGNvbnRhaW4g
YSBudWxsIGNoYXJhY3RlciBpbnN0ZWFkIG9mIHRoZSBTSEExOjphZGRCeXRlcyBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyB0aGUgU3Ry
aW5nSW1wbDo6dXRmOEJ1ZmZlckZvclJhbmdlIC0+IFN0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvciBp
bnRlcmZhY2UuCisgICAgICAgIEl0IHJldHVybnMgU3RyaW5nSW1wbDo6QnVmZmVyVmVjdG9yIChW
ZWN0b3I8Y2hhciwgMTAyND4pIGFuZCBpdCBkb2Vzbid0IHRoZSBpbnZhcmlhbnQgdGhhdCBpdHMg
Y29udGVudAorICAgICAgICBkb2VzIG5vdCBoYXZlIGEgbnVsbCBjaGFyYWN0ZXIuCisKKyAgICAg
ICAgSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIG9uY2UgY29udmVydCB0aGUgZW50
aXJlIHNvdXJjZSBjb2RlIHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQKKyAgICAgICAgVVRGLTggc3Ry
aW5nIGFuZCBwYXNzIGl0IHRvIHRoZSBTSEExIHByb2Nlc3NpbmcuIEhvd2V2ZXIsIHRoaXMgaXMg
bWVtb3J5IGNvbnN1bWluZy4KKyAgICAgICAgSWRlYWxseSwgd2Ugc2hvdWxkIHN0cmVhbSB0aGUg
ZGVjb2RlZCBieXRlcyBpbnRvIHRoZSBTSEExIHByb2Nlc3NpbmcgaXRlcmF0aXZlbHkuCisgICAg
ICAgIFdlJ2xsIGltcGxlbWVudCBpdCBpbiB0aGUgc2VwYXJhdGUgcGF0Y2hbMV0uCisKKyAgICAg
ICAgWzFdOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjYzCisK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFzaCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUu
Y3BwOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjp0b1VURjhCdWZmZXIpOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlOjp0b1VURjgpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmg6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFj
dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorCiAy
MDE1LTA0LTI3ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWdFeHAgbWF0Y2hlcyBhcnJheXMgc2hvdWxkIHVzZSBjb250aWd1b3VzIGluZGV4aW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA4Yjk2ZmNmODNhZThlZWIxYzQyNzVkZGEzMzc4NDA0YzBkZjAzMjczLi4yZTc2YTM5ZGUyOWFj
ZjUxNDM5ZTY1YzM0MTNjODhkNzhkZjFkMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA0
LTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFJF
R1JFU1NJT04gKHIxODMzNzMpOiBBU1NFUlQgZmFpbGVkIGluIHd0Zi9TSEExLmgKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI1NworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTdHJpbmdJbXBsOjp1
dGY4QnVmZmVyRm9yUmFuZ2UuIEl0IHJldHVybnMgVmVjdG9yPGNoYXIsIDEwMjQ+IGFuZCBpdCBk
b2VzIG5vdAorICAgICAgICBoYXZlIHRoZSBpbnZhcmlhbnQgdGhhdCBpdHMgY29udGVudCBkb2Vz
IG5vdCBoYXZlIGEgbnVsbCBjaGFyYWN0ZXIgd2hpbGUgQ1N0cmluZyBoYXMKKyAgICAgICAgdGhp
cyBpbnZhcmlhbnQuCisgICAgICAgIEFuZCBpbXBsZW1lbnQgdXRmOEZvclJhbmdlIGJhc2VkIG9u
IHRoaXMgZnVuY3Rpb24uCisKKyAgICAgICAgQW5kIGRyb3AgU0hBMTo6YWRkQnl0ZXMoQ1N0cmlu
ZykgaW50ZXJmYWNlIGJlY2F1c2UgaXQgaXMgcHJvYmxlbWF0aWMuCisgICAgICAgIFNIQTEgLyBN
RDUgZXRjLiBzaG91bGQgb25seSBhY2NlcHQgYnl0ZXMuCisKKyAgICAgICAgKiB3dGYvU0hBMS5o
OgorICAgICAgICAoV1RGOjpTSEExOjphZGRCeXRlcyk6CisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnV0ZjhGb3JDaGFyYWN0ZXJz
KToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKToKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKIDIwMTUtMDQtMjcgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbmFtZSBXVEZfVVNFXzNEX0dSQVBI
SUNTIHRvIEVOQUJMRV9HUkFQSElDU19DT05URVhUXzNECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAKaW5kZXggODdjMDkyZjY0YTg5MTM2NDI2
MTE4MGU2NTJhOTQ3ZGZlM2RlOTZlNS4uNGM1MzRlODQ0N2M4Njc3NzA3ZDdjMGIwMGVkMmI3MjQx
MDNiYTZkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9ja0hhc2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tIYXNoLmNwcApAQCAtNDEsNyArNDEsOCBAQAogICAgIDogbV9oYXNoKDApCiB7CiAgICAgU0hB
MSBzaGExOwotICAgIHNoYTEuYWRkQnl0ZXMoc291cmNlQ29kZS50b1VURjgoKSk7CisgICAgU3Ry
aW5nSW1wbDo6QnVmZmVyVmVjdG9yIGJ1ZmZlclZlY3RvciA9IHNvdXJjZUNvZGUudG9VVEY4QnVm
ZmVyKCk7CisgICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihidWZmZXJWZWN0b3IuZGF0YSgpKSwgYnVmZmVyVmVjdG9yLnNpemUoKSk7CiAgICAgU0hBMTo6
RGlnZXN0IGRpZ2VzdDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGRpZ2VzdCk7CiAgICAgbV9oYXNo
ICs9IGRpZ2VzdFswXSB8IChkaWdlc3RbMV0gPDwgOCkgfCAoZGlnZXN0WzJdIDw8IDE2KSB8IChk
aWdlc3RbM10gPDwgMjQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29k
ZS5jcHAKaW5kZXggOGVmMTY4ZGVhYTkyYzM1YTgxYTQyN2Q4NjYwODljMDE4OTUyY2YyMS4uY2M0
MDhjNDAzOGM0OWZiZjA3NTA3M2IyZWU1ZjFjMWQ5M2RiY2ZmMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuY3BwCkBAIC0zMSwxMSArMzEsMjMgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK1N0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvciBTb3VyY2VDb2RlOjp0b1VU
RjhCdWZmZXIoKSBjb25zdAoreworICAgIGlmICghbV9wcm92aWRlcikKKyAgICAgICAgcmV0dXJu
IFN0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvcigpOworCisgICAgLy8gQmVjYXVzZSB3ZSBkbyBub3Qg
dXNlIHN0cmljdCBjb252ZXJzaW9uIG1vZGUgZm9yIHRoaXMgVVRGLTggY29udmVyc2lvbiwKKyAg
ICAvLyBjb252ZXJzaW9uIGFsd2F5cyBzdWNjZWVkIHVubGVzcyB0aGUgbGVuZ3RoIG9mIHRoZSBj
b252ZXJ0ZWQgc3RyaW5nIGV4Y2VlZHMgVUlOVDMyX01BWC4KKyAgICAvLyBJbiBzdWNoIGEgY2Fz
ZSwgdXRmOEJ1ZmZlckZvclJhbmdlIGFsd2F5cyByZXR1cm5zIGFuIGVtcHR5IGJ1ZmZlciB2ZWN0
b3IuCisgICAgYm9vbCBjb252ZXJzaW9uRXJyb3IgPSBmYWxzZTsKKyAgICByZXR1cm4gbV9wcm92
aWRlci0+c291cmNlKCkuaW1wbCgpLT51dGY4QnVmZmVyRm9yUmFuZ2UobV9zdGFydENoYXIsIG1f
ZW5kQ2hhciAtIG1fc3RhcnRDaGFyLCBjb252ZXJzaW9uRXJyb3IpOworfQorCiBDU3RyaW5nIFNv
dXJjZUNvZGU6OnRvVVRGOCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Byb3ZpZGVyKQogICAgICAg
ICByZXR1cm4gQ1N0cmluZygiIiwgMCk7Ci0gICAgCisKICAgICByZXR1cm4gbV9wcm92aWRlci0+
c291cmNlKCkuaW1wbCgpLT51dGY4Rm9yUmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhciAtIG1f
c3RhcnRDaGFyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VDb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUu
aAppbmRleCA3M2QyM2RiODJhZjI1ZWE0NmMwZjg5Nzg1Y2U0MjRiYjYwZWI2MWE3Li5iMTVhODg3
MTlkMmUwODA0ZmYzMjY4YjYzOWUyNDUyYWRhNGJhOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1NvdXJjZUNvZGUuaApAQCAtODcsNiArODcsNyBAQAogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBDU3RyaW5nIHRvVVRGOCgpIGNvbnN0OworICAgICAgICBTdHJpbmdJbXBs
OjpCdWZmZXJWZWN0b3IgdG9VVEY4QnVmZmVyKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBp
bnRwdHJfdCBwcm92aWRlcklEKCkgY29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9ldmFsLXNjcmlwdC1jb250YWlucy1udWxsLWNo
YXJhY3Rlci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXZhbC1zY3Jp
cHQtY29udGFpbnMtbnVsbC1jaGFyYWN0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE5MjE1ZGE0OWMyN2Ri
YjRjYmU2ZDlmN2RhMDVlZmQ1ZDRiM2U2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXZhbC1zY3JpcHQtY29udGFpbnMtbnVsbC1jaGFyYWN0
ZXIuanMKQEAgLTAsMCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoImJhZCB2YWx1ZTogIiArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAg
c2hvdWxkQmUoZXZhbCgiKGBcMGApIiksICJcMCIpOworICAgIHNob3VsZEJlKGV2YWwoIignXDAn
KSIpLCAiXDAiKTsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEw
MDAwOyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU0hBMS5o
IGIvU291cmNlL1dURi93dGYvU0hBMS5oCmluZGV4IDYzMzY1Y2YwMDhmNjE2ZDQ0MWZkMmIyZTdi
NTE1MTcxYjFhM2IzODguLmE3ZTUxOTVmY2YzODBjZDRmNWRmMWIwY2JjNzJlYWU0ZTNiNmI2MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9T
SEExLmgKQEAgLTQ5LDE2ICs0OSw2IEBAIGNsYXNzIFNIQTEgewogICAgIHsKICAgICAgICAgYWRk
Qnl0ZXMoaW5wdXQuZGF0YSgpLCBpbnB1dC5zaXplKCkpOwogICAgIH0KLSAgICB2b2lkIGFkZEJ5
dGVzKGNvbnN0IENTdHJpbmcmIGlucHV0KQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogc3Ry
aW5nID0gaW5wdXQuZGF0YSgpOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgY3JlYXRv
ciBvZiB0aGUgQ1N0cmluZyBkaWRuJ3QgbWFrZSB0aGUgbWlzdGFrZQotICAgICAgICAvLyBvZiBm
b3JjaW5nIGxlbmd0aCgpIHRvIGJlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgdXNlZCB0byBjcmVh
dGUgdGhlCi0gICAgICAgIC8vIHN0cmluZywgcHJpb3IgdG8gaW5zZXJ0aW5nIHRoZSBudWxsIHRl
cm1pbmF0b3IgZWFybGllciBpbiB0aGUKLSAgICAgICAgLy8gc2VxdWVuY2UuCi0gICAgICAgIEFT
U0VSVChpbnB1dC5sZW5ndGgoKSA9PSBzdHJsZW4oc3RyaW5nKSk7Ci0gICAgICAgIGFkZEJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0cmluZyksIGlucHV0Lmxlbmd0aCgp
KTsKLSAgICB9CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkQnl0ZXMoY29uc3QgdWlu
dDhfdCogaW5wdXQsIHNpemVfdCBsZW5ndGgpOwogCiAgICAgLy8gU2l6ZSBvZiB0aGUgU0hBMSBo
YXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAppbmRleCA4M2IxNTIzOWUxMmVkYjUxMGM5
ZjQwZWU2YzgyZWYwZWRkNjczYTZjLi4zNjMxOTBhY2Y2OTg0NjA3MmYxYWNkYzk0MTZmYmIxOTFl
MzlhNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTIxOTIsMzQgKzIxOTIs
MzggQEAgQ1N0cmluZyBTdHJpbmdJbXBsOjp1dGY4Rm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciog
Y2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLAogICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwg
MCk7CiAgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSAvIDMpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7Ci0gICAgVmVjdG9yPGNoYXIsIDEwMjQ+
IGJ1ZmZlclZlY3RvcihsZW5ndGggKiAzKTsKKyAgICBCdWZmZXJWZWN0b3IgYnVmZmVyVmVjdG9y
KGxlbmd0aCAqIDMpOwogICAgIGNoYXIqIGJ1ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7CiAg
ICAgaWYgKCF1dGY4SW1wbChjaGFyYWN0ZXJzLCBsZW5ndGgsIGJ1ZmZlciwgYnVmZmVyVmVjdG9y
LnNpemUoKSwgbW9kZSkpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAgICAgcmV0dXJuIENT
dHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVyIC0gYnVmZmVyVmVjdG9yLmRhdGEoKSk7
CiB9CiAKLUNTdHJpbmcgU3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKHVuc2lnbmVkIG9mZnNldCwg
dW5zaWduZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdAorYXV0byBTdHJpbmdJ
bXBsOjp1dGY4QnVmZmVyRm9yUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgs
IGJvb2wmIHN1Y2Nlc3MsIENvbnZlcnNpb25Nb2RlIG1vZGUpIGNvbnN0IC0+IEJ1ZmZlclZlY3Rv
cgogewogICAgIEFTU0VSVChvZmZzZXQgPD0gdGhpcy0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVChv
ZmZzZXQgKyBsZW5ndGggPD0gdGhpcy0+bGVuZ3RoKCkpOwotICAgIAotICAgIGlmICghbGVuZ3Ro
KQotICAgICAgICByZXR1cm4gQ1N0cmluZygiIiwgMCk7CisKKyAgICBpZiAoIWxlbmd0aCkgewor
ICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIEJ1ZmZlclZlY3RvcigpOwor
ICAgIH0KIAogICAgIC8vIEFsbG9jYXRlIGEgYnVmZmVyIGJpZyBlbm91Z2ggdG8gaG9sZCBhbGwg
dGhlIGNoYXJhY3RlcnMKICAgICAvLyAoYW4gaW5kaXZpZHVhbCBVVEYtMTYgVUNoYXIgY2FuIG9u
bHkgZXhwYW5kIHRvIDMgVVRGLTggYnl0ZXMpLgogICAgIC8vIE9wdGltaXphdGlvbiBpZGVhcywg
aWYgd2UgZmluZCB0aGlzIGZ1bmN0aW9uIGlzIGhvdDoKLSAgICAvLyAgKiBXZSBjb3VsZCBzcGVj
dWxhdGl2ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZmZXIgdG8gY29udGFpbiAnbGVuZ3RoJyAKKyAg
ICAvLyAgKiBXZSBjb3VsZCBzcGVjdWxhdGl2ZWx5IGNyZWF0ZSBhIENTdHJpbmdCdWZmZXIgdG8g
Y29udGFpbiAnbGVuZ3RoJwogICAgIC8vICAgIGNoYXJhY3RlcnMsIGFuZCByZXNpemUgaWYgbmVj
ZXNzYXJ5IChpLmUuIGlmIHRoZSBidWZmZXIgY29udGFpbnMKICAgICAvLyAgICBub24tYXNjaWkg
Y2hhcmFjdGVycykuIChBbHRlcm5hdGl2ZWx5LCBzY2FuIHRoZSBidWZmZXIgZmlyc3QgZm9yCiAg
ICAgLy8gICAgYXNjaWkgY2hhcmFjdGVycywgc28gd2Uga25vdyB0aGlzIHdpbGwgYmUgc3VmZmlj
aWVudCkuCiAgICAgLy8gICogV2UgY291bGQgYWxsb2NhdGUgYSBDU3RyaW5nQnVmZmVyIHdpdGgg
YW4gYXBwcm9wcmlhdGUgc2l6ZSB0bwogICAgIC8vICAgIGhhdmUgYSBnb29kIGNoYW5jZSBvZiBi
ZWluZyBhYmxlIHRvIHdyaXRlIHRoZSBzdHJpbmcgaW50byB0aGUKICAgICAvLyAgICBidWZmZXIg
d2l0aG91dCByZWFsbG9jaW5nIChzYXksIDEuNSB4IGxlbmd0aCkuCi0gICAgaWYgKGxlbmd0aCA+
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSAvIDMpCi0gICAgICAgIHJldHVy
biBDU3RyaW5nKCk7Ci0gICAgVmVjdG9yPGNoYXIsIDEwMjQ+IGJ1ZmZlclZlY3RvcihsZW5ndGgg
KiAzKTsKKyAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1h
eCgpIC8gMykgeworICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIHJldHVybiBCdWZm
ZXJWZWN0b3IoKTsKKyAgICB9CisgICAgQnVmZmVyVmVjdG9yIGJ1ZmZlclZlY3RvcihsZW5ndGgg
KiAzKTsKIAogICAgIGNoYXIqIGJ1ZmZlciA9IGJ1ZmZlclZlY3Rvci5kYXRhKCk7CiAKQEAgLTIy
MjksMTEgKzIyMzMsMjQgQEAgQ1N0cmluZyBTdHJpbmdJbXBsOjp1dGY4Rm9yUmFuZ2UodW5zaWdu
ZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIENvbnZlcnNpb25Nb2QKICAgICAgICAgQ29udmVy
c2lvblJlc3VsdCByZXN1bHQgPSBjb252ZXJ0TGF0aW4xVG9VVEY4KCZjaGFyYWN0ZXJzLCBjaGFy
YWN0ZXJzICsgbGVuZ3RoLCAmYnVmZmVyLCBidWZmZXIgKyBidWZmZXJWZWN0b3Iuc2l6ZSgpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCAhPSB0YXJnZXRFeGhhdXN0ZWQp
OyAvLyAobGVuZ3RoICogMykgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIGFueSBjb252ZXJzaW9u
CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCF1dGY4SW1wbCh0aGlzLT5jaGFyYWN0ZXJzMTYo
KSArIG9mZnNldCwgbGVuZ3RoLCBidWZmZXIsIGJ1ZmZlclZlY3Rvci5zaXplKCksIG1vZGUpKQot
ICAgICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICAgICAgaWYgKCF1dGY4SW1wbCh0aGlz
LT5jaGFyYWN0ZXJzMTYoKSArIG9mZnNldCwgbGVuZ3RoLCBidWZmZXIsIGJ1ZmZlclZlY3Rvci5z
aXplKCksIG1vZGUpKSB7CisgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgICAg
ICByZXR1cm4gQnVmZmVyVmVjdG9yKCk7CisgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
Q1N0cmluZyhidWZmZXJWZWN0b3IuZGF0YSgpLCBidWZmZXIgLSBidWZmZXJWZWN0b3IuZGF0YSgp
KTsKKyAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICBidWZmZXJWZWN0b3Iuc2hyaW5rKGJ1ZmZlciAt
IGJ1ZmZlclZlY3Rvci5kYXRhKCkpOworICAgIHJldHVybiBidWZmZXJWZWN0b3I7Cit9CisKK0NT
dHJpbmcgU3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
bGVuZ3RoLCBDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdAoreworICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOworICAgIEJ1ZmZlclZlY3RvciBidWZmZXJWZWN0b3IgPSB1dGY4QnVmZmVyRm9yUmFu
Z2Uob2Zmc2V0LCBsZW5ndGgsIHN1Y2Nlc3MsIG1vZGUpOworICAgIGlmICghc3VjY2VzcykKKyAg
ICAgICAgcmV0dXJuIENTdHJpbmcoKTsKKyAgICByZXR1cm4gQ1N0cmluZyhidWZmZXJWZWN0b3Iu
ZGF0YSgpLCBidWZmZXJWZWN0b3Iuc2l6ZSgpKTsKIH0KIAogQ1N0cmluZyBTdHJpbmdJbXBsOjp1
dGY4KENvbnZlcnNpb25Nb2RlIG1vZGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmlu
ZGV4IDkzOTkwMjhlZDM3MDJmZGEwMTE4Yzc2NjFjZjhhZGYwMGYzZDExY2UuLmFlZWQxZWI0ODY3
ZjRiOWY3Yzg0ODY2ODRiNTVhYTQ2NTY4ZGRkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC01MTQsNiArNTE0LDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAjZW5kaWYKIAogICAgIHN0
YXRpYyBXVEZfRVhQT1JUX1NUUklOR19BUEkgQ1N0cmluZyB1dGY4Rm9yQ2hhcmFjdGVycyhjb25z
dCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kZSA9IExl
bmllbnRDb252ZXJzaW9uKTsKKyAgICB0eXBlZGVmIFZlY3RvcjxjaGFyLCAxMDI0PiBCdWZmZXJW
ZWN0b3I7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIEJ1ZmZlclZlY3RvciB1dGY4QnVmZmVy
Rm9yUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wmIHN1Y2Nlc3Ms
IENvbnZlcnNpb25Nb2RlID0gTGVuaWVudENvbnZlcnNpb24pIGNvbnN0OwogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjhGb3JSYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHVuc2ln
bmVkIGxlbmd0aCwgQ29udmVyc2lvbk1vZGUgPSBMZW5pZW50Q29udmVyc2lvbikgY29uc3Q7CiAg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOChDb252ZXJzaW9uTW9kZSA9IExl
bmllbnRDb252ZXJzaW9uKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGJjNmUxMGM5N2M4MGExYTJlZWY4MGVhZTM0MzVjYmZiZDJj
NDMyZDAuLjA1ZjdhNTMzNTdkODdjMDc4N2U0NGE4ZmQ3YTM3Y2JiZTI0ZmQ5NjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAxNS0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwor
ICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3dGYvU0hBMS5o
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQyNTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggdGhl
IHRlc3QgYmVjYXVzZSB0aGUgU0hBMTo6YWRkQnl0ZXMoQ1N0cmluZykgaW50ZXJmYWNlIGlzIGRy
b3BwZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TSEExLmNwcDoKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmV4cGVjdFNIQTEpOgorCiAyMDE1LTA0LTI3ICBEZXdlaSBa
aHUgIDxkZXdlaV96aHVAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCAnX19pbml0X18ucHknIGFu
ZCBmaXgga25vd24gYnVnIGluIGJlbmNobWFyayBydW5uZXIuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TSEExLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1NIQTEuY3BwCmluZGV4IGRjZjlkMjdiMzIyYjZiZmZkNDhmZTIzMTE4MTdlNGJkODM4
Y2VhMTAuLmI1ZDFiNjMzNjEzMzIyYTE5NjMyNGU4ODE5NDAzNWVlMDVlZmZlZTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NIQTEuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1NIQTEuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyB2
b2lkIGV4cGVjdFNIQTEoQ1N0cmluZyBpbnB1dCwgaW50IHJlcGVhdCwgQ1N0cmluZyBleHBlY3Rl
ZCkKIHsKICAgICBTSEExIHNoYTE7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXQ7ICsr
aSkKLSAgICAgICAgc2hhMS5hZGRCeXRlcyhpbnB1dCk7CisgICAgICAgIHNoYTEuYWRkQnl0ZXMo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oaW5wdXQuZGF0YSgpKSwgaW5wdXQubGVu
Z3RoKCkpOwogICAgIENTdHJpbmcgYWN0dWFsID0gc2hhMS5jb21wdXRlSGV4RGlnZXN0KCk7CiAK
ICAgICBBU1NFUlRfRVEoZXhwZWN0ZWQubGVuZ3RoKCksIGFjdHVhbC5sZW5ndGgoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251844</attachid>
            <date>2015-04-28 06:31:46 -0700</date>
            <delta_ts>2015-04-29 08:26:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144257-20150428223037.patch</filename>
            <type>text/plain</type>
            <size>15044</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YzdiYmQyZjdhZGU5OWFkZGFjZDhkYmM2NThkNDJiMzM5OTAyNGUzLi5lMzQ3NTg3ZjI3MWRkOTYx
OGUxY2M4ZTExOTVmNzU5YTBjZTY2NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MCBAQAorMjAxNS0wNC0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3
dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTSEExIGlzIHVzZWQgdG8gY2FsY3VsYXRlIENvZGVCbG9ja0hhc2guCisgICAgICAgIFRvIGNh
bGN1bGF0ZSBoYXNoIHZhbHVlLCB3ZSBwYXNzIHRoZSBzb3VyY2UgY29kZSBVVEYtOCBDU3RyaW5n
IHRvIFNIQTE6OmFkZEJ5dGVzLgorICAgICAgICBIb3dldmVyLCB0aGUgc291cmNlIGNvZGUgY2Fu
IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFNvIHdoZW4gcGVyZm9ybWluZyBgc3Ry
bGVuYCBvbiB0aGUgc291cmNlIGNvZGUncyBDU3RyaW5nLCBpdCByZXR1cm5zIHRoZSBpbmNvcnJl
Y3QgbGVuZ3RoLgorICAgICAgICBJbiBTSEExOjphZGRCeXRlcywgdGhlcmUncyBhc3NlcnRpb24g
YGlucHV0Lmxlbmd0aCgpID09IHN0cmxlbihzdHJpbmcpYCBhbmQgaXQgZmFpbHMuCisKKyAgICAg
ICAgSW4gdGhlIHRlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzLCB3ZSBwZXJmb3JtIGBldmFsYCB3
aXRoIHRoZSBzY3JpcHQgY29udGFpbnMgIlwwIi4KKyAgICAgICAgQXMgdGhlIHJlc3VsdCwgYHN0
cmxlbihzdHJpbmcpYCBhY2NpZGVudGFsbHkgc2hvcnRlbmVkIGJ5IHRoZSBjb250YWluZWQgIlww
IiwgYW5kIGFzc2VydGlvbiBmYWlscy4KKworICAgICAgICBTSEExOjphZGRCeXRlcyhDU3RyaW5n
KSBpcyBwcm9ibGVtYXRpYyBiZWNhdXNlIFNIQTEgc2hvdWxkIGZlZWQgYnl0ZSBzdHJlYW1zIGFu
ZAorICAgICAgICBzaG91bGQgbm90IGFjY2VwdCBDU3RyaW5nIGJlY2F1c2UgQ1N0cmluZyBoYXMg
YSBsaW1pdGF0aW9uIHRoYXQgaXQgc2hvdWxkIG5vdCBjb250YWluCisgICAgICAgIGEgbnVsbCBj
aGFyYWN0ZXIgaW4gaXRzIGNvbnRlbnQuCisKKyAgICAgICAgQW5kIHRoaXMgYXNzZXJ0aW9uIGlz
IG5vdCBhcHByb3ByaWF0ZSBiZWNhdXNlIHRoaXMgaW52YXJpYW50IHNob3VsZCBiZSBhc3NlcnRl
ZCBpbiBDU3RyaW5nIHNpZGUKKyAgICAgICAgaWYgQ1N0cmluZyBzaG91bGQgbm90IGNvbnRhaW4g
YSBudWxsIGNoYXJhY3RlciBpbnN0ZWFkIG9mIHRoZSBTSEExOjphZGRCeXRlcyBpbXBsZW1lbnRh
dGlvbi4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMsIHRoaXMgcGF0Y2ggYWRkcyB0aGUgU3Ry
aW5nSW1wbDo6dXRmOEJ1ZmZlckZvclJhbmdlIC0+IFN0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvciBp
bnRlcmZhY2UuCisgICAgICAgIEl0IHJldHVybnMgU3RyaW5nSW1wbDo6QnVmZmVyVmVjdG9yIChW
ZWN0b3I8Y2hhciwgMTAyND4pIGFuZCBpdCBkb2Vzbid0IHRoZSBpbnZhcmlhbnQgdGhhdCBpdHMg
Y29udGVudAorICAgICAgICBkb2VzIG5vdCBoYXZlIGEgbnVsbCBjaGFyYWN0ZXIuCisKKyAgICAg
ICAgSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHdlIG9uY2UgY29udmVydCB0aGUgZW50
aXJlIHNvdXJjZSBjb2RlIHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQKKyAgICAgICAgVVRGLTggc3Ry
aW5nIGFuZCBwYXNzIGl0IHRvIHRoZSBTSEExIHByb2Nlc3NpbmcuIEhvd2V2ZXIsIHRoaXMgaXMg
bWVtb3J5IGNvbnN1bWluZy4KKyAgICAgICAgSWRlYWxseSwgd2Ugc2hvdWxkIHN0cmVhbSB0aGUg
ZGVjb2RlZCBieXRlcyBpbnRvIHRoZSBTSEExIHByb2Nlc3NpbmcgaXRlcmF0aXZlbHkuCisgICAg
ICAgIFdlJ2xsIGltcGxlbWVudCBpdCBpbiB0aGUgc2VwYXJhdGUgcGF0Y2hbMV0uCisKKyAgICAg
ICAgWzFdOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjYzCisK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrSGFzaDo6Q29kZUJsb2NrSGFzaCk6CisgICAgICAgICogcGFyc2VyL1NvdXJjZUNvZGUu
Y3BwOgorICAgICAgICAoSlNDOjpTb3VyY2VDb2RlOjp0b1VURjhCdWZmZXIpOgorICAgICAgICAo
SlNDOjpTb3VyY2VDb2RlOjp0b1VURjgpOgorICAgICAgICAqIHBhcnNlci9Tb3VyY2VDb2RlLmg6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFj
dGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy90ZW1wbGF0ZS1saXRlcmFsLWxpbmUtdGVybWluYXRvcnMuanM6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzOgorICAg
ICAgICAqIHRlc3RzL3N0cmVzcy90ZW1wbGF0ZS1saXRlcmFsLmpzOgorCiAyMDE1LTA0LTI3ICBB
bmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdFeHAgbWF0Y2hl
cyBhcnJheXMgc2hvdWxkIHVzZSBjb250aWd1b3VzIGluZGV4aW5nLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4Yjk2ZmNmODNh
ZThlZWIxYzQyNzVkZGEzMzc4NDA0YzBkZjAzMjczLi4yZTc2YTM5ZGUyOWFjZjUxNDM5ZTY1YzM0
MTNjODhkNzhkZjFkMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA0LTI4ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIx
ODMzNzMpOiBBU1NFUlQgZmFpbGVkIGluIHd0Zi9TSEExLmgKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI1NworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTdHJpbmdJbXBsOjp1dGY4QnVmZmVyRm9y
UmFuZ2UuIEl0IHJldHVybnMgVmVjdG9yPGNoYXIsIDEwMjQ+IGFuZCBpdCBkb2VzIG5vdAorICAg
ICAgICBoYXZlIHRoZSBpbnZhcmlhbnQgdGhhdCBpdHMgY29udGVudCBkb2VzIG5vdCBoYXZlIGEg
bnVsbCBjaGFyYWN0ZXIgd2hpbGUgQ1N0cmluZyBoYXMKKyAgICAgICAgdGhpcyBpbnZhcmlhbnQu
CisgICAgICAgIEFuZCBpbXBsZW1lbnQgdXRmOEZvclJhbmdlIGJhc2VkIG9uIHRoaXMgZnVuY3Rp
b24uCisKKyAgICAgICAgQW5kIGRyb3AgU0hBMTo6YWRkQnl0ZXMoQ1N0cmluZykgaW50ZXJmYWNl
IGJlY2F1c2UgaXQgaXMgcHJvYmxlbWF0aWMuCisgICAgICAgIFNIQTEgLyBNRDUgZXRjLiBzaG91
bGQgb25seSBhY2NlcHQgYnl0ZXMuCisKKyAgICAgICAgKiB3dGYvU0hBMS5oOgorICAgICAgICAo
V1RGOjpTSEExOjphZGRCeXRlcyk6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5jcHA6
CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6OnV0ZjhGb3JDaGFyYWN0ZXJzKToKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdJbXBsLmg6CisKIDIwMTUtMDQtMjcgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJlbmFtZSBXVEZfVVNFXzNEX0dSQVBISUNTIHRvIEVOQUJM
RV9HUkFQSElDU19DT05URVhUXzNECmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrSGFzaC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrSGFzaC5jcHAKaW5kZXggODdjMDkyZjY0YTg5MTM2NDI2MTE4MGU2NTJhOTQ3
ZGZlM2RlOTZlNS4uNGM1MzRlODQ0N2M4Njc3NzA3ZDdjMGIwMGVkMmI3MjQxMDNiYTZkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0hhc2guY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tIYXNoLmNwcApA
QCAtNDEsNyArNDEsOCBAQAogICAgIDogbV9oYXNoKDApCiB7CiAgICAgU0hBMSBzaGExOwotICAg
IHNoYTEuYWRkQnl0ZXMoc291cmNlQ29kZS50b1VURjgoKSk7CisgICAgU3RyaW5nSW1wbDo6QnVm
ZmVyVmVjdG9yIGJ1ZmZlclZlY3RvciA9IHNvdXJjZUNvZGUudG9VVEY4QnVmZmVyKCk7CisgICAg
c2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXJWZWN0
b3IuZGF0YSgpKSwgYnVmZmVyVmVjdG9yLnNpemUoKSk7CiAgICAgU0hBMTo6RGlnZXN0IGRpZ2Vz
dDsKICAgICBzaGExLmNvbXB1dGVIYXNoKGRpZ2VzdCk7CiAgICAgbV9oYXNoICs9IGRpZ2VzdFsw
XSB8IChkaWdlc3RbMV0gPDwgOCkgfCAoZGlnZXN0WzJdIDw8IDE2KSB8IChkaWdlc3RbM10gPDwg
MjQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlQ29kZS5jcHAKaW5kZXgg
OGVmMTY4ZGVhYTkyYzM1YTgxYTQyN2Q4NjYwODljMDE4OTUyY2YyMS4uY2M0MDhjNDAzOGM0OWZi
ZjA3NTA3M2IyZWU1ZjFjMWQ5M2RiY2ZmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Tb3VyY2VDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1NvdXJjZUNvZGUuY3BwCkBAIC0zMSwxMSArMzEsMjMgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK1N0cmluZ0ltcGw6OkJ1ZmZlclZlY3RvciBTb3VyY2VDb2RlOjp0b1VURjhCdWZmZXIoKSBj
b25zdAoreworICAgIGlmICghbV9wcm92aWRlcikKKyAgICAgICAgcmV0dXJuIFN0cmluZ0ltcGw6
OkJ1ZmZlclZlY3RvcigpOworCisgICAgLy8gQmVjYXVzZSB3ZSBkbyBub3QgdXNlIHN0cmljdCBj
b252ZXJzaW9uIG1vZGUgZm9yIHRoaXMgVVRGLTggY29udmVyc2lvbiwKKyAgICAvLyBjb252ZXJz
aW9uIGFsd2F5cyBzdWNjZWVkIHVubGVzcyB0aGUgbGVuZ3RoIG9mIHRoZSBjb252ZXJ0ZWQgc3Ry
aW5nIGV4Y2VlZHMgVUlOVDMyX01BWC4KKyAgICAvLyBJbiBzdWNoIGEgY2FzZSwgdXRmOEJ1ZmZl
ckZvclJhbmdlIGFsd2F5cyByZXR1cm5zIGFuIGVtcHR5IGJ1ZmZlciB2ZWN0b3IuCisgICAgYm9v
bCBjb252ZXJzaW9uRXJyb3IgPSBmYWxzZTsKKyAgICByZXR1cm4gbV9wcm92aWRlci0+c291cmNl
KCkuaW1wbCgpLT51dGY4QnVmZmVyRm9yUmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhciAtIG1f
c3RhcnRDaGFyLCBjb252ZXJzaW9uRXJyb3IpOworfQorCiBDU3RyaW5nIFNvdXJjZUNvZGU6OnRv
VVRGOCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Byb3ZpZGVyKQogICAgICAgICByZXR1cm4gQ1N0
cmluZygiIiwgMCk7Ci0gICAgCisKICAgICByZXR1cm4gbV9wcm92aWRlci0+c291cmNlKCkuaW1w
bCgpLT51dGY4Rm9yUmFuZ2UobV9zdGFydENoYXIsIG1fZW5kQ2hhciAtIG1fc3RhcnRDaGFyKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2Rl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGUuaAppbmRleCA3M2Qy
M2RiODJhZjI1ZWE0NmMwZjg5Nzg1Y2U0MjRiYjYwZWI2MWE3Li5iMTVhODg3MTlkMmUwODA0ZmYz
MjY4YjYzOWUyNDUyYWRhNGJhOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1NvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZUNvZGUuaApAQCAtODcsNiArODcsNyBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBDU3RyaW5nIHRvVVRGOCgpIGNvbnN0OworICAgICAgICBTdHJpbmdJbXBsOjpCdWZmZXJWZWN0
b3IgdG9VVEY4QnVmZmVyKCkgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBpbnRwdHJfdCBwcm92
aWRlcklEKCkgY29uc3QKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9ldmFsLXNjcmlwdC1jb250YWlucy1udWxsLWNoYXJhY3Rlci5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZXZhbC1zY3JpcHQtY29udGFpbnMt
bnVsbC1jaGFyYWN0ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDE5MjE1ZGE0OWMyN2RiYjRjYmU2ZDlmN2Rh
MDVlZmQ1ZDRiM2U2YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvZXZhbC1zY3JpcHQtY29udGFpbnMtbnVsbC1jaGFyYWN0ZXIuanMKQEAgLTAs
MCArMSwxMyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1
ZTogIiArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgc2hvdWxkQmUoZXZh
bCgiKGBcMGApIiksICJcMCIpOworICAgIHNob3VsZEJlKGV2YWwoIignXDAnKSIpLCAiXDAiKTsK
K30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisg
ICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy90ZW1wbGF0ZS1saXRlcmFsLWxpbmUtdGVybWluYXRvcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVyYWwtbGluZS10ZXJtaW5hdG9ycy5qcwpp
bmRleCA1ZTlkMjNmOTliMDI3MzBlMzViZWVmNGI2NDE3YWNmY2JlODU2Njg5Li4wMTlhMWY5OGNh
MDQ5Njg5YmZhNzFhODFlZmZkNGRhM2IyYmYwMDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVyYWwtbGluZS10ZXJtaW5hdG9ycy5q
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVy
YWwtbGluZS10ZXJtaW5hdG9ycy5qcwpAQCAtMSw0ICsxLDMgQEAKLS8vQCBza2lwCiAKIGZ1bmN0
aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90ZW1wbGF0
ZS1saXRlcmFsLXN5bnRheC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
dGVtcGxhdGUtbGl0ZXJhbC1zeW50YXguanMKaW5kZXggOGM3ZGIxMWI5MTJlZmQ0NzgzYzM1NDU0
ZTk2NzRiYjM2YTI3NzM3Mi4uYjQ0NDI4MGU5ZjliZWE4ZTBjZTViYjZiMTRlNGMwNjM5MDllNGQ0
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90ZW1wbGF0
ZS1saXRlcmFsLXN5bnRheC5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3RlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzCkBAIC0xLDQgKzEsMyBAQAotLy9AIHNraXAK
IAogZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKICAgICB0cnkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90ZW1wbGF0ZS1saXRlcmFsLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90ZW1wbGF0ZS1saXRlcmFsLmpzCmlu
ZGV4IDBkZDk3OGQwMzQxMTgwNDRiMDZjYjgxZWVhODMzYjAyNjRmNDdmMjYuLjI4YjQ0NzJjYTZh
MzZhZTgzNTA0NzcxNWIwNGU1YjU2OTFiYzE0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvdGVtcGxhdGUtbGl0ZXJhbC5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVyYWwuanMKQEAgLTEsNCArMSwz
IEBACi0vL0Agc2tpcAogCiBmdW5jdGlvbiB0ZXN0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKICAgICBp
ZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NIQTEu
aCBiL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAppbmRleCA2MzM2NWNmMDA4ZjYxNmQ0NDFmZDJiMmU3
YjUxNTE3MWIxYTNiMzg4Li5hN2U1MTk1ZmNmMzgwY2Q0ZjVkZjFiMGNiYzcyZWFlNGUzYjZiNjE5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9TSEExLmgKKysrIGIvU291cmNlL1dURi93dGYv
U0hBMS5oCkBAIC00OSwxNiArNDksNiBAQCBjbGFzcyBTSEExIHsKICAgICB7CiAgICAgICAgIGFk
ZEJ5dGVzKGlucHV0LmRhdGEoKSwgaW5wdXQuc2l6ZSgpKTsKICAgICB9Ci0gICAgdm9pZCBhZGRC
eXRlcyhjb25zdCBDU3RyaW5nJiBpbnB1dCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHN0
cmluZyA9IGlucHV0LmRhdGEoKTsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhlIGNyZWF0
b3Igb2YgdGhlIENTdHJpbmcgZGlkbid0IG1ha2UgdGhlIG1pc3Rha2UKLSAgICAgICAgLy8gb2Yg
Zm9yY2luZyBsZW5ndGgoKSB0byBiZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gY3Jl
YXRlIHRoZQotICAgICAgICAvLyBzdHJpbmcsIHByaW9yIHRvIGluc2VydGluZyB0aGUgbnVsbCB0
ZXJtaW5hdG9yIGVhcmxpZXIgaW4gdGhlCi0gICAgICAgIC8vIHNlcXVlbmNlLgotICAgICAgICBB
U1NFUlQoaW5wdXQubGVuZ3RoKCkgPT0gc3RybGVuKHN0cmluZykpOwotICAgICAgICBhZGRCeXRl
cyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihzdHJpbmcpLCBpbnB1dC5sZW5ndGgo
KSk7Ci0gICAgfQogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGFkZEJ5dGVzKGNvbnN0IHVp
bnQ4X3QqIGlucHV0LCBzaXplX3QgbGVuZ3RoKTsKIAogICAgIC8vIFNpemUgb2YgdGhlIFNIQTEg
aGFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggODNiMTUyMzllMTJlZGI1MTBj
OWY0MGVlNmM4MmVmMGVkZDY3M2E2Yy4uMzYzMTkwYWNmNjk4NDYwNzJmMWFjZGM5NDE2ZmJiMTkx
ZTM5YTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCkBAIC0yMTkyLDM0ICsyMTky
LDM4IEBAIENTdHJpbmcgU3RyaW5nSW1wbDo6dXRmOEZvckNoYXJhY3RlcnMoY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwKICAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIs
IDApOwogICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkgLyAzKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwotICAgIFZlY3RvcjxjaGFyLCAxMDI0
PiBidWZmZXJWZWN0b3IobGVuZ3RoICogMyk7CisgICAgQnVmZmVyVmVjdG9yIGJ1ZmZlclZlY3Rv
cihsZW5ndGggKiAzKTsKICAgICBjaGFyKiBidWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgpOwog
ICAgIGlmICghdXRmOEltcGwoY2hhcmFjdGVycywgbGVuZ3RoLCBidWZmZXIsIGJ1ZmZlclZlY3Rv
ci5zaXplKCksIG1vZGUpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogICAgIHJldHVybiBD
U3RyaW5nKGJ1ZmZlclZlY3Rvci5kYXRhKCksIGJ1ZmZlciAtIGJ1ZmZlclZlY3Rvci5kYXRhKCkp
OwogfQogCi1DU3RyaW5nIFN0cmluZ0ltcGw6OnV0ZjhGb3JSYW5nZSh1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGxlbmd0aCwgQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKK2F1dG8gU3RyaW5n
SW1wbDo6dXRmOEJ1ZmZlckZvclJhbmdlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3Ro
LCBib29sJiBzdWNjZXNzLCBDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdCAtPiBCdWZmZXJWZWN0
b3IKIHsKICAgICBBU1NFUlQob2Zmc2V0IDw9IHRoaXMtPmxlbmd0aCgpKTsKICAgICBBU1NFUlQo
b2Zmc2V0ICsgbGVuZ3RoIDw9IHRoaXMtPmxlbmd0aCgpKTsKLSAgICAKLSAgICBpZiAoIWxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIENTdHJpbmcoIiIsIDApOworCisgICAgaWYgKCFsZW5ndGgpIHsK
KyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgIHJldHVybiBCdWZmZXJWZWN0b3IoKTsK
KyAgICB9CiAKICAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciBiaWcgZW5vdWdoIHRvIGhvbGQgYWxs
IHRoZSBjaGFyYWN0ZXJzCiAgICAgLy8gKGFuIGluZGl2aWR1YWwgVVRGLTE2IFVDaGFyIGNhbiBv
bmx5IGV4cGFuZCB0byAzIFVURi04IGJ5dGVzKS4KICAgICAvLyBPcHRpbWl6YXRpb24gaWRlYXMs
IGlmIHdlIGZpbmQgdGhpcyBmdW5jdGlvbiBpcyBob3Q6Ci0gICAgLy8gICogV2UgY291bGQgc3Bl
Y3VsYXRpdmVseSBjcmVhdGUgYSBDU3RyaW5nQnVmZmVyIHRvIGNvbnRhaW4gJ2xlbmd0aCcgCisg
ICAgLy8gICogV2UgY291bGQgc3BlY3VsYXRpdmVseSBjcmVhdGUgYSBDU3RyaW5nQnVmZmVyIHRv
IGNvbnRhaW4gJ2xlbmd0aCcKICAgICAvLyAgICBjaGFyYWN0ZXJzLCBhbmQgcmVzaXplIGlmIG5l
Y2Vzc2FyeSAoaS5lLiBpZiB0aGUgYnVmZmVyIGNvbnRhaW5zCiAgICAgLy8gICAgbm9uLWFzY2lp
IGNoYXJhY3RlcnMpLiAoQWx0ZXJuYXRpdmVseSwgc2NhbiB0aGUgYnVmZmVyIGZpcnN0IGZvcgog
ICAgIC8vICAgIGFzY2lpIGNoYXJhY3RlcnMsIHNvIHdlIGtub3cgdGhpcyB3aWxsIGJlIHN1ZmZp
Y2llbnQpLgogICAgIC8vICAqIFdlIGNvdWxkIGFsbG9jYXRlIGEgQ1N0cmluZ0J1ZmZlciB3aXRo
IGFuIGFwcHJvcHJpYXRlIHNpemUgdG8KICAgICAvLyAgICBoYXZlIGEgZ29vZCBjaGFuY2Ugb2Yg
YmVpbmcgYWJsZSB0byB3cml0ZSB0aGUgc3RyaW5nIGludG8gdGhlCiAgICAgLy8gICAgYnVmZmVy
IHdpdGhvdXQgcmVhbGxvY2luZyAoc2F5LCAxLjUgeCBsZW5ndGgpLgotICAgIGlmIChsZW5ndGgg
PiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLyAzKQotICAgICAgICByZXR1
cm4gQ1N0cmluZygpOwotICAgIFZlY3RvcjxjaGFyLCAxMDI0PiBidWZmZXJWZWN0b3IobGVuZ3Ro
ICogMyk7CisgICAgaWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+Ojpt
YXgoKSAvIDMpIHsKKyAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICByZXR1cm4gQnVm
ZmVyVmVjdG9yKCk7CisgICAgfQorICAgIEJ1ZmZlclZlY3RvciBidWZmZXJWZWN0b3IobGVuZ3Ro
ICogMyk7CiAKICAgICBjaGFyKiBidWZmZXIgPSBidWZmZXJWZWN0b3IuZGF0YSgpOwogCkBAIC0y
MjI5LDExICsyMjMzLDI0IEBAIENTdHJpbmcgU3RyaW5nSW1wbDo6dXRmOEZvclJhbmdlKHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBDb252ZXJzaW9uTW9kCiAgICAgICAgIENvbnZl
cnNpb25SZXN1bHQgcmVzdWx0ID0gY29udmVydExhdGluMVRvVVRGOCgmY2hhcmFjdGVycywgY2hh
cmFjdGVycyArIGxlbmd0aCwgJmJ1ZmZlciwgYnVmZmVyICsgYnVmZmVyVmVjdG9yLnNpemUoKSk7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQgIT0gdGFyZ2V0RXhoYXVzdGVk
KTsgLy8gKGxlbmd0aCAqIDMpIHNob3VsZCBiZSBzdWZmaWNpZW50IGZvciBhbnkgY29udmVyc2lv
bgogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghdXRmOEltcGwodGhpcy0+Y2hhcmFjdGVyczE2
KCkgKyBvZmZzZXQsIGxlbmd0aCwgYnVmZmVyLCBidWZmZXJWZWN0b3Iuc2l6ZSgpLCBtb2RlKSkK
LSAgICAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgICAgIGlmICghdXRmOEltcGwodGhp
cy0+Y2hhcmFjdGVyczE2KCkgKyBvZmZzZXQsIGxlbmd0aCwgYnVmZmVyLCBidWZmZXJWZWN0b3Iu
c2l6ZSgpLCBtb2RlKSkgeworICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICAg
ICAgcmV0dXJuIEJ1ZmZlclZlY3RvcigpOworICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IENTdHJpbmcoYnVmZmVyVmVjdG9yLmRhdGEoKSwgYnVmZmVyIC0gYnVmZmVyVmVjdG9yLmRhdGEo
KSk7CisgICAgc3VjY2VzcyA9IHRydWU7CisgICAgYnVmZmVyVmVjdG9yLnNocmluayhidWZmZXIg
LSBidWZmZXJWZWN0b3IuZGF0YSgpKTsKKyAgICByZXR1cm4gYnVmZmVyVmVjdG9yOworfQorCitD
U3RyaW5nIFN0cmluZ0ltcGw6OnV0ZjhGb3JSYW5nZSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVk
IGxlbmd0aCwgQ29udmVyc2lvbk1vZGUgbW9kZSkgY29uc3QKK3sKKyAgICBib29sIHN1Y2Nlc3Mg
PSBmYWxzZTsKKyAgICBCdWZmZXJWZWN0b3IgYnVmZmVyVmVjdG9yID0gdXRmOEJ1ZmZlckZvclJh
bmdlKG9mZnNldCwgbGVuZ3RoLCBzdWNjZXNzLCBtb2RlKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisg
ICAgICAgIHJldHVybiBDU3RyaW5nKCk7CisgICAgcmV0dXJuIENTdHJpbmcoYnVmZmVyVmVjdG9y
LmRhdGEoKSwgYnVmZmVyVmVjdG9yLnNpemUoKSk7CiB9CiAKIENTdHJpbmcgU3RyaW5nSW1wbDo6
dXRmOChDb252ZXJzaW9uTW9kZSBtb2RlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApp
bmRleCA5Mzk5MDI4ZWQzNzAyZmRhMDExOGM3NjYxY2Y4YWRmMDBmM2QxMWNlLi5hZWVkMWViNDg2
N2Y0YjlmN2M4NDg2Njg0YjU1YWE0NjU2OGRkZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aApAQCAtNTE0LDYgKzUxNCw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogI2VuZGlmCiAKICAgICBz
dGF0aWMgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIENTdHJpbmcgdXRmOEZvckNoYXJhY3RlcnMoY29u
c3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ29udmVyc2lvbk1vZGUgPSBM
ZW5pZW50Q29udmVyc2lvbik7CisgICAgdHlwZWRlZiBWZWN0b3I8Y2hhciwgMTAyND4gQnVmZmVy
VmVjdG9yOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBCdWZmZXJWZWN0b3IgdXRmOEJ1ZmZl
ckZvclJhbmdlKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoLCBib29sJiBzdWNjZXNz
LCBDb252ZXJzaW9uTW9kZSA9IExlbmllbnRDb252ZXJzaW9uKSBjb25zdDsKICAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgQ1N0cmluZyB1dGY4Rm9yUmFuZ2UodW5zaWduZWQgb2Zmc2V0LCB1bnNp
Z25lZCBsZW5ndGgsIENvbnZlcnNpb25Nb2RlID0gTGVuaWVudENvbnZlcnNpb24pIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBDU3RyaW5nIHV0ZjgoQ29udmVyc2lvbk1vZGUgPSBM
ZW5pZW50Q29udmVyc2lvbikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiYzZlMTBjOTdjODBhMWEyZWVmODBlYWUzNDM1Y2JmYmQy
YzQzMmQwLi4wNWY3YTUzMzU3ZDg3YzA3ODdlNDRhOGZkN2EzN2NiYmUyNGZkOTY1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTUtMDQtMjggIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisK
KyAgICAgICAgUkVHUkVTU0lPTiAocjE4MzM3Myk6IEFTU0VSVCBmYWlsZWQgaW4gd3RmL1NIQTEu
aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MjU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IHRo
ZSB0ZXN0IGJlY2F1c2UgdGhlIFNIQTE6OmFkZEJ5dGVzKENTdHJpbmcpIGludGVyZmFjZSBpcyBk
cm9wcGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU0hBMS5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpleHBlY3RTSEExKToKKwogMjAxNS0wNC0yNyAgRGV3ZWkg
Wmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgJ19faW5pdF9fLnB5JyBh
bmQgZml4IGtub3duIGJ1ZyBpbiBiZW5jaG1hcmsgcnVubmVyLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU0hBMS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9TSEExLmNwcAppbmRleCBkY2Y5ZDI3YjMyMmI2YmZmZDQ4ZmUyMzExODE3ZTRiZDgz
OGNlYTEwLi5iNWQxYjYzMzYxMzMyMmExOTYzMjRlODgxOTQwMzVlZTA1ZWZmZWUyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TSEExLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TSEExLmNwcApAQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMg
dm9pZCBleHBlY3RTSEExKENTdHJpbmcgaW5wdXQsIGludCByZXBlYXQsIENTdHJpbmcgZXhwZWN0
ZWQpCiB7CiAgICAgU0hBMSBzaGExOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVwZWF0OyAr
K2kpCi0gICAgICAgIHNoYTEuYWRkQnl0ZXMoaW5wdXQpOworICAgICAgICBzaGExLmFkZEJ5dGVz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGlucHV0LmRhdGEoKSksIGlucHV0Lmxl
bmd0aCgpKTsKICAgICBDU3RyaW5nIGFjdHVhbCA9IHNoYTEuY29tcHV0ZUhleERpZ2VzdCgpOwog
CiAgICAgQVNTRVJUX0VRKGV4cGVjdGVkLmxlbmd0aCgpLCBhY3R1YWwubGVuZ3RoKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251951</attachid>
            <date>2015-04-29 08:33:40 -0700</date>
            <delta_ts>2015-04-29 10:46:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144257-20150430003230.patch</filename>
            <type>text/plain</type>
            <size>5842</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MzY5Y2IzNjIyYWQ4YmEwYWM0YmFiZWMwZmEyYmYyYzk3MDhjNDNiLi41YzJkY2E4OTg3ZDRkNTgy
M2U3ZmMzZjI4NzgwMDNhZjU3ZmQ3NjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MiBAQAorMjAxNS0wNC0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMTgzMzczKTogQVNTRVJUIGZhaWxlZCBpbiB3
dGYvU0hBMS5oCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDQyNTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBTSEExIGlzIHVzZWQgdG8gY2FsY3VsYXRlIENvZGVCbG9ja0hhc2guCisgICAgICAgIFRvIGNh
bGN1bGF0ZSBoYXNoIHZhbHVlLCB3ZSBwYXNzIHRoZSBzb3VyY2UgY29kZSBVVEYtOCBDU3RyaW5n
IHRvIFNIQTE6OmFkZEJ5dGVzLgorICAgICAgICBIb3dldmVyLCB0aGUgc291cmNlIGNvZGUgY2Fu
IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXIuCisgICAgICAgIFNvIHdoZW4gcGVyZm9ybWluZyBgc3Ry
bGVuYCBvbiB0aGUgc291cmNlIGNvZGUncyBDU3RyaW5nLCBpdCByZXR1cm5zIHRoZSBpbmNvcnJl
Y3QgbGVuZ3RoLgorICAgICAgICBJbiBTSEExOjphZGRCeXRlcywgdGhlcmUncyBhc3NlcnRpb24g
YGlucHV0Lmxlbmd0aCgpID09IHN0cmxlbihzdHJpbmcpYCBhbmQgaXQgZmFpbHMuCisKKyAgICAg
ICAgSW4gdGhlIHRlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzLCB3ZSBwZXJmb3JtIGBldmFsYCB3
aXRoIHRoZSBzY3JpcHQgY29udGFpbnMgIlwwIi4KKyAgICAgICAgQXMgdGhlIHJlc3VsdCwgYHN0
cmxlbihzdHJpbmcpYCBhY2NpZGVudGFsbHkgc2hvcnRlbmVkIGJ5IHRoZSBjb250YWluZWQgIlww
IiwgYW5kIGFzc2VydGlvbiBmYWlscy4KKworICAgICAgICBDU3RyaW5nIHdpbGwgYmUgY2hhbmdl
ZCBub3QgdG8gY29udGFpbiBhIG51bGwtY2hhcmFjdGVyWzFdLiBIb3dldmVyLCBpbnNlcnRpbmcg
dGhlIGFzc2VydGlvbiBoZXJlCisgICAgICAgIGlzIG5vdCBjb3JyZWN0LiBCZWNhdXNlCisKKyAg
ICAgICAgMS4gSWYgQ1N0cmluZyBzaG91bGQgbm90IGNvbnRhaW4gYSBudWxsIGNoYXJhY3Rlciwg
dGhpcyBzaG91bGQgYmUgYXNzZXJ0ZWQgaW4gQ1N0cmluZyBzaWRlIGluc3RlYWQgb2YgU0hBMTo6
YWRkQnl0ZXMuCisgICAgICAgIDIuIElmIENTdHJpbmcgY2FuIGNvbnRhaW4gYSBudWxsIGNoYXJh
Y3RlciwgdGhpcyBhc3NlcnRpb24gYmVjb21lcyBpbmNvcnJlY3QuCisKKyAgICAgICAgU28gdGhp
cyBwYXRjaCBqdXN0IGRyb3BzIHRoZSBhc3NlcnRpb24uCisKKyAgICAgICAgSW4gdGhlIGN1cnJl
bnQgaW1wbGVtZW50YXRpb24sIHdlIG9uY2UgY29udmVydCB0aGUgZW50aXJlIHNvdXJjZSBjb2Rl
IHRvIHRoZSBuZXdseSBhbGxvY2F0ZWQKKyAgICAgICAgVVRGLTggc3RyaW5nIGFuZCBwYXNzIGl0
IHRvIHRoZSBTSEExIHByb2Nlc3NpbmcuIEhvd2V2ZXIsIHRoaXMgaXMgbWVtb3J5IGNvbnN1bWlu
Zy4KKyAgICAgICAgSWRlYWxseSwgd2Ugc2hvdWxkIHN0cmVhbSB0aGUgZGVjb2RlZCBieXRlcyBp
bnRvIHRoZSBTSEExIHByb2Nlc3NpbmcgaXRlcmF0aXZlbHkuCisgICAgICAgIFdlJ2xsIGltcGxl
bWVudCBpdCBpbiB0aGUgc2VwYXJhdGUgcGF0Y2hbMl0uCisKKyAgICAgICAgWzFdOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MzM5CisgICAgICAgIFsyXTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI2MworCisgICAgICAgICog
dGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFjdGVyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy90ZW1wbGF0ZS1saXRlcmFsLWxpbmUtdGVybWluYXRvcnMuanM6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVyYWwtc3ludGF4LmpzOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy90ZW1wbGF0ZS1saXRlcmFsLmpzOgorCiAyMDE1LTA0LTI5ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTigxODE4NjgpOiBX
aW5kb3dzIExpdmUgU2t5RHJpdmUgY2Fubm90IG9wZW4gYW4gZXhjZWwgZmlsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA5YTVm
NWQyZjRjOTA2YTM0ZTZiOTQzMWY1YzMwNzZmYWQ5YzI2Mzg5Li5hODMxZTY0NzVmNzA2YzQ3ZDY4
YjliYTdjZmRiYzdhYTljNmVmZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA0LTI5ICBZ
dXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T04gKHIxODMzNzMpOiBBU1NFUlQgZmFpbGVkIGluIHd0Zi9TSEExLmgKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDI1NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1NIQTEuaDoKKyAgICAgICAg
KFdURjo6U0hBMTo6YWRkQnl0ZXMpOgorCiAyMDE1LTA0LTI4ICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBGdWxseSByZXBsYWNlIEVOQUJMRV9M
TElOVF9DX0xPT1Agd2l0aCBFTkFCTEVfSklUCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL2V2YWwtc2NyaXB0LWNvbnRhaW5zLW51bGwtY2hhcmFjdGVyLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9ldmFsLXNjcmlwdC1jb250YWlu
cy1udWxsLWNoYXJhY3Rlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MTkyMTVkYTQ5YzI3ZGJiNGNiZTZkOWY3
ZGEwNWVmZDVkNGIzZTZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9ldmFsLXNjcmlwdC1jb250YWlucy1udWxsLWNoYXJhY3Rlci5qcwpAQCAt
MCwwICsxLDEzIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZh
bHVlOiAiICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdCgpIHsKKyAgICBzaG91bGRCZShl
dmFsKCIoYFwwYCkiKSwgIlwwIik7CisgICAgc2hvdWxkQmUoZXZhbCgiKCdcMCcpIiksICJcMCIp
OworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkK
KyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3RlbXBsYXRlLWxpdGVyYWwtbGluZS10ZXJtaW5hdG9ycy5qcyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9zdHJlc3MvdGVtcGxhdGUtbGl0ZXJhbC1saW5lLXRlcm1pbmF0b3JzLmpz
CmluZGV4IDVlOWQyM2Y5OWIwMjczMGUzNWJlZWY0YjY0MTdhY2ZjYmU4NTY2ODkuLjAxOWExZjk4
Y2EwNDk2ODliZmE3MWE4MWVmZmQ0ZGEzYjJiZjAwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGVtcGxhdGUtbGl0ZXJhbC1saW5lLXRlcm1pbmF0b3Jz
LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGVtcGxhdGUtbGl0
ZXJhbC1saW5lLXRlcm1pbmF0b3JzLmpzCkBAIC0xLDQgKzEsMyBAQAotLy9AIHNraXAKIAogZnVu
Y3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVkKSB7CiAgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RlbXBs
YXRlLWxpdGVyYWwtc3ludGF4LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy90ZW1wbGF0ZS1saXRlcmFsLXN5bnRheC5qcwppbmRleCA4YzdkYjExYjkxMmVmZDQ3ODNjMzU0
NTRlOTY3NGJiMzZhMjc3MzcyLi5iNDQ0MjgwZTlmOWJlYThlMGNlNWJiNmIxNGU0YzA2MzkwOWU0
ZDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RlbXBs
YXRlLWxpdGVyYWwtc3ludGF4LmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvdGVtcGxhdGUtbGl0ZXJhbC1zeW50YXguanMKQEAgLTEsNCArMSwzIEBACi0vL0Agc2tp
cAogCiBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgewogICAgIHRyeSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVyYWwuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3RlbXBsYXRlLWxpdGVyYWwuanMK
aW5kZXggMGRkOTc4ZDAzNDExODA0NGIwNmNiODFlZWE4MzNiMDI2NGY0N2YyNi4uMjhiNDQ3MmNh
NmEzNmFlODM1MDQ3NzE1YjA0ZTViNTY5MWJjMTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90ZW1wbGF0ZS1saXRlcmFsLmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdGVtcGxhdGUtbGl0ZXJhbC5qcwpAQCAtMSw0ICsx
LDMgQEAKLS8vQCBza2lwCiAKIGZ1bmN0aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgewogICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvU0hB
MS5oIGIvU291cmNlL1dURi93dGYvU0hBMS5oCmluZGV4IDYzMzY1Y2YwMDhmNjE2ZDQ0MWZkMmIy
ZTdiNTE1MTcxYjFhM2IzODguLjAwOWI0ODRhZDljMTgwZTJiM2JjZmY0ZWJiNzNiNWYyYmEzZWE0
ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1NIQTEuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9TSEExLmgKQEAgLTUyLDExICs1Miw2IEBAIGNsYXNzIFNIQTEgewogICAgIHZvaWQgYWRkQnl0
ZXMoY29uc3QgQ1N0cmluZyYgaW5wdXQpCiAgICAgewogICAgICAgICBjb25zdCBjaGFyKiBzdHJp
bmcgPSBpbnB1dC5kYXRhKCk7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBjcmVhdG9y
IG9mIHRoZSBDU3RyaW5nIGRpZG4ndCBtYWtlIHRoZSBtaXN0YWtlCi0gICAgICAgIC8vIG9mIGZv
cmNpbmcgbGVuZ3RoKCkgdG8gYmUgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGNyZWF0
ZSB0aGUKLSAgICAgICAgLy8gc3RyaW5nLCBwcmlvciB0byBpbnNlcnRpbmcgdGhlIG51bGwgdGVy
bWluYXRvciBlYXJsaWVyIGluIHRoZQotICAgICAgICAvLyBzZXF1ZW5jZS4KLSAgICAgICAgQVNT
RVJUKGlucHV0Lmxlbmd0aCgpID09IHN0cmxlbihzdHJpbmcpKTsKICAgICAgICAgYWRkQnl0ZXMo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3RyaW5nKSwgaW5wdXQubGVuZ3RoKCkp
OwogICAgIH0KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRCeXRlcyhjb25zdCB1aW50
OF90KiBpbnB1dCwgc2l6ZV90IGxlbmd0aCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>