<?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>122516</bug_id>
          
          <creation_ts>2013-10-08 12:38:43 -0700</creation_ts>
          <short_desc>Avoid resizing the internal buffer of SharedBuffer when creating a PurgeableBuffer</short_desc>
          <delta_ts>2013-10-10 11:19:11 -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>Platform</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>psolanki</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>937619</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-08 12:38:43 -0700</bug_when>
    <thetext>Currently we may flatten the SharedBuffer segments into the internal buffer of the SharedBuffer before creating a PurgeableBuffer. As a result we may need to resize the internal buffer of the SharedBuffer to fit the contents of its segments. We can avoid this resize operation by allocating a PurgeableBuffer and copying the SharedBuffer&apos;s internal buffer and segments directly into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937625</commentid>
    <comment_count>1</comment_count>
      <attachid>213708</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-08 12:48:24 -0700</bug_when>
    <thetext>Created attachment 213708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937629</commentid>
    <comment_count>2</comment_count>
      <attachid>213708</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 12:53:16 -0700</bug_when>
    <thetext>Comment on attachment 213708
Patch

Attachment 213708 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3711268</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937630</commentid>
    <comment_count>3</comment_count>
      <attachid>213708</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 12:55:30 -0700</bug_when>
    <thetext>Comment on attachment 213708
Patch

Attachment 213708 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3758028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937631</commentid>
    <comment_count>4</comment_count>
      <attachid>213708</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-08 12:56:14 -0700</bug_when>
    <thetext>Comment on attachment 213708
Patch

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

I like the direction this patch is going, but there are some details I think you should fix.

&gt; Source/WebCore/platform/PurgeableBuffer.h:38
&gt; +        static PassOwnPtr&lt;PurgeableBuffer&gt; create(size_t);

I think we should follow the pattern for String::createUninitialized here. Use an out argument for the pointer and use the word “uninitialized” in the name of the function. I also suggest including the makePurgeable(false) in that function instead of doing it at the call site.

&gt; Source/WebCore/platform/PurgeableBuffer.h:44
&gt; +        char* data();

I think it would be better to pass the non-const char* out of the create function rather than always exposing a non-const data pointer after the fact on all purgeable buffers. So please change this back.

&gt; Source/WebCore/platform/SharedBuffer.cpp:383
&gt; +void SharedBuffer::copySegmentsOrDataArrayAndClear(char* destination, unsigned bytesToCopy) const

Is there any caller of copyDataArrayAndClear that does not want this behavior? Why do we need a separate function for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937692</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-08 14:55:00 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; [...]
&gt; &gt; Source/WebCore/platform/PurgeableBuffer.h:38
&gt; &gt; +        static PassOwnPtr&lt;PurgeableBuffer&gt; create(size_t);
&gt; 
&gt; I think we should follow the pattern for String::createUninitialized here. Use an out argument for the pointer and use the word “uninitialized” in the name of the function.

I like this idiom. Will modify patch.

&gt; I also suggest including the makePurgeable(false) in that function instead of doing it at the call site.

By adopting the createUninitialized idiom, it seems sufficient to omit this check as we create the PurgeableBuffer in a non-volatile state by default. For some reason, I thought that adding this check at the call site would make the usage of PurgeableBuffer::create(size_t) and the code that writes directly into its buffer less error prone or at least consistent consistent with the document usage for PurgeableBuffer::data(). The new name PurgeableBuffer::createUninitialized(...) seems to obviate the need for such a check since the name better conveys to the caller the state of the PurgeableBuffer. That is, it is uninitialized and hence there is an assumption that it&apos;s non-volatile. Do you see a benefit in explicitly checking/asserting makePurgeable(false) is true in PurgeableBuffer::createUninitialized()?

&gt; 
&gt; &gt; Source/WebCore/platform/PurgeableBuffer.h:44
&gt; &gt; +        char* data();
&gt; 
&gt; I think it would be better to pass the non-const char* out of the create function rather than always exposing a non-const data pointer after the fact on all purgeable buffers. So please change this back.
&gt; 

Will revert this change.

&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:383
&gt; &gt; +void SharedBuffer::copySegmentsOrDataArrayAndClear(char* destination, unsigned bytesToCopy) const
&gt; 
&gt; Is there any caller of copyDataArrayAndClear that does not want this behavior? Why do we need a separate function for this?

Will remove function copySegmentsOrDataArrayAndClear. Instead, will move the !USE(NETWORK_CFDATA_ARRAY_CALLBACK)-guarded code in copySegmentsOrDataArrayAndClear() into a !USE(NETWORK_CFDATA_ARRAY_CALLBACK)-guarded version of copyDataArrayAndClear() such that SharedBuffer.h will declare a platform-independent function called copyDataArrayAndClear, SharedBuffer.cpp will provide the platform-independent implementation of this function and SharedBufferCF.cp will provide a CF-specific implementation of this function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937702</commentid>
    <comment_count>6</comment_count>
      <attachid>213725</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-08 15:21:27 -0700</bug_when>
    <thetext>Created attachment 213725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937707</commentid>
    <comment_count>7</comment_count>
      <attachid>213725</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 15:34:29 -0700</bug_when>
    <thetext>Comment on attachment 213725
Patch

Attachment 213725 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3709348</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937712</commentid>
    <comment_count>8</comment_count>
      <attachid>213725</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 15:41:02 -0700</bug_when>
    <thetext>Comment on attachment 213725
Patch

Attachment 213725 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3714305</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937716</commentid>
    <comment_count>9</comment_count>
      <attachid>213727</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-08 15:44:29 -0700</bug_when>
    <thetext>Created attachment 213727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937717</commentid>
    <comment_count>10</comment_count>
      <attachid>213728</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-08 15:45:06 -0700</bug_when>
    <thetext>Created attachment 213728
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937720</commentid>
    <comment_count>11</comment_count>
      <attachid>213728</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 15:49:48 -0700</bug_when>
    <thetext>Comment on attachment 213728
Patch

Attachment 213728 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/3758068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937721</commentid>
    <comment_count>12</comment_count>
      <attachid>213728</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-08 15:51:43 -0700</bug_when>
    <thetext>Comment on attachment 213728
Patch

Attachment 213728 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/3760083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937723</commentid>
    <comment_count>13</comment_count>
      <attachid>213728</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-10-08 15:58:27 -0700</bug_when>
    <thetext>Comment on attachment 213728
Patch

Attachment 213728 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/3752161</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937726</commentid>
    <comment_count>14</comment_count>
      <attachid>213729</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-08 16:01:48 -0700</bug_when>
    <thetext>Created attachment 213729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937817</commentid>
    <comment_count>15</comment_count>
      <attachid>213729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-10-08 22:17:38 -0700</bug_when>
    <thetext>Comment on attachment 213729
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.cpp:233
&gt; +    char* destination = nullptr;

I don’t think this needs to be initialized.

&gt; Source/WebCore/platform/mac/PurgeableBufferMac.cpp:86
&gt; +    char* buffer = allocatePurgeableBuffer(size);
&gt; +    if (!buffer)
&gt; +        return nullptr;
&gt; +    memcpy(buffer, data, size);
&gt; +    return adoptPtr(new PurgeableBuffer(buffer, size));

Seems like this could just call createUninitialized and then do the memcpy. No need for the allocatePurgeableBuffer function at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938430</commentid>
    <comment_count>16</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-10 11:18:25 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 213729 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213729&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/SharedBuffer.cpp:233
&gt; &gt; +    char* destination = nullptr;
&gt; 
&gt; I don’t think this needs to be initialized.

Will fix.

&gt; 
&gt; &gt; Source/WebCore/platform/mac/PurgeableBufferMac.cpp:86
&gt; &gt; +    char* buffer = allocatePurgeableBuffer(size);
&gt; &gt; +    if (!buffer)
&gt; &gt; +        return nullptr;
&gt; &gt; +    memcpy(buffer, data, size);
&gt; &gt; +    return adoptPtr(new PurgeableBuffer(buffer, size));
&gt; 
&gt; Seems like this could just call createUninitialized and then do the memcpy. No need for the allocatePurgeableBuffer function at all.

Will remove function allocatePurgeableBuffer() and implement PurgeableBuffer::create() in terms of PurgeableBuffer::createUninitialized().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938433</commentid>
    <comment_count>17</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2013-10-10 11:19:11 -0700</bug_when>
    <thetext>Committed r157235: &lt;http://trac.webkit.org/changeset/157235&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213708</attachid>
            <date>2013-10-08 12:48:24 -0700</date>
            <delta_ts>2013-10-08 15:21:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122516-20131008124827.patch</filename>
            <type>text/plain</type>
            <size>8369</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0ODE1ZGY3ZmRhMmM3
NmFhZDYzZWFjOTk5NWUxZDgwMWZhNGZhNi4uZWQyYjI0MWFlYmY3MjMwMGQzNjA1N2Q3N2E0ZWUy
NzNlYjc0ZWM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEwLTA4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCByZXNpemluZyB0
aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNoYXJlZEJ1ZmZlciB3aGVuCisgICAgICAgIGNyZWF0aW5n
IGEgUHVyZ2VhYmxlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjI1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDdXJyZW50bHkgd2hlbiB3ZSBjcmVhdGUgYSBQdXJnZWFibGVCdWZmZXIgZnJv
bSBhIFNoYXJlZEJ1ZmZlciB3ZSBtYXkKKyAgICAgICAgcmVzaXplIHRoZSBpbnRlcm5hbCBidWZm
ZXIgb2YgdGhlIFNoYXJlZEJ1ZmZlciBzbyB0aGF0IGl0IGNhbiBmaXQgdGhlCisgICAgICAgIGNv
bmNhdGVuYXRlZCBjb250ZW50cyBvZiBhbGwgb2YgaXRzIHNlZ21lbnRzIGJlZm9yZSBjb3B5aW5n
IHRoaXMKKyAgICAgICAgaW50ZXJuYWwgYnVmZmVyIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIgb2Yg
dGhlIFB1cmdlYWJsZUJ1ZmZlci4gSW5zdGVhZCwKKyAgICAgICAgd2UgY2FuIGF2b2lkIHJlc2l6
aW5nIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgU2hhcmVkQnVmZmVyIGJ5IGFsbG9jYXRpbmcKKyAg
ICAgICAgYSBQdXJnZWFibGVCdWZmZXIgYW5kIHRoZW4gY29weWluZyB0aGUgaW50ZXJuYWwgYnVm
ZmVyIG9mIFNoYXJlZEJ1ZmZlcgorICAgICAgICBhbmQgaXRzIHNlZ21lbnRzIGRpcmVjdGx5IGlu
dG8gaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjpjcmVhdGVQdXJnZWFibGVCdWZmZXIpOiBNb2RpZmllZCB0byB1c2UgY29weVNlZ21lbnRz
T3JEYXRhQXJyYXlBbmRDbGVhcigpLgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpj
b3B5U2VnbWVudHNPckRhdGFBcnJheUFuZENsZWFyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI6OmJ1ZmZlcik6IEV4dHJhY3RlZCBsb2dpYyB0byBjb3B5IHNlZ21lbnRz
L2RhdGEgYXJyYXkgY29weSBpbnRvIGZ1bmN0aW9uCisgICAgICAgIGNvcHlTZWdtZW50c09yRGF0
YUFycmF5QW5kQ2xlYXIgYW5kIG1vZGlmaWVkIGNvZGUgdG8gdXNlIGl0LgorICAgICAgICAqIHBs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QdXJnZWFibGVC
dWZmZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsb2NhdGVQdXJnZWFibGVCdWZmZXIp
OiBBZGRlZDsgaGVscGVyIGZ1bmN0aW9uIHVzZWQgYnkgUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGUK
KyAgICAgICAgZnVuY3Rpb25zIHRvIGFsbG9jYXRlIHB1cmdlYWJsZSBtZW1vcnkuIFRoZSBjb2Rl
IGZvciB0aGlzIGZ1bmN0aW9uIHdhcyBleHRyYWN0ZWQgZnJvbQorICAgICAgICBQdXJnZWFibGVC
dWZmZXI6OmNyZWF0ZShjaGFyKiwgc2l6ZV90KS4KKyAgICAgICAgKFdlYkNvcmU6OlB1cmdlYWJs
ZUJ1ZmZlcjo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQdXJnZWFibGVCdWZm
ZXI6OmRhdGEpOiBDaGFuZ2VkIHJldHVybiB0eXBlIGZyb20gY29uc3QgY2hhciogdG8gY2hhciog
c28gdGhhdAorICAgICAgICBTaGFyZWRCdWZmZXIgY2FuIHdyaXRlIGludG8gdGhlIHB1cmdlYWJs
ZSBidWZmZXIgY3JlYXRlZCB1c2luZyBQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZShzaXplX3QpLgor
CiAyMDEzLTEwLTA4ICBUaGlhZ28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBv
cGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEdldCBFRkwgYW5kIEdUSyBjb21waWxpbmcgd2l0aCBt
ZWRpYSBzdHJlYW0gZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UHVyZ2VhYmxlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZm
ZXIuaAppbmRleCA4MzQyMjQxZDRjYTAxOTljNTU3N2ZkNDFhNjQyMTNiZTdiOWY4MmFlLi4wNTAw
OTNjYzM4MjRlMTI2NGU5NjQ2MTc2OTQ5NWNiNzEyYWFhMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaApAQCAtMzUsMTQgKzM1LDE1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBQdXJnZWFibGVCdWZmZXIgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQdXJnZWFibGVCdWZmZXIpOwogICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGlj
IFBhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBjcmVhdGUoc2l6ZV90KTsKICAgICAgICAgc3Rh
dGljIFBhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwg
c2l6ZV90KTsKICAgICAgICAgCiAgICAgICAgIH5QdXJnZWFibGVCdWZmZXIoKTsKIAogICAgICAg
ICAvLyBDYWxsIG1ha2VQdXJnZWFibGUoZmFsc2UpIGFuZCBjaGVjayB0aGUgcmV0dXJuIHZhbHVl
IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGRhdGEuCi0gICAgICAgIGNvbnN0IGNoYXIqIGRhdGEoKSBj
b25zdDsKKyAgICAgICAgY2hhciogZGF0YSgpOwogICAgICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQotICAgICAgICAKKwogICAgICAgICBQdXJnZVByaW9yaXR5IHB1
cmdlUHJpb3JpdHkoKSBjb25zdCB7IHJldHVybiBtX3B1cmdlUHJpb3JpdHk7IH0KICAgICAgICAg
dm9pZCBzZXRQdXJnZVByaW9yaXR5KFB1cmdlUHJpb3JpdHkgcHJpb3JpdHkpIHsgbV9wdXJnZVBy
aW9yaXR5ID0gcHJpb3JpdHk7IH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hh
cmVkQnVmZmVyLmNwcAppbmRleCBlMmQ5NDA4NjkzYjA3Y2FjYzQ2ZTE1MWI1NTg3Mzg5YThmNTMy
ZDg3Li43OGVhNjRhODU2MmE5NWEwMzYyNGFhYTk2ZGQ1NDU2YjU3YzQ1MDU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTIzMCw3ICsyMzAsMjEgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVB1cmdlYWJsZUJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKICNlbmRpZgogCi0gICAgbV9wdXJnZWFibGVCdWZmZXIgPSBQdXJnZWFibGVCdWZmZXI6
OmNyZWF0ZShidWZmZXIoKS5kYXRhKCksIG1fc2l6ZSk7CisgICAgbV9wdXJnZWFibGVCdWZmZXIg
PSBQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZShtX3NpemUpOworICAgIGlmICghbV9wdXJnZWFibGVC
dWZmZXIpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIW1fcHVyZ2VhYmxlQnVmZmVyLT5tYWtl
UHVyZ2VhYmxlKGZhbHNlKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBjaGFyKiBkZXN0aW5hdGlvbiA9IG1fcHVyZ2VhYmxlQnVm
ZmVyLT5kYXRhKCk7CisgICAgdW5zaWduZWQgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsK
KyAgICBpZiAoYnVmZmVyU2l6ZSkgeworICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fYnVm
ZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSk7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IGJ1ZmZlclNp
emU7CisgICAgICAgIG1fYnVmZmVyLmNsZWFyKCk7CisgICAgfQorICAgIGNvcHlTZWdtZW50c09y
RGF0YUFycmF5QW5kQ2xlYXIoZGVzdGluYXRpb24sIG1fc2l6ZSAtIGJ1ZmZlclNpemUpOwogfQog
CiBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBjb25zdApAQCAtMzY2LDYgKzM4MCwy
MiBAQCBQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpyZWxlYXNlUHVy
Z2VhYmxlQnVmZmVyKCkKICAgICByZXR1cm4gbV9wdXJnZWFibGVCdWZmZXIucmVsZWFzZSgpOyAK
IH0KIAordm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlTZWdtZW50c09yRGF0YUFycmF5QW5kQ2xlYXIo
Y2hhciogZGVzdGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjb25zdAoreworI2lmICFV
U0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgZWZmZWN0
aXZlQnl0ZXNUb0NvcHkgPSBtaW4oYnl0ZXNUb0NvcHksIHNlZ21lbnRTaXplKTsKKyAgICAgICAg
bWVtY3B5KGRlc3RpbmF0aW9uLCBtX3NlZ21lbnRzW2ldLCBlZmZlY3RpdmVCeXRlc1RvQ29weSk7
CisgICAgICAgIGRlc3RpbmF0aW9uICs9IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OworICAgICAgICBi
eXRlc1RvQ29weSAtPSBlZmZlY3RpdmVCeXRlc1RvQ29weTsKKyAgICAgICAgZnJlZVNlZ21lbnQo
bV9zZWdtZW50c1tpXSk7CisgICAgfQorICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKKyNlbHNlCisg
ICAgY29weURhdGFBcnJheUFuZENsZWFyKGRlc3RpbmF0aW9uLCBieXRlc1RvQ29weSk7CisjZW5k
aWYKK30KKwogY29uc3QgVmVjdG9yPGNoYXI+JiBTaGFyZWRCdWZmZXI6OmJ1ZmZlcigpIGNvbnN0
CiB7CiAjaWYgRU5BQkxFKERJU0tfSU1BR0VfQ0FDSEUpCkBAIC0zNzQsMjAgKzQwNCw3IEBAIGNv
bnN0IFZlY3RvcjxjaGFyPiYgU2hhcmVkQnVmZmVyOjpidWZmZXIoKSBjb25zdAogICAgIHVuc2ln
bmVkIGJ1ZmZlclNpemUgPSBtX2J1ZmZlci5zaXplKCk7CiAgICAgaWYgKG1fc2l6ZSA+IGJ1ZmZl
clNpemUpIHsKICAgICAgICAgbV9idWZmZXIucmVzaXplKG1fc2l6ZSk7Ci0gICAgICAgIGNoYXIq
IGRlc3RpbmF0aW9uID0gbV9idWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZTsKLSAgICAgICAgdW5z
aWduZWQgYnl0ZXNMZWZ0ID0gbV9zaXplIC0gYnVmZmVyU2l6ZTsKLSNpZiAhVVNFKE5FVFdPUktf
Q0ZEQVRBX0FSUkFZX0NBTExCQUNLKQotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9zZWdtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgdW5zaWduZWQgYnl0ZXNUb0Nv
cHkgPSBtaW4oYnl0ZXNMZWZ0LCBzZWdtZW50U2l6ZSk7Ci0gICAgICAgICAgICBtZW1jcHkoZGVz
dGluYXRpb24sIG1fc2VnbWVudHNbaV0sIGJ5dGVzVG9Db3B5KTsKLSAgICAgICAgICAgIGRlc3Rp
bmF0aW9uICs9IGJ5dGVzVG9Db3B5OwotICAgICAgICAgICAgYnl0ZXNMZWZ0IC09IGJ5dGVzVG9D
b3B5OwotICAgICAgICAgICAgZnJlZVNlZ21lbnQobV9zZWdtZW50c1tpXSk7Ci0gICAgICAgIH0K
LSAgICAgICAgbV9zZWdtZW50cy5jbGVhcigpOwotI2Vsc2UKLSAgICAgICAgY29weURhdGFBcnJh
eUFuZENsZWFyKGRlc3RpbmF0aW9uLCBieXRlc0xlZnQpOwotI2VuZGlmCisgICAgICAgIGNvcHlT
ZWdtZW50c09yRGF0YUFycmF5QW5kQ2xlYXIobV9idWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZSwg
bV9zaXplIC0gYnVmZmVyU2l6ZSk7CiAgICAgfQogICAgIHJldHVybiBtX2J1ZmZlcjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMDMyNTg2OTgxZGNiNWFlYTM5
YTE0ZGQ5YTZiNzhhNDVhZmQ0YzRjYi4uMmRmY2JhY2EwYzc2YTA2YWMxNGI4OTAzODMxNzFlODFi
YjM5ZDEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE3NCw3
ICsxNzQsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQbGF0Zm9ybURhdGEoKTsKICAgICB2
b2lkIG1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKTsKICAgICBib29sIGhhc1BsYXRmb3JtRGF0
YSgpIGNvbnN0OwotICAgIAorCisgICAgdm9pZCBjb3B5U2VnbWVudHNPckRhdGFBcnJheUFuZENs
ZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3Q7CisKICAg
ICB1bnNpZ25lZCBtX3NpemU7CiAgICAgbXV0YWJsZSBWZWN0b3I8Y2hhcj4gbV9idWZmZXI7CiAg
ICAgbXV0YWJsZSBPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBtX3B1cmdlYWJsZUJ1ZmZlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5jcHAK
aW5kZXggMjZjMzc0N2ZiZDViM2MzMmY5NmQwYTA0YTU1ZDVjMDM4MGI1YWVlYi4uYjI1MWQxYjU1
NmQzMGVjMzUxNTUzZDg1MDNiZDliMjA2ZGEzZGY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5jcHAKQEAgLTUyLDcgKzUyLDggQEAg
UHVyZ2VhYmxlQnVmZmVyOjp+UHVyZ2VhYmxlQnVmZmVyKCkKICAgICB2bV9kZWFsbG9jYXRlKG1h
Y2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nhc3Q8dm1fYWRkcmVzc190PihtX2RhdGEpLCBt
X3NpemUpOwogfQogCi1QYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gUHVyZ2VhYmxlQnVmZmVy
OjpjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCitzdGF0aWMgaW5saW5lIGNo
YXIqIGFsbG9jYXRlUHVyZ2VhYmxlQnVmZmVyKHNpemVfdCkgV0FSTl9VTlVTRURfUkVUVVJOOwor
c3RhdGljIGlubGluZSBjaGFyKiBhbGxvY2F0ZVB1cmdlYWJsZUJ1ZmZlcihzaXplX3Qgc2l6ZSkK
IHsKICAgICBpZiAoc2l6ZSA8IG1pblB1cmdlYWJsZUJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtNjQsOSArNjUsMjQgQEAgUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+
IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXoKICAg
ICBpZiAocmV0ICE9IEtFUk5fU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyKSwgZGF0YSwgc2l6ZSk7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlcik7Cit9CiAKLSAgICByZXR1
cm4gYWRvcHRQdHIobmV3IFB1cmdlYWJsZUJ1ZmZlcihyZWludGVycHJldF9jYXN0PGNoYXIqPihi
dWZmZXIpLCBzaXplKSk7CitQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gUHVyZ2VhYmxlQnVm
ZmVyOjpjcmVhdGUoc2l6ZV90IHNpemUpCit7CisgICAgY2hhciogYnVmZmVyID0gYWxsb2NhdGVQ
dXJnZWFibGVCdWZmZXIoc2l6ZSk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHVyZ2VhYmxlQnVmZmVyKGJ1ZmZlciwg
c2l6ZSkpOworfQorCitQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gUHVyZ2VhYmxlQnVmZmVy
OjpjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCit7CisgICAgY2hhciogYnVm
ZmVyID0gYWxsb2NhdGVQdXJnZWFibGVCdWZmZXIoc2l6ZSk7CisgICAgaWYgKCFidWZmZXIpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIG1lbWNweShidWZmZXIsIGRhdGEsIHNpemUpOwor
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgUHVyZ2VhYmxlQnVmZmVyKGJ1ZmZlciwgc2l6ZSkpOwog
fQogCiBib29sIFB1cmdlYWJsZUJ1ZmZlcjo6bWFrZVB1cmdlYWJsZShib29sIHB1cmdlYWJsZSkK
QEAgLTEzOSw3ICsxNTUsNyBAQCBib29sIFB1cmdlYWJsZUJ1ZmZlcjo6d2FzUHVyZ2VkKCkgY29u
c3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWNvbnN0IGNoYXIqIFB1cmdlYWJsZUJ1ZmZlcjo6
ZGF0YSgpIGNvbnN0CitjaGFyKiBQdXJnZWFibGVCdWZmZXI6OmRhdGEoKQogewogICAgIEFTU0VS
VChtX3N0YXRlID09IE5vblZvbGF0aWxlKTsKICAgICByZXR1cm4gbV9kYXRhOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213725</attachid>
            <date>2013-10-08 15:21:27 -0700</date>
            <delta_ts>2013-10-08 15:44:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122516-20131008152130.patch</filename>
            <type>text/plain</type>
            <size>8516</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyNGJhZmVmOWU1ODU5
MTAyNjUwYzliNjUzNmFkMTk0YzcyNzU0OS4uZjBmNTFkM2ZlNWYyZjg1ZjUwZDIyZTJjYTBiNDAx
OTY3M2Q4ZWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEwLTA4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCByZXNpemluZyB0
aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNoYXJlZEJ1ZmZlciB3aGVuIGNyZWF0aW5nIGEgUHVyZ2Vh
YmxlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjI1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDdXJyZW50bHkgd2hlbiB3ZSBjcmVhdGUgYSBQdXJnZWFibGVCdWZmZXIgZnJvbSBhIFNoYXJl
ZEJ1ZmZlciB3ZSBtYXkKKyAgICAgICAgcmVzaXplIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhl
IFNoYXJlZEJ1ZmZlciBzbyB0aGF0IGl0IGNhbiBmaXQgdGhlCisgICAgICAgIGNvbmNhdGVuYXRl
ZCBjb250ZW50cyBvZiBhbGwgb2YgaXRzIHNlZ21lbnRzIGJlZm9yZSBjb3B5aW5nIHRoaXMKKyAg
ICAgICAgaW50ZXJuYWwgYnVmZmVyIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhlIFB1cmdl
YWJsZUJ1ZmZlci4gSW5zdGVhZCwKKyAgICAgICAgd2UgY2FuIGF2b2lkIHJlc2l6aW5nIHRoZSBp
bnRlcm5hbCBidWZmZXIgb2YgU2hhcmVkQnVmZmVyIGJ5IGFsbG9jYXRpbmcKKyAgICAgICAgYSBQ
dXJnZWFibGVCdWZmZXIgYW5kIHRoZW4gY29weWluZyB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgaXRzIHNlZ21lbnRzIGRpcmVjdGx5IGludG8gaXQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGVQdXJnZWFibGVCdWZmZXIpOiBJbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZgorICAgICAgICBTaGFy
ZWRCdWZmZXI6Ontjb3B5QnVmZmVyQW5kQ2xlYXIsIGNyZWF0ZVVuaW5pdGlhbGl6ZWR9KCkuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVhcik6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpidWZmZXIpOiBNb3ZlZCBsb2dpYyB0
byBjb3B5IHNlZ21lbnRzL2RhdGEgYXJyYXkgdG8KKyAgICAgICAgU2hhcmVkQnVmZmVyOjpjb3B5
QnVmZmVyQW5kQ2xlYXIoKSBhbmQgbW9kaWZpZWQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGl0Lgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29w
eUJ1ZmZlckFuZENsZWFyKTogUmVuYW1lZDsgZm9ybWVybHkgY2FsbGVkIFNoYXJlZEJ1ZmZlcjo6
Y29weURhdGFBcnJheUFuZENsZWFyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QdXJnZWFibGVC
dWZmZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsb2NhdGVQdXJnZWFibGVCdWZmZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHVyZ2VhYmxlQnVmZmVyOjpjcmVh
dGUpOiBFeHRyYWN0IGxvZ2ljIHRvIGFsbG9jYXRlIGEgcHVyZ2VhYmxlIGJ1ZmZlciBpbnRvCisg
ICAgICAgIFdlYkNvcmU6OmFsbG9jYXRlUHVyZ2VhYmxlQnVmZmVyIGFuZCBtb2RpZmllZCB0aGlz
IGZ1bmN0aW9uIHRvIHVzZSBpdC4KKwogMjAxMy0xMC0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCB1bnByZWZpeGVkIFdlYkdMIGNvbnRleHQgY3Jl
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKaW5kZXggODM0
MjI0MWQ0Y2EwMTk5YzU1NzdmZDQxYTY0MjEzYmU3YjlmODJhZS4uNGU1Mjc5N2M4MGRkZjhjNDhi
OWY5YWY4NmE4OTg2ZTVmOGZkZTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUHVyZ2VhYmxlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2Vh
YmxlQnVmZmVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIFB1cmdlYWJsZUJ1ZmZlciB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFB1cmdl
YWJsZUJ1ZmZlcik7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093blB0cjxQdXJn
ZWFibGVCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90LCBjaGFyKiYgZGF0YSk7CiAg
ICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNo
YXIqIGRhdGEsIHNpemVfdCk7CiAgICAgICAgIAogICAgICAgICB+UHVyZ2VhYmxlQnVmZmVyKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCBlMmQ5NDA4Njkz
YjA3Y2FjYzQ2ZTE1MWI1NTg3Mzg5YThmNTMyZDg3Li4yNTU2NTE0NmM0ZGVlOTNmMTNmOGQ3MGE3
ZWYwYjIzZDJjNWJmYmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5j
cHAKQEAgLTIzMCw3ICsyMzAsMTcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNyZWF0ZVB1cmdlYWJs
ZUJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCi0gICAgbV9wdXJnZWFi
bGVCdWZmZXIgPSBQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZShidWZmZXIoKS5kYXRhKCksIG1fc2l6
ZSk7CisgICAgY2hhciogZGVzdGluYXRpb24gPSBudWxscHRyOworICAgIG1fcHVyZ2VhYmxlQnVm
ZmVyID0gUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKG1fc2l6ZSwgZGVzdGlu
YXRpb24pOworICAgIGlmICghbV9wdXJnZWFibGVCdWZmZXIpCisgICAgICAgIHJldHVybjsKKyAg
ICB1bnNpZ25lZCBidWZmZXJTaXplID0gbV9idWZmZXIuc2l6ZSgpOworICAgIGlmIChidWZmZXJT
aXplKSB7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgbV9idWZmZXIuZGF0YSgpLCBidWZm
ZXJTaXplKTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gYnVmZmVyU2l6ZTsKKyAgICAgICAgbV9i
dWZmZXIuY2xlYXIoKTsKKyAgICB9CisgICAgY29weUJ1ZmZlckFuZENsZWFyKGRlc3RpbmF0aW9u
LCBtX3NpemUgLSBidWZmZXJTaXplKTsKIH0KIAogY29uc3QgY2hhciogU2hhcmVkQnVmZmVyOjpk
YXRhKCkgY29uc3QKQEAgLTM2Niw2ICszNzYsMjAgQEAgUGFzc093blB0cjxQdXJnZWFibGVCdWZm
ZXI+IFNoYXJlZEJ1ZmZlcjo6cmVsZWFzZVB1cmdlYWJsZUJ1ZmZlcigpCiAgICAgcmV0dXJuIG1f
cHVyZ2VhYmxlQnVmZmVyLnJlbGVhc2UoKTsgCiB9CiAKKyNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRB
X0FSUkFZX0NBTExCQUNLKQordm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVhcihj
aGFyKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgYnl0ZXNUb0NvcHkpIGNvbnN0Cit7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
dW5zaWduZWQgZWZmZWN0aXZlQnl0ZXNUb0NvcHkgPSBtaW4oYnl0ZXNUb0NvcHksIHNlZ21lbnRT
aXplKTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBtX3NlZ21lbnRzW2ldLCBlZmZlY3Rp
dmVCeXRlc1RvQ29weSk7CisgICAgICAgIGRlc3RpbmF0aW9uICs9IGVmZmVjdGl2ZUJ5dGVzVG9D
b3B5OworICAgICAgICBieXRlc1RvQ29weSAtPSBlZmZlY3RpdmVCeXRlc1RvQ29weTsKKyAgICAg
ICAgZnJlZVNlZ21lbnQobV9zZWdtZW50c1tpXSk7CisgICAgfQorICAgIG1fc2VnbWVudHMuY2xl
YXIoKTsKK30KKyNlbmRpZgorCiBjb25zdCBWZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6YnVm
ZmVyKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoRElTS19JTUFHRV9DQUNIRSkKQEAgLTM3NCwyMCAr
Mzk4LDcgQEAgY29uc3QgVmVjdG9yPGNoYXI+JiBTaGFyZWRCdWZmZXI6OmJ1ZmZlcigpIGNvbnN0
CiAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZSA9IG1fYnVmZmVyLnNpemUoKTsKICAgICBpZiAobV9z
aXplID4gYnVmZmVyU2l6ZSkgewogICAgICAgICBtX2J1ZmZlci5yZXNpemUobV9zaXplKTsKLSAg
ICAgICAgY2hhciogZGVzdGluYXRpb24gPSBtX2J1ZmZlci5kYXRhKCkgKyBidWZmZXJTaXplOwot
ICAgICAgICB1bnNpZ25lZCBieXRlc0xlZnQgPSBtX3NpemUgLSBidWZmZXJTaXplOwotI2lmICFV
U0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0spCi0gICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBieXRlc1RvQ29weSA9IG1pbihieXRlc0xlZnQsIHNlZ21lbnRTaXplKTsKLSAgICAgICAgICAg
IG1lbWNweShkZXN0aW5hdGlvbiwgbV9zZWdtZW50c1tpXSwgYnl0ZXNUb0NvcHkpOwotICAgICAg
ICAgICAgZGVzdGluYXRpb24gKz0gYnl0ZXNUb0NvcHk7Ci0gICAgICAgICAgICBieXRlc0xlZnQg
LT0gYnl0ZXNUb0NvcHk7Ci0gICAgICAgICAgICBmcmVlU2VnbWVudChtX3NlZ21lbnRzW2ldKTsK
LSAgICAgICAgfQotICAgICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7Ci0jZWxzZQotICAgICAgICBj
b3B5RGF0YUFycmF5QW5kQ2xlYXIoZGVzdGluYXRpb24sIGJ5dGVzTGVmdCk7Ci0jZW5kaWYKKyAg
ICAgICAgY29weUJ1ZmZlckFuZENsZWFyKG1fYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclNpemUsIG1f
c2l6ZSAtIGJ1ZmZlclNpemUpOwogICAgIH0KICAgICByZXR1cm4gbV9idWZmZXI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDAzMjU4Njk4MWRjYjVhZWEzOWEx
NGRkOWE2Yjc4YTQ1YWZkNGM0Y2IuLjc5ZGFlMWIzYzQwYzZlZWU4Y2U2N2E5NTg3MTI5ZDE3ZWI4
Njk3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xNzQsMTMg
KzE3NCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJQbGF0Zm9ybURhdGEoKTsKICAgICB2
b2lkIG1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKTsKICAgICBib29sIGhhc1BsYXRmb3JtRGF0
YSgpIGNvbnN0OwotICAgIAorCisgICAgdm9pZCBjb3B5QnVmZmVyQW5kQ2xlYXIoY2hhciogZGVz
dGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjb25zdDsKKwogICAgIHVuc2lnbmVkIG1f
c2l6ZTsKICAgICBtdXRhYmxlIFZlY3RvcjxjaGFyPiBtX2J1ZmZlcjsKICAgICBtdXRhYmxlIE93
blB0cjxQdXJnZWFibGVCdWZmZXI+IG1fcHVyZ2VhYmxlQnVmZmVyOwogI2lmIFVTRShORVRXT1JL
X0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICBtdXRhYmxlIFZlY3RvcjxSZXRhaW5QdHI8Q0ZE
YXRhUmVmPiA+IG1fZGF0YUFycmF5OwotICAgIHZvaWQgY29weURhdGFBcnJheUFuZENsZWFyKGNo
YXIgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3Q7CiAgICAgdW5zaWdu
ZWQgY29weVNvbWVEYXRhRnJvbURhdGFBcnJheShjb25zdCBjaGFyKiYgc29tZURhdGEsIHVuc2ln
bmVkIHBvc2l0aW9uKSBjb25zdDsKICAgICBjb25zdCBjaGFyICpzaW5nbGVEYXRhQXJyYXlCdWZm
ZXIoKSBjb25zdDsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
Zi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRC
dWZmZXJDRi5jcHAKaW5kZXggNzk3MTA1NzhlYTMxZWZmZWU4YzMxNmJkOTk4YzkxZmRlNjYyNjZl
Yi4uNzVhOTM3OTAwNjBmZmQxNzBjNWE4YzFjNjU5ZjdkMDlhMDgxYmNjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtMTIwLDcgKzEyMCw3
IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZEYXRhUmVmIGRhdGEpCiAgICAgbV9zaXpl
ICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKIH0KIAotdm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlE
YXRhQXJyYXlBbmRDbGVhcihjaGFyICpkZXN0aW5hdGlvbiwgdW5zaWduZWQgYnl0ZXNUb0NvcHkp
IGNvbnN0Cit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKGNoYXIqIGRlc3Rp
bmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3QKIHsKICAgICBpZiAobV9kYXRhQXJy
YXkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUHVyZ2VhYmxlQnVmZmVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMuY3BwCmluZGV4IDI2YzM3NDdmYmQ1YjNjMzJm
OTZkMGEwNGE1NWQ1YzAzODBiNWFlZWIuLjdiMzQwM2E5MTRlODI1OTU3ZmQ3OTM0NTEzZGQ5NmRm
YjNlOTllNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdXJnZWFi
bGVCdWZmZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdXJnZWFi
bGVCdWZmZXJNYWMuY3BwCkBAIC01Miw3ICs1Miw4IEBAIFB1cmdlYWJsZUJ1ZmZlcjo6flB1cmdl
YWJsZUJ1ZmZlcigpCiAgICAgdm1fZGVhbGxvY2F0ZShtYWNoX3Rhc2tfc2VsZigpLCByZWludGVy
cHJldF9jYXN0PHZtX2FkZHJlc3NfdD4obV9kYXRhKSwgbV9zaXplKTsKIH0KIAotUGFzc093blB0
cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemVfdCBzaXplKQorc3RhdGljIGlubGluZSBjaGFyKiBhbGxvY2F0ZVB1cmdlYWJsZUJ1
ZmZlcihzaXplX3QpIFdBUk5fVU5VU0VEX1JFVFVSTjsKK3N0YXRpYyBpbmxpbmUgY2hhciogYWxs
b2NhdGVQdXJnZWFibGVCdWZmZXIoc2l6ZV90IHNpemUpCiB7CiAgICAgaWYgKHNpemUgPCBtaW5Q
dXJnZWFibGVCdWZmZXJTaXplKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTY0LDkgKzY1
LDI1IEBAIFBhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBQdXJnZWFibGVCdWZmZXI6OmNyZWF0
ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6CiAgICAgaWYgKHJldCAhPSBLRVJOX1NVQ0NF
U1MpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgbWVtY3B5KHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGJ1ZmZlciksIGRhdGEsIHNpemUpOworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNoYXIqPihidWZmZXIpOworfQogCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQdXJnZWFi
bGVCdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYnVmZmVyKSwgc2l6ZSkpOworUGFzc093
blB0cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXpl
ZChzaXplX3Qgc2l6ZSwgY2hhciomIGRhdGEpCit7CisgICAgY2hhciogYnVmZmVyID0gYWxsb2Nh
dGVQdXJnZWFibGVCdWZmZXIoc2l6ZSk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIGRhdGEgPSBidWZmZXI7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
dXJnZWFibGVCdWZmZXIoYnVmZmVyLCBzaXplKSk7Cit9CisKK1Bhc3NPd25QdHI8UHVyZ2VhYmxl
QnVmZmVyPiBQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKK3sKKyAgICBjaGFyKiBidWZmZXIgPSBhbGxvY2F0ZVB1cmdlYWJsZUJ1ZmZlcihzaXpl
KTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgbWVtY3B5
KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQdXJnZWFibGVC
dWZmZXIoYnVmZmVyLCBzaXplKSk7CiB9CiAKIGJvb2wgUHVyZ2VhYmxlQnVmZmVyOjptYWtlUHVy
Z2VhYmxlKGJvb2wgcHVyZ2VhYmxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213727</attachid>
            <date>2013-10-08 15:44:29 -0700</date>
            <delta_ts>2013-10-08 15:45:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122516-20131008154432.patch</filename>
            <type>text/plain</type>
            <size>9167</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyNGJhZmVmOWU1ODU5
MTAyNjUwYzliNjUzNmFkMTk0YzcyNzU0OS4uZjBmNTFkM2ZlNWYyZjg1ZjUwZDIyZTJjYTBiNDAx
OTY3M2Q4ZWY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTEwLTA4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCByZXNpemluZyB0
aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNoYXJlZEJ1ZmZlciB3aGVuIGNyZWF0aW5nIGEgUHVyZ2Vh
YmxlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjI1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDdXJyZW50bHkgd2hlbiB3ZSBjcmVhdGUgYSBQdXJnZWFibGVCdWZmZXIgZnJvbSBhIFNoYXJl
ZEJ1ZmZlciB3ZSBtYXkKKyAgICAgICAgcmVzaXplIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhl
IFNoYXJlZEJ1ZmZlciBzbyB0aGF0IGl0IGNhbiBmaXQgdGhlCisgICAgICAgIGNvbmNhdGVuYXRl
ZCBjb250ZW50cyBvZiBhbGwgb2YgaXRzIHNlZ21lbnRzIGJlZm9yZSBjb3B5aW5nIHRoaXMKKyAg
ICAgICAgaW50ZXJuYWwgYnVmZmVyIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhlIFB1cmdl
YWJsZUJ1ZmZlci4gSW5zdGVhZCwKKyAgICAgICAgd2UgY2FuIGF2b2lkIHJlc2l6aW5nIHRoZSBp
bnRlcm5hbCBidWZmZXIgb2YgU2hhcmVkQnVmZmVyIGJ5IGFsbG9jYXRpbmcKKyAgICAgICAgYSBQ
dXJnZWFibGVCdWZmZXIgYW5kIHRoZW4gY29weWluZyB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgaXRzIHNlZ21lbnRzIGRpcmVjdGx5IGludG8gaXQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9TaGFyZWRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGVQdXJnZWFibGVCdWZmZXIpOiBJbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZgorICAgICAgICBTaGFy
ZWRCdWZmZXI6Ontjb3B5QnVmZmVyQW5kQ2xlYXIsIGNyZWF0ZVVuaW5pdGlhbGl6ZWR9KCkuCisg
ICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVhcik6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpidWZmZXIpOiBNb3ZlZCBsb2dpYyB0
byBjb3B5IHNlZ21lbnRzL2RhdGEgYXJyYXkgdG8KKyAgICAgICAgU2hhcmVkQnVmZmVyOjpjb3B5
QnVmZmVyQW5kQ2xlYXIoKSBhbmQgbW9kaWZpZWQgaW1wbGVtZW50YXRpb24gdG8gdXNlIGl0Lgor
ICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2Nm
L1NoYXJlZEJ1ZmZlckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y29w
eUJ1ZmZlckFuZENsZWFyKTogUmVuYW1lZDsgZm9ybWVybHkgY2FsbGVkIFNoYXJlZEJ1ZmZlcjo6
Y29weURhdGFBcnJheUFuZENsZWFyLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QdXJnZWFibGVC
dWZmZXJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWxsb2NhdGVQdXJnZWFibGVCdWZmZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlVW5pbml0
aWFsaXplZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHVyZ2VhYmxlQnVmZmVyOjpjcmVh
dGUpOiBFeHRyYWN0IGxvZ2ljIHRvIGFsbG9jYXRlIGEgcHVyZ2VhYmxlIGJ1ZmZlciBpbnRvCisg
ICAgICAgIFdlYkNvcmU6OmFsbG9jYXRlUHVyZ2VhYmxlQnVmZmVyIGFuZCBtb2RpZmllZCB0aGlz
IGZ1bmN0aW9uIHRvIHVzZSBpdC4KKwogMjAxMy0xMC0wOCAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCB1bnByZWZpeGVkIFdlYkdMIGNvbnRleHQgY3Jl
YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLm9yZGVyCmluZGV4IDJiMDJhMDBkMGViNmRiMTUxYjQxYmM3YWFlMjBm
MDQ0MmMyNjZiOGQuLjcwYmNlMGNiZDk5M2U0Y2E2NDFiMmM1MjU4MmI4ODJiZTFlZWZhMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlcgpAQCAtMTExODEsNiArMTExODEsNyBAQCBfX1pON1dlYkNvcmUxNVN0
b3JhZ2VBcmVhSW1wbDIwZGVjcmVtZW50QWNjZXNzQ291bnRFdgogX19aTjdXZWJDb3JlMTlEYXRh
c2V0RE9NU3RyaW5nTWFwRDBFdgogX19aTjdXZWJDb3JlMTJET01TdHJpbmdNYXBEMkV2CiBfX1pO
N1dlYkNvcmUxNVB1cmdlYWJsZUJ1ZmZlcjZjcmVhdGVFUEtjbQorX19aTjdXZWJDb3JlMTVQdXJn
ZWFibGVCdWZmZXIxOWNyZWF0ZVVuaW5pdGlhbGl6ZWRFbVJQYwogX19aTjdXZWJDb3JlMTRSZXNv
dXJjZUJ1ZmZlcjIycmVsZWFzZVB1cmdlYWJsZUJ1ZmZlckV2CiBfX1pON1dlYkNvcmUxMlNoYXJl
ZEJ1ZmZlcjIycmVsZWFzZVB1cmdlYWJsZUJ1ZmZlckV2CiBfX1pOSzdXZWJDb3JlMTlDYWNoZWRD
U1NTdHlsZVNoZWV0MTNwdXJnZVByaW9yaXR5RXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1B1cmdlYWJsZUJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVy
Z2VhYmxlQnVmZmVyLmgKaW5kZXggODM0MjI0MWQ0Y2EwMTk5YzU1NzdmZDQxYTY0MjEzYmU3Yjlm
ODJhZS4uNGU1Mjc5N2M4MGRkZjhjNDhiOWY5YWY4NmE4OTg2ZTVmOGZkZTY2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFB1cmdlYWJsZUJ1ZmZlciB7CiAgICAgICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFB1cmdlYWJsZUJ1ZmZlcik7CiAgICAgcHVibGljOgorICAgICAg
ICBzdGF0aWMgUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IGNyZWF0ZVVuaW5pdGlhbGl6ZWQo
c2l6ZV90LCBjaGFyKiYgZGF0YSk7CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFB1cmdlYWJs
ZUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCk7CiAgICAgICAgIAogICAg
ICAgICB+UHVyZ2VhYmxlQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcAppbmRleCBlMmQ5NDA4NjkzYjA3Y2FjYzQ2ZTE1MWI1NTg3Mzg5YThmNTMyZDg3Li4y
NTU2NTE0NmM0ZGVlOTNmMTNmOGQ3MGE3ZWYwYjIzZDJjNWJmYmI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTIzMCw3ICsyMzAsMTcgQEAgdm9pZCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZVB1cmdlYWJsZUJ1ZmZlcigpIGNvbnN0CiAgICAgICAgIHJldHVybjsK
ICNlbmRpZgogCi0gICAgbV9wdXJnZWFibGVCdWZmZXIgPSBQdXJnZWFibGVCdWZmZXI6OmNyZWF0
ZShidWZmZXIoKS5kYXRhKCksIG1fc2l6ZSk7CisgICAgY2hhciogZGVzdGluYXRpb24gPSBudWxs
cHRyOworICAgIG1fcHVyZ2VhYmxlQnVmZmVyID0gUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGVVbmlu
aXRpYWxpemVkKG1fc2l6ZSwgZGVzdGluYXRpb24pOworICAgIGlmICghbV9wdXJnZWFibGVCdWZm
ZXIpCisgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBidWZmZXJTaXplID0gbV9idWZmZXIu
c2l6ZSgpOworICAgIGlmIChidWZmZXJTaXplKSB7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlv
biwgbV9idWZmZXIuZGF0YSgpLCBidWZmZXJTaXplKTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0g
YnVmZmVyU2l6ZTsKKyAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKKyAgICB9CisgICAgY29weUJ1
ZmZlckFuZENsZWFyKGRlc3RpbmF0aW9uLCBtX3NpemUgLSBidWZmZXJTaXplKTsKIH0KIAogY29u
c3QgY2hhciogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKQEAgLTM2Niw2ICszNzYsMjAgQEAg
UGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6cmVsZWFzZVB1cmdlYWJs
ZUJ1ZmZlcigpCiAgICAgcmV0dXJuIG1fcHVyZ2VhYmxlQnVmZmVyLnJlbGVhc2UoKTsgCiB9CiAK
KyNpZiAhVVNFKE5FVFdPUktfQ0ZEQVRBX0FSUkFZX0NBTExCQUNLKQordm9pZCBTaGFyZWRCdWZm
ZXI6OmNvcHlCdWZmZXJBbmRDbGVhcihjaGFyKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgYnl0ZXNU
b0NvcHkpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2VnbWVudHMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgZWZmZWN0aXZlQnl0ZXNUb0NvcHkgPSBt
aW4oYnl0ZXNUb0NvcHksIHNlZ21lbnRTaXplKTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9u
LCBtX3NlZ21lbnRzW2ldLCBlZmZlY3RpdmVCeXRlc1RvQ29weSk7CisgICAgICAgIGRlc3RpbmF0
aW9uICs9IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OworICAgICAgICBieXRlc1RvQ29weSAtPSBlZmZl
Y3RpdmVCeXRlc1RvQ29weTsKKyAgICAgICAgZnJlZVNlZ21lbnQobV9zZWdtZW50c1tpXSk7Cisg
ICAgfQorICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKK30KKyNlbmRpZgorCiBjb25zdCBWZWN0b3I8
Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoRElTS19J
TUFHRV9DQUNIRSkKQEAgLTM3NCwyMCArMzk4LDcgQEAgY29uc3QgVmVjdG9yPGNoYXI+JiBTaGFy
ZWRCdWZmZXI6OmJ1ZmZlcigpIGNvbnN0CiAgICAgdW5zaWduZWQgYnVmZmVyU2l6ZSA9IG1fYnVm
ZmVyLnNpemUoKTsKICAgICBpZiAobV9zaXplID4gYnVmZmVyU2l6ZSkgewogICAgICAgICBtX2J1
ZmZlci5yZXNpemUobV9zaXplKTsKLSAgICAgICAgY2hhciogZGVzdGluYXRpb24gPSBtX2J1ZmZl
ci5kYXRhKCkgKyBidWZmZXJTaXplOwotICAgICAgICB1bnNpZ25lZCBieXRlc0xlZnQgPSBtX3Np
emUgLSBidWZmZXJTaXplOwotI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlfQ0FMTEJBQ0sp
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3NlZ21lbnRzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBieXRlc1RvQ29weSA9IG1pbihieXRlc0xlZnQsIHNl
Z21lbnRTaXplKTsKLSAgICAgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgbV9zZWdtZW50c1tp
XSwgYnl0ZXNUb0NvcHkpOwotICAgICAgICAgICAgZGVzdGluYXRpb24gKz0gYnl0ZXNUb0NvcHk7
Ci0gICAgICAgICAgICBieXRlc0xlZnQgLT0gYnl0ZXNUb0NvcHk7Ci0gICAgICAgICAgICBmcmVl
U2VnbWVudChtX3NlZ21lbnRzW2ldKTsKLSAgICAgICAgfQotICAgICAgICBtX3NlZ21lbnRzLmNs
ZWFyKCk7Ci0jZWxzZQotICAgICAgICBjb3B5RGF0YUFycmF5QW5kQ2xlYXIoZGVzdGluYXRpb24s
IGJ5dGVzTGVmdCk7Ci0jZW5kaWYKKyAgICAgICAgY29weUJ1ZmZlckFuZENsZWFyKG1fYnVmZmVy
LmRhdGEoKSArIGJ1ZmZlclNpemUsIG1fc2l6ZSAtIGJ1ZmZlclNpemUpOwogICAgIH0KICAgICBy
ZXR1cm4gbV9idWZmZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmlu
ZGV4IDAzMjU4Njk4MWRjYjVhZWEzOWExNGRkOWE2Yjc4YTQ1YWZkNGM0Y2IuLjc5ZGFlMWIzYzQw
YzZlZWU4Y2U2N2E5NTg3MTI5ZDE3ZWI4Njk3ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1No
YXJlZEJ1ZmZlci5oCkBAIC0xNzQsMTMgKzE3NCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xl
YXJQbGF0Zm9ybURhdGEoKTsKICAgICB2b2lkIG1heWJlVHJhbnNmZXJQbGF0Zm9ybURhdGEoKTsK
ICAgICBib29sIGhhc1BsYXRmb3JtRGF0YSgpIGNvbnN0OwotICAgIAorCisgICAgdm9pZCBjb3B5
QnVmZmVyQW5kQ2xlYXIoY2hhciogZGVzdGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBj
b25zdDsKKwogICAgIHVuc2lnbmVkIG1fc2l6ZTsKICAgICBtdXRhYmxlIFZlY3RvcjxjaGFyPiBt
X2J1ZmZlcjsKICAgICBtdXRhYmxlIE93blB0cjxQdXJnZWFibGVCdWZmZXI+IG1fcHVyZ2VhYmxl
QnVmZmVyOwogI2lmIFVTRShORVRXT1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKICAgICBtdXRh
YmxlIFZlY3RvcjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+IG1fZGF0YUFycmF5OwotICAgIHZvaWQg
Y29weURhdGFBcnJheUFuZENsZWFyKGNoYXIgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1Rv
Q29weSkgY29uc3Q7CiAgICAgdW5zaWduZWQgY29weVNvbWVEYXRhRnJvbURhdGFBcnJheShjb25z
dCBjaGFyKiYgc29tZURhdGEsIHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdDsKICAgICBjb25zdCBj
aGFyICpzaW5nbGVEYXRhQXJyYXlCdWZmZXIoKSBjb25zdDsKICNlbHNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggNzk3MTA1NzhlYTMxZWZm
ZWU4YzMxNmJkOTk4YzkxZmRlNjYyNjZlYi4uNzVhOTM3OTAwNjBmZmQxNzBjNWE4YzFjNjU5Zjdk
MDlhMDgxYmNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVk
QnVmZmVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZl
ckNGLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjphcHBlbmQoQ0ZE
YXRhUmVmIGRhdGEpCiAgICAgbV9zaXplICs9IENGRGF0YUdldExlbmd0aChkYXRhKTsKIH0KIAot
dm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlEYXRhQXJyYXlBbmRDbGVhcihjaGFyICpkZXN0aW5hdGlv
biwgdW5zaWduZWQgYnl0ZXNUb0NvcHkpIGNvbnN0Cit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1
ZmZlckFuZENsZWFyKGNoYXIqIGRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29u
c3QKIHsKICAgICBpZiAobV9kYXRhQXJyYXkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVyZ2VhYmxlQnVmZmVyTWFj
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMuY3Bw
CmluZGV4IDI2YzM3NDdmYmQ1YjNjMzJmOTZkMGEwNGE1NWQ1YzAzODBiNWFlZWIuLjdiMzQwM2E5
MTRlODI1OTU3ZmQ3OTM0NTEzZGQ5NmRmYjNlOTllNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMuY3BwCkBAIC01Miw3ICs1Miw4IEBA
IFB1cmdlYWJsZUJ1ZmZlcjo6flB1cmdlYWJsZUJ1ZmZlcigpCiAgICAgdm1fZGVhbGxvY2F0ZSht
YWNoX3Rhc2tfc2VsZigpLCByZWludGVycHJldF9jYXN0PHZtX2FkZHJlc3NfdD4obV9kYXRhKSwg
bV9zaXplKTsKIH0KIAotUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1ZmZl
cjo6Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQorc3RhdGljIGlubGluZSBj
aGFyKiBhbGxvY2F0ZVB1cmdlYWJsZUJ1ZmZlcihzaXplX3QpIFdBUk5fVU5VU0VEX1JFVFVSTjsK
K3N0YXRpYyBpbmxpbmUgY2hhciogYWxsb2NhdGVQdXJnZWFibGVCdWZmZXIoc2l6ZV90IHNpemUp
CiB7CiAgICAgaWYgKHNpemUgPCBtaW5QdXJnZWFibGVCdWZmZXJTaXplKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTY0LDkgKzY1LDI1IEBAIFBhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVy
PiBQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6CiAg
ICAgaWYgKHJldCAhPSBLRVJOX1NVQ0NFU1MpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgbWVtY3B5KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGJ1ZmZlciksIGRhdGEsIHNpemUpOwor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIpOworfQogCi0gICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBQdXJnZWFibGVCdWZmZXIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o
YnVmZmVyKSwgc2l6ZSkpOworUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1
ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZChzaXplX3Qgc2l6ZSwgY2hhciomIGRhdGEpCit7Cisg
ICAgY2hhciogYnVmZmVyID0gYWxsb2NhdGVQdXJnZWFibGVCdWZmZXIoc2l6ZSk7CisgICAgaWYg
KCFidWZmZXIpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGRhdGEgPSBidWZmZXI7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQdXJnZWFibGVCdWZmZXIoYnVmZmVyLCBzaXplKSk7Cit9
CisKK1Bhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZShj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyKiBidWZmZXIgPSBhbGxv
Y2F0ZVB1cmdlYWJsZUJ1ZmZlcihzaXplKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgbWVtY3B5KGJ1ZmZlciwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBQdXJnZWFibGVCdWZmZXIoYnVmZmVyLCBzaXplKSk7CiB9CiAKIGJvb2wg
UHVyZ2VhYmxlQnVmZmVyOjptYWtlUHVyZ2VhYmxlKGJvb2wgcHVyZ2VhYmxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213728</attachid>
            <date>2013-10-08 15:45:06 -0700</date>
            <delta_ts>2013-10-08 16:01:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122516-20131008154509.patch</filename>
            <type>text/plain</type>
            <size>9193</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyNGJhZmVmOWU1ODU5
MTAyNjUwYzliNjUzNmFkMTk0YzcyNzU0OS4uYTM1YTVhNjdjMjMwNDAwMTY2ZDZlODllZGZiZDFh
M2RiMDkzYjBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTEwLTA4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCByZXNpemluZyB0
aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNoYXJlZEJ1ZmZlciB3aGVuIGNyZWF0aW5nIGEgUHVyZ2Vh
YmxlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjI1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDdXJyZW50bHkgd2hlbiB3ZSBjcmVhdGUgYSBQdXJnZWFibGVCdWZmZXIgZnJvbSBhIFNoYXJl
ZEJ1ZmZlciB3ZSBtYXkKKyAgICAgICAgcmVzaXplIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhl
IFNoYXJlZEJ1ZmZlciBzbyB0aGF0IGl0IGNhbiBmaXQgdGhlCisgICAgICAgIGNvbmNhdGVuYXRl
ZCBjb250ZW50cyBvZiBhbGwgb2YgaXRzIHNlZ21lbnRzIGJlZm9yZSBjb3B5aW5nIHRoaXMKKyAg
ICAgICAgaW50ZXJuYWwgYnVmZmVyIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhlIFB1cmdl
YWJsZUJ1ZmZlci4gSW5zdGVhZCwKKyAgICAgICAgd2UgY2FuIGF2b2lkIHJlc2l6aW5nIHRoZSBp
bnRlcm5hbCBidWZmZXIgb2YgU2hhcmVkQnVmZmVyIGJ5IGFsbG9jYXRpbmcKKyAgICAgICAgYSBQ
dXJnZWFibGVCdWZmZXIgYW5kIHRoZW4gY29weWluZyB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgaXRzIHNlZ21lbnRzIGRpcmVjdGx5IGludG8gaXQuCisK
KyAgICAgICAgKiBXZWJDb3JlLm9yZGVyOgorICAgICAgICAqIHBsYXRmb3JtL1B1cmdlYWJsZUJ1
ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZVB1cmdlYWJsZUJ1ZmZlcik6IEltcGxlbWVudGVk
IGluIHRlcm1zIG9mCisgICAgICAgIFNoYXJlZEJ1ZmZlcjo6e2NvcHlCdWZmZXJBbmRDbGVhciwg
Y3JlYXRlVW5pbml0aWFsaXplZH0oKS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
Y29weUJ1ZmZlckFuZENsZWFyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmJ1ZmZlcik6IE1vdmVkIGxvZ2ljIHRvIGNvcHkgc2VnbWVudHMvZGF0YSBhcnJheSB0bwor
ICAgICAgICBTaGFyZWRCdWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVhcigpIGFuZCBtb2RpZmllZCBp
bXBsZW1lbnRhdGlvbiB0byB1c2UgaXQuCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5QnVmZmVyQW5kQ2xlYXIpOiBSZW5hbWVkOyBmb3Jt
ZXJseSBjYWxsZWQgU2hhcmVkQnVmZmVyOjpjb3B5RGF0YUFycmF5QW5kQ2xlYXIuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphbGxvY2F0ZVB1cmdlYWJsZUJ1ZmZlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UHVy
Z2VhYmxlQnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZSk6IEV4dHJhY3QgbG9naWMgdG8gYWxsb2NhdGUg
YSBwdXJnZWFibGUgYnVmZmVyIGludG8KKyAgICAgICAgV2ViQ29yZTo6YWxsb2NhdGVQdXJnZWFi
bGVCdWZmZXIgYW5kIG1vZGlmaWVkIHRoaXMgZnVuY3Rpb24gdG8gdXNlIGl0LgorCiAyMDEzLTEw
LTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IHVu
cHJlZml4ZWQgV2ViR0wgY29udGV4dCBjcmVhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5vcmRlciBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUub3JkZXIKaW5kZXggMmIw
MmEwMGQwZWI2ZGIxNTFiNDFiYzdhYWUyMGYwNDQyYzI2NmI4ZC4uNzBiY2UwY2JkOTkzZTRjYTY0
MWIyYzUyNTgyYjg4MmJlMWVlZmExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5vcmRlcgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLm9yZGVyCkBAIC0xMTE4MSw2ICsx
MTE4MSw3IEBAIF9fWk43V2ViQ29yZTE1U3RvcmFnZUFyZWFJbXBsMjBkZWNyZW1lbnRBY2Nlc3ND
b3VudEV2CiBfX1pON1dlYkNvcmUxOURhdGFzZXRET01TdHJpbmdNYXBEMEV2CiBfX1pON1dlYkNv
cmUxMkRPTVN0cmluZ01hcEQyRXYKIF9fWk43V2ViQ29yZTE1UHVyZ2VhYmxlQnVmZmVyNmNyZWF0
ZUVQS2NtCitfX1pON1dlYkNvcmUxNVB1cmdlYWJsZUJ1ZmZlcjE5Y3JlYXRlVW5pbml0aWFsaXpl
ZEVtUlBjCiBfX1pON1dlYkNvcmUxNFJlc291cmNlQnVmZmVyMjJyZWxlYXNlUHVyZ2VhYmxlQnVm
ZmVyRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyMjJyZWxlYXNlUHVyZ2VhYmxlQnVmZmVy
RXYKIF9fWk5LN1dlYkNvcmUxOUNhY2hlZENTU1N0eWxlU2hlZXQxM3B1cmdlUHJpb3JpdHlFdgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaAppbmRleCA4MzQyMjQxZDRj
YTAxOTljNTU3N2ZkNDFhNjQyMTNiZTdiOWY4MmFlLi40ZTUyNzk3YzgwZGRmOGM0OGI5ZjlhZjg2
YTg5ODZlNWY4ZmRlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJn
ZWFibGVCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZm
ZXIuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUHVy
Z2VhYmxlQnVmZmVyIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHVyZ2VhYmxlQnVm
ZmVyKTsKICAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFB1cmdlYWJsZUJ1
ZmZlcj4gY3JlYXRlVW5pbml0aWFsaXplZChzaXplX3QsIGNoYXIqJiBkYXRhKTsKICAgICAgICAg
c3RhdGljIFBhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90KTsKICAgICAgICAgCiAgICAgICAgIH5QdXJnZWFibGVCdWZmZXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGUyZDk0MDg2OTNiMDdjYWNj
NDZlMTUxYjU1ODczODlhOGY1MzJkODcuLjI1NTY1MTQ2YzRkZWU5M2YxM2Y4ZDcwYTdlZjBiMjNk
MmM1YmZiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAt
MjMwLDcgKzIzMCwxNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlUHVyZ2VhYmxlQnVmZmVy
KCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBtX3B1cmdlYWJsZUJ1ZmZl
ciA9IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlcigpLmRhdGEoKSwgbV9zaXplKTsKKyAg
ICBjaGFyKiBkZXN0aW5hdGlvbiA9IG51bGxwdHI7CisgICAgbV9wdXJnZWFibGVCdWZmZXIgPSBQ
dXJnZWFibGVCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9zaXplLCBkZXN0aW5hdGlvbik7
CisgICAgaWYgKCFtX3B1cmdlYWJsZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIHVuc2ln
bmVkIGJ1ZmZlclNpemUgPSBtX2J1ZmZlci5zaXplKCk7CisgICAgaWYgKGJ1ZmZlclNpemUpIHsK
KyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBtX2J1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUp
OworICAgICAgICBkZXN0aW5hdGlvbiArPSBidWZmZXJTaXplOworICAgICAgICBtX2J1ZmZlci5j
bGVhcigpOworICAgIH0KKyAgICBjb3B5QnVmZmVyQW5kQ2xlYXIoZGVzdGluYXRpb24sIG1fc2l6
ZSAtIGJ1ZmZlclNpemUpOwogfQogCiBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBj
b25zdApAQCAtMzY2LDYgKzM3NiwyMCBAQCBQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpyZWxlYXNlUHVyZ2VhYmxlQnVmZmVyKCkKICAgICByZXR1cm4gbV9wdXJnZWFi
bGVCdWZmZXIucmVsZWFzZSgpOyAKIH0KIAorI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlf
Q0FMTEJBQ0spCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKGNoYXIqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICB1bnNpZ25l
ZCBlZmZlY3RpdmVCeXRlc1RvQ29weSA9IG1pbihieXRlc1RvQ29weSwgc2VnbWVudFNpemUpOwor
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fc2VnbWVudHNbaV0sIGVmZmVjdGl2ZUJ5dGVz
VG9Db3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gZWZmZWN0aXZlQnl0ZXNUb0NvcHk7Cisg
ICAgICAgIGJ5dGVzVG9Db3B5IC09IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OworICAgICAgICBmcmVl
U2VnbWVudChtX3NlZ21lbnRzW2ldKTsKKyAgICB9CisgICAgbV9zZWdtZW50cy5jbGVhcigpOwor
fQorI2VuZGlmCisKIGNvbnN0IFZlY3RvcjxjaGFyPiYgU2hhcmVkQnVmZmVyOjpidWZmZXIoKSBj
b25zdAogewogI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQpAQCAtMzc0LDIwICszOTgsNyBA
QCBjb25zdCBWZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyKCkgY29uc3QKICAgICB1
bnNpZ25lZCBidWZmZXJTaXplID0gbV9idWZmZXIuc2l6ZSgpOwogICAgIGlmIChtX3NpemUgPiBi
dWZmZXJTaXplKSB7CiAgICAgICAgIG1fYnVmZmVyLnJlc2l6ZShtX3NpemUpOwotICAgICAgICBj
aGFyKiBkZXN0aW5hdGlvbiA9IG1fYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclNpemU7Ci0gICAgICAg
IHVuc2lnbmVkIGJ5dGVzTGVmdCA9IG1fc2l6ZSAtIGJ1ZmZlclNpemU7Ci0jaWYgIVVTRShORVRX
T1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVz
VG9Db3B5ID0gbWluKGJ5dGVzTGVmdCwgc2VnbWVudFNpemUpOwotICAgICAgICAgICAgbWVtY3B5
KGRlc3RpbmF0aW9uLCBtX3NlZ21lbnRzW2ldLCBieXRlc1RvQ29weSk7Ci0gICAgICAgICAgICBk
ZXN0aW5hdGlvbiArPSBieXRlc1RvQ29weTsKLSAgICAgICAgICAgIGJ5dGVzTGVmdCAtPSBieXRl
c1RvQ29weTsKLSAgICAgICAgICAgIGZyZWVTZWdtZW50KG1fc2VnbWVudHNbaV0pOwotICAgICAg
ICB9Ci0gICAgICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSNlbHNlCi0gICAgICAgIGNvcHlEYXRh
QXJyYXlBbmRDbGVhcihkZXN0aW5hdGlvbiwgYnl0ZXNMZWZ0KTsKLSNlbmRpZgorICAgICAgICBj
b3B5QnVmZmVyQW5kQ2xlYXIobV9idWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZSwgbV9zaXplIC0g
YnVmZmVyU2l6ZSk7CiAgICAgfQogICAgIHJldHVybiBtX2J1ZmZlcjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMDMyNTg2OTgxZGNiNWFlYTM5YTE0ZGQ5YTZi
NzhhNDVhZmQ0YzRjYi4uNzlkYWUxYjNjNDBjNmVlZThjZTY3YTk1ODcxMjlkMTdlYjg2OTdkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE3NCwxMyArMTc0LDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclBsYXRmb3JtRGF0YSgpOwogICAgIHZvaWQgbWF5
YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpOwogICAgIGJvb2wgaGFzUGxhdGZvcm1EYXRhKCkgY29u
c3Q7Ci0gICAgCisKKyAgICB2b2lkIGNvcHlCdWZmZXJBbmRDbGVhcihjaGFyKiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgYnl0ZXNUb0NvcHkpIGNvbnN0OworCiAgICAgdW5zaWduZWQgbV9zaXplOwog
ICAgIG11dGFibGUgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOwogICAgIG11dGFibGUgT3duUHRyPFB1
cmdlYWJsZUJ1ZmZlcj4gbV9wdXJnZWFibGVCdWZmZXI7CiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRB
X0FSUkFZX0NBTExCQUNLKQogICAgIG11dGFibGUgVmVjdG9yPFJldGFpblB0cjxDRkRhdGFSZWY+
ID4gbV9kYXRhQXJyYXk7Ci0gICAgdm9pZCBjb3B5RGF0YUFycmF5QW5kQ2xlYXIoY2hhciAqZGVz
dGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjb25zdDsKICAgICB1bnNpZ25lZCBjb3B5
U29tZURhdGFGcm9tRGF0YUFycmF5KGNvbnN0IGNoYXIqJiBzb21lRGF0YSwgdW5zaWduZWQgcG9z
aXRpb24pIGNvbnN0OwogICAgIGNvbnN0IGNoYXIgKnNpbmdsZURhdGFBcnJheUJ1ZmZlcigpIGNv
bnN0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAppbmRleCA3OTcxMDU3OGVhMzFlZmZlZThjMzE2YmQ5OThjOTFmZGU2NjI2NmViLi43NWE5
Mzc5MDA2MGZmZDE3MGM1YThjMWM2NTlmN2QwOWEwODFiY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKICAgICBtX3NpemUgKz0gQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weURhdGFBcnJh
eUFuZENsZWFyKGNoYXIgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3QK
K3ZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5QnVmZmVyQW5kQ2xlYXIoY2hhciogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjb25zdAogewogICAgIGlmIChtX2RhdGFBcnJheS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5jcHAKaW5kZXggMjZjMzc0N2ZiZDViM2MzMmY5NmQwYTA0
YTU1ZDVjMDM4MGI1YWVlYi4uN2IzNDAzYTkxNGU4MjU5NTdmZDc5MzQ1MTNkZDk2ZGZiM2U5OWU0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZl
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZl
ck1hYy5jcHAKQEAgLTUyLDcgKzUyLDggQEAgUHVyZ2VhYmxlQnVmZmVyOjp+UHVyZ2VhYmxlQnVm
ZmVyKCkKICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm1fYWRkcmVzc190PihtX2RhdGEpLCBtX3NpemUpOwogfQogCi1QYXNzT3duUHRyPFB1cmdl
YWJsZUJ1ZmZlcj4gUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCitzdGF0aWMgaW5saW5lIGNoYXIqIGFsbG9jYXRlUHVyZ2VhYmxlQnVmZmVyKHNp
emVfdCkgV0FSTl9VTlVTRURfUkVUVVJOOworc3RhdGljIGlubGluZSBjaGFyKiBhbGxvY2F0ZVB1
cmdlYWJsZUJ1ZmZlcihzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZSA8IG1pblB1cmdlYWJs
ZUJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjQsOSArNjUsMjUgQEAg
UGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXoKICAgICBpZiAocmV0ICE9IEtFUk5fU1VDQ0VTUykKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oYnVmZmVyKSwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGJ1ZmZlcik7Cit9CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFB1cmdlYWJsZUJ1ZmZl
cihyZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIpLCBzaXplKSk7CitQYXNzT3duUHRyPFB1
cmdlYWJsZUJ1ZmZlcj4gUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBzaXplLCBjaGFyKiYgZGF0YSkKK3sKKyAgICBjaGFyKiBidWZmZXIgPSBhbGxvY2F0ZVB1cmdl
YWJsZUJ1ZmZlcihzaXplKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgZGF0YSA9IGJ1ZmZlcjsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFB1cmdlYWJs
ZUJ1ZmZlcihidWZmZXIsIHNpemUpKTsKK30KKworUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+
IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
eworICAgIGNoYXIqIGJ1ZmZlciA9IGFsbG9jYXRlUHVyZ2VhYmxlQnVmZmVyKHNpemUpOworICAg
IGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBtZW1jcHkoYnVmZmVy
LCBkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFB1cmdlYWJsZUJ1ZmZlcihi
dWZmZXIsIHNpemUpKTsKIH0KIAogYm9vbCBQdXJnZWFibGVCdWZmZXI6Om1ha2VQdXJnZWFibGUo
Ym9vbCBwdXJnZWFibGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213729</attachid>
            <date>2013-10-08 16:01:48 -0700</date>
            <delta_ts>2013-10-08 22:17:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122516-20131008160151.patch</filename>
            <type>text/plain</type>
            <size>9079</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyNGJhZmVmOWU1ODU5
MTAyNjUwYzliNjUzNmFkMTk0YzcyNzU0OS4uODQ2YjI0YjkwOWIwZjBmZWVkMjc3NjRhOGJkM2U2
YmFhODU5NzQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTEwLTA4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCByZXNpemluZyB0
aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNoYXJlZEJ1ZmZlciB3aGVuIGNyZWF0aW5nIGEgUHVyZ2Vh
YmxlQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjI1MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDdXJyZW50bHkgd2hlbiB3ZSBjcmVhdGUgYSBQdXJnZWFibGVCdWZmZXIgZnJvbSBhIFNoYXJl
ZEJ1ZmZlciB3ZSBtYXkKKyAgICAgICAgcmVzaXplIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhl
IFNoYXJlZEJ1ZmZlciBzbyB0aGF0IGl0IGNhbiBmaXQgdGhlCisgICAgICAgIGNvbmNhdGVuYXRl
ZCBjb250ZW50cyBvZiBhbGwgb2YgaXRzIHNlZ21lbnRzIGJlZm9yZSBjb3B5aW5nIHRoaXMKKyAg
ICAgICAgaW50ZXJuYWwgYnVmZmVyIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIgb2YgdGhlIFB1cmdl
YWJsZUJ1ZmZlci4gSW5zdGVhZCwKKyAgICAgICAgd2UgY2FuIGF2b2lkIHJlc2l6aW5nIHRoZSBp
bnRlcm5hbCBidWZmZXIgb2YgU2hhcmVkQnVmZmVyIGJ5IGFsbG9jYXRpbmcKKyAgICAgICAgYSBQ
dXJnZWFibGVCdWZmZXIgYW5kIHRoZW4gY29weWluZyB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIFNo
YXJlZEJ1ZmZlcgorICAgICAgICBhbmQgaXRzIHNlZ21lbnRzIGRpcmVjdGx5IGludG8gaXQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlVW5pbml0aWFsaXplZCk6IEFkZCBpbmxpbmUgaW1wbGVt
ZW50YXRpb24KKyAgICAgICAgd2hlbiBidWlsZGluZyB3aXRoIEVOQUJMRV9QVVJHRUFCTEVfTUVN
T1JZIGRpc2FibGVkLgorICAgICAgICAqIHBsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0ZVB1cmdlYWJsZUJ1ZmZlcik6IEltcGxl
bWVudGVkIGluIHRlcm1zIG9mCisgICAgICAgIFNoYXJlZEJ1ZmZlcjo6e2NvcHlCdWZmZXJBbmRD
bGVhciwgY3JlYXRlVW5pbml0aWFsaXplZH0oKS4KKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI6OmJ1ZmZlcik6IE1vdmVkIGxvZ2ljIHRvIGNvcHkgc2VnbWVudHMvZGF0YSBhcnJh
eSB0bworICAgICAgICBTaGFyZWRCdWZmZXI6OmNvcHlCdWZmZXJBbmRDbGVhcigpIGFuZCBtb2Rp
ZmllZCBpbXBsZW1lbnRhdGlvbiB0byB1c2UgaXQuCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb3B5QnVmZmVyQW5kQ2xlYXIpOiBSZW5hbWVk
OyBmb3JtZXJseSBjYWxsZWQgU2hhcmVkQnVmZmVyOjpjb3B5RGF0YUFycmF5QW5kQ2xlYXIuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphbGxvY2F0ZVB1cmdlYWJsZUJ1ZmZlcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpQdXJnZWFibGVCdWZmZXI6OmNyZWF0ZSk6IEV4dHJhY3QgbG9naWMgdG8gYWxs
b2NhdGUgYSBwdXJnZWFibGUgYnVmZmVyIGludG8KKyAgICAgICAgV2ViQ29yZTo6YWxsb2NhdGVQ
dXJnZWFibGVCdWZmZXIgYW5kIG1vZGlmaWVkIHRoaXMgZnVuY3Rpb24gdG8gdXNlIGl0LgorCiAy
MDEzLTEwLTA4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBw
b3J0IHVucHJlZml4ZWQgV2ViR0wgY29udGV4dCBjcmVhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUHVyZ2VhYmxlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QdXJnZWFibGVCdWZmZXIuaAppbmRleCA4MzQyMjQxZDRjYTAxOTljNTU3N2ZkNDFhNjQy
MTNiZTdiOWY4MmFlLi4xNWMwNTVkZmMwZjg1OTYzZGEyOGFjNTIxNTUwZTlhZTE5YzY3NDU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QdXJnZWFibGVCdWZmZXIuaApAQCAtMzUsNiArMzUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgUHVyZ2VhYmxlQnVmZmVyIHsKICAg
ICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUHVyZ2VhYmxlQnVmZmVyKTsKICAgICBwdWJsaWM6
CisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gY3JlYXRlVW5pbml0
aWFsaXplZChzaXplX3QsIGNoYXIqJiBkYXRhKTsKICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8
UHVyZ2VhYmxlQnVmZmVyPiBjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90KTsKICAgICAg
ICAgCiAgICAgICAgIH5QdXJnZWFibGVCdWZmZXIoKTsKQEAgLTYzLDYgKzY0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIH07CiAKICNpZiAhRU5BQkxFKFBVUkdFQUJMRV9NRU1PUlkpCisg
ICAgaW5saW5lIFBhc3NPd25QdHI8UHVyZ2VhYmxlQnVmZmVyPiBQdXJnZWFibGVCdWZmZXI6OmNy
ZWF0ZVVuaW5pdGlhbGl6ZWQoc2l6ZV90LCBjaGFyKiYpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICBpbmxpbmUgUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1ZmZlcjo6Y3Jl
YXRlKGNvbnN0IGNoYXIqLCBzaXplX3QpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICBpbmxpbmUg
UHVyZ2VhYmxlQnVmZmVyOjp+UHVyZ2VhYmxlQnVmZmVyKCkgeyB9CiAgICAgaW5saW5lIGNvbnN0
IGNoYXIqIFB1cmdlYWJsZUJ1ZmZlcjo6ZGF0YSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IGUyZDk0MDg2OTNiMDdjYWNj
NDZlMTUxYjU1ODczODlhOGY1MzJkODcuLjI1NTY1MTQ2YzRkZWU5M2YxM2Y4ZDcwYTdlZjBiMjNk
MmM1YmZiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAt
MjMwLDcgKzIzMCwxNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlUHVyZ2VhYmxlQnVmZmVy
KCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBtX3B1cmdlYWJsZUJ1ZmZl
ciA9IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlcigpLmRhdGEoKSwgbV9zaXplKTsKKyAg
ICBjaGFyKiBkZXN0aW5hdGlvbiA9IG51bGxwdHI7CisgICAgbV9wdXJnZWFibGVCdWZmZXIgPSBQ
dXJnZWFibGVCdWZmZXI6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobV9zaXplLCBkZXN0aW5hdGlvbik7
CisgICAgaWYgKCFtX3B1cmdlYWJsZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworICAgIHVuc2ln
bmVkIGJ1ZmZlclNpemUgPSBtX2J1ZmZlci5zaXplKCk7CisgICAgaWYgKGJ1ZmZlclNpemUpIHsK
KyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uLCBtX2J1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUp
OworICAgICAgICBkZXN0aW5hdGlvbiArPSBidWZmZXJTaXplOworICAgICAgICBtX2J1ZmZlci5j
bGVhcigpOworICAgIH0KKyAgICBjb3B5QnVmZmVyQW5kQ2xlYXIoZGVzdGluYXRpb24sIG1fc2l6
ZSAtIGJ1ZmZlclNpemUpOwogfQogCiBjb25zdCBjaGFyKiBTaGFyZWRCdWZmZXI6OmRhdGEoKSBj
b25zdApAQCAtMzY2LDYgKzM3NiwyMCBAQCBQYXNzT3duUHRyPFB1cmdlYWJsZUJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpyZWxlYXNlUHVyZ2VhYmxlQnVmZmVyKCkKICAgICByZXR1cm4gbV9wdXJnZWFi
bGVCdWZmZXIucmVsZWFzZSgpOyAKIH0KIAorI2lmICFVU0UoTkVUV09SS19DRkRBVEFfQVJSQVlf
Q0FMTEJBQ0spCit2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weUJ1ZmZlckFuZENsZWFyKGNoYXIqIGRl
c3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3QKK3sKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9zZWdtZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICB1bnNpZ25l
ZCBlZmZlY3RpdmVCeXRlc1RvQ29weSA9IG1pbihieXRlc1RvQ29weSwgc2VnbWVudFNpemUpOwor
ICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIG1fc2VnbWVudHNbaV0sIGVmZmVjdGl2ZUJ5dGVz
VG9Db3B5KTsKKyAgICAgICAgZGVzdGluYXRpb24gKz0gZWZmZWN0aXZlQnl0ZXNUb0NvcHk7Cisg
ICAgICAgIGJ5dGVzVG9Db3B5IC09IGVmZmVjdGl2ZUJ5dGVzVG9Db3B5OworICAgICAgICBmcmVl
U2VnbWVudChtX3NlZ21lbnRzW2ldKTsKKyAgICB9CisgICAgbV9zZWdtZW50cy5jbGVhcigpOwor
fQorI2VuZGlmCisKIGNvbnN0IFZlY3RvcjxjaGFyPiYgU2hhcmVkQnVmZmVyOjpidWZmZXIoKSBj
b25zdAogewogI2lmIEVOQUJMRShESVNLX0lNQUdFX0NBQ0hFKQpAQCAtMzc0LDIwICszOTgsNyBA
QCBjb25zdCBWZWN0b3I8Y2hhcj4mIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyKCkgY29uc3QKICAgICB1
bnNpZ25lZCBidWZmZXJTaXplID0gbV9idWZmZXIuc2l6ZSgpOwogICAgIGlmIChtX3NpemUgPiBi
dWZmZXJTaXplKSB7CiAgICAgICAgIG1fYnVmZmVyLnJlc2l6ZShtX3NpemUpOwotICAgICAgICBj
aGFyKiBkZXN0aW5hdGlvbiA9IG1fYnVmZmVyLmRhdGEoKSArIGJ1ZmZlclNpemU7Ci0gICAgICAg
IHVuc2lnbmVkIGJ5dGVzTGVmdCA9IG1fc2l6ZSAtIGJ1ZmZlclNpemU7Ci0jaWYgIVVTRShORVRX
T1JLX0NGREFUQV9BUlJBWV9DQUxMQkFDSykKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fc2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGJ5dGVz
VG9Db3B5ID0gbWluKGJ5dGVzTGVmdCwgc2VnbWVudFNpemUpOwotICAgICAgICAgICAgbWVtY3B5
KGRlc3RpbmF0aW9uLCBtX3NlZ21lbnRzW2ldLCBieXRlc1RvQ29weSk7Ci0gICAgICAgICAgICBk
ZXN0aW5hdGlvbiArPSBieXRlc1RvQ29weTsKLSAgICAgICAgICAgIGJ5dGVzTGVmdCAtPSBieXRl
c1RvQ29weTsKLSAgICAgICAgICAgIGZyZWVTZWdtZW50KG1fc2VnbWVudHNbaV0pOwotICAgICAg
ICB9Ci0gICAgICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKLSNlbHNlCi0gICAgICAgIGNvcHlEYXRh
QXJyYXlBbmRDbGVhcihkZXN0aW5hdGlvbiwgYnl0ZXNMZWZ0KTsKLSNlbmRpZgorICAgICAgICBj
b3B5QnVmZmVyQW5kQ2xlYXIobV9idWZmZXIuZGF0YSgpICsgYnVmZmVyU2l6ZSwgbV9zaXplIC0g
YnVmZmVyU2l6ZSk7CiAgICAgfQogICAgIHJldHVybiBtX2J1ZmZlcjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKaW5kZXggMDMyNTg2OTgxZGNiNWFlYTM5YTE0ZGQ5YTZi
NzhhNDVhZmQ0YzRjYi4uNzlkYWUxYjNjNDBjNmVlZThjZTY3YTk1ODcxMjlkMTdlYjg2OTdkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTE3NCwxMyArMTc0LDE0
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclBsYXRmb3JtRGF0YSgpOwogICAgIHZvaWQgbWF5
YmVUcmFuc2ZlclBsYXRmb3JtRGF0YSgpOwogICAgIGJvb2wgaGFzUGxhdGZvcm1EYXRhKCkgY29u
c3Q7Ci0gICAgCisKKyAgICB2b2lkIGNvcHlCdWZmZXJBbmRDbGVhcihjaGFyKiBkZXN0aW5hdGlv
biwgdW5zaWduZWQgYnl0ZXNUb0NvcHkpIGNvbnN0OworCiAgICAgdW5zaWduZWQgbV9zaXplOwog
ICAgIG11dGFibGUgVmVjdG9yPGNoYXI+IG1fYnVmZmVyOwogICAgIG11dGFibGUgT3duUHRyPFB1
cmdlYWJsZUJ1ZmZlcj4gbV9wdXJnZWFibGVCdWZmZXI7CiAjaWYgVVNFKE5FVFdPUktfQ0ZEQVRB
X0FSUkFZX0NBTExCQUNLKQogICAgIG11dGFibGUgVmVjdG9yPFJldGFpblB0cjxDRkRhdGFSZWY+
ID4gbV9kYXRhQXJyYXk7Ci0gICAgdm9pZCBjb3B5RGF0YUFycmF5QW5kQ2xlYXIoY2hhciAqZGVz
dGluYXRpb24sIHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjb25zdDsKICAgICB1bnNpZ25lZCBjb3B5
U29tZURhdGFGcm9tRGF0YUFycmF5KGNvbnN0IGNoYXIqJiBzb21lRGF0YSwgdW5zaWduZWQgcG9z
aXRpb24pIGNvbnN0OwogICAgIGNvbnN0IGNoYXIgKnNpbmdsZURhdGFBcnJheUJ1ZmZlcigpIGNv
bnN0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJl
ZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcAppbmRleCA3OTcxMDU3OGVhMzFlZmZlZThjMzE2YmQ5OThjOTFmZGU2NjI2NmViLi43NWE5
Mzc5MDA2MGZmZDE3MGM1YThjMWM2NTlmN2QwOWEwODFiY2MxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9p
ZCBTaGFyZWRCdWZmZXI6OmFwcGVuZChDRkRhdGFSZWYgZGF0YSkKICAgICBtX3NpemUgKz0gQ0ZE
YXRhR2V0TGVuZ3RoKGRhdGEpOwogfQogCi12b2lkIFNoYXJlZEJ1ZmZlcjo6Y29weURhdGFBcnJh
eUFuZENsZWFyKGNoYXIgKmRlc3RpbmF0aW9uLCB1bnNpZ25lZCBieXRlc1RvQ29weSkgY29uc3QK
K3ZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5QnVmZmVyQW5kQ2xlYXIoY2hhciogZGVzdGluYXRpb24s
IHVuc2lnbmVkIGJ5dGVzVG9Db3B5KSBjb25zdAogewogICAgIGlmIChtX2RhdGFBcnJheS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QdXJnZWFibGVCdWZmZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1B1cmdlYWJsZUJ1ZmZlck1hYy5jcHAKaW5kZXggMjZjMzc0N2ZiZDViM2MzMmY5NmQwYTA0
YTU1ZDVjMDM4MGI1YWVlYi4uN2IzNDAzYTkxNGU4MjU5NTdmZDc5MzQ1MTNkZDk2ZGZiM2U5OWU0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZl
ck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1cmdlYWJsZUJ1ZmZl
ck1hYy5jcHAKQEAgLTUyLDcgKzUyLDggQEAgUHVyZ2VhYmxlQnVmZmVyOjp+UHVyZ2VhYmxlQnVm
ZmVyKCkKICAgICB2bV9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIHJlaW50ZXJwcmV0X2Nh
c3Q8dm1fYWRkcmVzc190PihtX2RhdGEpLCBtX3NpemUpOwogfQogCi1QYXNzT3duUHRyPFB1cmdl
YWJsZUJ1ZmZlcj4gUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGUoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IHNpemUpCitzdGF0aWMgaW5saW5lIGNoYXIqIGFsbG9jYXRlUHVyZ2VhYmxlQnVmZmVyKHNp
emVfdCkgV0FSTl9VTlVTRURfUkVUVVJOOworc3RhdGljIGlubGluZSBjaGFyKiBhbGxvY2F0ZVB1
cmdlYWJsZUJ1ZmZlcihzaXplX3Qgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZSA8IG1pblB1cmdlYWJs
ZUJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNjQsOSArNjUsMjUgQEAg
UGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBzaXoKICAgICBpZiAocmV0ICE9IEtFUk5fU1VDQ0VTUykKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBtZW1jcHkocmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oYnVmZmVyKSwgZGF0YSwgc2l6ZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGJ1ZmZlcik7Cit9CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IFB1cmdlYWJsZUJ1ZmZl
cihyZWludGVycHJldF9jYXN0PGNoYXIqPihidWZmZXIpLCBzaXplKSk7CitQYXNzT3duUHRyPFB1
cmdlYWJsZUJ1ZmZlcj4gUHVyZ2VhYmxlQnVmZmVyOjpjcmVhdGVVbmluaXRpYWxpemVkKHNpemVf
dCBzaXplLCBjaGFyKiYgZGF0YSkKK3sKKyAgICBjaGFyKiBidWZmZXIgPSBhbGxvY2F0ZVB1cmdl
YWJsZUJ1ZmZlcihzaXplKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgZGF0YSA9IGJ1ZmZlcjsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFB1cmdlYWJs
ZUJ1ZmZlcihidWZmZXIsIHNpemUpKTsKK30KKworUGFzc093blB0cjxQdXJnZWFibGVCdWZmZXI+
IFB1cmdlYWJsZUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQor
eworICAgIGNoYXIqIGJ1ZmZlciA9IGFsbG9jYXRlUHVyZ2VhYmxlQnVmZmVyKHNpemUpOworICAg
IGlmICghYnVmZmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBtZW1jcHkoYnVmZmVy
LCBkYXRhLCBzaXplKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFB1cmdlYWJsZUJ1ZmZlcihi
dWZmZXIsIHNpemUpKTsKIH0KIAogYm9vbCBQdXJnZWFibGVCdWZmZXI6Om1ha2VQdXJnZWFibGUo
Ym9vbCBwdXJnZWFibGUpCg==
</data>
<flag name="review"
          id="236131"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>