<?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>104174</bug_id>
          
          <creation_ts>2012-12-05 14:54:32 -0800</creation_ts>
          <short_desc>Retry snapshots if they are too empty</short_desc>
          <delta_ts>2012-12-06 16:11:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.8</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784147</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-05 14:54:32 -0800</bug_when>
    <thetext>Evaluate the snapshot and try again if it&apos;s almost a blank image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784148</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-12-05 14:55:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/12820146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784246</commentid>
    <comment_count>2</comment_count>
      <attachid>177859</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-05 16:36:47 -0800</bug_when>
    <thetext>Created attachment 177859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784256</commentid>
    <comment_count>3</comment_count>
      <attachid>177859</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-05 16:40:38 -0800</bug_when>
    <thetext>Comment on attachment 177859
Patch

Oops, wrong bug. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784308</commentid>
    <comment_count>4</comment_count>
      <attachid>177876</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-05 17:14:25 -0800</bug_when>
    <thetext>Created attachment 177876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784345</commentid>
    <comment_count>5</comment_count>
      <attachid>177876</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-05 17:37:37 -0800</bug_when>
    <thetext>Comment on attachment 177876
Patch

Attachment 177876 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15152616</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784350</commentid>
    <comment_count>6</comment_count>
      <attachid>177886</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-05 17:40:35 -0800</bug_when>
    <thetext>Created attachment 177886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784353</commentid>
    <comment_count>7</comment_count>
      <attachid>177876</attachid>
    <who name="">mitz</who>
    <bug_when>2012-12-05 17:43:50 -0800</bug_when>
    <thetext>Comment on attachment 177876
Patch

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

&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:128
&gt; +    size_t bpr = CGImageGetBytesPerRow(image);

Please use bytesPerRow.

&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:131
&gt; +    RetainPtr&lt;CFDataRef&gt; provider = adoptCF(CGDataProviderCopyData(CGImageGetDataProvider(image)));
&gt; +    const UInt8* data = CFDataGetBytePtr(provider.get());

Does this really guarantee that we get planar RGBA data? If an image is created with a PNG data provider, won’t this return that PNG data?

&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:136
&gt; +    const int sampleRows = 7, sampleCols = 7;

Please split this into two statements. Could these be unsigned?

&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:143
&gt; +    const float strideW = (float)(width - 1) / (sampleCols - 1);
&gt; +    const float strideH = (float)(height - 1) / (sampleRows - 1);

We normally prefer static_cast to C-style casts even for POD types. I’d spell out Width and Height here.

&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:144
&gt; +    float samples[sampleRows * sampleCols];

Why not make this a two-dimensional array?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784502</commentid>
    <comment_count>8</comment_count>
      <attachid>177886</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-05 19:43:39 -0800</bug_when>
    <thetext>Comment on attachment 177886
Patch

Attachment 177886 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15151786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784724</commentid>
    <comment_count>9</comment_count>
      <attachid>177876</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-06 00:54:56 -0800</bug_when>
    <thetext>Comment on attachment 177876
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:128
&gt;&gt; +    size_t bpr = CGImageGetBytesPerRow(image);
&gt; 
&gt; Please use bytesPerRow.

Done.

&gt;&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:131
&gt;&gt; +    const UInt8* data = CFDataGetBytePtr(provider.get());
&gt; 
&gt; Does this really guarantee that we get planar RGBA data? If an image is created with a PNG data provider, won’t this return that PNG data?

I thought it did, because CGImageRef is bitmap. The documentation seems to indicate that it&apos;s the decoded pixel data, but I could be wrong. Technical note QA1509 states &quot;The pixel data returned by CGDataProviderCopyData has not been color matched and is in the format that the image is in, as described by the various CGImageGet functions&quot;, which does not include flags like the raw data. Does this sound right?

&gt;&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:136
&gt;&gt; +    const int sampleRows = 7, sampleCols = 7;
&gt; 
&gt; Please split this into two statements. Could these be unsigned?

Done and done.

&gt;&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:144
&gt;&gt; +    float samples[sampleRows * sampleCols];
&gt; 
&gt; Why not make this a two-dimensional array?

Done, and refactored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784743</commentid>
    <comment_count>10</comment_count>
      <attachid>177966</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-06 01:18:29 -0800</bug_when>
    <thetext>Created attachment 177966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784932</commentid>
    <comment_count>11</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-12-06 07:22:37 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; I thought it did, because CGImageRef is bitmap. The documentation seems to indicate that it&apos;s the decoded pixel data, but I could be wrong. Technical note QA1509 states &quot;The pixel data returned by CGDataProviderCopyData has not been color matched and is in the format that the image is in, as described by the various CGImageGet functions&quot;, which does not include flags like the raw data. Does this sound right?

Thanks for the reference. It’s clear that this will return pixel data. It’s not clear if, for example, the channels will be in RGBA order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785044</commentid>
    <comment_count>12</comment_count>
      <attachid>178036</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-06 10:52:08 -0800</bug_when>
    <thetext>Created attachment 178036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785047</commentid>
    <comment_count>13</comment_count>
      <attachid>178036</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-12-06 10:54:23 -0800</bug_when>
    <thetext>Comment on attachment 178036
Patch

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

&gt; Source/WebCore/platform/graphics/mac/ImageMac.mm:180
&gt; +bool BitmapImage::isAlmostSolidColor()
&gt; +{
&gt; +    ASSERT(frameCount() == 1);
&gt; +
&gt; +    CGImageRef image = frameAtIndex(0);
&gt; +    ASSERT(CGImageGetBitsPerComponent(image) == 8);
&gt; +
&gt; +    CGBitmapInfo imageInfo = CGImageGetBitmapInfo(image);
&gt; +    if (!(imageInfo &amp; kCGBitmapByteOrder32Little) || (imageInfo &amp; kCGBitmapAlphaInfoMask) != kCGImageAlphaPremultipliedFirst) {
&gt; +        // FIXME: Consider being able to handle other pixel formats.
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return false;
&gt; +    }
&gt; +
&gt; +    size_t width = CGImageGetWidth(image);
&gt; +    size_t height = CGImageGetHeight(image);
&gt; +    size_t bytesPerRow = CGImageGetBytesPerRow(image);
&gt; +
&gt; +    RetainPtr&lt;CFDataRef&gt; provider = adoptCF(CGDataProviderCopyData(CGImageGetDataProvider(image)));
&gt; +    const UInt8* data = CFDataGetBytePtr(provider.get());
&gt; +
&gt; +    // Overlay a grid of sampling dots on top of a grayscale version of the image.
&gt; +    // For the interior points, calculate the difference in luminance among the sample point
&gt; +    // and its surrounds points, scaled by transparency.
&gt; +    const unsigned sampleRows = 7;
&gt; +    const unsigned sampleCols = 7;
&gt; +    // FIXME: Refine the proper number of samples, and accommodate different aspect ratios.
&gt; +    if (width &lt; sampleCols || height &lt; sampleRows)
&gt; +        return false;
&gt; +
&gt; +    // Ensure that the last row/column land on the image perimeter.
&gt; +    const float strideWidth = static_cast&lt;float&gt;(width - 1) / (sampleCols - 1);
&gt; +    const float strideHeight = static_cast&lt;float&gt;(height - 1) / (sampleRows - 1);
&gt; +    float samples[sampleRows][sampleCols];
&gt; +
&gt; +    // Find the luminance of the sample points.
&gt; +    float y = 0;
&gt; +    const UInt8* row = data;
&gt; +    for (unsigned i = 0; i &lt; sampleRows; ++i) {
&gt; +        float x = 0;
&gt; +        for (unsigned j = 0; j &lt; sampleCols; ++j) {
&gt; +            const UInt8* p0 = row + (static_cast&lt;int&gt;(x + .5)) * 4;
&gt; +            // R G B A
&gt; +            samples[i][j] = (0.2125 * *p0 + 0.7154 * *(p0+1) + 0.0721 * *(p0+2)) * *(p0+3) / 255;
&gt; +            x += strideWidth;
&gt; +        }
&gt; +        y += strideHeight;
&gt; +        row = data + (static_cast&lt;int&gt;(y + .5)) * bytesPerRow;
&gt; +    }
&gt; +
&gt; +    // Determine the image score.
&gt; +    float accumScore = 0;
&gt; +    for (unsigned i = 1; i &lt; sampleRows - 1; ++i) {
&gt; +        for (unsigned j = 1; j &lt; sampleCols - 1; ++j) {
&gt; +            float diff = samples[i - 1][j] + samples[i + 1][j] + samples[i][j - 1] + samples[i][j + 1] - 4 * samples[i][j];
&gt; +            accumScore += diff * diff;
&gt; +        }
&gt; +    }
&gt; +
&gt; +    // The score for a given sample can be within the range of 0 and 255^2.
&gt; +    return accumScore &lt; 2500 * (sampleRows - 2) * (sampleCols - 2);
&gt; +}

I&apos;m not sure that a heuristic like this belongs in BitmapImage. I think it should be out in plugin code (or even platform code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785301</commentid>
    <comment_count>14</comment_count>
      <attachid>178086</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-06 14:48:16 -0800</bug_when>
    <thetext>Created attachment 178086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785381</commentid>
    <comment_count>15</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-12-06 16:11:17 -0800</bug_when>
    <thetext>Committed r136905: &lt;http://trac.webkit.org/changeset/136905&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177859</attachid>
            <date>2012-12-05 16:36:47 -0800</date>
            <delta_ts>2012-12-05 17:14:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104174-20121205163412.patch</filename>
            <type>text/plain</type>
            <size>7155</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJhMjQzY2I1N2U5Y2Vk
ZDcwOTUzY2Q3OTY5NmRhOWMzMmZjMWE4NS4uZTg0MTIwMzFiYWVmYmYxNzMzNjI1ODBhODJmNjIz
NzIzZDc0M2ExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTEyLTA1ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXRyeSBzbmFwc2hvdHMgaWYgdGhl
eSBhcmUgdG9vIGVtcHR5ICgxMDQxNzQpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDQxNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODIwMTQ2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uY2Ug
dGhlIHVzZXIgaGFzIGhvdmVyZWQgb3ZlciB0aGUgcGx1Zy1pbiwgd2FpdCBhIGxpdHRsZSB3aGls
ZSBiZWZvcmUgc2hvd2luZyB0aGUgYnV0dG9uLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNuYXBzaG90dGVkUGx1Z0luLmg6CisgICAgICAgIChSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbik6
IEFkZCBhIG9uZS1zaG90IHRpbWVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4pOiBTZXQgdGhlIHRpbWUgdG8gYSBkZWxheSBvZiAx
IHNlY29uZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjp+UmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW4pOiBTdG9wIHRoZSB0aW1lciBpZiBpdCBpcyBwZW5kaW5nLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhvdmVyRGVsYXlUaW1l
ckZpcmVkKTogUmVwYWludCB3aGVuIHRoZSB0aW1lciBmaXJlcy4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpoYW5kbGVFdmVudCk6IFVwZGF0ZSBldmVudCBoYW5k
bGluZy4gQ2xpY2sgZXZlbnQgaGFuZGxlciBpcyB0aGUKKyAgICAgICAgc2FtZSwgZXhjZXB0IHdl
IG1vdmUgdGhlIGJ1dHRvbiBjaGVjayBpbnNpZGUgc28gdGhhdCBpZiB0aGUgY2xpY2sgaXMgbm90
IHRoZSBsZWZ0IGJ1dHRvbiB3ZSBkb24ndAorICAgICAgICBmYWxsIHRocm91Z2ggdG8gdGhlIG90
aGVyIGlycmV2ZWxhbnQgaWYgY2xhdXNlcy4gVGhlIG1vdXNlIGRvd24gaGFuZGxlciBpcyB0aGUg
c2FtZSwgZXhjZXB0IHdlIGFsc28KKyAgICAgICAgY2hlY2sgZm9yIHRoZSBsZWZ0IGJ1dHRvbi4g
V2UgcmVkbyBtb3VzZSBvdmVyIGFuZCBvdXQuIE9uIG1vdXNlIG92ZXIgd2Ugc3RhcnQgdGhlIGRl
bGF5IHRpbWVyLgorICAgICAgICBPbiBtb3VzZSBvdXQgd2Ugc3RvcCB0aGUgZGVsYXkgdGltZXIg
aWYgaXQgaXMgc3RpbGwgcnVubmluZywgYW5kIHBhaW50IHRoZSBidXR0b24gb3V0LgorCiAyMDEy
LTEyLTA1ICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBJ
bmRleGVkREI6IFN0dWIgb3V0IHRyYW5zYWN0aW9uLWJhY2tlbmQgbWV0aG9kcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKaW5k
ZXggOTcyYjJiZjkwNDIyM2I1Yjc3NzVmMjQyOWRjMTYyODNhMGYxNjgxNS4uMmI4N2M0YjE4NGVm
YTdlOTNjNTA1ZGE3ZWYyMDZiNGNmNTAyYmRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwCkBAIC00MCwxMSArNDAsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IGludCBhdXRvU3RhcnRQbHVnSW5T
aXplVGhyZXNob2xkV2lkdGggPSAxOwogc3RhdGljIGNvbnN0IGludCBhdXRvU3RhcnRQbHVnSW5T
aXplVGhyZXNob2xkSGVpZ2h0ID0gMTsKIHN0YXRpYyBjb25zdCBpbnQgc3RhcnRCdXR0b25QYWRk
aW5nID0gMTA7CitzdGF0aWMgY29uc3QgZG91YmxlIGhvdmVyRGVsYXkgPSAxOwogCiBSZW5kZXJT
bmFwc2hvdHRlZFBsdWdJbjo6UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4oSFRNTFBsdWdJbkltYWdl
RWxlbWVudCogZWxlbWVudCkKICAgICA6IFJlbmRlckVtYmVkZGVkT2JqZWN0KGVsZW1lbnQpCiAg
ICAgLCBtX3NuYXBzaG90UmVzb3VyY2UoUmVuZGVySW1hZ2VSZXNvdXJjZTo6Y3JlYXRlKCkpCiAg
ICAgLCBtX2lzTW91c2VJbkJ1dHRvblJlY3QoZmFsc2UpCisgICAgLCBtX2hvdmVyRGVsYXlUaW1l
cih0aGlzLCAmUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhvdmVyRGVsYXlUaW1lckZpcmVkLCBo
b3ZlckRlbGF5KQogewogICAgIG1fc25hcHNob3RSZXNvdXJjZS0+aW5pdGlhbGl6ZSh0aGlzKTsK
IH0KQEAgLTUzLDYgKzU1LDggQEAgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46On5SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbigpCiB7CiAgICAgQVNTRVJUKG1fc25hcHNob3RSZXNvdXJjZSk7CiAgICAg
bV9zbmFwc2hvdFJlc291cmNlLT5zaHV0ZG93bigpOworICAgIGlmIChtX2hvdmVyRGVsYXlUaW1l
ci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2hvdmVyRGVsYXlUaW1lci5zdG9wKCk7CiB9CiAKIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQqIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpwbHVnSW5JbWFn
ZUVsZW1lbnQoKSBjb25zdApAQCAtMTU3LDYgKzE2MSwxMSBAQCB2b2lkIFJlbmRlclNuYXBzaG90
dGVkUGx1Z0luOjpyZXBhaW50QnV0dG9uKCkKICAgICByZXBhaW50KCk7CiB9CiAKK3ZvaWQgUmVu
ZGVyU25hcHNob3R0ZWRQbHVnSW46OmhvdmVyRGVsYXlUaW1lckZpcmVkKERlZmVycmFibGVPbmVT
aG90VGltZXI8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+KikKK3sKKyAgICByZXBhaW50QnV0dG9u
KCk7Cit9CisKIEN1cnNvckRpcmVjdGl2ZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6Z2V0Q3Vy
c29yKGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgQ3Vyc29yJiBvdmVycmlkZUN1cnNvcikgY29u
c3QKIHsKICAgICBpZiAocGx1Z0luSW1hZ2VFbGVtZW50KCktPmRpc3BsYXlTdGF0ZSgpIDwgSFRN
TFBsdWdJbkVsZW1lbnQ6OlBsYXlpbmdXaXRoUGVuZGluZ01vdXNlQ2xpY2spIHsKQEAgLTE3Mywy
NyArMTgyLDQxIEBAIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OmhhbmRsZUV2ZW50KEV2
ZW50KiBldmVudCkKIAogICAgIE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxN
b3VzZUV2ZW50Kj4oZXZlbnQpOwogCi0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1l
cygpLmNsaWNrRXZlbnQgJiYgbW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgewot
ICAgICAgICBpZiAobV9pc01vdXNlSW5CdXR0b25SZWN0KQotICAgICAgICAgICAgcGx1Z0luSW1h
Z2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZyk7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERp
c3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxlbWVudDo6UGxheWluZ1dpdGhQZW5kaW5nTW91c2VDbGlj
ayk7Ci0gICAgICAgICAgICBwbHVnSW5JbWFnZUVsZW1lbnQoKS0+c2V0UGVuZGluZ0NsaWNrRXZl
bnQobW91c2VFdmVudCk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNs
aWNrRXZlbnQpIHsKKyAgICAgICAgaWYgKG1vdXNlRXZlbnQtPmJ1dHRvbigpID09IExlZnRCdXR0
b24pIHsKKyAgICAgICAgICAgIGlmIChtX2lzTW91c2VJbkJ1dHRvblJlY3QpCisgICAgICAgICAg
ICAgICAgcGx1Z0luSW1hZ2VFbGVtZW50KCktPnNldERpc3BsYXlTdGF0ZShIVE1MUGx1Z0luRWxl
bWVudDo6UGxheWluZyk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBwbHVn
SW5JbWFnZUVsZW1lbnQoKS0+c2V0RGlzcGxheVN0YXRlKEhUTUxQbHVnSW5FbGVtZW50OjpQbGF5
aW5nV2l0aFBlbmRpbmdNb3VzZUNsaWNrKTsKKyAgICAgICAgICAgICAgICBwbHVnSW5JbWFnZUVs
ZW1lbnQoKS0+c2V0UGVuZGluZ0NsaWNrRXZlbnQobW91c2VFdmVudCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAod2lkZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+cmVjcmVhdGVQbHVnaW4od2lkZ2V0KCkpOworICAgICAgICAg
ICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogICAgICAgICB9Ci0gICAgICAgIGlmICh3aWRnZXQoKSkgewotICAg
ICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAg
ICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+cmVjcmVhdGVQbHVnaW4od2lkZ2V0
KCkpOwotICAgICAgICAgICAgcmVwYWludCgpOworICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2Vkb3duRXZlbnQpIHsKKyAgICAgICAgaWYgKG1vdXNlRXZl
bnQtPmJ1dHRvbigpID09IExlZnRCdXR0b24pIHsKKyAgICAgICAgICAgIGJvb2wgaXNNb3VzZUlu
QnV0dG9uUmVjdCA9IG1fYnV0dG9uUmVjdC5jb250YWlucyhJbnRQb2ludChtb3VzZUV2ZW50LT5v
ZmZzZXRYKCksIG1vdXNlRXZlbnQtPm9mZnNldFkoKSkpOworICAgICAgICAgICAgaWYgKGlzTW91
c2VJbkJ1dHRvblJlY3QgIT0gbV9pc01vdXNlSW5CdXR0b25SZWN0KSB7CisgICAgICAgICAgICAg
ICAgbV9pc01vdXNlSW5CdXR0b25SZWN0ID0gaXNNb3VzZUluQnV0dG9uUmVjdDsKKyAgICAgICAg
ICAgICAgICByZXBhaW50QnV0dG9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpIHsKKyAgICAgICAgaWYgKG1f
aG92ZXJEZWxheVRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgICAgICBtX2hvdmVyRGVsYXlUaW1l
ci5zdG9wKCk7CisgICAgICAgIG1faG92ZXJEZWxheVRpbWVyLnJlc3RhcnQoKTsKKyAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfSBlbHNlIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2ZW50KSB7CiAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwotICAgIH0gZWxzZSBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2VvdmVyRXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vv
dXRFdmVudCkKKyAgICAgICAgaWYgKG1faG92ZXJEZWxheVRpbWVyLmlzQWN0aXZlKCkpCisgICAg
ICAgICAgICBtX2hvdmVyRGVsYXlUaW1lci5zdG9wKCk7CiAgICAgICAgIHJlcGFpbnRCdXR0b24o
KTsKLSAgICBlbHNlIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25F
dmVudCkgewotICAgICAgICBib29sIGlzTW91c2VJbkJ1dHRvblJlY3QgPSBtX2J1dHRvblJlY3Qu
Y29udGFpbnMoSW50UG9pbnQobW91c2VFdmVudC0+b2Zmc2V0WCgpLCBtb3VzZUV2ZW50LT5vZmZz
ZXRZKCkpKTsKLSAgICAgICAgaWYgKGlzTW91c2VJbkJ1dHRvblJlY3QgIT0gbV9pc01vdXNlSW5C
dXR0b25SZWN0KSB7Ci0gICAgICAgICAgICBtX2lzTW91c2VJbkJ1dHRvblJlY3QgPSBpc01vdXNl
SW5CdXR0b25SZWN0OwotICAgICAgICAgICAgcmVwYWludEJ1dHRvbigpOwotICAgICAgICB9Cisg
ICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAppbmRleCAy
YTFmODk2Yzc0NGMxNzNhODM3OGZkMWY0N2UxMTQyZTc2OWZmZGY3Li5hMmQ2NmQ0ZGRjN2Q0ZTJk
OTY0MTlhZDBlOGZkODE2NDE4N2Y5MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5j
bHVkZSAiUmVuZGVySW1hZ2VSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisj
aW5jbHVkZSAiVGltZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw2ICs0NCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+KTsK
IAogICAgIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKKyAgICB2b2lkIGhvdmVyRGVsYXlUaW1l
ckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4+Kik7
CiAKIHByaXZhdGU6CiAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z0luSW1hZ2VFbGVt
ZW50KCkgY29uc3Q7CkBAIC02Miw2ICs2NCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJlbmRl
ckltYWdlUmVzb3VyY2U+IG1fc25hcHNob3RSZXNvdXJjZTsKICAgICBMYXlvdXRSZWN0IG1fYnV0
dG9uUmVjdDsKICAgICBib29sIG1faXNNb3VzZUluQnV0dG9uUmVjdDsKKyAgICBEZWZlcnJhYmxl
T25lU2hvdFRpbWVyPFJlbmRlclNuYXBzaG90dGVkUGx1Z0luPiBtX2hvdmVyRGVsYXlUaW1lcjsK
IH07CiAKIGlubGluZSBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbiogdG9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbihSZW5kZXJPYmplY3QqIG9iamVjdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177876</attachid>
            <date>2012-12-05 17:14:25 -0800</date>
            <delta_ts>2012-12-06 00:54:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104174-20121205171150.patch</filename>
            <type>text/plain</type>
            <size>10515</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzYmFmMzY5MjY0ZTVi
YTUxYWJiMjIxNGVlN2YzMDBkMzAzOTRhMS4uMzZhNjIyZDRjMGE1NWU4ZDBhOWYzOTZiNTNjMGQ5
NzFlODcyYzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTA1ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXRyeSBzbmFwc2hvdHMgaWYgdGhl
eSBhcmUgdG9vIGVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDQxNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODIwMTQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9ydCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KTogQ2hhbmdlIHRoZSBzdGF0ZSBtYWNo
aW5lIGNoZWNrIHNvIHRoYXQgZXZlbgorICAgICAgICB3aGVuIHRoZSBwbHVnLWluIGlzIGRpc3Bs
YXlpbmcgYSBzbmFwc2hvdCwgdGhlIHNuYXBzaG90IGNhbiBzdGlsbCBiZSB1cGRhdGVkLiBUaGlz
IGFsbG93cyBmb3IgdGhlCisgICAgICAgIHJldHJpZXMgdG8gYmUgZHJhd24uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omlz
QWxtb3N0U29saWRDb2xvcik6IEFkZCBuZXcgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYg
dGhlIGltYWdlIGlzIG1vc3RseSBlbXB0eS4KKyAgICAgICAgQnkgZGVmYXVsdCBhbGwgaW1hZ2Vz
IGFyZSBjb25zaWRlcmVkIHRvIGhhdmUgbWVhbmluZ2Z1bCBjb250ZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogT3ZlcnJpZGUgaXNBbG1vc3RTb2xpZENv
bG9yKCkgZm9yIE1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTog
RmlndXJlIG91dCBpZiB0aGUgaW1hZ2UgaXMgYWxtb3N0IGEgc29saWQgY29sb3IgYnkgb3Zlcmxh
eWluZworICAgICAgICBhIGdyaWQgb2YgZG90cywgYW5kIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5j
ZXMgYW1vbmcgdGhlbS4gSWYgdGhlIGF2ZXJhZ2UgY29sb3IgZGlmZmVyZW5jZSBpcyBncmVhdGVy
IHRoYW4KKyAgICAgICAgYSB0aHJlc2hvbGQsIHdlIGNvbnNpZGVyIGl0IHRvIGhhdmUgbWVhbmlu
Z2Z1bCBjb250ZW50LgorCiAyMDEyLTEyLTA1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2NDgxLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGU0OGJlMzlkYmMzZDQ1MmNjMDA4ZjU3MTVjMDhlYjFhYzYxY2U1ZmMuLjkxZWMy
OGFmYWFkYWNiY2M1MTkwNWZkZmFhMzAwMjVkNDI5Yzc5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMi0xMi0wNSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV0cnkgc25hcHNob3RzIGlmIHRoZXkgYXJlIHRvbyBlbXB0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMjgyMDE0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6IEFkZCBhIG5ldyB2
YXJpYWJsZSB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgdGltZXMgd2UndmUKKyAg
ICAgICAgcmV0cmllZCB0byBjb21lIHVwIHdpdGggYSBzbmFwc2hvdC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6IEluaXRpYWxpemUgdGhlIGNvdW50IHRvIDAuCisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCk6IElmIHdlIGhhdmUg
YSBzbmFwc2hvdCBpbWFnZSB0byBsb29rIGF0LCBhbmQgaWYgaXQgaXMKKyAgICAgICAgZXZhbHVh
dGVkIHRvIGJlIHRvbyBlbXB0eSwgdGhlbiB0cnkgYWdhaW4uCisKIDIwMTItMTItMDUgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzEyODA5ODkwPiBTaG91bGQgYWxsb3cgc2FuZGJveCBsb29rdXAgb2YgY29tLmFwcGxlLnRjY2QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNGY0YmZlZTNhY2Q1YWFhYzU2ZWY3ZTYwYTliYTI1NWJm
OWIwMDMxNC4uZDkzZTcyZGE0NGFkMjNjYjU0YTZiZTUyYTE1ZTM2OTU5MzA2ZWJkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTE2MTgsNiArMTYxOCw3IEBAIF93a1NpZ25hbENGUmVhZFN0cmVh
bUhhc0J5dGVzCiAub2JqY19jbGFzc19uYW1lX1dlYldpbmRvd0ZhZGVBbmltYXRpb24KIC5vYmpj
X2NsYXNzX25hbWVfV2ViV2luZG93U2NhbGVBbmltYXRpb24KIF9fWk43V2ViQ29yZTEwaGFuZEN1
cnNvckV2CitfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlMThpc0FsbW9zdFNvbGlkQ29sb3JFdgog
X19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CiBfX1pON1dlYkNvcmUxMWdsb2JhbFBv
aW50RVJLOF9OU1BvaW50UDhOU1dpbmRvdwogX19aTjdXZWJDb3JlMTF0b1VzZXJTcGFjZUVSSzdf
TlNSZWN0UDhOU1dpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKaW5kZXggN2E0MGFkZDk4MTJmMGRhMTMyNTBhOGQ4YTNiOGY1OTQ1N2RiMDBj
MS4uNTkwNGNjODViYjkzYmNkYjNiZWRmMDE1MzkzNWQyNTYxMWIyNDUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yNTMsNyArMjUz
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaWRnZXRDYWxsYmFjayhO
b2RlKiBuLCB1bnNpZ25lZCkKIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVT
bmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIHsKLSAgICBpZiAoZGlzcGxheVN0YXRl
KCkgPiBXYWl0aW5nRm9yU25hcHNob3QgfHwgIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVn
SW4oKSkKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgPiBEaXNwbGF5aW5nU25hcHNob3QgfHwgIXJl
bmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
dG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1h
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggYTlmNjQ5YTYwNmZkYWM2YmE4YzI1YTNkZDMzMzY2ZDYxMzBmODEzOC4uZDI1ZmY0NGYw
YjViYmE1NmI2YWFhNGM0Y2M4OWUzZjJiMDJmMDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGlj
OgogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAgICAgdmlydHVh
bCBOU0ltYWdlKiBnZXROU0ltYWdlKCk7CiAgICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJl
cHJlc2VudGF0aW9uKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkg
T1ZFUlJJREU7CiAjZW5kaWYKICAgICAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBlYWIxM2JjNWY5Y2Q3MmFjMGYwODAyN2VlYzMyYWUy
NDQxMzc3Y2VhLi5lZDk5NjJkYWM2NjUyOTU4MjUxMGMzZWI2YzljYzdmNzJkOGYwNWM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTE0Myw2ICsxNDMsOCBA
QCBwdWJsaWM6CiAgICAgLy8gQWNjZXNzb3JzIGZvciBuYXRpdmUgaW1hZ2UgZm9ybWF0cy4KICAg
ICB2aXJ0dWFsIE5TSW1hZ2UqIGdldE5TSW1hZ2UoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVh
bCBDRkRhdGFSZWYgZ2V0VElGRlJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gMDsgfQorCisgICAg
dmlydHVhbCBib29sIGlzQWxtb3N0U29saWRDb2xvcigpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAogI2lmIFVTRShDRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9JbWFnZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9JbWFnZU1hYy5tbQppbmRleCAwOTFmMmRhMjNiYzQwMjFhYTIxMzVjNGFkZjAyYjMwZmU0
ZDMyMTc2Li5iNDEzMzg3YWJkNjc4MmNlN2Y2NmViMDIzNjk3ZDU5MTUyODcwYTcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCkBAIC0x
MTYsNCArMTE2LDYzIEBAIE5TSW1hZ2UqIEJpdG1hcEltYWdlOjpnZXROU0ltYWdlKCkKICAgICBy
ZXR1cm4gbV9uc0ltYWdlLmdldCgpOwogfQogCitib29sIEJpdG1hcEltYWdlOjppc0FsbW9zdFNv
bGlkQ29sb3IoKQoreworICAgIEFTU0VSVChmcmFtZUNvdW50KCkgPT0gMSk7CisKKyAgICBDR0lt
YWdlUmVmIGltYWdlID0gZnJhbWVBdEluZGV4KDApOworICAgIEFTU0VSVChDR0ltYWdlR2V0Qml0
c1BlckNvbXBvbmVudChpbWFnZSkgPT0gOCk7CisKKyAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdl
R2V0V2lkdGgoaW1hZ2UpOworICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGlt
YWdlKTsKKyAgICBzaXplX3QgYnByID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGltYWdlKTsKKwor
ICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAgY29uc3QgVUlu
dDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKworICAgIC8vIE92
ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNjYWxlIHZlcnNp
b24gb2YgdGhlIGltYWdlLgorICAgIC8vIEZvciB0aGUgaW50ZXJpb3IgcG9pbnRzLCBjYWxjdWxh
dGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5hbmNlIGFtb25nIHRoZSBzYW1wbGUgcG9pbnQKKyAg
ICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2ludHMsIHNjYWxlZCBieSB0cmFuc3BhcmVuY3kuCisg
ICAgY29uc3QgaW50IHNhbXBsZVJvd3MgPSA3LCBzYW1wbGVDb2xzID0gNzsKKyAgICAvLyBGSVhN
RTogUmVmaW5lIHRoZSBwcm9wZXIgbnVtYmVyIG9mIHNhbXBsZXMsIGFuZCBhY2NvbW1vZGF0ZSBk
aWZmZXJlbnQgYXNwZWN0IHJhdGlvcy4KKyAgICBpZiAod2lkdGggPCBzYW1wbGVDb2xzIHx8IGhl
aWdodCA8IHNhbXBsZVJvd3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEVuc3Vy
ZSB0aGF0IHRoZSBsYXN0IHJvdy9jb2x1bW4gbGFuZCBvbiB0aGUgaW1hZ2UgcGVyaW1ldGVyLgor
ICAgIGNvbnN0IGZsb2F0IHN0cmlkZVcgPSAoZmxvYXQpKHdpZHRoIC0gMSkgLyAoc2FtcGxlQ29s
cyAtIDEpOworICAgIGNvbnN0IGZsb2F0IHN0cmlkZUggPSAoZmxvYXQpKGhlaWdodCAtIDEpIC8g
KHNhbXBsZVJvd3MgLSAxKTsKKyAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3MgKiBzYW1wbGVD
b2xzXTsKKworICAgIC8vIEZpbmQgdGhlIGx1bWluYW5jZSBvZiB0aGUgc2FtcGxlIHBvaW50cy4K
KyAgICBmbG9hdCogc2FtcGxlUG9pbnRlciA9IHNhbXBsZXM7CisgICAgZmxvYXQgeSA9IDA7Cisg
ICAgY29uc3QgVUludDgqIHJvdyA9IGRhdGE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzYW1w
bGVSb3dzOyArK2kpIHsKKyAgICAgICAgZmxvYXQgeCA9IDA7CisgICAgICAgIGZvciAoaW50IGog
PSAwOyBqIDwgc2FtcGxlQ29sczsgKytqKSB7CisgICAgICAgICAgICBjb25zdCBVSW50OCogcDAg
PSByb3cgKyAoc3RhdGljX2Nhc3Q8aW50Pih4ICsgLjUpKSAqIDQ7CisgICAgICAgICAgICAvLyBS
IEcgQiBBCisgICAgICAgICAgICAqc2FtcGxlUG9pbnRlcisrID0gKDAuMjEyNSAqICpwMCArIDAu
NzE1NCAqICoocDArMSkgKyAwLjA3MjEgKiAqKHAwKzIpKSAqICoocDArMykgLyAyNTU7CisgICAg
ICAgICAgICB4ICs9IHN0cmlkZVc7CisgICAgICAgIH0KKyAgICAgICAgeSArPSBzdHJpZGVIOwor
ICAgICAgICByb3cgPSBkYXRhICsgKHN0YXRpY19jYXN0PGludD4oeSArIC41KSkgKiBicHI7Cisg
ICAgfQorCisgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4KKyAgICBmbG9hdCBhY2N1
bVNjb3JlID0gMDsKKyAgICBpbnQgc2FtcGxlSW5kZXggPSBzYW1wbGVDb2xzICsgMTsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNhbXBsZVJvd3MgLSAyOyArK2kpIHsKKyAgICAgICAgZm9yIChp
bnQgaiA9IDA7IGogPCBzYW1wbGVDb2xzIC0gMjsgKytqKSB7CisgICAgICAgICAgICBmbG9hdCBk
aWZmID0gc2FtcGxlc1tzYW1wbGVJbmRleCAtIHNhbXBsZUNvbHNdICsgc2FtcGxlc1tzYW1wbGVJ
bmRleCArIHNhbXBsZUNvbHNdICsgc2FtcGxlc1tzYW1wbGVJbmRleCAtIDFdICsgc2FtcGxlc1tz
YW1wbGVJbmRleCArIDFdIC0gNCAqIHNhbXBsZXNbc2FtcGxlSW5kZXhdOworICAgICAgICAgICAg
YWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKKyAgICAgICAgICAgICsrc2FtcGxlSW5kZXg7Cisg
ICAgICAgIH0KKyAgICAgICAgc2FtcGxlSW5kZXggKz0gMjsKKyAgICB9CisKKyAgICAvLyBUaGUg
c2NvcmUgZm9yIGEgZ2l2ZW4gc2FtcGxlIGNhbiBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIDAgYW5k
IDI1NV4yLgorICAgIHJldHVybiBhY2N1bVNjb3JlIDwgMjUwMCAqIChzYW1wbGVSb3dzIC0gMikg
KiAoc2FtcGxlQ29scyAtIDIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggNmM3NGY0NjMzZmJiNWIzN2FhMTY1Zjg4
OTk3OGQyMmUxNThmNjVjNy4uMzI2ZDFhNTVlZTNhZTBhNjhhYmJlZDEzOTY1YWNhNzMwZTcxOTQ4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcApAQCAtNzAsNiArNzAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gVGhpcyBzaW11
bGF0ZWQgbW91c2UgY2xpY2sgZGVsYXkgaW4gSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgc2hv
dWxkIGdlbmVyYWxseSBiZSB0aGUgc2FtZSBvciBzaG9ydGVyIHRoYW4gdGhpcyBkZWxheS4KIHN0
YXRpYyBjb25zdCBkb3VibGUgcGx1Z2luU25hcHNob3RUaW1lckRlbGF5ID0gMS4xOworc3RhdGlj
IGNvbnN0IGludCBtYXhpbXVtU25hcHNob3RSZXRyaWVzID0gNTsKIAogY2xhc3MgUGx1Z2luVmll
dzo6VVJMUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoK
QEAgLTI3Miw2ICsyNzMsNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KFBhc3NSZWZQdHI8SFRN
TFBsdWdJbkVsZW1lbnQ+IHBsdWdpbkVsZW1lbnQsIFBhc3NSZWZQdHI8UAogI2VuZGlmCiAgICAg
LCBtX21hbnVhbFN0cmVhbVN0YXRlKFN0cmVhbVN0YXRlSW5pdGlhbCkKICAgICAsIG1fcGx1Z2lu
U25hcHNob3RUaW1lcih0aGlzLCAmUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVk
LCBwbHVnaW5TbmFwc2hvdFRpbWVyRGVsYXkpCisgICAgLCBtX2NvdW50U25hcHNob3RSZXRyaWVz
KDApCiAgICAgLCBtX3BhZ2VTY2FsZUZhY3RvcigxKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1
Z2luVmlldyh0aGlzKTsKQEAgLTE0OTQsOSArMTQ5Niw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFt
ZVJlCiB9CiAjZW5kaWYKIAotdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmly
ZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxQbHVnaW5WaWV3PiogdGltZXIpCit2b2lkIFBsdWdp
blZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFBs
dWdpblZpZXc+KikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9wbHVn
aW5TbmFwc2hvdFRpbWVyKTsKICAgICBBU1NFUlQobV9wbHVnaW4pOwogCiAgICAgLy8gU25hcHNo
b3QgbWlnaHQgYmUgMCBpZiBwbHVnaW4gc2l6ZSBpcyAweDAuCkBAIC0xNTA0LDcgKzE1MDUsMTQg
QEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoRGVmZXJyYWJsZU9u
ZVNob3RUaW1lcjxQbHVnaW5WaWV3PiogdGkKICAgICBSZWZQdHI8SW1hZ2U+IHNuYXBzaG90SW1h
Z2U7CiAgICAgaWYgKHNuYXBzaG90KQogICAgICAgICBzbmFwc2hvdEltYWdlID0gc25hcHNob3Qt
PmNyZWF0ZUltYWdlKCk7Ci0gICAgbV9wbHVnaW5FbGVtZW50LT51cGRhdGVTbmFwc2hvdChzbmFw
c2hvdEltYWdlLnJlbGVhc2UoKSk7CisgICAgbV9wbHVnaW5FbGVtZW50LT51cGRhdGVTbmFwc2hv
dChzbmFwc2hvdEltYWdlLmdldCgpKTsKKworICAgIGlmIChzbmFwc2hvdEltYWdlICYmIHNuYXBz
aG90SW1hZ2UtPmlzQWxtb3N0U29saWRDb2xvcigpICYmIG1fY291bnRTbmFwc2hvdFJldHJpZXMg
PCBtYXhpbXVtU25hcHNob3RSZXRyaWVzKSB7CisgICAgICAgICsrbV9jb3VudFNuYXBzaG90UmV0
cmllczsKKyAgICAgICAgbV9wbHVnaW5TbmFwc2hvdFRpbWVyLnJlc3RhcnQoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKwogICAgIGRlc3Ryb3lQbHVnaW5BbmRSZXNldCgpOwogICAgIG1fcGx1
Z2luID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCmluZGV4IGNkOWUzNWI5NTQyZWFjZGIwZmIwYjMyZjEyY2M4ODBiOTc2YjBjOTkuLjY0
MjZkY2MwYmM3MGRhODRkNzc5ODI5YjM3MzcxYTgyMDI5YjFiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMjUwLDYgKzI1MCw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGlu
Z1NuYXBzaG90OwogICAgIC8vIFRoaXMgdGltZXIgaXMgdXNlZCB3aGVuIHBsdWdpbiBzbmFwc2hv
dHRpbmcgaXMgZW5hYmxlZCwgdG8gY2FwdHVyZSBhIHBsdWdpbiBwbGFjZWhvbGRlci4KICAgICBX
ZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFBsdWdpblZpZXc+IG1fcGx1Z2luU25hcHNo
b3RUaW1lcjsKKyAgICB1bnNpZ25lZCBtX2NvdW50U25hcHNob3RSZXRyaWVzOwogCiAgICAgZG91
YmxlIG1fcGFnZVNjYWxlRmFjdG9yOwogfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177886</attachid>
            <date>2012-12-05 17:40:35 -0800</date>
            <delta_ts>2012-12-06 01:18:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104174-20121205173800.patch</filename>
            <type>text/plain</type>
            <size>10687</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzYmFmMzY5MjY0ZTVi
YTUxYWJiMjIxNGVlN2YzMDBkMzAzOTRhMS4uMzZhNjIyZDRjMGE1NWU4ZDBhOWYzOTZiNTNjMGQ5
NzFlODcyYzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTA1ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXRyeSBzbmFwc2hvdHMgaWYgdGhl
eSBhcmUgdG9vIGVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDQxNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODIwMTQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9ydCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KTogQ2hhbmdlIHRoZSBzdGF0ZSBtYWNo
aW5lIGNoZWNrIHNvIHRoYXQgZXZlbgorICAgICAgICB3aGVuIHRoZSBwbHVnLWluIGlzIGRpc3Bs
YXlpbmcgYSBzbmFwc2hvdCwgdGhlIHNuYXBzaG90IGNhbiBzdGlsbCBiZSB1cGRhdGVkLiBUaGlz
IGFsbG93cyBmb3IgdGhlCisgICAgICAgIHJldHJpZXMgdG8gYmUgZHJhd24uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omlz
QWxtb3N0U29saWRDb2xvcik6IEFkZCBuZXcgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYg
dGhlIGltYWdlIGlzIG1vc3RseSBlbXB0eS4KKyAgICAgICAgQnkgZGVmYXVsdCBhbGwgaW1hZ2Vz
IGFyZSBjb25zaWRlcmVkIHRvIGhhdmUgbWVhbmluZ2Z1bCBjb250ZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogT3ZlcnJpZGUgaXNBbG1vc3RTb2xpZENv
bG9yKCkgZm9yIE1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTog
RmlndXJlIG91dCBpZiB0aGUgaW1hZ2UgaXMgYWxtb3N0IGEgc29saWQgY29sb3IgYnkgb3Zlcmxh
eWluZworICAgICAgICBhIGdyaWQgb2YgZG90cywgYW5kIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5j
ZXMgYW1vbmcgdGhlbS4gSWYgdGhlIGF2ZXJhZ2UgY29sb3IgZGlmZmVyZW5jZSBpcyBncmVhdGVy
IHRoYW4KKyAgICAgICAgYSB0aHJlc2hvbGQsIHdlIGNvbnNpZGVyIGl0IHRvIGhhdmUgbWVhbmlu
Z2Z1bCBjb250ZW50LgorCiAyMDEyLTEyLTA1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2NDgxLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGU0OGJlMzlkYmMzZDQ1MmNjMDA4ZjU3MTVjMDhlYjFhYzYxY2U1ZmMuLjkxZWMy
OGFmYWFkYWNiY2M1MTkwNWZkZmFhMzAwMjVkNDI5Yzc5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMi0xMi0wNSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV0cnkgc25hcHNob3RzIGlmIHRoZXkgYXJlIHRvbyBlbXB0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMjgyMDE0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6IEFkZCBhIG5ldyB2
YXJpYWJsZSB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgdGltZXMgd2UndmUKKyAg
ICAgICAgcmV0cmllZCB0byBjb21lIHVwIHdpdGggYSBzbmFwc2hvdC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6IEluaXRpYWxpemUgdGhlIGNvdW50IHRvIDAuCisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCk6IElmIHdlIGhhdmUg
YSBzbmFwc2hvdCBpbWFnZSB0byBsb29rIGF0LCBhbmQgaWYgaXQgaXMKKyAgICAgICAgZXZhbHVh
dGVkIHRvIGJlIHRvbyBlbXB0eSwgdGhlbiB0cnkgYWdhaW4uCisKIDIwMTItMTItMDUgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzEyODA5ODkwPiBTaG91bGQgYWxsb3cgc2FuZGJveCBsb29rdXAgb2YgY29tLmFwcGxlLnRjY2QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNGY0YmZlZTNhY2Q1YWFhYzU2ZWY3ZTYwYTliYTI1NWJm
OWIwMDMxNC4uZDkzZTcyZGE0NGFkMjNjYjU0YTZiZTUyYTE1ZTM2OTU5MzA2ZWJkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTE2MTgsNiArMTYxOCw3IEBAIF93a1NpZ25hbENGUmVhZFN0cmVh
bUhhc0J5dGVzCiAub2JqY19jbGFzc19uYW1lX1dlYldpbmRvd0ZhZGVBbmltYXRpb24KIC5vYmpj
X2NsYXNzX25hbWVfV2ViV2luZG93U2NhbGVBbmltYXRpb24KIF9fWk43V2ViQ29yZTEwaGFuZEN1
cnNvckV2CitfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlMThpc0FsbW9zdFNvbGlkQ29sb3JFdgog
X19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CiBfX1pON1dlYkNvcmUxMWdsb2JhbFBv
aW50RVJLOF9OU1BvaW50UDhOU1dpbmRvdwogX19aTjdXZWJDb3JlMTF0b1VzZXJTcGFjZUVSSzdf
TlNSZWN0UDhOU1dpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKaW5kZXggN2E0MGFkZDk4MTJmMGRhMTMyNTBhOGQ4YTNiOGY1OTQ1N2RiMDBj
MS4uNTkwNGNjODViYjkzYmNkYjNiZWRmMDE1MzkzNWQyNTYxMWIyNDUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yNTMsNyArMjUz
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaWRnZXRDYWxsYmFjayhO
b2RlKiBuLCB1bnNpZ25lZCkKIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVT
bmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIHsKLSAgICBpZiAoZGlzcGxheVN0YXRl
KCkgPiBXYWl0aW5nRm9yU25hcHNob3QgfHwgIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVn
SW4oKSkKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgPiBEaXNwbGF5aW5nU25hcHNob3QgfHwgIXJl
bmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
dG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1h
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggYTlmNjQ5YTYwNmZkYWM2YmE4YzI1YTNkZDMzMzY2ZDYxMzBmODEzOC4uZDI1ZmY0NGYw
YjViYmE1NmI2YWFhNGM0Y2M4OWUzZjJiMDJmMDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGlj
OgogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAgICAgdmlydHVh
bCBOU0ltYWdlKiBnZXROU0ltYWdlKCk7CiAgICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJl
cHJlc2VudGF0aW9uKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkg
T1ZFUlJJREU7CiAjZW5kaWYKICAgICAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBlYWIxM2JjNWY5Y2Q3MmFjMGYwODAyN2VlYzMyYWUy
NDQxMzc3Y2VhLi5kZGVmNDUxNjE1Y2U3ZjE4M2JlMDk5Y2Q5NTE3NzUwMjEzMjQwNTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzOCwxMSArMTM4LDE0
IEBAIHB1YmxpYzoKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwg
U3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBi
b29sIGlzQWxtb3N0U29saWRDb2xvcigpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAg
ICAgdmlydHVhbCBOU0ltYWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIDA7IH0KKwogI2Vu
ZGlmCiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggMDkxZjJkYTIzYmM0MDIxYWEyMTM1YzRhZGYwMmIzMGZl
NGQzMjE3Ni4uYjQxMzM4N2FiZDY3ODJjZTdmNjZlYjAyMzY5N2Q1OTE1Mjg3MGE3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAt
MTE2LDQgKzExNiw2MyBAQCBOU0ltYWdlKiBCaXRtYXBJbWFnZTo6Z2V0TlNJbWFnZSgpCiAgICAg
cmV0dXJuIG1fbnNJbWFnZS5nZXQoKTsKIH0KIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkKK3sKKyAgICBBU1NFUlQoZnJhbWVDb3VudCgpID09IDEpOworCisgICAgQ0dJ
bWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleCgwKTsKKyAgICBBU1NFUlQoQ0dJbWFnZUdldEJp
dHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworCisgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKTsKKyAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChp
bWFnZSk7CisgICAgc2l6ZV90IGJwciA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7CisK
KyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlk
ZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOworICAgIGNvbnN0IFVJ
bnQ4KiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7CisKKyAgICAvLyBP
dmVybGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJz
aW9uIG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2FsY3Vs
YXRlIHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50Cisg
ICAgLy8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5Lgor
ICAgIGNvbnN0IGludCBzYW1wbGVSb3dzID0gNywgc2FtcGxlQ29scyA9IDc7CisgICAgLy8gRklY
TUU6IFJlZmluZSB0aGUgcHJvcGVyIG51bWJlciBvZiBzYW1wbGVzLCBhbmQgYWNjb21tb2RhdGUg
ZGlmZmVyZW50IGFzcGVjdCByYXRpb3MuCisgICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29scyB8fCBo
ZWlnaHQgPCBzYW1wbGVSb3dzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBFbnN1
cmUgdGhhdCB0aGUgbGFzdCByb3cvY29sdW1uIGxhbmQgb24gdGhlIGltYWdlIHBlcmltZXRlci4K
KyAgICBjb25zdCBmbG9hdCBzdHJpZGVXID0gKGZsb2F0KSh3aWR0aCAtIDEpIC8gKHNhbXBsZUNv
bHMgLSAxKTsKKyAgICBjb25zdCBmbG9hdCBzdHJpZGVIID0gKGZsb2F0KShoZWlnaHQgLSAxKSAv
IChzYW1wbGVSb3dzIC0gMSk7CisgICAgZmxvYXQgc2FtcGxlc1tzYW1wbGVSb3dzICogc2FtcGxl
Q29sc107CisKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2YgdGhlIHNhbXBsZSBwb2ludHMu
CisgICAgZmxvYXQqIHNhbXBsZVBvaW50ZXIgPSBzYW1wbGVzOworICAgIGZsb2F0IHkgPSAwOwor
ICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2Ft
cGxlUm93czsgKytpKSB7CisgICAgICAgIGZsb2F0IHggPSAwOworICAgICAgICBmb3IgKGludCBq
ID0gMDsgaiA8IHNhbXBsZUNvbHM7ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAw
ID0gcm93ICsgKHN0YXRpY19jYXN0PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8g
UiBHIEIgQQorICAgICAgICAgICAgKnNhbXBsZVBvaW50ZXIrKyA9ICgwLjIxMjUgKiAqcDAgKyAw
LjcxNTQgKiAqKHAwKzEpICsgMC4wNzIxICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAg
ICAgICAgICAgeCArPSBzdHJpZGVXOworICAgICAgICB9CisgICAgICAgIHkgKz0gc3RyaWRlSDsK
KyAgICAgICAgcm93ID0gZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnByOwor
ICAgIH0KKworICAgIC8vIERldGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAgZmxvYXQgYWNj
dW1TY29yZSA9IDA7CisgICAgaW50IHNhbXBsZUluZGV4ID0gc2FtcGxlQ29scyArIDE7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBzYW1wbGVSb3dzIC0gMjsgKytpKSB7CisgICAgICAgIGZvciAo
aW50IGogPSAwOyBqIDwgc2FtcGxlQ29scyAtIDI7ICsraikgeworICAgICAgICAgICAgZmxvYXQg
ZGlmZiA9IHNhbXBsZXNbc2FtcGxlSW5kZXggLSBzYW1wbGVDb2xzXSArIHNhbXBsZXNbc2FtcGxl
SW5kZXggKyBzYW1wbGVDb2xzXSArIHNhbXBsZXNbc2FtcGxlSW5kZXggLSAxXSArIHNhbXBsZXNb
c2FtcGxlSW5kZXggKyAxXSAtIDQgKiBzYW1wbGVzW3NhbXBsZUluZGV4XTsKKyAgICAgICAgICAg
IGFjY3VtU2NvcmUgKz0gZGlmZiAqIGRpZmY7CisgICAgICAgICAgICArK3NhbXBsZUluZGV4Owor
ICAgICAgICB9CisgICAgICAgIHNhbXBsZUluZGV4ICs9IDI7CisgICAgfQorCisgICAgLy8gVGhl
IHNjb3JlIGZvciBhIGdpdmVuIHNhbXBsZSBjYW4gYmUgd2l0aGluIHRoZSByYW5nZSBvZiAwIGFu
ZCAyNTVeMi4KKyAgICByZXR1cm4gYWNjdW1TY29yZSA8IDI1MDAgKiAoc2FtcGxlUm93cyAtIDIp
ICogKHNhbXBsZUNvbHMgLSAyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDZjNzRmNDYzM2ZiYjViMzdhYTE2NWY4
ODk5NzhkMjJlMTU4ZjY1YzcuLjMyNmQxYTU1ZWUzYWUwYTY4YWJiZWQxMzk2NWFjYTczMGU3MTk0
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgc2lt
dWxhdGVkIG1vdXNlIGNsaWNrIGRlbGF5IGluIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIHNo
b3VsZCBnZW5lcmFsbHkgYmUgdGhlIHNhbWUgb3Igc2hvcnRlciB0aGFuIHRoaXMgZGVsYXkuCiBz
dGF0aWMgY29uc3QgZG91YmxlIHBsdWdpblNuYXBzaG90VGltZXJEZWxheSA9IDEuMTsKK3N0YXRp
YyBjb25zdCBpbnQgbWF4aW11bVNuYXBzaG90UmV0cmllcyA9IDU7CiAKIGNsYXNzIFBsdWdpblZp
ZXc6OlVSTFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVUkxSZXF1ZXN0PiB7CiBwdWJsaWM6
CkBAIC0yNzIsNiArMjczLDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhQYXNzUmVmUHRyPEhU
TUxQbHVnSW5FbGVtZW50PiBwbHVnaW5FbGVtZW50LCBQYXNzUmVmUHRyPFAKICNlbmRpZgogICAg
ICwgbV9tYW51YWxTdHJlYW1TdGF0ZShTdHJlYW1TdGF0ZUluaXRpYWwpCiAgICAgLCBtX3BsdWdp
blNuYXBzaG90VGltZXIodGhpcywgJlBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJl
ZCwgcGx1Z2luU25hcHNob3RUaW1lckRlbGF5KQorICAgICwgbV9jb3VudFNuYXBzaG90UmV0cmll
cygwKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBs
dWdpblZpZXcodGhpcyk7CkBAIC0xNDk0LDkgKzE0OTYsOCBAQCB2b2lkIFBsdWdpblZpZXc6Ondp
bmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZnJh
bWVSZQogfQogI2VuZGlmCiAKLXZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZp
cmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8UGx1Z2luVmlldz4qIHRpbWVyKQordm9pZCBQbHVn
aW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxQ
bHVnaW5WaWV3PiopCiB7Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1fcGx1
Z2luU25hcHNob3RUaW1lcik7CiAgICAgQVNTRVJUKG1fcGx1Z2luKTsKIAogICAgIC8vIFNuYXBz
aG90IG1pZ2h0IGJlIDAgaWYgcGx1Z2luIHNpemUgaXMgMHgwLgpAQCAtMTUwNCw3ICsxNTA1LDE0
IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKERlZmVycmFibGVP
bmVTaG90VGltZXI8UGx1Z2luVmlldz4qIHRpCiAgICAgUmVmUHRyPEltYWdlPiBzbmFwc2hvdElt
YWdlOwogICAgIGlmIChzbmFwc2hvdCkKICAgICAgICAgc25hcHNob3RJbWFnZSA9IHNuYXBzaG90
LT5jcmVhdGVJbWFnZSgpOwotICAgIG1fcGx1Z2luRWxlbWVudC0+dXBkYXRlU25hcHNob3Qoc25h
cHNob3RJbWFnZS5yZWxlYXNlKCkpOworICAgIG1fcGx1Z2luRWxlbWVudC0+dXBkYXRlU25hcHNo
b3Qoc25hcHNob3RJbWFnZS5nZXQoKSk7CisKKyAgICBpZiAoc25hcHNob3RJbWFnZSAmJiBzbmFw
c2hvdEltYWdlLT5pc0FsbW9zdFNvbGlkQ29sb3IoKSAmJiBtX2NvdW50U25hcHNob3RSZXRyaWVz
IDwgbWF4aW11bVNuYXBzaG90UmV0cmllcykgeworICAgICAgICArK21fY291bnRTbmFwc2hvdFJl
dHJpZXM7CisgICAgICAgIG1fcGx1Z2luU25hcHNob3RUaW1lci5yZXN0YXJ0KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBkZXN0cm95UGx1Z2luQW5kUmVzZXQoKTsKICAgICBtX3Bs
dWdpbiA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaAppbmRleCBjZDllMzViOTU0MmVhY2RiMGZiMGIzMmYxMmNjODgwYjk3NmIwYzk5Li42
NDI2ZGNjMGJjNzBkYTg0ZDc3OTgyOWIzNzM3MWE4MjAyOWIxYjE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTI1MCw2ICsyNTAsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fdHJhbnNpZW50UGFpbnRp
bmdTbmFwc2hvdDsKICAgICAvLyBUaGlzIHRpbWVyIGlzIHVzZWQgd2hlbiBwbHVnaW4gc25hcHNo
b3R0aW5nIGlzIGVuYWJsZWQsIHRvIGNhcHR1cmUgYSBwbHVnaW4gcGxhY2Vob2xkZXIuCiAgICAg
V2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcjxQbHVnaW5WaWV3PiBtX3BsdWdpblNuYXBz
aG90VGltZXI7CisgICAgdW5zaWduZWQgbV9jb3VudFNuYXBzaG90UmV0cmllczsKIAogICAgIGRv
dWJsZSBtX3BhZ2VTY2FsZUZhY3RvcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177966</attachid>
            <date>2012-12-06 01:18:29 -0800</date>
            <delta_ts>2012-12-06 10:52:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104174-20121206011553.patch</filename>
            <type>text/plain</type>
            <size>10605</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzYmFmMzY5MjY0ZTVi
YTUxYWJiMjIxNGVlN2YzMDBkMzAzOTRhMS4uMzZhNjIyZDRjMGE1NWU4ZDBhOWYzOTZiNTNjMGQ5
NzFlODcyYzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEyLTA1ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXRyeSBzbmFwc2hvdHMgaWYgdGhl
eSBhcmUgdG9vIGVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDQxNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODIwMTQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9ydCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KTogQ2hhbmdlIHRoZSBzdGF0ZSBtYWNo
aW5lIGNoZWNrIHNvIHRoYXQgZXZlbgorICAgICAgICB3aGVuIHRoZSBwbHVnLWluIGlzIGRpc3Bs
YXlpbmcgYSBzbmFwc2hvdCwgdGhlIHNuYXBzaG90IGNhbiBzdGlsbCBiZSB1cGRhdGVkLiBUaGlz
IGFsbG93cyBmb3IgdGhlCisgICAgICAgIHJldHJpZXMgdG8gYmUgZHJhd24uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omlz
QWxtb3N0U29saWRDb2xvcik6IEFkZCBuZXcgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYg
dGhlIGltYWdlIGlzIG1vc3RseSBlbXB0eS4KKyAgICAgICAgQnkgZGVmYXVsdCBhbGwgaW1hZ2Vz
IGFyZSBjb25zaWRlcmVkIHRvIGhhdmUgbWVhbmluZ2Z1bCBjb250ZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogT3ZlcnJpZGUgaXNBbG1vc3RTb2xpZENv
bG9yKCkgZm9yIE1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTog
RmlndXJlIG91dCBpZiB0aGUgaW1hZ2UgaXMgYWxtb3N0IGEgc29saWQgY29sb3IgYnkgb3Zlcmxh
eWluZworICAgICAgICBhIGdyaWQgb2YgZG90cywgYW5kIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5j
ZXMgYW1vbmcgdGhlbS4gSWYgdGhlIGF2ZXJhZ2UgY29sb3IgZGlmZmVyZW5jZSBpcyBncmVhdGVy
IHRoYW4KKyAgICAgICAgYSB0aHJlc2hvbGQsIHdlIGNvbnNpZGVyIGl0IHRvIGhhdmUgbWVhbmlu
Z2Z1bCBjb250ZW50LgorCiAyMDEyLTEyLTA1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM2NDgxLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IGU0OGJlMzlkYmMzZDQ1MmNjMDA4ZjU3MTVjMDhlYjFhYzYxY2U1ZmMuLjkxZWMy
OGFmYWFkYWNiY2M1MTkwNWZkZmFhMzAwMjVkNDI5Yzc5ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMi0xMi0wNSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV0cnkgc25hcHNob3RzIGlmIHRoZXkgYXJlIHRvbyBlbXB0eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMjgyMDE0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6IEFkZCBhIG5ldyB2
YXJpYWJsZSB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgdGltZXMgd2UndmUKKyAg
ICAgICAgcmV0cmllZCB0byBjb21lIHVwIHdpdGggYSBzbmFwc2hvdC4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
Vmlldzo6UGx1Z2luVmlldyk6IEluaXRpYWxpemUgdGhlIGNvdW50IHRvIDAuCisgICAgICAgIChX
ZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCk6IElmIHdlIGhhdmUg
YSBzbmFwc2hvdCBpbWFnZSB0byBsb29rIGF0LCBhbmQgaWYgaXQgaXMKKyAgICAgICAgZXZhbHVh
dGVkIHRvIGJlIHRvbyBlbXB0eSwgdGhlbiB0cnkgYWdhaW4uCisKIDIwMTItMTItMDUgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzEyODA5ODkwPiBTaG91bGQgYWxsb3cgc2FuZGJveCBsb29rdXAgb2YgY29tLmFwcGxlLnRjY2QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNGY0YmZlZTNhY2Q1YWFhYzU2ZWY3ZTYwYTliYTI1NWJm
OWIwMDMxNC4uZDkzZTcyZGE0NGFkMjNjYjU0YTZiZTUyYTE1ZTM2OTU5MzA2ZWJkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTE2MTgsNiArMTYxOCw3IEBAIF93a1NpZ25hbENGUmVhZFN0cmVh
bUhhc0J5dGVzCiAub2JqY19jbGFzc19uYW1lX1dlYldpbmRvd0ZhZGVBbmltYXRpb24KIC5vYmpj
X2NsYXNzX25hbWVfV2ViV2luZG93U2NhbGVBbmltYXRpb24KIF9fWk43V2ViQ29yZTEwaGFuZEN1
cnNvckV2CitfX1pON1dlYkNvcmUxMUJpdG1hcEltYWdlMThpc0FsbW9zdFNvbGlkQ29sb3JFdgog
X19aTjdXZWJDb3JlMTFDYWNoZWRJbWFnZTVpbWFnZUV2CiBfX1pON1dlYkNvcmUxMWdsb2JhbFBv
aW50RVJLOF9OU1BvaW50UDhOU1dpbmRvdwogX19aTjdXZWJDb3JlMTF0b1VzZXJTcGFjZUVSSzdf
TlNSZWN0UDhOU1dpbmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKaW5kZXggN2E0MGFkZDk4MTJmMGRhMTMyNTBhOGQ4YTNiOGY1OTQ1N2RiMDBj
MS4uNTkwNGNjODViYjkzYmNkYjNiZWRmMDE1MzkzNWQyNTYxMWIyNDUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCkBAIC0yNTMsNyArMjUz
LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVXaWRnZXRDYWxsYmFjayhO
b2RlKiBuLCB1bnNpZ25lZCkKIAogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVT
bmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkKIHsKLSAgICBpZiAoZGlzcGxheVN0YXRl
KCkgPiBXYWl0aW5nRm9yU25hcHNob3QgfHwgIXJlbmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVn
SW4oKSkKKyAgICBpZiAoZGlzcGxheVN0YXRlKCkgPiBEaXNwbGF5aW5nU25hcHNob3QgfHwgIXJl
bmRlcmVyKCktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
dG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbihyZW5kZXJlcigpKS0+dXBkYXRlU25hcHNob3QoaW1h
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgK
aW5kZXggYTlmNjQ5YTYwNmZkYWM2YmE4YzI1YTNkZDMzMzY2ZDYxMzBmODEzOC4uZDI1ZmY0NGYw
YjViYmE1NmI2YWFhNGM0Y2M4OWUzZjJiMDJmMDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGlj
OgogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAgICAgdmlydHVh
bCBOU0ltYWdlKiBnZXROU0ltYWdlKCk7CiAgICAgdmlydHVhbCBDRkRhdGFSZWYgZ2V0VElGRlJl
cHJlc2VudGF0aW9uKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBbG1vc3RTb2xpZENvbG9yKCkg
T1ZFUlJJREU7CiAjZW5kaWYKICAgICAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCBlYWIxM2JjNWY5Y2Q3MmFjMGYwODAyN2VlYzMyYWUy
NDQxMzc3Y2VhLi5kZGVmNDUxNjE1Y2U3ZjE4M2JlMDk5Y2Q5NTE3NzUwMjEzMjQwNTM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTEzOCwxMSArMTM4LDE0
IEBAIHB1YmxpYzoKICAgICBlbnVtIFRpbGVSdWxlIHsgU3RyZXRjaFRpbGUsIFJvdW5kVGlsZSwg
U3BhY2VUaWxlLCBSZXBlYXRUaWxlIH07CiAKICAgICB2aXJ0dWFsIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBi
b29sIGlzQWxtb3N0U29saWRDb2xvcigpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIC8vIEFjY2Vzc29ycyBmb3IgbmF0aXZlIGltYWdlIGZvcm1hdHMuCiAg
ICAgdmlydHVhbCBOU0ltYWdlKiBnZXROU0ltYWdlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgQ0ZEYXRhUmVmIGdldFRJRkZSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIDA7IH0KKwogI2Vu
ZGlmCiAKICNpZiBVU0UoQ0cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvSW1hZ2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvSW1hZ2VNYWMubW0KaW5kZXggMDkxZjJkYTIzYmM0MDIxYWEyMTM1YzRhZGYwMmIzMGZl
NGQzMjE3Ni4uNWFjNjhiNDM0YjI0ODJkNTVjY2Y4YjRhYzMyMTk4ZjdjNWRhMmRlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1hYy5tbQpAQCAt
MTE2LDQgKzExNiw2MCBAQCBOU0ltYWdlKiBCaXRtYXBJbWFnZTo6Z2V0TlNJbWFnZSgpCiAgICAg
cmV0dXJuIG1fbnNJbWFnZS5nZXQoKTsKIH0KIAorYm9vbCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RT
b2xpZENvbG9yKCkKK3sKKyAgICBBU1NFUlQoZnJhbWVDb3VudCgpID09IDEpOworCisgICAgQ0dJ
bWFnZVJlZiBpbWFnZSA9IGZyYW1lQXRJbmRleCgwKTsKKyAgICBBU1NFUlQoQ0dJbWFnZUdldEJp
dHNQZXJDb21wb25lbnQoaW1hZ2UpID09IDgpOworCisgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFn
ZUdldFdpZHRoKGltYWdlKTsKKyAgICBzaXplX3QgaGVpZ2h0ID0gQ0dJbWFnZUdldEhlaWdodChp
bWFnZSk7CisgICAgc2l6ZV90IGJ5dGVzUGVyUm93ID0gQ0dJbWFnZUdldEJ5dGVzUGVyUm93KGlt
YWdlKTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHByb3ZpZGVyID0gYWRvcHRDRihDR0Rh
dGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoaW1hZ2UpKSk7CisgICAg
Y29uc3QgVUludDgqIGRhdGEgPSBDRkRhdGFHZXRCeXRlUHRyKHByb3ZpZGVyLmdldCgpKTsKKwor
ICAgIC8vIE92ZXJsYXkgYSBncmlkIG9mIHNhbXBsaW5nIGRvdHMgb24gdG9wIG9mIGEgZ3JheXNj
YWxlIHZlcnNpb24gb2YgdGhlIGltYWdlLgorICAgIC8vIEZvciB0aGUgaW50ZXJpb3IgcG9pbnRz
LCBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbHVtaW5hbmNlIGFtb25nIHRoZSBzYW1wbGUg
cG9pbnQKKyAgICAvLyBhbmQgaXRzIHN1cnJvdW5kcyBwb2ludHMsIHNjYWxlZCBieSB0cmFuc3Bh
cmVuY3kuCisgICAgY29uc3QgdW5zaWduZWQgc2FtcGxlUm93cyA9IDc7CisgICAgY29uc3QgdW5z
aWduZWQgc2FtcGxlQ29scyA9IDc7CisgICAgLy8gRklYTUU6IFJlZmluZSB0aGUgcHJvcGVyIG51
bWJlciBvZiBzYW1wbGVzLCBhbmQgYWNjb21tb2RhdGUgZGlmZmVyZW50IGFzcGVjdCByYXRpb3Mu
CisgICAgaWYgKHdpZHRoIDwgc2FtcGxlQ29scyB8fCBoZWlnaHQgPCBzYW1wbGVSb3dzKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgbGFzdCByb3cvY29s
dW1uIGxhbmQgb24gdGhlIGltYWdlIHBlcmltZXRlci4KKyAgICBjb25zdCBmbG9hdCBzdHJpZGVX
aWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0Pih3aWR0aCAtIDEpIC8gKHNhbXBsZUNvbHMgLSAxKTsK
KyAgICBjb25zdCBmbG9hdCBzdHJpZGVIZWlnaHQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaGVpZ2h0
IC0gMSkgLyAoc2FtcGxlUm93cyAtIDEpOworICAgIGZsb2F0IHNhbXBsZXNbc2FtcGxlUm93c11b
c2FtcGxlQ29sc107CisKKyAgICAvLyBGaW5kIHRoZSBsdW1pbmFuY2Ugb2YgdGhlIHNhbXBsZSBw
b2ludHMuCisgICAgZmxvYXQgeSA9IDA7CisgICAgY29uc3QgVUludDgqIHJvdyA9IGRhdGE7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNhbXBsZVJvd3M7ICsraSkgeworICAgICAgICBm
bG9hdCB4ID0gMDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IHNhbXBsZUNvbHM7
ICsraikgeworICAgICAgICAgICAgY29uc3QgVUludDgqIHAwID0gcm93ICsgKHN0YXRpY19jYXN0
PGludD4oeCArIC41KSkgKiA0OworICAgICAgICAgICAgLy8gUiBHIEIgQQorICAgICAgICAgICAg
c2FtcGxlc1tpXVtqXSA9ICgwLjIxMjUgKiAqcDAgKyAwLjcxNTQgKiAqKHAwKzEpICsgMC4wNzIx
ICogKihwMCsyKSkgKiAqKHAwKzMpIC8gMjU1OworICAgICAgICAgICAgeCArPSBzdHJpZGVXaWR0
aDsKKyAgICAgICAgfQorICAgICAgICB5ICs9IHN0cmlkZUhlaWdodDsKKyAgICAgICAgcm93ID0g
ZGF0YSArIChzdGF0aWNfY2FzdDxpbnQ+KHkgKyAuNSkpICogYnl0ZXNQZXJSb3c7CisgICAgfQor
CisgICAgLy8gRGV0ZXJtaW5lIHRoZSBpbWFnZSBzY29yZS4KKyAgICBmbG9hdCBhY2N1bVNjb3Jl
ID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgc2FtcGxlUm93cyAtIDE7ICsraSkg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAxOyBqIDwgc2FtcGxlQ29scyAtIDE7ICsraikg
eworICAgICAgICAgICAgZmxvYXQgZGlmZiA9IHNhbXBsZXNbaSAtIDFdW2pdICsgc2FtcGxlc1tp
ICsgMV1bal0gKyBzYW1wbGVzW2ldW2ogLSAxXSArIHNhbXBsZXNbaV1baiArIDFdIC0gNCAqIHNh
bXBsZXNbaV1bal07CisgICAgICAgICAgICBhY2N1bVNjb3JlICs9IGRpZmYgKiBkaWZmOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gVGhlIHNjb3JlIGZvciBhIGdpdmVuIHNhbXBsZSBjYW4g
YmUgd2l0aGluIHRoZSByYW5nZSBvZiAwIGFuZCAyNTVeMi4KKyAgICByZXR1cm4gYWNjdW1TY29y
ZSA8IDI1MDAgKiAoc2FtcGxlUm93cyAtIDIpICogKHNhbXBsZUNvbHMgLSAyKTsKK30KKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IDZjNzRmNDYzM2ZiYjViMzdhYTE2NWY4ODk5NzhkMjJlMTU4ZjY1YzcuLjdhZGE5YTQxZmYz
ZjliMWM4NWMwMTVkMGY1YWE0NWMzZmU2MjJkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTcwLDYgKzcwLDcgQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgc2ltdWxhdGVkIG1vdXNlIGNsaWNrIGRlbGF5IGluIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIHNob3VsZCBnZW5lcmFsbHkgYmUgdGhlIHNhbWUgb3Ig
c2hvcnRlciB0aGFuIHRoaXMgZGVsYXkuCiBzdGF0aWMgY29uc3QgZG91YmxlIHBsdWdpblNuYXBz
aG90VGltZXJEZWxheSA9IDEuMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtU25hcHNo
b3RSZXRyaWVzID0gNTsKIAogY2xhc3MgUGx1Z2luVmlldzo6VVJMUmVxdWVzdCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFVSTFJlcXVlc3Q+IHsKIHB1YmxpYzoKQEAgLTI3Miw2ICsyNzMsNyBAQCBQbHVn
aW5WaWV3OjpQbHVnaW5WaWV3KFBhc3NSZWZQdHI8SFRNTFBsdWdJbkVsZW1lbnQ+IHBsdWdpbkVs
ZW1lbnQsIFBhc3NSZWZQdHI8UAogI2VuZGlmCiAgICAgLCBtX21hbnVhbFN0cmVhbVN0YXRlKFN0
cmVhbVN0YXRlSW5pdGlhbCkKICAgICAsIG1fcGx1Z2luU25hcHNob3RUaW1lcih0aGlzLCAmUGx1
Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkLCBwbHVnaW5TbmFwc2hvdFRpbWVyRGVs
YXkpCisgICAgLCBtX2NvdW50U25hcHNob3RSZXRyaWVzKDApCiAgICAgLCBtX3BhZ2VTY2FsZUZh
Y3RvcigxKQogewogICAgIG1fd2ViUGFnZS0+YWRkUGx1Z2luVmlldyh0aGlzKTsKQEAgLTE0OTQs
OSArMTQ5Niw4IEBAIHZvaWQgUGx1Z2luVmlldzo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlCiB9CiAjZW5kaWYKIAotdm9pZCBQ
bHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1l
cjxQbHVnaW5WaWV3PiogdGltZXIpCit2b2lkIFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGlt
ZXJGaXJlZChEZWZlcnJhYmxlT25lU2hvdFRpbWVyPFBsdWdpblZpZXc+KikKIHsKLSAgICBBU1NF
UlRfVU5VU0VEKHRpbWVyLCB0aW1lciA9PSAmbV9wbHVnaW5TbmFwc2hvdFRpbWVyKTsKICAgICBB
U1NFUlQobV9wbHVnaW4pOwogCiAgICAgLy8gU25hcHNob3QgbWlnaHQgYmUgMCBpZiBwbHVnaW4g
c2l6ZSBpcyAweDAuCkBAIC0xNTA0LDcgKzE1MDUsMTQgQEAgdm9pZCBQbHVnaW5WaWV3OjpwbHVn
aW5TbmFwc2hvdFRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1lcjxQbHVnaW5WaWV3Piog
dGkKICAgICBSZWZQdHI8SW1hZ2U+IHNuYXBzaG90SW1hZ2U7CiAgICAgaWYgKHNuYXBzaG90KQog
ICAgICAgICBzbmFwc2hvdEltYWdlID0gc25hcHNob3QtPmNyZWF0ZUltYWdlKCk7Ci0gICAgbV9w
bHVnaW5FbGVtZW50LT51cGRhdGVTbmFwc2hvdChzbmFwc2hvdEltYWdlLnJlbGVhc2UoKSk7Cisg
ICAgbV9wbHVnaW5FbGVtZW50LT51cGRhdGVTbmFwc2hvdChzbmFwc2hvdEltYWdlLmdldCgpKTsK
KworICAgIGlmIChzbmFwc2hvdEltYWdlICYmIHNuYXBzaG90SW1hZ2UtPmlzQWxtb3N0U29saWRD
b2xvcigpICYmIG1fY291bnRTbmFwc2hvdFJldHJpZXMgPCBtYXhpbXVtU25hcHNob3RSZXRyaWVz
KSB7CisgICAgICAgICsrbV9jb3VudFNuYXBzaG90UmV0cmllczsKKyAgICAgICAgbV9wbHVnaW5T
bmFwc2hvdFRpbWVyLnJlc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGRl
c3Ryb3lQbHVnaW5BbmRSZXNldCgpOwogICAgIG1fcGx1Z2luID0gMDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGNkOWUzNWI5NTQy
ZWFjZGIwZmIwYjMyZjEyY2M4ODBiOTc2YjBjOTkuLjY0MjZkY2MwYmM3MGRhODRkNzc5ODI5YjM3
MzcxYTgyMDI5YjFiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuaApAQCAtMjUwLDYgKzI1MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNo
YXJlYWJsZUJpdG1hcD4gbV90cmFuc2llbnRQYWludGluZ1NuYXBzaG90OwogICAgIC8vIFRoaXMg
dGltZXIgaXMgdXNlZCB3aGVuIHBsdWdpbiBzbmFwc2hvdHRpbmcgaXMgZW5hYmxlZCwgdG8gY2Fw
dHVyZSBhIHBsdWdpbiBwbGFjZWhvbGRlci4KICAgICBXZWJDb3JlOjpEZWZlcnJhYmxlT25lU2hv
dFRpbWVyPFBsdWdpblZpZXc+IG1fcGx1Z2luU25hcHNob3RUaW1lcjsKKyAgICB1bnNpZ25lZCBt
X2NvdW50U25hcHNob3RSZXRyaWVzOwogCiAgICAgZG91YmxlIG1fcGFnZVNjYWxlRmFjdG9yOwog
fTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178036</attachid>
            <date>2012-12-06 10:52:08 -0800</date>
            <delta_ts>2012-12-06 14:48:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104174-20121206104933.patch</filename>
            <type>text/plain</type>
            <size>11047</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlmMGRhMTRhMTI1Y2Jk
YTc5MGE1ZjhmYjczMDU1ZWRiYmNhYWQ3Yi4uNjI0MjAxNmZkZjE0ZjhkZTBkNDFjZWYxNDk1YWMw
OTQ5OWVhYmU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTA2ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXRyeSBzbmFwc2hvdHMgaWYgdGhl
eSBhcmUgdG9vIGVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDQxNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODIwMTQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9ydCBCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKCkuCisgICAgICAgICog
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KTogQ2hhbmdlIHRoZSBzdGF0ZSBtYWNo
aW5lIGNoZWNrIHNvIHRoYXQgZXZlbgorICAgICAgICB3aGVuIHRoZSBwbHVnLWluIGlzIGRpc3Bs
YXlpbmcgYSBzbmFwc2hvdCwgdGhlIHNuYXBzaG90IGNhbiBzdGlsbCBiZSB1cGRhdGVkLiBUaGlz
IGFsbG93cyBmb3IgdGhlCisgICAgICAgIHJldHJpZXMgdG8gYmUgZHJhd24uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6Omlz
QWxtb3N0U29saWRDb2xvcik6IEFkZCBuZXcgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYg
dGhlIGltYWdlIGlzIG1vc3RseSBlbXB0eS4KKyAgICAgICAgQnkgZGVmYXVsdCBhbGwgaW1hZ2Vz
IGFyZSBjb25zaWRlcmVkIHRvIGhhdmUgbWVhbmluZ2Z1bCBjb250ZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDogT3ZlcnJpZGUgaXNBbG1vc3RTb2xpZENv
bG9yKCkgZm9yIE1hYy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW06CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6aXNBbG1vc3RTb2xpZENvbG9yKTog
RmlndXJlIG91dCBpZiB0aGUgaW1hZ2UgaXMgYWxtb3N0IGEgc29saWQgY29sb3IgYnkgb3Zlcmxh
eWluZworICAgICAgICBhIGdyaWQgb2YgZG90cywgYW5kIGNhbGN1bGF0ZSB0aGUgZGlmZmVyZW5j
ZXMgYW1vbmcgdGhlbS4gSWYgdGhlIGF2ZXJhZ2UgY29sb3IgZGlmZmVyZW5jZSBpcyBncmVhdGVy
IHRoYW4KKyAgICAgICAgYSB0aHJlc2hvbGQsIHdlIGNvbnNpZGVyIGl0IHRvIGhhdmUgbWVhbmlu
Z2Z1bCBjb250ZW50LiBGb3Igbm93IHdlIGV4cGVjdCBhIG1pbmltdW0gc2l6ZSBhbmQgYSBzcGVj
aWZpYworICAgICAgICBiaXRtYXAgaW1hZ2UgZm9ybWF0LCBvdGhlcndpc2Ugd2UgcmV0dXJuIGVh
cmx5LgorCiAyMDEyLTEyLTA2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVzZSBvd25lck5vZGUoKSBpbnN0ZWFkIG9mIGJhc2UoKSBpbiBIVE1MQ29sbGVjdGlv
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGQxZDJjYjliMDhkZGRiNjg4NTlhZTA1ZmMwOTg3NDcxNmE5MjdmOTAu
LjU4YzIzYTgyMTkyNWM1ZTQxYTY3Yjk4MzcwNzExNDgwZjlmNzlkOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOSBAQAorMjAxMi0xMi0wNSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV0cnkgc25hcHNob3RzIGlmIHRoZXkgYXJlIHRvbyBlbXB0eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MTc0CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMjgyMDE0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6IEFkZCBh
IG5ldyB2YXJpYWJsZSB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgdGltZXMgd2Un
dmUKKyAgICAgICAgcmV0cmllZCB0byBjb21lIHVwIHdpdGggYSBzbmFwc2hvdC4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6IEluaXRpYWxpemUgdGhlIGNvdW50IHRvIDAuCisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCk6IElmIHdl
IGhhdmUgYSBzbmFwc2hvdCBpbWFnZSB0byBsb29rIGF0LCBhbmQgaWYgaXQgaXMKKyAgICAgICAg
ZXZhbHVhdGVkIHRvIGJlIHRvbyBlbXB0eSwgdGhlbiB0cnkgYWdhaW4uCisKIDIwMTItMTItMDYg
IEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XVtX
SzJdIEZpeCBRV2ViS2l0VGVzdCdzIG5vdGlmaWNhdGlvbiBvZiBkZXZpY2UgcGl4ZWwgcmF0aW8g
Y2hhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGJiN2NjYjc3ZDZhY2E5YzMwMzRkNDRmNGYy
NzI2ZWQ0MmZjMGVlYTMuLjM4OTFlOTJjZDNmNTQyMjBmMDI2YWI0NjBiMmIxNjJhNTUzNTIwMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xNjE3LDYgKzE2MTcsNyBAQCBfd2tTaWduYWxDRlJl
YWRTdHJlYW1IYXNCeXRlcwogLm9iamNfY2xhc3NfbmFtZV9XZWJXaW5kb3dGYWRlQW5pbWF0aW9u
CiAub2JqY19jbGFzc19uYW1lX1dlYldpbmRvd1NjYWxlQW5pbWF0aW9uCiBfX1pON1dlYkNvcmUx
MGhhbmRDdXJzb3JFdgorX19aTjdXZWJDb3JlMTFCaXRtYXBJbWFnZTE4aXNBbG1vc3RTb2xpZENv
bG9yRXYKIF9fWk43V2ViQ29yZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgogX19aTjdXZWJDb3JlMTFn
bG9iYWxQb2ludEVSSzhfTlNQb2ludFA4TlNXaW5kb3cKIF9fWk43V2ViQ29yZTExdG9Vc2VyU3Bh
Y2VFUks3X05TUmVjdFA4TlNXaW5kb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IDdhNDBhZGQ5ODEyZjBkYTEzMjUwYThkOGEzYjhmNTk0
NTdkYjAwYzEuLjU5MDRjYzg1YmI5M2JjZGIzYmVkZjAxNTM5MzVkMjU2MTFiMjQ1M2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjUz
LDcgKzI1Myw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlV2lkZ2V0Q2Fs
bGJhY2soTm9kZSogbiwgdW5zaWduZWQpCiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiB7Ci0gICAgaWYgKGRpc3Bs
YXlTdGF0ZSgpID4gV2FpdGluZ0ZvclNuYXBzaG90IHx8ICFyZW5kZXJlcigpLT5pc1NuYXBzaG90
dGVkUGx1Z0luKCkpCisgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID4gRGlzcGxheWluZ1NuYXBzaG90
IHx8ICFyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIoKSktPnVwZGF0ZVNuYXBz
aG90KGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJ
bWFnZS5oCmluZGV4IGE5ZjY0OWE2MDZmZGFjNmJhOGMyNWEzZGQzMzM2NmQ2MTMwZjgxMzguLmQy
NWZmNDRmMGI1YmJhNTZiNmFhYTRjNGNjODllM2YyYjAyZjA0NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTQzLDYgKzE0Myw4IEBA
IHB1YmxpYzoKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3JtYXRzLgogICAg
IHZpcnR1YWwgTlNJbWFnZSogZ2V0TlNJbWFnZSgpOwogICAgIHZpcnR1YWwgQ0ZEYXRhUmVmIGdl
dFRJRkZSZXByZXNlbnRhdGlvbigpOworCisgICAgdmlydHVhbCBib29sIGlzQWxtb3N0U29saWRD
b2xvcigpIE9WRVJSSURFOwogI2VuZGlmCiAgICAgCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKaW5kZXggZWFiMTNiYzVmOWNkNzJhYzBmMDgwMjdl
ZWMzMmFlMjQ0MTM3N2NlYS4uZGRlZjQ1MTYxNWNlN2YxODNiZTA5OWNkOTUxNzc1MDIxMzI0MDUz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCkBAIC0xMzgsMTEg
KzEzOCwxNCBAQCBwdWJsaWM6CiAgICAgZW51bSBUaWxlUnVsZSB7IFN0cmV0Y2hUaWxlLCBSb3Vu
ZFRpbGUsIFNwYWNlVGlsZSwgUmVwZWF0VGlsZSB9OwogCiAgICAgdmlydHVhbCBOYXRpdmVJbWFn
ZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIDA7IH0KKworICAgIHZp
cnR1YWwgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBBY2Nlc3NvcnMgZm9yIG5hdGl2ZSBpbWFnZSBmb3Jt
YXRzLgogICAgIHZpcnR1YWwgTlNJbWFnZSogZ2V0TlNJbWFnZSgpIHsgcmV0dXJuIDA7IH0KICAg
ICB2aXJ0dWFsIENGRGF0YVJlZiBnZXRUSUZGUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiAwOyB9
CisKICNlbmRpZgogCiAjaWYgVVNFKENHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0ltYWdlTWFjLm1tCmluZGV4IDA5MWYyZGEyM2JjNDAyMWFhMjEzNWM0YWRm
MDJiMzBmZTRkMzIxNzYuLjMwNjEwN2IwZTNmOGU3MzJlYzMyMDUxYTNiY2VkMGFkOGYzNDU0YTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9JbWFnZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvSW1hZ2VNYWMu
bW0KQEAgLTExNiw0ICsxMTYsNjcgQEAgTlNJbWFnZSogQml0bWFwSW1hZ2U6OmdldE5TSW1hZ2Uo
KQogICAgIHJldHVybiBtX25zSW1hZ2UuZ2V0KCk7CiB9CiAKK2Jvb2wgQml0bWFwSW1hZ2U6Omlz
QWxtb3N0U29saWRDb2xvcigpCit7CisgICAgQVNTRVJUKGZyYW1lQ291bnQoKSA9PSAxKTsKKwor
ICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBmcmFtZUF0SW5kZXgoMCk7CisgICAgQVNTRVJUKENHSW1h
Z2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKKworICAgIENHQml0bWFwSW5mbyBp
bWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEoaW1hZ2VJ
bmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBrQ0dCaXRt
YXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhlciBwaXhl
bCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChpbWFn
ZSk7CisgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOworICAgIHNp
emVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5
RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOworICAgIGNvbnN0IFVJbnQ4KiBk
YXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7CisKKyAgICAvLyBPdmVybGF5
IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9uIG9m
IHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2FsY3VsYXRlIHRo
ZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50CisgICAgLy8g
YW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5LgorICAgIGNv
bnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBsZUNv
bHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1iZXIgb2Ygc2FtcGxl
cywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgorICAgIGlmICh3aWR0
aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVtbiBsYW5kIG9uIHRo
ZSBpbWFnZSBwZXJpbWV0ZXIuCisgICAgY29uc3QgZmxvYXQgc3RyaWRlV2lkdGggPSBzdGF0aWNf
Y2FzdDxmbG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7CisgICAgY29uc3QgZmxv
YXQgc3RyaWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAtIDEpIC8gKHNhbXBs
ZVJvd3MgLSAxKTsKKyAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3NhbXBsZUNvbHNdOwor
CisgICAgLy8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBzYW1wbGUgcG9pbnRzLgorICAgIGZs
b2F0IHkgPSAwOworICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKKyAgICAgICAgZmxvYXQgeCA9IDA7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1wbGVDb2xzOyArK2opIHsKKyAgICAg
ICAgICAgIGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0aWNfY2FzdDxpbnQ+KHggKyAuNSkp
ICogNDsKKyAgICAgICAgICAgIC8vIFIgRyBCIEEKKyAgICAgICAgICAgIHNhbXBsZXNbaV1bal0g
PSAoMC4yMTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSArIDAuMDcyMSAqICoocDArMikpICog
KihwMCszKSAvIDI1NTsKKyAgICAgICAgICAgIHggKz0gc3RyaWRlV2lkdGg7CisgICAgICAgIH0K
KyAgICAgICAgeSArPSBzdHJpZGVIZWlnaHQ7CisgICAgICAgIHJvdyA9IGRhdGEgKyAoc3RhdGlj
X2Nhc3Q8aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93OworICAgIH0KKworICAgIC8vIERldGVy
bWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAgZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAgICAg
IGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsgc2Ft
cGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pdOwor
ICAgICAgICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0aGUg
cmFuZ2Ugb2YgMCBhbmQgMjU1XjIuCisgICAgcmV0dXJuIGFjY3VtU2NvcmUgPCAyNTAwICogKHNh
bXBsZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA2Yzc0ZjQ2MzNm
YmI1YjM3YWExNjVmODg5OTc4ZDIyZTE1OGY2NWM3Li43YWRhOWE0MWZmM2Y5YjFjODVjMDE1ZDBm
NWFhNDVjM2ZlNjIyZDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC03MCw2ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
CiAvLyBUaGlzIHNpbXVsYXRlZCBtb3VzZSBjbGljayBkZWxheSBpbiBIVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcCBzaG91bGQgZ2VuZXJhbGx5IGJlIHRoZSBzYW1lIG9yIHNob3J0ZXIgdGhhbiB0
aGlzIGRlbGF5Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBwbHVnaW5TbmFwc2hvdFRpbWVyRGVsYXkg
PSAxLjE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bVNuYXBzaG90UmV0cmllcyA9IDU7
CiAKIGNsYXNzIFBsdWdpblZpZXc6OlVSTFJlcXVlc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxVUkxS
ZXF1ZXN0PiB7CiBwdWJsaWM6CkBAIC0yNzIsNiArMjczLDcgQEAgUGx1Z2luVmlldzo6UGx1Z2lu
VmlldyhQYXNzUmVmUHRyPEhUTUxQbHVnSW5FbGVtZW50PiBwbHVnaW5FbGVtZW50LCBQYXNzUmVm
UHRyPFAKICNlbmRpZgogICAgICwgbV9tYW51YWxTdHJlYW1TdGF0ZShTdHJlYW1TdGF0ZUluaXRp
YWwpCiAgICAgLCBtX3BsdWdpblNuYXBzaG90VGltZXIodGhpcywgJlBsdWdpblZpZXc6OnBsdWdp
blNuYXBzaG90VGltZXJGaXJlZCwgcGx1Z2luU25hcHNob3RUaW1lckRlbGF5KQorICAgICwgbV9j
b3VudFNuYXBzaG90UmV0cmllcygwKQogICAgICwgbV9wYWdlU2NhbGVGYWN0b3IoMSkKIHsKICAg
ICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7CkBAIC0xNDk0LDkgKzE0OTYsOCBAQCB2
b2lkIFBsdWdpblZpZXc6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWVSZQogfQogI2VuZGlmCiAKLXZvaWQgUGx1Z2luVmlldzo6cGx1
Z2luU25hcHNob3RUaW1lckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8UGx1Z2luVmlldz4q
IHRpbWVyKQordm9pZCBQbHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoRGVmZXJy
YWJsZU9uZVNob3RUaW1lcjxQbHVnaW5WaWV3PiopCiB7Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1l
ciwgdGltZXIgPT0gJm1fcGx1Z2luU25hcHNob3RUaW1lcik7CiAgICAgQVNTRVJUKG1fcGx1Z2lu
KTsKIAogICAgIC8vIFNuYXBzaG90IG1pZ2h0IGJlIDAgaWYgcGx1Z2luIHNpemUgaXMgMHgwLgpA
QCAtMTUwNCw3ICsxNTA1LDE0IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1l
ckZpcmVkKERlZmVycmFibGVPbmVTaG90VGltZXI8UGx1Z2luVmlldz4qIHRpCiAgICAgUmVmUHRy
PEltYWdlPiBzbmFwc2hvdEltYWdlOwogICAgIGlmIChzbmFwc2hvdCkKICAgICAgICAgc25hcHNo
b3RJbWFnZSA9IHNuYXBzaG90LT5jcmVhdGVJbWFnZSgpOwotICAgIG1fcGx1Z2luRWxlbWVudC0+
dXBkYXRlU25hcHNob3Qoc25hcHNob3RJbWFnZS5yZWxlYXNlKCkpOworICAgIG1fcGx1Z2luRWxl
bWVudC0+dXBkYXRlU25hcHNob3Qoc25hcHNob3RJbWFnZS5nZXQoKSk7CisKKyAgICBpZiAoc25h
cHNob3RJbWFnZSAmJiBzbmFwc2hvdEltYWdlLT5pc0FsbW9zdFNvbGlkQ29sb3IoKSAmJiBtX2Nv
dW50U25hcHNob3RSZXRyaWVzIDwgbWF4aW11bVNuYXBzaG90UmV0cmllcykgeworICAgICAgICAr
K21fY291bnRTbmFwc2hvdFJldHJpZXM7CisgICAgICAgIG1fcGx1Z2luU25hcHNob3RUaW1lci5y
ZXN0YXJ0KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBkZXN0cm95UGx1Z2luQW5k
UmVzZXQoKTsKICAgICBtX3BsdWdpbiA9IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCBjZDllMzViOTU0MmVhY2RiMGZiMGIzMmYx
MmNjODgwYjk3NmIwYzk5Li42NDI2ZGNjMGJjNzBkYTg0ZDc3OTgyOWIzNzM3MWE4MjAyOWIxYjE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
QEAgLTI1MCw2ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+
IG1fdHJhbnNpZW50UGFpbnRpbmdTbmFwc2hvdDsKICAgICAvLyBUaGlzIHRpbWVyIGlzIHVzZWQg
d2hlbiBwbHVnaW4gc25hcHNob3R0aW5nIGlzIGVuYWJsZWQsIHRvIGNhcHR1cmUgYSBwbHVnaW4g
cGxhY2Vob2xkZXIuCiAgICAgV2ViQ29yZTo6RGVmZXJyYWJsZU9uZVNob3RUaW1lcjxQbHVnaW5W
aWV3PiBtX3BsdWdpblNuYXBzaG90VGltZXI7CisgICAgdW5zaWduZWQgbV9jb3VudFNuYXBzaG90
UmV0cmllczsKIAogICAgIGRvdWJsZSBtX3BhZ2VTY2FsZUZhY3RvcjsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178086</attachid>
            <date>2012-12-06 14:48:16 -0800</date>
            <delta_ts>2012-12-06 15:46:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104174-20121206144540.patch</filename>
            <type>text/plain</type>
            <size>8639</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlmMGRhMTRhMTI1Y2Jk
YTc5MGE1ZjhmYjczMDU1ZWRiYmNhYWQ3Yi4uMjNhZGZjMDFmNjcxNDc4OTI4ZWI2ODZlN2M5NTM5
ZTgwZjdlOWM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTEyLTA2ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXRyeSBzbmFwc2hvdHMgaWYgdGhl
eSBhcmUgdG9vIGVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDQxNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODIwMTQ2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnVwZGF0ZVNuYXBzaG90KTogQ2hhbmdlIHRoZSBzdGF0ZSBtYWNoaW5lIGNoZWNrIHNv
IHRoYXQgZXZlbgorICAgICAgICB3aGVuIHRoZSBwbHVnLWluIGlzIGRpc3BsYXlpbmcgYSBzbmFw
c2hvdCwgdGhlIHNuYXBzaG90IGNhbiBzdGlsbCBiZSB1cGRhdGVkLiBUaGlzIGFsbG93cyBmb3Ig
dGhlCisgICAgICAgIHJldHJpZXMgdG8gYmUgZHJhd24uCisKIDIwMTItMTItMDYgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIG93bmVyTm9kZSgpIGluc3Rl
YWQgb2YgYmFzZSgpIGluIEhUTUxDb2xsZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDFkMmNiOWIwOGRk
ZGI2ODg1OWFlMDVmYzA5ODc0NzE2YTkyN2Y5MC4uZDA0OTJjMWE4NGRmNDViNDBmZGIwYjVmYmJm
YmMzZTM0ZWQyNmY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTEyLTA2ICBK
b24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXRyeSBzbmFwc2hvdHMgaWYg
dGhleSBhcmUgdG9vIGVtcHR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQxNzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODIwMTQ2PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaDogQWRkIGEgbmV3IHZhcmlhYmxlIHRoYXQga2VlcHMgdHJh
Y2sgb2YgdGhlIG51bWJlciBvZiB0aW1lcyB3ZSd2ZQorICAgICAgICByZXRyaWVkIHRvIGNvbWUg
dXAgd2l0aCBhIHNuYXBzaG90LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6UGx1Z2luVmlldyk6IEluaXRp
YWxpemUgdGhlIGNvdW50IHRvIDAuCisgICAgICAgIChXZWJLaXQ6OmlzQWxtb3N0U29saWRDb2xv
cik6IEZpZ3VyZSBvdXQgaWYgdGhlIGltYWdlIGlzIGFsbW9zdCBhIHNvbGlkIGNvbG9yIGJ5IG92
ZXJsYXlpbmcKKyAgICAgICAgYSBncmlkIG9mIGRvdHMsIGFuZCBjYWxjdWxhdGUgdGhlIGRpZmZl
cmVuY2VzIGFtb25nIHRoZW0uIElmIHRoZSBhdmVyYWdlIGNvbG9yIGRpZmZlcmVuY2UgaXMgZ3Jl
YXRlciB0aGFuCisgICAgICAgIGEgdGhyZXNob2xkLCB3ZSBjb25zaWRlciBpdCB0byBoYXZlIG1l
YW5pbmdmdWwgY29udGVudC4gRm9yIG5vdyB3ZSBleHBlY3QgYSBtaW5pbXVtIHNpemUgYW5kIGEg
c3BlY2lmaWMKKyAgICAgICAgYml0bWFwIGltYWdlIGZvcm1hdCwgb3RoZXJ3aXNlIHdlIHJldHVy
biBlYXJseS4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1l
ckZpcmVkKTogSWYgd2UgaGF2ZSBhIHNuYXBzaG90IGltYWdlIHRvIGxvb2sgYXQsIGFuZCBpZiBp
dCBpcworICAgICAgICBldmFsdWF0ZWQgdG8gYmUgdG9vIGVtcHR5LCB0aGVuIHRyeSBhZ2Fpbi4K
KwogMjAxMi0xMi0wNiAgQW5kcmFzIEJlY3NpICA8YW5kcmFzLmJlY3NpQGRpZ2lhLmNvbT4KIAog
ICAgICAgICBbUXRdW1dLMl0gRml4IFFXZWJLaXRUZXN0J3Mgbm90aWZpY2F0aW9uIG9mIGRldmlj
ZSBwaXhlbCByYXRpbyBjaGFuZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDdhNDBhZGQ5ODEyZjBkYTEzMjUwYThkOGEzYjhmNTk0NTdk
YjAwYzEuLjU5MDRjYzg1YmI5M2JjZGIzYmVkZjAxNTM5MzVkMjU2MTFiMjQ1M2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtMjUzLDcg
KzI1Myw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlV2lkZ2V0Q2FsbGJh
Y2soTm9kZSogbiwgdW5zaWduZWQpCiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBk
YXRlU25hcHNob3QoUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiB7Ci0gICAgaWYgKGRpc3BsYXlT
dGF0ZSgpID4gV2FpdGluZ0ZvclNuYXBzaG90IHx8ICFyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVk
UGx1Z0luKCkpCisgICAgaWYgKGRpc3BsYXlTdGF0ZSgpID4gRGlzcGxheWluZ1NuYXBzaG90IHx8
ICFyZW5kZXJlcigpLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVuZGVyZXIoKSktPnVwZGF0ZVNuYXBzaG90
KGltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCA2Yzc0ZjQ2MzNmYmI1YjM3YWExNjVmODg5OTc4ZDIyZTE1OGY2NWM3Li5m
MzIxMDRiNjQ3ZWY3ZWM3MjkxOTc2NmZiMTA0NjUwNGEzMzlhOTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1h
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29v
a2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CkBAIC03MCw2ICs3MSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBUaGlzIHNpbXVsYXRlZCBtb3VzZSBjbGljayBk
ZWxheSBpbiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBzaG91bGQgZ2VuZXJhbGx5IGJlIHRo
ZSBzYW1lIG9yIHNob3J0ZXIgdGhhbiB0aGlzIGRlbGF5Lgogc3RhdGljIGNvbnN0IGRvdWJsZSBw
bHVnaW5TbmFwc2hvdFRpbWVyRGVsYXkgPSAxLjE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4
aW11bVNuYXBzaG90UmV0cmllcyA9IDU7CiAKIGNsYXNzIFBsdWdpblZpZXc6OlVSTFJlcXVlc3Qg
OiBwdWJsaWMgUmVmQ291bnRlZDxVUkxSZXF1ZXN0PiB7CiBwdWJsaWM6CkBAIC0yNzIsNiArMjc0
LDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhQYXNzUmVmUHRyPEhUTUxQbHVnSW5FbGVtZW50
PiBwbHVnaW5FbGVtZW50LCBQYXNzUmVmUHRyPFAKICNlbmRpZgogICAgICwgbV9tYW51YWxTdHJl
YW1TdGF0ZShTdHJlYW1TdGF0ZUluaXRpYWwpCiAgICAgLCBtX3BsdWdpblNuYXBzaG90VGltZXIo
dGhpcywgJlBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZCwgcGx1Z2luU25hcHNo
b3RUaW1lckRlbGF5KQorICAgICwgbV9jb3VudFNuYXBzaG90UmV0cmllcygwKQogICAgICwgbV9w
YWdlU2NhbGVGYWN0b3IoMSkKIHsKICAgICBtX3dlYlBhZ2UtPmFkZFBsdWdpblZpZXcodGhpcyk7
CkBAIC0xNDk0LDkgKzE0OTcsNzEgQEAgdm9pZCBQbHVnaW5WaWV3Ojp3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmUKIH0KICNlbmRp
ZgogCi12b2lkIFBsdWdpblZpZXc6OnBsdWdpblNuYXBzaG90VGltZXJGaXJlZChEZWZlcnJhYmxl
T25lU2hvdFRpbWVyPFBsdWdpblZpZXc+KiB0aW1lcikKKyNpZiBQTEFURk9STShNQUMpCitzdGF0
aWMgYm9vbCBpc0FsbW9zdFNvbGlkQ29sb3IoQml0bWFwSW1hZ2UqIGJpdG1hcCkKK3sKKyAgICBD
R0ltYWdlUmVmIGltYWdlID0gYml0bWFwLT5nZXRDR0ltYWdlUmVmKCk7CisgICAgQVNTRVJUKENH
SW1hZ2VHZXRCaXRzUGVyQ29tcG9uZW50KGltYWdlKSA9PSA4KTsKKworICAgIENHQml0bWFwSW5m
byBpbWFnZUluZm8gPSBDR0ltYWdlR2V0Qml0bWFwSW5mbyhpbWFnZSk7CisgICAgaWYgKCEoaW1h
Z2VJbmZvICYga0NHQml0bWFwQnl0ZU9yZGVyMzJMaXR0bGUpIHx8IChpbWFnZUluZm8gJiBrQ0dC
aXRtYXBBbHBoYUluZm9NYXNrKSAhPSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlwbGllZEZpcnN0KSB7
CisgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBiZWluZyBhYmxlIHRvIGhhbmRsZSBvdGhlciBw
aXhlbCBmb3JtYXRzLgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemVfdCB3aWR0aCA9IENHSW1hZ2VHZXRXaWR0aChp
bWFnZSk7CisgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoaW1hZ2UpOworICAg
IHNpemVfdCBieXRlc1BlclJvdyA9IENHSW1hZ2VHZXRCeXRlc1BlclJvdyhpbWFnZSk7CisKKyAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJD
b3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3ZpZGVyKGltYWdlKSkpOworICAgIGNvbnN0IFVJbnQ4
KiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihwcm92aWRlci5nZXQoKSk7CisKKyAgICAvLyBPdmVy
bGF5IGEgZ3JpZCBvZiBzYW1wbGluZyBkb3RzIG9uIHRvcCBvZiBhIGdyYXlzY2FsZSB2ZXJzaW9u
IG9mIHRoZSBpbWFnZS4KKyAgICAvLyBGb3IgdGhlIGludGVyaW9yIHBvaW50cywgY2FsY3VsYXRl
IHRoZSBkaWZmZXJlbmNlIGluIGx1bWluYW5jZSBhbW9uZyB0aGUgc2FtcGxlIHBvaW50CisgICAg
Ly8gYW5kIGl0cyBzdXJyb3VuZHMgcG9pbnRzLCBzY2FsZWQgYnkgdHJhbnNwYXJlbmN5LgorICAg
IGNvbnN0IHVuc2lnbmVkIHNhbXBsZVJvd3MgPSA3OworICAgIGNvbnN0IHVuc2lnbmVkIHNhbXBs
ZUNvbHMgPSA3OworICAgIC8vIEZJWE1FOiBSZWZpbmUgdGhlIHByb3BlciBudW1iZXIgb2Ygc2Ft
cGxlcywgYW5kIGFjY29tbW9kYXRlIGRpZmZlcmVudCBhc3BlY3QgcmF0aW9zLgorICAgIGlmICh3
aWR0aCA8IHNhbXBsZUNvbHMgfHwgaGVpZ2h0IDwgc2FtcGxlUm93cykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGxhc3Qgcm93L2NvbHVtbiBsYW5kIG9u
IHRoZSBpbWFnZSBwZXJpbWV0ZXIuCisgICAgY29uc3QgZmxvYXQgc3RyaWRlV2lkdGggPSBzdGF0
aWNfY2FzdDxmbG9hdD4od2lkdGggLSAxKSAvIChzYW1wbGVDb2xzIC0gMSk7CisgICAgY29uc3Qg
ZmxvYXQgc3RyaWRlSGVpZ2h0ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGhlaWdodCAtIDEpIC8gKHNh
bXBsZVJvd3MgLSAxKTsKKyAgICBmbG9hdCBzYW1wbGVzW3NhbXBsZVJvd3NdW3NhbXBsZUNvbHNd
OworCisgICAgLy8gRmluZCB0aGUgbHVtaW5hbmNlIG9mIHRoZSBzYW1wbGUgcG9pbnRzLgorICAg
IGZsb2F0IHkgPSAwOworICAgIGNvbnN0IFVJbnQ4KiByb3cgPSBkYXRhOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzYW1wbGVSb3dzOyArK2kpIHsKKyAgICAgICAgZmxvYXQgeCA9IDA7
CisgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBzYW1wbGVDb2xzOyArK2opIHsKKyAg
ICAgICAgICAgIGNvbnN0IFVJbnQ4KiBwMCA9IHJvdyArIChzdGF0aWNfY2FzdDxpbnQ+KHggKyAu
NSkpICogNDsKKyAgICAgICAgICAgIC8vIFIgRyBCIEEKKyAgICAgICAgICAgIHNhbXBsZXNbaV1b
al0gPSAoMC4yMTI1ICogKnAwICsgMC43MTU0ICogKihwMCsxKSArIDAuMDcyMSAqICoocDArMikp
ICogKihwMCszKSAvIDI1NTsKKyAgICAgICAgICAgIHggKz0gc3RyaWRlV2lkdGg7CisgICAgICAg
IH0KKyAgICAgICAgeSArPSBzdHJpZGVIZWlnaHQ7CisgICAgICAgIHJvdyA9IGRhdGEgKyAoc3Rh
dGljX2Nhc3Q8aW50Pih5ICsgLjUpKSAqIGJ5dGVzUGVyUm93OworICAgIH0KKworICAgIC8vIERl
dGVybWluZSB0aGUgaW1hZ2Ugc2NvcmUuCisgICAgZmxvYXQgYWNjdW1TY29yZSA9IDA7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHNhbXBsZVJvd3MgLSAxOyArK2kpIHsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBqID0gMTsgaiA8IHNhbXBsZUNvbHMgLSAxOyArK2opIHsKKyAgICAgICAg
ICAgIGZsb2F0IGRpZmYgPSBzYW1wbGVzW2kgLSAxXVtqXSArIHNhbXBsZXNbaSArIDFdW2pdICsg
c2FtcGxlc1tpXVtqIC0gMV0gKyBzYW1wbGVzW2ldW2ogKyAxXSAtIDQgKiBzYW1wbGVzW2ldW2pd
OworICAgICAgICAgICAgYWNjdW1TY29yZSArPSBkaWZmICogZGlmZjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIFRoZSBzY29yZSBmb3IgYSBnaXZlbiBzYW1wbGUgY2FuIGJlIHdpdGhpbiB0
aGUgcmFuZ2Ugb2YgMCBhbmQgMjU1XjIuCisgICAgcmV0dXJuIGFjY3VtU2NvcmUgPCAyNTAwICog
KHNhbXBsZVJvd3MgLSAyKSAqIChzYW1wbGVDb2xzIC0gMik7Cit9CisjZW5kaWYKKwordm9pZCBQ
bHVnaW5WaWV3OjpwbHVnaW5TbmFwc2hvdFRpbWVyRmlyZWQoRGVmZXJyYWJsZU9uZVNob3RUaW1l
cjxQbHVnaW5WaWV3PiopCiB7Ci0gICAgQVNTRVJUX1VOVVNFRCh0aW1lciwgdGltZXIgPT0gJm1f
cGx1Z2luU25hcHNob3RUaW1lcik7CiAgICAgQVNTRVJUKG1fcGx1Z2luKTsKIAogICAgIC8vIFNu
YXBzaG90IG1pZ2h0IGJlIDAgaWYgcGx1Z2luIHNpemUgaXMgMHgwLgpAQCAtMTUwNCw3ICsxNTY5
LDE2IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luU25hcHNob3RUaW1lckZpcmVkKERlZmVycmFi
bGVPbmVTaG90VGltZXI8UGx1Z2luVmlldz4qIHRpCiAgICAgUmVmUHRyPEltYWdlPiBzbmFwc2hv
dEltYWdlOwogICAgIGlmIChzbmFwc2hvdCkKICAgICAgICAgc25hcHNob3RJbWFnZSA9IHNuYXBz
aG90LT5jcmVhdGVJbWFnZSgpOwotICAgIG1fcGx1Z2luRWxlbWVudC0+dXBkYXRlU25hcHNob3Qo
c25hcHNob3RJbWFnZS5yZWxlYXNlKCkpOworICAgIG1fcGx1Z2luRWxlbWVudC0+dXBkYXRlU25h
cHNob3Qoc25hcHNob3RJbWFnZS5nZXQoKSk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgaWYg
KHNuYXBzaG90SW1hZ2UgJiYgaXNBbG1vc3RTb2xpZENvbG9yKHN0YXRpY19jYXN0PEJpdG1hcElt
YWdlKj4oc25hcHNob3RJbWFnZS5nZXQoKSkpICYmIG1fY291bnRTbmFwc2hvdFJldHJpZXMgPCBt
YXhpbXVtU25hcHNob3RSZXRyaWVzKSB7CisgICAgICAgICsrbV9jb3VudFNuYXBzaG90UmV0cmll
czsKKyAgICAgICAgbV9wbHVnaW5TbmFwc2hvdFRpbWVyLnJlc3RhcnQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZGVzdHJveVBsdWdpbkFuZFJlc2V0KCk7CiAgICAg
bV9wbHVnaW4gPSAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKaW5kZXggY2Q5ZTM1Yjk1NDJlYWNkYjBmYjBiMzJmMTJjYzg4MGI5NzZiMGM5
OS4uNjQyNmRjYzBiYzcwZGE4NGQ3Nzk4MjliMzczNzFhODIwMjliMWIxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBAIC0yNTAsNiArMjUw
LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX3RyYW5zaWVudFBh
aW50aW5nU25hcHNob3Q7CiAgICAgLy8gVGhpcyB0aW1lciBpcyB1c2VkIHdoZW4gcGx1Z2luIHNu
YXBzaG90dGluZyBpcyBlbmFibGVkLCB0byBjYXB0dXJlIGEgcGx1Z2luIHBsYWNlaG9sZGVyLgog
ICAgIFdlYkNvcmU6OkRlZmVycmFibGVPbmVTaG90VGltZXI8UGx1Z2luVmlldz4gbV9wbHVnaW5T
bmFwc2hvdFRpbWVyOworICAgIHVuc2lnbmVkIG1fY291bnRTbmFwc2hvdFJldHJpZXM7CiAKICAg
ICBkb3VibGUgbV9wYWdlU2NhbGVGYWN0b3I7CiB9Owo=
</data>
<flag name="review"
          id="194480"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>