<?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>78677</bug_id>
          
          <creation_ts>2012-02-15 01:05:50 -0800</creation_ts>
          <short_desc>[Qt][WK2] Clipping is broken</short_desc>
          <delta_ts>2012-02-23 16:24:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>ostap73</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557010</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-15 01:05:50 -0800</bug_when>
    <thetext>We don&apos;t apply the scene clipping for QtSceneGraph correctly, so the web-page appears to render in the wrong places, like behind the address bar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560269</commentid>
    <comment_count>1</comment_count>
      <attachid>127829</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-20 09:58:16 -0800</bug_when>
    <thetext>Created attachment 127829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560327</commentid>
    <comment_count>2</comment_count>
      <attachid>127829</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-20 12:58:54 -0800</bug_when>
    <thetext>Comment on attachment 127829
Patch

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

Great that you fixed the issue!

&gt; Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp:835
&gt; +    for (int i = data().sharedGLData().clipStack.size() - 1; i &gt;=0; --i) {

style... missing space. Also why do you need to intersect them using reverse order?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560414</commentid>
    <comment_count>3</comment_count>
      <attachid>127856</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-20 15:25:11 -0800</bug_when>
    <thetext>Created attachment 127856
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560415</commentid>
    <comment_count>4</comment_count>
      <attachid>127856</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 15:27:34 -0800</bug_when>
    <thetext>Comment on attachment 127856
Patch for landing

Rejecting attachment 127856 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/11550288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560421</commentid>
    <comment_count>5</comment_count>
      <attachid>127861</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-20 15:35:03 -0800</bug_when>
    <thetext>Created attachment 127861
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560422</commentid>
    <comment_count>6</comment_count>
      <attachid>127861</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 15:37:33 -0800</bug_when>
    <thetext>Comment on attachment 127861
Patch for landing

Rejecting attachment 127861 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/11552265</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560428</commentid>
    <comment_count>7</comment_count>
      <attachid>127863</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-20 15:46:14 -0800</bug_when>
    <thetext>Created attachment 127863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560474</commentid>
    <comment_count>8</comment_count>
      <attachid>127863</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 17:20:06 -0800</bug_when>
    <thetext>Comment on attachment 127863
Patch

Clearing flags on attachment: 127863

Committed r108274: &lt;http://trac.webkit.org/changeset/108274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560475</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-20 17:20:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560961</commentid>
    <comment_count>10</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-21 09:36:05 -0800</bug_when>
    <thetext>Reopening, this caused an assert at the end of painting if there&apos;s any layer-clipping in the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560964</commentid>
    <comment_count>11</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-21 09:37:45 -0800</bug_when>
    <thetext>process 4345 is executing new program: /home/abecsi/devel/git/webkit-git-svn/WebKitBuild/Debug/bin/QtWebProcess
ASSERTION FAILED: !data().sharedGLData().clipStack.isEmpty()
../../../../Source/WebCore/platform/graphics/opengl/TextureMapperGL.cpp(857) : bool WebCore::TextureMapperGL::endScissorClip()
1   0x7ffff561e6f8 /home/abecsi/devel/git/webkit-git-svn/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN7WebCore15TextureMapperGL14endScissorClipEv+0x78) [0x7ffff561e6f8]
2   0x7ffff561ee0b /home/abecsi/devel/git/webkit-git-svn/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN7WebCore15TextureMapperGL7endClipEv+0x1b) [0x7ffff561ee0b]
3   0x7ffff4694663 /home/abecsi/devel/git/webkit-git-svn/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN6WebKit18LayerTreeHostProxy23paintToCurrentGLContextERKN7WebCore20TransformationMatrixEfRKNS1_9FloatRectE+0x2cf) [0x7ffff4694663]
4   0x7ffff45e7bbe /home/abecsi/devel/git/webkit-git-svn/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN6WebKit20DrawingAreaProxyImpl23paintToCurrentGLContextERKN7WebCore20TransformationMatrixEfRKNS1_9FloatRectE+0x5c) [0x7ffff45e7bbe]
5   0x7ffff45d2ed9 /home/abecsi/devel/git/webkit-git-svn/WebKitBuild/Debug/lib/libQtWebKit.so.4(_ZN20QQuickWebPagePrivate23paintToCurrentGLContextEv+0x187) [0x7ffff45d2ed9]
6   0x7ffff45d32a2 /home/abecsi/devel/git/webkit-git-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561116</commentid>
    <comment_count>12</comment_count>
      <attachid>128017</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-21 12:08:33 -0800</bug_when>
    <thetext>Created attachment 128017
Patch to fix regression</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562614</commentid>
    <comment_count>13</comment_count>
      <attachid>128346</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-22 17:30:47 -0800</bug_when>
    <thetext>Created attachment 128346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562991</commentid>
    <comment_count>14</comment_count>
      <attachid>128346</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-23 02:30:25 -0800</bug_when>
    <thetext>Comment on attachment 128346
Patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:205
&gt; +    void initStencil();

initialize?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:348
&gt; +    if (data().sharedGLData().currentClipState.scissorBox.isEmpty())

does the current add any value to the name? clipState would be current, so I think it is a bit obvious, but maybe i am missing something

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperGL.cpp:766
&gt; +    // Increase stencilIndex and apply stencil testing testing.

testing testing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563021</commentid>
    <comment_count>15</comment_count>
      <attachid>128346</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-02-23 04:10:00 -0800</bug_when>
    <thetext>Comment on attachment 128346
Patch

LGTM modulo Kenneth&apos;s suggestions (testing testing is tested :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563073</commentid>
    <comment_count>16</comment_count>
      <attachid>128471</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-02-23 06:14:14 -0800</bug_when>
    <thetext>Created attachment 128471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563647</commentid>
    <comment_count>17</comment_count>
      <attachid>128471</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 16:24:21 -0800</bug_when>
    <thetext>Comment on attachment 128471
Patch

Clearing flags on attachment: 128471

Committed r108696: &lt;http://trac.webkit.org/changeset/108696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563648</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 16:24:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127829</attachid>
            <date>2012-02-20 09:58:16 -0800</date>
            <delta_ts>2012-02-20 15:24:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78677-20120220095811.patch</filename>
            <type>text/plain</type>
            <size>4827</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uOGM1Zjg1MmRiZDNmY2Q0MGVkYzUzZmJlYjBlZDA1
Y2E4ZmQxMTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTIwICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtX
SzJdIENsaXBwaW5nIGlzIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzg2NzcKKyAgICAgICAgCisgICAgICAgIEl0J3Mgbm90IG5lY2Vzc2Fy
eSB0byBhZGQgYSBmdWxsLXZpZXdwb3J0IHJlY3QgdG8gdGhlIHNjaXNzb3IgY2xpcCBzdGFjay4K
KyAgICAgICAgSXQgY3JlYXRlcyBhIHNpdHVhdGlvbiB3aGVyZSBpZiB0aGVyZSdzIGEgY2xpcCBp
biB0aGUgcGFnZSwgd2UgcmV0dXJuIHRvCisgICAgICAgIHRoZSB2aWV3cG9ydCBjbGlwIGluc3Rl
YWQgb2YgYXBwbHlpbmcgdGhlIFdlYlZpZXcncyBjbGlwIHdlIGdvdCBmcm9tIHRoZQorICAgICAg
ICBzY2VuZWdyYXBoLgorCisgICAgICAgIEFsc28sIGl0J3MgdW5uZWNlc3NhcnkgdG8gY2xpcCBi
ZWZvcmUgd2UgcGFpbnQgdGhlIGxheWVyJ3MgY29udGVudCwgd2Ugc2hvdWxkCisgICAgICAgIG9u
bHkgY2xpcCBhZnRlcndhcmRzLCBiZWZvcmUgcGFpbnRpbmcgdGhlIGNoaWxkcmVuLiAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgZnVuY3Rp
b25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFw
cGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpzaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjaXNzb3JDbGlwKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpiZWdpblNjaXNzb3JDbGlwKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZW5kU2Npc3NvckNsaXApOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbik6CisKIDIw
MTItMDItMTkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBNb3ZlIHN0dWIgaW1wbGVtZW50YXRpb25zIG9mIFNjcm9sbGluZ0Nvb3JkaW5hdG9yIGZ1bmN0
aW9ucyBpbnRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTm9uZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5j
cHAKaW5kZXggZjBhNGEzYjA2ZjA5MmQxN2Q0NmIzNjgzYzkzOTRmMmJiODhkY2MxMC4uMzE2OTFj
ZDMzMDVlOGEzYTU5ZDUxNjk4NjFlODc1MDBhMDFiYjM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5j
cHAKQEAgLTgwNyw3ICs4MDcsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6YmluZFN1cmZhY2Uo
Qml0bWFwVGV4dHVyZSAqc3VyZmFjZVBvaW50ZXIpCiAgICAgICAgIEdMX0NNRChnbFN0ZW5jaWxG
dW5jKGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggPiAxID8gR0xfRVFVQUwgOiBH
TF9BTFdBWVMsIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggLSAxLCBkYXRhKCku
c2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4IC0gMSkpCiAgICAgICAgIEdMX0NNRChnbFN0ZW5j
aWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9LRUVQKSkKICAgICAgICAgR0xfQ01EKGdsVmlld3Bv
cnQoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkpCi0g
ICAgICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2suYXBwZW5kKEludFJlY3QoZGF0
YSgpLnZpZXdwb3J0WzBdLCBkYXRhKCkudmlld3BvcnRbMV0sIGRhdGEoKS52aWV3cG9ydFsyXSwg
ZGF0YSgpLnZpZXdwb3J0WzNdKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgzMyw4
ICs4MzIsMTMgQEAgYm9vbCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2luU2Npc3NvckNsaXAoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHIKICAgICB9CiAKICAgICAvLyBJbnRl
cnNlY3Qgd2l0aCBwcmV2aW91cyBjbGlwLgotICAgIGlmICghZGF0YSgpLnNoYXJlZEdMRGF0YSgp
LmNsaXBTdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIHJlY3QuaW50ZXJzZWN0KGRhdGEoKS5zaGFy
ZWRHTERhdGEoKS5jbGlwU3RhY2subGFzdCgpKTsKKyAgICBmb3IgKGludCBpID0gZGF0YSgpLnNo
YXJlZEdMRGF0YSgpLmNsaXBTdGFjay5zaXplKCkgLSAxOyBpID49MDsgLS1pKSB7CisgICAgICAg
IGNvbnN0IEludFJlY3QmIHByZXZSZWN0ID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFj
a1tpXTsKKyAgICAgICAgaWYgKHByZXZSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICByZWN0LmludGVyc2VjdChwcmV2UmVjdCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KIAogICAgIHNjaXNzb3JDbGlwKHJlY3QpOwogICAgIGRhdGEoKS5zaGFyZWRHTERhdGEo
KS5jbGlwU3RhY2suYXBwZW5kKHJlY3QpOwpAQCAtODU5LDYgKzg2Myw3IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgY29uCiB7CiAgICAgaWYgKGJlZ2luU2Npc3NvckNsaXAobW9kZWxWaWV3TWF0cml4
LCB0YXJnZXRSZWN0KSkKICAgICAgICAgcmV0dXJuOworCiAgICAgZGF0YSgpLmluaXRTdGVuY2ls
KCk7CiAgICAgVGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpTaGFkZXJQcm9ncmFt
SW5kZXggcHJvZ3JhbSA9IFRleHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6Q2xpcFBy
b2dyYW07CiAgICAgY29uc3QgVGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpQcm9n
cmFtSW5mbyYgcHJvZ3JhbUluZm8gPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkucHJvZ3JhbXNbcHJv
Z3JhbV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDVmMzg2MmI1Mzc1MjRkMTE0
NjQzMjI2ODgzMDk3YTY2MjIzMGUzZDEuLjhkZDRlYjgwNDdiNGZjOGQzMGJlMjkzMzZmZGE1MDhi
MWJlNDA4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xNzUsMTYgKzE3NSwx
OSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJl
TWFwcGVyTGF5ZXIqID4mIGFycmF5LCBpbnQgZgogCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
cGFpbnRTZWxmQW5kQ2hpbGRyZW4oY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICBib29sIGhhc0NsaXAgPSBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1f
Y2hpbGRyZW4uaXNFbXB0eSgpOwotICAgIGlmIChoYXNDbGlwKQotICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeChvcHRpb25zLnRyYW5z
Zm9ybSkubXVsdGlwbHkobV90cmFuc2Zvcm0uY29tYmluZWQoKSksIEZsb2F0UmVjdCgwLCAwLCBt
X3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKSk7Ci0KICAgICBwYWludFNlbGYob3B0aW9u
cyk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgpOyArK2kp
CisgICAgaWYgKG1fY2hpbGRyZW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBi
b29sIHNob3VsZENsaXAgPSBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgfHwgbV9zdGF0ZS5tYXNrTGF5
ZXI7CisgICAgaWYgKHNob3VsZENsaXApCisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+
YmVnaW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJhbnNmb3JtKS5tdWx0aXBs
eShtX3RyYW5zZm9ybS5jb21iaW5lZCgpKSwgRmxvYXRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgp
LCBtX3NpemUuaGVpZ2h0KCkpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9jaGlsZHJl
bi5zaXplKCk7ICsraSkKICAgICAgICAgbV9jaGlsZHJlbltpXS0+cGFpbnRSZWN1cnNpdmUob3B0
aW9ucyk7CiAKLSAgICBpZiAoaGFzQ2xpcCkKKyAgICBpZiAoc2hvdWxkQ2xpcCkKICAgICAgICAg
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127856</attachid>
            <date>2012-02-20 15:25:11 -0800</date>
            <delta_ts>2012-02-20 15:34:51 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78677-20120220152508.patch</filename>
            <type>text/plain</type>
            <size>4868</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uNmQ4NzMxNjJmOWVkYjFjYTA1NzY1Y2I5NDg2MmU5
MzBhZDkxNmMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTIwICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtX
SzJdIENsaXBwaW5nIGlzIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzg2NzcKKworICAgICAgICBJdCdzIG5vdCBuZWNlc3NhcnkgdG8gYWRk
IGEgZnVsbC12aWV3cG9ydCByZWN0IHRvIHRoZSBzY2lzc29yIGNsaXAgc3RhY2suCisgICAgICAg
IEl0IGNyZWF0ZXMgYSBzaXR1YXRpb24gd2hlcmUgaWYgdGhlcmUncyBhIGNsaXAgaW4gdGhlIHBh
Z2UsIHdlIHJldHVybiB0bworICAgICAgICB0aGUgdmlld3BvcnQgY2xpcCBpbnN0ZWFkIG9mIGFw
cGx5aW5nIHRoZSBXZWJWaWV3J3MgY2xpcCB3ZSBnb3QgZnJvbSB0aGUKKyAgICAgICAgc2NlbmVn
cmFwaC4KKworICAgICAgICBBbHNvLCBpdCdzIHVubmVjZXNzYXJ5IHRvIGNsaXAgYmVmb3JlIHdl
IHBhaW50IHRoZSBsYXllcidzIGNvbnRlbnQsIHdlIHNob3VsZAorICAgICAgICBvbmx5IGNsaXAg
YWZ0ZXJ3YXJkcywgYmVmb3JlIHBhaW50aW5nIHRoZSBjaGlsZHJlbi4gCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzY2lzc29yQ2xpcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5TY2lzc29yQ2xpcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyR0w6OmVuZFNjaXNzb3JDbGlwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW4pOgorCiAyMDEyLTAyLTE5
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBz
dHViIGltcGxlbWVudGF0aW9ucyBvZiBTY3JvbGxpbmdDb29yZGluYXRvciBmdW5jdGlvbnMgaW50
byBTY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4
IGYwYTRhM2IwNmYwOTJkMTdkNDZiMzY4M2M5Mzk0ZjJiYjg4ZGNjMTAuLjI2ZTFlOTQ0NjRlOWY5
ZjFmOTA2MWVhMzJjM2FlNTBmMGFjYzQ3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC04
MDcsNyArODA3LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJpbmRTdXJmYWNlKEJpdG1hcFRl
eHR1cmUgKnN1cmZhY2VQb2ludGVyKQogICAgICAgICBHTF9DTUQoZ2xTdGVuY2lsRnVuYyhkYXRh
KCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4ID4gMSA/IEdMX0VRVUFMIDogR0xfQUxXQVlT
LCBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4IC0gMSwgZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLnN0ZW5jaWxJbmRleCAtIDEpKQogICAgICAgICBHTF9DTUQoZ2xTdGVuY2lsT3AoR0xf
S0VFUCwgR0xfS0VFUCwgR0xfS0VFUCkpCiAgICAgICAgIEdMX0NNRChnbFZpZXdwb3J0KDAsIDAs
IHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpKQotICAgICAgICBk
YXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmFwcGVuZChJbnRSZWN0KGRhdGEoKS52aWV3
cG9ydFswXSwgZGF0YSgpLnZpZXdwb3J0WzFdLCBkYXRhKCkudmlld3BvcnRbMl0sIGRhdGEoKS52
aWV3cG9ydFszXSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MzMsOCArODMyLDE1
IEBAIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpiZWdpblNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyCiAgICAgfQogCiAgICAgLy8gSW50ZXJzZWN0IHdp
dGggcHJldmlvdXMgY2xpcC4KLSAgICBpZiAoIWRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3Rh
Y2suaXNFbXB0eSgpKQotICAgICAgICByZWN0LmludGVyc2VjdChkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuY2xpcFN0YWNrLmxhc3QoKSk7CisgICAgZm9yIChpbnQgaSA9IGRhdGEoKS5zaGFyZWRHTERh
dGEoKS5jbGlwU3RhY2suc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgY29uc3Qg
SW50UmVjdCYgcHJldlJlY3QgPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrW2ldOwor
ICAgICAgICBpZiAocHJldlJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRoZSBsYXN0IHZhbGlkIGNsaXAuCisgICAgICAgIHJl
Y3QuaW50ZXJzZWN0KHByZXZSZWN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgc2Np
c3NvckNsaXAocmVjdCk7CiAgICAgZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5hcHBl
bmQocmVjdCk7CkBAIC04NTksNiArODY1LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2lu
Q2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBjb24KIHsK
ICAgICBpZiAoYmVnaW5TY2lzc29yQ2xpcChtb2RlbFZpZXdNYXRyaXgsIHRhcmdldFJlY3QpKQog
ICAgICAgICByZXR1cm47CisKICAgICBkYXRhKCkuaW5pdFN0ZW5jaWwoKTsKICAgICBUZXh0dXJl
TWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OlNoYWRlclByb2dyYW1JbmRleCBwcm9ncmFtID0g
VGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpDbGlwUHJvZ3JhbTsKICAgICBjb25z
dCBUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OlByb2dyYW1JbmZvJiBwcm9ncmFt
SW5mbyA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS5wcm9ncmFtc1twcm9ncmFtXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAKaW5kZXggNWYzODYyYjUzNzUyNGQxMTQ2NDMyMjY4ODMwOTdhNjYy
MjMwZTNkMS4uOGRkNGViODA0N2I0ZmM4ZDMwYmUyOTMzNmZkYTUwOGIxYmU0MDg2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTE3NSwxNiArMTc1LDE5IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllciogPiYg
YXJyYXksIGludCBmCiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGls
ZHJlbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogewotICAgIGJv
b2wgaGFzQ2xpcCA9IG1fc3RhdGUubWFza3NUb0JvdW5kcyAmJiAhbV9jaGlsZHJlbi5pc0VtcHR5
KCk7Ci0gICAgaWYgKGhhc0NsaXApCi0gICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmVn
aW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJhbnNmb3JtKS5tdWx0aXBseSht
X3RyYW5zZm9ybS5jb21iaW5lZCgpKSwgRmxvYXRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpKTsKLQogICAgIHBhaW50U2VsZihvcHRpb25zKTsKIAotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKKyAgICBpZiAobV9jaGls
ZHJlbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc2hvdWxkQ2xpcCA9
IG1fc3RhdGUubWFza3NUb0JvdW5kcyB8fCBtX3N0YXRlLm1hc2tMYXllcjsKKyAgICBpZiAoc2hv
dWxkQ2xpcCkKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNm
b3JtYXRpb25NYXRyaXgob3B0aW9ucy50cmFuc2Zvcm0pLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNv
bWJpbmVkKCkpLCBGbG9hdFJlY3QoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQo
KSkpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQog
ICAgICAgICBtX2NoaWxkcmVuW2ldLT5wYWludFJlY3Vyc2l2ZShvcHRpb25zKTsKIAotICAgIGlm
IChoYXNDbGlwKQorICAgIGlmIChzaG91bGRDbGlwKQogICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmVuZENsaXAoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127861</attachid>
            <date>2012-02-20 15:35:03 -0800</date>
            <delta_ts>2012-02-20 15:46:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-78677-20120220153500.patch</filename>
            <type>text/plain</type>
            <size>4868</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDA0OTJkZTBmYWE1MTQ1
ZGM0ZTAwMjM0YTk5MjI2NTYzOGMxYmM4Yi4uNmQ4NzMxNjJmOWVkYjFjYTA1NzY1Y2I5NDg2MmU5
MzBhZDkxNmMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTAyLTIwICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtX
SzJdIENsaXBwaW5nIGlzIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzg2NzcKKworICAgICAgICBJdCdzIG5vdCBuZWNlc3NhcnkgdG8gYWRk
IGEgZnVsbC12aWV3cG9ydCByZWN0IHRvIHRoZSBzY2lzc29yIGNsaXAgc3RhY2suCisgICAgICAg
IEl0IGNyZWF0ZXMgYSBzaXR1YXRpb24gd2hlcmUgaWYgdGhlcmUncyBhIGNsaXAgaW4gdGhlIHBh
Z2UsIHdlIHJldHVybiB0bworICAgICAgICB0aGUgdmlld3BvcnQgY2xpcCBpbnN0ZWFkIG9mIGFw
cGx5aW5nIHRoZSBXZWJWaWV3J3MgY2xpcCB3ZSBnb3QgZnJvbSB0aGUKKyAgICAgICAgc2NlbmVn
cmFwaC4KKworICAgICAgICBBbHNvLCBpdCdzIHVubmVjZXNzYXJ5IHRvIGNsaXAgYmVmb3JlIHdl
IHBhaW50IHRoZSBsYXllcidzIGNvbnRlbnQsIHdlIHNob3VsZAorICAgICAgICBvbmx5IGNsaXAg
YWZ0ZXJ3YXJkcywgYmVmb3JlIHBhaW50aW5nIHRoZSBjaGlsZHJlbi4gCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IGZ1bmN0aW9uYWxpdHku
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzY2lzc29yQ2xpcCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5TY2lzc29yQ2xpcCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyR0w6OmVuZFNjaXNzb3JDbGlwKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW4pOgorCiAyMDEyLTAyLTE5
ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBz
dHViIGltcGxlbWVudGF0aW9ucyBvZiBTY3JvbGxpbmdDb29yZGluYXRvciBmdW5jdGlvbnMgaW50
byBTY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCmluZGV4
IGYwYTRhM2IwNmYwOTJkMTdkNDZiMzY4M2M5Mzk0ZjJiYjg4ZGNjMTAuLjI2ZTFlOTQ0NjRlOWY5
ZjFmOTA2MWVhMzJjM2FlNTBmMGFjYzQ3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCkBAIC04
MDcsNyArODA3LDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJpbmRTdXJmYWNlKEJpdG1hcFRl
eHR1cmUgKnN1cmZhY2VQb2ludGVyKQogICAgICAgICBHTF9DTUQoZ2xTdGVuY2lsRnVuYyhkYXRh
KCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4ID4gMSA/IEdMX0VRVUFMIDogR0xfQUxXQVlT
LCBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4IC0gMSwgZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLnN0ZW5jaWxJbmRleCAtIDEpKQogICAgICAgICBHTF9DTUQoZ2xTdGVuY2lsT3AoR0xf
S0VFUCwgR0xfS0VFUCwgR0xfS0VFUCkpCiAgICAgICAgIEdMX0NNRChnbFZpZXdwb3J0KDAsIDAs
IHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpKQotICAgICAgICBk
YXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmFwcGVuZChJbnRSZWN0KGRhdGEoKS52aWV3
cG9ydFswXSwgZGF0YSgpLnZpZXdwb3J0WzFdLCBkYXRhKCkudmlld3BvcnRbMl0sIGRhdGEoKS52
aWV3cG9ydFszXSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MzMsOCArODMyLDE1
IEBAIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpiZWdpblNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyCiAgICAgfQogCiAgICAgLy8gSW50ZXJzZWN0IHdp
dGggcHJldmlvdXMgY2xpcC4KLSAgICBpZiAoIWRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3Rh
Y2suaXNFbXB0eSgpKQotICAgICAgICByZWN0LmludGVyc2VjdChkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuY2xpcFN0YWNrLmxhc3QoKSk7CisgICAgZm9yIChpbnQgaSA9IGRhdGEoKS5zaGFyZWRHTERh
dGEoKS5jbGlwU3RhY2suc2l6ZSgpIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgY29uc3Qg
SW50UmVjdCYgcHJldlJlY3QgPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrW2ldOwor
ICAgICAgICBpZiAocHJldlJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRoZSBsYXN0IHZhbGlkIGNsaXAuCisgICAgICAgIHJl
Y3QuaW50ZXJzZWN0KHByZXZSZWN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgc2Np
c3NvckNsaXAocmVjdCk7CiAgICAgZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5hcHBl
bmQocmVjdCk7CkBAIC04NTksNiArODY1LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2lu
Q2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBjb24KIHsK
ICAgICBpZiAoYmVnaW5TY2lzc29yQ2xpcChtb2RlbFZpZXdNYXRyaXgsIHRhcmdldFJlY3QpKQog
ICAgICAgICByZXR1cm47CisKICAgICBkYXRhKCkuaW5pdFN0ZW5jaWwoKTsKICAgICBUZXh0dXJl
TWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OlNoYWRlclByb2dyYW1JbmRleCBwcm9ncmFtID0g
VGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpDbGlwUHJvZ3JhbTsKICAgICBjb25z
dCBUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OlByb2dyYW1JbmZvJiBwcm9ncmFt
SW5mbyA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS5wcm9ncmFtc1twcm9ncmFtXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAKaW5kZXggNWYzODYyYjUzNzUyNGQxMTQ2NDMyMjY4ODMwOTdhNjYy
MjMwZTNkMS4uOGRkNGViODA0N2I0ZmM4ZDMwYmUyOTMzNmZkYTUwOGIxYmU0MDg2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTE3NSwxNiArMTc1LDE5IEBAIHZvaWQgVGV4dHVy
ZU1hcHBlckxheWVyOjpzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllciogPiYg
YXJyYXksIGludCBmCiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGls
ZHJlbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvcHRpb25zKQogewotICAgIGJv
b2wgaGFzQ2xpcCA9IG1fc3RhdGUubWFza3NUb0JvdW5kcyAmJiAhbV9jaGlsZHJlbi5pc0VtcHR5
KCk7Ci0gICAgaWYgKGhhc0NsaXApCi0gICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmVn
aW5DbGlwKFRyYW5zZm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJhbnNmb3JtKS5tdWx0aXBseSht
X3RyYW5zZm9ybS5jb21iaW5lZCgpKSwgRmxvYXRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBt
X3NpemUuaGVpZ2h0KCkpKTsKLQogICAgIHBhaW50U2VsZihvcHRpb25zKTsKIAotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkKKyAgICBpZiAobV9jaGls
ZHJlbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc2hvdWxkQ2xpcCA9
IG1fc3RhdGUubWFza3NUb0JvdW5kcyB8fCBtX3N0YXRlLm1hc2tMYXllcjsKKyAgICBpZiAoc2hv
dWxkQ2xpcCkKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNm
b3JtYXRpb25NYXRyaXgob3B0aW9ucy50cmFuc2Zvcm0pLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNv
bWJpbmVkKCkpLCBGbG9hdFJlY3QoMCwgMCwgbV9zaXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQo
KSkpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQog
ICAgICAgICBtX2NoaWxkcmVuW2ldLT5wYWludFJlY3Vyc2l2ZShvcHRpb25zKTsKIAotICAgIGlm
IChoYXNDbGlwKQorICAgIGlmIChzaG91bGRDbGlwKQogICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmVuZENsaXAoKTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="130101"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127863</attachid>
            <date>2012-02-20 15:46:14 -0800</date>
            <delta_ts>2012-02-22 17:30:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>4654</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MDQ5MmRlLi42ZDg3MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTItMDItMjAgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gQ2xpcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODY3NworCisgICAgICAgIEl0J3Mg
bm90IG5lY2Vzc2FyeSB0byBhZGQgYSBmdWxsLXZpZXdwb3J0IHJlY3QgdG8gdGhlIHNjaXNzb3Ig
Y2xpcCBzdGFjay4KKyAgICAgICAgSXQgY3JlYXRlcyBhIHNpdHVhdGlvbiB3aGVyZSBpZiB0aGVy
ZSdzIGEgY2xpcCBpbiB0aGUgcGFnZSwgd2UgcmV0dXJuIHRvCisgICAgICAgIHRoZSB2aWV3cG9y
dCBjbGlwIGluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIFdlYlZpZXcncyBjbGlwIHdlIGdvdCBmcm9t
IHRoZQorICAgICAgICBzY2VuZWdyYXBoLgorCisgICAgICAgIEFsc28sIGl0J3MgdW5uZWNlc3Nh
cnkgdG8gY2xpcCBiZWZvcmUgd2UgcGFpbnQgdGhlIGxheWVyJ3MgY29udGVudCwgd2Ugc2hvdWxk
CisgICAgICAgIG9ubHkgY2xpcCBhZnRlcndhcmRzLCBiZWZvcmUgcGFpbnRpbmcgdGhlIGNoaWxk
cmVuLiAKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4K
KworICAgICAgICBObyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwVGV4dHVyZUdMOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OnNjaXNzb3JDbGlwKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpiZWdp
blNjaXNzb3JDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZW5kU2Np
c3NvckNsaXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWlu
dFNlbGZBbmRDaGlsZHJlbik6CisKIDIwMTItMDItMTkgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIHN0dWIgaW1wbGVtZW50YXRpb25zIG9mIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yIGZ1bmN0aW9ucyBpbnRvIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTm9u
ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggZjBhNGEzYi4uMjZlMWU5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBw
ZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKQEAgLTgwNyw3ICs4MDcsNiBAQCB2b2lkIFRleHR1cmVNYXBwZXJH
TDo6YmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSAqc3VyZmFjZVBvaW50ZXIpCiAgICAgICAgIEdM
X0NNRChnbFN0ZW5jaWxGdW5jKGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggPiAx
ID8gR0xfRVFVQUwgOiBHTF9BTFdBWVMsIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5k
ZXggLSAxLCBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4IC0gMSkpCiAgICAgICAg
IEdMX0NNRChnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9LRUVQKSkKICAgICAgICAg
R0xfQ01EKGdsVmlld3BvcnQoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6
ZS5oZWlnaHQoKSkpCi0gICAgICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2suYXBw
ZW5kKEludFJlY3QoZGF0YSgpLnZpZXdwb3J0WzBdLCBkYXRhKCkudmlld3BvcnRbMV0sIGRhdGEo
KS52aWV3cG9ydFsyXSwgZGF0YSgpLnZpZXdwb3J0WzNdKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTgzMyw4ICs4MzIsMTUgQEAgYm9vbCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2luU2Np
c3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHIKICAgICB9
CiAKICAgICAvLyBJbnRlcnNlY3Qgd2l0aCBwcmV2aW91cyBjbGlwLgotICAgIGlmICghZGF0YSgp
LnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5pc0VtcHR5KCkpCi0gICAgICAgIHJlY3QuaW50ZXJz
ZWN0KGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2subGFzdCgpKTsKKyAgICBmb3IgKGlu
dCBpID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5zaXplKCkgLSAxOyBpID49IDA7
IC0taSkgeworICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2UmVjdCA9IGRhdGEoKS5zaGFyZWRH
TERhdGEoKS5jbGlwU3RhY2tbaV07CisgICAgICAgIGlmIChwcmV2UmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdGhlIGxhc3Qg
dmFsaWQgY2xpcC4KKyAgICAgICAgcmVjdC5pbnRlcnNlY3QocHJldlJlY3QpOworICAgICAgICBi
cmVhazsKKyAgICB9CiAKICAgICBzY2lzc29yQ2xpcChyZWN0KTsKICAgICBkYXRhKCkuc2hhcmVk
R0xEYXRhKCkuY2xpcFN0YWNrLmFwcGVuZChyZWN0KTsKQEAgLTg1OSw2ICs4NjUsNyBAQCB2b2lk
IFRleHR1cmVNYXBwZXJHTDo6YmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyaXgsIGNvbgogewogICAgIGlmIChiZWdpblNjaXNzb3JDbGlwKG1vZGVsVmll
d01hdHJpeCwgdGFyZ2V0UmVjdCkpCiAgICAgICAgIHJldHVybjsKKwogICAgIGRhdGEoKS5pbml0
U3RlbmNpbCgpOwogICAgIFRleHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6U2hhZGVy
UHJvZ3JhbUluZGV4IHByb2dyYW0gPSBUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6
OkNsaXBQcm9ncmFtOwogICAgIGNvbnN0IFRleHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0
YTo6UHJvZ3JhbUluZm8mIHByb2dyYW1JbmZvID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnByb2dy
YW1zW3Byb2dyYW1dOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA1ZjM4NjJiLi44
ZGQ0ZWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMTc1LDE2ICsxNzUsMTkg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNvcnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1h
cHBlckxheWVyKiA+JiBhcnJheSwgaW50IGYKIAogdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBh
aW50U2VsZkFuZENoaWxkcmVuKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMpCiB7Ci0gICAgYm9vbCBoYXNDbGlwID0gbV9zdGF0ZS5tYXNrc1RvQm91bmRzICYmICFtX2No
aWxkcmVuLmlzRW1wdHkoKTsKLSAgICBpZiAoaGFzQ2xpcCkKLSAgICAgICAgb3B0aW9ucy50ZXh0
dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNmb3JtYXRpb25NYXRyaXgob3B0aW9ucy50cmFuc2Zv
cm0pLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNvbWJpbmVkKCkpLCBGbG9hdFJlY3QoMCwgMCwgbV9z
aXplLndpZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSkpOwotCiAgICAgcGFpbnRTZWxmKG9wdGlvbnMp
OwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQor
ICAgIGlmIChtX2NoaWxkcmVuLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9v
bCBzaG91bGRDbGlwID0gbV9zdGF0ZS5tYXNrc1RvQm91bmRzIHx8IG1fc3RhdGUubWFza0xheWVy
OworICAgIGlmIChzaG91bGRDbGlwKQorICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJl
Z2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeChvcHRpb25zLnRyYW5zZm9ybSkubXVsdGlwbHko
bV90cmFuc2Zvcm0uY29tYmluZWQoKSksIEZsb2F0UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwg
bV9zaXplLmhlaWdodCgpKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY2hpbGRyZW4u
c2l6ZSgpOyArK2kpCiAgICAgICAgIG1fY2hpbGRyZW5baV0tPnBhaW50UmVjdXJzaXZlKG9wdGlv
bnMpOwogCi0gICAgaWYgKGhhc0NsaXApCisgICAgaWYgKHNob3VsZENsaXApCiAgICAgICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci0+ZW5kQ2xpcCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128017</attachid>
            <date>2012-02-21 12:08:33 -0800</date>
            <delta_ts>2012-02-22 17:30:40 -0800</delta_ts>
            <desc>Patch to fix regression</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>2987</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZjFlMjc0Li4yYWIzZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQg
QEAKIDIwMTItMDItMjEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KIAorICAgICAgICBbUXRdW1dLMl0gQ2xpcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODY3NworCisgICAgICAgIFNpbmNl
IHdlIG5vdyBkb24ndCBhZGQgYSB2aWV3cG9ydC1zaXplIGNsaXAgdG8gdGhlIHN0YWNrLCB3ZSBz
aG91bGQgYWxsb3cgdGhlIHN0YWNrIHRvIGJlCisgICAgICAgIGVtcHR5IHdoZW4gd2UgZW5kIHBh
aW50aW5nLCBhbmQgdGhlbiByZXZlcnQgdGhlIHNjaXNzb3Igc3RhdGUgdG8gdGhlIHN0YXRlIGl0
IHdhcyBiZWZvcmUKKyAgICAgICAgd2Ugc3RhcnRlZCBwYWludGluZy4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFdlIGRvbid0
IGF1dG9tYXRpY2FsbHkgdGVzdCB0aGUgT3BlbkdMIGNvZGUgcGF0aCB5ZXQuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcDoKKyAgICAgICAg
KFRleHR1cmVNYXBwZXJHTERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdM
OjpiZWdpblBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6ZW5k
UGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjplbmRTY2lzc29y
Q2xpcCk6CisKKzIwMTItMDItMjEgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5v
a2lhLmNvbT4KKwogICAgICAgICBbUXRdIFByZXZpb3VzIHdlYiBwYWdlIGFwcGVhcnMgb3V0c2lk
ZSBjb250ZW50IHJlY3QKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4ODE2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggZjhlYTQ4MS4uZTdmMTJl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTMwNyw2ICszMDcsNyBAQCBzdHJ1Y3QgVGV4
dHVyZU1hcHBlckdMRGF0YSB7CiAgICAgR0xpbnQgcHJldmlvdXNTY2lzc29yU3RhdGU7CiAgICAg
R0xpbnQgcHJldmlvdXNEZXB0aFN0YXRlOwogICAgIEdMaW50IHZpZXdwb3J0WzRdOworICAgIEdM
aW50IHByZXZpb3VzU2Npc3Nvcls0XTsKICAgICBSZWZQdHI8U2hhcmVkR0xEYXRhPiBtX3NoYXJl
ZEdMRGF0YTsKIH07CiAKQEAgLTQ4OSw2ICs0OTAsNyBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6
YmVnaW5QYWludGluZygpCiAgICAgZGF0YSgpLmRpZE1vZGlmeVN0ZW5jaWwgPSBmYWxzZTsKICAg
ICBnbERlcHRoTWFzaygwKTsKICAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCBkYXRhKCku
dmlld3BvcnQpOworICAgIGdsR2V0SW50ZWdlcnYoR0xfU0NJU1NPUl9CT1gsIGRhdGEoKS5wcmV2
aW91c1NjaXNzb3IpOwogICAgIGJpbmRTdXJmYWNlKDApOwogfQogCkBAIC01MDAsNiArNTAyLDgg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5nKCkKICAgICB9CiAKICAgICBnbFVz
ZVByb2dyYW0oZGF0YSgpLnByZXZpb3VzUHJvZ3JhbSk7CisKKyAgICBnbFNjaXNzb3IoZGF0YSgp
LnByZXZpb3VzU2Npc3NvclswXSwgZGF0YSgpLnByZXZpb3VzU2Npc3NvclsxXSwgZGF0YSgpLnBy
ZXZpb3VzU2Npc3NvclsyXSwgZGF0YSgpLnByZXZpb3VzU2Npc3NvclszXSk7CiAgICAgaWYgKGRh
dGEoKS5wcmV2aW91c1NjaXNzb3JTdGF0ZSkKICAgICAgICAgZ2xFbmFibGUoR0xfU0NJU1NPUl9U
RVNUKTsKICAgICBlbHNlCkBAIC01MTAsNiArNTE0LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6
OmVuZFBhaW50aW5nKCkKICAgICBlbHNlCiAgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNU
KTsKIAorCiAjaWYgUExBVEZPUk0oUVQpCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTg1Myw3ICs4NTgsMTEgQEAgYm9vbCBUZXh0dXJlTWFwcGVyR0w6OmJlZ2luU2Np
c3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHIKIGJvb2wg
VGV4dHVyZU1hcHBlckdMOjplbmRTY2lzc29yQ2xpcCgpCiB7CiAgICAgZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLmNsaXBTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgQVNTRVJUKCFkYXRhKCkuc2hhcmVk
R0xEYXRhKCkuY2xpcFN0YWNrLmlzRW1wdHkoKSk7CisKKyAgICAvLyBJZiB0aGUgc3RhY2sgaXMg
ZW1wdHksIGl0IG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGFwcGx5IHRoZSBzY2lzc29yIGNsaXAgd2Ug
aGFkIGJlZm9yZSBUZXh0dXJlTWFwcGVyIHN0YXJ0ZWQgcGFpbnRpbmcgdGhlIHRyZWUuCisgICAg
Ly8gV2UgcmV0dXJuIHRydWUsIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGlzIHRvIGhhdmUgc2lk
ZS1lZmZlY3RzIG9uIHRoZSBzdGVuY2lsIGJ1ZmZlci4KKyAgICBpZiAoZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLmNsaXBTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
SW50UmVjdCByZWN0ID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5sYXN0KCk7CiAg
ICAgaWYgKHJlY3QuaXNFbXB0eSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128346</attachid>
            <date>2012-02-22 17:30:47 -0800</date>
            <delta_ts>2012-02-23 06:14:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78677-20120222173036.patch</filename>
            <type>text/plain</type>
            <size>20695</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTMwYjUyYmQ3MjUyMzIw
OGM2YzY0ZDVkNThkMTg3MGEzYWMxNDdjMS4uY2Y0ZmJhNjlkMmJkODM5NDY5N2QwMzVkODcxOGYz
NDdiYTJiNWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTAyLTIyICBObydh
bSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtX
SzJdIENsaXBwaW5nIGlzIGJyb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Nzg2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXdvcmsgdGhlIGNsaXBwaW5nIHN0YWNrIGluIFRleHR1cmVNYXBwZXJH
TC4KKyAgICAgICAgSW5zdGVhZCBvZiBzYXZpbmcgYSBzdGFjayBvZiBJbnRSZWN0IHNjaXNzb3Ig
Y2xpcHMsIHdlIHNhdmUgZXZlcnkgY2xpcHBpbmcgY2hhbmdlIGluIHRoZQorICAgICAgICBzdGFj
aywgYW5kIHJlYXBwbHkgaXQgd2hlbiB3ZSBlbmQgdGhlIGNsaXAuIFBvcHBpbmcgdGhlIHN0YWNr
IGlzIGFsbW9zdCBmcmVlLCBzaW5jZSB3ZQorICAgICAgICBkb24ndCByZWFwcGx5IHRoZSBzdGVu
Y2lsIGJ1dCBzaW1wbHkgY2hhbmdlIHRoZSBzdGVuY2lsIHRlc3QgaW5kZXguCisKKyAgICAgICAg
SW4gYWRkaXRpb24sIHdlIGRvbid0IHVzZSBhIHNwZWNpYWwgc2hhZGVyIGZvciBjbGlwcGluZywg
YW5kIHdlIGRvbid0IGFwcGx5IGNsaXBwaW5nIGZvcgorICAgICAgICBtYXNrZWQgY2hpbGRyZW4s
IHNpbmNlIHRoZXkncmUgYWxyZWFkeSBjbGlwcGVkIGJlY2F1c2UgdGhleSdyZSByZW5kZXJlZCBp
bnRvIGFuIGludGVybWVkaWF0ZQorICAgICAgICBidWZmZXIuCisKKyAgICAgICAgVGhpcyBmaXhl
cyBleGl0aW5nIHRlc3RzIGluIExheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93LgorICAg
ICAgICBJdCBhbHNvIGZpeGVzIGFzc2VydHMgaW4gdGhlIGxlYXZlcyBkZW1vLCBhcyB3ZWxsIGFz
IGFzc2VydHMgaW4gbnl0aW1lcy5jb20gYW5kIG90aGVyIHNpdGVzLgorCisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRl
bnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcDoKKyAgICAgICAgKENsaXBTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OkNsaXBTdGF0ZTo6Q2xpcFN0YXRlKToKKyAgICAgICAg
KFNoYXJlZEdMRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjpT
aGFyZWRHTERhdGE6OnB1c2hDbGlwU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpwb3BDbGlwU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckdMRGF0YTo6U2hhcmVkR0xEYXRhOjpzY2lzc29yQ2xpcCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OmFwcGx5Q3Vy
cmVudENsaXApOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMRGF0YSk6CisgICAgICAgIChCaXRt
YXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMRGF0YTo6aW5p
dFN0ZW5jaWwpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyR0w6OmJlZ2luUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdMOjplbmRQYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmRy
YXdUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6aW5pdFN0ZW5j
aWwpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpiaW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6ZGVzdHJveSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyR0w6OmJpbmRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJHTDo6YmVnaW5TY2lzc29yQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0w6OmJlZ2luQ2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmVu
ZENsaXApOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNl
bGZBbmRDaGlsZHJlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuaDoKKwogMjAxMi0wMi0yMiAgRGFuaWVs
IEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIGNoYW5nZSBsb2cg
ZW50cnkgZm9yIHIxMDg1NjEgdG8gcmVmbGVjdCByZW1vdmFsIG9mICJpZiAobV9kaXNwYXRjaFNv
b25MaXN0LmlzRW1wdHkoKSkiLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAppbmRleCBkZjE0NjFmYWIy
ZDJmOTg1MjJiOGU1MTYyZmVlZGNiMjYzMDJlNjlmLi45N2QzYjk1MTdmODcwODc4YTkyYzRhNmZm
OWY4OGUzMzFjMzdmODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmNwcApAQCAtMTI1LDEyICsxMjUs
NTkgQEAgc3RydWN0IFRleHR1cmVNYXBwZXJHTERhdGEgewogICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTaGFyZWRHTERhdGEoZ2V0Q3VycmVudEdMQ29udGV4dCgpKSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpbnQgc3RlbmNpbEluZGV4OwotICAgICAgICBWZWN0b3I8SW50UmVjdD4g
Y2xpcFN0YWNrOworICAgICAgICBzdHJ1Y3QgQ2xpcFN0YXRlIHsKKyAgICAgICAgICAgIEludFJl
Y3Qgc2Npc3NvckJveDsKKyAgICAgICAgICAgIGludCBzdGVuY2lsSW5kZXg7CisgICAgICAgICAg
ICBDbGlwU3RhdGUoY29uc3QgSW50UmVjdCYgc2Npc3NvcnMsIGludCBzdGVuY2lsKQorICAgICAg
ICAgICAgICAgIDogc2Npc3NvckJveChzY2lzc29ycykKKyAgICAgICAgICAgICAgICAsIHN0ZW5j
aWxJbmRleChzdGVuY2lsKQorICAgICAgICAgICAgeyB9CisKKyAgICAgICAgICAgIENsaXBTdGF0
ZSgpCisgICAgICAgICAgICAgICAgOiBzdGVuY2lsSW5kZXgoMSkKKyAgICAgICAgICAgIHsgfQor
ICAgICAgICB9OworCisgICAgICAgIENsaXBTdGF0ZSBjdXJyZW50Q2xpcFN0YXRlOworICAgICAg
ICBWZWN0b3I8Q2xpcFN0YXRlPiBjbGlwU3RhY2s7CisKKyAgICAgICAgdm9pZCBwdXNoQ2xpcFN0
YXRlKCkKKyAgICAgICAgeworICAgICAgICAgICAgY2xpcFN0YWNrLmFwcGVuZChjdXJyZW50Q2xp
cFN0YXRlKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcG9wQ2xpcFN0YXRlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGNsaXBTdGFjay5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgY3VycmVudENsaXBTdGF0ZSA9IGNsaXBTdGFjay5sYXN0
KCk7CisgICAgICAgICAgICBjbGlwU3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgc3RhdGljIHZvaWQgc2Npc3NvckNsaXAoY29uc3QgSW50UmVjdCYgcmVjdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgR0xpbnQgdmlld3BvcnRbNF07CisgICAgICAgICAgICBHTF9D
TUQoZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgdmlld3BvcnQpKQorICAgICAgICAgICAgR0xf
Q01EKGdsU2Npc3NvcihyZWN0LngoKSwgdmlld3BvcnRbM10gLSByZWN0Lm1heFkoKSArIDEsIHJl
Y3Qud2lkdGgoKSAtIDEsIHJlY3QuaGVpZ2h0KCkgLSAxKSkKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgYXBwbHlDdXJyZW50Q2xpcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNjaXNzb3JD
bGlwKGN1cnJlbnRDbGlwU3RhdGUuc2Npc3NvckJveCk7CisgICAgICAgICAgICBHTF9DTUQoZ2xT
dGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfS0VFUCkpCisgICAgICAgICAgICBnbFN0ZW5j
aWxGdW5jKEdMX0VRVUFMLCBjdXJyZW50Q2xpcFN0YXRlLnN0ZW5jaWxJbmRleCAtIDEsIGN1cnJl
bnRDbGlwU3RhdGUuc3RlbmNpbEluZGV4IC0gMSk7CisgICAgICAgICAgICBpZiAoY3VycmVudENs
aXBTdGF0ZS5zdGVuY2lsSW5kZXggPT0gMSkKKyAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xf
U1RFTkNJTF9URVNUKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnbEVuYWJs
ZShHTF9TVEVOQ0lMX1RFU1QpOworICAgICAgICB9CisKICAgICAgICAgVGV4dHVyZU1hcHBlclNo
YWRlck1hbmFnZXIgdGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI7CiAKICAgICAgICAgU2hhcmVk
R0xEYXRhKEdMQ29udGV4dCBnbENvbnRleHQpCi0gICAgICAgICAgICA6IHN0ZW5jaWxJbmRleCgx
KQogICAgICAgICB7CiAgICAgICAgICAgICBnbENvbnRleHREYXRhTWFwKCkuYWRkKGdsQ29udGV4
dCwgdGhpcyk7CiAgICAgICAgIH0KQEAgLTE1NSwxNCArMjAyLDcgQEAgc3RydWN0IFRleHR1cmVN
YXBwZXJHTERhdGEgewogICAgICAgICByZXR1cm4gKihtX3NoYXJlZEdMRGF0YS5nZXQoKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBpbml0U3RlbmNpbCgpCi0gICAgewotICAgICAgICBpZiAoZGlkTW9k
aWZ5U3RlbmNpbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2xDbGVhclN0ZW5jaWwo
MCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICAgICAgZGlk
TW9kaWZ5U3RlbmNpbCA9IHRydWU7Ci0gICAgfQorICAgIHZvaWQgaW5pdFN0ZW5jaWwoKTsKIAog
ICAgIFRleHR1cmVNYXBwZXJHTERhdGEoKQogICAgICAgICA6IHByZXZpb3VzUHJvZ3JhbSgwKQpA
QCAtMTc4LDcgKzIxOCw5IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBHTGlu
dCBwcmV2aW91c1NjaXNzb3JTdGF0ZTsKICAgICBHTGludCBwcmV2aW91c0RlcHRoU3RhdGU7CiAg
ICAgR0xpbnQgdmlld3BvcnRbNF07CisgICAgR0xpbnQgcHJldmlvdXNTY2lzc29yWzRdOwogICAg
IFJlZlB0cjxTaGFyZWRHTERhdGE+IG1fc2hhcmVkR0xEYXRhOworICAgIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiBjdXJyZW50U3VyZmFjZTsKIH07CiAKIGNsYXNzIEJpdG1hcFRleHR1cmVHTCA6IHB1
YmxpYyBCaXRtYXBUZXh0dXJlIHsKQEAgLTE4OCw2ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXQoKTsK
ICAgICB2b2lkIGJpbmQoKTsKKyAgICB2b2lkIGluaXRTdGVuY2lsKCk7CiAgICAgfkJpdG1hcFRl
eHR1cmVHTCgpIHsgZGVzdHJveSgpOyB9CiAgICAgdmlydHVhbCB1aW50MzJfdCBpZCgpIGNvbnN0
IHsgcmV0dXJuIG1faWQ7IH0KICAgICBpbmxpbmUgRmxvYXRTaXplIHJlbGF0aXZlU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVsYXRpdmVTaXplOyB9CkBAIC0yMTYsNiArMjU5LDIxIEBAIHByaXZh
dGU6CiAgICAgZnJpZW5kIGNsYXNzIFRleHR1cmVNYXBwZXJHTDsKIH07CiAKK3ZvaWQgVGV4dHVy
ZU1hcHBlckdMRGF0YTo6aW5pdFN0ZW5jaWwoKQoreworICAgIGlmIChjdXJyZW50U3VyZmFjZSkg
eworICAgICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPihjdXJyZW50U3VyZmFjZS5n
ZXQoKSktPmluaXRTdGVuY2lsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
ZGlkTW9kaWZ5U3RlbmNpbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZ2xDbGVhclN0ZW5jaWwo
MCk7CisgICAgZ2xDbGVhcihHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOworICAgIGRpZE1vZGlmeVN0
ZW5jaWwgPSB0cnVlOworfQorCiBUZXh0dXJlTWFwcGVyR0w6OlRleHR1cmVNYXBwZXJHTCgpCiAg
ICAgOiBtX2RhdGEobmV3IFRleHR1cmVNYXBwZXJHTERhdGEpCiAgICAgLCBtX2NvbnRleHQoMCkK
QEAgLTI0NSw2ICszMDMsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZygp
CiAgICAgZGF0YSgpLmRpZE1vZGlmeVN0ZW5jaWwgPSBmYWxzZTsKICAgICBnbERlcHRoTWFzaygw
KTsKICAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCBkYXRhKCkudmlld3BvcnQpOworICAg
IGdsR2V0SW50ZWdlcnYoR0xfU0NJU1NPUl9CT1gsIGRhdGEoKS5wcmV2aW91c1NjaXNzb3IpOwor
ICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jdXJyZW50Q2xpcFN0YXRlLnN0ZW5jaWxJbmRleCA9
IDE7CisgICAgZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmN1cnJlbnRDbGlwU3RhdGUuc2Npc3NvckJv
eCA9IEludFJlY3QoMCwgMCwgZGF0YSgpLnZpZXdwb3J0WzJdLCBkYXRhKCkudmlld3BvcnRbM10p
OwogICAgIGJpbmRTdXJmYWNlKDApOwogfQogCkBAIC0yNTYsNiArMzE3LDggQEAgdm9pZCBUZXh0
dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5nKCkKICAgICB9CiAKICAgICBnbFVzZVByb2dyYW0oZGF0
YSgpLnByZXZpb3VzUHJvZ3JhbSk7CisKKyAgICBnbFNjaXNzb3IoZGF0YSgpLnByZXZpb3VzU2Np
c3NvclswXSwgZGF0YSgpLnByZXZpb3VzU2Npc3NvclsxXSwgZGF0YSgpLnByZXZpb3VzU2Npc3Nv
clsyXSwgZGF0YSgpLnByZXZpb3VzU2Npc3NvclszXSk7CiAgICAgaWYgKGRhdGEoKS5wcmV2aW91
c1NjaXNzb3JTdGF0ZSkKICAgICAgICAgZ2xFbmFibGUoR0xfU0NJU1NPUl9URVNUKTsKICAgICBl
bHNlCkBAIC0yNjYsNiArMzI5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5n
KCkKICAgICBlbHNlCiAgICAgICAgIGdsRGlzYWJsZShHTF9ERVBUSF9URVNUKTsKIAorCiAjaWYg
UExBVEZPUk0oUVQpCiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKQEAgLTI4
MCw2ICszNDQsMTAgQEAgdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmRyYXdUZXh0dXJlKGNvbnN0IEJp
dG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYKIHsKICAgICBpZiAoIXRleHR1
cmUuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLmN1cnJlbnRDbGlwU3RhdGUuc2Npc3NvckJveC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZSk7CiAgICAgZHJhd1RleHR1cmUodGV4
dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFN1cHBvcnRzQmxlbmRpbmcs
IHRleHR1cmVHTC5yZWxhdGl2ZVNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBt
YXNrKTsKIH0KQEAgLTUzMiwzNiArNjAwLDQwIEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRp
b25NYXRyaXggY3JlYXRlUHJvamVjdGlvbk1hdHJpeChjb25zdCBJbnRTaXplJiBzaXplLCBiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCBmbGlwID8gMSA6IC0xLCAtKGZhciAr
IG5lYXIpIC8gKGZhciAtIG5lYXIpLCAxKTsKIH0KIAordm9pZCBCaXRtYXBUZXh0dXJlR0w6Omlu
aXRTdGVuY2lsKCkKK3sKKyAgICBpZiAobV9yYm8pCisgICAgICAgIHJldHVybjsKKyAgICBHTF9D
TUQoZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX3JibykpOworICAgIEdMX0NNRChnbEJpbmRSZW5k
ZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3JibykpCisjaWZkZWYgVEVYTUFQX09QRU5HTF9F
U18yCisgICAgR0xfQ01EKGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdM
X1NURU5DSUxfSU5ERVg4LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNpemUuaGVp
Z2h0KCkpKQorI2Vsc2UKKyAgICBHTF9DTUQoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRF
UkJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTCwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1
cmVTaXplLmhlaWdodCgpKSkKKyNlbmRpZgorICAgIEdMX0NNRChnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCAwKSkKKyAgICBHTF9DTUQoZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIs
IG1fcmJvKSkKKyAgICBHTF9DTUQoZ2xDbGVhclN0ZW5jaWwoMCkpCisgICAgR0xfQ01EKGdsQ2xl
YXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKSkKK30KKwogdm9pZCBCaXRtYXBUZXh0dXJlR0w6OmJp
bmQoKQogewotICAgIGludCYgc3RlbmNpbEluZGV4ID0gbV90ZXh0dXJlTWFwcGVyLT5kYXRhKCku
c2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4OwogICAgIGlmIChtX3N1cmZhY2VOZWVkc1Jlc2V0
IHx8ICFtX2ZibykgewogICAgICAgICBpZiAoIW1fZmJvKQogICAgICAgICAgICAgR0xfQ01EKGds
R2VuRnJhbWVidWZmZXJzKDEsICZtX2ZibykpCi0gICAgICAgIGlmICghbV9yYm8pCi0gICAgICAg
ICAgICBHTF9DTUQoZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX3JibykpOwotICAgICAgICBHTF9D
TUQoZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9yYm8pKQotI2lmZGVmIFRF
WE1BUF9PUEVOR0xfRVNfMgotICAgICAgICBHTF9DTUQoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdM
X1JFTkRFUkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRFWDgsIG1fdGV4dHVyZVNpemUud2lkdGgoKSwg
bV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSkpCi0jZWxzZQotICAgICAgICBHTF9DTUQoZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTCwgbV90ZXh0dXJl
U2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpKSkKLSNlbmRpZgogICAgICAgICBH
TF9DTUQoZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKSkKICAgICAgICAg
R0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCkpCi0gICAgICAgIEdMX0NNRChn
bEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKSkKICAgICAgICAgR0xfQ01EKGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9URVhUVVJFXzJELCBpZCgpLCAwKSkKLSAgICAgICAgR0xfQ01EKGdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVO
REVSQlVGRkVSLCBtX3JibykpCiAgICAgICAgIEdMX0NNRChnbENsZWFyQ29sb3IoMCwgMCwgMCwg
MCkpCi0gICAgICAgIEdMX0NNRChnbENsZWFyU3RlbmNpbChzdGVuY2lsSW5kZXggLSAxKSkKLSAg
ICAgICAgR0xfQ01EKGdsQ2xlYXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUIHwgR0xfQ09MT1JfQlVG
RkVSX0JJVCkpCisgICAgICAgIEdMX0NNRChnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpKQog
ICAgICAgICBtX3N1cmZhY2VOZWVkc1Jlc2V0ID0gZmFsc2U7CiAgICAgfSBlbHNlCiAgICAgICAg
IEdMX0NNRChnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pKQogCi0gICAg
Z2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfS0VFUCk7Ci0gICAgZ2xTdGVuY2lsRnVu
YyhzdGVuY2lsSW5kZXggPiAxID8gR0xfR0VRVUFMIDogR0xfQUxXQVlTLCBzdGVuY2lsSW5kZXgg
LSAxLCBzdGVuY2lsSW5kZXggLSAxKTsKICAgICBHTF9DTUQoZ2xWaWV3cG9ydCgwLCAwLCBzaXpl
KCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkKICAgICBtX3RleHR1cmVNYXBwZXItPmRhdGEo
KS5wcm9qZWN0aW9uTWF0cml4ID0gY3JlYXRlUHJvamVjdGlvbk1hdHJpeChzaXplKCksIGZhbHNl
KTsKKyAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBGbG9hdFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudFNpemUoKSkpOwogfQogCiB2b2lk
IEJpdG1hcFRleHR1cmVHTDo6ZGVzdHJveSgpCkBAIC01NzYsNiArNjQ4LDcgQEAgdm9pZCBCaXRt
YXBUZXh0dXJlR0w6OmRlc3Ryb3koKQogICAgICAgICBHTF9DTUQoZ2xEZWxldGVSZW5kZXJidWZm
ZXJzKDEsICZtX3JibykpCiAKICAgICBtX2ZibyA9IDA7CisgICAgbV9yYm8gPSAwOwogICAgIG1f
aWQgPSAwOwogICAgIG1fdGV4dHVyZVNpemUgPSBJbnRTaXplKCk7CiAgICAgbV9yZWxhdGl2ZVNp
emUgPSBGbG9hdFNpemUoMSwgMSk7CkBAIC02MDQsMjAgKzY3NywxNiBAQCB2b2lkIFRleHR1cmVN
YXBwZXJHTDo6YmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSAqc3VyZmFjZVBvaW50ZXIpCiAgICAg
ICAgIEludFNpemUgdmlld3BvcnRTaXplKGRhdGEoKS52aWV3cG9ydFsyXSwgZGF0YSgpLnZpZXdw
b3J0WzNdKTsKICAgICAgICAgR0xfQ01EKGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCAwKSkKICAgICAgICAgZGF0YSgpLnByb2plY3Rpb25NYXRyaXggPSBjcmVhdGVQcm9qZWN0aW9u
TWF0cml4KHZpZXdwb3J0U2l6ZSwgdHJ1ZSk7Ci0gICAgICAgIEdMX0NNRChnbFN0ZW5jaWxGdW5j
KGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggPiAxID8gR0xfRVFVQUwgOiBHTF9B
TFdBWVMsIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggLSAxLCBkYXRhKCkuc2hh
cmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4IC0gMSkpCi0gICAgICAgIEdMX0NNRChnbFN0ZW5jaWxP
cChHTF9LRUVQLCBHTF9LRUVQLCBHTF9LRUVQKSkKICAgICAgICAgR0xfQ01EKGdsVmlld3BvcnQo
MCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkpCisgICAg
ICAgIGlmIChkYXRhKCkuY3VycmVudFN1cmZhY2UpCisgICAgICAgICAgICBlbmRDbGlwKCk7Cisg
ICAgICAgIGRhdGEoKS5jdXJyZW50U3VyZmFjZS5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgc3VyZmFjZS0+YmluZCgpOwotfQogCi1zdGF0aWMgdm9pZCBzY2lzc29yQ2xp
cChjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIEdMaW50IHZpZXdwb3J0WzRdOwotICAgIGds
R2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0KTsKLSAgICBnbFNjaXNzb3IocmVjdC54
KCksIHZpZXdwb3J0WzNdIC0gcmVjdC5tYXhZKCkgKyAxLCByZWN0LndpZHRoKCkgLSAxLCByZWN0
LmhlaWdodCgpIC0gMSk7CisgICAgc3VyZmFjZS0+YmluZCgpOworICAgIGRhdGEoKS5jdXJyZW50
U3VyZmFjZSA9IHN1cmZhY2U7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpiZWdpblNjaXNz
b3JDbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkKQEAgLTYyNiw0OSArNjk1LDIzIEBAIGJvb2wgVGV4dHVy
ZU1hcHBlckdMOjpiZWdpblNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
b2RlbFZpZXdNYXRyCiAgICAgSW50UmVjdCByZWN0ID0gcXVhZC5lbmNsb3NpbmdCb3VuZGluZ0Jv
eCgpOwogCiAgICAgLy8gT25seSB1c2Ugc2Npc3NvcnMgb24gcmVjdGlsaW5lYXIgY2xpcHMuCi0g
ICAgaWYgKCFxdWFkLmlzUmVjdGlsaW5lYXIoKSB8fCByZWN0LmlzRW1wdHkoKSkgewotICAgICAg
ICBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmFwcGVuZChJbnRSZWN0KCkpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gSW50ZXJzZWN0IHdpdGggcHJldmlv
dXMgY2xpcC4KLSAgICBmb3IgKGludCBpID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFj
ay5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBjb25zdCBJbnRSZWN0JiBwcmV2
UmVjdCA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2tbaV07Ci0gICAgICAgIGlmIChw
cmV2UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBX
ZSBvbmx5IG5lZWQgdGhlIGxhc3QgdmFsaWQgY2xpcC4KLSAgICAgICAgcmVjdC5pbnRlcnNlY3Qo
cHJldlJlY3QpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzY2lzc29yQ2xpcChyZWN0
KTsKLSAgICBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmFwcGVuZChyZWN0KTsKLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFRleHR1cmVNYXBwZXJHTDo6ZW5kU2Npc3NvckNs
aXAoKQotewotICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2sucmVtb3ZlTGFzdCgp
OwotICAgIEFTU0VSVCghZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5pc0VtcHR5KCkp
OwotCi0gICAgSW50UmVjdCByZWN0ID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5s
YXN0KCk7Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgIGlmICghcXVhZC5pc1JlY3RpbGlu
ZWFyKCkgfHwgcmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHNj
aXNzb3JDbGlwKHJlY3QpOworICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jdXJyZW50Q2xpcFN0
YXRlLnNjaXNzb3JCb3guaW50ZXJzZWN0KHJlY3QpOworICAgIGRhdGEoKS5zaGFyZWRHTERhdGEo
KS5hcHBseUN1cnJlbnRDbGlwKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgVGV4dHVy
ZU1hcHBlckdMOjpiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmll
d01hdHJpeCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0KQogeworICAgIGRhdGEoKS5zaGFy
ZWRHTERhdGEoKS5wdXNoQ2xpcFN0YXRlKCk7CiAgICAgaWYgKGJlZ2luU2Npc3NvckNsaXAobW9k
ZWxWaWV3TWF0cml4LCB0YXJnZXRSZWN0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZGF0YSgp
LmluaXRTdGVuY2lsKCk7CiAKLSAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1D
bGlwPiBzaGFkZXJJbmZvID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnRleHR1cmVNYXBwZXJTaGFk
ZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW08VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1DbGlw
PigpOworICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbVNpbXBsZT4gc2hhZGVy
SW5mbyA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS50ZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5n
ZXRTaGFkZXJQcm9ncmFtPFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlPigpOwogCiAg
ICAgR0xfQ01EKGdsVXNlUHJvZ3JhbShzaGFkZXJJbmZvLT5pZCgpKSkKICAgICBHTF9DTUQoZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCkBAIC02
ODksMzIgKzczMiw0NiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6YmVnaW5DbGlwKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgsIGNvbgogICAgICAgICBtYXRyaXgu
bTQxKCksIG1hdHJpeC5tNDIoKSwgbWF0cml4Lm00MygpLCBtYXRyaXgubTQ0KCkKICAgICB9Owog
Ci0gICAgaW50JiBzdGVuY2lsSW5kZXggPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbElu
ZGV4OworICAgIGNvbnN0IEdMZmxvYXQgbTRhbGxbXSA9IHsKKyAgICAgICAgMiwgMCwgMCwgMCwK
KyAgICAgICAgMCwgMiwgMCwgMCwKKyAgICAgICAgMCwgMCwgMSwgMCwKKyAgICAgICAgLTEsIC0x
LCAwLCAxCisgICAgfTsKKworICAgIGludCYgc3RlbmNpbEluZGV4ID0gZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLmN1cnJlbnRDbGlwU3RhdGUuc3RlbmNpbEluZGV4OwogCi0gICAgR0xfQ01EKGdsVW5p
Zm9ybU1hdHJpeDRmdihzaGFkZXJJbmZvLT5tYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwg
bTQpKQogICAgIEdMX0NNRChnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1QpKQorCisgICAgLy8gTWFr
ZSBzdXJlIHdlIGRvbid0IGRvIGFueSBhY3R1YWwgZHJhd2luZy4KICAgICBHTF9DTUQoZ2xTdGVu
Y2lsRnVuYyhHTF9ORVZFUiwgc3RlbmNpbEluZGV4LCBzdGVuY2lsSW5kZXgpKQotICAgIEdMX0NN
RChnbFN0ZW5jaWxPcChHTF9SRVBMQUNFLCBHTF9SRVBMQUNFLCBHTF9SRVBMQUNFKSkKKworICAg
IC8vIE9wZXJhdGUgb25seSBvbiB0aGUgc3RlbmNpbEluZGV4IGFuZCBhYm92ZS4KICAgICBHTF9D
TUQoZ2xTdGVuY2lsTWFzaygweGZmICYgfihzdGVuY2lsSW5kZXggLSAxKSkpCisKKyAgICAvLyBG
aXJzdCBjbGVhciB0aGUgZW50aXJlIGJ1ZmZlciBhdCB0aGUgY3VycmVudCBpbmRleC4KKyAgICBH
TF9DTUQoZ2xVbmlmb3JtTWF0cml4NGZ2KHNoYWRlckluZm8tPm1hdHJpeFZhcmlhYmxlKCksIDEs
IEdMX0ZBTFNFLCBtNGFsbCkpCisgICAgR0xfQ01EKGdsU3RlbmNpbE9wKEdMX1pFUk8sIEdMX1pF
Uk8sIEdMX1pFUk8pKQorICAgIEdMX0NNRChnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAw
LCA0KSkKKworICAgIC8vIE5vdyBhcHBseSB0aGUgY3VycmVudCBpbmRleCB0byB0aGUgbmV3IHF1
YWQuCisgICAgR0xfQ01EKGdsU3RlbmNpbE9wKEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UsIEdMX1JF
UExBQ0UpKQorICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4
VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00KSkKICAgICBHTF9DTUQoZ2xEcmF3QXJyYXlzKEdM
X1RSSUFOR0xFX0ZBTiwgMCwgNCkpCi0gICAgR0xfQ01EKGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdM
X0tFRVAsIEdMX0tFRVApKQotICAgIHN0ZW5jaWxJbmRleCA8PD0gMTsKLSAgICBnbFN0ZW5jaWxG
dW5jKHN0ZW5jaWxJbmRleCA+IDEgPyBHTF9FUVVBTCA6IEdMX0FMV0FZUywgc3RlbmNpbEluZGV4
IC0gMSwgc3RlbmNpbEluZGV4IC0gMSk7CisKKyAgICAvLyBDbGVhciB0aGUgc3RhdGUuCiAgICAg
R0xfQ01EKGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHNoYWRlckluZm8tPnZlcnRleEF0dHJp
YigpKSkKKyAgICBHTF9DTUQoZ2xTdGVuY2lsTWFzaygwKSkKKworICAgIC8vIEluY3JlYXNlIHN0
ZW5jaWxJbmRleCBhbmQgYXBwbHkgc3RlbmNpbCB0ZXN0aW5nIHRlc3RpbmcuCisgICAgc3RlbmNp
bEluZGV4ICo9IDI7CisgICAgZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmFwcGx5Q3VycmVudENsaXAo
KTsKIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyR0w6OmVuZENsaXAoKQogewotICAgIGlmIChlbmRT
Y2lzc29yQ2xpcCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBkYXRhKCkuc2hhcmVkR0xEYXRh
KCkuc3RlbmNpbEluZGV4ID4+PSAxOwotICAgIGdsU3RlbmNpbEZ1bmMoZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLnN0ZW5jaWxJbmRleCA+IDEgPyBHTF9FUVVBTCA6IEdMX0FMV0FZUywgZGF0YSgpLnNo
YXJlZEdMRGF0YSgpLnN0ZW5jaWxJbmRleCAtIDEsIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVu
Y2lsSW5kZXggLSAxKTsgICAgCi0KLSAgICAvLyBBZnRlciB3ZSd2ZSBjbGVhcmVkIHRoZSBsYXN0
IG5vbi1yZWN0YWxpbmVhciBjbGlwLCB3ZSBkaXNhYmxlIHRoZSBzdGVuY2lsIHRlc3QuCi0gICAg
aWYgKGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggPT0gMSkKLSAgICAgICAgR0xf
Q01EKGdsRGlzYWJsZShHTF9TVEVOQ0lMX1RFU1QpKQotCisgICAgZGF0YSgpLnNoYXJlZEdMRGF0
YSgpLnBvcENsaXBTdGF0ZSgpOworICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5hcHBseUN1cnJl
bnRDbGlwKCk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlckdM
OjpjcmVhdGVUZXh0dXJlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAppbmRleCBlMDkxMjEwMDI1NWNlYTAz
NjgzZmVjOTIzZjk0ODcwYzRlMGU4ZWQxLi4zZTU5ODkwNGJiMzgzMWQxZmRmOWZlZjY2ZDBhNTc3
NGJjMmI4NDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCkBAIC02Nyw3ICs2Nyw2IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBib29sIGJlZ2luU2Npc3NvckNsaXAoY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBib29sIGVuZFNjaXNzb3JDbGlwKCk7
CiAgICAgaW5saW5lIFRleHR1cmVNYXBwZXJHTERhdGEmIGRhdGEoKSB7IHJldHVybiAqbV9kYXRh
OyB9CiAgICAgVGV4dHVyZU1hcHBlckdMRGF0YSogbV9kYXRhOwogICAgIEdyYXBoaWNzQ29udGV4
dCogbV9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCA4ZGQ0ZWI4MDQ3
YjRmYzhkMzBiZTI5MzM2ZmRhNTA4YjFiZTQwODY3Li5kYTBiNDBlMzZhMzI0ODNlZmM1NmY3ZjZm
M2Q2M2Y3YTVhNGYyMGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMTgwLDkg
KzE4MCw5IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbihj
b25zdCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvCiAgICAgaWYgKG1fY2hpbGRyZW4uaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZENsaXAgPSBtX3N0YXRl
Lm1hc2tzVG9Cb3VuZHMgfHwgbV9zdGF0ZS5tYXNrTGF5ZXI7CisgICAgYm9vbCBzaG91bGRDbGlw
ID0gbV9zdGF0ZS5tYXNrc1RvQm91bmRzICYmICFtX3N0YXRlLnByZXNlcnZlczNEOwogICAgIGlm
IChzaG91bGRDbGlwKQotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChU
cmFuc2Zvcm1hdGlvbk1hdHJpeChvcHRpb25zLnRyYW5zZm9ybSkubXVsdGlwbHkobV90cmFuc2Zv
cm0uY29tYmluZWQoKSksIEZsb2F0UmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpKSk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmVnaW5DbGlwKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJhbnNmb3JtKS5tdWx0aXBseShtX3RyYW5zZm9ybS5j
b21iaW5lZCgpKSwgbGF5ZXJSZWN0KCkpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2No
aWxkcmVuLnNpemUoKTsgKytpKQogICAgICAgICBtX2NoaWxkcmVuW2ldLT5wYWludFJlY3Vyc2l2
ZShvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwCmlu
ZGV4IGQ1NmIxNDQ3YzgwZGQ0ZWU2NmUxNWYwYzM4ZjgwMDY4OWYwN2RhZDkuLjNlYjM0ZDE2ZWJj
YWI1OWNmMjBiNGE0NGI2OTAyNGEzOGU3NWM1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJTaGFkZXJNYW5hZ2VyLmNwcApAQCAtODksMjMgKzg5LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIq
IHZlcnRleFNoYWRlclNvdXJjZVNpbXBsZSA9CiAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IElu
TWF0cml4ICogSW5WZXJ0ZXg7CiAgICAgICAgIH0KICAgICApOwotc3RhdGljIGNvbnN0IGNoYXIq
IGZyYWdtZW50U2hhZGVyU291cmNlQ2xpcCA9Ci0gICAgRlJBR01FTlRfU0hBREVSKAotICAgICAg
ICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOwotICAgICAgICB9Ci0gICAgKTsKLQotc3RhdGljIGNv
bnN0IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZUNsaXAgPQotICAgIFZFUlRFWF9TSEFERVIoCi0g
ICAgICAgIHVuaWZvcm0gbWF0NCBJbk1hdHJpeDsKLSAgICAgICAgYXR0cmlidXRlIHZlYzQgSW5W
ZXJ0ZXg7Ci0gICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICB7Ci0gICAgICAgICAgICBn
bF9Qb3NpdGlvbiA9IEluTWF0cml4ICogSW5WZXJ0ZXg7Ci0gICAgICAgIH0KLSAgICApOwogCiB2
b2lkIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtOjppbml0aWFsaXplUHJvZ3JhbSgpCiB7CkBA
IC0xOTcsMjcgKzE4MCw2IEBAIGNvbnN0IGNoYXIqIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFt
T3BhY2l0eUFuZE1hc2s6OmZyYWdtZW50U2hhZGVyU291cmNlKCkKICAgICByZXR1cm4gZnJhZ21l
bnRTaGFkZXJTb3VyY2VPcGFjaXR5QW5kTWFzazsKIH0KIAotUGFzc1JlZlB0cjxUZXh0dXJlTWFw
cGVyU2hhZGVyUHJvZ3JhbUNsaXA+IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQ2xpcDo6Y3Jl
YXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJTaGFkZXJQcm9n
cmFtQ2xpcCgpKTsKLX0KLQotVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1DbGlwOjpUZXh0dXJl
TWFwcGVyU2hhZGVyUHJvZ3JhbUNsaXAoKQotewotICAgIGluaXRpYWxpemVQcm9ncmFtKCk7Ci0g
ICAgZ2V0VW5pZm9ybUxvY2F0aW9uKG1fbWF0cml4VmFyaWFibGUsICJJbk1hdHJpeCIpOwotfQot
Ci1jb25zdCBjaGFyKiBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUNsaXA6OnZlcnRleFNoYWRl
clNvdXJjZSgpCi17Ci0gICAgcmV0dXJuIHZlcnRleFNoYWRlclNvdXJjZUNsaXA7Ci19Ci0KLWNv
bnN0IGNoYXIqIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQ2xpcDo6ZnJhZ21lbnRTaGFkZXJT
b3VyY2UoKQotewotICAgIHJldHVybiBmcmFnbWVudFNoYWRlclNvdXJjZUNsaXA7Ci19Ci0KIFRl
eHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyOjpUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlcigpCiB7
CiAgICAgQVNTRVJUKGluaXRpYWxpemVPcGVuR0xTaGltcygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFu
YWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJNYW5hZ2VyLmgKaW5kZXggMGYzOGM3ZTczNGJkOTY5Njg1ZjUzZmRlMjU0ODRh
MDBmN2RlNzFhNC4uNTNhZWFhYWNjNzY3NmExZTFhODFkMWQwYzJjNGM5MDdjNDJhMGNkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJTaGFkZXJNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmgKQEAgLTEwNCwxOCArMTA0LDYg
QEAgcHJpdmF0ZToKICAgICBHTGludCBtX29wYWNpdHlWYXJpYWJsZTsKIH07CiAKLWNsYXNzIFRl
eHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQ2xpcCA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyU2hhZGVy
UHJvZ3JhbSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1hcHBlclNo
YWRlclByb2dyYW1DbGlwPiBjcmVhdGUoKTsKLSAgICBHTGludCBtYXRyaXhWYXJpYWJsZSgpIHsg
cmV0dXJuIG1fbWF0cml4VmFyaWFibGU7IH0KLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIqIHZlcnRleFNoYWRlclNvdXJjZSgpOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogZnJh
Z21lbnRTaGFkZXJTb3VyY2UoKTsKLSAgICBUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUNsaXAo
KTsKLSAgICBHTGludCBtX21hdHJpeFZhcmlhYmxlOwotfTsKLQogY2xhc3MgVGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXIgewogcHVibGljOgogICAgIFRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2Vy
KCk7Cg==
</data>
<flag name="review"
          id="130698"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128471</attachid>
            <date>2012-02-23 06:14:14 -0800</date>
            <delta_ts>2012-02-23 16:24:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20220</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzY2Q5OGQ5Li44NzU4MjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTItMDItMjIgIE5vJ2FtIFJvc2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNv
bT4KKworICAgICAgICBbUXRdW1dLMl0gQ2xpcHBpbmcgaXMgYnJva2VuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODY3NworCisgICAgICAgIFJldmll
d2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgorCisgICAgICAgIFJld29yayB0aGUgY2xpcHBpbmcgc3Rh
Y2sgaW4gVGV4dHVyZU1hcHBlckdMLgorICAgICAgICBJbnN0ZWFkIG9mIHNhdmluZyBhIHN0YWNr
IG9mIEludFJlY3Qgc2Npc3NvciBjbGlwcywgd2Ugc2F2ZSBldmVyeSBjbGlwcGluZyBjaGFuZ2Ug
aW4gdGhlCisgICAgICAgIHN0YWNrLCBhbmQgcmVhcHBseSBpdCB3aGVuIHdlIGVuZCB0aGUgY2xp
cC4gUG9wcGluZyB0aGUgc3RhY2sgaXMgYWxtb3N0IGZyZWUsIHNpbmNlIHdlCisgICAgICAgIGRv
bid0IHJlYXBwbHkgdGhlIHN0ZW5jaWwgYnV0IHNpbXBseSBjaGFuZ2UgdGhlIHN0ZW5jaWwgdGVz
dCBpbmRleC4KKworICAgICAgICBJbiBhZGRpdGlvbiwgd2UgZG9uJ3QgdXNlIGEgc3BlY2lhbCBz
aGFkZXIgZm9yIGNsaXBwaW5nLCBhbmQgd2UgZG9uJ3QgYXBwbHkgY2xpcHBpbmcgZm9yCisgICAg
ICAgIG1hc2tlZCBjaGlsZHJlbiwgc2luY2UgdGhleSdyZSBhbHJlYWR5IGNsaXBwZWQgYmVjYXVz
ZSB0aGV5J3JlIHJlbmRlcmVkIGludG8gYW4gaW50ZXJtZWRpYXRlCisgICAgICAgIGJ1ZmZlci4K
KworICAgICAgICBUaGlzIGZpeGVzIGV4aXRpbmcgdGVzdHMgaW4gTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvb3ZlcmZsb3cuCisgICAgICAgIEl0IGFsc28gZml4ZXMgYXNzZXJ0cyBpbiB0aGUgbGVh
dmVzIGRlbW8sIGFzIHdlbGwgYXMgYXNzZXJ0cyBpbiBueXRpbWVzLmNvbSBhbmQgb3RoZXIgc2l0
ZXMuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwOgorICAgICAgICAoQ2xpcFN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6Q2xpcFN0YXRlOjpD
bGlwU3RhdGUpOgorICAgICAgICAoU2hhcmVkR0xEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJHTERhdGE6OlNoYXJlZEdMRGF0YTo6cHVzaENsaXBTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6OnBvcENsaXBTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0xEYXRhOjpTaGFyZWRHTERhdGE6
OnNjaXNzb3JDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTERhdGE6OlNo
YXJlZEdMRGF0YTo6YXBwbHlDdXJyZW50Q2xpcCk6CisgICAgICAgIChUZXh0dXJlTWFwcGVyR0xE
YXRhKToKKyAgICAgICAgKEJpdG1hcFRleHR1cmVHTCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0xEYXRhOjppbml0U3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5QYWludGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyR0w6OmVuZFBhaW50aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZUdMOjppbml0U3RlbmNpbCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJl
R0w6OmJpbmQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpkZXN0cm95KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6YmluZFN1cmZhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpiZWdpblNjaXNzb3JDbGlwKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6YmVnaW5DbGlwKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJHTDo6ZW5kQ2xpcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5oOgor
CiAyMDEyLTAyLTIxICBSb2JpbiBDYW8gIDxyb2Jpbi5jYW9AdG9yY2htb2JpbGUuY29tLmNuPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XSBVcHN0cmVhbSBJY29uIGNsYXNzIGluIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggZGYxNDYxZi4uNzQ2
YTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAKQEAgLTEyNSwxMiArMTI1LDU5IEBAIHN0cnVj
dCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2hhcmVkR0xEYXRhKGdldEN1cnJlbnRHTENvbnRleHQoKSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaW50IHN0ZW5jaWxJbmRleDsKLSAgICAgICAgVmVjdG9yPEludFJlY3Q+IGNsaXBTdGFjazsK
KyAgICAgICAgc3RydWN0IENsaXBTdGF0ZSB7CisgICAgICAgICAgICBJbnRSZWN0IHNjaXNzb3JC
b3g7CisgICAgICAgICAgICBpbnQgc3RlbmNpbEluZGV4OworICAgICAgICAgICAgQ2xpcFN0YXRl
KGNvbnN0IEludFJlY3QmIHNjaXNzb3JzLCBpbnQgc3RlbmNpbCkKKyAgICAgICAgICAgICAgICA6
IHNjaXNzb3JCb3goc2Npc3NvcnMpCisgICAgICAgICAgICAgICAgLCBzdGVuY2lsSW5kZXgoc3Rl
bmNpbCkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBDbGlwU3RhdGUoKQorICAgICAg
ICAgICAgICAgIDogc3RlbmNpbEluZGV4KDEpCisgICAgICAgICAgICB7IH0KKyAgICAgICAgfTsK
KworICAgICAgICBDbGlwU3RhdGUgY2xpcFN0YXRlOworICAgICAgICBWZWN0b3I8Q2xpcFN0YXRl
PiBjbGlwU3RhY2s7CisKKyAgICAgICAgdm9pZCBwdXNoQ2xpcFN0YXRlKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgY2xpcFN0YWNrLmFwcGVuZChjbGlwU3RhdGUpOworICAgICAgICB9CisKKyAg
ICAgICAgdm9pZCBwb3BDbGlwU3RhdGUoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY2xp
cFN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBj
bGlwU3RhdGUgPSBjbGlwU3RhY2subGFzdCgpOworICAgICAgICAgICAgY2xpcFN0YWNrLnJlbW92
ZUxhc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyB2b2lkIHNjaXNzb3JDbGlwKGNv
bnN0IEludFJlY3QmIHJlY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChyZWN0LmlzRW1w
dHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIEdMaW50IHZpZXdw
b3J0WzRdOworICAgICAgICAgICAgR0xfQ01EKGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZp
ZXdwb3J0KSkKKyAgICAgICAgICAgIEdMX0NNRChnbFNjaXNzb3IocmVjdC54KCksIHZpZXdwb3J0
WzNdIC0gcmVjdC5tYXhZKCkgKyAxLCByZWN0LndpZHRoKCkgLSAxLCByZWN0LmhlaWdodCgpIC0g
MSkpCisgICAgICAgIH0KKworICAgICAgICB2b2lkIGFwcGx5Q3VycmVudENsaXAoKQorICAgICAg
ICB7CisgICAgICAgICAgICBzY2lzc29yQ2xpcChjbGlwU3RhdGUuc2Npc3NvckJveCk7CisgICAg
ICAgICAgICBHTF9DTUQoZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfS0VFUCkpCisg
ICAgICAgICAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCBjbGlwU3RhdGUuc3RlbmNpbEluZGV4
IC0gMSwgY2xpcFN0YXRlLnN0ZW5jaWxJbmRleCAtIDEpOworICAgICAgICAgICAgaWYgKGNsaXBT
dGF0ZS5zdGVuY2lsSW5kZXggPT0gMSkKKyAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xfU1RF
TkNJTF9URVNUKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBnbEVuYWJsZShH
TF9TVEVOQ0lMX1RFU1QpOworICAgICAgICB9CisKICAgICAgICAgVGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXIgdGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXI7CiAKICAgICAgICAgU2hhcmVkR0xE
YXRhKEdMQ29udGV4dCBnbENvbnRleHQpCi0gICAgICAgICAgICA6IHN0ZW5jaWxJbmRleCgxKQog
ICAgICAgICB7CiAgICAgICAgICAgICBnbENvbnRleHREYXRhTWFwKCkuYWRkKGdsQ29udGV4dCwg
dGhpcyk7CiAgICAgICAgIH0KQEAgLTE1NSwxNCArMjAyLDcgQEAgc3RydWN0IFRleHR1cmVNYXBw
ZXJHTERhdGEgewogICAgICAgICByZXR1cm4gKihtX3NoYXJlZEdMRGF0YS5nZXQoKSk7CiAgICAg
fQogCi0gICAgdm9pZCBpbml0U3RlbmNpbCgpCi0gICAgewotICAgICAgICBpZiAoZGlkTW9kaWZ5
U3RlbmNpbCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2xDbGVhclN0ZW5jaWwoMCk7
Ci0gICAgICAgIGdsQ2xlYXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICAgICAgZGlkTW9k
aWZ5U3RlbmNpbCA9IHRydWU7Ci0gICAgfQorICAgIHZvaWQgaW5pdGlhbGl6ZVN0ZW5jaWwoKTsK
IAogICAgIFRleHR1cmVNYXBwZXJHTERhdGEoKQogICAgICAgICA6IHByZXZpb3VzUHJvZ3JhbSgw
KQpAQCAtMTc4LDcgKzIxOCw5IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBH
TGludCBwcmV2aW91c1NjaXNzb3JTdGF0ZTsKICAgICBHTGludCBwcmV2aW91c0RlcHRoU3RhdGU7
CiAgICAgR0xpbnQgdmlld3BvcnRbNF07CisgICAgR0xpbnQgcHJldmlvdXNTY2lzc29yWzRdOwog
ICAgIFJlZlB0cjxTaGFyZWRHTERhdGE+IG1fc2hhcmVkR0xEYXRhOworICAgIFJlZlB0cjxCaXRt
YXBUZXh0dXJlPiBjdXJyZW50U3VyZmFjZTsKIH07CiAKIGNsYXNzIEJpdG1hcFRleHR1cmVHTCA6
IHB1YmxpYyBCaXRtYXBUZXh0dXJlIHsKQEAgLTE4OCw2ICsyMzAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzZXQo
KTsKICAgICB2b2lkIGJpbmQoKTsKKyAgICB2b2lkIGluaXRpYWxpemVTdGVuY2lsKCk7CiAgICAg
fkJpdG1hcFRleHR1cmVHTCgpIHsgZGVzdHJveSgpOyB9CiAgICAgdmlydHVhbCB1aW50MzJfdCBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBpbmxpbmUgRmxvYXRTaXplIHJlbGF0aXZl
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRpdmVTaXplOyB9CkBAIC0yMTYsNiArMjU5LDIx
IEBAIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFRleHR1cmVNYXBwZXJHTDsKIH07CiAKK3Zv
aWQgVGV4dHVyZU1hcHBlckdMRGF0YTo6aW5pdGlhbGl6ZVN0ZW5jaWwoKQoreworICAgIGlmIChj
dXJyZW50U3VyZmFjZSkgeworICAgICAgICBzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wqPihj
dXJyZW50U3VyZmFjZS5nZXQoKSktPmluaXRpYWxpemVTdGVuY2lsKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoZGlkTW9kaWZ5U3RlbmNpbCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ2xDbGVhclN0ZW5jaWwoMCk7CisgICAgZ2xDbGVhcihHTF9TVEVOQ0lMX0JVRkZFUl9C
SVQpOworICAgIGRpZE1vZGlmeVN0ZW5jaWwgPSB0cnVlOworfQorCiBUZXh0dXJlTWFwcGVyR0w6
OlRleHR1cmVNYXBwZXJHTCgpCiAgICAgOiBtX2RhdGEobmV3IFRleHR1cmVNYXBwZXJHTERhdGEp
CiAgICAgLCBtX2NvbnRleHQoMCkKQEAgLTI0NSw2ICszMDMsOSBAQCB2b2lkIFRleHR1cmVNYXBw
ZXJHTDo6YmVnaW5QYWludGluZygpCiAgICAgZGF0YSgpLmRpZE1vZGlmeVN0ZW5jaWwgPSBmYWxz
ZTsKICAgICBnbERlcHRoTWFzaygwKTsKICAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCBk
YXRhKCkudmlld3BvcnQpOworICAgIGdsR2V0SW50ZWdlcnYoR0xfU0NJU1NPUl9CT1gsIGRhdGEo
KS5wcmV2aW91c1NjaXNzb3IpOworICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhdGUu
c3RlbmNpbEluZGV4ID0gMTsKKyAgICBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YXRlLnNj
aXNzb3JCb3ggPSBJbnRSZWN0KDAsIDAsIGRhdGEoKS52aWV3cG9ydFsyXSwgZGF0YSgpLnZpZXdw
b3J0WzNdKTsKICAgICBiaW5kU3VyZmFjZSgwKTsKIH0KIApAQCAtMjU2LDYgKzMxNyw4IEBAIHZv
aWQgVGV4dHVyZU1hcHBlckdMOjplbmRQYWludGluZygpCiAgICAgfQogCiAgICAgZ2xVc2VQcm9n
cmFtKGRhdGEoKS5wcmV2aW91c1Byb2dyYW0pOworCisgICAgZ2xTY2lzc29yKGRhdGEoKS5wcmV2
aW91c1NjaXNzb3JbMF0sIGRhdGEoKS5wcmV2aW91c1NjaXNzb3JbMV0sIGRhdGEoKS5wcmV2aW91
c1NjaXNzb3JbMl0sIGRhdGEoKS5wcmV2aW91c1NjaXNzb3JbM10pOwogICAgIGlmIChkYXRhKCku
cHJldmlvdXNTY2lzc29yU3RhdGUpCiAgICAgICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7
CiAgICAgZWxzZQpAQCAtMjY2LDYgKzMyOSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjplbmRQ
YWludGluZygpCiAgICAgZWxzZQogICAgICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CiAK
KwogI2lmIFBMQVRGT1JNKFFUKQogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47
CkBAIC0yODAsNiArMzQ0LDEwIEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpkcmF3VGV4dHVyZShj
b25zdCBCaXRtYXBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCBGbG9hdFJlY3QmCiB7CiAgICAgaWYg
KCF0ZXh0dXJlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRhdGEoKS5z
aGFyZWRHTERhdGEoKS5jbGlwU3RhdGUuc2Npc3NvckJveC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGNvbnN0IEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdMID0gc3RhdGljX2Nh
c3Q8Y29uc3QgQml0bWFwVGV4dHVyZUdMJj4odGV4dHVyZSk7CiAgICAgZHJhd1RleHR1cmUodGV4
dHVyZUdMLmlkKCksIHRleHR1cmVHTC5pc09wYXF1ZSgpID8gMCA6IFN1cHBvcnRzQmxlbmRpbmcs
IHRleHR1cmVHTC5yZWxhdGl2ZVNpemUoKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBt
YXNrKTsKIH0KQEAgLTUzMiwzNiArNjAwLDQwIEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRp
b25NYXRyaXggY3JlYXRlUHJvamVjdGlvbk1hdHJpeChjb25zdCBJbnRTaXplJiBzaXplLCBiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLCBmbGlwID8gMSA6IC0xLCAtKGZhciAr
IG5lYXIpIC8gKGZhciAtIG5lYXIpLCAxKTsKIH0KIAordm9pZCBCaXRtYXBUZXh0dXJlR0w6Omlu
aXRpYWxpemVTdGVuY2lsKCkKK3sKKyAgICBpZiAobV9yYm8pCisgICAgICAgIHJldHVybjsKKyAg
ICBHTF9DTUQoZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX3JibykpOworICAgIEdMX0NNRChnbEJp
bmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtX3JibykpCisjaWZkZWYgVEVYTUFQX09Q
RU5HTF9FU18yCisgICAgR0xfQ01EKGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZG
RVIsIEdMX1NURU5DSUxfSU5ERVg4LCBtX3RleHR1cmVTaXplLndpZHRoKCksIG1fdGV4dHVyZVNp
emUuaGVpZ2h0KCkpKQorI2Vsc2UKKyAgICBHTF9DTUQoZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdM
X1JFTkRFUkJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTCwgbV90ZXh0dXJlU2l6ZS53aWR0aCgpLCBt
X3RleHR1cmVTaXplLmhlaWdodCgpKSkKKyNlbmRpZgorICAgIEdMX0NNRChnbEJpbmRSZW5kZXJi
dWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKSkKKyAgICBHTF9DTUQoZ2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJC
VUZGRVIsIG1fcmJvKSkKKyAgICBHTF9DTUQoZ2xDbGVhclN0ZW5jaWwoMCkpCisgICAgR0xfQ01E
KGdsQ2xlYXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKSkKK30KKwogdm9pZCBCaXRtYXBUZXh0dXJl
R0w6OmJpbmQoKQogewotICAgIGludCYgc3RlbmNpbEluZGV4ID0gbV90ZXh0dXJlTWFwcGVyLT5k
YXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4OwogICAgIGlmIChtX3N1cmZhY2VOZWVk
c1Jlc2V0IHx8ICFtX2ZibykgewogICAgICAgICBpZiAoIW1fZmJvKQogICAgICAgICAgICAgR0xf
Q01EKGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX2ZibykpCi0gICAgICAgIGlmICghbV9yYm8pCi0g
ICAgICAgICAgICBHTF9DTUQoZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX3JibykpOwotICAgICAg
ICBHTF9DTUQoZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbV9yYm8pKQotI2lm
ZGVmIFRFWE1BUF9PUEVOR0xfRVNfMgotICAgICAgICBHTF9DTUQoZ2xSZW5kZXJidWZmZXJTdG9y
YWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRFWDgsIG1fdGV4dHVyZVNpemUud2lk
dGgoKSwgbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSkpCi0jZWxzZQotICAgICAgICBHTF9DTUQoZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTCwgbV90
ZXh0dXJlU2l6ZS53aWR0aCgpLCBtX3RleHR1cmVTaXplLmhlaWdodCgpKSkKLSNlbmRpZgogICAg
ICAgICBHTF9DTUQoZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKSkKICAg
ICAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCkpCi0gICAgICAgIEdM
X0NNRChnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKSkKICAgICAgICAgR0xf
Q01EKGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCBpZCgpLCAwKSkKLSAgICAgICAgR0xfQ01EKGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwg
R0xfUkVOREVSQlVGRkVSLCBtX3JibykpCiAgICAgICAgIEdMX0NNRChnbENsZWFyQ29sb3IoMCwg
MCwgMCwgMCkpCi0gICAgICAgIEdMX0NNRChnbENsZWFyU3RlbmNpbChzdGVuY2lsSW5kZXggLSAx
KSkKLSAgICAgICAgR0xfQ01EKGdsQ2xlYXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUIHwgR0xfQ09M
T1JfQlVGRkVSX0JJVCkpCisgICAgICAgIEdMX0NNRChnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpKQogICAgICAgICBtX3N1cmZhY2VOZWVkc1Jlc2V0ID0gZmFsc2U7CiAgICAgfSBlbHNlCiAg
ICAgICAgIEdMX0NNRChnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mYm8pKQog
Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfS0VFUCk7Ci0gICAgZ2xTdGVu
Y2lsRnVuYyhzdGVuY2lsSW5kZXggPiAxID8gR0xfR0VRVUFMIDogR0xfQUxXQVlTLCBzdGVuY2ls
SW5kZXggLSAxLCBzdGVuY2lsSW5kZXggLSAxKTsKICAgICBHTF9DTUQoZ2xWaWV3cG9ydCgwLCAw
LCBzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSkKICAgICBtX3RleHR1cmVNYXBwZXIt
PmRhdGEoKS5wcm9qZWN0aW9uTWF0cml4ID0gY3JlYXRlUHJvamVjdGlvbk1hdHJpeChzaXplKCks
IGZhbHNlKTsKKyAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCBGbG9hdFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgY29udGVudFNpemUoKSkpOwogfQog
CiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6ZGVzdHJveSgpCkBAIC01NzYsNiArNjQ4LDcgQEAgdm9p
ZCBCaXRtYXBUZXh0dXJlR0w6OmRlc3Ryb3koKQogICAgICAgICBHTF9DTUQoZ2xEZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtX3JibykpCiAKICAgICBtX2ZibyA9IDA7CisgICAgbV9yYm8gPSAwOwog
ICAgIG1faWQgPSAwOwogICAgIG1fdGV4dHVyZVNpemUgPSBJbnRTaXplKCk7CiAgICAgbV9yZWxh
dGl2ZVNpemUgPSBGbG9hdFNpemUoMSwgMSk7CkBAIC02MDQsMjAgKzY3NywxNiBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJHTDo6YmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSAqc3VyZmFjZVBvaW50ZXIp
CiAgICAgICAgIEludFNpemUgdmlld3BvcnRTaXplKGRhdGEoKS52aWV3cG9ydFsyXSwgZGF0YSgp
LnZpZXdwb3J0WzNdKTsKICAgICAgICAgR0xfQ01EKGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCAwKSkKICAgICAgICAgZGF0YSgpLnByb2plY3Rpb25NYXRyaXggPSBjcmVhdGVQcm9q
ZWN0aW9uTWF0cml4KHZpZXdwb3J0U2l6ZSwgdHJ1ZSk7Ci0gICAgICAgIEdMX0NNRChnbFN0ZW5j
aWxGdW5jKGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggPiAxID8gR0xfRVFVQUwg
OiBHTF9BTFdBWVMsIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggLSAxLCBkYXRh
KCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4IC0gMSkpCi0gICAgICAgIEdMX0NNRChnbFN0
ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9LRUVQKSkKICAgICAgICAgR0xfQ01EKGdsVmll
d3BvcnQoMCwgMCwgdmlld3BvcnRTaXplLndpZHRoKCksIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSkp
CisgICAgICAgIGlmIChkYXRhKCkuY3VycmVudFN1cmZhY2UpCisgICAgICAgICAgICBlbmRDbGlw
KCk7CisgICAgICAgIGRhdGEoKS5jdXJyZW50U3VyZmFjZS5jbGVhcigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgc3VyZmFjZS0+YmluZCgpOwotfQogCi1zdGF0aWMgdm9pZCBzY2lz
c29yQ2xpcChjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIEdMaW50IHZpZXdwb3J0WzRdOwot
ICAgIGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0KTsKLSAgICBnbFNjaXNzb3Io
cmVjdC54KCksIHZpZXdwb3J0WzNdIC0gcmVjdC5tYXhZKCkgKyAxLCByZWN0LndpZHRoKCkgLSAx
LCByZWN0LmhlaWdodCgpIC0gMSk7CisgICAgc3VyZmFjZS0+YmluZCgpOworICAgIGRhdGEoKS5j
dXJyZW50U3VyZmFjZSA9IHN1cmZhY2U7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckdMOjpiZWdp
blNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXgs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCkKQEAgLTYyNiw0OSArNjk1LDIzIEBAIGJvb2wg
VGV4dHVyZU1hcHBlckdMOjpiZWdpblNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtb2RlbFZpZXdNYXRyCiAgICAgSW50UmVjdCByZWN0ID0gcXVhZC5lbmNsb3NpbmdCb3Vu
ZGluZ0JveCgpOwogCiAgICAgLy8gT25seSB1c2Ugc2Npc3NvcnMgb24gcmVjdGlsaW5lYXIgY2xp
cHMuCi0gICAgaWYgKCFxdWFkLmlzUmVjdGlsaW5lYXIoKSB8fCByZWN0LmlzRW1wdHkoKSkgewot
ICAgICAgICBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmFwcGVuZChJbnRSZWN0KCkp
OwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gSW50ZXJzZWN0IHdpdGgg
cHJldmlvdXMgY2xpcC4KLSAgICBmb3IgKGludCBpID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNs
aXBTdGFjay5zaXplKCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBjb25zdCBJbnRSZWN0
JiBwcmV2UmVjdCA9IGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2tbaV07Ci0gICAgICAg
IGlmIChwcmV2UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAg
ICAvLyBXZSBvbmx5IG5lZWQgdGhlIGxhc3QgdmFsaWQgY2xpcC4KLSAgICAgICAgcmVjdC5pbnRl
cnNlY3QocHJldlJlY3QpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzY2lzc29yQ2xp
cChyZWN0KTsKLSAgICBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YWNrLmFwcGVuZChyZWN0
KTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFRleHR1cmVNYXBwZXJHTDo6ZW5kU2Np
c3NvckNsaXAoKQotewotICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2sucmVtb3Zl
TGFzdCgpOwotICAgIEFTU0VSVCghZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBTdGFjay5pc0Vt
cHR5KCkpOwotCi0gICAgSW50UmVjdCByZWN0ID0gZGF0YSgpLnNoYXJlZEdMRGF0YSgpLmNsaXBT
dGFjay5sYXN0KCk7Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgIGlmICghcXVhZC5pc1Jl
Y3RpbGluZWFyKCkgfHwgcmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHNjaXNzb3JDbGlwKHJlY3QpOworICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3Rh
dGUuc2Npc3NvckJveC5pbnRlcnNlY3QocmVjdCk7CisgICAgZGF0YSgpLnNoYXJlZEdMRGF0YSgp
LmFwcGx5Q3VycmVudENsaXAoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBUZXh0dXJl
TWFwcGVyR0w6OmJlZ2luQ2xpcChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3
TWF0cml4LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QpCiB7CisgICAgZGF0YSgpLnNoYXJl
ZEdMRGF0YSgpLnB1c2hDbGlwU3RhdGUoKTsKICAgICBpZiAoYmVnaW5TY2lzc29yQ2xpcChtb2Rl
bFZpZXdNYXRyaXgsIHRhcmdldFJlY3QpKQogICAgICAgICByZXR1cm47CiAKLSAgICBkYXRhKCku
aW5pdFN0ZW5jaWwoKTsKKyAgICBkYXRhKCkuaW5pdGlhbGl6ZVN0ZW5jaWwoKTsKIAotICAgIFJl
ZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUNsaXA+IHNoYWRlckluZm8gPSBkYXRhKCku
c2hhcmVkR0xEYXRhKCkudGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIuZ2V0U2hhZGVyUHJvZ3Jh
bTxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUNsaXA+KCk7CisgICAgUmVmUHRyPFRleHR1cmVN
YXBwZXJTaGFkZXJQcm9ncmFtU2ltcGxlPiBzaGFkZXJJbmZvID0gZGF0YSgpLnNoYXJlZEdMRGF0
YSgpLnRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmdldFNoYWRlclByb2dyYW08VGV4dHVyZU1h
cHBlclNoYWRlclByb2dyYW1TaW1wbGU+KCk7CiAKICAgICBHTF9DTUQoZ2xVc2VQcm9ncmFtKHNo
YWRlckluZm8tPmlkKCkpKQogICAgIEdMX0NNRChnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHNo
YWRlckluZm8tPnZlcnRleEF0dHJpYigpKSkKQEAgLTY4OSwzMiArNzMyLDQ2IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckdMOjpiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVs
Vmlld01hdHJpeCwgY29uCiAgICAgICAgIG1hdHJpeC5tNDEoKSwgbWF0cml4Lm00MigpLCBtYXRy
aXgubTQzKCksIG1hdHJpeC5tNDQoKQogICAgIH07CiAKLSAgICBpbnQmIHN0ZW5jaWxJbmRleCA9
IGRhdGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXg7CisgICAgY29uc3QgR0xmbG9hdCBt
NGFsbFtdID0geworICAgICAgICAyLCAwLCAwLCAwLAorICAgICAgICAwLCAyLCAwLCAwLAorICAg
ICAgICAwLCAwLCAxLCAwLAorICAgICAgICAtMSwgLTEsIDAsIDEKKyAgICB9OworCisgICAgaW50
JiBzdGVuY2lsSW5kZXggPSBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0YXRlLnN0ZW5jaWxJ
bmRleDsKIAotICAgIEdMX0NNRChnbFVuaWZvcm1NYXRyaXg0ZnYoc2hhZGVySW5mby0+bWF0cml4
VmFyaWFibGUoKSwgMSwgR0xfRkFMU0UsIG00KSkKICAgICBHTF9DTUQoZ2xFbmFibGUoR0xfU1RF
TkNJTF9URVNUKSkKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBkbyBhbnkgYWN0dWFsIGRy
YXdpbmcuCiAgICAgR0xfQ01EKGdsU3RlbmNpbEZ1bmMoR0xfTkVWRVIsIHN0ZW5jaWxJbmRleCwg
c3RlbmNpbEluZGV4KSkKLSAgICBHTF9DTUQoZ2xTdGVuY2lsT3AoR0xfUkVQTEFDRSwgR0xfUkVQ
TEFDRSwgR0xfUkVQTEFDRSkpCisKKyAgICAvLyBPcGVyYXRlIG9ubHkgb24gdGhlIHN0ZW5jaWxJ
bmRleCBhbmQgYWJvdmUuCiAgICAgR0xfQ01EKGdsU3RlbmNpbE1hc2soMHhmZiAmIH4oc3RlbmNp
bEluZGV4IC0gMSkpKQorCisgICAgLy8gRmlyc3QgY2xlYXIgdGhlIGVudGlyZSBidWZmZXIgYXQg
dGhlIGN1cnJlbnQgaW5kZXguCisgICAgR0xfQ01EKGdsVW5pZm9ybU1hdHJpeDRmdihzaGFkZXJJ
bmZvLT5tYXRyaXhWYXJpYWJsZSgpLCAxLCBHTF9GQUxTRSwgbTRhbGwpKQorICAgIEdMX0NNRChn
bFN0ZW5jaWxPcChHTF9aRVJPLCBHTF9aRVJPLCBHTF9aRVJPKSkKKyAgICBHTF9DTUQoZ2xEcmF3
QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCkpCisKKyAgICAvLyBOb3cgYXBwbHkgdGhlIGN1
cnJlbnQgaW5kZXggdG8gdGhlIG5ldyBxdWFkLgorICAgIEdMX0NNRChnbFN0ZW5jaWxPcChHTF9S
RVBMQUNFLCBHTF9SRVBMQUNFLCBHTF9SRVBMQUNFKSkKKyAgICBHTF9DTUQoZ2xVbmlmb3JtTWF0
cml4NGZ2KHNoYWRlckluZm8tPm1hdHJpeFZhcmlhYmxlKCksIDEsIEdMX0ZBTFNFLCBtNCkpCiAg
ICAgR0xfQ01EKGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpKQotICAgIEdMX0NN
RChnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9LRUVQKSkKLSAgICBzdGVuY2lsSW5k
ZXggPDw9IDE7Ci0gICAgZ2xTdGVuY2lsRnVuYyhzdGVuY2lsSW5kZXggPiAxID8gR0xfRVFVQUwg
OiBHTF9BTFdBWVMsIHN0ZW5jaWxJbmRleCAtIDEsIHN0ZW5jaWxJbmRleCAtIDEpOworCisgICAg
Ly8gQ2xlYXIgdGhlIHN0YXRlLgogICAgIEdMX0NNRChnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShzaGFkZXJJbmZvLT52ZXJ0ZXhBdHRyaWIoKSkpCisgICAgR0xfQ01EKGdsU3RlbmNpbE1hc2so
MCkpCisKKyAgICAvLyBJbmNyZWFzZSBzdGVuY2lsSW5kZXggYW5kIGFwcGx5IHN0ZW5jaWwgdGVz
dGluZy4KKyAgICBzdGVuY2lsSW5kZXggKj0gMjsKKyAgICBkYXRhKCkuc2hhcmVkR0xEYXRhKCku
YXBwbHlDdXJyZW50Q2xpcCgpOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJHTDo6ZW5kQ2xpcCgp
CiB7Ci0gICAgaWYgKGVuZFNjaXNzb3JDbGlwKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRh
dGEoKS5zaGFyZWRHTERhdGEoKS5zdGVuY2lsSW5kZXggPj49IDE7Ci0gICAgZ2xTdGVuY2lsRnVu
YyhkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4ID4gMSA/IEdMX0VRVUFMIDogR0xf
QUxXQVlTLCBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbEluZGV4IC0gMSwgZGF0YSgpLnNo
YXJlZEdMRGF0YSgpLnN0ZW5jaWxJbmRleCAtIDEpOyAgICAKLQotICAgIC8vIEFmdGVyIHdlJ3Zl
IGNsZWFyZWQgdGhlIGxhc3Qgbm9uLXJlY3RhbGluZWFyIGNsaXAsIHdlIGRpc2FibGUgdGhlIHN0
ZW5jaWwgdGVzdC4KLSAgICBpZiAoZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnN0ZW5jaWxJbmRleCA9
PSAxKQotICAgICAgICBHTF9DTUQoZ2xEaXNhYmxlKEdMX1NURU5DSUxfVEVTVCkpCi0KKyAgICBk
YXRhKCkuc2hhcmVkR0xEYXRhKCkucG9wQ2xpcFN0YXRlKCk7CisgICAgZGF0YSgpLnNoYXJlZEdM
RGF0YSgpLmFwcGx5Q3VycmVudENsaXAoKTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJl
PiBUZXh0dXJlTWFwcGVyR0w6OmNyZWF0ZVRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4
IGUwOTEyMTAuLjNlNTk4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTY3LDcgKzY3LDYgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgYmVnaW5TY2lzc29yQ2xpcChjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIGJvb2wgZW5kU2Npc3Nv
ckNsaXAoKTsKICAgICBpbmxpbmUgVGV4dHVyZU1hcHBlckdMRGF0YSYgZGF0YSgpIHsgcmV0dXJu
ICptX2RhdGE7IH0KICAgICBUZXh0dXJlTWFwcGVyR0xEYXRhKiBtX2RhdGE7CiAgICAgR3JhcGhp
Y3NDb250ZXh0KiBtX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IDhk
ZDRlYjguLmRhMGI0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0xODAsOSAr
MTgwLDkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50U2VsZkFuZENoaWxkcmVuKGNv
bnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG8KICAgICBpZiAobV9jaGlsZHJlbi5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkQ2xpcCA9IG1fc3RhdGUu
bWFza3NUb0JvdW5kcyB8fCBtX3N0YXRlLm1hc2tMYXllcjsKKyAgICBib29sIHNob3VsZENsaXAg
PSBtX3N0YXRlLm1hc2tzVG9Cb3VuZHMgJiYgIW1fc3RhdGUucHJlc2VydmVzM0Q7CiAgICAgaWYg
KHNob3VsZENsaXApCi0gICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmVnaW5DbGlwKFRy
YW5zZm9ybWF0aW9uTWF0cml4KG9wdGlvbnMudHJhbnNmb3JtKS5tdWx0aXBseShtX3RyYW5zZm9y
bS5jb21iaW5lZCgpKSwgRmxvYXRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVp
Z2h0KCkpKTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iZWdpbkNsaXAoVHJhbnNm
b3JtYXRpb25NYXRyaXgob3B0aW9ucy50cmFuc2Zvcm0pLm11bHRpcGx5KG1fdHJhbnNmb3JtLmNv
bWJpbmVkKCkpLCBsYXllclJlY3QoKSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fY2hp
bGRyZW4uc2l6ZSgpOyArK2kpCiAgICAgICAgIG1fY2hpbGRyZW5baV0tPnBhaW50UmVjdXJzaXZl
KG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlci5jcHAKaW5k
ZXggZDU2YjE0NC4uM2ViMzRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1h
bmFnZXIuY3BwCkBAIC04OSwyMyArODksNiBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVydGV4U2hh
ZGVyU291cmNlU2ltcGxlID0KICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gSW5NYXRyaXggKiBJ
blZlcnRleDsKICAgICAgICAgfQogICAgICk7Ci1zdGF0aWMgY29uc3QgY2hhciogZnJhZ21lbnRT
aGFkZXJTb3VyY2VDbGlwID0KLSAgICBGUkFHTUVOVF9TSEFERVIoCi0gICAgICAgIHZvaWQgbWFp
bih2b2lkKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwg
MC4wLCAwLjAsIDAuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi1zdGF0aWMgY29uc3QgY2hhciog
dmVydGV4U2hhZGVyU291cmNlQ2xpcCA9Ci0gICAgVkVSVEVYX1NIQURFUigKLSAgICAgICAgdW5p
Zm9ybSBtYXQ0IEluTWF0cml4OwotICAgICAgICBhdHRyaWJ1dGUgdmVjNCBJblZlcnRleDsKLSAg
ICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX1Bvc2l0aW9u
ID0gSW5NYXRyaXggKiBJblZlcnRleDsKLSAgICAgICAgfQotICAgICk7CiAKIHZvaWQgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW06OmluaXRpYWxpemVQcm9ncmFtKCkKIHsKQEAgLTE5NywyNyAr
MTgwLDYgQEAgY29uc3QgY2hhciogVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1PcGFjaXR5QW5k
TWFzazo6ZnJhZ21lbnRTaGFkZXJTb3VyY2UoKQogICAgIHJldHVybiBmcmFnbWVudFNoYWRlclNv
dXJjZU9wYWNpdHlBbmRNYXNrOwogfQogCi1QYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJTaGFkZXJQ
cm9ncmFtQ2xpcD4gVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1DbGlwOjpjcmVhdGUoKQotewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1DbGlwKCkp
OwotfQotCi1UZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUNsaXA6OlRleHR1cmVNYXBwZXJTaGFk
ZXJQcm9ncmFtQ2xpcCgpCi17Ci0gICAgaW5pdGlhbGl6ZVByb2dyYW0oKTsKLSAgICBnZXRVbmlm
b3JtTG9jYXRpb24obV9tYXRyaXhWYXJpYWJsZSwgIkluTWF0cml4Iik7Ci19Ci0KLWNvbnN0IGNo
YXIqIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQ2xpcDo6dmVydGV4U2hhZGVyU291cmNlKCkK
LXsKLSAgICByZXR1cm4gdmVydGV4U2hhZGVyU291cmNlQ2xpcDsKLX0KLQotY29uc3QgY2hhciog
VGV4dHVyZU1hcHBlclNoYWRlclByb2dyYW1DbGlwOjpmcmFnbWVudFNoYWRlclNvdXJjZSgpCi17
Ci0gICAgcmV0dXJuIGZyYWdtZW50U2hhZGVyU291cmNlQ2xpcDsKLX0KLQogVGV4dHVyZU1hcHBl
clNoYWRlck1hbmFnZXI6OlRleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyKCkKIHsKICAgICBBU1NF
UlQoaW5pdGlhbGl6ZU9wZW5HTFNoaW1zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRl
ck1hbmFnZXIuaAppbmRleCAwZjM4YzdlLi41M2FlYWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclNoYWRlck1hbmFnZXIuaApAQCAtMTA0LDE4ICsxMDQsNiBAQCBwcml2YXRlOgogICAgIEdM
aW50IG1fb3BhY2l0eVZhcmlhYmxlOwogfTsKIAotY2xhc3MgVGV4dHVyZU1hcHBlclNoYWRlclBy
b2dyYW1DbGlwIDogcHVibGljIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtIHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU2hhZGVyUHJvZ3JhbUNsaXA+IGNy
ZWF0ZSgpOwotICAgIEdMaW50IG1hdHJpeFZhcmlhYmxlKCkgeyByZXR1cm4gbV9tYXRyaXhWYXJp
YWJsZTsgfQotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgY29uc3QgY2hhciogdmVydGV4U2hhZGVy
U291cmNlKCk7Ci0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBmcmFnbWVudFNoYWRlclNvdXJjZSgp
OwotICAgIFRleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtQ2xpcCgpOwotICAgIEdMaW50IG1fbWF0
cml4VmFyaWFibGU7Ci19OwotCiBjbGFzcyBUZXh0dXJlTWFwcGVyU2hhZGVyTWFuYWdlciB7CiBw
dWJsaWM6CiAgICAgVGV4dHVyZU1hcHBlclNoYWRlck1hbmFnZXIoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>