<?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>146425</bug_id>
          
          <creation_ts>2015-06-29 14:05:31 -0700</creation_ts>
          <short_desc>[Content Extensions] Add 3 byte jump size</short_desc>
          <delta_ts>2015-07-10 14:30:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1105493</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-29 14:05:31 -0700</bug_when>
    <thetext>Many jumps can be represented with 3 bytes, and adding an Int24 jump type significantly reduces byte code size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105496</commentid>
    <comment_count>1</comment_count>
      <attachid>255776</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-29 14:09:37 -0700</bug_when>
    <thetext>Created attachment 255776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105499</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-29 14:14:25 -0700</bug_when>
    <thetext>This reduced total byte code size in a large test from 14970936 bytes to 13207142 bytes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105501</commentid>
    <comment_count>3</comment_count>
      <attachid>255777</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-29 14:18:59 -0700</bug_when>
    <thetext>Created attachment 255777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1105521</commentid>
    <comment_count>4</comment_count>
      <attachid>255777</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-06-29 15:12:25 -0700</bug_when>
    <thetext>Comment on attachment 255777
Patch

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

&gt; Source/WebCore/contentextensions/DFABytecode.h:96
&gt; +    if (longestPossibleJump &lt; 256 * 256 * 256 &amp;&amp; longestPossibleJump &gt;= -256 * 256 * 256)

It would prefer if &quot;256 * 256 * 256 - 1&quot; and &quot;256 * 256 * 256&quot; had names (Int24Min and Int24Max)

&gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:374
&gt; +            RELEASE_ASSERT(distance &gt;= -256 * 256 * 256 &amp;&amp; distance &lt; 256 * 256 * 256);

Ditto.

&gt; Source/WebCore/contentextensions/DFABytecodeInterpreter.cpp:90
&gt; +        return getBits&lt;uint16_t&gt;(bytecode, bytecodeLength, index, pagesUsed) &amp; static_cast&lt;int32_t&gt;(getBits&lt;int8_t&gt;(bytecode, bytecodeLength, index + sizeof(uint16_t), pagesUsed)) &lt;&lt; 16;

&quot;Binary and&quot; between the two parts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106229</commentid>
    <comment_count>5</comment_count>
      <attachid>255966</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-01 16:23:13 -0700</bug_when>
    <thetext>Created attachment 255966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106282</commentid>
    <comment_count>6</comment_count>
      <attachid>255981</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-01 19:10:13 -0700</bug_when>
    <thetext>Created attachment 255981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107840</commentid>
    <comment_count>7</comment_count>
      <attachid>255981</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-07-08 12:30:47 -0700</bug_when>
    <thetext>Comment on attachment 255981
Patch

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

I’m saying review+ but I think this change without testing is really risky.

&gt; Source/WebCore/contentextensions/DFABytecode.h:90
&gt; +const int32_t Int24Max = 256 * 256 * 256 - 1;
&gt; +const int32_t Int24Min = -256 * 256 * 256;

I believe these are incorrect. It should be 128 * 256 * 256. And that means that we need to figure out some way to test this. It shouldn’t just be guesswork on my part!

I think these would be easier to read in hex like this:

    const int32_t Int24Max = 0x007FFFFFF;
    const int32_t Int24Max = 0xFF800000;

Or:

    const int32_t Int24Max = 0x007FFFFFF;
    const int32_t Int24Max = -0x00800000;

Or with shifting like this:

    const int32_t Int24Max = (1 &lt;&lt; 23) - 1;
    const int32_t Int24Min = -(1 &lt;&lt; 23);

&gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:375
&gt; +            setBits&lt;uint16_t&gt;(m_bytecode, linkRecord.jumpLocation, static_cast&lt;uint16_t&gt;(distance));

Does this do the right thing for negative numbers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107845</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-08 12:36:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 255981 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255981&amp;action=review
&gt; 
&gt; I’m saying review+ but I think this change without testing is really risky.
I agree, and adding a test big enough to test large jumps like this would timeout while compiling.  I&apos;ll look into writing a test before landing.
&gt; &gt; Source/WebCore/contentextensions/DFABytecodeCompiler.cpp:375
&gt; &gt; +            setBits&lt;uint16_t&gt;(m_bytecode, linkRecord.jumpLocation, static_cast&lt;uint16_t&gt;(distance));
&gt; 
&gt; Does this do the right thing for negative numbers?
Yes.  The sign is in the high bits, which I store as an int8_t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107975</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-08 17:02:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 255981 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255981&amp;action=review
&gt; 
&gt; I’m saying review+ but I think this change without testing is really risky.
&gt; 
&gt; &gt; Source/WebCore/contentextensions/DFABytecode.h:90
&gt; &gt; +const int32_t Int24Max = 256 * 256 * 256 - 1;
&gt; &gt; +const int32_t Int24Min = -256 * 256 * 256;
&gt; 
&gt; I believe these are incorrect. It should be 128 * 256 * 256. And that means
&gt; that we need to figure out some way to test this. It shouldn’t just be
&gt; guesswork on my part!
Those are indeed incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108452</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-09 16:34:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/186649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108770</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-07-10 14:30:13 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/186681 added some tests for this.  Those tests would fail if either the | were incorrect or the Int24Max were incorrect.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255776</attachid>
            <date>2015-06-29 14:09:37 -0700</date>
            <delta_ts>2015-06-29 14:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146425-20150629140846.patch</filename>
            <type>text/plain</type>
            <size>6766</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA2LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gQWRkIDMgYnl0ZSBqdW1wIHNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c21hbGxlc3RQb3NzaWJs
ZUp1bXBTaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjphcHBlbmRaZXJv
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29t
cGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omp1
bXBTaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0
SnVtcFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBE
aXN0YW5jZSk6CisgICAgICAgIEFkZGVkIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0LgorCiAy
MDE1LTA2LTI5ICBNYXR0IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRp
YVNlc3Npb246IHVzZSBhIEhhc2hTZXQgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIHBhcnRpY2lwYXRp
bmcgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBQnl0ZWNvZGUuaAkocmV2aXNpb24gMTg2MDgyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsOCBA
QCB0eXBlZGVmIHVpbnQzMl90IERGQUhlYWRlcjsKIGVudW0gREZBQnl0ZWNvZGVKdW1wU2l6ZSB7
CiAgICAgSW50OCA9IDB4MTAsCiAgICAgSW50MTYgPSAweDIwLAotICAgIEludDMyID0gMHgzMCwK
KyAgICBJbnQyNCA9IDB4MzAsCisgICAgSW50MzIgPSAweDQwLAogfTsKIAogc3RhdGljIGlubGlu
ZSBERkFCeXRlY29kZUp1bXBTaXplIHNtYWxsZXN0UG9zc2libGVKdW1wU2l6ZShpbnQzMl90IGxv
bmdlc3RQb3NzaWJsZUp1bXApCkBAIC05Miw2ICs5Myw4IEBAIHN0YXRpYyBpbmxpbmUgREZBQnl0
ZWNvZGVKdW1wU2l6ZSBzbWFsbGUKICAgICAgICAgcmV0dXJuIEludDg7CiAgICAgaWYgKGxvbmdl
c3RQb3NzaWJsZUp1bXAgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWF4KCkgJiYg
bG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4o
KSkKICAgICAgICAgcmV0dXJuIEludDE2OworICAgIGlmIChsb25nZXN0UG9zc2libGVKdW1wIDwg
MjU2ICogMjU2ICogMjU2ICYmIGxvbmdlc3RQb3NzaWJsZUp1bXAgPj0gLTI1NiAqIDI1NiAqIDI1
NikKKyAgICAgICAgcmV0dXJuIEludDI0OwogICAgIHJldHVybiBJbnQzMjsKIH0KICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODYwODIpCisrKyBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTIsNiArNTIsMTAgQEAgaW5saW5lIHZvaWQgYXBwZW5kWmVyb2VzKFZlY3RvcjxERkFCeXRl
YwogICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY6CiAgICAgICAgIGFwcGVuZDxp
bnQxNl90PihieXRlY29kZSwgMCk7IC8vIFRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiBsaW5r
aW5nLgogICAgICAgICBicmVhazsKKyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0
OgorICAgICAgICBhcHBlbmQ8dWludDE2X3Q+KGJ5dGVjb2RlLCAwKTsKKyAgICAgICAgYXBwZW5k
PGludDhfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGVzZSB2YWx1ZXMgd2lsbCBiZSBzZXQgd2hlbiBs
aW5raW5nLgorICAgICAgICBicmVhazsKICAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6Oklu
dDMyOgogICAgICAgICBhcHBlbmQ8aW50MzJfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGlzIHZhbHVl
IHdpbGwgYmUgc2V0IHdoZW4gbGlua2luZy4KICAgICAgICAgYnJlYWs7CkBAIC0zNjYsNiArMzcw
LDExIEBAIHZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChkaXN0YW5jZSA9PSBzdGF0aWNfY2FzdDxpbnQxNl90PihkaXN0YW5jZSkp
OwogICAgICAgICAgICAgc2V0Qml0czxpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1
bXBMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8aW50MTZfdD4oZGlzdGFuY2UpKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEludDI0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZGlzdGFuY2UgPj0gLTI1NiAqIDI1NiAqIDI1NiAmJiBkaXN0YW5jZSA8IDI1NiAqIDI1NiAqIDI1
Nik7CisgICAgICAgICAgICBzZXRCaXRzPHVpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3Jk
Lmp1bXBMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGRpc3RhbmNlKSk7CisgICAgICAg
ICAgICBzZXRCaXRzPGludDhfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1wTG9jYXRpb24g
KyBzaXplb2YoaW50MTZfdCksIHN0YXRpY19jYXN0PGludDhfdD4oZGlzdGFuY2UgPj4gMTYpKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICAgICAgc2V0
Qml0czxpbnQzMl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1bXBMb2NhdGlvbiwgZGlzdGFu
Y2UpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMTg2MDgyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0
ZWNvZGVJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDggQEAgc3Rh
dGljIGlubGluZSBzaXplX3QganVtcFNpemVJbkJ5dGVzKERGQQogICAgICAgICByZXR1cm4gc2l6
ZW9mKGludDhfdCk7CiAgICAgY2FzZSBJbnQxNjoKICAgICAgICAgcmV0dXJuIHNpemVvZihpbnQx
Nl90KTsKKyAgICBjYXNlIEludDI0OgorICAgICAgICByZXR1cm4gc2l6ZW9mKGludDE2X3QpICsg
c2l6ZW9mKGludDhfdCk7CiAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgcmV0dXJuIHNpemVvZihp
bnQzMl90KTsKICAgICBkZWZhdWx0OgpAQCAtNzMsNyArNzUsNyBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBqdW1wU2l6ZUluQnl0ZXMoREZBCiBzdGF0aWMgaW5saW5lIERGQUJ5dGVjb2RlSnVtcFNp
emUgZ2V0SnVtcFNpemUoY29uc3QgREZBQnl0ZWNvZGUqIGJ5dGVjb2RlLCB1aW50MzJfdCBieXRl
Y29kZUxlbmd0aCwgdWludDMyX3QgaW5kZXgsIFZlY3Rvcjxib29sPiYgcGFnZXNVc2VkKQogewog
ICAgIERGQUJ5dGVjb2RlSnVtcFNpemUganVtcFNpemUgPSBzdGF0aWNfY2FzdDxERkFCeXRlY29k
ZUp1bXBTaXplPihnZXRCaXRzPHVpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5k
ZXgsIHBhZ2VzVXNlZCkgJiBERkFCeXRlY29kZUp1bXBTaXplTWFzayk7Ci0gICAgQVNTRVJUKGp1
bXBTaXplID09IERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDMyIHx8IGp1bXBTaXplID09IERGQUJ5
dGVjb2RlSnVtcFNpemU6OkludDE2IHx8IGp1bXBTaXplID09IERGQUJ5dGVjb2RlSnVtcFNpemU6
OkludDgpOworICAgIEFTU0VSVChqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQz
MiB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNCB8fCBqdW1wU2l6ZSA9
PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQxNiB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1
bXBTaXplOjpJbnQ4KTsKICAgICByZXR1cm4ganVtcFNpemU7CiB9CiAKQEAgLTg0LDYgKzg2LDgg
QEAgc3RhdGljIGlubGluZSBpbnQzMl90IGdldEp1bXBEaXN0YW5jZShjbwogICAgICAgICByZXR1
cm4gZ2V0Qml0czxpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgsIHBhZ2Vz
VXNlZCk7CiAgICAgY2FzZSBJbnQxNjoKICAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MTZfdD4o
Ynl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCwgcGFnZXNVc2VkKTsKKyAgICBjYXNlIElu
dDI0OgorICAgICAgICByZXR1cm4gZ2V0Qml0czx1aW50MTZfdD4oYnl0ZWNvZGUsIGJ5dGVjb2Rl
TGVuZ3RoLCBpbmRleCwgcGFnZXNVc2VkKSAmIHN0YXRpY19jYXN0PGludDMyX3Q+KGdldEJpdHM8
aW50OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4ICsgc2l6ZW9mKHVpbnQxNl90
KSwgcGFnZXNVc2VkKSkgPDwgMTY7CiAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgcmV0dXJuIGdl
dEJpdHM8aW50MzJfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCwgcGFnZXNVc2Vk
KTsKICAgICBkZWZhdWx0OgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MDg0KQorKysgU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTUtMDYtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBbQ29udGVudCBFeHRlbnNpb25zXSBBZGQgMyBieXRlIGp1bXAgc2l6ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQyNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmg6CisgICAgICAgIEluY3JlbWVudCBDdXJy
ZW50Q29udGVudEV4dGVuc2lvbkZpbGVWZXJzaW9uIGJlY2F1c2Ugb2YgY2hhbmdlIGluIHRoZSBi
eXRlY29kZS4KKwogMjAxNS0wNi0yOSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAK
ICAgICAgICAgU2V0dGluZyB0byBlbmFibGUvZGlzYWJsZSBtZWRpYSBjb250cm9scyBzaXppbmcg
b24gcGFnZSB6b29tCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJD
b250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAkocmV2aXNpb24gMTg2MDgy
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIAog
ICAgIC8vIFRoaXMgc2hvdWxkIGJlIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgYSBmdW5jdGlvbmFs
IGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBieXRlY29kZSwgZmlsZSBmb3JtYXQsIGV0Yy4KICAgICAv
LyB0byBwcmV2ZW50IGNyYXNoaW5nIHdoaWxlIGxvYWRpbmcgb2xkIGRhdGEuCi0gICAgY29uc3Qg
c3RhdGljIHVpbnQzMl90IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA0Owor
ICAgIGNvbnN0IHN0YXRpYyB1aW50MzJfdCBDdXJyZW50Q29udGVudEV4dGVuc2lvbkZpbGVWZXJz
aW9uID0gNTsKIAogICAgIHN0YXRpYyBVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlJiBkZWZhdWx0
U3RvcmUoKTsKICAgICBzdGF0aWMgUmVmPFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHN0b3Jl
V2l0aFBhdGgoY29uc3QgV1RGOjpTdHJpbmcmIHN0b3JlUGF0aCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255777</attachid>
            <date>2015-06-29 14:18:59 -0700</date>
            <delta_ts>2015-07-01 16:23:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146425-20150629141808.patch</filename>
            <type>text/plain</type>
            <size>6767</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA2LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gQWRkIDMgYnl0ZSBqdW1wIHNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c21hbGxlc3RQb3NzaWJs
ZUp1bXBTaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjphcHBlbmRaZXJv
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29t
cGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omp1
bXBTaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0
SnVtcFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBE
aXN0YW5jZSk6CisgICAgICAgIEFkZGVkIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0LgorCiAy
MDE1LTA2LTI5ICBNYXR0IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRp
YVNlc3Npb246IHVzZSBhIEhhc2hTZXQgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIHBhcnRpY2lwYXRp
bmcgZWxlbWVudHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBQnl0ZWNvZGUuaAkocmV2aXNpb24gMTg2MDgyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsOCBA
QCB0eXBlZGVmIHVpbnQzMl90IERGQUhlYWRlcjsKIGVudW0gREZBQnl0ZWNvZGVKdW1wU2l6ZSB7
CiAgICAgSW50OCA9IDB4MTAsCiAgICAgSW50MTYgPSAweDIwLAotICAgIEludDMyID0gMHgzMCwK
KyAgICBJbnQyNCA9IDB4MzAsCisgICAgSW50MzIgPSAweDQwLAogfTsKIAogc3RhdGljIGlubGlu
ZSBERkFCeXRlY29kZUp1bXBTaXplIHNtYWxsZXN0UG9zc2libGVKdW1wU2l6ZShpbnQzMl90IGxv
bmdlc3RQb3NzaWJsZUp1bXApCkBAIC05Miw2ICs5Myw4IEBAIHN0YXRpYyBpbmxpbmUgREZBQnl0
ZWNvZGVKdW1wU2l6ZSBzbWFsbGUKICAgICAgICAgcmV0dXJuIEludDg7CiAgICAgaWYgKGxvbmdl
c3RQb3NzaWJsZUp1bXAgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90Pjo6bWF4KCkgJiYg
bG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDE2X3Q+OjptaW4o
KSkKICAgICAgICAgcmV0dXJuIEludDE2OworICAgIGlmIChsb25nZXN0UG9zc2libGVKdW1wIDwg
MjU2ICogMjU2ICogMjU2ICYmIGxvbmdlc3RQb3NzaWJsZUp1bXAgPj0gLTI1NiAqIDI1NiAqIDI1
NikKKyAgICAgICAgcmV0dXJuIEludDI0OwogICAgIHJldHVybiBJbnQzMjsKIH0KICAgICAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5
dGVjb2RlQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODYwODIpCisrKyBTb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTIsNiArNTIsMTAgQEAgaW5saW5lIHZvaWQgYXBwZW5kWmVyb2VzKFZlY3RvcjxERkFCeXRl
YwogICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY6CiAgICAgICAgIGFwcGVuZDxp
bnQxNl90PihieXRlY29kZSwgMCk7IC8vIFRoaXMgdmFsdWUgd2lsbCBiZSBzZXQgd2hlbiBsaW5r
aW5nLgogICAgICAgICBicmVhazsKKyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0
OgorICAgICAgICBhcHBlbmQ8dWludDE2X3Q+KGJ5dGVjb2RlLCAwKTsKKyAgICAgICAgYXBwZW5k
PGludDhfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGVzZSB2YWx1ZXMgd2lsbCBiZSBzZXQgd2hlbiBs
aW5raW5nLgorICAgICAgICBicmVhazsKICAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6Oklu
dDMyOgogICAgICAgICBhcHBlbmQ8aW50MzJfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGlzIHZhbHVl
IHdpbGwgYmUgc2V0IHdoZW4gbGlua2luZy4KICAgICAgICAgYnJlYWs7CkBAIC0zNjYsNiArMzcw
LDExIEBAIHZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZSgpCiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChkaXN0YW5jZSA9PSBzdGF0aWNfY2FzdDxpbnQxNl90PihkaXN0YW5jZSkp
OwogICAgICAgICAgICAgc2V0Qml0czxpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1
bXBMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8aW50MTZfdD4oZGlzdGFuY2UpKTsKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEludDI0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
ZGlzdGFuY2UgPj0gLTI1NiAqIDI1NiAqIDI1NiAmJiBkaXN0YW5jZSA8IDI1NiAqIDI1NiAqIDI1
Nik7CisgICAgICAgICAgICBzZXRCaXRzPHVpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3Jk
Lmp1bXBMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGRpc3RhbmNlKSk7CisgICAgICAg
ICAgICBzZXRCaXRzPGludDhfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1wTG9jYXRpb24g
KyBzaXplb2YoaW50MTZfdCksIHN0YXRpY19jYXN0PGludDhfdD4oZGlzdGFuY2UgPj4gMTYpKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEludDMyOgogICAgICAgICAgICAgc2V0
Qml0czxpbnQzMl90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1bXBMb2NhdGlvbiwgZGlzdGFu
Y2UpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMTg2MDgyKQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0
ZWNvZGVJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDggQEAgc3Rh
dGljIGlubGluZSBzaXplX3QganVtcFNpemVJbkJ5dGVzKERGQQogICAgICAgICByZXR1cm4gc2l6
ZW9mKGludDhfdCk7CiAgICAgY2FzZSBJbnQxNjoKICAgICAgICAgcmV0dXJuIHNpemVvZihpbnQx
Nl90KTsKKyAgICBjYXNlIEludDI0OgorICAgICAgICByZXR1cm4gc2l6ZW9mKHVpbnQxNl90KSAr
IHNpemVvZihpbnQ4X3QpOwogICAgIGNhc2UgSW50MzI6CiAgICAgICAgIHJldHVybiBzaXplb2Yo
aW50MzJfdCk7CiAgICAgZGVmYXVsdDoKQEAgLTczLDcgKzc1LDcgQEAgc3RhdGljIGlubGluZSBz
aXplX3QganVtcFNpemVJbkJ5dGVzKERGQQogc3RhdGljIGlubGluZSBERkFCeXRlY29kZUp1bXBT
aXplIGdldEp1bXBTaXplKGNvbnN0IERGQUJ5dGVjb2RlKiBieXRlY29kZSwgdWludDMyX3QgYnl0
ZWNvZGVMZW5ndGgsIHVpbnQzMl90IGluZGV4LCBWZWN0b3I8Ym9vbD4mIHBhZ2VzVXNlZCkKIHsK
ICAgICBERkFCeXRlY29kZUp1bXBTaXplIGp1bXBTaXplID0gc3RhdGljX2Nhc3Q8REZBQnl0ZWNv
ZGVKdW1wU2l6ZT4oZ2V0Qml0czx1aW50OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGlu
ZGV4LCBwYWdlc1VzZWQpICYgREZBQnl0ZWNvZGVKdW1wU2l6ZU1hc2spOwotICAgIEFTU0VSVChq
dW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMiB8fCBqdW1wU2l6ZSA9PSBERkFC
eXRlY29kZUp1bXBTaXplOjpJbnQxNiB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXpl
OjpJbnQ4KTsKKyAgICBBU1NFUlQoanVtcFNpemUgPT0gREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50
MzIgfHwganVtcFNpemUgPT0gREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MjQgfHwganVtcFNpemUg
PT0gREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTYgfHwganVtcFNpemUgPT0gREZBQnl0ZWNvZGVK
dW1wU2l6ZTo6SW50OCk7CiAgICAgcmV0dXJuIGp1bXBTaXplOwogfQogCkBAIC04NCw2ICs4Niw4
IEBAIHN0YXRpYyBpbmxpbmUgaW50MzJfdCBnZXRKdW1wRGlzdGFuY2UoY28KICAgICAgICAgcmV0
dXJuIGdldEJpdHM8aW50OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4LCBwYWdl
c1VzZWQpOwogICAgIGNhc2UgSW50MTY6CiAgICAgICAgIHJldHVybiBnZXRCaXRzPGludDE2X3Q+
KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgsIHBhZ2VzVXNlZCk7CisgICAgY2FzZSBJ
bnQyNDoKKyAgICAgICAgcmV0dXJuIGdldEJpdHM8dWludDE2X3Q+KGJ5dGVjb2RlLCBieXRlY29k
ZUxlbmd0aCwgaW5kZXgsIHBhZ2VzVXNlZCkgJiBzdGF0aWNfY2FzdDxpbnQzMl90PihnZXRCaXRz
PGludDhfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCArIHNpemVvZih1aW50MTZf
dCksIHBhZ2VzVXNlZCkpIDw8IDE2OwogICAgIGNhc2UgSW50MzI6CiAgICAgICAgIHJldHVybiBn
ZXRCaXRzPGludDMyX3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgsIHBhZ2VzVXNl
ZCk7CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjA4NCkKKysrIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE1LTA2LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gQWRkIDMgYnl0ZSBqdW1wIHNpemUuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oOgorICAgICAgICBJbmNyZW1lbnQgQ3Vy
cmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbiBiZWNhdXNlIG9mIGNoYW5nZSBpbiB0aGUg
Ynl0ZWNvZGUuCisKIDIwMTUtMDYtMjkgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFNldHRpbmcgdG8gZW5hYmxlL2Rpc2FibGUgbWVkaWEgY29udHJvbHMgc2l6aW5n
IG9uIHBhZ2Ugem9vbQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVc2Vy
Q29udGVudEV4dGVuc2lvblN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHJldmlzaW9uIDE4NjA4
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNp
b25TdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICAvLyBUaGlzIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBldmVyeSB0aW1lIGEgZnVuY3Rpb25h
bCBjaGFuZ2UgaXMgbWFkZSB0byB0aGUgYnl0ZWNvZGUsIGZpbGUgZm9ybWF0LCBldGMuCiAgICAg
Ly8gdG8gcHJldmVudCBjcmFzaGluZyB3aGlsZSBsb2FkaW5nIG9sZCBkYXRhLgotICAgIGNvbnN0
IHN0YXRpYyB1aW50MzJfdCBDdXJyZW50Q29udGVudEV4dGVuc2lvbkZpbGVWZXJzaW9uID0gNDsK
KyAgICBjb25zdCBzdGF0aWMgdWludDMyX3QgQ3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVy
c2lvbiA9IDU7CiAKICAgICBzdGF0aWMgVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSYgZGVmYXVs
dFN0b3JlKCk7CiAgICAgc3RhdGljIFJlZjxVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlPiBzdG9y
ZVdpdGhQYXRoKGNvbnN0IFdURjo6U3RyaW5nJiBzdG9yZVBhdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255966</attachid>
            <date>2015-07-01 16:23:13 -0700</date>
            <delta_ts>2015-07-01 19:10:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146425-20150701162220.patch</filename>
            <type>text/plain</type>
            <size>6816</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA3LTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gQWRkIDMgYnl0ZSBqdW1wIHNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c21hbGxlc3RQb3NzaWJs
ZUp1bXBTaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjphcHBlbmRaZXJv
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29t
cGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omp1
bXBTaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0
SnVtcFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBE
aXN0YW5jZSk6CisgICAgICAgIEFkZGVkIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0LgorCiAy
MDE1LTA3LTAxICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNh
YmxlIHRoZSBleHBlcmltZW50YWwgV2ViR0wyIGltcGxlbWVudGF0aW9uCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmgJKHJldmlzaW9uIDE4
NjE4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDggKzgzLDExIEBAIHR5cGVkZWYgdWludDMyX3QgREZBSGVh
ZGVyOwogZW51bSBERkFCeXRlY29kZUp1bXBTaXplIHsKICAgICBJbnQ4ID0gMHgxMCwKICAgICBJ
bnQxNiA9IDB4MjAsCi0gICAgSW50MzIgPSAweDMwLAorICAgIEludDI0ID0gMHgzMCwKKyAgICBJ
bnQzMiA9IDB4NDAsCiB9OworY29uc3QgaW50MzJfdCBJbnQyNE1heCA9IDI1NiAqIDI1NiAqIDI1
NiAtIDE7Citjb25zdCBpbnQzMl90IEludDI0TWluID0gLTI1NiAqIDI1NiAqIDI1NjsKIAogc3Rh
dGljIGlubGluZSBERkFCeXRlY29kZUp1bXBTaXplIHNtYWxsZXN0UG9zc2libGVKdW1wU2l6ZShp
bnQzMl90IGxvbmdlc3RQb3NzaWJsZUp1bXApCiB7CkBAIC05Miw2ICs5NSw4IEBAIHN0YXRpYyBp
bmxpbmUgREZBQnl0ZWNvZGVKdW1wU2l6ZSBzbWFsbGUKICAgICAgICAgcmV0dXJuIEludDg7CiAg
ICAgaWYgKGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQxNl90
Pjo6bWF4KCkgJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+PSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDE2X3Q+OjptaW4oKSkKICAgICAgICAgcmV0dXJuIEludDE2OworICAgIGlmIChsb25nZXN0UG9z
c2libGVKdW1wIDw9IEludDI0TWF4ICYmIGxvbmdlc3RQb3NzaWJsZUp1bXAgPj0gSW50MjRNaW4p
CisgICAgICAgIHJldHVybiBJbnQyNDsKICAgICByZXR1cm4gSW50MzI7CiB9CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRl
Y29kZUNvbXBpbGVyLmNwcAkocmV2aXNpb24gMTg2MTg0KQorKysgU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUyLDYgKzUyLDEwIEBAIGlubGluZSB2b2lkIGFwcGVuZFplcm9lcyhWZWN0b3I8REZBQnl0ZWMK
ICAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDE2OgogICAgICAgICBhcHBlbmQ8aW50
MTZfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgc2V0IHdoZW4gbGlua2lu
Zy4KICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNDoK
KyAgICAgICAgYXBwZW5kPHVpbnQxNl90PihieXRlY29kZSwgMCk7CisgICAgICAgIGFwcGVuZDxp
bnQ4X3Q+KGJ5dGVjb2RlLCAwKTsgLy8gVGhlc2UgdmFsdWVzIHdpbGwgYmUgc2V0IHdoZW4gbGlu
a2luZy4KKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQz
MjoKICAgICAgICAgYXBwZW5kPGludDMyX3Q+KGJ5dGVjb2RlLCAwKTsgLy8gVGhpcyB2YWx1ZSB3
aWxsIGJlIHNldCB3aGVuIGxpbmtpbmcuCiAgICAgICAgIGJyZWFrOwpAQCAtMzY2LDYgKzM3MCwx
MSBAQCB2b2lkIERGQUJ5dGVjb2RlQ29tcGlsZXI6OmNvbXBpbGUoKQogICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlQoZGlzdGFuY2UgPT0gc3RhdGljX2Nhc3Q8aW50MTZfdD4oZGlzdGFuY2UpKTsK
ICAgICAgICAgICAgIHNldEJpdHM8aW50MTZfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1w
TG9jYXRpb24sIHN0YXRpY19jYXN0PGludDE2X3Q+KGRpc3RhbmNlKSk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBJbnQyNDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRp
c3RhbmNlID49IEludDI0TWluICYmIGRpc3RhbmNlIDw9IEludDI0TWF4KTsKKyAgICAgICAgICAg
IHNldEJpdHM8dWludDE2X3Q+KG1fYnl0ZWNvZGUsIGxpbmtSZWNvcmQuanVtcExvY2F0aW9uLCBz
dGF0aWNfY2FzdDx1aW50MTZfdD4oZGlzdGFuY2UpKTsKKyAgICAgICAgICAgIHNldEJpdHM8aW50
OF90PihtX2J5dGVjb2RlLCBsaW5rUmVjb3JkLmp1bXBMb2NhdGlvbiArIHNpemVvZihpbnQxNl90
KSwgc3RhdGljX2Nhc3Q8aW50OF90PihkaXN0YW5jZSA+PiAxNikpOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgICAgICBzZXRCaXRzPGludDMyX3Q+KG1f
Ynl0ZWNvZGUsIGxpbmtSZWNvcmQuanVtcExvY2F0aW9uLCBkaXN0YW5jZSk7CiAgICAgICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVj
b2RlSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0RGQUJ5dGVjb2RlSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxODYxODQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUludGVycHJldGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsOCBAQCBzdGF0aWMgaW5saW5lIHNpemVf
dCBqdW1wU2l6ZUluQnl0ZXMoREZBCiAgICAgICAgIHJldHVybiBzaXplb2YoaW50OF90KTsKICAg
ICBjYXNlIEludDE2OgogICAgICAgICByZXR1cm4gc2l6ZW9mKGludDE2X3QpOworICAgIGNhc2Ug
SW50MjQ6CisgICAgICAgIHJldHVybiBzaXplb2YodWludDE2X3QpICsgc2l6ZW9mKGludDhfdCk7
CiAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgcmV0dXJuIHNpemVvZihpbnQzMl90KTsKICAgICBk
ZWZhdWx0OgpAQCAtNzMsNyArNzUsNyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBqdW1wU2l6ZUlu
Qnl0ZXMoREZBCiBzdGF0aWMgaW5saW5lIERGQUJ5dGVjb2RlSnVtcFNpemUgZ2V0SnVtcFNpemUo
Y29uc3QgREZBQnl0ZWNvZGUqIGJ5dGVjb2RlLCB1aW50MzJfdCBieXRlY29kZUxlbmd0aCwgdWlu
dDMyX3QgaW5kZXgsIFZlY3Rvcjxib29sPiYgcGFnZXNVc2VkKQogewogICAgIERGQUJ5dGVjb2Rl
SnVtcFNpemUganVtcFNpemUgPSBzdGF0aWNfY2FzdDxERkFCeXRlY29kZUp1bXBTaXplPihnZXRC
aXRzPHVpbnQ4X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgsIHBhZ2VzVXNlZCkg
JiBERkFCeXRlY29kZUp1bXBTaXplTWFzayk7Ci0gICAgQVNTRVJUKGp1bXBTaXplID09IERGQUJ5
dGVjb2RlSnVtcFNpemU6OkludDMyIHx8IGp1bXBTaXplID09IERGQUJ5dGVjb2RlSnVtcFNpemU6
OkludDE2IHx8IGp1bXBTaXplID09IERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDgpOworICAgIEFT
U0VSVChqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQzMiB8fCBqdW1wU2l6ZSA9
PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQyNCB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1
bXBTaXplOjpJbnQxNiB8fCBqdW1wU2l6ZSA9PSBERkFCeXRlY29kZUp1bXBTaXplOjpJbnQ4KTsK
ICAgICByZXR1cm4ganVtcFNpemU7CiB9CiAKQEAgLTg0LDYgKzg2LDggQEAgc3RhdGljIGlubGlu
ZSBpbnQzMl90IGdldEp1bXBEaXN0YW5jZShjbwogICAgICAgICByZXR1cm4gZ2V0Qml0czxpbnQ4
X3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgsIHBhZ2VzVXNlZCk7CiAgICAgY2Fz
ZSBJbnQxNjoKICAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MTZfdD4oYnl0ZWNvZGUsIGJ5dGVj
b2RlTGVuZ3RoLCBpbmRleCwgcGFnZXNVc2VkKTsKKyAgICBjYXNlIEludDI0OgorICAgICAgICBy
ZXR1cm4gZ2V0Qml0czx1aW50MTZfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCwg
cGFnZXNVc2VkKSArIHN0YXRpY19jYXN0PGludDMyX3Q+KGdldEJpdHM8aW50OF90PihieXRlY29k
ZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4ICsgc2l6ZW9mKHVpbnQxNl90KSwgcGFnZXNVc2VkKSkg
PDwgMTY7CiAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgcmV0dXJuIGdldEJpdHM8aW50MzJfdD4o
Ynl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCwgcGFnZXNVc2VkKTsKICAgICBkZWZhdWx0
OgpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MTg0KQorKysgU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTUtMDctMDEgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbQ29udGVu
dCBFeHRlbnNpb25zXSBBZGQgMyBieXRlIGp1bXAgc2l6ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjQyNQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVu
dEV4dGVuc2lvblN0b3JlLmg6CisgICAgICAgIEluY3JlbWVudCBDdXJyZW50Q29udGVudEV4dGVu
c2lvbkZpbGVWZXJzaW9uIGJlY2F1c2Ugb2YgY2hhbmdlIGluIHRoZSBieXRlY29kZS4KKwogMjAx
NS0wNy0wMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVGhpcyBp
cyBhIHF1aWNrIGZvbGxvdy1vbiB0byBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
ODYxMzIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oCShyZXZpc2lvbiAxODYxODQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8g
VGhpcyBzaG91bGQgYmUgaW5jcmVtZW50ZWQgZXZlcnkgdGltZSBhIGZ1bmN0aW9uYWwgY2hhbmdl
IGlzIG1hZGUgdG8gdGhlIGJ5dGVjb2RlLCBmaWxlIGZvcm1hdCwgZXRjLgogICAgIC8vIHRvIHBy
ZXZlbnQgY3Jhc2hpbmcgd2hpbGUgbG9hZGluZyBvbGQgZGF0YS4KLSAgICBjb25zdCBzdGF0aWMg
dWludDMyX3QgQ3VycmVudENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbiA9IDQ7CisgICAgY29u
c3Qgc3RhdGljIHVpbnQzMl90IEN1cnJlbnRDb250ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA1
OwogCiAgICAgc3RhdGljIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUmIGRlZmF1bHRTdG9yZSgp
OwogICAgIHN0YXRpYyBSZWY8VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZT4gc3RvcmVXaXRoUGF0
aChjb25zdCBXVEY6OlN0cmluZyYgc3RvcmVQYXRoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255981</attachid>
            <date>2015-07-01 19:10:13 -0700</date>
            <delta_ts>2015-07-08 12:30:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146425-20150701190948.patch</filename>
            <type>text/plain</type>
            <size>6856</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA3LTAxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW0NvbnRlbnQg
RXh0ZW5zaW9uc10gQWRkIDMgYnl0ZSBqdW1wIHNpemUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6c21hbGxlc3RQb3NzaWJs
ZUp1bXBTaXplKToKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBp
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjphcHBlbmRaZXJv
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkRGQUJ5dGVjb2RlQ29t
cGlsZXI6OmNvbXBpbGUpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6Omp1
bXBTaXplSW5CeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0
SnVtcFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmdldEp1bXBE
aXN0YW5jZSk6CisgICAgICAgIEFkZGVkIERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0LgorCiAy
MDE1LTA3LTAxICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXaW5dIFJFR1JFU1NJT04gKHIxODUxMjQpIENBQ0ZMYXllciBoYW5kbGluZyBicm9rZW4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGUuaAko
cmV2aXNpb24gMTg2MjE1KQorKysgU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZB
Qnl0ZWNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtODMsOCArODMsMTEgQEAgdHlwZWRlZiB1aW50
MzJfdCBERkFIZWFkZXI7CiBlbnVtIERGQUJ5dGVjb2RlSnVtcFNpemUgewogICAgIEludDggPSAw
eDEwLAogICAgIEludDE2ID0gMHgyMCwKLSAgICBJbnQzMiA9IDB4MzAsCisgICAgSW50MjQgPSAw
eDMwLAorICAgIEludDMyID0gMHg0MCwKIH07Citjb25zdCBpbnQzMl90IEludDI0TWF4ID0gMjU2
ICogMjU2ICogMjU2IC0gMTsKK2NvbnN0IGludDMyX3QgSW50MjRNaW4gPSAtMjU2ICogMjU2ICog
MjU2OwogCiBzdGF0aWMgaW5saW5lIERGQUJ5dGVjb2RlSnVtcFNpemUgc21hbGxlc3RQb3NzaWJs
ZUp1bXBTaXplKGludDMyX3QgbG9uZ2VzdFBvc3NpYmxlSnVtcCkKIHsKQEAgLTkyLDYgKzk1LDgg
QEAgc3RhdGljIGlubGluZSBERkFCeXRlY29kZUp1bXBTaXplIHNtYWxsZQogICAgICAgICByZXR1
cm4gSW50ODsKICAgICBpZiAobG9uZ2VzdFBvc3NpYmxlSnVtcCA8PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDE2X3Q+OjptYXgoKSAmJiBsb25nZXN0UG9zc2libGVKdW1wID49IHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MTZfdD46Om1pbigpKQogICAgICAgICByZXR1cm4gSW50MTY7CisgICAgaWYg
KGxvbmdlc3RQb3NzaWJsZUp1bXAgPD0gSW50MjRNYXggJiYgbG9uZ2VzdFBvc3NpYmxlSnVtcCA+
PSBJbnQyNE1pbikKKyAgICAgICAgcmV0dXJuIEludDI0OwogICAgIHJldHVybiBJbnQzMjsKIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0RGQUJ5dGVjb2RlQ29tcGlsZXIuY3BwCShyZXZpc2lvbiAxODYyMTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9ERkFCeXRlY29kZUNvbXBpbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgaW5saW5lIHZvaWQgYXBwZW5kWmVyb2VzKFZlY3Rv
cjxERkFCeXRlYwogICAgIGNhc2UgREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MTY6CiAgICAgICAg
IGFwcGVuZDxpbnQxNl90PihieXRlY29kZSwgMCk7IC8vIFRoaXMgdmFsdWUgd2lsbCBiZSBzZXQg
d2hlbiBsaW5raW5nLgogICAgICAgICBicmVhazsKKyAgICBjYXNlIERGQUJ5dGVjb2RlSnVtcFNp
emU6OkludDI0OgorICAgICAgICBhcHBlbmQ8dWludDE2X3Q+KGJ5dGVjb2RlLCAwKTsKKyAgICAg
ICAgYXBwZW5kPGludDhfdD4oYnl0ZWNvZGUsIDApOyAvLyBUaGVzZSB2YWx1ZXMgd2lsbCBiZSBz
ZXQgd2hlbiBsaW5raW5nLgorICAgICAgICBicmVhazsKICAgICBjYXNlIERGQUJ5dGVjb2RlSnVt
cFNpemU6OkludDMyOgogICAgICAgICBhcHBlbmQ8aW50MzJfdD4oYnl0ZWNvZGUsIDApOyAvLyBU
aGlzIHZhbHVlIHdpbGwgYmUgc2V0IHdoZW4gbGlua2luZy4KICAgICAgICAgYnJlYWs7CkBAIC0z
NjYsNiArMzcwLDExIEBAIHZvaWQgREZBQnl0ZWNvZGVDb21waWxlcjo6Y29tcGlsZSgpCiAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChkaXN0YW5jZSA9PSBzdGF0aWNfY2FzdDxpbnQxNl90Pihk
aXN0YW5jZSkpOwogICAgICAgICAgICAgc2V0Qml0czxpbnQxNl90PihtX2J5dGVjb2RlLCBsaW5r
UmVjb3JkLmp1bXBMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8aW50MTZfdD4oZGlzdGFuY2UpKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEludDI0OgorICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoZGlzdGFuY2UgPj0gSW50MjRNaW4gJiYgZGlzdGFuY2UgPD0gSW50MjRNYXgpOwor
ICAgICAgICAgICAgc2V0Qml0czx1aW50MTZfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1w
TG9jYXRpb24sIHN0YXRpY19jYXN0PHVpbnQxNl90PihkaXN0YW5jZSkpOworICAgICAgICAgICAg
c2V0Qml0czxpbnQ4X3Q+KG1fYnl0ZWNvZGUsIGxpbmtSZWNvcmQuanVtcExvY2F0aW9uICsgc2l6
ZW9mKGludDE2X3QpLCBzdGF0aWNfY2FzdDxpbnQ4X3Q+KGRpc3RhbmNlID4+IDE2KSk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQzMjoKICAgICAgICAgICAgIHNldEJpdHM8
aW50MzJfdD4obV9ieXRlY29kZSwgbGlua1JlY29yZC5qdW1wTG9jYXRpb24sIGRpc3RhbmNlKTsK
ICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvREZBQnl0ZWNvZGVJbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDE4NjIxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0RGQUJ5dGVjb2Rl
SW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw4IEBAIHN0YXRpYyBp
bmxpbmUgc2l6ZV90IGp1bXBTaXplSW5CeXRlcyhERkEKICAgICAgICAgcmV0dXJuIHNpemVvZihp
bnQ4X3QpOwogICAgIGNhc2UgSW50MTY6CiAgICAgICAgIHJldHVybiBzaXplb2YoaW50MTZfdCk7
CisgICAgY2FzZSBJbnQyNDoKKyAgICAgICAgcmV0dXJuIHNpemVvZih1aW50MTZfdCkgKyBzaXpl
b2YoaW50OF90KTsKICAgICBjYXNlIEludDMyOgogICAgICAgICByZXR1cm4gc2l6ZW9mKGludDMy
X3QpOwogICAgIGRlZmF1bHQ6CkBAIC03Myw3ICs3NSw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90
IGp1bXBTaXplSW5CeXRlcyhERkEKIHN0YXRpYyBpbmxpbmUgREZBQnl0ZWNvZGVKdW1wU2l6ZSBn
ZXRKdW1wU2l6ZShjb25zdCBERkFCeXRlY29kZSogYnl0ZWNvZGUsIHVpbnQzMl90IGJ5dGVjb2Rl
TGVuZ3RoLCB1aW50MzJfdCBpbmRleCwgVmVjdG9yPGJvb2w+JiBwYWdlc1VzZWQpCiB7CiAgICAg
REZBQnl0ZWNvZGVKdW1wU2l6ZSBqdW1wU2l6ZSA9IHN0YXRpY19jYXN0PERGQUJ5dGVjb2RlSnVt
cFNpemU+KGdldEJpdHM8dWludDhfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCwg
cGFnZXNVc2VkKSAmIERGQUJ5dGVjb2RlSnVtcFNpemVNYXNrKTsKLSAgICBBU1NFUlQoanVtcFNp
emUgPT0gREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50MzIgfHwganVtcFNpemUgPT0gREZBQnl0ZWNv
ZGVKdW1wU2l6ZTo6SW50MTYgfHwganVtcFNpemUgPT0gREZBQnl0ZWNvZGVKdW1wU2l6ZTo6SW50
OCk7CisgICAgQVNTRVJUKGp1bXBTaXplID09IERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDMyIHx8
IGp1bXBTaXplID09IERGQUJ5dGVjb2RlSnVtcFNpemU6OkludDI0IHx8IGp1bXBTaXplID09IERG
QUJ5dGVjb2RlSnVtcFNpemU6OkludDE2IHx8IGp1bXBTaXplID09IERGQUJ5dGVjb2RlSnVtcFNp
emU6OkludDgpOwogICAgIHJldHVybiBqdW1wU2l6ZTsKIH0KIApAQCAtODQsNiArODYsOCBAQCBz
dGF0aWMgaW5saW5lIGludDMyX3QgZ2V0SnVtcERpc3RhbmNlKGNvCiAgICAgICAgIHJldHVybiBn
ZXRCaXRzPGludDhfdD4oYnl0ZWNvZGUsIGJ5dGVjb2RlTGVuZ3RoLCBpbmRleCwgcGFnZXNVc2Vk
KTsKICAgICBjYXNlIEludDE2OgogICAgICAgICByZXR1cm4gZ2V0Qml0czxpbnQxNl90PihieXRl
Y29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4LCBwYWdlc1VzZWQpOworICAgIGNhc2UgSW50MjQ6
CisgICAgICAgIHJldHVybiBnZXRCaXRzPHVpbnQxNl90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5n
dGgsIGluZGV4LCBwYWdlc1VzZWQpIHwgKHN0YXRpY19jYXN0PGludDMyX3Q+KGdldEJpdHM8aW50
OF90PihieXRlY29kZSwgYnl0ZWNvZGVMZW5ndGgsIGluZGV4ICsgc2l6ZW9mKHVpbnQxNl90KSwg
cGFnZXNVc2VkKSkgPDwgMTYpOwogICAgIGNhc2UgSW50MzI6CiAgICAgICAgIHJldHVybiBnZXRC
aXRzPGludDMyX3Q+KGJ5dGVjb2RlLCBieXRlY29kZUxlbmd0aCwgaW5kZXgsIHBhZ2VzVXNlZCk7
CiAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NjIxNSkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1
LTA3LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgW0NvbnRlbnQgRXh0ZW5zaW9uc10gQWRkIDMgYnl0ZSBqdW1wIHNpemUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY0MjUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5oOgorICAgICAgICBJbmNyZW1lbnQgQ3VycmVu
dENvbnRlbnRFeHRlbnNpb25GaWxlVmVyc2lvbiBiZWNhdXNlIG9mIGNoYW5nZSBpbiB0aGUgYnl0
ZWNvZGUuCisKIDIwMTUtMDctMDEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbTWFjXSBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
YmVlcCgpIGRvZXNuJ3QgcGxheSBhIHNvdW5kLCBzYW5kYm94IHdhcm5pbmdzCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
RXh0ZW5zaW9uU3RvcmUuaAkocmV2aXNpb24gMTg2MjE1KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIAogICAgIC8vIFRoaXMgc2hvdWxkIGJlIGlu
Y3JlbWVudGVkIGV2ZXJ5IHRpbWUgYSBmdW5jdGlvbmFsIGNoYW5nZSBpcyBtYWRlIHRvIHRoZSBi
eXRlY29kZSwgZmlsZSBmb3JtYXQsIGV0Yy4KICAgICAvLyB0byBwcmV2ZW50IGNyYXNoaW5nIHdo
aWxlIGxvYWRpbmcgb2xkIGRhdGEuCi0gICAgY29uc3Qgc3RhdGljIHVpbnQzMl90IEN1cnJlbnRD
b250ZW50RXh0ZW5zaW9uRmlsZVZlcnNpb24gPSA0OworICAgIGNvbnN0IHN0YXRpYyB1aW50MzJf
dCBDdXJyZW50Q29udGVudEV4dGVuc2lvbkZpbGVWZXJzaW9uID0gNTsKIAogICAgIHN0YXRpYyBV
c2VyQ29udGVudEV4dGVuc2lvblN0b3JlJiBkZWZhdWx0U3RvcmUoKTsKICAgICBzdGF0aWMgUmVm
PFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU+IHN0b3JlV2l0aFBhdGgoY29uc3QgV1RGOjpTdHJp
bmcmIHN0b3JlUGF0aCk7Cg==
</data>
<flag name="review"
          id="281070"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>