<?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>40380</bug_id>
          
          <creation_ts>2010-06-09 11:47:49 -0700</creation_ts>
          <short_desc>[Qt] When a layer is really opaque (ie has a background color that has 255 alpha) we should fill the layer with that color to tell Qt that the pixemap has no alpha.</short_desc>
          <delta_ts>2010-06-28 14:27:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>40629</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38744</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Magnuson">smagnuso</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235913</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-09 11:47:49 -0700</bug_when>
    <thetext>Blt&apos;ing a non-alpha pixmap is going to be much faster and can avoid a lot of tests for alpha. In my specific case my hardware doesn&apos;t do accelerated alpha scales which means scaling animations frame-rate drops considerably without being able to tell QGraphicsLayer not to have an alpha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235940</commentid>
    <comment_count>1</comment_count>
      <attachid>58276</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-09 12:38:05 -0700</bug_when>
    <thetext>Created attachment 58276
Adding support for setBackgroundColor/clearBackground color and using it in QGraphicsLayer to pre-fill the pixmap cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236590</commentid>
    <comment_count>2</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-06-10 17:07:11 -0700</bug_when>
    <thetext>This also means that we have to recache when the background-color changes; I think that&apos;s missing from the patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237016</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-11 13:58:16 -0700</bug_when>
    <thetext>I agree with you in principal - I can certainly toss out the cache if you&apos;d like. This sort of goes back to our discussion that I get setNeedsDisplay later anyway (just as we do for setContentsToImage, where we don&apos;t toss out the cache and we just get a setNeedsDisplay later). 

Do you want me to go ahead and do it for this case, or should I look into that bug as a whole class of bugs later?

As I mentioned to you before I&apos;d like to fix the setNeedsDisplay that we get, since when some things change (like zorder, opacity, etc) we don&apos;t need a setNeedsDisplay from WebKit as it causes us to throw away a perfectly valid cached pixmap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237311</commentid>
    <comment_count>4</comment_count>
      <attachid>58558</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-12 10:23:22 -0700</bug_when>
    <thetext>Created attachment 58558
Proposed patch with proper coding style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237557</commentid>
    <comment_count>5</comment_count>
      <attachid>58558</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-13 07:40:25 -0700</bug_when>
    <thetext>Comment on attachment 58558
Proposed patch with proper coding style

Can&apos;t we get a test case for this?

r- due to missing test case and because you should do the style clean up in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241512</commentid>
    <comment_count>6</comment_count>
      <attachid>59434</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-22 16:10:29 -0700</bug_when>
    <thetext>Created attachment 59434
Rediff against trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241577</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-22 18:11:31 -0700</bug_when>
    <thetext>So did you remove the style update as I requested? and put it into another patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241686</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-22 23:33:48 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; So did you remove the style update as I requested? and put it into another patch?

I had to redo the patches since I had done them against the qtwebkit2.0 branch accidentally. In so doing many of the style issues had since been fixed on trunk - in this case the style issues I had fixed were gone. In another couple of patches I remove all extraneous style fixes and I will submit a separate bug against those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243059</commentid>
    <comment_count>9</comment_count>
      <attachid>59434</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 10:01:27 -0700</bug_when>
    <thetext>Comment on attachment 59434
Rediff against trunk

Rejecting patch 59434 from commit-queue.

Failed to run &quot;[u&apos;git&apos;, u&apos;svn&apos;, u&apos;dcommit&apos;]&quot; exit_code: 1
Last 500 characters of output:
runk ...
	M	WebCore/ChangeLog
	M	WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
	M	WebCore/rendering/RenderLayerBacking.cpp
A repository hook failed: MERGE request failed on &apos;/repository/webkit/trunk&apos;: Commit blocked by pre-commit hook (exit code 1) with output:
svnlook: Can&apos;t write to stream: Broken pipe

    The following ChangeLog files contain OOPS:

        trunk/WebCore/ChangeLog

    Please don&apos;t ever say &quot;OOPS&quot; in a ChangeLog file.
 at /usr/local/git/libexec/git-core/git-svn line 570


Full output: http://webkit-commit-queue.appspot.com/results/3277789</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243062</commentid>
    <comment_count>10</comment_count>
      <attachid>59777</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-25 10:11:54 -0700</bug_when>
    <thetext>Created attachment 59777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243085</commentid>
    <comment_count>11</comment_count>
      <attachid>59777</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-25 11:15:53 -0700</bug_when>
    <thetext>Comment on attachment 59777
Patch

Forwarding previous R+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243335</commentid>
    <comment_count>12</comment_count>
      <attachid>59777</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 23:14:18 -0700</bug_when>
    <thetext>Comment on attachment 59777
Patch

Rejecting patch 59777 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Adam Barth&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Parsed 3 diffs from patch file(s).
patching file WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file WebCore/platform/graphics/qt/GraphicsLayerQt.cpp
Hunk #1 FAILED at 345.
Hunk #2 FAILED at 356.
Hunk #3 FAILED at 364.
Hunk #4 succeeded at 566 (offset 80 lines).
Hunk #5 succeeded at 578 (offset 81 lines).
3 out of 5 hunks FAILED -- saving rejects to file WebCore/platform/graphics/qt/GraphicsLayerQt.cpp.rej
patching file WebCore/rendering/RenderLayerBacking.cpp

Full output: http://webkit-commit-queue.appspot.com/results/3333773</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243869</commentid>
    <comment_count>13</comment_count>
      <attachid>59932</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-28 13:33:41 -0700</bug_when>
    <thetext>Created attachment 59932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243872</commentid>
    <comment_count>14</comment_count>
      <attachid>59932</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-06-28 13:38:18 -0700</bug_when>
    <thetext>Comment on attachment 59932
Patch

WebCore/ChangeLog:7
 +          that the pixemap has no alpha.
pixmap :-)

Looks fine to me. No&apos;am?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243875</commentid>
    <comment_count>15</comment_count>
      <attachid>59933</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-28 13:41:52 -0700</bug_when>
    <thetext>Created attachment 59933
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243878</commentid>
    <comment_count>16</comment_count>
      <attachid>59933</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-28 13:49:12 -0700</bug_when>
    <thetext>Comment on attachment 59933
Patch

&gt; +    if (rendererHasBackground()) {
&gt; +        const Color &amp;bgColor = rendererBackgroundColor();
&gt; +        m_graphicsLayer-&gt;setBackgroundColor(bgColor);
&gt; +    } else
&gt; +        m_graphicsLayer-&gt;clearBackgroundColor();

You can&apos;t do this. GraphicsLayers are not always the same size as their elements; in many cases, they are larger (e.g. try one with a box-shadow, or a abs. pos. child).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243893</commentid>
    <comment_count>17</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-28 14:15:26 -0700</bug_when>
    <thetext>I think you&apos;re really trying to fix bug 40629.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243904</commentid>
    <comment_count>18</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-06-28 14:26:55 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 40629 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58276</attachid>
            <date>2010-06-09 12:38:05 -0700</date>
            <delta_ts>2010-06-12 10:23:22 -0700</delta_ts>
            <desc>Adding support for setBackgroundColor/clearBackground color and using it in QGraphicsLayer to pre-fill the pixmap cache.</desc>
            <filename>0005-adding-in-the-background-stuff.patch</filename>
            <type>text/plain</type>
            <size>25326</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">RnJvbSA4ZDdmZDBlNDBjYjM4NmU0OTExY2RmMTk4ZTMzMTk3M2ZmYmJkZmJiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBzbWFnbnVzb24gPHNtYWdudXNvQGdtYWlsLmNvbT4KRGF0ZTog
VHVlLCA4IEp1biAyMDEwIDEyOjA2OjM0IC0wNzAwClN1YmplY3Q6IFtQQVRDSCA1LzhdIGFkZGlu
ZyBpbiB0aGUgYmFja2dyb3VuZCBzdHVmZgoKY2hhbmdlbG9nIGZvciBmOWFkNzAyZTZlNzk1ZjJl
NmFkZTMwNzkxYzY2NGFjNWY2ODhmYTNlCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAzNyArKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcCB8ICAgMjMgKysrLS0KIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgICAgICAgICB8ICAxMjggKysrKysrKysrKystLS0t
LS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDExOSBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDYyZTk3ODUuLjE5N2YwOWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsNDMgQEAKIAogICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KIAorCVtRdF0gV2hlbiBhIGxheWVyIGlzIHJlYWxseSBvcGFxdWUg
KGllIGhhcyBhIGJhY2tncm91bmQgY29sb3IgdGhhdAorCWhhcyAyNTUgYWxwaGEpIHdlIHNob3Vs
ZCBmaWxsIHRoZSBsYXllciB3aXRoIHRoYXQgY29sb3IgdG8gdGVsbCBRdAorCXRoYXQgdGhlIHBp
eGVtYXAgaGFzIG5vIGFscGhhLgorCWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00MDM4MAorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IGZvciBzZXRCYWNrZ3JvdW5kQ29s
b3IvY2xlYXJCYWNrZ3JvdW5kIGNvbG9yIGFuZAorCXVzaW5nIGl0IGluIFFHcmFwaGljc0xheWVy
IHRvIHByZS1maWxsIHRoZSBwaXhtYXAgY2FjaGUuCisJCisJTm8gbmV3IHRlc3RzLiAoT09QUyEp
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1wbDo6cmVjYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBsOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppczNEQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUxheWVy
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
QWZ0ZXJMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNsaXBwaW5nTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcG9zaXRpbmdPcGFjaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJIYXNCYWNrZ3JvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJD
b21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6
aGFzTm9uQ29tcG9zaXRpbmdDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6cmVuZGVyZXJDb250ZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCisyMDEwLTA2LTA5ICBT
YW0gTWFnbnVzb24gIDxzbWFnbnVzb25AbmV0ZmxpeC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgW1F0XSBXaGVuIGFueSBnZW9tZXRyeSBjaGFu
Z2UgaGFwcGVucyB0byBhIG5vZGUgaXQgd2lsbCByZXNpemUgdGhlCiAJYmFja2luZyBjYWNoZQog
CWh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3OApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCmluZGV4IDk3OTUx
OTguLjgxYmMxOTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzTGF5ZXJRdC5jcHAKQEAgLTMzMiw2ICszMzIsOSBAQCBRUGl4bWFwIEdyYXBoaWNzTGF5ZXJR
dEltcGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lvbiYgcmVnaW9uVG9VcGRhdGUpCiAKIAkJLy8gV2Ug
bWlnaHQgYmUgZHJhd2luZyBpbnRvIGFuIGV4aXN0aW5nIGNhY2hlLgogCQlib29sIGVyYXNlZCA9
IGZhbHNlOworCQlRQ29sb3IgYmFja2dyb3VuZCA9IG1fY3VycmVudENvbnRlbnQuYmFja2dyb3Vu
ZENvbG9yOworCQlpZiAoIWJhY2tncm91bmQuaXNWYWxpZCgpKQorCQkJYmFja2dyb3VuZCA9IFF0
Ojp0cmFuc3BhcmVudDsKIAogCQlpZiAocGl4bWFwLmlzTnVsbCgpIHx8IG1fc2l6ZSAhPSBtX2Jh
Y2tpbmdTdG9yZS5zaXplICkgewogI2lmZGVmIE5GX0RFQlVHX1JFQ0FDSEUKQEAgLTM0Nyw3ICsz
NTAsNyBAQCBRUGl4bWFwIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lv
biYgcmVnaW9uVG9VcGRhdGUpCiAJCQkJcURlYnVnKCkgPDwgIkNhY2hlR3JvdyIgPDwgdGhpcyA8
PCBtX3NpemU7CiAjZW5kaWYKIAkJCQlwaXhtYXAgPSBRUGl4bWFwKG1fc2l6ZS50b1NpemUoKSk7
Ci0JCQkJcGl4bWFwLmZpbGwoIFF0Ojp0cmFuc3BhcmVudCApOworCQkJCXBpeG1hcC5maWxsKCBi
YWNrZ3JvdW5kICk7CiAJCQkJbmV3UmVnaW9uID0gUVJlZ2lvbigwLDAsbV9zaXplLndpZHRoKCks
IG1fc2l6ZS5oZWlnaHQoKSk7CiAJCQl9CiAKQEAgLTM3NSw3ICszNzgsNyBAQCBRUGl4bWFwIEdy
YXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lvbiYgcmVnaW9uVG9VcGRhdGUp
CiAJCQkJcURlYnVnKCkgPDwgIkNhY2hlRXJhc2UiIDw8IHRoaXMgPDwgbV9zaXplIDw8IGJhY2tn
cm91bmQ7CiAjZW5kaWYKIAkJCQllcmFzZWQgPSB0cnVlOwotCQkJCXBpeG1hcC5maWxsKCBRdDo6
dHJhbnNwYXJlbnQgKTsKKwkJCQlwaXhtYXAuZmlsbCggYmFja2dyb3VuZCApOwogCQkJfQogCQl9
CiAJCXJlZ2lvbiAmPSBRUmVnaW9uKCAwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdo
dCgpICk7CkBAIC0zODcsNyArMzkwLDcgQEAgUVBpeG1hcCBHcmFwaGljc0xheWVyUXRJbXBsOjpy
ZWNhY2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lvblRvVXBkYXRlKQogCQkJKytyZWNhY2hlX2NudDsK
IAogI2lmZGVmIE5GX0RFQlVHX0NBQ0hFRFVNUAotCQkJcURlYnVnKCkgPDwgIioqKiogQ0FDSEVE
VU1QIiA8PCByZWNhY2hlX2NudCA8PCB0aGlzIDw8IG1fbGF5ZXIgPDwgcmVnaW9uIDw8IG1fc2l6
ZTsKKwkJCXFEZWJ1ZygpIDw8ICIqKioqIENBQ0hFRFVNUCIgPDwgcmVjYWNoZV9jbnQgPDwgdGhp
cyA8PCBtX2xheWVyIDw8IGJhY2tncm91bmQgPDwgcmVnaW9uIDw8IG1fc2l6ZTsKIAkJCXBpeG1h
cC5zYXZlKFFTdHJpbmcoKS5zcHJpbnRmKCIvdG1wLyUwNWRfQS5wbmciLCByZWNhY2hlX2NudCks
ICJQTkciKTsKICNlbmRpZgogCkBAIC0zOTcsOCArNDAwLDExIEBAIFFQaXhtYXAgR3JhcGhpY3NM
YXllclF0SW1wbDo6cmVjYWNoZShjb25zdCBRUmVnaW9uJiByZWdpb25Ub1VwZGF0ZSkKIAkJCXBh
aW50ZXIuc2V0Q2xpcFJlZ2lvbiggcmVnaW9uICk7CiAKIAkJCWlmKCAhZXJhc2VkICkgeyAvLyBF
cmFzZSB0aGUgYXJlYSBpbiBjYWNoZSB0aGF0IHdlJ3JlIGRyYXdpbmcgaW50bwotCQkJCXBhaW50
ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfQ2xlYXIpOwot
CQkJCXBhaW50ZXIuZmlsbFJlY3QocmVnaW9uLmJvdW5kaW5nUmVjdCgpLCBRdDo6dHJhbnNwYXJl
bnQpOworCQkJCWlmKCBiYWNrZ3JvdW5kID09IFF0Ojp0cmFuc3BhcmVudCApCisJCQkJCXBhaW50
ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfQ2xlYXIpOwor
CQkJCWVsc2UKKwkJCQkJcGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBv
c2l0aW9uTW9kZV9Tb3VyY2UpOworCQkJCXBhaW50ZXIuZmlsbFJlY3QocmVnaW9uLmJvdW5kaW5n
UmVjdCgpLCBiYWNrZ3JvdW5kKTsKIAogI2lmZGVmIE5GX0RFQlVHX0NBQ0hFRFVNUAogCQkJCXFE
ZWJ1ZygpIDw8ICIqKioqIENBQ0hFRFVNUCIgPDwgcmVjYWNoZV9jbnQgPDwgdGhpcyA8PCBtX2xh
eWVyIDw8IHJlZ2lvbiA8PCBtX3NpemU7CkBAIC01MzIsOSArNTM4LDYgQEAgUVJlY3RGIEdyYXBo
aWNzTGF5ZXJRdEltcGw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NMYXll
clF0SW1wbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBo
aWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKG1fY3VycmVudENv
bnRlbnQuYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcGFpbnRlci0+ZmlsbFJl
Y3Qob3B0aW9uLT5yZWN0LCBRQ29sb3IobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3Ip
KTsKLQogICAgIHN3aXRjaCAobV9jdXJyZW50Q29udGVudC5jb250ZW50VHlwZSkgewogICAgIGNh
c2UgSFRNTENvbnRlbnRUeXBlOgogICAgICAgICBpZiAobV9zdGF0ZS5kcmF3c0NvbnRlbnQpIHsK
QEAgLTU1Myw5ICs1NTYsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpwYWludChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGUKICAgICAgICAgfQog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFBpeG1hcENvbnRlbnRUeXBlOgorCQlpZiAobV9jdXJy
ZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorCQkJcGFpbnRlci0+ZmlsbFJl
Y3Qob3B0aW9uLT5yZWN0LCBRQ29sb3IobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3Ip
KTsKICAgICAgICAgcGFpbnRlci0+ZHJhd1BpeG1hcChtX3N0YXRlLmNvbnRlbnRzUmVjdCwgbV9j
dXJyZW50Q29udGVudC5waXhtYXApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbG9yQ29u
dGVudFR5cGU6CisJCWlmIChtX2N1cnJlbnRDb250ZW50LmJhY2tncm91bmRDb2xvci5pc1ZhbGlk
KCkpCisJCQlwYWludGVyLT5maWxsUmVjdChvcHRpb24tPnJlY3QsIFFDb2xvcihtX2N1cnJlbnRD
b250ZW50LmJhY2tncm91bmRDb2xvcikpOwogICAgICAgICBwYWludGVyLT5maWxsUmVjdChtX3N0
YXRlLmNvbnRlbnRzUmVjdCwgbV9jdXJyZW50Q29udGVudC5jb250ZW50c0JhY2tncm91bmRDb2xv
cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFDb250ZW50VHlwZToKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGI1Zjc0YzYuLmZkNTM2MGIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjAsNyArMjAsNyBA
QAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCkBAIC0yOCw3ICsy
OCw3IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiQW5p
bWF0aW9uQ29udHJvbGxlci5oIgotI2lmIEVOQUJMRSgzRF9DQU5WQVMpICAgIAorI2lmIEVOQUJM
RSgzRF9DQU5WQVMpCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCiAjZW5kaWYK
ICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCkBAIC02NSw3ICs2NSw3IEBAIHN0YXRpYyBi
b29sIGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kSW1hZ2UoY29uc3QgUmVuZGVyU3R5bGUq
KTsKIAogc3RhdGljIGlubGluZSBib29sIGlzM0RDYW52YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKIHsKLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQog
ICAgIGlmIChyZW5kZXJlci0+aXNDYW52YXMoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxDYW52YXNFbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUoKSktPmlzM0QoKTsKICNlbHNlCkBA
IC05Miw3ICs5Miw3IEBAIFJlbmRlckxheWVyQmFja2luZzo6flJlbmRlckxheWVyQmFja2luZygp
CiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NMYXllcigpCiB7CiAgICAg
bV9ncmFwaGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMpOwotICAgIAorCiAj
aWZuZGVmIE5ERUJVRwogICAgIGlmIChyZW5kZXJlcigpLT5ub2RlKCkpIHsKICAgICAgICAgaWYg
KHJlbmRlcmVyKCktPm5vZGUoKS0+aXNEb2N1bWVudE5vZGUoKSkKQEAgLTEzOCw3ICsxMzgsNyBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlKQogICAgICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odCwgdG9SZW5k
ZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCksIFJlbmRlclN0eWxlOjpF
eGNsdWRlVHJhbnNmb3JtT3JpZ2luKTsKICAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUodCwg
Y29tcG9zaXRvcigpLT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwogICAgIH0KLSAgICAK
KwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0VHJhbnNmb3JtKHQpOwogfQogCkBAIC0xNzIsMTQg
KzE3MiwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQWZ0ZXJMYXlvdXQoVXBk
YXRlRGVwdGggdXBkYXRlRGVwdGgsIGJvb2wgaXNVcGRhdAogICAgIGlmICghbGF5ZXJDb21wb3Np
dG9yLT5jb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCkpIHsKICAgICAgICAgLy8gQ2FsbGlu
ZyB1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKSBoZXJlIGdpdmVzIGluY29ycmVjdCByZXN1
bHRzLCBiZWNhdXNlIHRoZQogICAgICAgICAvLyBwb3NpdGlvbiBvZiB0aGlzIGxheWVyJ3MgR3Jh
cGhpY3NMYXllciBkZXBlbmRzIG9uIHRoZSBwb3NpdGlvbiBvZiBvdXIgY29tcG9zaXRpbmcKLSAg
ICAgICAgLy8gYW5jZXN0b3IncyBHcmFwaGljc0xheWVyLiBUaGF0IGNhbm5vdCBiZSBkZXRlcm1p
bmVkIHVudGlsIGFsbCB0aGUgZGVzY2VuZGFudCAKKyAgICAgICAgLy8gYW5jZXN0b3IncyBHcmFw
aGljc0xheWVyLiBUaGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGlsIGFsbCB0aGUgZGVzY2Vu
ZGFudAogICAgICAgICAvLyBSZW5kZXJMYXllcnMgb2YgdGhhdCBhbmNlc3RvciBoYXZlIGJlZW4g
cHJvY2Vzc2VkIHZpYSB1cGRhdGVMYXllclBvc2l0aW9ucygpLgogICAgICAgICAvLwogICAgICAg
ICAvLyBUaGUgc29sdXRpb24gaXMgdG8gdXBkYXRlIGNvbXBvc2l0aW5nIGNoaWxkcmVuIG9mIHRo
aXMgbGF5ZXIgaGVyZSwKICAgICAgICAgLy8gdmlhIHVwZGF0ZUNvbXBvc2l0aW5nQ2hpbGRyZW5H
ZW9tZXRyeSgpLgogICAgICAgICB1cGRhdGVDb21wb3NpdGVkQm91bmRzKCk7CiAgICAgICAgIGxh
eWVyQ29tcG9zaXRvci0+dXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkobV9vd25p
bmdMYXllciwgbV9vd25pbmdMYXllciwgdXBkYXRlRGVwdGgpOwotICAgICAgICAKKwogICAgICAg
ICBpZiAoaXNVcGRhdGVSb290KSB7CiAgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0xheWVyR2Vv
bWV0cnkoKTsKICAgICAgICAgICAgIGxheWVyQ29tcG9zaXRvci0+dXBkYXRlUm9vdExheWVyUG9z
aXRpb24oKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKQogICAgIGJvb2wgbGF5ZXJDb25maWdDaGFu
Z2VkID0gZmFsc2U7CiAgICAgaWYgKHVwZGF0ZUZvcmVncm91bmRMYXllcihjb21wb3NpdG9yLT5u
ZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXllcihtX293bmluZ0xheWVyKSkpCiAgICAgICAgIGxh
eWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7Ci0gICAgCisKICAgICBpZiAodXBkYXRlQ2xpcHBpbmdM
YXllcnMoY29tcG9zaXRvci0+Y2xpcHBlZEJ5QW5jZXN0b3IobV9vd25pbmdMYXllciksIGNvbXBv
c2l0b3ItPmNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhtX293bmluZ0xheWVyKSkpCiAgICAg
ICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7CiAKQEAgLTIyMiw3ICsyMjIsNyBAQCBib29s
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKQog
ICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShtZWRpYUVsZW1lbnQt
PnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgfQogI2VuZGlmCi0jaWYgRU5BQkxFKDNEX0NBTlZBUykg
ICAgCisjaWYgRU5BQkxFKDNEX0NBTlZBUykKICAgICBlbHNlIGlmIChpczNEQ2FudmFzKHJlbmRl
cmVyKCkpKSB7CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2Fz
dDxIVE1MQ2FudmFzRWxlbWVudCo+KHJlbmRlcmVyKCktPm5vZGUoKSk7CiAgICAgICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29u
dGV4dCo+KGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKTsKQEAgLTI0OCwxMyArMjQ4LDEzIEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQog
ICAgIC8vIFNldCBvcGFjaXR5LCBpZiBpdCBpcyBub3QgYW5pbWF0aW5nLgogICAgIGlmICghcmVu
ZGVyZXIoKS0+YW5pbWF0aW9uKCktPmlzQW5pbWF0aW5nUHJvcGVydHlPblJlbmRlcmVyKHJlbmRl
cmVyKCksIENTU1Byb3BlcnR5T3BhY2l0eSkpCiAgICAgICAgIHVwZGF0ZUxheWVyT3BhY2l0eShy
ZW5kZXJlcigpLT5zdHlsZSgpKTsKLSAgICAKKwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJl
bmRlcmVyKCktPnN0eWxlKCk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRChz
dHlsZS0+dHJhbnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEICYm
ICFyZW5kZXJlcigpLT5oYXNSZWZsZWN0aW9uKCkpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
QmFja2ZhY2VWaXNpYmlsaXR5KHN0eWxlLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFj
ZVZpc2liaWxpdHlWaXNpYmxlKTsKIAogICAgIFJlbmRlckxheWVyKiBjb21wQW5jZXN0b3IgPSBt
X293bmluZ0xheWVyLT5hbmNlc3RvckNvbXBvc2l0aW5nTGF5ZXIoKTsKLSAgICAKKwogICAgIC8v
IFdlIGNvbXB1dGUgZXZlcnl0aGluZyByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0
aW5nIGxheWVyLgogICAgIEludFJlY3QgYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kczsKICAgICBp
ZiAoY29tcEFuY2VzdG9yKSB7CkBAIC0yNzYsNyArMjc2LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgICAgICBncmFwaGljc0xh
eWVyUGFyZW50TG9jYXRpb24gPSB0b1JlbmRlckJveChjb21wQW5jZXN0b3ItPnJlbmRlcmVyKCkp
LT5vdmVyZmxvd0NsaXBSZWN0KDAsIDApLmxvY2F0aW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAg
IGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMu
bG9jYXRpb24oKTsKLSAgICAKKworCWlmKCByZW5kZXJlckhhc0JhY2tncm91bmQoKSApIHsKKwkJ
Y29uc3QgQ29sb3IgJmJnQ29sb3IgPSByZW5kZXJlckJhY2tncm91bmRDb2xvcigpOworCQltX2dy
YXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihiZ0NvbG9yKTsKKwl9IGVsc2UKKwkJbV9n
cmFwaGljc0xheWVyLT5jbGVhckJhY2tncm91bmRDb2xvcigpOworCiAgICAgaWYgKGNvbXBBbmNl
c3RvciAmJiBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllcikgewogICAgICAgICAvLyBDYWxsIGNhbGN1
bGF0ZVJlY3RzIHRvIGdldCB0aGUgYmFja2dyb3VuZFJlY3Qgd2hpY2ggaXMgd2hhdCBpcyB1c2Vk
IHRvIGNsaXAgdGhlIGNvbnRlbnRzIG9mIHRoaXMKICAgICAgICAgLy8gbGF5ZXIuIE5vdGUgdGhh
dCB3ZSBjYWxsIGl0IHdpdGggdGVtcG9yYXJ5Q2xpcFJlY3RzID0gdHJ1ZSBiZWNhdXNlIG5vcm1h
bGx5IHdoZW4gY29tcHV0aW5nIGNsaXAgcmVjdHMKQEAgLTI5NSw3ICszMDEsNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKIAogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpICsgKHJlbGF0aXZlQ29tcG9z
aXRpbmdCb3VuZHMubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbikpOwog
ICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKGxvY2FsQ29tcG9zaXRp
bmdCb3VuZHMubG9jYXRpb24oKSAtIEludFBvaW50KCkpOwotICAgIAorCiAgICAgRmxvYXRTaXpl
IG9sZFNpemUgPSBtX2dyYXBoaWNzTGF5ZXItPnNpemUoKTsKICAgICBGbG9hdFNpemUgbmV3U2l6
ZSA9IHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMuc2l6ZSgpOwogICAgIGlmIChvbGRTaXplICE9
IG5ld1NpemUpIHsKQEAgLTMxNCwxMiArMzIwLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgICAgICBtX2NsaXBwaW5nTGF5ZXIt
PnNldFNpemUoY2xpcHBpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgbV9jbGlwcGluZ0xheWVyLT5z
ZXRPZmZzZXRGcm9tUmVuZGVyZXIoY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIEludFBvaW50KCkp
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX21hc2tMYXllcikgewogICAgICAgICBtX21hc2tM
YXllci0+c2V0U2l6ZShtX2dyYXBoaWNzTGF5ZXItPnNpemUoKSk7CiAgICAgICAgIG1fbWFza0xh
eWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOwogICAgIH0KLSAgICAKKwogICAgIGlmICht
X293bmluZ0xheWVyLT5oYXNUcmFuc2Zvcm0oKSkgewogICAgICAgICBjb25zdCBJbnRSZWN0IGJv
cmRlckJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCk7CiAKQEAg
LTMzNyw3ICszNDMsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NM
YXllckdlb21ldHJ5KCkKICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIoKS0+
c3R5bGUoKTsKICAgICAgICAgaWYgKHN0eWxlLT5oYXNQZXJzcGVjdGl2ZSgpKSB7CiAgICAgICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0ID0gb3duaW5nTGF5ZXIoKS0+cGVyc3BlY3RpdmVU
cmFuc2Zvcm0oKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAobV9jbGlwcGluZ0xh
eWVyKSB7CiAgICAgICAgICAgICAgICAgbV9jbGlwcGluZ0xheWVyLT5zZXRDaGlsZHJlblRyYW5z
Zm9ybSh0KTsKICAgICAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENoaWxkcmVuVHJh
bnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwpAQCAtMzc0LDcgKzM4MCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgIGlm
IChtX293bmluZ0xheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSAmJiBtX293bmluZ0xheWVyLT5yZWZs
ZWN0aW9uTGF5ZXIoKS0+aXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXJCYWNr
aW5nKiByZWZsZWN0aW9uQmFja2luZyA9IG1fb3duaW5nTGF5ZXItPnJlZmxlY3Rpb25MYXllcigp
LT5iYWNraW5nKCk7CiAgICAgICAgIHJlZmxlY3Rpb25CYWNraW5nLT51cGRhdGVHcmFwaGljc0xh
eWVyR2VvbWV0cnkoKTsKLSAgICAgICAgCisKICAgICAgICAgLy8gVGhlIHJlZmxlY3Rpb24gbGF5
ZXIgaGFzIHRoZSBib3VuZHMgb2YgbV9vd25pbmdMYXllci0+cmVmbGVjdGlvbkxheWVyKCksCiAg
ICAgICAgIC8vIGJ1dCB0aGUgcmVmbGVjdGVkIGxheWVyIGlzIHRoZSBib3VuZHMgb2YgdGhpcyBs
YXllciwgc28gd2UgbmVlZCB0byBwb3NpdGlvbiBpdCBhcHByb3ByaWF0ZWx5LgogICAgICAgICBG
bG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBjb21wb3NpdGVkQm91bmRzKCk7CkBAIC00MjEsNyArNDI3
LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNsaXBwaW5nTGF5ZXJzKGJvb2wg
bmVlZHNBbmNlc3RvckNsaXAsIGJvb2wgbmVlZHMKICAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5n
TGF5ZXIgPSAwOwogICAgICAgICBsYXllcnNDaGFuZ2VkID0gdHJ1ZTsKICAgICB9Ci0gICAgCisK
ICAgICBpZiAobmVlZHNEZXNjZW5kYW50Q2xpcCkgewogICAgICAgICBpZiAoIW1fY2xpcHBpbmdM
YXllcikgewogICAgICAgICAgICAgbV9jbGlwcGluZ0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3Jl
YXRlKHRoaXMpOwpAQCAtNDM2LDcgKzQ0Miw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVDbGlwcGluZ0xheWVycyhib29sIG5lZWRzQW5jZXN0b3JDbGlwLCBib29sIG5lZWRzCiAg
ICAgICAgIG1fY2xpcHBpbmdMYXllciA9IDA7CiAgICAgICAgIGxheWVyc0NoYW5nZWQgPSB0cnVl
OwogICAgIH0KLSAgICAKKwogICAgIGlmIChsYXllcnNDaGFuZ2VkKQogICAgICAgICB1cGRhdGVJ
bnRlcm5hbEhpZXJhcmNoeSgpOwogCkBAIC01MDYsMTggKzUxMiwxOCBAQCBHcmFwaGljc0xheWVy
UGFpbnRpbmdQaGFzZSBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50aW5nUGhhc2VGb3JQcmltYXJ5
TGF5ZXIoKSBjbwogZmxvYXQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wb3NpdGluZ09wYWNpdHko
ZmxvYXQgcmVuZGVyZXJPcGFjaXR5KSBjb25zdAogewogICAgIGZsb2F0IGZpbmFsT3BhY2l0eSA9
IHJlbmRlcmVyT3BhY2l0eTsKLSAgICAKKwogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGN1cnIgPSBt
X293bmluZ0xheWVyLT5wYXJlbnQoKTsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7CiAg
ICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBwYXJlbnRzIHRoYXQgYXJlIHN0YWNraW5nIGNv
bnRleHRzLgogICAgICAgICAvLyBSZWNhbGwgdGhhdCBvcGFjaXR5IGNyZWF0ZXMgc3RhY2tpbmcg
Y29udGV4dC4KICAgICAgICAgaWYgKCFjdXJyLT5pc1N0YWNraW5nQ29udGV4dCgpKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIAorCiAgICAgICAgIC8vIElmIHdlIGZvdW5kIGEgY29t
cG9zaXRpbmcgbGF5ZXIsIHdlIHdhbnQgdG8gY29tcHV0ZSBvcGFjaXR5CiAgICAgICAgIC8vIHJl
bGF0aXZlIHRvIGl0LiBTbyB3ZSBjYW4gYnJlYWsgaGVyZS4KICAgICAgICAgaWYgKGN1cnItPmlz
Q29tcG9zaXRlZCgpKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAorCiAgICAgICAgIGZp
bmFsT3BhY2l0eSAqPSBjdXJyLT5yZW5kZXJlcigpLT5vcGFjaXR5KCk7CiAgICAgfQogCkBAIC01
NDYsMTkgKzU1MiwxOSBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJIYXNCYWNr
Z3JvdW5kKCkgY29uc3QKICAgICAgICAgUmVuZGVyT2JqZWN0KiBodG1sT2JqZWN0ID0gcmVuZGVy
ZXIoKS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICBpZiAoIWh0bWxPYmplY3QpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAorCiAgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9
IGh0bWxPYmplY3QtPnN0eWxlKCk7CiAgICAgICAgIGlmIChzdHlsZS0+aGFzQmFja2dyb3VuZCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIAorCiAgICAgICAgIFJlbmRlck9i
amVjdCogYm9keU9iamVjdCA9IGh0bWxPYmplY3QtPmZpcnN0Q2hpbGQoKTsKICAgICAgICAgaWYg
KCFib2R5T2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKKwogICAg
ICAgICBzdHlsZSA9IGJvZHlPYmplY3QtPnN0eWxlKCk7CiAgICAgICAgIHJldHVybiBzdHlsZS0+
aGFzQmFja2dyb3VuZCgpOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiByZW5kZXJlcigpLT5z
dHlsZSgpLT5oYXNCYWNrZ3JvdW5kKCk7CiB9CiAKQEAgLTYwMCw0MiArNjA2LDQyIEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBj
b25zdAogICAgIC8vIElmIHdlIGhhdmUgZ290IHRoaXMgZmFyIGFuZCB0aGUgcmVuZGVyZXIgaGFz
IG5vIGNoaWxkcmVuLCB0aGVuIHdlJ3JlIG9rLgogICAgIGlmICghcmVuZGVyT2JqZWN0LT5maXJz
dENoaWxkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIAorCiAgICAgaWYgKHJlbmRlck9i
amVjdC0+bm9kZSgpICYmIHJlbmRlck9iamVjdC0+bm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKSB7
CiAgICAgICAgIC8vIExvb2sgdG8gc2VlIGlmIHRoZSByb290IG9iamVjdCBoYXMgYSBub24tc2lt
cGxlIGJhY2tnb3VuZAogICAgICAgICBSZW5kZXJPYmplY3QqIHJvb3RPYmplY3QgPSByZW5kZXJP
YmplY3QtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpOwogICAgICAg
ICBpZiAoIXJvb3RPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAor
CiAgICAgICAgIHN0eWxlID0gcm9vdE9iamVjdC0+c3R5bGUoKTsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gUmVqZWN0IGFueXRoaW5nIHRoYXQgaGFzIGEgYm9yZGVyLCBhIGJvcmRlci1yYWRpdXMg
b3Igb3V0bGluZSwKICAgICAgICAgLy8gb3IgaXMgbm90IGEgc2ltcGxlIGJhY2tncm91bmQgKG5v
IGJhY2tncm91bmQsIG9yIHNvbGlkIGNvbG9yKS4KICAgICAgICAgaWYgKGhhc0JveERlY29yYXRp
b25zT3JCYWNrZ3JvdW5kSW1hZ2Uoc3R5bGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAKKwogICAgICAgICAvLyBOb3cgbG9vayBhdCB0aGUgYm9keSdzIHJlbmRlcmVyLgog
ICAgICAgICBIVE1MRWxlbWVudCogYm9keSA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS0+Ym9k
eSgpOwogICAgICAgICBSZW5kZXJPYmplY3QqIGJvZHlPYmplY3QgPSAoYm9keSAmJiBib2R5LT5o
YXNMb2NhbE5hbWUoYm9keVRhZykpID8gYm9keS0+cmVuZGVyZXIoKSA6IDA7CiAgICAgICAgIGlm
ICghYm9keU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAg
ICAgICAgc3R5bGUgPSBib2R5T2JqZWN0LT5zdHlsZSgpOwotICAgICAgICAKKwogICAgICAgICBp
ZiAoaGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmRJbWFnZShzdHlsZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gQ2VjayB0byBzZWUgaWYgYWxsIHRoZSBib2R5
J3MgY2hpbGRyZW4gYXJlIGNvbXBvc2l0aW5nIGxheWVycy4KICAgICAgICAgaWYgKGhhc05vbkNv
bXBvc2l0aW5nQ29udGVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAK
KwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYg
YWxsIHRoZSByZW5kZXJlcidzIGNoaWxkcmVuIGFyZSBjb21wb3NpdGluZyBsYXllcnMuCiAgICAg
aWYgKGhhc05vbkNvbXBvc2l0aW5nQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjQ0LDcgKzY1MCw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpoYXNOb25Db21wb3NpdGluZ0NvbnRlbnQoKSBjb25zdAogewogICAg
IGlmIChtX293bmluZ0xheWVyLT5oYXNPdmVyZmxvd0NvbnRyb2xzKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwotICAgIAorCiAgICAgLy8gU29tZSBIVE1MIGNhbiBjYXVzZSB3aGl0ZXNwYWNlIHRl
eHQgbm9kZXMgdG8gaGF2ZSByZW5kZXJlcnMsIGxpa2U6CiAgICAgLy8gPGRpdj4KICAgICAvLyA8
aW1nIHNyYz0uLi4+CkBAIC02NTQsNyArNjYwLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6
Omhhc05vbkNvbXBvc2l0aW5nQ29udGVudCgpIGNvbnN0CiAgICAgICAgIGlmICghY2hpbGQtPmhh
c0xheWVyKCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJJbmxpbmUoKSB8fCAh
Y2hpbGQtPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICAgICAgaWYgKHRvUmVuZGVyQm94KGNoaWxkKS0+d2lkdGgoKSA+IDAgfHwg
dG9SZW5kZXJCb3goY2hpbGQpLT5oZWlnaHQoKSA+IDApCiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTcyNCw3ICs3MzAsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogICAgIGlm
IChpczNEQ2FudmFzKHJlbmRlcmVyKCkpKSB7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
R3JhcGhpY3NDb250ZXh0M0ROZWVkc0Rpc3BsYXkoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNzUx
LDcgKzc1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRz
KCkKIAogICAgIC8vIFRoaXMgaXMgYSBuby1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZlIGFu
IGlubmVyIGxheWVyIGZvciB0aGUgaW1hZ2UuCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250
ZW50c1RvSW1hZ2UoaW1hZ2UpOwotICAgIAorCiAgICAgLy8gSW1hZ2UgYW5pbWF0aW9uIGlzICJs
YXp5IiwgaW4gdGhhdCBpdCBhdXRvbWF0aWNhbGx5IHN0b3BzIHVubGVzcyBzb21lb25lIGlzIGRy
YXdpbmcKICAgICAvLyB0aGUgaW1hZ2UuIFNvIHdlIGhhdmUgdG8ga2ljayB0aGUgYW5pbWF0aW9u
IGVhY2ggdGltZTsgdGhpcyBoYXMgdGhlIGRvd25zaWRlIHRoYXQgdGhlCiAgICAgLy8gaW1hZ2Ug
d2lsbCBrZWVwIGFuaW1hdGluZywgZXZlbiBpZiBpdHMgbGF5ZXIgaXMgbm90IHZpc2libGUuCkBA
IC04MzAsNyArODM2LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVl
ZERpc3BsYXkoKQogewogICAgIGlmIChtX2dyYXBoaWNzTGF5ZXIgJiYgbV9ncmFwaGljc0xheWVy
LT5kcmF3c0NvbnRlbnQoKSkKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3Bs
YXkoKTsKLSAgICAKKwogICAgIGlmIChtX2ZvcmVncm91bmRMYXllciAmJiBtX2ZvcmVncm91bmRM
YXllci0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIG1fZm9yZWdyb3VuZExheWVyLT5zZXROZWVk
c0Rpc3BsYXkoKTsKIApAQCAtODg1LDEzICs4OTEsMTMgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4
dCoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgCisKICAgICBtX293bmluZ0xheWVyLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsK
LSAgICAKKwogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlLgog
ICAgIEludFJlY3QgbGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0
bGluZVJlY3Q7CiAgICAgbV9vd25pbmdMYXllci0+Y2FsY3VsYXRlUmVjdHMocm9vdExheWVyLCBw
YWludERpcnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwg
b3V0bGluZVJlY3QpOwotICAgIAorCiAgICAgaW50IHggPSBsYXllckJvdW5kcy54KCk7ICAgICAg
ICAvLyBsYXllckJvdW5kcyBpcyBjb21wdXRlZCByZWxhdGl2ZSB0byByb290TGF5ZXIKICAgICBp
bnQgeSA9IGxheWVyQm91bmRzLnkoKTsKICAgICBpbnQgdHggPSB4IC0gbV9vd25pbmdMYXllci0+
cmVuZGVyQm94WCgpOwpAQCAtOTExLDEzICs5MTcsMTMgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4
dCoKICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgcm9vdCB0aGVuIHdlIG5lZWQgdG8gc2VuZCBp
biBhIGJpZ2dlciBib3VuZGluZyBib3gKICAgICAgICAgLy8gYmVjYXVzZSB3ZSdsbCBiZSBwYWlu
dGluZyB0aGUgYmFja2dyb3VuZCBhcyB3ZWxsIChzZWUgUmVuZGVyQm94OjpwYWludFJvb3RCb3hE
ZWNvcmF0aW9ucygpKS4KICAgICAgICAgSW50UmVjdCBwYWludEJveCA9IGNsaXBSZWN0VG9BcHBs
eTsKLSAgICAgICAgCisKICAgICAgICAgLy8gRklYTUU6IGRvIHdlIG5lZWQgdGhpcyBjb2RlPwog
ICAgICAgICBpZiAocmVuZGVyZXIoKS0+bm9kZSgpICYmIHJlbmRlcmVyKCktPm5vZGUoKS0+aXNE
b2N1bWVudE5vZGUoKSAmJiByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgp
KSB7CiAgICAgICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkp
OwogICAgICAgICAgICAgaW50IHcgPSBib3gtPndpZHRoKCk7CiAgICAgICAgICAgICBpbnQgaCA9
IGJveC0+aGVpZ2h0KCk7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaW50IHJ3OwogICAg
ICAgICAgICAgaW50IHJoOwogICAgICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0g
Ym94LT52aWV3KCktPmZyYW1lVmlldygpKSB7CkBAIC05MjcsNyArOTMzLDcgQEAgdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdy
YXBoaWNzQ29udGV4dCoKICAgICAgICAgICAgICAgICBydyA9IGJveC0+dmlldygpLT53aWR0aCgp
OwogICAgICAgICAgICAgICAgIHJoID0gYm94LT52aWV3KCktPmhlaWdodCgpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGludCBieCA9IHR4IC0gYm94LT5tYXJn
aW5MZWZ0KCk7CiAgICAgICAgICAgICBpbnQgYnkgPSB0eSAtIGJveC0+bWFyZ2luVG9wKCk7CiAg
ICAgICAgICAgICBpbnQgYncgPSBtYXgodyArIGJveC0+bWFyZ2luTGVmdCgpICsgYm94LT5tYXJn
aW5SaWdodCgpICsgYm94LT5ib3JkZXJMZWZ0KCkgKyBib3gtPmJvcmRlclJpZ2h0KCksIHJ3KTsK
QEAgLTkzOCw3ICs5NDQsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5
ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KgogICAgICAgICAvLyBQ
YWludCBvdXIgYmFja2dyb3VuZCBmaXJzdCwgYmVmb3JlIHBhaW50aW5nIGFueSBjaGlsZCBsYXll
cnMuCiAgICAgICAgIC8vIEVzdGFibGlzaCB0aGUgY2xpcCB1c2VkIHRvIHBhaW50IG91ciBiYWNr
Z3JvdW5kLgogICAgICAgICBzZXRDbGlwKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VS
ZWN0KTsKLSAgICAgICAgCisKICAgICAgICAgUmVuZGVyT2JqZWN0OjpQYWludEluZm8gaW5mbyhj
b250ZXh0LCBwYWludEJveCwgUGFpbnRQaGFzZUJsb2NrQmFja2dyb3VuZCwgZmFsc2UsIHBhaW50
aW5nUm9vdEZvclJlbmRlcmVyLCAwKTsKICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQoaW5mbywg
dHgsIHR5KTsKIApAQCAtOTQ2LDExICs5NTIsMTEgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCoK
ICAgICAgICAgLy8gei1pbmRleC4gIFdlIHBhaW50IGFmdGVyIHdlIHBhaW50ZWQgdGhlIGJhY2tn
cm91bmQvYm9yZGVyLCBzbyB0aGF0IHRoZSBzY3JvbGxiYXJzIHdpbGwKICAgICAgICAgLy8gc2l0
IGFib3ZlIHRoZSBiYWNrZ3JvdW5kL2JvcmRlci4KICAgICAgICAgbV9vd25pbmdMYXllci0+cGFp
bnRPdmVyZmxvd0NvbnRyb2xzKGNvbnRleHQsIHgsIHksIGRhbWFnZVJlY3QpOwotICAgICAgICAK
KwogICAgICAgICAvLyBSZXN0b3JlIHRoZSBjbGlwLgogICAgICAgICByZXN0b3JlQ2xpcChjb250
ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAgICAgfQotICAgICAgICAgICAgICAg
IAorCiAgICAgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IHBhaW50QmVoYXZpb3IgJiBQYWludEJlaGF2
aW9yRm9yY2VCbGFja1RleHQ7CiAgICAgYm9vbCBzZWxlY3Rpb25Pbmx5ICA9IHBhaW50QmVoYXZp
b3IgJiBQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seTsKIApAQCAtOTY1LDcgKzk3MSw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqCiAKICAgICAgICAgLy8gU2V0IHVwIHRoZSBjbGlwIHVzZWQg
d2hlbiBwYWludGluZyBvdXIgY2hpbGRyZW4uCiAgICAgICAgIHNldENsaXAoY29udGV4dCwgcGFp
bnREaXJ0eVJlY3QsIGNsaXBSZWN0VG9BcHBseSk7Ci0gICAgICAgIFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBjbGlwUmVjdFRvQXBwbHksIAorICAgICAgICBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwgY2xpcFJlY3RUb0FwcGx5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uT25seSA/
IFBhaW50UGhhc2VTZWxlY3Rpb24gOiBQYWludFBoYXNlQ2hpbGRCbG9ja0JhY2tncm91bmRzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VCbGFja1RleHQs
IHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCAwKTsKICAgICAgICAgcmVuZGVyZXIoKS0+cGFpbnQo
cGFpbnRJbmZvLCB0eCwgdHkpOwpAQCAtMTAwNiw3ICsxMDEyLDcgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNz
Q29udGV4dCoKICAgICAgICAgICAgICAgICBpdFswXS0+cGFpbnRMYXllcihyb290TGF5ZXIsIGNv
bnRleHQsIHBhaW50RGlydHlSZWN0LCBwYWludEJlaGF2aW9yLCBwYWludGluZ1Jvb3QpOwogICAg
ICAgICB9CiAgICAgfQotICAgIAorCiAgICAgaWYgKHNob3VsZFBhaW50ICYmIChwYWludGluZ1Bo
YXNlICYgR3JhcGhpY3NMYXllclBhaW50TWFzaykpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkt
Pmhhc01hc2soKSAmJiAhc2VsZWN0aW9uT25seSAmJiAhZGFtYWdlUmVjdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgIHNldENsaXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3Qp
OwpAQCAtMTAxNCw3ICsxMDIwLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50
b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCoKICAgICAgICAg
ICAgIC8vIFBhaW50IHRoZSBtYXNrLgogICAgICAgICAgICAgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8gcGFpbnRJbmZvKGNvbnRleHQsIGRhbWFnZVJlY3QsIFBhaW50UGhhc2VNYXNrLCBmYWxzZSwg
cGFpbnRpbmdSb290Rm9yUmVuZGVyZXIsIDApOwogICAgICAgICAgICAgcmVuZGVyZXIoKS0+cGFp
bnQocGFpbnRJbmZvLCB0eCwgdHkpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIC8vIFJl
c3RvcmUgdGhlIGNsaXAuCiAgICAgICAgICAgICByZXN0b3JlQ2xpcChjb250ZXh0LCBwYWludERp
cnR5UmVjdCwgZGFtYWdlUmVjdCk7CiAgICAgICAgIH0KQEAgLTEwNDksMTMgKzEwNTUsMTMgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXll
ciosIEdyYXBoaWNzQ29udGV4dCYgY28KICAgICBJbnRSZWN0IGVuY2xvc2luZ0JCb3ggPSBjb21w
b3NpdGVkQm91bmRzKCk7CiAKICAgICBJbnRSZWN0IGNsaXBSZWN0KGNsaXApOwotICAgIAorCiAg
ICAgLy8gU2V0IHVwIHRoZSBjb29yZGluYXRlIHNwYWNlIHRvIGJlIGluIHRoZSBsYXllcidzIHJl
bmRlcmluZyBjb29yZGluYXRlcy4KICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtZW5jbG9zaW5nQkJv
eC54KCksIC1lbmNsb3NpbmdCQm94LnkoKSk7CiAKICAgICAvLyBPZmZzZXQgdGhlIGNsaXAuCiAg
ICAgY2xpcFJlY3QubW92ZShlbmNsb3NpbmdCQm94LngoKSwgZW5jbG9zaW5nQkJveC55KCkpOwot
ICAgIAorCiAgICAgLy8gVGhlIGRpcnR5UmVjdCBpcyBpbiB0aGUgY29vcmRzIG9mIHRoZSBwYWlu
dGluZyByb290LgogICAgIEludFJlY3QgZGlydHlSZWN0ID0gZW5jbG9zaW5nQkJveDsKICAgICBk
aXJ0eVJlY3QuaW50ZXJzZWN0KGNsaXBSZWN0KTsKQEAgLTEwODIsMTAgKzEwODgsMTAgQEAgYm9v
bCBSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBj
b25zdCBBbmltYXRpb24qIGFuaW0KIHsKICAgICBib29sIGhhc09wYWNpdHkgPSBrZXlmcmFtZXMu
Y29udGFpbnNQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpOwogICAgIGJvb2wgaGFzVHJhbnNm
b3JtID0ga2V5ZnJhbWVzLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm0pOwotICAgIAorCiAgICAgaWYgKCFoYXNPcGFjaXR5ICYmICFoYXNUcmFuc2Zvcm0pCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAKKwogICAgIEtleWZyYW1lVmFsdWVMaXN0IHRyYW5zZm9y
bVZlY3RvcihBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKICAgICBLZXlmcmFtZVZh
bHVlTGlzdCBvcGFjaXR5VmVjdG9yKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKIApAQCAtMTA5
NSwyNiArMTEwMSwyNiBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24o
ZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEFuaW1hdGlvbiogYW5pbQogCiAgICAgICAgIGlmICgh
a2V5ZnJhbWVTdHlsZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgCisKICAg
ICAgICAgLy8gZ2V0IHRpbWluZyBmdW5jdGlvbgogICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlv
biogdGYgPSBrZXlmcmFtZVN0eWxlLT5oYXNBbmltYXRpb25zKCkgPyAmKCgqa2V5ZnJhbWVTdHls
ZS0+YW5pbWF0aW9ucygpKS5hbmltYXRpb24oMCktPnRpbWluZ0Z1bmN0aW9uKCkpIDogMDsKLSAg
ICAgICAgCisKICAgICAgICAgaWYgKGhhc1RyYW5zZm9ybSkKICAgICAgICAgICAgIHRyYW5zZm9y
bVZlY3Rvci5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGtleSwgJihrZXlmcmFt
ZVN0eWxlLT50cmFuc2Zvcm0oKSksIHRmKSk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChoYXNP
cGFjaXR5KQogICAgICAgICAgICAgb3BhY2l0eVZlY3Rvci5pbnNlcnQobmV3IEZsb2F0QW5pbWF0
aW9uVmFsdWUoa2V5LCBrZXlmcmFtZVN0eWxlLT5vcGFjaXR5KCksIHRmKSk7CiAgICAgfQogCiAg
ICAgYm9vbCBkaWRBbmltYXRlVHJhbnNmb3JtID0gIWhhc1RyYW5zZm9ybTsKICAgICBib29sIGRp
ZEFuaW1hdGVPcGFjaXR5ID0gIWhhc09wYWNpdHk7Ci0gICAgCisKICAgICBpZiAoaGFzVHJhbnNm
b3JtICYmIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHRyYW5zZm9ybVZlY3RvciwgdG9S
ZW5kZXJCb3gocmVuZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCksIGFuaW0sIGtleWZy
YW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQpKQogICAgICAgICBkaWRBbmltYXRlVHJh
bnNmb3JtID0gdHJ1ZTsKIAogICAgIGlmIChoYXNPcGFjaXR5ICYmIG1fZ3JhcGhpY3NMYXllci0+
YWRkQW5pbWF0aW9uKG9wYWNpdHlWZWN0b3IsIEludFNpemUoKSwgYW5pbSwga2V5ZnJhbWVzLmFu
aW1hdGlvbk5hbWUoKSwgdGltZU9mZnNldCkpCiAgICAgICAgIGRpZEFuaW1hdGVPcGFjaXR5ID0g
dHJ1ZTsKLSAgICAKKwogICAgIGJvb2wgcnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uID0gZGlk
QW5pbWF0ZVRyYW5zZm9ybSAmJiBkaWRBbmltYXRlT3BhY2l0eTsKICAgICBpZiAocnVubmluZ0Fj
Y2VsZXJhdGVkQW5pbWF0aW9uKQogICAgICAgICBjb21wb3NpdG9yKCktPmRpZFN0YXJ0QWNjZWxl
cmF0ZWRBbmltYXRpb24oKTsKQEAgLTExNTgsNyArMTE2NCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpzdGFydFRyYW5zaXRpb24oZG91YmxlIHRpbWVPZmZzZXQsIGludCBwcm9wZXJ0eSwg
Y29uc3QKIAogICAgIGlmIChkaWRBbmltYXRlKQogICAgICAgICBjb21wb3NpdG9yKCktPmRpZFN0
YXJ0QWNjZWxlcmF0ZWRBbmltYXRpb24oKTsKLSAgICAKKwogICAgIHJldHVybiBkaWRBbmltYXRl
OwogfQogCi0tIAoxLjcuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58558</attachid>
            <date>2010-06-12 10:23:22 -0700</date>
            <delta_ts>2010-06-22 16:10:29 -0700</delta_ts>
            <desc>Proposed patch with proper coding style</desc>
            <filename>bug-40380.patch</filename>
            <type>text/plain</type>
            <size>30316</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">RnJvbSA2Njk5MmIxYTdmYmY4ZGRkNTZjYTRmNjEwZWE4MDY4MTdmMTllMzlkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW0gTWFnbnVzb24gPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4K
RGF0ZTogRnJpLCAxMSBKdW4gMjAxMCAyMzozNTo1NCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF0gV2hlbiBhIGxheWVyIGlzIHJlYWxseSBvcGFxdWUgKGllIGhhcyBhIGJhY2tncm91bmQgY29s
b3IgdGhhdCBoYXMgMjU1IGFscGhhKSB3ZSBzaG91bGQgZmlsbCB0aGUgbGF5ZXIgd2l0aCB0aGF0
IGNvbG9yIHRvIHRlbGwgUXQgdGhhdCB0aGUgcGl4ZW1hcCBoYXMgbm8gYWxwaGEuCiBidWcgLSA0
MDM4MAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDM3ICsrKysrCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5
ZXJRdC5jcHAgfCAgIDI2ICsrLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcCAgICAgICAgIHwgIDE4MiArKysrKysrKysrKy0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5n
ZWQsIDE0OCBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFkOWQ3MzkuLmVjN2EyMjgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMTAtMDYtMDkgIFNhbSBNYWdudXNvbiAgPHNtYWdudXNvbkBuZXRm
bGl4LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbUXRdIFdoZW4gYSBsYXllciBpcyByZWFsbHkgb3BhcXVlIChpZSBoYXMgYSBiYWNrZ3JvdW5k
IGNvbG9yIHRoYXQKKyAgICAgICAgaGFzIDI1NSBhbHBoYSkgd2Ugc2hvdWxkIGZpbGwgdGhlIGxh
eWVyIHdpdGggdGhhdCBjb2xvciB0byB0ZWxsIFF0CisgICAgICAgIHRoYXQgdGhlIHBpeGVtYXAg
aGFzIG5vIGFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDAzODAKKworICAgICAgICBBZGRpbmcgc3VwcG9ydCBmb3Igc2V0QmFja2dyb3VuZENv
bG9yL2NsZWFyQmFja2dyb3VuZCBjb2xvciBhbmQKKyAgICAgICAgdXNpbmcgaXQgaW4gUUdyYXBo
aWNzTGF5ZXIgdG8gcHJlLWZpbGwgdGhlIHBpeG1hcCBjYWNoZS4KKyAgICAgICAgCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NMYXllclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdElt
cGw6OnJlY2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1wbDo6cGFp
bnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6aXMzRENhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJCYWNraW5nOjp1cGRhdGVMYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZUFmdGVyTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2Vv
bWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDbGlw
cGluZ0xheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OmNvbXBv
c2l0aW5nT3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnJl
bmRlcmVySGFzQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tp
bmc6OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6Omhhc05vbkNvbXBvc2l0aW5nQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVyQ29udGVudENoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRlbnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c2V0Q29udGVudHNOZWVk
RGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50
b0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0
aW9uKToKKwogMjAxMC0wNi0wNyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVA
bm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCmluZGV4IGJl
NDRmY2EuLjE0MGUyNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NMYXllclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzTGF5ZXJRdC5jcHAKQEAgLTMwOSw2ICszMDksMTAgQEAgUVBpeG1hcCBHcmFwaGljc0xh
eWVyUXRJbXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lvblRvVXBkYXRlKQogICAgIFFS
ZWdpb24gcmVnaW9uID0gcmVnaW9uVG9VcGRhdGU7CiAgICAgUVBpeG1hcCBwaXhtYXA7CiAKKyAg
ICBRQ29sb3IgYmFja2dyb3VuZCA9IG1fY3VycmVudENvbnRlbnQuYmFja2dyb3VuZENvbG9yOwor
ICAgIGlmICghYmFja2dyb3VuZC5pc1ZhbGlkKCkpCisgICAgICAgIGJhY2tncm91bmQgPSBRdDo6
dHJhbnNwYXJlbnQ7CisKICAgICAvLyBXZSBtaWdodCBiZSBkcmF3aW5nIGludG8gYW4gZXhpc3Rp
bmcgY2FjaGUuCiAgICAgaWYgKCFRUGl4bWFwQ2FjaGU6OmZpbmQobV9iYWNraW5nU3RvcmVLZXks
ICZwaXhtYXApKQogICAgICAgICByZWdpb24gPSBRUmVnaW9uKFFSZWN0KDAsIDAsIG1fc2l6ZS53
aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKQEAgLTMxNiw3ICszMjAsNyBAQCBRUGl4bWFwIEdy
YXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lvbiYgcmVnaW9uVG9VcGRhdGUp
CiAgICAgaWYgKG1fc2l6ZSAhPSBwaXhtYXAuc2l6ZSgpKSB7CiAgICAgICAgIHBpeG1hcCA9IFFQ
aXhtYXAobV9zaXplLnRvU2l6ZSgpKTsKICAgICAgICAgaWYgKCFtX2xheWVyLT5jb250ZW50c09w
YXF1ZSgpKQotICAgICAgICAgICAgcGl4bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAgICAg
ICAgICAgIHBpeG1hcC5maWxsKGJhY2tncm91bmQpOwogICAgICAgICBtX3BlbmRpbmdDb250ZW50
LnJlZ2lvblRvVXBkYXRlID0gUVJlZ2lvbihRUmVjdChRUG9pbnQoMCwgMCksIG1fc2l6ZS50b1Np
emUoKSkpOwogICAgIH0KIApAQCAtMzI0LDE0ICszMjgsMTcgQEAgUVBpeG1hcCBHcmFwaGljc0xh
eWVyUXRJbXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lvblRvVXBkYXRlKQogICAgIEdy
YXBoaWNzQ29udGV4dCBnYygmcGFpbnRlcik7CiAKICAgICAvLyBDbGVhciB0aGUgYXJlYSBpbiBj
YWNoZSB0aGF0IHdlJ3JlIGRyYXdpbmcgaW50bwotICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25N
b2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfQ2xlYXIpOwotICAgIHBhaW50ZXIuZmlsbFJl
Y3QocmVnaW9uLmJvdW5kaW5nUmVjdCgpLCBRdDo6dHJhbnNwYXJlbnQpOworICAgIGlmICggYmFj
a2dyb3VuZCA9PSBRdDo6dHJhbnNwYXJlbnQgKQorICAgICAgICBwYWludGVyLnNldENvbXBvc2l0
aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0NsZWFyKTsKKyAgICBlbHNlCisgICAg
ICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVf
U291cmNlKTsKKyAgICBwYWludGVyLmZpbGxSZWN0KHJlZ2lvbi5ib3VuZGluZ1JlY3QoKSwgYmFj
a2dyb3VuZCk7CiAKICAgICAvLyBSZW5kZXIgdGhlIGFjdHVhbCBjb250ZW50cyBpbnRvIHRoZSBj
YWNoZQogICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlv
bk1vZGVfU291cmNlT3Zlcik7CiAgICAgbV9sYXllci0+cGFpbnRHcmFwaGljc0xheWVyQ29udGVu
dHMoZ2MsIHJlZ2lvbi5ib3VuZGluZ1JlY3QoKSk7CiAKLSAgICBtX2JhY2tpbmdTdG9yZUtleSA9
IFFQaXhtYXBDYWNoZTo6aW5zZXJ0KHBpeG1hcCk7ICAgIAorICAgIG1fYmFja2luZ1N0b3JlS2V5
ID0gUVBpeG1hcENhY2hlOjppbnNlcnQocGl4bWFwKTsKICAgICByZXR1cm4gcGl4bWFwOwogfQog
CkBAIC00MzgsOSArNDQ1LDYgQEAgUVJlY3RGIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmJvdW5kaW5n
UmVjdCgpIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NMYXllclF0SW1wbDo6cGFpbnQoUVBhaW50ZXIq
IHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0
KiB3aWRnZXQpCiB7Ci0gICAgaWYgKG1fY3VycmVudENvbnRlbnQuYmFja2dyb3VuZENvbG9yLmlz
VmFsaWQoKSkKLSAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qob3B0aW9uLT5yZWN0LCBRQ29sb3Io
bV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IpKTsKLQogICAgIHN3aXRjaCAobV9jdXJy
ZW50Q29udGVudC5jb250ZW50VHlwZSkgewogICAgIGNhc2UgSFRNTENvbnRlbnRUeXBlOgogICAg
ICAgICBpZiAobV9zdGF0ZS5kcmF3c0NvbnRlbnQpIHsKQEAgLTQ1Miw5ICs0NTYsMTMgQEAgdm9p
ZCBHcmFwaGljc0xheWVyUXRJbXBsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0
eWxlT3B0aW9uR3JhcGhpY3NJdGUKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNl
IFBpeG1hcENvbnRlbnRUeXBlOgorICAgICAgICBpZiAobV9jdXJyZW50Q29udGVudC5iYWNrZ3Jv
dW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qob3B0aW9u
LT5yZWN0LCBRQ29sb3IobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IpKTsKICAgICAg
ICAgcGFpbnRlci0+ZHJhd1BpeG1hcChtX3N0YXRlLmNvbnRlbnRzUmVjdCwgbV9jdXJyZW50Q29u
dGVudC5waXhtYXApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbG9yQ29udGVudFR5cGU6
CisgICAgICAgIGlmIChtX2N1cnJlbnRDb250ZW50LmJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkp
CisgICAgICAgICAgICBwYWludGVyLT5maWxsUmVjdChvcHRpb24tPnJlY3QsIFFDb2xvcihtX2N1
cnJlbnRDb250ZW50LmJhY2tncm91bmRDb2xvcikpOwogICAgICAgICBwYWludGVyLT5maWxsUmVj
dChtX3N0YXRlLmNvbnRlbnRzUmVjdCwgbV9jdXJyZW50Q29udGVudC5jb250ZW50c0JhY2tncm91
bmRDb2xvcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFDb250ZW50VHlwZToKQEAg
LTY1NCw3ICs2NjIsNyBAQCBhZnRlckxheWVyQ2hhbmdlczoKICAgICAgICAgdXBkYXRlVHJhbnNm
b3JtKCk7CiAKICAgICBpZiAoIXJlY3Vyc2l2ZSkKLSAgICAgICAgcmV0dXJuOyAgICAKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgUUxpc3Q8UUdyYXBoaWNzSXRlbSo+IGNoaWxkcmVuID0gY2hpbGRJ
dGVtcygpOwogICAgIGlmIChtX3N0YXRlLm1hc2tMYXllcikKQEAgLTkyOCw3ICs5MzYsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAg
ICAgICAgICAgIG1faW1wbC0+bV9wZW5kaW5nQ29udGVudC5waXhtYXAgPSAqcHhtOwogICAgICAg
ICAgICAgbV9pbXBsLT5tX3BlbmRpbmdDb250ZW50LmNvbnRlbnRUeXBlID0gR3JhcGhpY3NMYXll
clF0SW1wbDo6UGl4bWFwQ29udGVudFR5cGU7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0gICAgICAgIAorICAgICAgICB9CiAgICAgfQogICAgIG1faW1wbC0+bV9wZW5kaW5nQ29udGVu
dC5waXhtYXAgPSBRUGl4bWFwKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAppbmRleCBiNWY3NGM2Li5hMzNhZDAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHAKQEAgLTIwLDE1ICsyMCwxNyBAQAogICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCiAKKyNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKKwogI2luY2x1ZGUgIkFuaW1h
dGlvbkNvbnRyb2xsZXIuaCIKLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpZiBFTkFCTEUo
M0RfQ0FOVkFTKQogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2VuZGlmCiAj
aW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgpAQCAtNDQsMTQgKzQ2LDEzIEBACiAjaW5jbHVk
ZSAiS2V5ZnJhbWVMaXN0LmgiCiAjaW5jbHVkZSAiUGx1Z2luV2lkZ2V0LmgiCiAjaW5jbHVkZSAi
UmVuZGVyQm94LmgiCisjaW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRl
ICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgotI2lu
Y2x1ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAotI2luY2x1
ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC02
NSw3ICs2Niw3IEBAIHN0YXRpYyBib29sIGhhc0JveERlY29yYXRpb25zT3JCYWNrZ3JvdW5kSW1h
Z2UoY29uc3QgUmVuZGVyU3R5bGUqKTsKIAogc3RhdGljIGlubGluZSBib29sIGlzM0RDYW52YXMo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNp
ZiBFTkFCTEUoM0RfQ0FOVkFTKQogICAgIGlmIChyZW5kZXJlci0+aXNDYW52YXMoKSkKICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4ocmVuZGVyZXItPm5vZGUo
KSktPmlzM0QoKTsKICNlbHNlCkBAIC05Miw3ICs5Myw3IEBAIFJlbmRlckxheWVyQmFja2luZzo6
flJlbmRlckxheWVyQmFja2luZygpCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3Jh
cGhpY3NMYXllcigpCiB7CiAgICAgbV9ncmFwaGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6Y3Jl
YXRlKHRoaXMpOwotICAgIAorCiAjaWZuZGVmIE5ERUJVRwogICAgIGlmIChyZW5kZXJlcigpLT5u
b2RlKCkpIHsKICAgICAgICAgaWYgKHJlbmRlcmVyKCktPm5vZGUoKS0+aXNEb2N1bWVudE5vZGUo
KSkKQEAgLTEwNyw3ICsxMDgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3Jh
cGhpY3NMYXllcigpCiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgiUmVmbGVjdGlv
biIpOwogICAgIGVsc2UKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROYW1lKCJBbm9ueW1v
dXMgTm9kZSIpOwotI2VuZGlmICAvLyBOREVCVUcKKyNlbmRpZiAvLyBOREVCVUcKIAogICAgIHVw
ZGF0ZUxheWVyT3BhY2l0eShyZW5kZXJlcigpLT5zdHlsZSgpKTsKICAgICB1cGRhdGVMYXllclRy
YW5zZm9ybShyZW5kZXJlcigpLT5zdHlsZSgpKTsKQEAgLTEzOCw3ICsxMzksNyBAQCB2b2lkIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oY29uc3QgUmVuZGVyU3R5bGUq
IHN0eWxlKQogICAgICAgICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odCwgdG9SZW5kZXJCb3gocmVu
ZGVyZXIoKSktPmJvcmRlckJveFJlY3QoKS5zaXplKCksIFJlbmRlclN0eWxlOjpFeGNsdWRlVHJh
bnNmb3JtT3JpZ2luKTsKICAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUodCwgY29tcG9zaXRv
cigpLT5oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwogICAgIH0KLSAgICAKKwogICAgIG1f
Z3JhcGhpY3NMYXllci0+c2V0VHJhbnNmb3JtKHQpOwogfQogCkBAIC0xNzIsMTQgKzE3MywxNCBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQWZ0ZXJMYXlvdXQoVXBkYXRlRGVwdGgg
dXBkYXRlRGVwdGgsIGJvb2wgaXNVcGRhdAogICAgIGlmICghbGF5ZXJDb21wb3NpdG9yLT5jb21w
b3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCkpIHsKICAgICAgICAgLy8gQ2FsbGluZyB1cGRhdGVH
cmFwaGljc0xheWVyR2VvbWV0cnkoKSBoZXJlIGdpdmVzIGluY29ycmVjdCByZXN1bHRzLCBiZWNh
dXNlIHRoZQogICAgICAgICAvLyBwb3NpdGlvbiBvZiB0aGlzIGxheWVyJ3MgR3JhcGhpY3NMYXll
ciBkZXBlbmRzIG9uIHRoZSBwb3NpdGlvbiBvZiBvdXIgY29tcG9zaXRpbmcKLSAgICAgICAgLy8g
YW5jZXN0b3IncyBHcmFwaGljc0xheWVyLiBUaGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGls
IGFsbCB0aGUgZGVzY2VuZGFudCAKKyAgICAgICAgLy8gYW5jZXN0b3IncyBHcmFwaGljc0xheWVy
LiBUaGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIHVudGlsIGFsbCB0aGUgZGVzY2VuZGFudAogICAg
ICAgICAvLyBSZW5kZXJMYXllcnMgb2YgdGhhdCBhbmNlc3RvciBoYXZlIGJlZW4gcHJvY2Vzc2Vk
IHZpYSB1cGRhdGVMYXllclBvc2l0aW9ucygpLgogICAgICAgICAvLwogICAgICAgICAvLyBUaGUg
c29sdXRpb24gaXMgdG8gdXBkYXRlIGNvbXBvc2l0aW5nIGNoaWxkcmVuIG9mIHRoaXMgbGF5ZXIg
aGVyZSwKICAgICAgICAgLy8gdmlhIHVwZGF0ZUNvbXBvc2l0aW5nQ2hpbGRyZW5HZW9tZXRyeSgp
LgogICAgICAgICB1cGRhdGVDb21wb3NpdGVkQm91bmRzKCk7CiAgICAgICAgIGxheWVyQ29tcG9z
aXRvci0+dXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkobV9vd25pbmdMYXllciwg
bV9vd25pbmdMYXllciwgdXBkYXRlRGVwdGgpOwotICAgICAgICAKKwogICAgICAgICBpZiAoaXNV
cGRhdGVSb290KSB7CiAgICAgICAgICAgICB1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKTsK
ICAgICAgICAgICAgIGxheWVyQ29tcG9zaXRvci0+dXBkYXRlUm9vdExheWVyUG9zaXRpb24oKTsK
QEAgLTE5NCw3ICsxOTUsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhp
Y3NMYXllckNvbmZpZ3VyYXRpb24oKQogICAgIGJvb2wgbGF5ZXJDb25maWdDaGFuZ2VkID0gZmFs
c2U7CiAgICAgaWYgKHVwZGF0ZUZvcmVncm91bmRMYXllcihjb21wb3NpdG9yLT5uZWVkc0NvbnRl
bnRzQ29tcG9zaXRpbmdMYXllcihtX293bmluZ0xheWVyKSkpCiAgICAgICAgIGxheWVyQ29uZmln
Q2hhbmdlZCA9IHRydWU7Ci0gICAgCisKICAgICBpZiAodXBkYXRlQ2xpcHBpbmdMYXllcnMoY29t
cG9zaXRvci0+Y2xpcHBlZEJ5QW5jZXN0b3IobV9vd25pbmdMYXllciksIGNvbXBvc2l0b3ItPmNs
aXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhtX293bmluZ0xheWVyKSkpCiAgICAgICAgIGxheWVy
Q29uZmlnQ2hhbmdlZCA9IHRydWU7CiAKQEAgLTIyMiw3ICsyMjMsNyBAQCBib29sIFJlbmRlckxh
eWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKQogICAgICAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShtZWRpYUVsZW1lbnQtPnBsYXRmb3Jt
TGF5ZXIoKSk7CiAgICAgfQogI2VuZGlmCi0jaWYgRU5BQkxFKDNEX0NBTlZBUykgICAgCisjaWYg
RU5BQkxFKDNEX0NBTlZBUykKICAgICBlbHNlIGlmIChpczNEQ2FudmFzKHJlbmRlcmVyKCkpKSB7
CiAgICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2Fu
dmFzRWxlbWVudCo+KHJlbmRlcmVyKCktPm5vZGUoKSk7CiAgICAgICAgIFdlYkdMUmVuZGVyaW5n
Q29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4dCo+KGNh
bnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpKTsKQEAgLTI0OCwxMyArMjQ5LDEzIEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgIC8vIFNl
dCBvcGFjaXR5LCBpZiBpdCBpcyBub3QgYW5pbWF0aW5nLgogICAgIGlmICghcmVuZGVyZXIoKS0+
YW5pbWF0aW9uKCktPmlzQW5pbWF0aW5nUHJvcGVydHlPblJlbmRlcmVyKHJlbmRlcmVyKCksIENT
U1Byb3BlcnR5T3BhY2l0eSkpCiAgICAgICAgIHVwZGF0ZUxheWVyT3BhY2l0eShyZW5kZXJlcigp
LT5zdHlsZSgpKTsKLSAgICAKKwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyKCkt
PnN0eWxlKCk7CiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRChzdHlsZS0+dHJh
bnNmb3JtU3R5bGUzRCgpID09IFRyYW5zZm9ybVN0eWxlM0RQcmVzZXJ2ZTNEICYmICFyZW5kZXJl
cigpLT5oYXNSZWZsZWN0aW9uKCkpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QmFja2ZhY2VW
aXNpYmlsaXR5KHN0eWxlLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2liaWxp
dHlWaXNpYmxlKTsKIAogICAgIFJlbmRlckxheWVyKiBjb21wQW5jZXN0b3IgPSBtX293bmluZ0xh
eWVyLT5hbmNlc3RvckNvbXBvc2l0aW5nTGF5ZXIoKTsKLSAgICAKKwogICAgIC8vIFdlIGNvbXB1
dGUgZXZlcnl0aGluZyByZWxhdGl2ZSB0byB0aGUgZW5jbG9zaW5nIGNvbXBvc2l0aW5nIGxheWVy
LgogICAgIEludFJlY3QgYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kczsKICAgICBpZiAoY29tcEFu
Y2VzdG9yKSB7CkBAIC0yNzYsNyArMjc3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgICAgICBncmFwaGljc0xheWVyUGFyZW50
TG9jYXRpb24gPSB0b1JlbmRlckJveChjb21wQW5jZXN0b3ItPnJlbmRlcmVyKCkpLT5vdmVyZmxv
d0NsaXBSZWN0KDAsIDApLmxvY2F0aW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGdyYXBoaWNz
TGF5ZXJQYXJlbnRMb2NhdGlvbiA9IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRpb24o
KTsKLSAgICAKKworICAgICAgICBpZiAoIHJlbmRlcmVySGFzQmFja2dyb3VuZCgpICkgeworICAg
ICAgICAgICAgICAgIGNvbnN0IENvbG9yICZiZ0NvbG9yID0gcmVuZGVyZXJCYWNrZ3JvdW5kQ29s
b3IoKTsKKyAgICAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xv
cihiZ0NvbG9yKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbV9ncmFwaGljc0xh
eWVyLT5jbGVhckJhY2tncm91bmRDb2xvcigpOworCiAgICAgaWYgKGNvbXBBbmNlc3RvciAmJiBt
X2FuY2VzdG9yQ2xpcHBpbmdMYXllcikgewogICAgICAgICAvLyBDYWxsIGNhbGN1bGF0ZVJlY3Rz
IHRvIGdldCB0aGUgYmFja2dyb3VuZFJlY3Qgd2hpY2ggaXMgd2hhdCBpcyB1c2VkIHRvIGNsaXAg
dGhlIGNvbnRlbnRzIG9mIHRoaXMKICAgICAgICAgLy8gbGF5ZXIuIE5vdGUgdGhhdCB3ZSBjYWxs
IGl0IHdpdGggdGVtcG9yYXJ5Q2xpcFJlY3RzID0gdHJ1ZSBiZWNhdXNlIG5vcm1hbGx5IHdoZW4g
Y29tcHV0aW5nIGNsaXAgcmVjdHMKQEAgLTI5NSw3ICszMDIsNyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKIAogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpICsgKHJlbGF0aXZlQ29tcG9zaXRpbmdCb3Vu
ZHMubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbikpOwogICAgIG1fZ3Jh
cGhpY3NMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMu
bG9jYXRpb24oKSAtIEludFBvaW50KCkpOwotICAgIAorCiAgICAgRmxvYXRTaXplIG9sZFNpemUg
PSBtX2dyYXBoaWNzTGF5ZXItPnNpemUoKTsKICAgICBGbG9hdFNpemUgbmV3U2l6ZSA9IHJlbGF0
aXZlQ29tcG9zaXRpbmdCb3VuZHMuc2l6ZSgpOwogICAgIGlmIChvbGRTaXplICE9IG5ld1NpemUp
IHsKQEAgLTMxNCwxMiArMzIxLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVH
cmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAgICAgICBtX2NsaXBwaW5nTGF5ZXItPnNldFNpemUo
Y2xpcHBpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgbV9jbGlwcGluZ0xheWVyLT5zZXRPZmZzZXRG
cm9tUmVuZGVyZXIoY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIEludFBvaW50KCkpOwogICAgIH0K
LSAgICAKKwogICAgIGlmIChtX21hc2tMYXllcikgewogICAgICAgICBtX21hc2tMYXllci0+c2V0
U2l6ZShtX2dyYXBoaWNzTGF5ZXItPnNpemUoKSk7CiAgICAgICAgIG1fbWFza0xheWVyLT5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KCkpOwogICAgIH0KLSAgICAKKwogICAgIGlmIChtX293bmluZ0xh
eWVyLT5oYXNUcmFuc2Zvcm0oKSkgewogICAgICAgICBjb25zdCBJbnRSZWN0IGJvcmRlckJveCA9
IHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3JkZXJCb3hSZWN0KCk7CiAKQEAgLTMzNywxMiAr
MzQ0LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2Vv
bWV0cnkoKQogICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZSgp
OwogICAgICAgICBpZiAoc3R5bGUtPmhhc1BlcnNwZWN0aXZlKCkpIHsKICAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHQgPSBvd25pbmdMYXllcigpLT5wZXJzcGVjdGl2ZVRyYW5zZm9y
bSgpOwotICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChtX2NsaXBwaW5nTGF5ZXIpIHsK
ICAgICAgICAgICAgICAgICBtX2NsaXBwaW5nTGF5ZXItPnNldENoaWxkcmVuVHJhbnNmb3JtKHQp
OwogICAgICAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q2hpbGRyZW5UcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNl
dENoaWxkcmVuVHJhbnNmb3JtKHQpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KG1fY2xpcHBpbmdMYXllcikKQEAgLTM3NCw3ICszODAsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFj
a2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICBpZiAobV9vd25pbmdMYXll
ci0+cmVmbGVjdGlvbkxheWVyKCkgJiYgbV9vd25pbmdMYXllci0+cmVmbGVjdGlvbkxheWVyKCkt
PmlzQ29tcG9zaXRlZCgpKSB7CiAgICAgICAgIFJlbmRlckxheWVyQmFja2luZyogcmVmbGVjdGlv
bkJhY2tpbmcgPSBtX293bmluZ0xheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKS0+YmFja2luZygpOwog
ICAgICAgICByZWZsZWN0aW9uQmFja2luZy0+dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCk7
Ci0gICAgICAgIAorCiAgICAgICAgIC8vIFRoZSByZWZsZWN0aW9uIGxheWVyIGhhcyB0aGUgYm91
bmRzIG9mIG1fb3duaW5nTGF5ZXItPnJlZmxlY3Rpb25MYXllcigpLAogICAgICAgICAvLyBidXQg
dGhlIHJlZmxlY3RlZCBsYXllciBpcyB0aGUgYm91bmRzIG9mIHRoaXMgbGF5ZXIsIHNvIHdlIG5l
ZWQgdG8gcG9zaXRpb24gaXQgYXBwcm9wcmlhdGVseS4KICAgICAgICAgRmxvYXRSZWN0IGxheWVy
Qm91bmRzID0gY29tcG9zaXRlZEJvdW5kcygpOwpAQCAtNDIxLDcgKzQyNyw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDbGlwcGluZ0xheWVycyhib29sIG5lZWRzQW5jZXN0b3JD
bGlwLCBib29sIG5lZWRzCiAgICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyID0gMDsKICAg
ICAgICAgbGF5ZXJzQ2hhbmdlZCA9IHRydWU7CiAgICAgfQotICAgIAorCiAgICAgaWYgKG5lZWRz
RGVzY2VuZGFudENsaXApIHsKICAgICAgICAgaWYgKCFtX2NsaXBwaW5nTGF5ZXIpIHsKICAgICAg
ICAgICAgIG1fY2xpcHBpbmdMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSh0aGlzKTsKQEAg
LTQzNiw3ICs0NDIsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2xpcHBpbmdM
YXllcnMoYm9vbCBuZWVkc0FuY2VzdG9yQ2xpcCwgYm9vbCBuZWVkcwogICAgICAgICBtX2NsaXBw
aW5nTGF5ZXIgPSAwOwogICAgICAgICBsYXllcnNDaGFuZ2VkID0gdHJ1ZTsKICAgICB9Ci0gICAg
CisKICAgICBpZiAobGF5ZXJzQ2hhbmdlZCkKICAgICAgICAgdXBkYXRlSW50ZXJuYWxIaWVyYXJj
aHkoKTsKIApAQCAtNTA2LDE4ICs1MTIsMTggQEAgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2Ug
UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludGluZ1BoYXNlRm9yUHJpbWFyeUxheWVyKCkgY28KIGZs
b2F0IFJlbmRlckxheWVyQmFja2luZzo6Y29tcG9zaXRpbmdPcGFjaXR5KGZsb2F0IHJlbmRlcmVy
T3BhY2l0eSkgY29uc3QKIHsKICAgICBmbG9hdCBmaW5hbE9wYWNpdHkgPSByZW5kZXJlck9wYWNp
dHk7Ci0gICAgCisKICAgICBmb3IgKFJlbmRlckxheWVyKiBjdXJyID0gbV9vd25pbmdMYXllci0+
cGFyZW50KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewogICAgICAgICAvLyBXZSBv
bmx5IGNhcmUgYWJvdXQgcGFyZW50cyB0aGF0IGFyZSBzdGFja2luZyBjb250ZXh0cy4KICAgICAg
ICAgLy8gUmVjYWxsIHRoYXQgb3BhY2l0eSBjcmVhdGVzIHN0YWNraW5nIGNvbnRleHQuCiAgICAg
ICAgIGlmICghY3Vyci0+aXNTdGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAKKwogICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGNvbXBvc2l0aW5nIGxheWVy
LCB3ZSB3YW50IHRvIGNvbXB1dGUgb3BhY2l0eQogICAgICAgICAvLyByZWxhdGl2ZSB0byBpdC4g
U28gd2UgY2FuIGJyZWFrIGhlcmUuCiAgICAgICAgIGlmIChjdXJyLT5pc0NvbXBvc2l0ZWQoKSkK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKKwogICAgICAgICBmaW5hbE9wYWNpdHkgKj0g
Y3Vyci0+cmVuZGVyZXIoKS0+b3BhY2l0eSgpOwogICAgIH0KIApAQCAtNTQ2LDE5ICs1NTIsMTkg
QEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVySGFzQmFja2dyb3VuZCgpIGNvbnN0
CiAgICAgICAgIFJlbmRlck9iamVjdCogaHRtbE9iamVjdCA9IHJlbmRlcmVyKCktPmZpcnN0Q2hp
bGQoKTsKICAgICAgICAgaWYgKCFodG1sT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKKwogICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBodG1sT2JqZWN0LT5z
dHlsZSgpOwogICAgICAgICBpZiAoc3R5bGUtPmhhc0JhY2tncm91bmQoKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAKKwogICAgICAgICBSZW5kZXJPYmplY3QqIGJvZHlPYmpl
Y3QgPSBodG1sT2JqZWN0LT5maXJzdENoaWxkKCk7CiAgICAgICAgIGlmICghYm9keU9iamVjdCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisKICAgICAgICAgc3R5bGUgPSBi
b2R5T2JqZWN0LT5zdHlsZSgpOwogICAgICAgICByZXR1cm4gc3R5bGUtPmhhc0JhY2tncm91bmQo
KTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gcmVuZGVyZXIoKS0+c3R5bGUoKS0+aGFzQmFj
a2dyb3VuZCgpOwogfQogCkBAIC01ODUsOCArNTkxLDggQEAgY29uc3QgQ29sb3ImIFJlbmRlckxh
eWVyQmFja2luZzo6cmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAogYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSByZW5kZXJlcigpOwotICAgIGlmIChy
ZW5kZXJPYmplY3QtPmlzUmVwbGFjZWQoKSB8fCAgICAgICAvLyByZXBsYWNlZCBvYmplY3RzIGFy
ZSBub3QgY29udGFpbmVycwotICAgICAgICByZW5kZXJPYmplY3QtPmhhc01hc2soKSkgICAgICAg
ICAgICAvLyBtYXNrcyByZXF1aXJlIHNwZWNpYWwgdHJlYXRtZW50CisgICAgaWYgKHJlbmRlck9i
amVjdC0+aXNSZXBsYWNlZCgpIC8vIHJlcGxhY2VkIG9iamVjdHMgYXJlIG5vdCBjb250YWluZXJz
CisgICAgICAgIHx8IHJlbmRlck9iamVjdC0+aGFzTWFzaygpKSAvLyBtYXNrcyByZXF1aXJlIHNw
ZWNpYWwgdHJlYXRtZW50CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlbmRlclN0eWxl
KiBzdHlsZSA9IHJlbmRlck9iamVjdC0+c3R5bGUoKTsKQEAgLTYwMCw0MiArNjA2LDQyIEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIo
KSBjb25zdAogICAgIC8vIElmIHdlIGhhdmUgZ290IHRoaXMgZmFyIGFuZCB0aGUgcmVuZGVyZXIg
aGFzIG5vIGNoaWxkcmVuLCB0aGVuIHdlJ3JlIG9rLgogICAgIGlmICghcmVuZGVyT2JqZWN0LT5m
aXJzdENoaWxkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIAorCiAgICAgaWYgKHJlbmRl
ck9iamVjdC0+bm9kZSgpICYmIHJlbmRlck9iamVjdC0+bm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgp
KSB7CiAgICAgICAgIC8vIExvb2sgdG8gc2VlIGlmIHRoZSByb290IG9iamVjdCBoYXMgYSBub24t
c2ltcGxlIGJhY2tnb3VuZAogICAgICAgICBSZW5kZXJPYmplY3QqIHJvb3RPYmplY3QgPSByZW5k
ZXJPYmplY3QtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJlcigpOwogICAg
ICAgICBpZiAoIXJvb3RPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IAorCiAgICAgICAgIHN0eWxlID0gcm9vdE9iamVjdC0+c3R5bGUoKTsKLSAgICAgICAgCisKICAg
ICAgICAgLy8gUmVqZWN0IGFueXRoaW5nIHRoYXQgaGFzIGEgYm9yZGVyLCBhIGJvcmRlci1yYWRp
dXMgb3Igb3V0bGluZSwKICAgICAgICAgLy8gb3IgaXMgbm90IGEgc2ltcGxlIGJhY2tncm91bmQg
KG5vIGJhY2tncm91bmQsIG9yIHNvbGlkIGNvbG9yKS4KICAgICAgICAgaWYgKGhhc0JveERlY29y
YXRpb25zT3JCYWNrZ3JvdW5kSW1hZ2Uoc3R5bGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAKKwogICAgICAgICAvLyBOb3cgbG9vayBhdCB0aGUgYm9keSdzIHJlbmRlcmVy
LgogICAgICAgICBIVE1MRWxlbWVudCogYm9keSA9IHJlbmRlck9iamVjdC0+ZG9jdW1lbnQoKS0+
Ym9keSgpOwogICAgICAgICBSZW5kZXJPYmplY3QqIGJvZHlPYmplY3QgPSAoYm9keSAmJiBib2R5
LT5oYXNMb2NhbE5hbWUoYm9keVRhZykpID8gYm9keS0+cmVuZGVyZXIoKSA6IDA7CiAgICAgICAg
IGlmICghYm9keU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgCisK
ICAgICAgICAgc3R5bGUgPSBib2R5T2JqZWN0LT5zdHlsZSgpOwotICAgICAgICAKKwogICAgICAg
ICBpZiAoaGFzQm94RGVjb3JhdGlvbnNPckJhY2tncm91bmRJbWFnZShzdHlsZSkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLy8gQ2VjayB0byBzZWUgaWYgYWxsIHRoZSBi
b2R5J3MgY2hpbGRyZW4gYXJlIGNvbXBvc2l0aW5nIGxheWVycy4KICAgICAgICAgaWYgKGhhc05v
bkNvbXBvc2l0aW5nQ29udGVudCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAKKwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICAvLyBDaGVjayB0byBzZWUg
aWYgYWxsIHRoZSByZW5kZXJlcidzIGNoaWxkcmVuIGFyZSBjb21wb3NpdGluZyBsYXllcnMuCiAg
ICAgaWYgKGhhc05vbkNvbXBvc2l0aW5nQ29udGVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNjQ0LDcgKzY1MCw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJCYWNraW5nOjpoYXNOb25Db21wb3NpdGluZ0NvbnRlbnQoKSBjb25zdAogewog
ICAgIGlmIChtX293bmluZ0xheWVyLT5oYXNPdmVyZmxvd0NvbnRyb2xzKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIAorCiAgICAgLy8gU29tZSBIVE1MIGNhbiBjYXVzZSB3aGl0ZXNwYWNl
IHRleHQgbm9kZXMgdG8gaGF2ZSByZW5kZXJlcnMsIGxpa2U6CiAgICAgLy8gPGRpdj4KICAgICAv
LyA8aW1nIHNyYz0uLi4+CkBAIC02NTQsNyArNjYwLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tp
bmc6Omhhc05vbkNvbXBvc2l0aW5nQ29udGVudCgpIGNvbnN0CiAgICAgICAgIGlmICghY2hpbGQt
Pmhhc0xheWVyKCkpIHsKICAgICAgICAgICAgIGlmIChjaGlsZC0+aXNSZW5kZXJJbmxpbmUoKSB8
fCAhY2hpbGQtPmlzQm94KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICAKKwogICAgICAgICAgICAgaWYgKHRvUmVuZGVyQm94KGNoaWxkKS0+d2lkdGgoKSA+IDAg
fHwgdG9SZW5kZXJCb3goY2hpbGQpLT5oZWlnaHQoKSA+IDApCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTcyNCw3ICs3MzAsNyBAQCB2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6cmVuZGVyZXJDb250ZW50Q2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSNpZiBFTkFCTEUoM0RfQ0FOVkFTKSAgICAKKyNpZiBFTkFCTEUoM0RfQ0FOVkFTKQogICAg
IGlmIChpczNEQ2FudmFzKHJlbmRlcmVyKCkpKSB7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+
c2V0R3JhcGhpY3NDb250ZXh0M0ROZWVkc0Rpc3BsYXkoKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
NzUxLDcgKzc1Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVJbWFnZUNvbnRl
bnRzKCkKIAogICAgIC8vIFRoaXMgaXMgYSBuby1vcCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBoYXZl
IGFuIGlubmVyIGxheWVyIGZvciB0aGUgaW1hZ2UuCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRD
b250ZW50c1RvSW1hZ2UoaW1hZ2UpOwotICAgIAorCiAgICAgLy8gSW1hZ2UgYW5pbWF0aW9uIGlz
ICJsYXp5IiwgaW4gdGhhdCBpdCBhdXRvbWF0aWNhbGx5IHN0b3BzIHVubGVzcyBzb21lb25lIGlz
IGRyYXdpbmcKICAgICAvLyB0aGUgaW1hZ2UuIFNvIHdlIGhhdmUgdG8ga2ljayB0aGUgYW5pbWF0
aW9uIGVhY2ggdGltZTsgdGhpcyBoYXMgdGhlIGRvd25zaWRlIHRoYXQgdGhlCiAgICAgLy8gaW1h
Z2Ugd2lsbCBrZWVwIGFuaW1hdGluZywgZXZlbiBpZiBpdHMgbGF5ZXIgaXMgbm90IHZpc2libGUu
CkBAIC04MzAsNyArODM2LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRz
TmVlZERpc3BsYXkoKQogewogICAgIGlmIChtX2dyYXBoaWNzTGF5ZXIgJiYgbV9ncmFwaGljc0xh
eWVyLT5kcmF3c0NvbnRlbnQoKSkKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKLSAgICAKKwogICAgIGlmIChtX2ZvcmVncm91bmRMYXllciAmJiBtX2ZvcmVncm91
bmRMYXllci0+ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIG1fZm9yZWdyb3VuZExheWVyLT5zZXRO
ZWVkc0Rpc3BsYXkoKTsKIApAQCAtODc3LDcgKzg4Myw3IEBAIHN0YXRpYyB2b2lkIHJlc3RvcmVD
bGlwKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcGFpbnREaXJ0eVJlY3QsIGNv
bnN0CiAKIC8vIFNoYXJlIHRoaXMgd2l0aCBSZW5kZXJMYXllcjo6cGFpbnRMYXllciwgd2hpY2gg
d291bGQgaGF2ZSB0byBiZSBlZHVjYXRlZCBhYm91dCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFz
ZT8KIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciog
cm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlSZWN0LCAgICAgIC8vIGluIHRoZSBjb29yZHMgb2Yg
cm9vdExheWVyCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJlY3QmIHBhaW50RGlydHlS
ZWN0LCAvLyBpbiB0aGUgY29vcmRzIG9mIHJvb3RMYXllcgogICAgICAgICAgICAgICAgICAgICBQ
YWludEJlaGF2aW9yIHBhaW50QmVoYXZpb3IsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlIHBh
aW50aW5nUGhhc2UsCiAgICAgICAgICAgICAgICAgICAgIFJlbmRlck9iamVjdCogcGFpbnRpbmdS
b290KQogewpAQCAtODg1LDE0ICs4OTEsMTQgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBh
aW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdyYXBoaWNzQ29udGV4dCoKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
CisKICAgICBtX293bmluZ0xheWVyLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKLSAgICAK
KwogICAgIC8vIENhbGN1bGF0ZSB0aGUgY2xpcCByZWN0cyB3ZSBzaG91bGQgdXNlLgogICAgIElu
dFJlY3QgbGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGluZVJl
Y3Q7CiAgICAgbV9vd25pbmdMYXllci0+Y2FsY3VsYXRlUmVjdHMocm9vdExheWVyLCBwYWludERp
cnR5UmVjdCwgbGF5ZXJCb3VuZHMsIGRhbWFnZVJlY3QsIGNsaXBSZWN0VG9BcHBseSwgb3V0bGlu
ZVJlY3QpOwotICAgIAotICAgIGludCB4ID0gbGF5ZXJCb3VuZHMueCgpOyAgICAgICAgLy8gbGF5
ZXJCb3VuZHMgaXMgY29tcHV0ZWQgcmVsYXRpdmUgdG8gcm9vdExheWVyCisKKyAgICBpbnQgeCA9
IGxheWVyQm91bmRzLngoKTsgLy8gbGF5ZXJCb3VuZHMgaXMgY29tcHV0ZWQgcmVsYXRpdmUgdG8g
cm9vdExheWVyCiAgICAgaW50IHkgPSBsYXllckJvdW5kcy55KCk7CiAgICAgaW50IHR4ID0geCAt
IG1fb3duaW5nTGF5ZXItPnJlbmRlckJveFgoKTsKICAgICBpbnQgdHkgPSB5IC0gbV9vd25pbmdM
YXllci0+cmVuZGVyQm94WSgpOwpAQCAtOTAxLDcgKzkwNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJC
YWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0Nv
bnRleHQqCiAgICAgLy8gaXMgZG9uZSBieSBwYXNzaW5nIGEgbmlsIHBhaW50aW5nUm9vdCBkb3du
IHRvIG91ciByZW5kZXJlciAoYXMgaWYgbm8gcGFpbnRpbmdSb290IHdhcyBldmVyIHNldCkuCiAg
ICAgLy8gRWxzZSwgb3VyIHJlbmRlcmVyIHRyZWUgbWF5IG9yIG1heSBub3QgY29udGFpbiB0aGUg
cGFpbnRpbmcgcm9vdCwgc28gd2UgcGFzcyB0aGF0IHJvb3QgYWxvbmcKICAgICAvLyBzbyBpdCB3
aWxsIGJlIHRlc3RlZCBhZ2FpbnN0IGFzIHdlIGRlY2VuZCB0aHJvdWdoIHRoZSByZW5kZXJlcnMu
Ci0gICAgUmVuZGVyT2JqZWN0ICpwYWludGluZ1Jvb3RGb3JSZW5kZXJlciA9IDA7CisgICAgUmVu
ZGVyT2JqZWN0KiBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciA9IDA7CiAgICAgaWYgKHBhaW50aW5n
Um9vdCAmJiAhcmVuZGVyZXIoKS0+aXNEZXNjZW5kYW50T2YocGFpbnRpbmdSb290KSkKICAgICAg
ICAgcGFpbnRpbmdSb290Rm9yUmVuZGVyZXIgPSBwYWludGluZ1Jvb3Q7CiAKQEAgLTkxMSwxMyAr
OTE3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJM
YXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgICAgIC8vIElmIHRoaXMgaXMg
dGhlIHJvb3QgdGhlbiB3ZSBuZWVkIHRvIHNlbmQgaW4gYSBiaWdnZXIgYm91bmRpbmcgYm94CiAg
ICAgICAgIC8vIGJlY2F1c2Ugd2UnbGwgYmUgcGFpbnRpbmcgdGhlIGJhY2tncm91bmQgYXMgd2Vs
bCAoc2VlIFJlbmRlckJveDo6cGFpbnRSb290Qm94RGVjb3JhdGlvbnMoKSkuCiAgICAgICAgIElu
dFJlY3QgcGFpbnRCb3ggPSBjbGlwUmVjdFRvQXBwbHk7Ci0gICAgICAgIAorCiAgICAgICAgIC8v
IEZJWE1FOiBkbyB3ZSBuZWVkIHRoaXMgY29kZT8KICAgICAgICAgaWYgKHJlbmRlcmVyKCktPm5v
ZGUoKSAmJiByZW5kZXJlcigpLT5ub2RlKCktPmlzRG9jdW1lbnROb2RlKCkgJiYgcmVuZGVyZXIo
KS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgUmVuZGVyQm94
KiBib3ggPSB0b1JlbmRlckJveChyZW5kZXJlcigpKTsKICAgICAgICAgICAgIGludCB3ID0gYm94
LT53aWR0aCgpOwogICAgICAgICAgICAgaW50IGggPSBib3gtPmhlaWdodCgpOwotICAgICAgICAg
ICAgCisKICAgICAgICAgICAgIGludCBydzsKICAgICAgICAgICAgIGludCByaDsKICAgICAgICAg
ICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGJveC0+dmlldygpLT5mcmFtZVZpZXcoKSkg
ewpAQCAtOTI3LDcgKzkzMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9M
YXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgICAgICAg
ICAgICAgcncgPSBib3gtPnZpZXcoKS0+d2lkdGgoKTsKICAgICAgICAgICAgICAgICByaCA9IGJv
eC0+dmlldygpLT5oZWlnaHQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAg
ICAgICAgICBpbnQgYnggPSB0eCAtIGJveC0+bWFyZ2luTGVmdCgpOwogICAgICAgICAgICAgaW50
IGJ5ID0gdHkgLSBib3gtPm1hcmdpblRvcCgpOwogICAgICAgICAgICAgaW50IGJ3ID0gbWF4KHcg
KyBib3gtPm1hcmdpbkxlZnQoKSArIGJveC0+bWFyZ2luUmlnaHQoKSArIGJveC0+Ym9yZGVyTGVm
dCgpICsgYm94LT5ib3JkZXJSaWdodCgpLCBydyk7CkBAIC05MzgsNyArOTQ0LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIs
IEdyYXBoaWNzQ29udGV4dCoKICAgICAgICAgLy8gUGFpbnQgb3VyIGJhY2tncm91bmQgZmlyc3Qs
IGJlZm9yZSBwYWludGluZyBhbnkgY2hpbGQgbGF5ZXJzLgogICAgICAgICAvLyBFc3RhYmxpc2gg
dGhlIGNsaXAgdXNlZCB0byBwYWludCBvdXIgYmFja2dyb3VuZC4KICAgICAgICAgc2V0Q2xpcChj
b250ZXh0LCBwYWludERpcnR5UmVjdCwgZGFtYWdlUmVjdCk7Ci0gICAgICAgIAorCiAgICAgICAg
IFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIGluZm8oY29udGV4dCwgcGFpbnRCb3gsIFBhaW50UGhh
c2VCbG9ja0JhY2tncm91bmQsIGZhbHNlLCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwgMCk7CiAg
ICAgICAgIHJlbmRlcmVyKCktPnBhaW50KGluZm8sIHR4LCB0eSk7CiAKQEAgLTk0NiwxMSArOTUy
LDExIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXll
ciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgICAgIC8vIHotaW5kZXguICBXZSBw
YWludCBhZnRlciB3ZSBwYWludGVkIHRoZSBiYWNrZ3JvdW5kL2JvcmRlciwgc28gdGhhdCB0aGUg
c2Nyb2xsYmFycyB3aWxsCiAgICAgICAgIC8vIHNpdCBhYm92ZSB0aGUgYmFja2dyb3VuZC9ib3Jk
ZXIuCiAgICAgICAgIG1fb3duaW5nTGF5ZXItPnBhaW50T3ZlcmZsb3dDb250cm9scyhjb250ZXh0
LCB4LCB5LCBkYW1hZ2VSZWN0KTsKLSAgICAgICAgCisKICAgICAgICAgLy8gUmVzdG9yZSB0aGUg
Y2xpcC4KICAgICAgICAgcmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFn
ZVJlY3QpOwogICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgIGJvb2wgZm9yY2VCbGFja1Rl
eHQgPSBwYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvckZvcmNlQmxhY2tUZXh0OwogICAgIGJv
b2wgc2VsZWN0aW9uT25seSAgPSBwYWludEJlaGF2aW9yICYgUGFpbnRCZWhhdmlvclNlbGVjdGlv
bk9ubHk7CiAKQEAgLTk2NSw3ICs5NzEsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6cGFp
bnRJbnRvTGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgR3JhcGhpY3NDb250ZXh0KgogCiAg
ICAgICAgIC8vIFNldCB1cCB0aGUgY2xpcCB1c2VkIHdoZW4gcGFpbnRpbmcgb3VyIGNoaWxkcmVu
LgogICAgICAgICBzZXRDbGlwKGNvbnRleHQsIHBhaW50RGlydHlSZWN0LCBjbGlwUmVjdFRvQXBw
bHkpOwotICAgICAgICBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyBwYWludEluZm8oY29udGV4dCwg
Y2xpcFJlY3RUb0FwcGx5LCAKKyAgICAgICAgUmVuZGVyT2JqZWN0OjpQYWludEluZm8gcGFpbnRJ
bmZvKGNvbnRleHQsIGNsaXBSZWN0VG9BcHBseSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdGlvbk9ubHkgPyBQYWludFBoYXNlU2VsZWN0aW9uIDogUGFp
bnRQaGFzZUNoaWxkQmxvY2tCYWNrZ3JvdW5kcywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcmNlQmxhY2tUZXh0LCBwYWludGluZ1Jvb3RGb3JSZW5kZXJlciwg
MCk7CiAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKQEAgLTEw
MDYsNyArMTAxMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihS
ZW5kZXJMYXllciogcm9vdExheWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgICAgICAgICAgICAg
aXRbMF0tPnBhaW50TGF5ZXIocm9vdExheWVyLCBjb250ZXh0LCBwYWludERpcnR5UmVjdCwgcGFp
bnRCZWhhdmlvciwgcGFpbnRpbmdSb290KTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAg
IGlmIChzaG91bGRQYWludCAmJiAocGFpbnRpbmdQaGFzZSAmIEdyYXBoaWNzTGF5ZXJQYWludE1h
c2spKSB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpLT5oYXNNYXNrKCkgJiYgIXNlbGVjdGlvbk9u
bHkgJiYgIWRhbWFnZVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBzZXRDbGlwKGNvbnRl
eHQsIHBhaW50RGlydHlSZWN0LCBkYW1hZ2VSZWN0KTsKQEAgLTEwMTQsNyArMTAyMCw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciogcm9vdExh
eWVyLCBHcmFwaGljc0NvbnRleHQqCiAgICAgICAgICAgICAvLyBQYWludCB0aGUgbWFzay4KICAg
ICAgICAgICAgIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvIHBhaW50SW5mbyhjb250ZXh0LCBkYW1h
Z2VSZWN0LCBQYWludFBoYXNlTWFzaywgZmFsc2UsIHBhaW50aW5nUm9vdEZvclJlbmRlcmVyLCAw
KTsKICAgICAgICAgICAgIHJlbmRlcmVyKCktPnBhaW50KHBhaW50SW5mbywgdHgsIHR5KTsKLSAg
ICAgICAgICAgIAorCiAgICAgICAgICAgICAvLyBSZXN0b3JlIHRoZSBjbGlwLgogICAgICAgICAg
ICAgcmVzdG9yZUNsaXAoY29udGV4dCwgcGFpbnREaXJ0eVJlY3QsIGRhbWFnZVJlY3QpOwogICAg
ICAgICB9CkBAIC0xMDQ5LDEzICsxMDU1LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGNvCiAg
ICAgSW50UmVjdCBlbmNsb3NpbmdCQm94ID0gY29tcG9zaXRlZEJvdW5kcygpOwogCiAgICAgSW50
UmVjdCBjbGlwUmVjdChjbGlwKTsKLSAgICAKKwogICAgIC8vIFNldCB1cCB0aGUgY29vcmRpbmF0
ZSBzcGFjZSB0byBiZSBpbiB0aGUgbGF5ZXIncyByZW5kZXJpbmcgY29vcmRpbmF0ZXMuCiAgICAg
Y29udGV4dC50cmFuc2xhdGUoLWVuY2xvc2luZ0JCb3gueCgpLCAtZW5jbG9zaW5nQkJveC55KCkp
OwogCiAgICAgLy8gT2Zmc2V0IHRoZSBjbGlwLgogICAgIGNsaXBSZWN0Lm1vdmUoZW5jbG9zaW5n
QkJveC54KCksIGVuY2xvc2luZ0JCb3gueSgpKTsKLSAgICAKKwogICAgIC8vIFRoZSBkaXJ0eVJl
Y3QgaXMgaW4gdGhlIGNvb3JkcyBvZiB0aGUgcGFpbnRpbmcgcm9vdC4KICAgICBJbnRSZWN0IGRp
cnR5UmVjdCA9IGVuY2xvc2luZ0JCb3g7CiAgICAgZGlydHlSZWN0LmludGVyc2VjdChjbGlwUmVj
dCk7CkBAIC0xMDgyLDEwICsxMDg4LDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFy
dEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCwgY29uc3QgQW5pbWF0aW9uKiBhbmltCiB7CiAg
ICAgYm9vbCBoYXNPcGFjaXR5ID0ga2V5ZnJhbWVzLmNvbnRhaW5zUHJvcGVydHkoQ1NTUHJvcGVy
dHlPcGFjaXR5KTsKICAgICBib29sIGhhc1RyYW5zZm9ybSA9IGtleWZyYW1lcy5jb250YWluc1By
b3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLSAgICAKKwogICAgIGlmICghaGFz
T3BhY2l0eSAmJiAhaGFzVHJhbnNmb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisK
ICAgICBLZXlmcmFtZVZhbHVlTGlzdCB0cmFuc2Zvcm1WZWN0b3IoQW5pbWF0ZWRQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybSk7CiAgICAgS2V5ZnJhbWVWYWx1ZUxpc3Qgb3BhY2l0eVZlY3RvcihBbmlt
YXRlZFByb3BlcnR5T3BhY2l0eSk7CiAKQEAgLTEwOTUsMjYgKzExMDEsMjYgQEAgYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6OnN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBB
bmltYXRpb24qIGFuaW0KIAogICAgICAgICBpZiAoIWtleWZyYW1lU3R5bGUpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIC8vIGdldCB0aW1pbmcgZnVuY3Rp
b24KICAgICAgICAgY29uc3QgVGltaW5nRnVuY3Rpb24qIHRmID0ga2V5ZnJhbWVTdHlsZS0+aGFz
QW5pbWF0aW9ucygpID8gJigoKmtleWZyYW1lU3R5bGUtPmFuaW1hdGlvbnMoKSkuYW5pbWF0aW9u
KDApLT50aW1pbmdGdW5jdGlvbigpKSA6IDA7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChoYXNU
cmFuc2Zvcm0pCiAgICAgICAgICAgICB0cmFuc2Zvcm1WZWN0b3IuaW5zZXJ0KG5ldyBUcmFuc2Zv
cm1BbmltYXRpb25WYWx1ZShrZXksICYoa2V5ZnJhbWVTdHlsZS0+dHJhbnNmb3JtKCkpLCB0Zikp
OwotICAgICAgICAKKwogICAgICAgICBpZiAoaGFzT3BhY2l0eSkKICAgICAgICAgICAgIG9wYWNp
dHlWZWN0b3IuaW5zZXJ0KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGtleSwga2V5ZnJhbWVTdHls
ZS0+b3BhY2l0eSgpLCB0ZikpOwogICAgIH0KIAogICAgIGJvb2wgZGlkQW5pbWF0ZVRyYW5zZm9y
bSA9ICFoYXNUcmFuc2Zvcm07CiAgICAgYm9vbCBkaWRBbmltYXRlT3BhY2l0eSA9ICFoYXNPcGFj
aXR5OwotICAgIAorCiAgICAgaWYgKGhhc1RyYW5zZm9ybSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFk
ZEFuaW1hdGlvbih0cmFuc2Zvcm1WZWN0b3IsIHRvUmVuZGVyQm94KHJlbmRlcmVyKCkpLT5ib3Jk
ZXJCb3hSZWN0KCkuc2l6ZSgpLCBhbmltLCBrZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpLCB0aW1l
T2Zmc2V0KSkKICAgICAgICAgZGlkQW5pbWF0ZVRyYW5zZm9ybSA9IHRydWU7CiAKICAgICBpZiAo
aGFzT3BhY2l0eSAmJiBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbihvcGFjaXR5VmVjdG9y
LCBJbnRTaXplKCksIGFuaW0sIGtleWZyYW1lcy5hbmltYXRpb25OYW1lKCksIHRpbWVPZmZzZXQp
KQogICAgICAgICBkaWRBbmltYXRlT3BhY2l0eSA9IHRydWU7Ci0gICAgCisKICAgICBib29sIHJ1
bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbiA9IGRpZEFuaW1hdGVUcmFuc2Zvcm0gJiYgZGlkQW5p
bWF0ZU9wYWNpdHk7CiAgICAgaWYgKHJ1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbikKICAgICAg
ICAgY29tcG9zaXRvcigpLT5kaWRTdGFydEFjY2VsZXJhdGVkQW5pbWF0aW9uKCk7CkBAIC0xMTU4
LDcgKzExNjQsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6c3RhcnRUcmFuc2l0aW9uKGRv
dWJsZSB0aW1lT2Zmc2V0LCBpbnQgcHJvcGVydHksIGNvbnN0CiAKICAgICBpZiAoZGlkQW5pbWF0
ZSkKICAgICAgICAgY29tcG9zaXRvcigpLT5kaWRTdGFydEFjY2VsZXJhdGVkQW5pbWF0aW9uKCk7
Ci0gICAgCisKICAgICByZXR1cm4gZGlkQW5pbWF0ZTsKIH0KIApAQCAtMTIxNCwxNyArMTIyMCwx
NyBAQCBpbnQgUmVuZGVyTGF5ZXJCYWNraW5nOjpncmFwaGljc0xheWVyVG9DU1NQcm9wZXJ0eShB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7CiAgICAgaW50IGNzc1Byb3BlcnR5ID0gQ1NT
UHJvcGVydHlJbnZhbGlkOwogICAgIHN3aXRjaCAocHJvcGVydHkpIHsKLSAgICAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgotICAgICAgICAgICAgY3NzUHJvcGVydHkg
PSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgotICAgICAgICAgICAgY3NzUHJvcGVydHkg
PSBDU1NQcm9wZXJ0eU9wYWNpdHk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBB
bmltYXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yOgotICAgICAgICAgICAgY3NzUHJvcGVydHkg
PSBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkOgotICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgY2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgorICAg
ICAgICBjc3NQcm9wZXJ0eSA9IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5OgorICAgICAgICBjc3NQcm9w
ZXJ0eSA9IENTU1Byb3BlcnR5T3BhY2l0eTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmlt
YXRlZFByb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgICAgICBjc3NQcm9wZXJ0eSA9IENTU1By
b3BlcnR5QmFja2dyb3VuZENvbG9yOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVk
UHJvcGVydHlJbnZhbGlkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAg
ICAgcmV0dXJuIGNzc1Byb3BlcnR5OwogfQpAQCAtMTIzMiwxMiArMTIzOCwxMiBAQCBpbnQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpncmFwaGljc0xheWVyVG9DU1NQcm9wZXJ0eShBbmltYXRlZFByb3Bl
cnR5SUQgcHJvcGVydHkpCiBBbmltYXRlZFByb3BlcnR5SUQgUmVuZGVyTGF5ZXJCYWNraW5nOjpj
c3NUb0dyYXBoaWNzTGF5ZXJQcm9wZXJ0eShpbnQgY3NzUHJvcGVydHkpCiB7CiAgICAgc3dpdGNo
IChjc3NQcm9wZXJ0eSkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
OgotICAgICAgICAgICAgcmV0dXJuIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm07Ci0g
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgotICAgICAgICAgICAgcmV0dXJuIEFuaW1h
dGVkUHJvcGVydHlPcGFjaXR5OwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yOgotICAgICAgICAgICAgcmV0dXJuIEFuaW1hdGVkUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKKyAgICAgICAgcmV0dXJuIEFu
aW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm07CisgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNp
dHk6CisgICAgICAgIHJldHVybiBBbmltYXRlZFByb3BlcnR5T3BhY2l0eTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgorICAgICAgICByZXR1cm4gQW5pbWF0ZWRQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcjsKICAgICAgICAgLy8gSXQncyBmaW5lIGlmIHdlIHNlZSBvdGhlciBj
c3MgcHJvcGVydGllcyBoZXJlOyB0aGV5IGFyZSBqdXN0IG5vdCBhY2NlbGVyYXRlZC4KICAgICB9
CiAgICAgcmV0dXJuIEFuaW1hdGVkUHJvcGVydHlJbnZhbGlkOwotLSAKMS43LjEKCg==
</data>
<flag name="review"
          id="44910"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59434</attachid>
            <date>2010-06-22 16:10:29 -0700</date>
            <delta_ts>2010-06-25 10:11:51 -0700</delta_ts>
            <desc>Rediff against trunk</desc>
            <filename>bug-40380.patch</filename>
            <type>text/plain</type>
            <size>6447</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">RnJvbSBiMzRhYzlhZTdlMTZiMTFiMWIxY2VkZWI1MjQ2N2UzYWQ2MjA1M2U3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW0gTWFnbnVzb24gPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4K
RGF0ZTogTW9uLCAyMSBKdW4gMjAxMCAyMTowMDowOSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF0gV2hlbiBhIGxheWVyIGlzIHJlYWxseSBvcGFxdWUgKGllIGhhcyBhIGJhY2tncm91bmQgY29s
b3IgdGhhdCBoYXMgMjU1CiBhbHBoYSkgd2Ugc2hvdWxkIGZpbGwgdGhlIGxheWVyIHdpdGggdGhh
dAogY29sb3IgdG8gdGVsbCBRdCB0aGF0IHRoZSBwaXhlbWFwIGhhcyBubyBhbHBoYS4KIGJ1Zy00
MDM4MAoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDM3ICsrKysrKysrKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcCB8ICAgMjAgKysrKysrKystLS0KIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgICAgICAgICB8ICAgIDYgKysrCiAzIGZpbGVz
IGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2OWIxNjc5Li5iMWNk
NjI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQwIEBACisyMDEwLTA2LTA5ICBTYW0gTWFnbnVzb24gIDxzbWFnbnVzb25A
bmV0ZmxpeC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW1F0XSBXaGVuIGEgbGF5ZXIgaXMgcmVhbGx5IG9wYXF1ZSAoaWUgaGFzIGEgYmFja2dy
b3VuZCBjb2xvciB0aGF0CisgICAgICAgIGhhcyAyNTUgYWxwaGEpIHdlIHNob3VsZCBmaWxsIHRo
ZSBsYXllciB3aXRoIHRoYXQgY29sb3IgdG8gdGVsbCBRdAorICAgICAgICB0aGF0IHRoZSBwaXhl
bWFwIGhhcyBubyBhbHBoYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQwMzgwCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgZm9yIHNldEJhY2tncm91
bmRDb2xvci9jbGVhckJhY2tncm91bmQgY29sb3IgYW5kCisgICAgICAgIHVzaW5nIGl0IGluIFFH
cmFwaGljc0xheWVyIHRvIHByZS1maWxsIHRoZSBwaXhtYXAgY2FjaGUuCisgICAgICAgIAorICAg
ICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
UXRJbXBsOjpyZWNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdEltcGw6
OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzM0RDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVBZnRlckxheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXll
ckdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
Q2xpcHBpbmdMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpj
b21wb3NpdGluZ09wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5n
OjpyZW5kZXJlckhhc0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpoYXNOb25Db21wb3NpdGluZ0NvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlckNvbnRlbnRDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRz
TmVlZERpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWlu
dEludG9MYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50
Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFu
aW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJh
bnNpdGlvbik6CisKIDIwMTAtMDYtMjEgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI2MTU4NS4KZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAppbmRl
eCA4ZWQwZDg5Li4wZDdhYzlmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0xheWVyUXQuY3BwCkBAIC0zNDUsNiArMzQ1LDEwIEBAIFFQaXhtYXAgR3JhcGhp
Y3NMYXllclF0SW1wbDo6cmVjYWNoZShjb25zdCBRUmVnaW9uJiByZWdpb25Ub1VwZGF0ZSkKICAg
ICBRUmVnaW9uIHJlZ2lvbiA9IHJlZ2lvblRvVXBkYXRlOwogICAgIFFQaXhtYXAgcGl4bWFwOwog
CisgICAgUUNvbG9yIGJhY2tncm91bmQgPSBtX2N1cnJlbnRDb250ZW50LmJhY2tncm91bmRDb2xv
cjsKKyAgICBpZiAoIWJhY2tncm91bmQuaXNWYWxpZCgpKQorICAgICAgICBiYWNrZ3JvdW5kID0g
UXQ6OnRyYW5zcGFyZW50OworCiAgICAgLy8gV2UgbWlnaHQgYmUgZHJhd2luZyBpbnRvIGFuIGV4
aXN0aW5nIGNhY2hlLgogICAgIGlmICghUVBpeG1hcENhY2hlOjpmaW5kKG1fYmFja2luZ1N0b3Jl
S2V5LCAmcGl4bWFwKSkKICAgICAgICAgcmVnaW9uID0gUVJlZ2lvbihRUmVjdCgwLCAwLCBtX3Np
emUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7CkBAIC0zNTIsNyArMzU2LDcgQEAgUVBpeG1h
cCBHcmFwaGljc0xheWVyUXRJbXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lvblRvVXBk
YXRlKQogICAgIGlmIChtX3NpemUgIT0gcGl4bWFwLnNpemUoKSkgewogICAgICAgICBwaXhtYXAg
PSBRUGl4bWFwKG1fc2l6ZS50b1NpemUoKSk7CiAgICAgICAgIGlmICghbV9sYXllci0+Y29udGVu
dHNPcGFxdWUoKSkKLSAgICAgICAgICAgIHBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7Cisg
ICAgICAgICAgICBwaXhtYXAuZmlsbChiYWNrZ3JvdW5kKTsKICAgICAgICAgbV9wZW5kaW5nQ29u
dGVudC5yZWdpb25Ub1VwZGF0ZSA9IFFSZWdpb24oUVJlY3QoUVBvaW50KDAsIDApLCBtX3NpemUu
dG9TaXplKCkpKTsKICAgICB9CiAKQEAgLTM2MCw4ICszNjQsMTEgQEAgUVBpeG1hcCBHcmFwaGlj
c0xheWVyUXRJbXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lvblRvVXBkYXRlKQogICAg
IEdyYXBoaWNzQ29udGV4dCBnYygmcGFpbnRlcik7CiAKICAgICAvLyBDbGVhciB0aGUgYXJlYSBp
biBjYWNoZSB0aGF0IHdlJ3JlIGRyYXdpbmcgaW50bwotICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRp
b25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfQ2xlYXIpOwotICAgIHBhaW50ZXIuZmls
bFJlY3QocmVnaW9uLmJvdW5kaW5nUmVjdCgpLCBRdDo6dHJhbnNwYXJlbnQpOworICAgIGlmICgg
YmFja2dyb3VuZCA9PSBRdDo6dHJhbnNwYXJlbnQgKQorICAgICAgICBwYWludGVyLnNldENvbXBv
c2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0NsZWFyKTsKKyAgICBlbHNlCisg
ICAgICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfU291cmNlKTsKKyAgICBwYWludGVyLmZpbGxSZWN0KHJlZ2lvbi5ib3VuZGluZ1JlY3QoKSwg
YmFja2dyb3VuZCk7CiAKICAgICAvLyBSZW5kZXIgdGhlIGFjdHVhbCBjb250ZW50cyBpbnRvIHRo
ZSBjYWNoZQogICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3Np
dGlvbk1vZGVfU291cmNlT3Zlcik7CkBAIC00NzksOSArNDg2LDYgQEAgUVJlY3RGIEdyYXBoaWNz
TGF5ZXJRdEltcGw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NMYXllclF0
SW1wbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNz
SXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKG1fY3VycmVudENvbnRl
bnQuYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qo
b3B0aW9uLT5yZWN0LCBRQ29sb3IobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IpKTsK
LQogICAgIHN3aXRjaCAobV9jdXJyZW50Q29udGVudC5jb250ZW50VHlwZSkgewogICAgIGNhc2Ug
SFRNTENvbnRlbnRUeXBlOgogICAgICAgICBpZiAobV9zdGF0ZS5kcmF3c0NvbnRlbnQpIHsKQEAg
LTQ5Myw5ICs0OTcsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpwYWludChRUGFpbnRl
ciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGUKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFBpeG1hcENvbnRlbnRUeXBlOgorICAgICAgICBpZiAobV9j
dXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgcGFp
bnRlci0+ZmlsbFJlY3Qob3B0aW9uLT5yZWN0LCBRQ29sb3IobV9jdXJyZW50Q29udGVudC5iYWNr
Z3JvdW5kQ29sb3IpKTsKICAgICAgICAgcGFpbnRlci0+ZHJhd1BpeG1hcChtX3N0YXRlLmNvbnRl
bnRzUmVjdCwgbV9jdXJyZW50Q29udGVudC5waXhtYXApOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvbG9yQ29udGVudFR5cGU6CisgICAgICAgIGlmIChtX2N1cnJlbnRDb250ZW50LmJhY2tn
cm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBwYWludGVyLT5maWxsUmVjdChvcHRp
b24tPnJlY3QsIFFDb2xvcihtX2N1cnJlbnRDb250ZW50LmJhY2tncm91bmRDb2xvcikpOwogICAg
ICAgICBwYWludGVyLT5maWxsUmVjdChtX3N0YXRlLmNvbnRlbnRzUmVjdCwgbV9jdXJyZW50Q29u
dGVudC5jb250ZW50c0JhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TWVkaWFDb250ZW50VHlwZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDlhN2YxMTkuLmNlMGVjMTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcApAQCAtMjgyLDYgKzI4MiwxMiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAgICAgZ3JhcGhpY3NMYXllclBhcmVu
dExvY2F0aW9uID0gY2xpcHBpbmdCb3gubG9jYXRpb24oKTsKICAgICB9IGVsc2UKICAgICAgICAg
Z3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcy5s
b2NhdGlvbigpOworCisgICAgaWYgKCByZW5kZXJlckhhc0JhY2tncm91bmQoKSApIHsKKyAgICAg
ICAgY29uc3QgQ29sb3IgJmJnQ29sb3IgPSByZW5kZXJlckJhY2tncm91bmRDb2xvcigpOworICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihiZ0NvbG9yKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5jbGVhckJhY2tncm91bmRDb2xvcigpOwog
ICAgIAogICAgIGlmIChjb21wQW5jZXN0b3IgJiYgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXIpIHsK
ICAgICAgICAgLy8gQ2FsbCBjYWxjdWxhdGVSZWN0cyB0byBnZXQgdGhlIGJhY2tncm91bmRSZWN0
IHdoaWNoIGlzIHdoYXQgaXMgdXNlZCB0byBjbGlwIHRoZSBjb250ZW50cyBvZiB0aGlzCi0tIAox
LjcuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59777</attachid>
            <date>2010-06-25 10:11:54 -0700</date>
            <delta_ts>2010-06-28 13:33:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40380-20100625101153.patch</filename>
            <type>text/plain</type>
            <size>5999</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzMxOWI4YTlhNTdiMDA3NjVjNzZkYzBhYWM5MDlmNmJkZjFmNDY0MC4uNGY5YTM3ODcwODNkYTg2
ZmQ2ZjA3MmZmYjI4ZDlkY2JlNDVkZGVhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNi0wOSAgU2Ft
IE1hZ251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gV2hlbiBhIGxheWVyIGlzIHJlYWxseSBv
cGFxdWUgKGllIGhhcyBhIGJhY2tncm91bmQgY29sb3IgdGhhdAorICAgICAgICBoYXMgMjU1IGFs
cGhhKSB3ZSBzaG91bGQgZmlsbCB0aGUgbGF5ZXIgd2l0aCB0aGF0IGNvbG9yIHRvIHRlbGwgUXQK
KyAgICAgICAgdGhhdCB0aGUgcGl4ZW1hcCBoYXMgbm8gYWxwaGEuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM4MAorCisgICAgICAgIEFkZGluZyBz
dXBwb3J0IGZvciBzZXRCYWNrZ3JvdW5kQ29sb3IvY2xlYXJCYWNrZ3JvdW5kIGNvbG9yIGFuZAor
ICAgICAgICB1c2luZyBpdCBpbiBRR3JhcGhpY3NMYXllciB0byBwcmUtZmlsbCB0aGUgcGl4bWFw
IGNhY2hlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogdGhpcyBpcyBhbiBvcHRpbWl6YXRpb24u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1wbDo6cmVjYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBsOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppczNEQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUxheWVy
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
QWZ0ZXJMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNsaXBwaW5nTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcG9zaXRpbmdPcGFjaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJIYXNCYWNrZ3JvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJD
b21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6
aGFzTm9uQ29tcG9zaXRpbmdDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6cmVuZGVyZXJDb250ZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEwLTA2LTI1ICBB
ZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxkIGZp
eApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVy
UXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3Bw
CmluZGV4IDhlZDBkODk2NDU4MTM4NzllYzIyNzAwY2YyYTAyYTJiYTg1NDViMmMuLmQzNjExNjlk
MWIzYzYzMmNhZjc0MmY3MDU5YmE1ZjkzOTUxZDkyNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKQEAgLTM0NSw2ICszNDUsMTAgQEAg
UVBpeG1hcCBHcmFwaGljc0xheWVyUXRJbXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lv
blRvVXBkYXRlKQogICAgIFFSZWdpb24gcmVnaW9uID0gcmVnaW9uVG9VcGRhdGU7CiAgICAgUVBp
eG1hcCBwaXhtYXA7CiAKKyAgICBRQ29sb3IgYmFja2dyb3VuZCA9IG1fY3VycmVudENvbnRlbnQu
YmFja2dyb3VuZENvbG9yOworICAgIGlmICghYmFja2dyb3VuZC5pc1ZhbGlkKCkpCisgICAgICAg
IGJhY2tncm91bmQgPSBRdDo6dHJhbnNwYXJlbnQ7CisKICAgICAvLyBXZSBtaWdodCBiZSBkcmF3
aW5nIGludG8gYW4gZXhpc3RpbmcgY2FjaGUuCiAgICAgaWYgKCFRUGl4bWFwQ2FjaGU6OmZpbmQo
bV9iYWNraW5nU3RvcmVLZXksICZwaXhtYXApKQogICAgICAgICByZWdpb24gPSBRUmVnaW9uKFFS
ZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpKTsKQEAgLTM1Miw3ICsz
NTYsNyBAQCBRUGl4bWFwIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lv
biYgcmVnaW9uVG9VcGRhdGUpCiAgICAgaWYgKG1fc2l6ZSAhPSBwaXhtYXAuc2l6ZSgpKSB7CiAg
ICAgICAgIHBpeG1hcCA9IFFQaXhtYXAobV9zaXplLnRvU2l6ZSgpKTsKICAgICAgICAgaWYgKCFt
X2xheWVyLT5jb250ZW50c09wYXF1ZSgpKQotICAgICAgICAgICAgcGl4bWFwLmZpbGwoUXQ6OnRy
YW5zcGFyZW50KTsKKyAgICAgICAgICAgIHBpeG1hcC5maWxsKGJhY2tncm91bmQpOwogICAgICAg
ICBtX3BlbmRpbmdDb250ZW50LnJlZ2lvblRvVXBkYXRlID0gUVJlZ2lvbihRUmVjdChRUG9pbnQo
MCwgMCksIG1fc2l6ZS50b1NpemUoKSkpOwogICAgIH0KIApAQCAtMzYwLDggKzM2NCwxMSBAQCBR
UGl4bWFwIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lvbiYgcmVnaW9u
VG9VcGRhdGUpCiAgICAgR3JhcGhpY3NDb250ZXh0IGdjKCZwYWludGVyKTsKIAogICAgIC8vIENs
ZWFyIHRoZSBhcmVhIGluIGNhY2hlIHRoYXQgd2UncmUgZHJhd2luZyBpbnRvCi0gICAgcGFpbnRl
ci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9DbGVhcik7Ci0g
ICAgcGFpbnRlci5maWxsUmVjdChyZWdpb24uYm91bmRpbmdSZWN0KCksIFF0Ojp0cmFuc3BhcmVu
dCk7CisgICAgaWYgKGJhY2tncm91bmQgPT0gUXQ6OnRyYW5zcGFyZW50KQorICAgICAgICBwYWlu
dGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX0NsZWFyKTsK
KyAgICBlbHNlCisgICAgICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpD
b21wb3NpdGlvbk1vZGVfU291cmNlKTsKKyAgICBwYWludGVyLmZpbGxSZWN0KHJlZ2lvbi5ib3Vu
ZGluZ1JlY3QoKSwgYmFja2dyb3VuZCk7CiAKICAgICAvLyBSZW5kZXIgdGhlIGFjdHVhbCBjb250
ZW50cyBpbnRvIHRoZSBjYWNoZQogICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWlu
dGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlT3Zlcik7CkBAIC00NzksOSArNDg2LDYgQEAgUVJl
Y3RGIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmJvdW5kaW5nUmVjdCgpIGNvbnN0CiAKIHZvaWQgR3Jh
cGhpY3NMYXllclF0SW1wbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9w
dGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3aWRnZXQpCiB7Ci0gICAgaWYgKG1f
Y3VycmVudENvbnRlbnQuYmFja2dyb3VuZENvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgcGFpbnRl
ci0+ZmlsbFJlY3Qob3B0aW9uLT5yZWN0LCBRQ29sb3IobV9jdXJyZW50Q29udGVudC5iYWNrZ3Jv
dW5kQ29sb3IpKTsKLQogICAgIHN3aXRjaCAobV9jdXJyZW50Q29udGVudC5jb250ZW50VHlwZSkg
ewogICAgIGNhc2UgSFRNTENvbnRlbnRUeXBlOgogICAgICAgICBpZiAobV9zdGF0ZS5kcmF3c0Nv
bnRlbnQpIHsKQEAgLTQ5Myw5ICs0OTcsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpw
YWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGUKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFBpeG1hcENvbnRlbnRUeXBlOgorICAg
ICAgICBpZiAobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQorICAg
ICAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qob3B0aW9uLT5yZWN0LCBRQ29sb3IobV9jdXJyZW50
Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IpKTsKICAgICAgICAgcGFpbnRlci0+ZHJhd1BpeG1hcCht
X3N0YXRlLmNvbnRlbnRzUmVjdCwgbV9jdXJyZW50Q29udGVudC5waXhtYXApOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbG9yQ29udGVudFR5cGU6CisgICAgICAgIGlmIChtX2N1cnJlbnRD
b250ZW50LmJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICAgICBwYWludGVyLT5m
aWxsUmVjdChvcHRpb24tPnJlY3QsIFFDb2xvcihtX2N1cnJlbnRDb250ZW50LmJhY2tncm91bmRD
b2xvcikpOwogICAgICAgICBwYWludGVyLT5maWxsUmVjdChtX3N0YXRlLmNvbnRlbnRzUmVjdCwg
bV9jdXJyZW50Q29udGVudC5jb250ZW50c0JhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVkaWFDb250ZW50VHlwZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCmluZGV4IDc5NGI1NWEzZGViZjAxNWMzYTY0NGZlNWRmNGVkZmQxOWE1ZjAx
NGMuLjY2ZDlkNDc5ODAxYjU2YmQ4ZDRlMTZlMjQxODQ1ZmJkZTMwZTZkYTQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMjgyLDYgKzI4MiwxMiBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAg
ICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gY2xpcHBpbmdCb3gubG9jYXRpb24oKTsK
ICAgICB9IGVsc2UKICAgICAgICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gYW5jZXN0
b3JDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpOworCisgICAgaWYgKHJlbmRlcmVySGFzQmFj
a2dyb3VuZCgpKSB7CisgICAgICAgIGNvbnN0IENvbG9yICZiZ0NvbG9yID0gcmVuZGVyZXJCYWNr
Z3JvdW5kQ29sb3IoKTsKKyAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29s
b3IoYmdDb2xvcik7CisgICAgfSBlbHNlCisgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+Y2xlYXJC
YWNrZ3JvdW5kQ29sb3IoKTsKICAgICAKICAgICBpZiAoY29tcEFuY2VzdG9yICYmIG1fYW5jZXN0
b3JDbGlwcGluZ0xheWVyKSB7CiAgICAgICAgIC8vIENhbGwgY2FsY3VsYXRlUmVjdHMgdG8gZ2V0
IHRoZSBiYWNrZ3JvdW5kUmVjdCB3aGljaCBpcyB3aGF0IGlzIHVzZWQgdG8gY2xpcCB0aGUgY29u
dGVudHMgb2YgdGhpcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59932</attachid>
            <date>2010-06-28 13:33:41 -0700</date>
            <delta_ts>2010-06-28 13:41:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40380-20100628133339.patch</filename>
            <type>text/plain</type>
            <size>6876</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDUzMWJiNWQwYTBlMjlhYmRmZTkzMGVjN2JmMjE2NmQzYjU1YjQyMi4uZjUzYjQ1NjI5YzMwYmJj
MDFjMDMzNTEyMTI5MDAyNjNhOTYxMTliNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNi0wOSAgU2Ft
IE1hZ251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gV2hlbiBhIGxheWVyIGlzIHJlYWxseSBv
cGFxdWUgKGllIGhhcyBhIGJhY2tncm91bmQgY29sb3IgdGhhdAorICAgICAgICBoYXMgMjU1IGFs
cGhhKSB3ZSBzaG91bGQgZmlsbCB0aGUgbGF5ZXIgd2l0aCB0aGF0IGNvbG9yIHRvIHRlbGwgUXQK
KyAgICAgICAgdGhhdCB0aGUgcGl4ZW1hcCBoYXMgbm8gYWxwaGEuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM4MAorCisgICAgICAgIEFkZGluZyBz
dXBwb3J0IGZvciBzZXRCYWNrZ3JvdW5kQ29sb3IvY2xlYXJCYWNrZ3JvdW5kIGNvbG9yIGFuZAor
ICAgICAgICB1c2luZyBpdCBpbiBRR3JhcGhpY3NMYXllciB0byBwcmUtZmlsbCB0aGUgcGl4bWFw
IGNhY2hlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czogdGhpcyBpcyBhbiBvcHRpbWl6YXRpb24u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1wbDo6cmVjYWNoZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBsOjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppczNEQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y3JlYXRlR3JhcGhpY3NM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUxheWVy
VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
QWZ0ZXJMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNsaXBwaW5nTGF5ZXJzKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcG9zaXRpbmdPcGFjaXR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cmVuZGVyZXJIYXNCYWNrZ3JvdW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNTaW1wbGVDb250YWluZXJD
b21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6
aGFzTm9uQ29tcG9zaXRpbmdDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
QmFja2luZzo6cmVuZGVyZXJDb250ZW50Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXJCYWNraW5nOjpzZXRDb250ZW50c05lZWREaXNwbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6cGFpbnRJbnRvTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6c3RhcnRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydFRyYW5zaXRpb24pOgorCiAyMDEwLTA2LTI2ICBC
cmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NM
YXllclF0LmNwcAppbmRleCAzYmI2NDIxYzJmMDkwNTg1NWYwM2IzMmM2MTZlODgzNzkzMWNhNWE0
Li5hOTRlOGMzZThkYmQzMjZiZDk1MmFmYWZkNTlmNGY2ZmZjOWVlYzg5IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCkBAIC0zNTksNiAr
MzU5LDkgQEAgUVBpeG1hcCBHcmFwaGljc0xheWVyUXRJbXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdp
b24mIHJlZ2lvblRvVXBkYXRlKQogCiAgICAgewogICAgICAgICBib29sIGVyYXNlZCA9IGZhbHNl
OworICAgICAgICBRQ29sb3IgYmFja2dyb3VuZCA9IG1fY3VycmVudENvbnRlbnQuYmFja2dyb3Vu
ZENvbG9yOworICAgICAgICBpZiAoIWJhY2tncm91bmQuaXNWYWxpZCgpKQorICAgICAgICAgICAg
YmFja2dyb3VuZCA9IFF0Ojp0cmFuc3BhcmVudDsKIAogICAgICAgICAvLyBJZiB0aGUgcGl4bWFw
IGlzIG5vdCBpbiB0aGUgY2FjaGUgb3IgdGhlIHZpZXcgaGFzIGdyb3duIHNpbmNlIGxhc3QgY2Fj
aGVkLgogICAgICAgICBpZiAocGl4bWFwLmlzTnVsbCgpIHx8IG1fc2l6ZSAhPSBtX2JhY2tpbmdT
dG9yZS5zaXplKSB7CkBAIC0zNzYsNyArMzc5LDcgQEAgUVBpeG1hcCBHcmFwaGljc0xheWVyUXRJ
bXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lvblRvVXBkYXRlKQogICAgICAgICAgICAg
ICAgIHFEZWJ1ZygpIDw8ICJDYWNoZUdyb3ciIDw8IHRoaXMgPDwgbV9zaXplOwogI2VuZGlmCiAg
ICAgICAgICAgICAgICAgcGl4bWFwID0gUVBpeG1hcChtX3NpemUudG9TaXplKCkpOwotICAgICAg
ICAgICAgICAgIHBpeG1hcC5maWxsKFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgICAgICAgICAg
cGl4bWFwLmZpbGwoYmFja2dyb3VuZCk7CiAgICAgICAgICAgICAgICAgbmV3UmVnaW9uID0gUVJl
Z2lvbigwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKICAgICAgICAgICAg
IH0KIApAQCAtNDA1LDcgKzQwOCw3IEBAIFFQaXhtYXAgR3JhcGhpY3NMYXllclF0SW1wbDo6cmVj
YWNoZShjb25zdCBRUmVnaW9uJiByZWdpb25Ub1VwZGF0ZSkKICAgICAgICAgICAgICAgICBxRGVi
dWcoKSA8PCAiQ2FjaGVFcmFzZSIgPDwgdGhpcyA8PCBtX3NpemUgPDwgYmFja2dyb3VuZDsKICNl
bmRpZgogICAgICAgICAgICAgICAgIGVyYXNlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcGl4
bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgICAgICAgICBwaXhtYXAuZmlsbChi
YWNrZ3JvdW5kKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZWdpb24gJj0g
UVJlZ2lvbigwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKQEAgLTQyNiw3
ICs0MjksNyBAQCBRUGl4bWFwIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUoY29uc3QgUVJl
Z2lvbiYgcmVnaW9uVG9VcGRhdGUpCiAKICAgICAgICAgICAgIGlmICghZXJhc2VkKSB7IC8vIEVy
YXNlIHRoZSBhcmVhIGluIGNhY2hlIHRoYXQgd2UncmUgZHJhd2luZyBpbnRvLgogICAgICAgICAg
ICAgICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1v
ZGVfQ2xlYXIpOwotICAgICAgICAgICAgICAgIHBhaW50ZXIuZmlsbFJlY3QocmVnaW9uLmJvdW5k
aW5nUmVjdCgpLCBRdDo6dHJhbnNwYXJlbnQpOworICAgICAgICAgICAgICAgIHBhaW50ZXIuZmls
bFJlY3QocmVnaW9uLmJvdW5kaW5nUmVjdCgpLCBiYWNrZ3JvdW5kKTsKIAogI2lmIFFUX0RFQlVH
X0NBQ0hFRFVNUAogICAgICAgICAgICAgICAgIHFEZWJ1ZygpIDw8ICIqKioqIENBQ0hFRFVNUCIg
PDwgcmVjYWNoZUNvdW50IDw8IHRoaXMgPDwgbV9sYXllciA8PCByZWdpb24gPDwgbV9zaXplOwpA
QCAtNDM0LDYgKzQzNywxMyBAQCBRUGl4bWFwIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUo
Y29uc3QgUVJlZ2lvbiYgcmVnaW9uVG9VcGRhdGUpCiAjZW5kaWYKICAgICAgICAgICAgIH0KIAor
ICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGFyZWEgaW4gY2FjaGUgdGhhdCB3ZSdyZSBkcmF3aW5n
IGludG8KKyAgICAgICAgICAgIGlmIChiYWNrZ3JvdW5kID09IFF0Ojp0cmFuc3BhcmVudCkKKyAg
ICAgICAgICAgICAgICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9z
aXRpb25Nb2RlX0NsZWFyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYWlu
dGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7
CisgICAgICAgICAgICBwYWludGVyLmZpbGxSZWN0KHJlZ2lvbi5ib3VuZGluZ1JlY3QoKSwgYmFj
a2dyb3VuZCk7CisKICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgYWN0dWFsIGNvbnRlbnRzIGlu
dG8gdGhlIGNhY2hlLgogICAgICAgICAgICAgcGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBh
aW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9Tb3VyY2VPdmVyKTsKICAgICAgICAgICAgIG1fbGF5ZXIt
PnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGdjLCByZWdpb24uYm91bmRpbmdSZWN0KCkpOwpA
QCAtNTU5LDkgKzU2OSw2IEBAIFFSZWN0RiBHcmFwaGljc0xheWVyUXRJbXBsOjpib3VuZGluZ1Jl
Y3QoKSBjb25zdAogCiB2b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnBhaW50KFFQYWludGVyKiBw
YWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qIG9wdGlvbiwgUVdpZGdldCog
d2lkZ2V0KQogewotICAgIGlmIChtX2N1cnJlbnRDb250ZW50LmJhY2tncm91bmRDb2xvci5pc1Zh
bGlkKCkpCi0gICAgICAgIHBhaW50ZXItPmZpbGxSZWN0KG9wdGlvbi0+cmVjdCwgUUNvbG9yKG1f
Y3VycmVudENvbnRlbnQuYmFja2dyb3VuZENvbG9yKSk7Ci0KICAgICBzd2l0Y2ggKG1fY3VycmVu
dENvbnRlbnQuY29udGVudFR5cGUpIHsKICAgICBjYXNlIEhUTUxDb250ZW50VHlwZToKICAgICAg
ICAgaWYgKG1fc3RhdGUuZHJhd3NDb250ZW50KSB7CkBAIC01NzQsOSArNTgxLDEzIEBAIHZvaWQg
R3JhcGhpY3NMYXllclF0SW1wbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHls
ZU9wdGlvbkdyYXBoaWNzSXRlCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQ
aXhtYXBDb250ZW50VHlwZToKKyAgICAgICAgaWYgKG1fY3VycmVudENvbnRlbnQuYmFja2dyb3Vu
ZENvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHBhaW50ZXItPmZpbGxSZWN0KG9wdGlvbi0+
cmVjdCwgUUNvbG9yKG1fY3VycmVudENvbnRlbnQuYmFja2dyb3VuZENvbG9yKSk7CiAgICAgICAg
IHBhaW50ZXItPmRyYXdQaXhtYXAobV9zdGF0ZS5jb250ZW50c1JlY3QsIG1fY3VycmVudENvbnRl
bnQucGl4bWFwKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2xvckNvbnRlbnRUeXBlOgor
ICAgICAgICBpZiAobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKQor
ICAgICAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qob3B0aW9uLT5yZWN0LCBRQ29sb3IobV9jdXJy
ZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IpKTsKICAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qo
bV9zdGF0ZS5jb250ZW50c1JlY3QsIG1fY3VycmVudENvbnRlbnQuY29udGVudHNCYWNrZ3JvdW5k
Q29sb3IpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhQ29udGVudFR5cGU6CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA3OTRiNTVhM2RlYmYwMTVj
M2E2NDRmZTVkZjRlZGZkMTlhNWYwMTRjLi42NmQ5ZDQ3OTgwMWI1NmJkOGQ0ZTE2ZTI0MTg0NWZi
ZGUzMGU2ZGE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAg
LTI4Miw2ICsyODIsMTIgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNz
TGF5ZXJHZW9tZXRyeSgpCiAgICAgICAgIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbiA9IGNs
aXBwaW5nQm94LmxvY2F0aW9uKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIGdyYXBoaWNzTGF5ZXJQ
YXJlbnRMb2NhdGlvbiA9IGFuY2VzdG9yQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRpb24oKTsKKwor
ICAgIGlmIChyZW5kZXJlckhhc0JhY2tncm91bmQoKSkgeworICAgICAgICBjb25zdCBDb2xvciAm
YmdDb2xvciA9IHJlbmRlcmVyQmFja2dyb3VuZENvbG9yKCk7CisgICAgICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0QmFja2dyb3VuZENvbG9yKGJnQ29sb3IpOworICAgIH0gZWxzZQorICAgICAgICBt
X2dyYXBoaWNzTGF5ZXItPmNsZWFyQmFja2dyb3VuZENvbG9yKCk7CiAgICAgCiAgICAgaWYgKGNv
bXBBbmNlc3RvciAmJiBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllcikgewogICAgICAgICAvLyBDYWxs
IGNhbGN1bGF0ZVJlY3RzIHRvIGdldCB0aGUgYmFja2dyb3VuZFJlY3Qgd2hpY2ggaXMgd2hhdCBp
cyB1c2VkIHRvIGNsaXAgdGhlIGNvbnRlbnRzIG9mIHRoaXMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59933</attachid>
            <date>2010-06-28 13:41:52 -0700</date>
            <delta_ts>2010-06-28 13:49:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40380-20100628134150.patch</filename>
            <type>text/plain</type>
            <size>6875</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDUzMWJiNWQwYTBlMjlhYmRmZTkzMGVjN2JmMjE2NmQzYjU1YjQyMi4uOTM3ZjQ1ZmE1M2FkZWI4
ZDVmMDc3MzYwYzYwMDBkYWUxZTIzZGQyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNi0wOSAgU2Ft
IE1hZ251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gV2hlbiBhIGxheWVyIGlzIHJlYWxseSBv
cGFxdWUgKGllIGhhcyBhIGJhY2tncm91bmQgY29sb3IgdGhhdAorICAgICAgICBoYXMgMjU1IGFs
cGhhKSB3ZSBzaG91bGQgZmlsbCB0aGUgbGF5ZXIgd2l0aCB0aGF0IGNvbG9yIHRvIHRlbGwgUXQK
KyAgICAgICAgdGhhdCB0aGUgcGl4bWFwIGhhcyBubyBhbHBoYS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzgwCisKKyAgICAgICAgQWRkaW5nIHN1
cHBvcnQgZm9yIHNldEJhY2tncm91bmRDb2xvci9jbGVhckJhY2tncm91bmQgY29sb3IgYW5kCisg
ICAgICAgIHVzaW5nIGl0IGluIFFHcmFwaGljc0xheWVyIHRvIHByZS1maWxsIHRoZSBwaXhtYXAg
Y2FjaGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzOiB0aGlzIGlzIGFuIG9wdGltaXphdGlvbi4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBsOjpyZWNhY2hlKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdEltcGw6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzM0RDYW52YXMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xh
eWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlTGF5ZXJU
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVB
ZnRlckxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ2xpcHBpbmdMYXllcnMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpjb21wb3NpdGluZ09wYWNpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlckhhc0JhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNv
bXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpo
YXNOb25Db21wb3NpdGluZ0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJC
YWNraW5nOjpyZW5kZXJlckNvbnRlbnRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6dXBkYXRlSW1hZ2VDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnNldENvbnRlbnRzTmVlZERpc3BsYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckJhY2tpbmc6OnN0YXJ0VHJhbnNpdGlvbik6CisKIDIwMTAtMDYtMjYgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0xheWVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xh
eWVyUXQuY3BwCmluZGV4IDNiYjY0MjFjMmYwOTA1ODU1ZjAzYjMyYzYxNmU4ODM3OTMxY2E1YTQu
LmE5NGU4YzNlOGRiZDMyNmJkOTUyYWZhZmQ1OWY0ZjZmZmM5ZWVjODkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKQEAgLTM1OSw2ICsz
NTksOSBAQCBRUGl4bWFwIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lv
biYgcmVnaW9uVG9VcGRhdGUpCiAKICAgICB7CiAgICAgICAgIGJvb2wgZXJhc2VkID0gZmFsc2U7
CisgICAgICAgIFFDb2xvciBiYWNrZ3JvdW5kID0gbV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5k
Q29sb3I7CisgICAgICAgIGlmICghYmFja2dyb3VuZC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBi
YWNrZ3JvdW5kID0gUXQ6OnRyYW5zcGFyZW50OwogCiAgICAgICAgIC8vIElmIHRoZSBwaXhtYXAg
aXMgbm90IGluIHRoZSBjYWNoZSBvciB0aGUgdmlldyBoYXMgZ3Jvd24gc2luY2UgbGFzdCBjYWNo
ZWQuCiAgICAgICAgIGlmIChwaXhtYXAuaXNOdWxsKCkgfHwgbV9zaXplICE9IG1fYmFja2luZ1N0
b3JlLnNpemUpIHsKQEAgLTM3Niw3ICszNzksNyBAQCBRUGl4bWFwIEdyYXBoaWNzTGF5ZXJRdElt
cGw6OnJlY2FjaGUoY29uc3QgUVJlZ2lvbiYgcmVnaW9uVG9VcGRhdGUpCiAgICAgICAgICAgICAg
ICAgcURlYnVnKCkgPDwgIkNhY2hlR3JvdyIgPDwgdGhpcyA8PCBtX3NpemU7CiAjZW5kaWYKICAg
ICAgICAgICAgICAgICBwaXhtYXAgPSBRUGl4bWFwKG1fc2l6ZS50b1NpemUoKSk7Ci0gICAgICAg
ICAgICAgICAgcGl4bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKKyAgICAgICAgICAgICAgICBw
aXhtYXAuZmlsbChiYWNrZ3JvdW5kKTsKICAgICAgICAgICAgICAgICBuZXdSZWdpb24gPSBRUmVn
aW9uKDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwogICAgICAgICAgICAg
fQogCkBAIC00MDUsNyArNDA4LDcgQEAgUVBpeG1hcCBHcmFwaGljc0xheWVyUXRJbXBsOjpyZWNh
Y2hlKGNvbnN0IFFSZWdpb24mIHJlZ2lvblRvVXBkYXRlKQogICAgICAgICAgICAgICAgIHFEZWJ1
ZygpIDw8ICJDYWNoZUVyYXNlIiA8PCB0aGlzIDw8IG1fc2l6ZSA8PCBiYWNrZ3JvdW5kOwogI2Vu
ZGlmCiAgICAgICAgICAgICAgICAgZXJhc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBwaXht
YXAuZmlsbChRdDo6dHJhbnNwYXJlbnQpOworICAgICAgICAgICAgICAgIHBpeG1hcC5maWxsKGJh
Y2tncm91bmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJlZ2lvbiAmPSBR
UmVnaW9uKDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwpAQCAtNDI2LDcg
KzQyOSw3IEBAIFFQaXhtYXAgR3JhcGhpY3NMYXllclF0SW1wbDo6cmVjYWNoZShjb25zdCBRUmVn
aW9uJiByZWdpb25Ub1VwZGF0ZSkKIAogICAgICAgICAgICAgaWYgKCFlcmFzZWQpIHsgLy8gRXJh
c2UgdGhlIGFyZWEgaW4gY2FjaGUgdGhhdCB3ZSdyZSBkcmF3aW5nIGludG8uCiAgICAgICAgICAg
ICAgICAgcGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9k
ZV9DbGVhcik7Ci0gICAgICAgICAgICAgICAgcGFpbnRlci5maWxsUmVjdChyZWdpb24uYm91bmRp
bmdSZWN0KCksIFF0Ojp0cmFuc3BhcmVudCk7CisgICAgICAgICAgICAgICAgcGFpbnRlci5maWxs
UmVjdChyZWdpb24uYm91bmRpbmdSZWN0KCksIGJhY2tncm91bmQpOwogCiAjaWYgUVRfREVCVUdf
Q0FDSEVEVU1QCiAgICAgICAgICAgICAgICAgcURlYnVnKCkgPDwgIioqKiogQ0FDSEVEVU1QIiA8
PCByZWNhY2hlQ291bnQgPDwgdGhpcyA8PCBtX2xheWVyIDw8IHJlZ2lvbiA8PCBtX3NpemU7CkBA
IC00MzQsNiArNDM3LDEzIEBAIFFQaXhtYXAgR3JhcGhpY3NMYXllclF0SW1wbDo6cmVjYWNoZShj
b25zdCBRUmVnaW9uJiByZWdpb25Ub1VwZGF0ZSkKICNlbmRpZgogICAgICAgICAgICAgfQogCisg
ICAgICAgICAgICAvLyBDbGVhciB0aGUgYXJlYSBpbiBjYWNoZSB0aGF0IHdlJ3JlIGRyYXdpbmcg
aW50bworICAgICAgICAgICAgaWYgKGJhY2tncm91bmQgPT0gUXQ6OnRyYW5zcGFyZW50KQorICAg
ICAgICAgICAgICAgIHBhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3Np
dGlvbk1vZGVfQ2xlYXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhaW50
ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsK
KyAgICAgICAgICAgIHBhaW50ZXIuZmlsbFJlY3QocmVnaW9uLmJvdW5kaW5nUmVjdCgpLCBiYWNr
Z3JvdW5kKTsKKwogICAgICAgICAgICAgLy8gUmVuZGVyIHRoZSBhY3R1YWwgY29udGVudHMgaW50
byB0aGUgY2FjaGUuCiAgICAgICAgICAgICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFp
bnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZU92ZXIpOwogICAgICAgICAgICAgbV9sYXllci0+
cGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoZ2MsIHJlZ2lvbi5ib3VuZGluZ1JlY3QoKSk7CkBA
IC01NTksOSArNTY5LDYgQEAgUVJlY3RGIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmJvdW5kaW5nUmVj
dCgpIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NMYXllclF0SW1wbDo6cGFpbnQoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KiB3
aWRnZXQpCiB7Ci0gICAgaWYgKG1fY3VycmVudENvbnRlbnQuYmFja2dyb3VuZENvbG9yLmlzVmFs
aWQoKSkKLSAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qob3B0aW9uLT5yZWN0LCBRQ29sb3IobV9j
dXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IpKTsKLQogICAgIHN3aXRjaCAobV9jdXJyZW50
Q29udGVudC5jb250ZW50VHlwZSkgewogICAgIGNhc2UgSFRNTENvbnRlbnRUeXBlOgogICAgICAg
ICBpZiAobV9zdGF0ZS5kcmF3c0NvbnRlbnQpIHsKQEAgLTU3NCw5ICs1ODEsMTMgQEAgdm9pZCBH
cmFwaGljc0xheWVyUXRJbXBsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxl
T3B0aW9uR3JhcGhpY3NJdGUKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAgICBjYXNlIFBp
eG1hcENvbnRlbnRUeXBlOgorICAgICAgICBpZiAobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5k
Q29sb3IuaXNWYWxpZCgpKQorICAgICAgICAgICAgcGFpbnRlci0+ZmlsbFJlY3Qob3B0aW9uLT5y
ZWN0LCBRQ29sb3IobV9jdXJyZW50Q29udGVudC5iYWNrZ3JvdW5kQ29sb3IpKTsKICAgICAgICAg
cGFpbnRlci0+ZHJhd1BpeG1hcChtX3N0YXRlLmNvbnRlbnRzUmVjdCwgbV9jdXJyZW50Q29udGVu
dC5waXhtYXApOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbG9yQ29udGVudFR5cGU6Cisg
ICAgICAgIGlmIChtX2N1cnJlbnRDb250ZW50LmJhY2tncm91bmRDb2xvci5pc1ZhbGlkKCkpCisg
ICAgICAgICAgICBwYWludGVyLT5maWxsUmVjdChvcHRpb24tPnJlY3QsIFFDb2xvcihtX2N1cnJl
bnRDb250ZW50LmJhY2tncm91bmRDb2xvcikpOwogICAgICAgICBwYWludGVyLT5maWxsUmVjdCht
X3N0YXRlLmNvbnRlbnRzUmVjdCwgbV9jdXJyZW50Q29udGVudC5jb250ZW50c0JhY2tncm91bmRD
b2xvcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFDb250ZW50VHlwZToKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDc5NGI1NWEzZGViZjAxNWMz
YTY0NGZlNWRmNGVkZmQxOWE1ZjAxNGMuLjY2ZDlkNDc5ODAxYjU2YmQ4ZDRlMTZlMjQxODQ1ZmJk
ZTMwZTZkYTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAt
MjgyLDYgKzI4MiwxMiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NM
YXllckdlb21ldHJ5KCkKICAgICAgICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gY2xp
cHBpbmdCb3gubG9jYXRpb24oKTsKICAgICB9IGVsc2UKICAgICAgICAgZ3JhcGhpY3NMYXllclBh
cmVudExvY2F0aW9uID0gYW5jZXN0b3JDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpOworCisg
ICAgaWYgKHJlbmRlcmVySGFzQmFja2dyb3VuZCgpKSB7CisgICAgICAgIGNvbnN0IENvbG9yICZi
Z0NvbG9yID0gcmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoYmdDb2xvcik7CisgICAgfSBlbHNlCisgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAKICAgICBpZiAoY29t
cEFuY2VzdG9yICYmIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyKSB7CiAgICAgICAgIC8vIENhbGwg
Y2FsY3VsYXRlUmVjdHMgdG8gZ2V0IHRoZSBiYWNrZ3JvdW5kUmVjdCB3aGljaCBpcyB3aGF0IGlz
IHVzZWQgdG8gY2xpcCB0aGUgY29udGVudHMgb2YgdGhpcwo=
</data>
<flag name="review"
          id="47107"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>