<?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>71916</bug_id>
          
          <creation_ts>2011-11-09 07:43:20 -0800</creation_ts>
          <short_desc>[chromium] scroll deltas are cleared during commit to the main thread</short_desc>
          <delta_ts>2011-11-15 02:52:45 -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="Hin-Chung Lam">hclam</reporter>
          <assigned_to name="Hin-Chung Lam">hclam</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>498952</commentid>
    <comment_count>0</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-09 07:43:20 -0800</bug_when>
    <thetext>Scroll deltas of CCLayerImpl are needed to properly position layers that are fixed to the container layer.

Compositor currently clears scroll deltas when committing the scroll deltas to the main thread. This leave a brief time when scroll deltas are not available and fixed layers are not positioned properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498963</commentid>
    <comment_count>1</comment_count>
      <attachid>114280</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-09 07:58:33 -0800</bug_when>
    <thetext>Created attachment 114280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498968</commentid>
    <comment_count>2</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-09 08:04:18 -0800</bug_when>
    <thetext>Hi James, please take a look at this patch.

I found that CCLayerTreeHostImpl::subtractScrollDeltas() and CCLayerTreeHost::applyScrollDeltas() have very different behavior and not sensible to share code between them.

CCLayerTreeHost::applyScrollDeltas() looks like it&apos;s to notify the client to find the corresponding scrollable element to apply scroll. This code currently goes through WebViewImpl to accomplish this.

CCLayerTreeHost::subtractScrollDeltas() can just subtract scroll deltas from the current scroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499220</commentid>
    <comment_count>3</comment_count>
      <attachid>114280</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-09 12:00:07 -0800</bug_when>
    <thetext>Comment on attachment 114280
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        Reviewed by NOBODY (OOPS!).

this line should go above the long-form patch description, directly below the 1-line desc and bug URL:

[chromium] Foo the blobbizer
https://bugs.webkit.org/show_bug.cgi?id=12345

Reviewed by NOBODY (OOPS!).

&gt; Source/WebCore/ChangeLog:20
&gt; +          are unchanged during commit. And then after commit scroll delts are

delts -&gt; deltas

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:230
&gt; +    if (!m_scrollLayerImpl || !scrollInfo.size())
&gt; +        return;
&gt; +
&gt; +    // FIXME: subtract scroll deltas from layer other than the root.
&gt; +    ASSERT(scrollInfo.size() == 1 &amp;&amp; scrollInfo[0].layerId == m_scrollLayerImpl-&gt;id());
&gt; +    IntSize scrollDelta = scrollInfo[0].scrollDelta;

this whole part is still copy-pasted, and once we start applying scroll deltas to more than the root layer this will be significantly larger.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:414
&gt; +    m_layerTreeHostImpl-&gt;subtractScrollDeltas(*scrollInfo.get());

just *scrollInfo, the .get() is noise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499321</commentid>
    <comment_count>4</comment_count>
      <attachid>114357</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-09 13:47:22 -0800</bug_when>
    <thetext>Created attachment 114357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499325</commentid>
    <comment_count>5</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-09 13:51:29 -0800</bug_when>
    <thetext>Hi James, I updated the patch moving applyScrollDeltas to CCLayerTreeHostCommon which calls into the root layer, either LayerChromium or CCLayerImpl. Please have another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499375</commentid>
    <comment_count>6</comment_count>
      <attachid>114357</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-09 14:52:22 -0800</bug_when>
    <thetext>Comment on attachment 114357
Patch

Thanks, this is exactly what I had in mind. R=me, I think I want https://bugs.webkit.org/show_bug.cgi?id=71595 to land first since this will very slightly conflict so holding off on cq for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499429</commentid>
    <comment_count>7</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-09 15:58:28 -0800</bug_when>
    <thetext>OK, https://bugs.webkit.org/show_bug.cgi?id=71595 has landed, please pull it in and resolve conflicts.  One trivial one is that CCScrollUpdateSet was renamed to CCScrollAndScaleSet and the Vector is now a member (&quot;scrolls&quot;).  It looks like semantically speaking, the CLs should be compatible, but please let me know if you run into any bugs after merging it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499557</commentid>
    <comment_count>8</comment_count>
      <attachid>114357</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-09 18:06:17 -0800</bug_when>
    <thetext>Comment on attachment 114357
Patch

cq- since this patch will have merge conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499789</commentid>
    <comment_count>9</comment_count>
      <attachid>114471</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-10 04:12:43 -0800</bug_when>
    <thetext>Created attachment 114471
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499837</commentid>
    <comment_count>10</comment_count>
      <attachid>114471</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 06:09:12 -0800</bug_when>
    <thetext>Comment on attachment 114471
Patch for landing

Clearing flags on attachment: 114471

Committed r99844: &lt;http://trac.webkit.org/changeset/99844&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499838</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 06:09:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501296</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 18:34:30 -0800</bug_when>
    <thetext>After more thought I don&apos;t like this approach, it&apos;s too gross and confusing.  Anything that needs to know the deltas on the impl side should just track that directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501987</commentid>
    <comment_count>13</comment_count>
      <attachid>114963</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 09:24:58 -0800</bug_when>
    <thetext>Created attachment 114963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501991</commentid>
    <comment_count>14</comment_count>
      <attachid>114963</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 09:28:00 -0800</bug_when>
    <thetext>Comment on attachment 114963
Patch

Updated the patch to add m_sentScrollDelta to keep track of scroll delta in flight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502035</commentid>
    <comment_count>15</comment_count>
      <attachid>114963</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-14 10:00:20 -0800</bug_when>
    <thetext>Comment on attachment 114963
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:243
&gt; +void CCLayerTreeHostImpl::clearSentScrollDeltas()
&gt; +{
&gt; +    // FIXME: clear scroll deltas other than just the main scroll layer.

I think you could just clear sentScrollDelta in LayerChromium::pushPropertiesTo, and it&apos;d work for all layers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502072</commentid>
    <comment_count>16</comment_count>
      <attachid>114980</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 10:33:55 -0800</bug_when>
    <thetext>Created attachment 114980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502075</commentid>
    <comment_count>17</comment_count>
      <attachid>114982</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 10:36:33 -0800</bug_when>
    <thetext>Created attachment 114982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502077</commentid>
    <comment_count>18</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 10:37:35 -0800</bug_when>
    <thetext>Thanks for suggestions! I&apos;ve updated the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502121</commentid>
    <comment_count>19</comment_count>
      <attachid>114982</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-14 11:20:48 -0800</bug_when>
    <thetext>Comment on attachment 114982
Patch

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

since you are storing both deltas, did you consider not baking the delta into the layer&apos;s position in processScrollDeltas()?

&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:138
&gt; +    IntSize sentScrollDelta() const { return IntSize(); }

this seems unnecessary, who uses this?  this value doesn&apos;t make any sense on LayerChromium

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:343
&gt; +    m_scrollLayerImpl-&gt;setSentScrollDelta(m_scrollLayerImpl-&gt;sentScrollDelta() + m_scrollLayerImpl-&gt;scrollDelta());

adding in the current sent scroll delta doesn&apos;t make sense, it should always be 0 here since we only have 0 or 1 BFACs pending at any given point in time. this should be just

m_scrollLayerImpl-&gt;setSentScrollDelta(m_scrollLayerImpl-&gt;scrollDelta())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502192</commentid>
    <comment_count>20</comment_count>
      <attachid>115007</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 12:32:49 -0800</bug_when>
    <thetext>Created attachment 115007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502193</commentid>
    <comment_count>21</comment_count>
      <attachid>114982</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 12:34:22 -0800</bug_when>
    <thetext>Comment on attachment 114982
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerChromium.h:138
&gt;&gt; +    IntSize sentScrollDelta() const { return IntSize(); }
&gt; 
&gt; this seems unnecessary, who uses this?  this value doesn&apos;t make any sense on LayerChromium

This is going to be used in CCLayerTreeHostCommon in the template function to calculate layer transforms. I removed this to avoid confusion.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:343
&gt;&gt; +    m_scrollLayerImpl-&gt;setSentScrollDelta(m_scrollLayerImpl-&gt;sentScrollDelta() + m_scrollLayerImpl-&gt;scrollDelta());
&gt; 
&gt; adding in the current sent scroll delta doesn&apos;t make sense, it should always be 0 here since we only have 0 or 1 BFACs pending at any given point in time. this should be just
&gt; 
&gt; m_scrollLayerImpl-&gt;setSentScrollDelta(m_scrollLayerImpl-&gt;scrollDelta())

Fixed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502234</commentid>
    <comment_count>22</comment_count>
      <attachid>115007</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-14 13:14:45 -0800</bug_when>
    <thetext>Comment on attachment 115007
Patch

Looks good.

For the common code, I think it&apos;d make more sense to have these details hidden in the getter on the CCLayerImpl side rather than having the common code need to be aware of every bit of information. For example, we could add a getter for &apos;the current position including all of your local scroll stuff&apos; that is trivial on the LayerChromium impl and adds in all the appropriate values on the CCLayerImpl side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502238</commentid>
    <comment_count>23</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-14 13:18:45 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 115007 [details])
&gt; Looks good.
&gt; 
&gt; For the common code, I think it&apos;d make more sense to have these details hidden in the getter on the CCLayerImpl side rather than having the common code need to be aware of every bit of information. For example, we could add a getter for &apos;the current position including all of your local scroll stuff&apos; that is trivial on the LayerChromium impl and adds in all the appropriate values on the CCLayerImpl side

Sorry I missed one of your comments about hiding these scrollDelta and other information from common code. The idea of having a function that covers these information sounds good to me. I&apos;ll do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502762</commentid>
    <comment_count>24</comment_count>
      <attachid>115007</attachid>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-15 02:52:37 -0800</bug_when>
    <thetext>Comment on attachment 115007
Patch

Clearing flags on attachment: 115007

Committed r100258: &lt;http://trac.webkit.org/changeset/100258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502763</commentid>
    <comment_count>25</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2011-11-15 02:52:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114280</attachid>
            <date>2011-11-09 07:58:33 -0800</date>
            <delta_ts>2011-11-09 13:47:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71916-20111109155831.patch</filename>
            <type>text/plain</type>
            <size>10176</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTQ4ZWMxMGM1NTM2Yzky
MWQxYzBjYzZlZDNhMjQ1YWE2YTkxM2RlLi4xZGE2YTk1NjJkYmJjZTA5MGJhZGNlYmNiNjgxM2U2
NmM1OWY1MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMTEtMDkgIEFscGhh
IExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNjcm9sbCBk
ZWx0YXMgYXJlIGNsZWFyZWQgZHVyaW5nIGNvbW1pdCB0byB0aGUgbWFpbiB0aHJlYWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTE2CisKKyAgICAg
ICAgVGhlIHBhdGNoIGtlZXBzIHRoZSBzY3JvbGwgZGVsdGFzIGFuZCBzY3JvbGwgcG9zaXRpb24g
dW5jaGFuZ2VkIHdoZW4KKyAgICAgICAgY29tbWl0dGluZyB0byB0aGUgbWFpbiB0aHJlYWQuIEFm
dGVyIGNvbW1pdCBoYXMgY29tcGxldGVkIG9uIHRoZSBtYWluCisgICAgICAgIHRocmVhZCB0aGUg
c3VibWl0dGVkIHNjcm9sbCBkZWx0YXMgYXJlIHRoZW4gc3VidHJhY3RlZCBmcm9tIHRoZSBjdXJy
ZW50CisgICAgICAgIHNjcm9sbCBkZWx0YXMgb24gdGhlIGltcGwgdGhyZWFkLgorCisgICAgICAg
IERvIHNvIGFsbG93IHNjcm9sbCBkZWx0YXMgdG8gYmUgYXZhaWxhYmxlIGF0IGFsbCB0aW1lIHdo
aWNoIGVuYWJsZXMKKyAgICAgICAgcHJvcGVyIHBvc2l0aW9uaW5nIGZvciBsYXllcnMgdGhhdCBh
cmUgZml4ZWQtcG9zaXRpb25lZCB0byB0aGUKKyAgICAgICAgY29udGFpbmVyIGxheWVyLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aXMgdGVzdGVkIGJ5IHRoZSBmb2xsb3dpbmcgdW5pdCB0ZXN0czoKKyAgICAgICAgLSBDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5zY3JvbGxEZWx0YVJlcGVhdGVkU2Nyb2xscworICAgICAgICAgIFRo
aXMgdGVzdCBpcyBtb2RpZmllZCB0byB2ZXJpZnkgdGhhdCBzY3JvbGwgZGVsdGFzIGFuZCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgICBhcmUgdW5jaGFuZ2VkIGR1cmluZyBjb21taXQuIEFuZCB0
aGVuIGFmdGVyIGNvbW1pdCBzY3JvbGwgZGVsdHMgYXJlCisgICAgICAgICAgc3VidHJhY3RlZCBj
b3JyZWN0bHkuCisKKyAgICAgICAgLSBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2ltcGxlLnJ1
bk11bHRpVGhyZWFkIGFuZAorICAgICAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxNdWx0
aXBsZVJlZHJhdy5ydW5NdWx0aVRocmVhZAorICAgICAgICAgIFRoZXNlIHRlc3RzIHZlcmlmaWVz
IHRoYXQgc2Nyb2xsIGRlbHRhcyBtYWRlIG9uIGltcGwgdGhyZWFkIGFyZQorICAgICAgICAgIGNv
bW1pdHRlZCB0byB0aGUgbWFpbiB0aHJlYWQuIEFuZCB3aGVuIGNvbW1pdCBoYXMgY29tcGxldGVk
IHRoZQorICAgICAgICAgIHNjcm9sbCBkZWx0YXMgYXJlIHN1YnRyYWN0ZWQgY29ycmVjdGx5Lgor
ICAgICAgICAgIFRoZXJlJ3Mgbm8gY2hhbmdlIHRvIHRoZXNlIHR3byB0ZXN0cyBidXQgdGhleSB2
ZXJpZnkgdGhpcyBwYXRjaAorICAgICAgICAgIG1haW50YWlucyB0aGUgb3ZlcmFsbCBiZWhhdmlv
ciBvZiBzY3JvbGxpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdEltcGw6OnN1YnRyYWN0U2Nyb2xsRGVsdGFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAg
ICAgICBBZnRlciBjb21taXQgdG8gdGhlIG1haW4gdGhyZWFkIGhhcyBjb21wbGV0ZWQsIHRoZSBz
Y3JvbGwgZGVsdGFzIG9idGFpbmVkCisgICAgICAgIGJlZm9yZSBhcmUgdGhlbiBzdWJ0cmFjdGVk
IGZyb20gdGhlIGN1cnJlbnQgZGVsdGFzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKwogMjAxMS0xMS0wOSAgQWxleGFuZHJ1IENoaWN1
bGl0YSAgPGFjaGljdUBhZG9iZS5jb20+CiAKICAgICAgICAgW1BhcnQgMV0gUGFyc2UgdGhlIGN1
c3RvbSgpIGZ1bmN0aW9uIGluIC13ZWJraXQtZmlsdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDcxZGU0NWFiNzdjOTk5YmM0NTA1ZjFmZGJjN2RhYjA2OTc1NzU2OWMuLjQ4MWYyYzI1
ZWVkMDY2YTlhNDk5Mzg5OGVmMDE3NGY1NDgzMWY0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTEtMDkgIEFscGhhIExhbSAgPGhjbGFtQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNjcm9sbCBkZWx0YXMgYXJlIGNsZWFyZWQg
ZHVyaW5nIGNvbW1pdCB0byB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LnNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzCisgICAgICAgIFRoaXMgdGVzdCBpcyBt
b2RpZmllZCB0byB2ZXJpZnkgdGhhdCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcm9jZXNzU2Nyb2xs
RGVsdGFzKCkKKyAgICAgICAgbWFpbnRhaW4gdGhlIGN1cnJlbnQgc2Nyb2xsIGRlbHRhcyBhbmQg
c2Nyb2xsIHBvc2l0aW9ucy4KKyAgICAgICAgSXQgYWxzbyB2ZXJpZmllcyB0aGF0IHNjcm9sbCBk
ZWx0YXMgYXJlIHN1YnRyYWN0ZWQgY29ycmVjdGx5IGJ5IGNhbGxpbmcKKyAgICAgICAgQ0NMYXll
clRyZWVIb3N0SW1wbDo6c3VidHJhY3RTY3JvbGxEZWx0YXMoKS4KKwogMjAxMS0xMS0wOCAgSmF5
IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4ZXMgYW5kIHJl
ZW5hYmxlcyB0aGUgV2ViUGFnZVNlcmlhbGl6ZXIgdGVzdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGZlMDkzMjZlNGIyOTkwNTZmMmQ3NWIzZWIxZTZhZTMy
MzhjYzQ2ZTYuLjJjNzJjNWU3MjNjMGI5NmFjMTdjZjE4Y2VmNTgwMGMxYmFlMTk4NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yMTYsMTIgKzIxNiwxOSBA
QCBQYXNzT3duUHRyPENDU2Nyb2xsVXBkYXRlU2V0PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcm9j
ZXNzU2Nyb2xsRGVsdGFzKCkKICAgICAgICAgaW5mby5sYXllcklkID0gbV9zY3JvbGxMYXllcklt
cGwtPmlkKCk7CiAgICAgICAgIGluZm8uc2Nyb2xsRGVsdGEgPSBtX3Njcm9sbExheWVySW1wbC0+
c2Nyb2xsRGVsdGEoKTsKICAgICAgICAgc2Nyb2xsSW5mby0+YXBwZW5kKGluZm8pOwotCi0gICAg
ICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRTY3JvbGxQb3NpdGlvbihtX3Njcm9sbExheWVySW1w
bC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsK
LSAgICAgICAgbV9zY3JvbGxMYXllckltcGwtPnNldFBvc2l0aW9uKG1fc2Nyb2xsTGF5ZXJJbXBs
LT5wb3NpdGlvbigpIC0gbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkpOwotICAgICAg
ICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2Nyb2xsRGVsdGEoSW50U2l6ZSgpKTsKICAgICB9CiAg
ICAgcmV0dXJuIHNjcm9sbEluZm8ucmVsZWFzZSgpOwogfQogCit2b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnN1YnRyYWN0U2Nyb2xsRGVsdGFzKGNvbnN0IENDU2Nyb2xsVXBkYXRlU2V0JiBzY3Jv
bGxJbmZvKQoreworICAgIGlmICghbV9zY3JvbGxMYXllckltcGwgfHwgIXNjcm9sbEluZm8uc2l6
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogc3VidHJhY3Qgc2Nyb2xsIGRl
bHRhcyBmcm9tIGxheWVyIG90aGVyIHRoYW4gdGhlIHJvb3QuCisgICAgQVNTRVJUKHNjcm9sbElu
Zm8uc2l6ZSgpID09IDEgJiYgc2Nyb2xsSW5mb1swXS5sYXllcklkID09IG1fc2Nyb2xsTGF5ZXJJ
bXBsLT5pZCgpKTsKKyAgICBJbnRTaXplIHNjcm9sbERlbHRhID0gc2Nyb2xsSW5mb1swXS5zY3Jv
bGxEZWx0YTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2Nyb2xsRGVsdGEobV9zY3JvbGxM
YXllckltcGwtPnNjcm9sbERlbHRhKCkgLSBzY3JvbGxEZWx0YSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBiNTNlMjAwMTkxOGM2NTY2NGMyY2NhNjA1
NWVhN2U1ZGUwYjRiNjIyLi44MDIzNjM1ZGEzNTY2OWUyNWExNjhlNDU3YjgzMDc5ZjNkODBiNGYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0xMDAsNiArMTAwLDcg
QEAgcHVibGljOgogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1
cm4gbV9zZXR0aW5nczsgfQogCiAgICAgUGFzc093blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4gcHJv
Y2Vzc1Njcm9sbERlbHRhcygpOworICAgIHZvaWQgc3VidHJhY3RTY3JvbGxEZWx0YXMoY29uc3Qg
Q0NTY3JvbGxVcGRhdGVTZXQmKTsKIAogcHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdElt
cGwoY29uc3QgQ0NTZXR0aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggZGUxOTVlZjIyNmUwMmQxNjhiMWY0NGQxNDY0YTc0
MmVhMjQ3Yjc5Ny4uMDZjYWY0ZmI1MWFiZjljNjg1NTRiOWRkMTM2N2NkM2VjOWM1MTdjNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbQogICAgICAgICAvLyBjb29yZGluYXRlZCBieSB0aGUgQ0NTY2hlZHVsZXIu
CiAgICAgICAgIFRSQUNFX0VWRU5UKCJjb21taXQiLCB0aGlzLCAwKTsKICAgICAgICAgQ0NDb21w
bGV0aW9uRXZlbnQgY29tcGxldGlvbjsKLSAgICAgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3Jl
YXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAg
ICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFk
QWNjZXNzKCZjb21wbGV0aW9uKSwgc2Nyb2xsSW5mbykpOwogICAgICAgICBjb21wbGV0aW9uLndh
aXQoKTsKICAgICB9CiAKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRp
bQogICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51
bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQor
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIFBhc3NPd25QdHI8Q0NTY3JvbGxVcGRhdGVTZXQ+IHNj
cm9sbEluZm8pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVD
b21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VSVCghbV9jb21taXRDb21w
bGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwpAQCAtNDExLDYgKzQxMSw3IEBAIHZvaWQgQ0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
KiBjb21wbGV0aW9uCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0
cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c3VidHJhY3RT
Y3JvbGxEZWx0YXMoKnNjcm9sbEluZm8uZ2V0KCkpOwogCiAgICAgbV9zY2hlZHVsZXJPbkltcGxU
aHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmlu
ZGV4IDE2NzZmODM3MGJiZWMwZjQ2ZDkwMWQ5NDNlNzNhNWY5NzE4OWYwZTMuLjE2NDg1YjNjZjZm
YjVlYjFkODMzNWMzOGRhYzBkMDFkOTIyZjUzZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
QEAgLTkzLDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhc3NPd25QdHI8Q0NNYWlu
VGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgp
OwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqLCBDQ01haW5UaHJlYWQ6OlRhc2sqKik7Ci0gICAgdm9pZCBiZWdpbkZy
YW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAgICB2b2lkIGJl
Z2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25Q
dHI8Q0NTY3JvbGxVcGRhdGVTZXQ+KTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRo
cmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggZmE1Yzcw
Y2JmMWI0MzM5OGExMDIzMTIxZTE3NWE1MDMyNWFjOGEzNi4uOGYyZDQ1YjM5Nzk3NTk1NzY1ZjQ4
NTZkZjNlNDkyOTFhNjI2ZDFiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEyNCwyMiArMTI0LDIy
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFSZXBlYXRlZFNj
cm9sbHMpCiAgICAgT3duUHRyPENDU2Nyb2xsVXBkYXRlU2V0PiBzY3JvbGxJbmZvOwogCiAgICAg
c2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBBU1NF
UlRfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxEZWx0
YSk7CisgICAgQVNTRVJUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9u
KTsKICAgICBBU1NFUlRfRVEoc2Nyb2xsSW5mby0+c2l6ZSgpLCAxdSk7CiAgICAgZXhwZWN0Q29u
dGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIHJvb3QtPmlkKCksIHNjcm9sbERlbHRhKTsKLSAgICBl
eHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOwogCiAgICAgSW50
U2l6ZSBzY3JvbGxEZWx0YTIoLTUsIDI3KTsKICAgICByb290LT5zY3JvbGxCeShzY3JvbGxEZWx0
YTIpOwogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7
Ci0gICAgQVNTRVJUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsg
c2Nyb2xsRGVsdGEgKyBzY3JvbGxEZWx0YTIpOworICAgIEFTU0VSVF9FUShyb290LT5zY3JvbGxQ
b3NpdGlvbigpLCBzY3JvbGxQb3NpdGlvbik7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNp
emUoKSwgMXUpOwotICAgIGV4cGVjdENvbnRhaW5zKCpzY3JvbGxJbmZvLmdldCgpLCByb290LT5p
ZCgpLCBzY3JvbGxEZWx0YTIpOwotICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNp
dmUocm9vdC5nZXQoKSk7CisgICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIHJv
b3QtPmlkKCksIHNjcm9sbERlbHRhICsgc2Nyb2xsRGVsdGEyKTsKKyAgICBFWFBFQ1RfRVEocm9v
dC0+c2Nyb2xsRGVsdGEoKSwgc2Nyb2xsRGVsdGEgKyBzY3JvbGxEZWx0YTIpOwogCisgICAgbV9o
b3N0SW1wbC0+c3VidHJhY3RTY3JvbGxEZWx0YXMoKnNjcm9sbEluZm8uZ2V0KCkpOwogICAgIHJv
b3QtPnNjcm9sbEJ5KEludFNpemUoKSk7CiAgICAgc2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnBy
b2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBBU1NFUlRfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxEZWx0YSArIHNjcm9sbERlbHRhMik7CisgICAgQVNT
RVJUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uKTsKICAgICBBU1NF
UlRfRVEoc2Nyb2xsSW5mby0+c2l6ZSgpLCAwdSk7CiAgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERl
bHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114357</attachid>
            <date>2011-11-09 13:47:22 -0800</date>
            <delta_ts>2011-11-10 04:12:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71916-20111109214721.patch</filename>
            <type>text/plain</type>
            <size>18153</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3MDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZTQ4ZWMxMGM1NTM2Yzky
MWQxYzBjYzZlZDNhMjQ1YWE2YTkxM2RlLi5hNmRiNmJiZGYwYzNmMGFkNmZhNWFhMWY1OTYzZTRm
ZDMwZjU4NTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTggQEAKKzIwMTEtMTEtMDkgIEFscGhh
IExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNjcm9sbCBk
ZWx0YXMgYXJlIGNsZWFyZWQgZHVyaW5nIGNvbW1pdCB0byB0aGUgbWFpbiB0aHJlYWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTE2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHBhdGNoIGtlZXBz
IHRoZSBzY3JvbGwgZGVsdGFzIGFuZCBzY3JvbGwgcG9zaXRpb24gdW5jaGFuZ2VkIHdoZW4KKyAg
ICAgICAgY29tbWl0dGluZyB0byB0aGUgbWFpbiB0aHJlYWQuIEFmdGVyIGNvbW1pdCBoYXMgY29t
cGxldGVkIG9uIHRoZSBtYWluCisgICAgICAgIHRocmVhZCB0aGUgc3VibWl0dGVkIHNjcm9sbCBk
ZWx0YXMgYXJlIHRoZW4gc3VidHJhY3RlZCBmcm9tIHRoZSBjdXJyZW50CisgICAgICAgIHNjcm9s
bCBkZWx0YXMgb24gdGhlIGltcGwgdGhyZWFkLgorCisgICAgICAgIERvaW5nIHNvIGFsbG93IHNj
cm9sbCBkZWx0YXMgdG8gYmUgYXZhaWxhYmxlIGF0IGFsbCB0aW1lIHdoaWNoIGVuYWJsZXMKKyAg
ICAgICAgcHJvcGVyIHBvc2l0aW9uaW5nIGZvciBsYXllcnMgdGhhdCBhcmUgZml4ZWQtcG9zaXRp
b25lZCB0byB0aGUKKyAgICAgICAgY29udGFpbmVyIGxheWVyLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaXMgdGVzdGVkIGJ5IHRoZSBmb2xsb3dpbmcgdW5pdCB0ZXN0czoKKyAgICAgICAgLSBDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5zY3JvbGxEZWx0YVJlcGVhdGVkU2Nyb2xscworICAgICAgICAg
IFRoaXMgdGVzdCBpcyBtb2RpZmllZCB0byB2ZXJpZnkgdGhhdCBzY3JvbGwgZGVsdGFzIGFuZCBz
Y3JvbGwgcG9zaXRpb24KKyAgICAgICAgICBhcmUgdW5jaGFuZ2VkIGR1cmluZyBjb21taXQuIEFu
ZCB0aGVuIGFmdGVyIGNvbW1pdCBzY3JvbGwgZGVsdGFzIGFyZQorICAgICAgICAgIHN1YnRyYWN0
ZWQgY29ycmVjdGx5LgorCisgICAgICAgIC0gQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbFNpbXBs
ZS5ydW5NdWx0aVRocmVhZCBhbmQKKyAgICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xs
TXVsdGlwbGVSZWRyYXcucnVuTXVsdGlUaHJlYWQKKyAgICAgICAgICBUaGVzZSB0ZXN0cyB2ZXJp
ZmllcyB0aGF0IHNjcm9sbCBkZWx0YXMgbWFkZSBvbiBpbXBsIHRocmVhZCBhcmUKKyAgICAgICAg
ICBjb21taXR0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGUgc2Nyb2xsIGRlbHRhcyBpcyBldmVu
dHVhbGx5IGRlbGVnYXRlZAorICAgICAgICAgIHRvIENDTGF5ZXJUcmVlSG9zdENsaWVudC4gV2hl
biBjb21taXQgaGFzIGNvbXBsZXRlZCB0aGUgc2Nyb2xsIGRlbHRhcworICAgICAgICAgIGFyZSBz
dWJ0cmFjdGVkIGNvcnJlY3RseS4gVGhlcmUncyBubyBjaGFuZ2UgdG8gdGhlc2UgdHdvIHRlc3Rz
IGJ1dCB0aGV5CisgICAgICAgICAgdmVyaWZ5IHRoaXMgcGF0Y2ggbWFpbnRhaW5zIHRoZSBvdmVy
YWxsIGJlaGF2aW9yIG9mIHNjcm9sbGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6YXBwbHlTY3JvbGxEZWx0YSk6CisgICAgICAgIEFkZCB0aGlzIG1ldGhvZCBzbyBsYXRl
ciB3ZSBjYW4gYXBwbHkgc2Nyb2xsIGRlbHRhIGluZGVwZW5kZW50bHksIHJpZ2h0CisgICAgICAg
IG5vdyBpdCBqdXN0IGNhbGxzIHRvIENDTGF5ZXJUcmVlSG9zdENsaWVudC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllckltcGw6OmFwcGx5U2Nyb2xsRGVsdGEpOgorICAgICAgICBUaGlzIG1ldGhv
ZCBzdWJ0cmFjdHMgc2Nyb2xsIGRlbHRhIGZyb20gdGhlIGN1cnJlbnQgb25lLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmFwcGx5U2Nyb2xsRGVsdGFzSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q29tbW9uOjphcHBseVNjcm9sbERlbHRhcyk6CisgICAg
ICAgIFRoaXMgaXMgdG8gYWxsb3cgY29kZSBzaGFyaW5nIGZvciBhcHBseWluZyBzY3JvbGwgZGVs
dGFzIG9uIExheWVyQ2hyb21pdW0KKyAgICAgICAgYW5kIENDTGF5ZXJJbXBsLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Nj
cm9sbERlbHRhcyk6CisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBhZGp1c3Qgc2Nyb2xsIHBv
c2l0aW9uIGFuZCBjbGVhciBzY3JvbGwgZGVsdGFzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICBDYWxs
IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6YXBwbHlTY3JvbGxEZWx0YXMgdG8gYXBwbHkgc2Nyb2xs
IGRlbHRhcworICAgICAgICBvbiBMYXllckNocm9taXVtIGFuZCBDQ0xheWVySW1wbCByZXNwZWN0
aXZlbHkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oOgorCiAyMDExLTExLTA5ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2Jl
LmNvbT4KIAogICAgICAgICBbUGFydCAxXSBQYXJzZSB0aGUgY3VzdG9tKCkgZnVuY3Rpb24gaW4g
LXdlYmtpdC1maWx0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzFkZTQ1YWI3N2M5
OTliYzQ1MDVmMWZkYmM3ZGFiMDY5NzU3NTY5Yy4uNDY1MTI2ZmQ3YzU0ODA4NWVjMDIwOWJiYTk3
N2RhYTU1NDhlYWZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxMS0xMS0wOSAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gU2Nyb2xsIGRlbHRhcyBhcmUgY2xlYXJlZCBkdXJpbmcgY29tbWl0IHRvIHRo
ZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE5MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VEVTVF9GKToKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Quc2Nyb2xsRGVsdGFS
ZXBlYXRlZFNjcm9sbHMKKyAgICAgICAgVGhpcyB0ZXN0IGlzIG1vZGlmaWVkIHRvIHZlcmlmeSB0
aGF0IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMoKQorICAgICAgICBt
YWludGFpbiB0aGUgY3VycmVudCBzY3JvbGwgZGVsdGFzIGFuZCBzY3JvbGwgcG9zaXRpb25zLgor
ICAgICAgICBJdCBhbHNvIHZlcmlmaWVzIHRoYXQgc2Nyb2xsIGRlbHRhcyBhcmUgc3VidHJhY3Rl
ZCBjb3JyZWN0bHkgYnkgY2FsbGluZworICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmFw
cGx5U2Nyb2xsRGVsdGFzKCkuCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRvQmVnaW5UZXN0KToKKyAg
ICAgICAgY2FsbCBzZXRMYXllclRyZWVIb3N0KCkgb24gdGhlIHJvb3QgbGF5ZXIuCisKIDIwMTEt
MTEtMDggIEpheSBDaXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZp
eGVzIGFuZCByZWVuYWJsZXMgdGhlIFdlYlBhZ2VTZXJpYWxpemVyIHRlc3RzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcAppbmRleCAxYmU3OTg1NWMxZTZiM2ZlMTI5NzI0MmJjMjk4NDA1NmQ0MDk3OGJi
Li4wNTc2NDk5NDhmZDI0OWMxZDAxY2QxYzcwOTk0Y2Q5MzcwNTc5ZDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcApAQCAtMTAyLDYgKzEwMiwxNSBAQCB2b2lkIExheWVyQ2hyb21pdW06OmNsZWFu
dXBSZXNvdXJjZXNSZWN1cnNpdmUoKQogICAgIGNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAordm9p
ZCBMYXllckNocm9taXVtOjphcHBseVNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERl
bHRhKQoreworICAgIC8vIEZJWE1FOiBhcHBseSBzY3JvbGwgZGVsdGEgbm90IGp1c3QgdG8gQ0NM
YXllclRyZWVIb3N0Q2xpZW50LgorICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpIHx8ICFsYXllclRy
ZWVIb3N0KCktPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXllclRyZWVIb3N0
KCktPmNsaWVudCgpLT5hcHBseVNjcm9sbERlbHRhKHNjcm9sbERlbHRhKTsKK30KKwogdm9pZCBM
YXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsK
ICAgICAvLyBJZiB3ZSdyZSBjaGFuZ2luZyBsYXllciByZW5kZXJlcnMgdGhlbiB3ZSBuZWVkIHRv
IGZyZWUgdXAgYW55IHJlc291cmNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGJiMGVjNjI2NTAz
MzY4ZjQ5OWM5NTMyZGQ2OTQ0OWNlYmEzNzBjOTQuLjAyMzM5ZmIyZmYwMWM2M2FkYjg4ZDc4MmRk
OWQwYzYzZTE4OGY3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTEzNSw2ICsxMzUsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRNYXhTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBtYXhT
Y3JvbGxQb3NpdGlvbikgeyBtX21heFNjcm9sbFBvc2l0aW9uID0gbWF4U2Nyb2xsUG9zaXRpb247
IH0KIAogICAgIEludFNpemUgc2Nyb2xsRGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7
IH0KKyAgICB2b2lkIGFwcGx5U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEp
OwogCiAgICAgYm9vbCBzY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gIW1heFNjcm9sbFBvc2l0
aW9uKCkuaXNaZXJvKCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCmluZGV4IGY1YTVhMWQx
YTdkMDg1MThlMzI5YzY4ZjRjMjhkMjlmNzgyOGYzMGYuLjMyZjI1NjI4M2YxODIxNWFiMzY5YzVh
NWZhMGViYzdhYzBiNzY1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKQEAgLTM5NCw2ICsz
OTQsMTEgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEpCiAgICAgfQogfQogCit2b2lkIENDTGF5ZXJJbXBsOjphcHBseVNjcm9sbERl
bHRhKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQoreworICAgIG1fc2Nyb2xsRGVsdGEgLT0g
c2Nyb2xsRGVsdGE7Cit9CisKIHZvaWQgQ0NMYXllckltcGw6OnNldERvdWJsZVNpZGVkKGJvb2wg
ZG91YmxlU2lkZWQpCiB7CiAgICAgaWYgKG1fZG91YmxlU2lkZWQgIT0gZG91YmxlU2lkZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDJiODg0MzlkNGZmMDMxYWM1MTE2MWI0ZTA3MWNmY2Mx
NmNkMjRmZjIuLjBmYjMyNmNjNzYyYmMyNjg3NmE4Mjk1MjcxMjhlNTFjZmViOTBmNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaApAQCAtMTYwLDYgKzE2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbCk7CiAgICAgYm9vbCBzY3JvbGxhYmxlKCkgY29u
c3QgeyByZXR1cm4gIW1heFNjcm9sbFBvc2l0aW9uKCkuaXNaZXJvKCk7IH0KIAorICAgIHZvaWQg
YXBwbHlTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJik7CisKICAgICBjb25zdCBJbnRSZWN0JiB2
aXNpYmxlTGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGF5ZXJSZWN0OyB9CiAg
ICAgdm9pZCBzZXRWaXNpYmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJl
Y3QpIHsgbV92aXNpYmxlTGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCA5NTg4NWI0MjNhMGE4NDE2
MDA1ODAzZDNmODAwNDc4ZmY5NjQwYmNmLi43MGFkZjk3ZWM2YWFkMzhiYWU3OTlhYmI0ZmY5ZDgx
OGU5YmVkYWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAK
QEAgLTQzMyw2ICs0MzMsMTcgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICAgICAgc29y
dExheWVycygmZGVzY2VuZGFudHMuYXQoc29ydGluZ1N0YXJ0SW5kZXgpLCBkZXNjZW5kYW50cy5l
bmQoKSwgbGF5ZXJTb3J0ZXIpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+Citz
dGF0aWMgdm9pZCBhcHBseVNjcm9sbERlbHRhc0ludGVybmFsKExheWVyVHlwZSogcm9vdExheWVy
LCBjb25zdCBDQ1Njcm9sbFVwZGF0ZVNldCYgc2Nyb2xsSW5mbykKK3sKKyAgICBpZiAoIXJvb3RM
YXllciB8fCAhc2Nyb2xsSW5mby5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBhcHBseSBzY3JvbGwgZGVsdGFzIGZyb20gbGF5ZXIgb3RoZXIgdGhhbiB0aGUgcm9vdC4K
KyAgICBBU1NFUlQoc2Nyb2xsSW5mby5zaXplKCkgPT0gMSAmJiBzY3JvbGxJbmZvWzBdLmxheWVy
SWQgPT0gcm9vdExheWVyLT5pZCgpKTsKKyAgICByb290TGF5ZXItPmFwcGx5U2Nyb2xsRGVsdGEo
c2Nyb2xsSW5mb1swXS5zY3JvbGxEZWx0YSk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoTGF5ZXJDaHJvbWl1bSog
bGF5ZXIsIExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHBhcmVudE1hdHJpeCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJj
aHlNYXRyaXgsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiBsYXllckxpc3QsIGludCBt
YXhUZXh0dXJlU2l6ZSkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNo
cm9taXVtLCB2b2lkKj4obGF5ZXIsIHJvb3RMYXllciwgcGFyZW50TWF0cml4LCBmdWxsSGllcmFy
Y2h5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsIDAsIG1heFRleHR1
cmVTaXplKTsKQEAgLTQ0Myw0ICs0NTQsMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCogbGEKICAg
ICByZXR1cm4gY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8Q0NM
YXllckltcGwsIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllclNvcnRlcj4obGF5ZXIsIHJvb3RMYXll
ciwgcGFyZW50TWF0cml4LCBmdWxsSGllcmFyY2h5TWF0cml4LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBsYXllckxpc3QsIGxheWVyU29ydGVyLCBtYXhUZXh0dXJlU2l6ZSk7CiB9CiAKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0Q29tbW9uOjphcHBseVNjcm9sbERlbHRhcyhMYXllckNocm9taXVtKiBy
b290TGF5ZXIsIGNvbnN0IENDU2Nyb2xsVXBkYXRlU2V0JiBzY3JvbGxJbmZvKQoreworICAgIGFw
cGx5U2Nyb2xsRGVsdGFzSW50ZXJuYWwocm9vdExheWVyLCBzY3JvbGxJbmZvKTsKK30KKwordm9p
ZCBDQ0xheWVyVHJlZUhvc3RDb21tb246OmFwcGx5U2Nyb2xsRGVsdGFzKENDTGF5ZXJJbXBsKiBy
b290TGF5ZXIsIGNvbnN0IENDU2Nyb2xsVXBkYXRlU2V0JiBzY3JvbGxJbmZvKQoreworICAgIGFw
cGx5U2Nyb2xsRGVsdGFzSW50ZXJuYWwocm9vdExheWVyLCBzY3JvbGxJbmZvKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
aAppbmRleCA2OWQ1ODRkNGQwZWFiYWZhY2U3ZDA1MWMzODY1MmFlYThiNGIxODg4Li4yYTc5ZTVl
OTVkMjVhOGY2NDIzOGFiMDA1N2M4NTBjNzY1ZWEyNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RDb21tb24uaApAQCAtNDksOSArNDksMTMgQEAgcHVibGljOgogICAgICAgICBp
bnQgbGF5ZXJJZDsKICAgICAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YTsKICAgICB9OworICAgIHR5
cGVkZWYgVmVjdG9yPFNjcm9sbFVwZGF0ZUluZm8+IFNjcm9sbFVwZGF0ZVNldDsKKworICAgIHN0
YXRpYyB2b2lkIGFwcGx5U2Nyb2xsRGVsdGFzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllciwgY29u
c3QgU2Nyb2xsVXBkYXRlU2V0JiBzY3JvbGxJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBhcHBseVNj
cm9sbERlbHRhcyhDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBTY3JvbGxVcGRhdGVTZXQm
IHNjcm9sbEluZm8pOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8Q0NMYXllclRyZWVIb3N0Q29tbW9u
OjpTY3JvbGxVcGRhdGVJbmZvPiBDQ1Njcm9sbFVwZGF0ZVNldDsKK3R5cGVkZWYgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpTY3JvbGxVcGRhdGVTZXQgQ0NTY3JvbGxVcGRhdGVTZXQ7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZT4KIEludFJlY3QgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0KExheWVyVHlwZSogbGF5ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IGZlMDkzMjZlNGIyOTkwNTZmMmQ3NWIzZWIx
ZTZhZTMyMzhjYzQ2ZTYuLjczYTZiNzU3NjQwZjZjNWRkMGQxYzI5OGU1NmIxNzQzYWVkODJlOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0yMTYsMTAgKzIx
Niw2IEBAIFBhc3NPd25QdHI8Q0NTY3JvbGxVcGRhdGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6
OnByb2Nlc3NTY3JvbGxEZWx0YXMoKQogICAgICAgICBpbmZvLmxheWVySWQgPSBtX3Njcm9sbExh
eWVySW1wbC0+aWQoKTsKICAgICAgICAgaW5mby5zY3JvbGxEZWx0YSA9IG1fc2Nyb2xsTGF5ZXJJ
bXBsLT5zY3JvbGxEZWx0YSgpOwogICAgICAgICBzY3JvbGxJbmZvLT5hcHBlbmQoaW5mbyk7Ci0K
LSAgICAgICAgbV9zY3JvbGxMYXllckltcGwtPnNldFNjcm9sbFBvc2l0aW9uKG1fc2Nyb2xsTGF5
ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRh
KCkpOwotICAgICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0UG9zaXRpb24obV9zY3JvbGxMYXll
ckltcGwtPnBvc2l0aW9uKCkgLSBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7Ci0g
ICAgICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRTY3JvbGxEZWx0YShJbnRTaXplKCkpOwogICAg
IH0KICAgICByZXR1cm4gc2Nyb2xsSW5mby5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCmluZGV4IGRlMTk1ZWYyMjZlMDJkMTY4YjFmNDRkMTQ2NGE3NDJlYTI0N2I3OTcu
LjgxMDQzY2NjZTIxNzJlNWZmYTQ3YzkyODMzNWM0YTdlOTllNGZmMjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiY2MvQ0NGcmFtZVJh
dGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NJbnB1dEhhbmRsZXIuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21t
b24uaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
Y2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZE1haW5UaHJlYWRQcm94eS5oIgpAQCAt
MzUzLDcgKzM1NCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChp
bnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFNjcm9sbCBkZWx0YXMgbmVlZCB0byBiZSBhcHBsaWVkIGV2ZW4gaWYgdGhlIGNv
bW1pdCB3aWxsIGJlIGRyb3BwZWQuCi0gICAgbV9sYXllclRyZWVIb3N0LT5hcHBseVNjcm9sbERl
bHRhcygqc2Nyb2xsSW5mby5nZXQoKSk7CisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjphcHBs
eVNjcm9sbERlbHRhcyhtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLCAqc2Nyb2xsSW5mbyk7
CiAKICAgICAvLyBEcm9wIGJlZ2luRnJhbWVBbmRDb21taXQgY2FsbHMgdGhhdCBvY2N1ciBvdXQg
b2Ygc2VxdWVuY2UuIFNlZSBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVh
ZCBmb3IKICAgICAvLyBhbiBleHBsYW5hdGlvbiBvZiBob3cgb3V0LW9mLXNlcXVlbmNlIGJlZ2lu
RnJhbWVBbmRDb21taXQgdGFza3MgY2FuIG9jY3VyLgpAQCAtMzg1LDcgKzM4Niw3IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRv
dWJsZSBmcmFtZUJlZ2luVGltCiAgICAgICAgIC8vIGNvb3JkaW5hdGVkIGJ5IHRoZSBDQ1NjaGVk
dWxlci4KICAgICAgICAgVFJBQ0VfRVZFTlQoImNvbW1pdCIsIHRoaXMsIDApOwogICAgICAgICBD
Q0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwotICAgICAgICBzX2NjVGhyZWFkLT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21w
bGV0ZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsK
KyAgICAgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NU
aHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLCBzY3JvbGxJbmZvKSk7CiAgICAgICAgIGNvbXBsZXRp
b24ud2FpdCgpOwogICAgIH0KIApAQCAtMzk0LDcgKzM5NSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94
eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJl
Z2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVl
bmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24pCit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgUGFzc093blB0cjxDQ1Njcm9sbFVwZGF0ZVNl
dD4gc2Nyb2xsSW5mbykKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFtX2NvbW1p
dENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CkBAIC00MTEsNiArNDEyLDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KICAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25J
bXBsVGhyZWFkKTsKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFk
b3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKSk7CiAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmFw
cGx5U2Nyb2xsRGVsdGFzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJvb3RMYXllcigpLCAqc2Nyb2xs
SW5mbyk7CiAKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMTY3NmY4MzcwYmJlYzBmNDZkOTAx
ZDk0M2U3M2E1Zjk3MTg5ZjBlMy4uMTY0ODViM2NmNmZiNWViMWQ4MzM1YzM4ZGFjMGQwMWQ5MjJm
NTNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRl
OgogICAgIH07CiAgICAgUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2lu
RnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZy
YW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDTWFpblRo
cmVhZDo6VGFzayoqKTsKLSAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCopOworICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgUGFzc093blB0cjxDQ1Njcm9sbFVwZGF0ZVNldD4pOwog
ICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCopOwog
ICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50
Kik7CiAgICAgdm9pZCBpbml0aWFsaXplSW1wbE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBmYTVjNzBjYmYxYjQzMzk4YTEwMjMxMjFlMTc1YTUw
MzI1YWM4YTM2Li45ZDg1NjI1Njc3YWQwNmZkYTdiMGQ4Y2Q1ZTY5NzQwOWM2MGE1MzI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIk1vY2tXZWJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1
ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9u
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CiAKQEAgLTEyNCwyMiArMTI1LDIyIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJ
bXBsVGVzdCwgc2Nyb2xsRGVsdGFSZXBlYXRlZFNjcm9sbHMpCiAgICAgT3duUHRyPENDU2Nyb2xs
VXBkYXRlU2V0PiBzY3JvbGxJbmZvOwogCiAgICAgc2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnBy
b2Nlc3NTY3JvbGxEZWx0YXMoKTsKLSAgICBBU1NFUlRfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxEZWx0YSk7CisgICAgQVNTRVJUX0VRKHJvb3QtPnNj
cm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uKTsKICAgICBBU1NFUlRfRVEoc2Nyb2xsSW5m
by0+c2l6ZSgpLCAxdSk7CiAgICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIHJv
b3QtPmlkKCksIHNjcm9sbERlbHRhKTsKLSAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVj
dXJzaXZlKHJvb3QuZ2V0KCkpOwogCiAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YTIoLTUsIDI3KTsK
ICAgICByb290LT5zY3JvbGxCeShzY3JvbGxEZWx0YTIpOwogICAgIHNjcm9sbEluZm8gPSBtX2hv
c3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7Ci0gICAgQVNTRVJUX0VRKHJvb3QtPnNjcm9s
bFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsRGVsdGEgKyBzY3JvbGxEZWx0YTIp
OworICAgIEFTU0VSVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxQb3NpdGlvbik7
CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNpemUoKSwgMXUpOwotICAgIGV4cGVjdENvbnRh
aW5zKCpzY3JvbGxJbmZvLmdldCgpLCByb290LT5pZCgpLCBzY3JvbGxEZWx0YTIpOwotICAgIGV4
cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNpdmUocm9vdC5nZXQoKSk7CisgICAgZXhwZWN0
Q29udGFpbnMoKnNjcm9sbEluZm8sIHJvb3QtPmlkKCksIHNjcm9sbERlbHRhICsgc2Nyb2xsRGVs
dGEyKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgc2Nyb2xsRGVsdGEgKyBz
Y3JvbGxEZWx0YTIpOwogCisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjphcHBseVNjcm9sbERl
bHRhcyhtX2hvc3RJbXBsLT5yb290TGF5ZXIoKSwgKnNjcm9sbEluZm8pOwogICAgIHJvb3QtPnNj
cm9sbEJ5KEludFNpemUoKSk7CiAgICAgc2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnByb2Nlc3NT
Y3JvbGxEZWx0YXMoKTsKLSAgICBBU1NFUlRfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgc2Ny
b2xsUG9zaXRpb24gKyBzY3JvbGxEZWx0YSArIHNjcm9sbERlbHRhMik7CisgICAgQVNTRVJUX0VR
KHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uKTsKICAgICBBU1NFUlRfRVEo
c2Nyb2xsSW5mby0+c2l6ZSgpLCAwdSk7CiAgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1Jl
Y3Vyc2l2ZShyb290LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDU5Y2JhYjExMGI2ZDNkZmY2NDk5
ZjM0MjM1YTdlYTEyNjk3Y2RlMGEuLmIzNWEyNTIxYmQzMmMzMGMyMDNhYzY4ZjZhOTg3N2ExYTJk
YThiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcApAQCAtMzQyLDYgKzM0Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
VGVzdDo6ZG9CZWdpblRlc3QoKQogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoMCk7CiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xh
eWVyVHJlZUhvc3Q6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3Nl
dHRpbmdzKTsKICAgICBBU1NFUlQobV9sYXllclRyZWVIb3N0KTsKKyAgICByb290TGF5ZXItPnNl
dExheWVyVHJlZUhvc3QobV9sYXllclRyZWVIb3N0LmdldCgpKTsKIAogICAgIG1fYmVnaW5uaW5n
ID0gdHJ1ZTsKICAgICBiZWdpblRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114471</attachid>
            <date>2011-11-10 04:12:43 -0800</date>
            <delta_ts>2011-11-14 09:24:51 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-71916-20111110121242.patch</filename>
            <type>text/plain</type>
            <size>19677</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4MzYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMTJiOGNhODIzOGIyOTBk
YjUwNmNlZGU0YjRkMmNmZjgwZGZjMWZkLi4zMjI4ZjU0ZTU2MDFkNTI4NjhkYmQ4MDk4MDcyOTlk
N2U4ZWJjZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMTEtMDkgIEFscGhh
IExhbSAgPGhjbGFtQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIFNjcm9sbCBk
ZWx0YXMgYXJlIGNsZWFyZWQgZHVyaW5nIGNvbW1pdCB0byB0aGUgbWFpbiB0aHJlYWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTE2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgVGhlIHBhdGNoIGtlZXBz
IHRoZSBzY3JvbGwgZGVsdGFzIGFuZCBzY3JvbGwgcG9zaXRpb24gdW5jaGFuZ2VkIHdoZW4KKyAg
ICAgICAgY29tbWl0dGluZyB0byB0aGUgbWFpbiB0aHJlYWQuIEFmdGVyIGNvbW1pdCBoYXMgY29t
cGxldGVkIG9uIHRoZSBtYWluCisgICAgICAgIHRocmVhZCB0aGUgc3VibWl0dGVkIHNjcm9sbCBk
ZWx0YXMgYXJlIHRoZW4gc3VidHJhY3RlZCBmcm9tIHRoZSBjdXJyZW50CisgICAgICAgIHNjcm9s
bCBkZWx0YXMgb24gdGhlIGltcGwgdGhyZWFkLgorCisgICAgICAgIERvaW5nIHNvIGFsbG93IHNj
cm9sbCBkZWx0YXMgdG8gYmUgYXZhaWxhYmxlIGF0IGFsbCB0aW1lIHdoaWNoIGVuYWJsZXMKKyAg
ICAgICAgcHJvcGVyIHBvc2l0aW9uaW5nIGZvciBsYXllcnMgdGhhdCBhcmUgZml4ZWQtcG9zaXRp
b25lZCB0byB0aGUKKyAgICAgICAgY29udGFpbmVyIGxheWVyLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggaXMgdGVzdGVkIGJ5IHRoZSBmb2xsb3dpbmcgdW5pdCB0ZXN0czoKKyAgICAgICAgLSBDQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5zY3JvbGxEZWx0YVJlcGVhdGVkU2Nyb2xscworICAgICAgICAg
IFRoaXMgdGVzdCBpcyBtb2RpZmllZCB0byB2ZXJpZnkgdGhhdCBzY3JvbGwgZGVsdGFzIGFuZCBz
Y3JvbGwgcG9zaXRpb24KKyAgICAgICAgICBhcmUgdW5jaGFuZ2VkIGR1cmluZyBjb21taXQuIEFu
ZCB0aGVuIGFmdGVyIGNvbW1pdCBzY3JvbGwgZGVsdGFzIGFyZQorICAgICAgICAgIHN1YnRyYWN0
ZWQgY29ycmVjdGx5LgorCisgICAgICAgIC0gQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbFNpbXBs
ZS5ydW5NdWx0aVRocmVhZCBhbmQKKyAgICAgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xs
TXVsdGlwbGVSZWRyYXcucnVuTXVsdGlUaHJlYWQKKyAgICAgICAgICBUaGVzZSB0ZXN0cyB2ZXJp
ZmllcyB0aGF0IHNjcm9sbCBkZWx0YXMgbWFkZSBvbiBpbXBsIHRocmVhZCBhcmUKKyAgICAgICAg
ICBjb21taXR0ZWQgdG8gdGhlIG1haW4gdGhyZWFkLiBUaGUgc2Nyb2xsIGRlbHRhcyBpcyBldmVu
dHVhbGx5IGRlbGVnYXRlZAorICAgICAgICAgIHRvIENDTGF5ZXJUcmVlSG9zdENsaWVudC4gV2hl
biBjb21taXQgaGFzIGNvbXBsZXRlZCB0aGUgc2Nyb2xsIGRlbHRhcworICAgICAgICAgIGFyZSBz
dWJ0cmFjdGVkIGNvcnJlY3RseS4gVGhlcmUncyBubyBjaGFuZ2UgdG8gdGhlc2UgdHdvIHRlc3Rz
IGJ1dCB0aGV5CisgICAgICAgICAgdmVyaWZ5IHRoaXMgcGF0Y2ggbWFpbnRhaW5zIHRoZSBvdmVy
YWxsIGJlaGF2aW9yIG9mIHNjcm9sbGluZy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJv
bWl1bTo6YXBwbHlTY3JvbGxBbmRTY2FsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBs
OjphcHBseVNjcm9sbEFuZFNjYWxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFwcGx5U2Nyb2xsQW5kU2NhbGVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmFwcGx5U2Nyb2xsQW5kU2NhbGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERl
bHRhcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5k
Q29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21w
bGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oOgorCiAyMDExLTExLTEwICBOaWtvbGFzIFppbW1lcm1hbm4gIDxu
emltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIE5vdCByZXZpZXdlZC4gRml4IGJ1aWxkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmMWJmYTZlNmM4MzFlNDI5YWNhYmMyODdmM2I0
YjgxOGYyYWQ1NTU2Li40MjU0ZDAzNTc4Y2UwM2RiM2MzZmY0Y2M1ODkzODNlMjQ3NzMxYmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTExLTA5ICBB
bHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBTY3Jv
bGwgZGVsdGFzIGFyZSBjbGVhcmVkIGR1cmluZyBjb21taXQgdG8gdGhlIG1haW4gdGhyZWFkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgICogdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5zY3JvbGxEZWx0YVJlcGVhdGVkU2Nyb2xscwor
ICAgICAgICBUaGlzIHRlc3QgaXMgbW9kaWZpZWQgdG8gdmVyaWZ5IHRoYXQgQ0NMYXllclRyZWVI
b3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcygpCisgICAgICAgIG1haW50YWluIHRoZSBjdXJy
ZW50IHNjcm9sbCBkZWx0YXMgYW5kIHNjcm9sbCBwb3NpdGlvbnMuCisgICAgICAgIEl0IGFsc28g
dmVyaWZpZXMgdGhhdCBzY3JvbGwgZGVsdGFzIGFyZSBzdWJ0cmFjdGVkIGNvcnJlY3RseSBieSBj
YWxsaW5nCisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6YXBwbHlTY3JvbGxBbmRTY2Fs
ZSgpLgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAo
V1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0Ojpkb0JlZ2luVGVzdCk6CisgICAgICAgIGNhbGwgc2V0
TGF5ZXJUcmVlSG9zdCgpIG9uIHRoZSByb290IGxheWVyLgorCiAyMDExLTExLTEwICBKYXkgQ2l2
ZWxsaSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggcHJvZ3Jlc3MgbG9h
ZCByZXBvcnRpbmcgZm9yIE1IVE1MIGRvY3VtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggY2EwMGMyMzUyNGY3N2E2M2IwZTg1OThiZDgxM2YyMDM2YzYwODY0OC4uZDk3MTdlMWY2NDM5
NjJmM2MxZmVjZmUwMDg0NjBiZjAxNDlkZjg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTEwNCw2ICsxMDQsMTUgQEAgdm9pZCBMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzUmVj
dXJzaXZlKCkKICAgICBjbGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAKK3ZvaWQgTGF5ZXJDaHJvbWl1
bTo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQg
cGFnZVNjYWxlKQoreworICAgIC8vIEZJWE1FOiBhcHBseSBzY3JvbGwgZGVsdGEgbm90IGp1c3Qg
dG8gQ0NMYXllclRyZWVIb3N0Q2xpZW50LgorICAgIGlmICghbGF5ZXJUcmVlSG9zdCgpIHx8ICFs
YXllclRyZWVIb3N0KCktPmNsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXllclRy
ZWVIb3N0KCktPmNsaWVudCgpLT5hcHBseVNjcm9sbEFuZFNjYWxlKHNjcm9sbERlbHRhLCBwYWdl
U2NhbGUpOworfQorCiB2b2lkIExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXll
clRyZWVIb3N0KiBob3N0KQogewogICAgIC8vIElmIHdlJ3JlIGNoYW5naW5nIGxheWVyIHJlbmRl
cmVycyB0aGVuIHdlIG5lZWQgdG8gZnJlZSB1cCBhbnkgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKaW5kZXggNzQ3ZGM5ODY5Y2YxMGI2MmYzMGU5YmYwOWFmMjI3OTg2NjRkMzQyNC4uMzM0NmRk
ODU4YmVjYmYwY2Y1ZTZkNWQ3NWU4ZDU5NWM1NjYxMWUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApA
QCAtMTM1LDYgKzEzNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBz
Y3JvbGxhYmxlKSB7IG1fc2Nyb2xsYWJsZSA9IHRydWU7ICBzZXROZWVkc0NvbW1pdCgpOyB9CiAK
ICAgICBJbnRTaXplIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9Cisg
ICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBm
bG9hdCBwYWdlU2NhbGUpOwogCiAgICAgYm9vbCBkb3VibGVTaWRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZG91YmxlU2lkZWQ7IH0KICAgICB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lk
ZWQpIHsgbV9kb3VibGVTaWRlZCA9IGRvdWJsZVNpZGVkOyBzZXROZWVkc0NvbW1pdCgpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggYmQyYWEwYWZjNDNkNzhlMDFhNjNjOWM0OGQyYWVj
YTJhMTIyNzkxMS4uMWI2ZTE1MjJkMzYxMTQ1ZmU4YTE0NzE0M2FmNmYxOWQyZWZhOTcxMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMzk1LDYgKzM5NSwxMSBAQCB2b2lkIENDTGF5ZXJJ
bXBsOjpzZXRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKICAgICB9CiB9
CiAKK3ZvaWQgQ0NMYXllckltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkKK3sKKyAgICBtX3Njcm9sbERlbHRhIC09IHNj
cm9sbERlbHRhOworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZChib29sIGRv
dWJsZVNpZGVkKQogewogICAgIGlmIChtX2RvdWJsZVNpZGVkICE9IGRvdWJsZVNpZGVkKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAppbmRleCBiNzJjYWUxMGQ5MTcxY2U2N2RiZGI3NGNiMTRiNWU1MTUz
NTBhYzY1Li41YzI1ZmYxNmJkYTRlNzE2OTk1NWM5ODhiNDAxY2NjYTZkNTlkMDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKQEAgLTE2Miw2ICsxNjIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzY3Jv
bGxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlOyB9CiAgICAgdm9pZCBzZXRTY3Jv
bGxhYmxlKGJvb2wgc2Nyb2xsYWJsZSkgeyBtX3Njcm9sbGFibGUgPSBzY3JvbGxhYmxlOyB9CiAK
KyAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEs
IGZsb2F0IHBhZ2VTY2FsZSk7CisKICAgICBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlTGF5ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRWaXNp
YmxlTGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpIHsgbV92aXNpYmxl
TGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmNwcAppbmRleCA0ZjJjMWZiNjI2NGVlN2MzYTllNjE3NTM3YTAyODk4MmY4YWIzM2ZlLi5j
MWFkMzliYTk2MDllYzQzMmQ3MGEzNjRhOThkNTExZjE2ZTYxNzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQ2MSwxNyArNDYxLDYgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiAgICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CiB9CiAK
LXZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xs
QW5kU2NhbGVTZXQmIGluZm8pCi17Ci0gICAgLy8gRklYTUU6IHB1c2hpbmcgc2Nyb2xsIG9mZnNl
dHMgdG8gbm9uLXJvb3QgbGF5ZXJzIG5vdCBpbXBsZW1lbnRlZAotICAgIGlmICghaW5mby5zY3Jv
bGxzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGluZm8uc2Nyb2xscy5z
aXplKCkgPT0gMSk7Ci0gICAgSW50U2l6ZSBzY3JvbGxEZWx0YSA9IGluZm8uc2Nyb2xsc1swXS5z
Y3JvbGxEZWx0YTsKLSAgICBtX2NsaWVudC0+YXBwbHlTY3JvbGxBbmRTY2FsZShzY3JvbGxEZWx0
YSwgaW5mby5wYWdlU2NhbGUpOwotfQotCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRSYXRl
TGltaXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICBpZiAoYW5pbWF0aW5n
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDc1MTk1NDVlMTc1MDRiNmEyNGNj
MWE3NDI4OTZhNjgxYTc1Mjc5NGUuLjZkNDVjODU1OWI2ODhhNTU4YzRmNzIwZTFiOGQ1OGFkNjll
NzY0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xNzQsNyArMTc0LDYgQEAg
cHVibGljOgogICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7Ci0g
ICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsK
ICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lk
IHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RD
b21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCA5NTg4NWI0MjNhMGE4NDE2MDA1ODAzZDNm
ODAwNDc4ZmY5NjQwYmNmLi5iOWEyYWQzNzc2YWVlODAxMmQ5YmM0OGEwMjhlOTc1MTViNTNhMTc3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTQzMyw2
ICs0MzMsMTcgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICAgICAgc29ydExheWVycygm
ZGVzY2VuZGFudHMuYXQoc29ydGluZ1N0YXJ0SW5kZXgpLCBkZXNjZW5kYW50cy5lbmQoKSwgbGF5
ZXJTb3J0ZXIpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitzdGF0aWMgdm9p
ZCBhcHBseVNjcm9sbEFuZFNjYWxlSW50ZXJuYWwoTGF5ZXJUeXBlKiByb290TGF5ZXIsIGNvbnN0
IENDU2Nyb2xsQW5kU2NhbGVTZXQmIHNjcm9sbEluZm8pCit7CisgICAgaWYgKCFyb290TGF5ZXIg
fHwgIXNjcm9sbEluZm8uc2Nyb2xscy5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IEZJWE1FOiBhcHBseSBzY3JvbGwgZGVsdGFzIGZyb20gbGF5ZXIgb3RoZXIgdGhhbiB0aGUgcm9v
dC4KKyAgICBBU1NFUlQoc2Nyb2xsSW5mby5zY3JvbGxzLnNpemUoKSA9PSAxICYmIHNjcm9sbElu
Zm8uc2Nyb2xsc1swXS5sYXllcklkID09IHJvb3RMYXllci0+aWQoKSk7CisgICAgcm9vdExheWVy
LT5hcHBseVNjcm9sbEFuZFNjYWxlKHNjcm9sbEluZm8uc2Nyb2xsc1swXS5zY3JvbGxEZWx0YSwg
c2Nyb2xsSW5mby5wYWdlU2NhbGUpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0qIGxheWVy
LCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBw
YXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0
cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQgbWF4VGV4
dHVyZVNpemUpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eUludGVybmFsPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZhY2VDaHJvbWl1
bSwgdm9pZCo+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1h
dHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCAwLCBtYXhUZXh0dXJlU2l6
ZSk7CkBAIC00NDMsNCArNDU0LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIGxhCiAgICAgcmV0
dXJuIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsPENDTGF5ZXJJ
bXBsLCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5ZXIsIHBh
cmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwg
bGF5ZXJMaXN0LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOwogfQogCit2b2lkIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6YXBwbHlTY3JvbGxBbmRTY2FsZShMYXllckNocm9taXVtKiByb290
TGF5ZXIsIGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIHNjcm9sbEluZm8pCit7CisgICAgYXBw
bHlTY3JvbGxBbmRTY2FsZUludGVybmFsKHJvb3RMYXllciwgc2Nyb2xsSW5mbyk7Cit9CisKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjphcHBseVNjcm9sbEFuZFNjYWxlKENDTGF5ZXJJbXBs
KiByb290TGF5ZXIsIGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIHNjcm9sbEluZm8pCit7Cisg
ICAgYXBwbHlTY3JvbGxBbmRTY2FsZUludGVybmFsKHJvb3RMYXllciwgc2Nyb2xsSW5mbyk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmgKaW5kZXggNTI5YjNiMzIwY2Y3MjQ0ZTJlNDE5OGVmMTk3ZTVjNDNkYzViNjlhYy4u
ZTljYjVjZGNiZWZmNDJjOGE5OTdmOWJjYjZkMThjYTFlNjViMWQ3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgKQEAgLTQ5LDEzICs0OSwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGludCBsYXllcklkOwogICAgICAgICBJbnRTaXplIHNjcm9sbERlbHRhOwogICAgIH07
Ci19OworICAgIHN0cnVjdCBTY3JvbGxBbmRTY2FsZVNldCB7CisgICAgICAgIFZlY3RvcjxTY3Jv
bGxVcGRhdGVJbmZvPiBzY3JvbGxzOworICAgICAgICBmbG9hdCBwYWdlU2NhbGU7CisgICAgfTsK
IAotc3RydWN0IENDU2Nyb2xsQW5kU2NhbGVTZXQgewotICAgIFZlY3RvcjxDQ0xheWVyVHJlZUhv
c3RDb21tb246OlNjcm9sbFVwZGF0ZUluZm8+IHNjcm9sbHM7Ci0gICAgZmxvYXQgcGFnZVNjYWxl
OworICAgIHN0YXRpYyB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyLCBjb25zdCBTY3JvbGxBbmRTY2FsZVNldCYgc2Nyb2xsSW5mbyk7CisgICAgc3RhdGlj
IHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBT
Y3JvbGxBbmRTY2FsZVNldCYgc2Nyb2xsSW5mbyk7CiB9OwogCit0eXBlZGVmIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6U2Nyb2xsQW5kU2NhbGVTZXQgQ0NTY3JvbGxBbmRTY2FsZVNldDsKKwogdGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgogSW50UmVjdCBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3QoTGF5ZXJUeXBlKiBsYXllcikKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggOGFjYjU0YmJjNDU2Y2VhMGMwYzQx
NmJlZWMyNGUwMmZiOTcwNjRlNy4uNmQzMmVjY2Q3Mzc4Y2ZkYzJjZjNjNmQ1YzA3Zjc2YTIxZWNk
NmYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTMzOCwx
MCArMzM4LDYgQEAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKCkKICAgICBzY3JvbGwuc2Nyb2xsRGVsdGEgPSBt
X3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKTsKICAgICBzY3JvbGxJbmZvLT5zY3JvbGxz
LmFwcGVuZChzY3JvbGwpOwogCi0gICAgbV9zY3JvbGxMYXllckltcGwtPnNldFNjcm9sbFBvc2l0
aW9uKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbERlbHRhKCkpOwotICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRQb3NpdGlvbiht
X3Njcm9sbExheWVySW1wbC0+cG9zaXRpb24oKSAtIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxE
ZWx0YSgpKTsKLSAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2Nyb2xsRGVsdGEoSW50U2l6ZSgp
KTsKLQogICAgIHJldHVybiBzY3JvbGxJbmZvLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCAzYzEzNzczYjY1YzA3NjQyODk3NWQxNmQ5ZDg3NGZhOTAwZmYw
OGI2Li4wNjNkMGFlYWQxMWYxZWQzMDM2MDRlMDM0OTIwYTgxNTA2Zjk3ZmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgImNjL0NDRnJh
bWVSYXRlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDSW5wdXRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgImNj
L0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRNYWluVGhyZWFkUHJveHkuaCIK
QEAgLTM1Myw3ICszNTQsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21t
aXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyBTY3JvbGwgZGVsdGFzIG5lZWQgdG8gYmUgYXBwbGllZCBldmVuIGlmIHRo
ZSBjb21taXQgd2lsbCBiZSBkcm9wcGVkLgotICAgIG1fbGF5ZXJUcmVlSG9zdC0+YXBwbHlTY3Jv
bGxBbmRTY2FsZSgqc2Nyb2xsSW5mby5nZXQoKSk7CisgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9u
OjphcHBseVNjcm9sbEFuZFNjYWxlKG1fbGF5ZXJUcmVlSG9zdC0+cm9vdExheWVyKCksICpzY3Jv
bGxJbmZvKTsKIAogICAgIC8vIERyb3AgYmVnaW5GcmFtZUFuZENvbW1pdCBjYWxscyB0aGF0IG9j
Y3VyIG91dCBvZiBzZXF1ZW5jZS4gU2VlIGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25J
bXBsVGhyZWFkIGZvcgogICAgIC8vIGFuIGV4cGxhbmF0aW9uIG9mIGhvdyBvdXQtb2Ytc2VxdWVu
Y2UgYmVnaW5GcmFtZUFuZENvbW1pdCB0YXNrcyBjYW4gb2NjdXIuCkBAIC0zODUsNyArMzg2LDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51
bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAgICAgLy8gY29vcmRpbmF0ZWQgYnkgdGhl
IENDU2NoZWR1bGVyLgogICAgICAgICBUUkFDRV9FVkVOVCgiY29tbWl0IiwgdGhpcywgMCk7CiAg
ICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIHNfY2NUaHJlYWQt
PnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0
aW9uKSkpOworICAgICAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2so
dGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCwgQWxs
b3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbiksIHNjcm9sbEluZm8pKTsKICAgICAgICAg
Y29tcGxldGlvbi53YWl0KCk7CiAgICAgfQogCkBAIC0zOTQsNyArMzk1LDcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91Ymxl
IGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29t
bWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCi12b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbikKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBQYXNzT3duUHRyPENDU2Nyb2xs
QW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwogICAgIEFTU0VS
VCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwpAQCAtNDExLDYgKzQxMiw3
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwogICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICpt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjphcHBseVNjcm9sbEFuZFNjYWxlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJvb3RMYXll
cigpLCAqc2Nyb2xsSW5mbyk7CiAKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5G
cmFtZUNvbXBsZXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggZGZmMDViYmRm
NmE5MzNmZTE2OGI1ZmZkZGZmY2Y3YmQ5ZDgwN2YyNC4uMDQ1ZGE3NDY4MDY1NzkzMDhlMTZmZGJl
Y2YxMDJkZWU3ODkyOTk5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtOTMsNyArOTMs
NyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+
IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBv
YnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCosIENDTWFpblRocmVhZDo6VGFzayoqKTsKLSAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOworICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBs
ZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgUGFzc093blB0cjxDQ1Njcm9sbEFu
ZFNjYWxlU2V0Pik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJh
Y2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDRjNDM0ODdlZDViZjA3N2Y2
OTViZmZkMjc1MjY2YWJlNmNhYjMyMjIuLjkyNjVmMjY0ZjA0ZDNjMjRkNzFkNTgwNDAzNGUwOGFl
YTE2NDdmYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiTW9ja1dlYkdyYXBoaWNzQ29udGV4
dDNELmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIApAQCAtMTI1LDIyICsxMjYsMjIgQEAgVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxEZWx0YVJlcGVhdGVkU2Nyb2xscykKICAgICBP
d25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsKIAogICAgIHNjcm9sbEluZm8g
PSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7Ci0gICAgQVNTRVJUX0VRKHJvb3Qt
PnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsRGVsdGEpOworICAgIEFT
U0VSVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBzY3JvbGxQb3NpdGlvbik7CiAgICAgQVNT
RVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAxdSk7CiAgICAgZXhwZWN0Q29udGFp
bnMoKnNjcm9sbEluZm8uZ2V0KCksIHJvb3QtPmlkKCksIHNjcm9sbERlbHRhKTsKLSAgICBleHBl
Y3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOwogCiAgICAgSW50U2l6
ZSBzY3JvbGxEZWx0YTIoLTUsIDI3KTsKICAgICByb290LT5zY3JvbGxCeShzY3JvbGxEZWx0YTIp
OwogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7Ci0g
ICAgQVNTRVJUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsgc2Ny
b2xsRGVsdGEgKyBzY3JvbGxEZWx0YTIpOworICAgIEFTU0VSVF9FUShyb290LT5zY3JvbGxQb3Np
dGlvbigpLCBzY3JvbGxQb3NpdGlvbik7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9s
bHMuc2l6ZSgpLCAxdSk7Ci0gICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIHJv
b3QtPmlkKCksIHNjcm9sbERlbHRhMik7Ci0gICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1Jl
Y3Vyc2l2ZShyb290LmdldCgpKTsKKyAgICBleHBlY3RDb250YWlucygqc2Nyb2xsSW5mbywgcm9v
dC0+aWQoKSwgc2Nyb2xsRGVsdGEgKyBzY3JvbGxEZWx0YTIpOworICAgIEVYUEVDVF9FUShyb290
LT5zY3JvbGxEZWx0YSgpLCBzY3JvbGxEZWx0YSArIHNjcm9sbERlbHRhMik7CiAKKyAgICBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmFwcGx5U2Nyb2xsQW5kU2NhbGUobV9ob3N0SW1wbC0+cm9vdExh
eWVyKCksICpzY3JvbGxJbmZvKTsKICAgICByb290LT5zY3JvbGxCeShJbnRTaXplKCkpOwogICAg
IHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7Ci0gICAgQVNT
RVJUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsRGVs
dGEgKyBzY3JvbGxEZWx0YTIpOworICAgIEFTU0VSVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigp
LCBzY3JvbGxQb3NpdGlvbik7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6
ZSgpLCAwdSk7CiAgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290Lmdl
dCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCmluZGV4IDlkOTFiY2QwZTA1NTkyYTFmMGE3NjBmZDgyYTgyNmJkYjcy
MGNiM2YuLmJlYzI3OTgzM2I5OTFiNzM0ZDkzZGYyZmUwZGRmNWFmOGQwYTAyYWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cApAQCAtMzQyLDYgKzM0Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0VGVzdDo6ZG9CZWdpblRl
c3QoKQogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiByb290TGF5ZXIgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoMCk7CiAgICAgbV9sYXllclRyZWVIb3N0ID0gTW9ja0xheWVyVHJlZUhvc3Q6OmNy
ZWF0ZSh0aGlzLCBtX2NsaWVudC5nZXQoKSwgcm9vdExheWVyLCBtX3NldHRpbmdzKTsKICAgICBB
U1NFUlQobV9sYXllclRyZWVIb3N0KTsKKyAgICByb290TGF5ZXItPnNldExheWVyVHJlZUhvc3Qo
bV9sYXllclRyZWVIb3N0LmdldCgpKTsKIAogICAgIG1fYmVnaW5uaW5nID0gdHJ1ZTsKICAgICBi
ZWdpblRlc3QoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114963</attachid>
            <date>2011-11-14 09:24:58 -0800</date>
            <delta_ts>2011-11-14 10:33:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71916-20111114172456.patch</filename>
            <type>text/plain</type>
            <size>9364</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdhODI0YmIzMzc5YTU0
NGNlZmNjMDM0MTY3ZjA5M2E3Yjk5NzE1My4uYWNmNTY3ZWNmMTIzMDAyYzhlMjJlYzliM2QwODY2
YTM3YzlkYTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTExLTE0ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBzY3JvbGwg
ZGVsdGFzIGFyZSBjbGVhcmVkIGR1cmluZyBjb21taXQgdG8gdGhlIG1haW4gdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGlzIGNvdmVy
ZWQgYnkgdW5pdCB0ZXN0LgorCisgICAgICAgIEFkZCBhIG1lbWJlciBtX3NlbnRTY3JvbGxEZWx0
YSB0byBDQ0xheWVySW1wbCB0byBrZWVwIHRyYWNrIG9mIHRoZSBzY3JvbGwgZGVsdGEgYmVpbmcK
KyAgICAgICAgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIGNvbW1pdC4gVGhpcyBnaXZl
cyBhIHNpbXBsZXIgdG8ga2VlcCB0cmFja2luZyBvZiBhCisgICAgICAgIGxheWVyJ3Mgc2Nyb2xs
IGRlbHRhIGluIGltcGwgdGhyZWFkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
c2VudFNjcm9sbERlbHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNlbnRTY3Jv
bGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U2VudFNjcm9sbERl
bHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNv
bW1pdENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNs
ZWFyU2VudFNjcm9sbERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisKIDIwMTEtMTEtMTIgIFBhdHJpY2sg
R2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIHN0dWIgaW1wbGVt
ZW50YXRpb24gZm9yIFNWR1Jlc291cmNlczo6ZmlsdGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggYmExNDg1OWE5NDBmZTgyZWRlZjQ2MGIzNGRmYzA5MDY0NTU4OTYyMC4uNGQxNzVl
NzEzOGZjYjZjMWJlNTVlMjk1YmIzMjQ5NDhiMjJjZmM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMS0xNCAgQWxwaGEgTGFtICA8aGNsYW1AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gc2Nyb2xsIGRlbHRhcyBhcmUgY2xlYXJl
ZCBkdXJpbmcgY29tbWl0IHRvIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5MTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZnkgdGVzdCB0byB2ZXJpZnkgc2VudFNjcm9s
bERlbHRhcygpIHZhbHVlcyBvZiBDQ0xheWVySW1wbCBkdXJpbmcgY29tbWl0LgorCisgICAgICAg
ICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpU
RVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAg
ICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2ltcGxlOjpiZWdpbkNvbW1pdE9uQ0NU
aHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2Nyb2xsU2ltcGxlOjpk
cmF3TGF5ZXJzT25DQ1RocmVhZCk6CisKIDIwMTEtMTEtMTEgIE5pY28gV2ViZXIgIDx0aGFraXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIDIgc3RhdGljIGluaXRp
YWxpemVycyBhbmQgMyBleGl0IHRpbWUgZGVzdHJ1Y3RvcnMuIFR1cm4gb24gLVdleGl0LXRpbWUt
ZGVzdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzQ3ZGM5ODY5Y2YxMGI2MmYzMGU5
YmYwOWFmMjI3OTg2NjRkMzQyNC4uNGI4MTdkZWYyNzhmNmMzMTU0ZDUwODhkYTE4ZDBmNjc4YTFj
MTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTM1LDYgKzEzNSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKSB7IG1fc2Nyb2xsYWJsZSA9IHRy
dWU7ICBzZXROZWVkc0NvbW1pdCgpOyB9CiAKICAgICBJbnRTaXplIHNjcm9sbERlbHRhKCkgY29u
c3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CisgICAgSW50U2l6ZSBzZW50U2Nyb2xsRGVsdGEoKSBj
b25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KIAogICAgIGJvb2wgZG91YmxlU2lkZWQoKSBjb25z
dCB7IHJldHVybiBtX2RvdWJsZVNpZGVkOyB9CiAgICAgdm9pZCBzZXREb3VibGVTaWRlZChib29s
IGRvdWJsZVNpZGVkKSB7IG1fZG91YmxlU2lkZWQgPSBkb3VibGVTaWRlZDsgc2V0TmVlZHNDb21t
aXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggYjcyY2FlMTBkOTE3MWNlNjdkYmRiNzRj
YjE0YjVlNTE1MzUwYWM2NS4uMmI2MDY5NTIzZmYzNjgxNDM1MTc3ZjMxODgwZDE4OTEzZjUxOTkz
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xNTcsNiArMTU3LDkgQEAgcHVibGljOgogICAg
IGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxEZWx0
YTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYpOwogCisgICAgY29u
c3QgSW50U2l6ZSYgc2VudFNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9zZW50U2Nyb2xs
RGVsdGE7IH0KKyAgICB2b2lkIHNldFNlbnRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJiBzZW50
U2Nyb2xsRGVsdGEpIHsgbV9zZW50U2Nyb2xsRGVsdGEgPSBzZW50U2Nyb2xsRGVsdGE7IH0KKwog
ICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsKTsKIAogICAgIGJvb2wgc2Ny
b2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZTsgfQpAQCAtMjQxLDYgKzI0NCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RyYXdzQ29udGVudDsKIAogICAgIEludFNpemUgbV9z
Y3JvbGxEZWx0YTsKKyAgICBJbnRTaXplIG1fc2VudFNjcm9sbERlbHRhOwogICAgIEludFNpemUg
bV9tYXhTY3JvbGxQb3NpdGlvbjsKIAogICAgIC8vIFByb3BlcnRpZXMgb3duZWQgZXhjbHVzaXZl
bHkgYnkgdGhpcyBDQ0xheWVySW1wbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKaW5kZXggOGFjYjU0YmJjNDU2Y2VhMGMwYzQxNmJlZWMyNGUwMmZiOTcwNjRlNy4uMDdj
MTBjMzgwNWJiMzk4NThlNDk0OTBiOWY5MDdmZGQ2MzdlM2E1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTc2LDYgKzc2LDcgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjb21taXRDb21wbGV0ZSgpCiAgICAgLy8gUmVjb21wdXRlIG1heCBzY3JvbGwg
cG9zaXRpb247IG11c3QgYmUgYWZ0ZXIgbGF5ZXIgY29udGVudCBib3VuZHMgYXJlCiAgICAgLy8g
dXBkYXRlZC4KICAgICB1cGRhdGVNYXhTY3JvbGxQb3NpdGlvbigpOworICAgIGNsZWFyU2VudFNj
cm9sbERlbHRhcygpOwogfQogCiBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y29udGV4dCgpCkBAIC0yMzcsNiArMjM4LDEzIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1w
bDo6c2V0U2NhbGVEZWx0YShmbG9hdCBkZWx0YSkKICAgICBtX2xheWVyUmVuZGVyZXItPnNldFBh
Z2VNYWduaWZ5VHJhbnNmb3JtKGRlbHRhTWF0cml4KTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpjbGVhclNlbnRTY3JvbGxEZWx0YXMoKQoreworICAgIC8vIEZJWE1FOiBjbGVhciBz
Y3JvbGwgZGVsdGFzIG90aGVyIHRoYW4ganVzdCB0aGUgbWFpbiBzY3JvbGwgbGF5ZXIuCisgICAg
aWYgKG1fc2Nyb2xsTGF5ZXJJbXBsKQorICAgICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2Vu
dFNjcm9sbERlbHRhKEludFNpemUoKSk7Cit9CisKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6
c2V0UGFnZVNjYWxlRmFjdG9yTGltaXRzKGZsb2F0IG1pblBhZ2VTY2FsZSwgZmxvYXQgbWF4UGFn
ZVNjYWxlKQogewogICAgIG1fbWluUGFnZVNjYWxlID0gbWluUGFnZVNjYWxlOwpAQCAtMzQwLDYg
KzM0OCw3IEBAIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gQ0NMYXllclRyZWVIb3N0
SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcygpCiAKICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0
U2Nyb2xsUG9zaXRpb24obV9zY3JvbGxMYXllckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Nj
cm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSk7CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNl
dFBvc2l0aW9uKG1fc2Nyb2xsTGF5ZXJJbXBsLT5wb3NpdGlvbigpIC0gbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbERlbHRhKCkpOworICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRTZW50U2Nyb2xs
RGVsdGEobV9zY3JvbGxMYXllckltcGwtPnNlbnRTY3JvbGxEZWx0YSgpICsgbV9zY3JvbGxMYXll
ckltcGwtPnNjcm9sbERlbHRhKCkpOwogICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRTY3JvbGxE
ZWx0YShJbnRTaXplKCkpOwogCiAgICAgcmV0dXJuIHNjcm9sbEluZm8ucmVsZWFzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IDQ0YjllYjkzZThhNDQ1NzY4ZDQz
NzgyNzAxZDYwMGM0MzAwNDJmZGUuLjdjZDA1YTcwNGQ3OWI5ZjVlYmM5MDVmYjVjNGQzZTk5ZDQ2
Y2ZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTExOSw2ICsx
MTksNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTY2FsZURlbHRhKGZs
b2F0KTsKKyAgICB2b2lkIGNsZWFyU2VudFNjcm9sbERlbHRhcygpOwogCiAgICAgT3duUHRyPExh
eWVyUmVuZGVyZXJDaHJvbWl1bT4gbV9sYXllclJlbmRlcmVyOwogICAgIFJlZlB0cjxDQ0xheWVy
SW1wbD4gbV9yb290TGF5ZXJJbXBsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAppbmRleCBmNzg3ODRkZTQ4Njkx
NDZhM2Y3Mzk0YzUwYTZlMzk5MTljNDVjYjc5Li5mZDcyZjYyYmE0MDlmY2M4MmZhMGY1YzgwMGM4
ZGZjMDQwNDI0NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcApAQCAtMTI3LDYgKzEyNyw3IEBAIFRFU1Rf
RihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFSZXBlYXRlZFNjcm9sbHMpCiAg
ICAgc2Nyb2xsSW5mbyA9IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKICAgICBB
U1NFUlRfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxE
ZWx0YSk7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAxdSk7Cisg
ICAgRVhQRUNUX0VRKHJvb3QtPnNlbnRTY3JvbGxEZWx0YSgpLCBzY3JvbGxEZWx0YSk7CiAgICAg
ZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIHJvb3QtPmlkKCksIHNjcm9sbERlbHRh
KTsKICAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOwog
CkBAIC0xMzUsNiArMTM2LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3Jv
bGxEZWx0YVJlcGVhdGVkU2Nyb2xscykKICAgICBzY3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+cHJv
Y2Vzc1Njcm9sbERlbHRhcygpOwogICAgIEFTU0VSVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigp
LCBzY3JvbGxQb3NpdGlvbiArIHNjcm9sbERlbHRhICsgc2Nyb2xsRGVsdGEyKTsKICAgICBBU1NF
UlRfRVEoc2Nyb2xsSW5mby0+c2Nyb2xscy5zaXplKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEocm9v
dC0+c2VudFNjcm9sbERlbHRhKCksIHNjcm9sbERlbHRhICsgc2Nyb2xsRGVsdGEyKTsKICAgICBl
eHBlY3RDb250YWlucygqc2Nyb2xsSW5mby5nZXQoKSwgcm9vdC0+aWQoKSwgc2Nyb2xsRGVsdGEy
KTsKICAgICBleHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOwog
CkBAIC0xNDIsNiArMTQ0LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3Jv
bGxEZWx0YVJlcGVhdGVkU2Nyb2xscykKICAgICBzY3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+cHJv
Y2Vzc1Njcm9sbERlbHRhcygpOwogICAgIEFTU0VSVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigp
LCBzY3JvbGxQb3NpdGlvbiArIHNjcm9sbERlbHRhICsgc2Nyb2xsRGVsdGEyKTsKICAgICBBU1NF
UlRfRVEoc2Nyb2xsSW5mby0+c2Nyb2xscy5zaXplKCksIDB1KTsKKyAgICBFWFBFQ1RfRVEocm9v
dC0+c2VudFNjcm9sbERlbHRhKCksIHNjcm9sbERlbHRhICsgc2Nyb2xsRGVsdGEyKTsKICAgICBl
eHBlY3RDbGVhcmVkU2Nyb2xsRGVsdGFzUmVjdXJzaXZlKHJvb3QuZ2V0KCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAppbmRleCA3MGU0MWYwNTk3ODRiYjI2NjJhN2NjYTcyODJmNGYzY2E0ZWZjYmJmLi44MDUyZTg1
NTBlYmQwZDE5MDg5MTc0ODFlYzMyMjI2NjUwY2IzODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTY2Niw2ICs2
NjYsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAvLyBQcmV0ZW5kIGxpa2UgSmF2YXNjcmlwdCB1
cGRhdGVkIHRoZSBzY3JvbGwgcG9zaXRpb24gaXRzZWxmLgogICAgICAgICAgICAgcm9vdC0+c2V0
U2Nyb2xsUG9zaXRpb24obV9zZWNvbmRTY3JvbGwpOwogICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1iZXIoKSA9PSAyKQorICAgICAgICAgICAgRVhQRUNU
X0VRKHJvb3QtPnNlbnRTY3JvbGxEZWx0YSgpLCBtX3Njcm9sbEFtb3VudCk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
IGltcGwpCkBAIC02ODAsMTAgKzY4MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpbXBsLT5m
cmFtZU51bWJlcigpID09IDEpIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3JvbGxQ
b3NpdGlvbigpLCBtX2luaXRpYWxTY3JvbGwpOwogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3Qt
PnNjcm9sbERlbHRhKCksIG1fc2Nyb2xsQW1vdW50KTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShy
b290LT5zZW50U2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAgICAgICAgICAgIHBvc3RTZXRO
ZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgICAgICB9IGVsc2UgaWYgKGltcGwtPmZyYW1l
TnVtYmVyKCkgPT0gMikgewogICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0
aW9uKCksIG1fc2Vjb25kU2Nyb2xsKTsKICAgICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zY3Jv
bGxEZWx0YSgpLCBtX3Njcm9sbEFtb3VudCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+
c2VudFNjcm9sbERlbHRhKCksIEludFNpemUoKSk7CiAgICAgICAgICAgICBlbmRUZXN0KCk7CiAg
ICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114980</attachid>
            <date>2011-11-14 10:33:55 -0800</date>
            <delta_ts>2011-11-14 10:36:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71916-20111114183354.patch</filename>
            <type>text/plain</type>
            <size>8646</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNjMDQ0NGVhYmZlODVk
ODE2YzBkNmY5YTJmNWI0ZGNkNjFmZDBjZS4uN2YzZDI1ZDBhYzIzNzIyYzI3YTJiMTJmNWFjMjI1
YWEwNTRjYzUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTExLTE0ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBzY3JvbGwg
ZGVsdGFzIGFyZSBjbGVhcmVkIGR1cmluZyBjb21taXQgdG8gdGhlIG1haW4gdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGlzIGNvdmVy
ZWQgYnkgdW5pdCB0ZXN0LgorCisgICAgICAgIEFkZCBhIG1lbWJlciBtX3NlbnRTY3JvbGxEZWx0
YSB0byBDQ0xheWVySW1wbCB0byBrZWVwIHRyYWNrIG9mIHRoZSBzY3JvbGwgZGVsdGEgYmVpbmcK
KyAgICAgICAgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIGNvbW1pdC4gVGhpcyBnaXZl
cyBhIHNpbXBsZXIgdG8ga2VlcCB0cmFja2luZyBvZiBhCisgICAgICAgIGxheWVyJ3Mgc2Nyb2xs
IGRlbHRhIGluIGltcGwgdGhyZWFkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
c2VudFNjcm9sbERlbHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNlbnRTY3Jv
bGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U2VudFNjcm9sbERl
bHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNv
bW1pdENvbXBsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmNs
ZWFyU2VudFNjcm9sbERlbHRhcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisKIDIwMTEtMTEtMDggIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IE1lZGlhQ29udHJv
bGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZWMzZmY0MTE5ZjdkMTU3YzVhNzk4
YTNiM2I1MTYzNzMwNDYzYzNmZC4uNjhmYzQ3NzdhMTkwOGMwOTExZTc1NDEzODA4MTdhMWRiYThi
OWFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0x
MS0xNCAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gc2Nyb2xsIGRlbHRhcyBhcmUgY2xlYXJlZCBkdXJpbmcgY29tbWl0IHRvIHRoZSBtYWluIHRo
cmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5
MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2Rp
ZnkgdGVzdCB0byB2ZXJpZnkgc2VudFNjcm9sbERlbHRhcygpIHZhbHVlcyBvZiBDQ0xheWVySW1w
bCBkdXJpbmcgY29tbWl0LgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U2Ny
b2xsU2ltcGxlOjpiZWdpbkNvbW1pdE9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0U2Nyb2xsU2ltcGxlOjpkcmF3TGF5ZXJzT25DQ1RocmVhZCk6CisKIDIwMTEt
MTEtMTQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAg
W2Nocm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFsbG93IGZvciBudWxsIFdlYlBlZXJDb25uZWN0
aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBjYTAwYzIzNTI0Zjc3YTYzYjBl
ODU5OGJkODEzZjIwMzZjNjA4NjQ4Li4zNjI5MDhkMGI0ZGYxMjY3YmIyNGZiMzY4YzA4ZDgzZjZk
YTFmMjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtMzAxLDYgKzMwMSw3IEBAIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAg
bGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKG1fc3VibGF5ZXJUcmFuc2Zvcm0pOwogICAgIGxh
eWVyLT5zZXRUcmFuc2Zvcm0obV90cmFuc2Zvcm0pOwogICAgIGxheWVyLT5zZXRVcGRhdGVSZWN0
KG1fdXBkYXRlUmVjdCk7CisgICAgbGF5ZXItPnNldFNlbnRTY3JvbGxEZWx0YShJbnRTaXplKCkp
OwogCiAgICAgaWYgKG1hc2tMYXllcigpKQogICAgICAgICBtYXNrTGF5ZXIoKS0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllci0+bWFza0xheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDc0N2Rj
OTg2OWNmMTBiNjJmMzBlOWJmMDlhZjIyNzk4NjY0ZDM0MjQuLjRiODE3ZGVmMjc4ZjZjMzE1NGQ1
MDg4ZGExOGQwZjY3OGExYzEzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTEzNSw2ICsxMzUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTY3JvbGxhYmxlKGJvb2wgc2Nyb2xsYWJsZSkgeyBt
X3Njcm9sbGFibGUgPSB0cnVlOyAgc2V0TmVlZHNDb21taXQoKTsgfQogCiAgICAgSW50U2l6ZSBz
Y3JvbGxEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQorICAgIEludFNpemUgc2Vu
dFNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAKICAgICBib29sIGRv
dWJsZVNpZGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVTaWRlZDsgfQogICAgIHZvaWQgc2V0
RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkgeyBtX2RvdWJsZVNpZGVkID0gZG91YmxlU2lk
ZWQ7IHNldE5lZWRzQ29tbWl0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGI3MmNhZTEw
ZDkxNzFjZTY3ZGJkYjc0Y2IxNGI1ZTUxNTM1MGFjNjUuLjJiNjA2OTUyM2ZmMzY4MTQzNTE3N2Yz
MTg4MGQxODkxM2Y1MTk5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMTU3LDYgKzE1Nyw5
IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsRGVsdGE7IH0KICAgICB2b2lkIHNldFNjcm9sbERlbHRhKGNvbnN0IEludFNp
emUmKTsKIAorICAgIGNvbnN0IEludFNpemUmIHNlbnRTY3JvbGxEZWx0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc2VudFNjcm9sbERlbHRhOyB9CisgICAgdm9pZCBzZXRTZW50U2Nyb2xsRGVsdGEoY29u
c3QgSW50U2l6ZSYgc2VudFNjcm9sbERlbHRhKSB7IG1fc2VudFNjcm9sbERlbHRhID0gc2VudFNj
cm9sbERlbHRhOyB9CisKICAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmIHNjcm9sbCk7
CiAKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0K
QEAgLTI0MSw2ICsyNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiAK
ICAgICBJbnRTaXplIG1fc2Nyb2xsRGVsdGE7CisgICAgSW50U2l6ZSBtX3NlbnRTY3JvbGxEZWx0
YTsKICAgICBJbnRTaXplIG1fbWF4U2Nyb2xsUG9zaXRpb247CiAKICAgICAvLyBQcm9wZXJ0aWVz
IG93bmVkIGV4Y2x1c2l2ZWx5IGJ5IHRoaXMgQ0NMYXllckltcGwuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDhhY2I1NGJiYzQ1NmNlYTBjMGM0MTZiZWVjMjRl
MDJmYjk3MDY0ZTcuLjQyOTYwMWJkYmM5MGYxZmYwODgyNmMwYTcyNGE3ODVhYmI2Y2YyNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCkBAIC0zNDAsNiArMzQwLDcg
QEAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpw
cm9jZXNzU2Nyb2xsRGVsdGFzKCkKIAogICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRTY3JvbGxQ
b3NpdGlvbihtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5
ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0UG9zaXRp
b24obV9zY3JvbGxMYXllckltcGwtPnBvc2l0aW9uKCkgLSBtX3Njcm9sbExheWVySW1wbC0+c2Ny
b2xsRGVsdGEoKSk7CisgICAgbV9zY3JvbGxMYXllckltcGwtPnNldFNlbnRTY3JvbGxEZWx0YSht
X3Njcm9sbExheWVySW1wbC0+c2VudFNjcm9sbERlbHRhKCkgKyBtX3Njcm9sbExheWVySW1wbC0+
c2Nyb2xsRGVsdGEoKSk7CiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNldFNjcm9sbERlbHRhKElu
dFNpemUoKSk7CiAKICAgICByZXR1cm4gc2Nyb2xsSW5mby5yZWxlYXNlKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCmluZGV4IGY3ODc4NGRlNDg2OTE0NmEzZjczOTRjNTBhNmUzOTkxOWM0NWNiNzkuLmZkNzJm
NjJiYTQwOWZjYzgyZmEwZjVjODAwYzhkZmMwNDA0MjQ1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBA
IC0xMjcsNiArMTI3LDcgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBzY3JvbGxE
ZWx0YVJlcGVhdGVkU2Nyb2xscykKICAgICBzY3JvbGxJbmZvID0gbV9ob3N0SW1wbC0+cHJvY2Vz
c1Njcm9sbERlbHRhcygpOwogICAgIEFTU0VSVF9FUShyb290LT5zY3JvbGxQb3NpdGlvbigpLCBz
Y3JvbGxQb3NpdGlvbiArIHNjcm9sbERlbHRhKTsKICAgICBBU1NFUlRfRVEoc2Nyb2xsSW5mby0+
c2Nyb2xscy5zaXplKCksIDF1KTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+c2VudFNjcm9sbERlbHRh
KCksIHNjcm9sbERlbHRhKTsKICAgICBleHBlY3RDb250YWlucygqc2Nyb2xsSW5mby5nZXQoKSwg
cm9vdC0+aWQoKSwgc2Nyb2xsRGVsdGEpOwogICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNS
ZWN1cnNpdmUocm9vdC5nZXQoKSk7CiAKQEAgLTEzNSw2ICsxMzYsNyBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQogICAgIHNjcm9s
bEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAgICAgQVNTRVJUX0VR
KHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsRGVsdGEgKyBz
Y3JvbGxEZWx0YTIpOwogICAgIEFTU0VSVF9FUShzY3JvbGxJbmZvLT5zY3JvbGxzLnNpemUoKSwg
MXUpOworICAgIEVYUEVDVF9FUShyb290LT5zZW50U2Nyb2xsRGVsdGEoKSwgc2Nyb2xsRGVsdGEg
KyBzY3JvbGxEZWx0YTIpOwogICAgIGV4cGVjdENvbnRhaW5zKCpzY3JvbGxJbmZvLmdldCgpLCBy
b290LT5pZCgpLCBzY3JvbGxEZWx0YTIpOwogICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNS
ZWN1cnNpdmUocm9vdC5nZXQoKSk7CiAKQEAgLTE0Miw2ICsxNDQsNyBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQogICAgIHNjcm9s
bEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAgICAgQVNTRVJUX0VR
KHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsRGVsdGEgKyBz
Y3JvbGxEZWx0YTIpOwogICAgIEFTU0VSVF9FUShzY3JvbGxJbmZvLT5zY3JvbGxzLnNpemUoKSwg
MHUpOworICAgIEVYUEVDVF9FUShyb290LT5zZW50U2Nyb2xsRGVsdGEoKSwgc2Nyb2xsRGVsdGEg
KyBzY3JvbGxEZWx0YTIpOwogICAgIGV4cGVjdENsZWFyZWRTY3JvbGxEZWx0YXNSZWN1cnNpdmUo
cm9vdC5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGQ1ZjFhZDUyZGIyMGQ4ZTJmNDMyYzgxY2Jj
ZTVjNDI5N2JhMmZjOGEuLmEzNWNiMWIzYzk1MWEyZWU5MmQ2OGUyOWZjZWIzMTBlN2M0ZjFmOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcApAQCAtNjY1LDYgKzY2NSw5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFBy
ZXRlbmQgbGlrZSBKYXZhc2NyaXB0IHVwZGF0ZWQgdGhlIHNjcm9sbCBwb3NpdGlvbiBpdHNlbGYu
CiAgICAgICAgICAgICByb290LT5zZXRTY3JvbGxQb3NpdGlvbihtX3NlY29uZFNjcm9sbCk7CiAg
ICAgICAgIH0KKworICAgICAgICBpZiAobV9sYXllclRyZWVIb3N0LT5mcmFtZU51bWJlcigpID09
IDIpCisgICAgICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2VudFNjcm9sbERlbHRhKCksIG1fc2Ny
b2xsQW1vdW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKQEAgLTY3OSwxMCArNjgyLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKGltcGwtPmZyYW1lTnVtYmVyKCkgPT0gMSkgewogICAgICAgICAgICAg
RVhQRUNUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIG1faW5pdGlhbFNjcm9sbCk7CiAgICAg
ICAgICAgICBFWFBFQ1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxBbW91bnQpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKHJvb3QtPnNlbnRTY3JvbGxEZWx0YSgpLCBJbnRTaXplKCkp
OwogICAgICAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAyKSB7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9zZWNvbmRTY3JvbGwpOwogICAgICAgICAg
ICAgRVhQRUNUX0VRKHJvb3QtPnNjcm9sbERlbHRhKCksIG1fc2Nyb2xsQW1vdW50KTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShyb290LT5zZW50U2Nyb2xsRGVsdGEoKSwgSW50U2l6ZSgpKTsKICAg
ICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgfQogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114982</attachid>
            <date>2011-11-14 10:36:33 -0800</date>
            <delta_ts>2011-11-14 12:34:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71916-20111114183631.patch</filename>
            <type>text/plain</type>
            <size>8525</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNjMDQ0NGVhYmZlODVk
ODE2YzBkNmY5YTJmNWI0ZGNkNjFmZDBjZS4uZjJiNmI3OThkOWFiZTFkNDM1ZjcxN2VjNTViODdl
YzY5MDZlYTViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTE0ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBzY3JvbGwg
ZGVsdGFzIGFyZSBjbGVhcmVkIGR1cmluZyBjb21taXQgdG8gdGhlIG1haW4gdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGlzIGNvdmVy
ZWQgYnkgdW5pdCB0ZXN0LgorCisgICAgICAgIEFkZCBhIG1lbWJlciBtX3NlbnRTY3JvbGxEZWx0
YSB0byBDQ0xheWVySW1wbCB0byBrZWVwIHRyYWNrIG9mIHRoZSBzY3JvbGwgZGVsdGEgYmVpbmcK
KyAgICAgICAgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIGNvbW1pdC4gVGhpcyBnaXZl
cyBhIHNpbXBsZXIgdG8ga2VlcCB0cmFja2luZyBvZiBhCisgICAgICAgIGxheWVyJ3Mgc2Nyb2xs
IGRlbHRhIGluIGltcGwgdGhyZWFkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6
c2VudFNjcm9sbERlbHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNlbnRTY3Jv
bGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U2VudFNjcm9sbERl
bHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnBy
b2Nlc3NTY3JvbGxEZWx0YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKwogMjAxMS0xMS0wOCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250cm9sbGVyLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlYzNmZjQxMTlmN2QxNTdjNWE3OThhM2IzYjUx
NjM3MzA0NjNjM2ZkLi42OGZjNDc3N2ExOTA4YzA5MTFlNzU0MTM4MDgxN2ExZGJhOGI5YWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTExLTE0ICBB
bHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBzY3Jv
bGwgZGVsdGFzIGFyZSBjbGVhcmVkIGR1cmluZyBjb21taXQgdG8gdGhlIG1haW4gdGhyZWFkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkxNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vZGlmeSB0ZXN0
IHRvIHZlcmlmeSBzZW50U2Nyb2xsRGVsdGFzKCkgdmFsdWVzIG9mIENDTGF5ZXJJbXBsIGR1cmlu
ZyBjb21taXQuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVI
b3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxTaW1w
bGU6OmJlZ2luQ29tbWl0T25DQ1RocmVhZCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9z
dFRlc3RTY3JvbGxTaW1wbGU6OmRyYXdMYXllcnNPbkNDVGhyZWFkKToKKwogMjAxMS0xMS0xNCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21p
dW1dIE1lZGlhU3RyZWFtIEFQSTogQWxsb3cgZm9yIG51bGwgV2ViUGVlckNvbm5lY3Rpb25IYW5k
bGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGNhMDBjMjM1MjRmNzdhNjNiMGU4NTk4YmQ4
MTNmMjAzNmM2MDg2NDguLjM2MjkwOGQwYjRkZjEyNjdiYjI0ZmIzNjhjMDhkODNmNmRhMWYyM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC0zMDEsNiArMzAxLDcgQEAgdm9pZCBMYXllckNo
cm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKICAgICBsYXllci0+
c2V0U3VibGF5ZXJUcmFuc2Zvcm0obV9zdWJsYXllclRyYW5zZm9ybSk7CiAgICAgbGF5ZXItPnNl
dFRyYW5zZm9ybShtX3RyYW5zZm9ybSk7CiAgICAgbGF5ZXItPnNldFVwZGF0ZVJlY3QobV91cGRh
dGVSZWN0KTsKKyAgICBsYXllci0+c2V0U2VudFNjcm9sbERlbHRhKEludFNpemUoKSk7CiAKICAg
ICBpZiAobWFza0xheWVyKCkpCiAgICAgICAgIG1hc2tMYXllcigpLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVyLT5tYXNrTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzQ3ZGM5ODY5Y2Yx
MGI2MmYzMGU5YmYwOWFmMjI3OTg2NjRkMzQyNC4uNGI4MTdkZWYyNzhmNmMzMTU0ZDUwODhkYTE4
ZDBmNjc4YTFjMTMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTM1LDYgKzEzNSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKSB7IG1fc2Nyb2xs
YWJsZSA9IHRydWU7ICBzZXROZWVkc0NvbW1pdCgpOyB9CiAKICAgICBJbnRTaXplIHNjcm9sbERl
bHRhKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CisgICAgSW50U2l6ZSBzZW50U2Nyb2xs
RGVsdGEoKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0KIAogICAgIGJvb2wgZG91YmxlU2lk
ZWQoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZVNpZGVkOyB9CiAgICAgdm9pZCBzZXREb3VibGVT
aWRlZChib29sIGRvdWJsZVNpZGVkKSB7IG1fZG91YmxlU2lkZWQgPSBkb3VibGVTaWRlZDsgc2V0
TmVlZHNDb21taXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggYjcyY2FlMTBkOTE3MWNl
NjdkYmRiNzRjYjE0YjVlNTE1MzUwYWM2NS4uMmI2MDY5NTIzZmYzNjgxNDM1MTc3ZjMxODgwZDE4
OTEzZjUxOTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xNTcsNiArMTU3LDkgQEAgcHVi
bGljOgogICAgIGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxEZWx0YTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYpOwog
CisgICAgY29uc3QgSW50U2l6ZSYgc2VudFNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9z
ZW50U2Nyb2xsRGVsdGE7IH0KKyAgICB2b2lkIHNldFNlbnRTY3JvbGxEZWx0YShjb25zdCBJbnRT
aXplJiBzZW50U2Nyb2xsRGVsdGEpIHsgbV9zZW50U2Nyb2xsRGVsdGEgPSBzZW50U2Nyb2xsRGVs
dGE7IH0KKwogICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsKTsKIAogICAg
IGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZTsgfQpAQCAtMjQx
LDYgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RyYXdzQ29udGVudDsKIAogICAgIElu
dFNpemUgbV9zY3JvbGxEZWx0YTsKKyAgICBJbnRTaXplIG1fc2VudFNjcm9sbERlbHRhOwogICAg
IEludFNpemUgbV9tYXhTY3JvbGxQb3NpdGlvbjsKIAogICAgIC8vIFByb3BlcnRpZXMgb3duZWQg
ZXhjbHVzaXZlbHkgYnkgdGhpcyBDQ0xheWVySW1wbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggOGFjYjU0YmJjNDU2Y2VhMGMwYzQxNmJlZWMyNGUwMmZiOTcw
NjRlNy4uNDI5NjAxYmRiYzkwZjFmZjA4ODI2YzBhNzI0YTc4NWFiYjZjZjI0MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTM0MCw2ICszNDAsNyBAQCBQYXNz
T3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NT
Y3JvbGxEZWx0YXMoKQogCiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNldFNjcm9sbFBvc2l0aW9u
KG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwt
PnNjcm9sbERlbHRhKCkpOwogICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRQb3NpdGlvbihtX3Nj
cm9sbExheWVySW1wbC0+cG9zaXRpb24oKSAtIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0
YSgpKTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2VudFNjcm9sbERlbHRhKG1fc2Nyb2xs
TGF5ZXJJbXBsLT5zZW50U2Nyb2xsRGVsdGEoKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxE
ZWx0YSgpKTsKICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2Nyb2xsRGVsdGEoSW50U2l6ZSgp
KTsKIAogICAgIHJldHVybiBzY3JvbGxJbmZvLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5k
ZXggZjc4Nzg0ZGU0ODY5MTQ2YTNmNzM5NGM1MGE2ZTM5OTE5YzQ1Y2I3OS4uZmQ3MmY2MmJhNDA5
ZmNjODJmYTBmNWM4MDBjOGRmYzA0MDQyNDUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEyNyw2
ICsxMjcsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHNjcm9sbERlbHRhUmVw
ZWF0ZWRTY3JvbGxzKQogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJbXBsLT5wcm9jZXNzU2Nyb2xs
RGVsdGFzKCk7CiAgICAgQVNTRVJUX0VRKHJvb3QtPnNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbFBv
c2l0aW9uICsgc2Nyb2xsRGVsdGEpOwogICAgIEFTU0VSVF9FUShzY3JvbGxJbmZvLT5zY3JvbGxz
LnNpemUoKSwgMXUpOworICAgIEVYUEVDVF9FUShyb290LT5zZW50U2Nyb2xsRGVsdGEoKSwgc2Ny
b2xsRGVsdGEpOwogICAgIGV4cGVjdENvbnRhaW5zKCpzY3JvbGxJbmZvLmdldCgpLCByb290LT5p
ZCgpLCBzY3JvbGxEZWx0YSk7CiAgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2
ZShyb290LmdldCgpKTsKIApAQCAtMTM1LDYgKzEzNiw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFSZXBlYXRlZFNjcm9sbHMpCiAgICAgc2Nyb2xsSW5mbyA9
IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKICAgICBBU1NFUlRfRVEocm9vdC0+
c2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxEZWx0YSArIHNjcm9sbERl
bHRhMik7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAxdSk7Cisg
ICAgRVhQRUNUX0VRKHJvb3QtPnNlbnRTY3JvbGxEZWx0YSgpLCBzY3JvbGxEZWx0YSArIHNjcm9s
bERlbHRhMik7CiAgICAgZXhwZWN0Q29udGFpbnMoKnNjcm9sbEluZm8uZ2V0KCksIHJvb3QtPmlk
KCksIHNjcm9sbERlbHRhMik7CiAgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2
ZShyb290LmdldCgpKTsKIApAQCAtMTQyLDYgKzE0NCw3IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdCwgc2Nyb2xsRGVsdGFSZXBlYXRlZFNjcm9sbHMpCiAgICAgc2Nyb2xsSW5mbyA9
IG1faG9zdEltcGwtPnByb2Nlc3NTY3JvbGxEZWx0YXMoKTsKICAgICBBU1NFUlRfRVEocm9vdC0+
c2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxEZWx0YSArIHNjcm9sbERl
bHRhMik7CiAgICAgQVNTRVJUX0VRKHNjcm9sbEluZm8tPnNjcm9sbHMuc2l6ZSgpLCAwdSk7Cisg
ICAgRVhQRUNUX0VRKHJvb3QtPnNlbnRTY3JvbGxEZWx0YSgpLCBzY3JvbGxEZWx0YSArIHNjcm9s
bERlbHRhMik7CiAgICAgZXhwZWN0Q2xlYXJlZFNjcm9sbERlbHRhc1JlY3Vyc2l2ZShyb290Lmdl
dCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKaW5kZXggZDVmMWFkNTJkYjIwZDhlMmY0MzJjODFjYmNlNWM0Mjk3
YmEyZmM4YS4uYTM1Y2IxYjNjOTUxYTJlZTkyZDY4ZTI5ZmNlYjMxMGU3YzRmMWY5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3Qu
Y3BwCkBAIC02NjUsNiArNjY1LDkgQEAgcHVibGljOgogICAgICAgICAgICAgLy8gUHJldGVuZCBs
aWtlIEphdmFzY3JpcHQgdXBkYXRlZCB0aGUgc2Nyb2xsIHBvc2l0aW9uIGl0c2VsZi4KICAgICAg
ICAgICAgIHJvb3QtPnNldFNjcm9sbFBvc2l0aW9uKG1fc2Vjb25kU2Nyb2xsKTsKICAgICAgICAg
fQorCisgICAgICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkgPT0gMikKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShyb290LT5zZW50U2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxBbW91
bnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBpbXBsKQpAQCAtNjc5LDEwICs2ODIsMTIgQEAgcHVibGljOgogICAg
ICAgICBpZiAoaW1wbC0+ZnJhbWVOdW1iZXIoKSA9PSAxKSB7CiAgICAgICAgICAgICBFWFBFQ1Rf
RVEocm9vdC0+c2Nyb2xsUG9zaXRpb24oKSwgbV9pbml0aWFsU2Nyb2xsKTsKICAgICAgICAgICAg
IEVYUEVDVF9FUShyb290LT5zY3JvbGxEZWx0YSgpLCBtX3Njcm9sbEFtb3VudCk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEocm9vdC0+c2VudFNjcm9sbERlbHRhKCksIEludFNpemUoKSk7CiAgICAg
ICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKICAgICAgICAgfSBlbHNl
IGlmIChpbXBsLT5mcmFtZU51bWJlcigpID09IDIpIHsKICAgICAgICAgICAgIEVYUEVDVF9FUShy
b290LT5zY3JvbGxQb3NpdGlvbigpLCBtX3NlY29uZFNjcm9sbCk7CiAgICAgICAgICAgICBFWFBF
Q1RfRVEocm9vdC0+c2Nyb2xsRGVsdGEoKSwgbV9zY3JvbGxBbW91bnQpOworICAgICAgICAgICAg
RVhQRUNUX0VRKHJvb3QtPnNlbnRTY3JvbGxEZWx0YSgpLCBJbnRTaXplKCkpOwogICAgICAgICAg
ICAgZW5kVGVzdCgpOwogICAgICAgICB9CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115007</attachid>
            <date>2011-11-14 12:32:49 -0800</date>
            <delta_ts>2011-11-15 02:52:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71916-20111114203247.patch</filename>
            <type>text/plain</type>
            <size>5450</size>
            <attacher name="Hin-Chung Lam">hclam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNjMDQ0NGVhYmZlODVk
ODE2YzBkNmY5YTJmNWI0ZGNkNjFmZDBjZS4uYjZjYzc2ZTc1YTNhM2RkYjY1ZTM1ZjdlYjM3MDgw
ZjA3NWI1YTRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTExLTE0ICBBbHBo
YSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBzY3JvbGwg
ZGVsdGFzIGFyZSBjbGVhcmVkIGR1cmluZyBjb21taXQgdG8gdGhlIG1haW4gdGhyZWFkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkxNgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdGNoIGlzIGNvdmVy
ZWQgYnkgdW5pdCB0ZXN0LgorCisgICAgICAgIEFkZCBhIG1lbWJlciBtX3NlbnRTY3JvbGxEZWx0
YSB0byBDQ0xheWVySW1wbCB0byBrZWVwIHRyYWNrIG9mIHRoZSBzY3JvbGwgZGVsdGEgYmVpbmcK
KyAgICAgICAgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIGNvbW1pdC4gVGhpcyBnaXZl
cyBhIHNpbXBsZXIgYXBwcm9hY2ggdG8ga2VlcCB0cmFja2luZyBvZiBhCisgICAgICAgIGxheWVy
J3Mgc2Nyb2xsIGRlbHRhIGluIGltcGwgdGhyZWFkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aHJvbWl1bTo6c2VudFNjcm9sbERlbHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6
OnNlbnRTY3JvbGxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U2Vu
dFNjcm9sbERlbHRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKwogMjAxMS0xMS0wOCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgTWVkaWFDb250
cm9sbGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBlYzNmZjQxMTlmN2QxNTdjNWE3
OThhM2IzYjUxNjM3MzA0NjNjM2ZkLi5mZDVkMmQ5NjUyODVjOWQ4MTZlOTIyNmE0NzkwNWJiZGRl
ZjE4Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEx
LTExLTE0ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9t
aXVtXSBzY3JvbGwgZGVsdGFzIGFyZSBjbGVhcmVkIGR1cmluZyBjb21taXQgdG8gdGhlIG1haW4g
dGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTkxNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
ZGlmeSB0ZXN0IHRvIHZlcmlmeSBzZW50U2Nyb2xsRGVsdGFzKCkgdmFsdWVzIG9mIENDTGF5ZXJJ
bXBsIGR1cmluZyBjb21taXQuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTEtMTEtMTQgIFRvbW15
IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBN
ZWRpYVN0cmVhbSBBUEk6IEFsbG93IGZvciBudWxsIFdlYlBlZXJDb25uZWN0aW9uSGFuZGxlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmNwcAppbmRleCBjYTAwYzIzNTI0Zjc3YTYzYjBlODU5OGJkODEzZjIw
MzZjNjA4NjQ4Li4zNjI5MDhkMGI0ZGYxMjY3YmIyNGZiMzY4YzA4ZDgzZjZkYTFmMjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmNwcApAQCAtMzAxLDYgKzMwMSw3IEBAIHZvaWQgTGF5ZXJDaHJvbWl1
bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiAgICAgbGF5ZXItPnNldFN1
YmxheWVyVHJhbnNmb3JtKG1fc3VibGF5ZXJUcmFuc2Zvcm0pOwogICAgIGxheWVyLT5zZXRUcmFu
c2Zvcm0obV90cmFuc2Zvcm0pOwogICAgIGxheWVyLT5zZXRVcGRhdGVSZWN0KG1fdXBkYXRlUmVj
dCk7CisgICAgbGF5ZXItPnNldFNlbnRTY3JvbGxEZWx0YShJbnRTaXplKCkpOwogCiAgICAgaWYg
KG1hc2tMYXllcigpKQogICAgICAgICBtYXNrTGF5ZXIoKS0+cHVzaFByb3BlcnRpZXNUbyhsYXll
ci0+bWFza0xheWVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggYjcyY2FlMTBkOTE3MWNl
NjdkYmRiNzRjYjE0YjVlNTE1MzUwYWM2NS4uMmI2MDY5NTIzZmYzNjgxNDM1MTc3ZjMxODgwZDE4
OTEzZjUxOTkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0xNTcsNiArMTU3LDkgQEAgcHVi
bGljOgogICAgIGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxEZWx0YTsgfQogICAgIHZvaWQgc2V0U2Nyb2xsRGVsdGEoY29uc3QgSW50U2l6ZSYpOwog
CisgICAgY29uc3QgSW50U2l6ZSYgc2VudFNjcm9sbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9z
ZW50U2Nyb2xsRGVsdGE7IH0KKyAgICB2b2lkIHNldFNlbnRTY3JvbGxEZWx0YShjb25zdCBJbnRT
aXplJiBzZW50U2Nyb2xsRGVsdGEpIHsgbV9zZW50U2Nyb2xsRGVsdGEgPSBzZW50U2Nyb2xsRGVs
dGE7IH0KKwogICAgIHZvaWQgc2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgc2Nyb2xsKTsKIAogICAg
IGJvb2wgc2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZTsgfQpAQCAtMjQx
LDYgKzI0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RyYXdzQ29udGVudDsKIAogICAgIElu
dFNpemUgbV9zY3JvbGxEZWx0YTsKKyAgICBJbnRTaXplIG1fc2VudFNjcm9sbERlbHRhOwogICAg
IEludFNpemUgbV9tYXhTY3JvbGxQb3NpdGlvbjsKIAogICAgIC8vIFByb3BlcnRpZXMgb3duZWQg
ZXhjbHVzaXZlbHkgYnkgdGhpcyBDQ0xheWVySW1wbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKaW5kZXggOGFjYjU0YmJjNDU2Y2VhMGMwYzQxNmJlZWMyNGUwMmZiOTcw
NjRlNy4uY2QxZDE1Yzc4NmUxNDVhMTg0M2UzYjllNDU0ZDJjYzJjNDcwMGQ1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTM0MCw2ICszNDAsNyBAQCBQYXNz
T3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NT
Y3JvbGxEZWx0YXMoKQogCiAgICAgbV9zY3JvbGxMYXllckltcGwtPnNldFNjcm9sbFBvc2l0aW9u
KG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwt
PnNjcm9sbERlbHRhKCkpOwogICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zZXRQb3NpdGlvbihtX3Nj
cm9sbExheWVySW1wbC0+cG9zaXRpb24oKSAtIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0
YSgpKTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2VudFNjcm9sbERlbHRhKG1fc2Nyb2xs
TGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKICAgICBtX3Njcm9sbExheWVySW1wbC0+c2V0U2Ny
b2xsRGVsdGEoSW50U2l6ZSgpKTsKIAogICAgIHJldHVybiBzY3JvbGxJbmZvLnJlbGVhc2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKaW5kZXggZjc4Nzg0ZGU0ODY5MTQ2YTNmNzM5NGM1MGE2ZTM5OTE5YzQ1
Y2I3OS4uNDQ4MTNlNTcwOWJmMmQxNWI2ZDE1MzNhOWI1MmU1NmMyOWNkZWRiNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKQEAgLTEyNyw2ICsxMjcsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRl
c3QsIHNjcm9sbERlbHRhUmVwZWF0ZWRTY3JvbGxzKQogICAgIHNjcm9sbEluZm8gPSBtX2hvc3RJ
bXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAgICAgQVNTRVJUX0VRKHJvb3QtPnNjcm9sbFBv
c2l0aW9uKCksIHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsRGVsdGEpOwogICAgIEFTU0VSVF9FUShz
Y3JvbGxJbmZvLT5zY3JvbGxzLnNpemUoKSwgMXUpOworICAgIEVYUEVDVF9FUShyb290LT5zZW50
U2Nyb2xsRGVsdGEoKSwgc2Nyb2xsRGVsdGEpOwogICAgIGV4cGVjdENvbnRhaW5zKCpzY3JvbGxJ
bmZvLmdldCgpLCByb290LT5pZCgpLCBzY3JvbGxEZWx0YSk7CiAgICAgZXhwZWN0Q2xlYXJlZFNj
cm9sbERlbHRhc1JlY3Vyc2l2ZShyb290LmdldCgpKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>