<?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>32846</bug_id>
          
          <creation_ts>2009-12-21 19:00:03 -0800</creation_ts>
          <short_desc>Timeline Panel timings are polluted by DOM Mutation events (which force inline Style Recalculations)</short_desc>
          <delta_ts>2010-05-08 12:07:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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>jaimeyap</reporter>
          <assigned_to name="Kelly Norton">knorton</assigned_to>
          <cc>abarth</cc>
    
    <cc>adeveria</cc>
    
    <cc>dglazkov</cc>
    
    <cc>jamesr</cc>
    
    <cc>knorton</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>174154</commentid>
    <comment_count>0</comment_count>
    <who name="">jaimeyap</who>
    <bug_when>2009-12-21 19:00:03 -0800</bug_when>
    <thetext>When inspecting a page, the InspectorController binds the DOMAgent, which from my understanding registers DOM mutation event listener. This causes DOM Mutation Events to fire for every DOM mutation (innerHTML parsing, dom node appends, document fragment appends, etc...).

This gets compounded by the fact that whenever a JS event handler for a DOM event is fired at a document context a call to Document::updateStyleForAllDocuments() is made. Thus firing DOM Mutation events repeatedly forces styles to be up to date inline with each mutation instead of getting deferred.

see https://bugs.webkit.org/show_bug.cgi?id=32580 which is Jamesr&apos;s pending attempt to address the inline recalculation of styles.

But a proper fix would be to somehow disable DOMMutation event dispatches when the timeline agent is recording.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174155</commentid>
    <comment_count>1</comment_count>
    <who name="">jaimeyap</who>
    <bug_when>2009-12-21 19:02:44 -0800</bug_when>
    <thetext>Essentially, timing information on the timeline panel can be totally incorrect for certain traces.

(In reply to comment #0)
&gt; When inspecting a page, the InspectorController binds the DOMAgent, which from
&gt; my understanding registers DOM mutation event listener. This causes DOM
&gt; Mutation Events to fire for every DOM mutation (innerHTML parsing, dom node
&gt; appends, document fragment appends, etc...).
&gt; 
&gt; This gets compounded by the fact that whenever a JS event handler for a DOM
&gt; event is fired at a document context a call to
&gt; Document::updateStyleForAllDocuments() is made. Thus firing DOM Mutation events
&gt; repeatedly forces styles to be up to date inline with each mutation instead of
&gt; getting deferred.
&gt; 
&gt; see https://bugs.webkit.org/show_bug.cgi?id=32580 which is Jamesr&apos;s pending
&gt; attempt to address the inline recalculation of styles.
&gt; 
&gt; But a proper fix would be to somehow disable DOMMutation event dispatches when
&gt; the timeline agent is recording.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174160</commentid>
    <comment_count>2</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-12-21 20:01:08 -0800</bug_when>
    <thetext>We could not use mutation events and hard-wire InspectorController to be notified when things mutate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174199</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-21 23:34:17 -0800</bug_when>
    <thetext>We can temporarily disable DOMAgent, visually disable Elements panel as a whole while timeline is running. Once it has completed, we can re-push DOM tree and restore elements tree selection. Seems to be fairly straightforward and local change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174202</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-12-21 23:43:18 -0800</bug_when>
    <thetext>Unregistering the DOM mutation event listeners won&apos;t change anything - setting them sets bits on the Document&apos;s m_listenerTypes bitset which causes the mutation events to fire.  See http://trac.webkit.org/browser/trunk/WebCore/dom/Document.h#L616. These bits are never cleared, so the event dispatch code will still run (including the style match) even if the DOM panel is disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174205</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-21 23:56:58 -0800</bug_when>
    <thetext>Isn&apos;t it something we should fix anyways? Like putting counters for all the types does not sound like a huge overhead. Especially given the way addListenerType is dispatched: http://www.google.com/codesearch/p?hl=en#N6Qhr5kJSgQ/WebCore/dom/Document.cpp&amp;q=addListenerTypeIfNeeded&amp;sa=N&amp;cd=1&amp;ct=rc&amp;l=2791</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174206</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2009-12-21 23:59:54 -0800</bug_when>
    <thetext>Yes, most likely that can be fixed as well.  But that&apos;s a larger, trickier issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174211</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-12-22 00:18:46 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Yes, most likely that can be fixed as well.  But that&apos;s a larger, trickier
&gt; issue.

So we have two options:

1) Mute elements panel, implement removeListenerType.

- Adding removeListenerType sounds straightforward to me - I can only see addListenerType invoked in two places: DOMWindow and Node. Both have symmetric remove placeholders. Seems like a good thing in general, but I know that people do not remove listeners, so we are not likely to gain much WebCore performance gain out of it.
- Muting dom panel is an extra effort that will complicated ui and I&apos;d like to avoid it if possible.

2) Push dom events explicitly into inspector controller.

DOMNodeInsertedEvent, DOMNodeRemovedEvent, DOMAttrModifiedEvent, DOMContentLoadedEvent and loadEvent should be pushed into InspectorController for all the documents on the page. InspectorController should then decide whether it needs them or not.
This approach is interesting for two reasons: 
- we can get these events for detached subtrees.
- we could get Attr events as a side effect

Tim, are you supporting (2)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>174290</commentid>
    <comment_count>8</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-12-22 10:31:01 -0800</bug_when>
    <thetext>I suppoert 2, mainly for Attr mutations and muting the Elements panel is weird to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177830</commentid>
    <comment_count>9</comment_count>
      <attachid>46006</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2010-01-06 16:01:58 -0800</bug_when>
    <thetext>Created attachment 46006
Removes DOM mutation listeners and adds direct calls to inspector.

Couple of notes about this patch:

(1) It leaves the listeners for load and DOMContentLoaded as they were in InspectorDOMAgent. There really is no need to remove these listeners as they don&apos;t interfere like mutation events do.

(2) Attr mutations are now pushed into the front-end, but the front-end doesn&apos;t have events setup to update the ElementPanel when attributes are mutated. I did not fix this yet. I figured I would just do it after this one goes in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177835</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 16:06:25 -0800</bug_when>
    <thetext>Attachment 46006 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/inspector/InspectorDOMAgent.cpp:661:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177842</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-06 16:14:42 -0800</bug_when>
    <thetext>Attachment 46006 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/164985</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177843</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-06 16:15:17 -0800</bug_when>
    <thetext>This should be one line:

InspectorController* inspectorController = page-&gt;inspectorController();
if (inspectorController)
    ....


Also, could you run dromaeo DOM bench with and without this patch (with the
inspector off) just to make sure that walking up through the page and inspector
pointers doesn&apos;t slow anything down?  This codepath is super duper hot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178041</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-01-07 00:04:43 -0800</bug_when>
    <thetext>&gt; Also, could you run dromaeo DOM bench with and without this patch (with the
&gt; inspector off) just to make sure that walking up through the page and inspector
&gt; pointers doesn&apos;t slow anything down?  This codepath is super duper hot.

Yes, we need to make sure we don&apos;t regress performance here. We actually need something similar for instrumentation of selected bindings in timeline. Should we add a static counter (counters) in InspectorController that would track whether there in a dom agent / timeline agent interested in the information?

Also, feel free to surround attr mutation event with &quot;if 0&quot; in dom agent code - it has never been getting control prior to your change (or give it some testing and leave it enabled). Otherwise, patch looks fine!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178196</commentid>
    <comment_count>14</comment_count>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2010-01-07 09:00:15 -0800</bug_when>
    <thetext>Performance differences on dromaeo seem insignificant (indistinguishable from noise):

r52875 + patch
http://dromaeo.com/?id=85056
http://dromaeo.com/?id=85058

r52875 (no changes)
http://dromaeo.com/?id=85060
http://dromaeo.com/?id=85062

Pavel, I confirmed that the call to updateAttributes causes no problems (as in no exceptions in the Inspector). It actually updates the list of attributes for a Node appropriately, it&apos;s just that there isn&apos;t an event to cause the ElementsPanel to update.


I&apos;ll fix the style issue and see what&apos;s the deal is on Chromium and submit an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178356</commentid>
    <comment_count>15</comment_count>
      <attachid>46083</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2010-01-07 13:31:22 -0800</bug_when>
    <thetext>Created attachment 46083
Patch fixes style issues.

I fixed the style issues, but I&apos;m unable to reproduce the Chromium build break. (Is that bot dependable?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178361</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 13:35:25 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46083 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178380</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 14:22:16 -0800</bug_when>
    <thetext>Attachment 46083 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/166566</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178381</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-07 14:25:31 -0800</bug_when>
    <thetext>&gt; I fixed the style issues, but I&apos;m unable to reproduce the Chromium build break.
&gt; (Is that bot dependable?)

It builds release.  Maybe it&apos;s a release / debug issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178384</commentid>
    <comment_count>19</comment_count>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2010-01-07 14:31:52 -0800</bug_when>
    <thetext>I think I found the issue. I&apos;m not going to say it was my fault ... but it certainly wasn&apos;t the bot&apos;s fault. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178388</commentid>
    <comment_count>20</comment_count>
      <attachid>46088</attachid>
    <who name="Kelly Norton">knorton</who>
    <bug_when>2010-01-07 14:37:20 -0800</bug_when>
    <thetext>Created attachment 46088
Fixes the chromium build issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178390</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-07 14:42:38 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 46088 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179438</commentid>
    <comment_count>22</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-01-11 11:17:45 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/53080</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222922</commentid>
    <comment_count>23</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-05-08 12:07:40 -0700</bug_when>
    <thetext>*** Bug 38751 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46006</attachid>
            <date>2010-01-06 16:01:58 -0800</date>
            <delta_ts>2010-01-07 13:31:22 -0800</delta_ts>
            <desc>Removes DOM mutation listeners and adds direct calls to inspector.</desc>
            <filename>Issue32846.diff</filename>
            <type>text/plain</type>
            <size>12421</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
N2Y2NzJiYi4uY2NmMGE5YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMS0wNiAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeGVzIHRoZSBmYWN0IHRoYXQgdGltZWxpbmUgcGFuZWwgcmVzdWx0
cyBhcmUgc2tld2VkIGJ5IHRoZSB1c2Ugb2YgRE9NIG11dGF0aW9uIGV2ZW50cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODQ2CisKKyAgICAgICAg
SW5zdGVhZCBvZiB1c2luZyBET00gbXV0YXRpb24gZXZlbnRzIGluIEluc3BlY3RvckRPTUFnZW50
LCBJbnNwZWN0b3JDb250cm9sbGVyIGlzIG5vdyBjYWxsZWQKKyAgICAgICAgZGlyZWN0bHkgd2hl
biB0aGUgRE9NIGlzIG11dGF0ZWQuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6
IENhbGxzIEluc3BlY3RvckNvbnRyb2xsZXIgZGlyZWN0bHkgd2hlbiBjaGlsZCBub2RlcyBhcmUg
YWRkZWQvcmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJbnNlcnRpb25F
dmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogQ2FsbHMgSW5zcGVjdG9yQ29udHJvbGxlciBkaXJl
Y3RseSB3aGVuIGF0dHJpYnV0ZXMgYXJlIGFkZGVkL3JlbW92ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpkaXNwYXRjaEF0dHJSZW1vdmFsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6ZGlzcGF0Y2hBdHRyQWRkaXRpb25FdmVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdGFydExpc3Rlbmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3RvcExpc3RlbmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorCiAyMDEwLTAxLTA2ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBNYWMgYnVpbGQuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuY3BwCmluZGV4IDVjZDA3ODEuLjA5OGFkNjYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKICNpbmNsdWRlICJJbmxpbmVUZXh0Qm94LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKQEAgLTg2OSw2ICs4NzAsMTQgQEAgc3RhdGlj
IHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlKiBjaGlsZCkKIHsKICAgICBB
U1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CiAKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIGlmIChQYWdlKiBwYWdlID0gY2hpbGQtPmRvY3VtZW50KCktPnBhZ2UoKSkgeworICAg
ICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpOworICAgICAgICBpZiAoaW5zcGVjdG9yQ29udHJvbGxlcikKKyAg
ICAgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZEluc2VydERPTU5vZGUoY2hpbGQpOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgUmVmUHRyPE5vZGU+IGMgPSBjaGlsZDsKICAgICBSZWZQdHI8
RG9jdW1lbnQ+IGRvY3VtZW50ID0gY2hpbGQtPmRvY3VtZW50KCk7CiAKQEAgLTg5MSw2ICs5MDAs
MTQgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cyhOb2RlKiBjaGls
ZCkKIAogc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMoTm9kZSogY2hpbGQp
CiB7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikgICAgCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjaGls
ZC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CisgICAgICAg
IGlmIChpbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxl
ci0+ZGlkUmVtb3ZlRE9NTm9kZShjaGlsZCk7CisgICAgfQorI2VuZGlmCisKICAgICBSZWZQdHI8
Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+
ZG9jdW1lbnQoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA5ZWJkMzI4Li5lYjQ5MmVlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJv
bGxlci5oIgogI2luY2x1ZGUgIk5hbWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIk5vZGVMaXN0Lmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCkBAIC0xMDA1LDYgKzEwMDYsMTUgQEAgdm9p
ZCBFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogdm9pZCBFbGVtZW50OjpkaXNwYXRj
aEF0dHJSZW1vdmFsRXZlbnQoQXR0cmlidXRlKikKIHsKICAgICBBU1NFUlQoIWV2ZW50RGlzcGF0
Y2hGb3JiaWRkZW4oKSk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChQYWdlKiBw
YWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICBJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpOworICAgICAg
aWYgKGluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxlci0+
ZGlkTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIDAKICAgICBpZiAo
IWRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQVRUUk1PRElGSUVEX0xJ
U1RFTkVSKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTAxNyw2ICsxMDI3LDE1IEBAIHZvaWQgRWxl
bWVudDo6ZGlzcGF0Y2hBdHRyUmVtb3ZhbEV2ZW50KEF0dHJpYnV0ZSopCiB2b2lkIEVsZW1lbnQ6
OmRpc3BhdGNoQXR0ckFkZGl0aW9uRXZlbnQoQXR0cmlidXRlKikKIHsKICAgICBBU1NFUlQoIWV2
ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlm
IChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICBJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
OworICAgICAgaWYgKGluc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIDAK
ICAgICBpZiAoIWRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQVRUUk1P
RElGSUVEX0xJU1RFTkVSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1MDE4ZGQxLi5jNzU4ZWJlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTg3NCw2ICsxODc0LDI0IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSwgY29uc3QgU3RyaW5nJiBkCiAgICAgfQogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9kb21BZ2VudCkK
KyAgICAgICAgbV9kb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCit7CisgICAg
aWYgKG1fZG9tQWdlbnQpCisgICAgICAgIG1fZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9k
ZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIGlmIChtX2RvbUFnZW50KQorICAgICAgICBtX2RvbUFnZW50
LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMThhMTkxZC4uYTk4OTAwZSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTg3LDYgKzE4NywxMCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KERvY3VtZW50TG9hZGVyKiwgY29u
c3QgS1VSTCYpOwogICAgIHZvaWQgbWFpblJlc291cmNlRmlyZWRET01Db250ZW50RXZlbnQoRG9j
dW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CisgICAgCisgICAgdm9pZCBkaWRJbnNlcnRET01O
b2RlKE5vZGUqKTsKKyAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSopOworICAgIHZvaWQg
ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIHZvaWQgZ2V0Q29va2llcyhsb25nIGNh
bGxJZCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA5NjMy
ODA2Li5mOTA3NjRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBA
IC0xMTAsOSArMTEwLDYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3RhcnRMaXN0ZW5pbmco
RG9jdW1lbnQqIGRvYykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZG9jLT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKLSAg
ICBkb2MtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNlcnRlZEV2ZW50
LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9jLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5E
T01Ob2RlUmVtb3ZlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9jLT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5ET01BdHRyTW9kaWZpZWRFdmVudCwgdGhpcywgZmFsc2UpOwogICAg
IGRvYy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCB0aGlzLCB0cnVl
KTsKICAgICBtX2RvY3VtZW50cy5hZGQoZG9jKTsKIH0KQEAgLTEyMyw5ICsxMjAsNiBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzdG9wTGlzdGVuaW5nKERvY3VtZW50KiBkb2MpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9N
Q29udGVudExvYWRlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9jLT5yZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwgdGhpcywgZmFsc2UpOwot
ICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9kZVJlbW92ZWRF
dmVudCwgdGhpcywgZmFsc2UpOwotICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKICAgICBkb2MtPnJlbW92
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgdGhpcywgdHJ1ZSk7CiAgICAg
bV9kb2N1bWVudHMucmVtb3ZlKGRvYyk7CiB9CkBAIC0xMzUsNTYgKzEyOSw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVu
dCogZXZlbnQpCiAgICAgQXRvbWljU3RyaW5nIHR5cGUgPSBldmVudC0+dHlwZSgpOwogICAgIE5v
ZGUqIG5vZGUgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwogCi0gICAgaWYgKHR5cGUgPT0g
ZXZlbnROYW1lcygpLkRPTUF0dHJNb2RpZmllZEV2ZW50KSB7Ci0gICAgICAgIGxvbmcgaWQgPSBt
X2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGUpOwotICAgICAgICAvLyBJZiBub2RlIGlzIG5v
dCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCi0gICAgICAgIGlmICghaWQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgbV9mcm9udGVuZC0+YXR0cmlidXRlc1VwZGF0ZWQo
aWQsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7Ci0gICAgfSBlbHNl
IGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCkgewotICAgICAg
ICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IC8vIFdlIGNvdWxkIGJlIGF0dGFjaGluZyBleGlzdGluZyBzdWJ0cmVlLiBGb3JnZXQgdGhlIGJp
bmRpbmdzLgotICAgICAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7Ci0K
LSAgICAgICAgTm9kZSogcGFyZW50ID0gc3RhdGljX2Nhc3Q8TXV0YXRpb25FdmVudCo+KGV2ZW50
KS0+cmVsYXRlZE5vZGUoKTsKLSAgICAgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2Rl
VG9JZE1hcC5nZXQocGFyZW50KTsKLSAgICAgICAgLy8gUmV0dXJuIGlmIHBhcmVudCBpcyBub3Qg
bWFwcGVkIHlldC4KLSAgICAgICAgaWYgKCFwYXJlbnRJZCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7
Ci0gICAgICAgICAgICAvLyBObyBjaGlsZHJlbiBhcmUgbWFwcGVkIHlldCAtPiBvbmx5IG5vdGlm
eSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVuLgotICAgICAgICAgICAgbV9mcm9udGVuZC0+Y2hp
bGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElkLCBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkp
OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2ZSBiZWVuIHJl
cXVlc3RlZCAtPiByZXR1cm4gdmFsdWUgb2YgYSBuZXcgY2hpbGQuCi0gICAgICAgICAgICBOb2Rl
KiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKG5vZGUpOwotICAgICAgICAgICAg
bG9uZyBwcmV2SWQgPSBwcmV2U2libGluZyA/IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocHJl
dlNpYmxpbmcpIDogMDsKLSAgICAgICAgICAgIFNjcmlwdE9iamVjdCB2YWx1ZSA9IGJ1aWxkT2Jq
ZWN0Rm9yTm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKLSAgICAgICAgICAg
IG1fZnJvbnRlbmQtPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIHZhbHVlKTsK
LSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBldmVudE5hbWVzKCkuRE9NTm9kZVJl
bW92ZWRFdmVudCkgewotICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIE5vZGUqIHBhcmVudCA9IHN0YXRpY19jYXN0PE11dGF0aW9u
RXZlbnQqPihldmVudCktPnJlbGF0ZWROb2RlKCk7Ci0gICAgICAgIGxvbmcgcGFyZW50SWQgPSBt
X2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7Ci0gICAgICAgIC8vIElmIHBhcmVudCBp
cyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgotICAgICAgICBpZiAoIXBhcmVu
dElkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9jaGlsZHJlblJlcXVl
c3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKLSAgICAgICAgICAgIC8vIE5vIGNoaWxkcmVuIGFy
ZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4uCi0g
ICAgICAgICAgICBpZiAoaW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQpID09IDEpCi0gICAgICAg
ICAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElkLCAwKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZVJlbW92
ZWQocGFyZW50SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSkpOwotICAgICAgICB9
Ci0gICAgICAgIHVuYmluZChub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKLSAgICB9IGVs
c2UgaWYgKHR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUNvbnRlbnRMb2FkZWRFdmVudCkgeworICAg
IGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQpIHsKICAgICAg
ICAgLy8gUmUtcHVzaCBkb2N1bWVudCBvbmNlIGl0IGlzIGxvYWRlZC4KICAgICAgICAgZGlzY2Fy
ZEJpbmRpbmdzKCk7CiAgICAgICAgIHB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKTsKQEAgLTY3MCw2
ICs2MTUsNjMgQEAgYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6b3BlcmF0b3I9PShjb25zdCBFdmVu
dExpc3RlbmVyJiBsaXN0ZW5lcikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoaXNX
aGl0ZXNwYWNlKG5vZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBjb3VsZCBiZSBh
dHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRoZSBiaW5kaW5ncy4KKyAgICB1bmJp
bmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisKKyAgICBOb2RlKiBwYXJlbnQgPSBu
b2RlLT5wYXJlbnROb2RlKCk7CisgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5nZXQocGFyZW50KTsKKyAgICAvLyBSZXR1cm4gaWYgcGFyZW50IGlzIG5vdCBtYXBwZWQg
eWV0LgorICAgIGlmICghcGFyZW50SWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9j
aGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKKyAgICAgICAgLy8gTm8gY2hp
bGRyZW4gYXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24gY2hhbmdlcyBvZiBoYXNDaGls
ZHJlbi4KKyAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElk
LCBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IENoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQgLT4gcmV0dXJuIHZhbHVlIG9mIGEgbmV3IGNo
aWxkLgorICAgICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKG5v
ZGUpOworICAgICAgICBsb25nIHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1bWVudE5vZGVU
b0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOworICAgICAgICBTY3JpcHRPYmplY3QgdmFsdWUg
PSBidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7Cisg
ICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQsIHZh
bHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5v
ZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgbG9u
ZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKKyAgICAvLyBJ
ZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KKyAgICBpZiAo
IXBhcmVudElkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0
ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CisgICAgICAgIC8vIE5vIGNoaWxkcmVuIGFyZSBtYXBw
ZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4uCisgICAgICAg
IGlmIChpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKKyAgICAgICAgICAgIG1fZnJv
bnRlbmQtPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlUmVtb3ZlZChwYXJlbnRJZCwgbV9kb2N1bWVu
dE5vZGVUb0lkTWFwLmdldChub2RlKSk7CisgICAgfQorICAgIHVuYmluZChub2RlLCAmbV9kb2N1
bWVudE5vZGVUb0lkTWFwKTsgICAgCit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1v
ZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBsb25nIGlkID0gbV9kb2N1bWVu
dE5vZGVUb0lkTWFwLmdldChlbGVtZW50KTsKKyAgICAvLyBJZiBub2RlIGlzIG5vdCBtYXBwZWQg
eWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9mcm9udGVuZC0+YXR0cmlidXRlc1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVt
ZW50QXR0cmlidXRlcyhlbGVtZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaAppbmRleCBhZTMwMmE4Li5kNzMzNGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgKQEAgLTk4LDYgKzk4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOwogICAgICAgICB2b2lkIHJlbGVh
c2VEYW5nbGluZ05vZGVzKCk7CiAKKyAgICAgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUq
KTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKTsKKyAgICAgICAgdm9pZCBk
aWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKKwogICAgICAgICBOb2RlKiBub2RlRm9ySWQobG9u
ZyBub2RlSWQpOwogICAgICAgICBOb2RlKiBub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
OwogICAgICAgICBsb25nIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46083</attachid>
            <date>2010-01-07 13:31:22 -0800</date>
            <delta_ts>2010-01-07 14:37:20 -0800</delta_ts>
            <desc>Patch fixes style issues.</desc>
            <filename>Issue32846.diff</filename>
            <type>text/plain</type>
            <size>12307</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmYyZGEyNi4uNjUyODJjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMS0wNiAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeGVzIHRoZSBmYWN0IHRoYXQgdGltZWxpbmUgcGFuZWwgcmVzdWx0
cyBhcmUgc2tld2VkIGJ5IHRoZSB1c2Ugb2YgRE9NIG11dGF0aW9uIGV2ZW50cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODQ2CisKKyAgICAgICAg
SW5zdGVhZCBvZiB1c2luZyBET00gbXV0YXRpb24gZXZlbnRzIGluIEluc3BlY3RvckRPTUFnZW50
LCBJbnNwZWN0b3JDb250cm9sbGVyIGlzIG5vdyBjYWxsZWQKKyAgICAgICAgZGlyZWN0bHkgd2hl
biB0aGUgRE9NIGlzIG11dGF0ZWQuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6
IENhbGxzIEluc3BlY3RvckNvbnRyb2xsZXIgZGlyZWN0bHkgd2hlbiBjaGlsZCBub2RlcyBhcmUg
YWRkZWQvcmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJbnNlcnRpb25F
dmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogQ2FsbHMgSW5zcGVjdG9yQ29udHJvbGxlciBkaXJl
Y3RseSB3aGVuIGF0dHJpYnV0ZXMgYXJlIGFkZGVkL3JlbW92ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpkaXNwYXRjaEF0dHJSZW1vdmFsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6ZGlzcGF0Y2hBdHRyQWRkaXRpb25FdmVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdGFydExpc3Rlbmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3RvcExpc3RlbmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorCiAyMDEwLTAxLTA3ICBZdXpv
IEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggNWNkMDc4MS4uMzljZDNiNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgpAQCAtODY5LDYgKzg3MCwx
MyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUqIGNoaWxk
KQogewogICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKIAorI2lmIEVOQUJM
RShJTlNQRUNUT1IpCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjaGlsZC0+ZG9jdW1lbnQoKS0+cGFn
ZSgpKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICAgICAgaW5zcGVjdG9y
Q29udHJvbGxlci0+ZGlkSW5zZXJ0RE9NTm9kZShjaGlsZCk7CisgICAgfQorI2VuZGlmCisKICAg
ICBSZWZQdHI8Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQg
PSBjaGlsZC0+ZG9jdW1lbnQoKTsKIApAQCAtODkxLDYgKzg5OSwxMyBAQCBzdGF0aWMgdm9pZCBk
aXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUqIGNoaWxkKQogCiBzdGF0aWMgdm9pZCBk
aXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhOb2RlKiBjaGlsZCkKIHsKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKSAgICAKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNoaWxkLT5kb2N1bWVudCgpLT5wYWdl
KCkpIHsKKyAgICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICBpbnNwZWN0b3JD
b250cm9sbGVyLT5kaWRSZW1vdmVET01Ob2RlKGNoaWxkKTsKKyAgICB9CisjZW5kaWYKKwogICAg
IFJlZlB0cjxOb2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9
IGNoaWxkLT5kb2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cCBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDllYmQzMjguLjQ4ZWJmNmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiTm9k
ZUxpc3QuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKQEAgLTEwMDUsNiArMTAwNiwx
NCBAQCB2b2lkIEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB2b2lkIEVsZW1lbnQ6
OmRpc3BhdGNoQXR0clJlbW92YWxFdmVudChBdHRyaWJ1dGUqKQogewogICAgIEFTU0VSVCghZXZl
bnREaXNwYXRjaEZvcmJpZGRlbigpKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpKQorICAgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZE1vZGlmeURPTUF0dHIodGhp
cyk7CisgICAgfQorI2VuZGlmCisKICNpZiAwCiAgICAgaWYgKCFkb2N1bWVudCgpLT5oYXNMaXN0
ZW5lclR5cGUoRG9jdW1lbnQ6OkRPTUFUVFJNT0RJRklFRF9MSVNURU5FUikpCiAgICAgICAgIHJl
dHVybjsKQEAgLTEwMTcsNiArMTAyNiwxNCBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQXR0clJl
bW92YWxFdmVudChBdHRyaWJ1dGUqKQogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEF0dHJBZGRpdGlv
bkV2ZW50KEF0dHJpYnV0ZSopCiB7CiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVu
KCkpOworCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3Vt
ZW50KCktPnBhZ2UoKSkgeworICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgaW5z
cGVjdG9yQ29udHJvbGxlci0+ZGlkTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICB9CisjZW5kaWYK
KwogI2lmIDAKICAgICBpZiAoIWRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6
RE9NQVRUUk1PRElGSUVEX0xJU1RFTkVSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1MDE4ZGQxLi5jNzU4ZWJlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTg3NCw2ICsxODc0
LDI0IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSwgY29uc3QgU3RyaW5nJiBkCiAgICAgfQogfQogCit2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9k
b21BZ2VudCkKKyAgICAgICAgbV9kb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKK30K
Kwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUp
Cit7CisgICAgaWYgKG1fZG9tQWdlbnQpCisgICAgICAgIG1fZG9tQWdlbnQtPmRpZFJlbW92ZURP
TU5vZGUobm9kZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9N
QXR0cihFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmIChtX2RvbUFnZW50KQorICAgICAgICBt
X2RvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOworfQorCiB9ICAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogICAgIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMThhMTkxZC4uYTk4OTAwZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTg3LDYgKzE4NywxMCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgS1VSTCYpOwogICAgIHZvaWQgbWFpblJlc291cmNlRmlyZWRET01Db250ZW50
RXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CisgICAgCisgICAgdm9pZCBkaWRJ
bnNlcnRET01Ob2RlKE5vZGUqKTsKKyAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSopOwor
ICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIHZvaWQgZ2V0Q29va2ll
cyhsb25nIGNhbGxJZCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCA5NjMyODA2Li44YjBiNmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCkBAIC0xMTAsOSArMTEwLDYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3RhcnRM
aXN0ZW5pbmcoRG9jdW1lbnQqIGRvYykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZG9jLT5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQsIHRoaXMsIGZh
bHNlKTsKLSAgICBkb2MtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5vZGVJbnNl
cnRlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9jLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9jLT5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01BdHRyTW9kaWZpZWRFdmVudCwgdGhpcywgZmFs
c2UpOwogICAgIGRvYy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCB0
aGlzLCB0cnVlKTsKICAgICBtX2RvY3VtZW50cy5hZGQoZG9jKTsKIH0KQEAgLTEyMyw5ICsxMjAs
NiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdG9wTGlzdGVuaW5nKERvY3VtZW50KiBkb2Mp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuRE9NQ29udGVudExvYWRlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9jLT5yZW1v
dmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwgdGhpcywg
ZmFsc2UpOwotICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuRE9NTm9k
ZVJlbW92ZWRFdmVudCwgdGhpcywgZmFsc2UpOwotICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsKICAgICBk
b2MtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgdGhpcywgdHJ1
ZSk7CiAgICAgbV9kb2N1bWVudHMucmVtb3ZlKGRvYyk7CiB9CkBAIC0xMzUsNTYgKzEyOSw3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFdmVudCogZXZlbnQpCiAgICAgQXRvbWljU3RyaW5nIHR5cGUgPSBldmVudC0+dHlwZSgp
OwogICAgIE5vZGUqIG5vZGUgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwogCi0gICAgaWYg
KHR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUF0dHJNb2RpZmllZEV2ZW50KSB7Ci0gICAgICAgIGxv
bmcgaWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGUpOwotICAgICAgICAvLyBJZiBu
b2RlIGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCi0gICAgICAgIGlmICgh
aWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgbV9mcm9udGVuZC0+YXR0cmlidXRl
c1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7Ci0g
ICAgfSBlbHNlIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCkg
ewotICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIC8vIFdlIGNvdWxkIGJlIGF0dGFjaGluZyBleGlzdGluZyBzdWJ0cmVlLiBGb3Jn
ZXQgdGhlIGJpbmRpbmdzLgotICAgICAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9J
ZE1hcCk7Ci0KLSAgICAgICAgTm9kZSogcGFyZW50ID0gc3RhdGljX2Nhc3Q8TXV0YXRpb25FdmVu
dCo+KGV2ZW50KS0+cmVsYXRlZE5vZGUoKTsKLSAgICAgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9j
dW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKLSAgICAgICAgLy8gUmV0dXJuIGlmIHBhcmVu
dCBpcyBub3QgbWFwcGVkIHlldC4KLSAgICAgICAgaWYgKCFwYXJlbnRJZCkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFy
ZW50SWQpKSB7Ci0gICAgICAgICAgICAvLyBObyBjaGlsZHJlbiBhcmUgbWFwcGVkIHlldCAtPiBv
bmx5IG5vdGlmeSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVuLgotICAgICAgICAgICAgbV9mcm9u
dGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElkLCBpbm5lckNoaWxkTm9kZUNvdW50
KHBhcmVudCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2
ZSBiZWVuIHJlcXVlc3RlZCAtPiByZXR1cm4gdmFsdWUgb2YgYSBuZXcgY2hpbGQuCi0gICAgICAg
ICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKG5vZGUpOwotICAg
ICAgICAgICAgbG9uZyBwcmV2SWQgPSBwcmV2U2libGluZyA/IG1fZG9jdW1lbnROb2RlVG9JZE1h
cC5nZXQocHJldlNpYmxpbmcpIDogMDsKLSAgICAgICAgICAgIFNjcmlwdE9iamVjdCB2YWx1ZSA9
IGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKLSAg
ICAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBwcmV2SWQs
IHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBldmVudE5hbWVzKCku
RE9NTm9kZVJlbW92ZWRFdmVudCkgewotICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIE5vZGUqIHBhcmVudCA9IHN0YXRpY19jYXN0
PE11dGF0aW9uRXZlbnQqPihldmVudCktPnJlbGF0ZWROb2RlKCk7Ci0gICAgICAgIGxvbmcgcGFy
ZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7Ci0gICAgICAgIC8vIElm
IHBhcmVudCBpcyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgotICAgICAgICBp
ZiAoIXBhcmVudElkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9jaGls
ZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKLSAgICAgICAgICAgIC8vIE5vIGNo
aWxkcmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hp
bGRyZW4uCi0gICAgICAgICAgICBpZiAoaW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQpID09IDEp
Ci0gICAgICAgICAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVu
dElkLCAwKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxk
Tm9kZVJlbW92ZWQocGFyZW50SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSkpOwot
ICAgICAgICB9Ci0gICAgICAgIHVuYmluZChub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsK
LSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUNvbnRlbnRMb2FkZWRFdmVu
dCkgeworICAgIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQp
IHsKICAgICAgICAgLy8gUmUtcHVzaCBkb2N1bWVudCBvbmNlIGl0IGlzIGxvYWRlZC4KICAgICAg
ICAgZGlzY2FyZEJpbmRpbmdzKCk7CiAgICAgICAgIHB1c2hEb2N1bWVudFRvRnJvbnRlbmQoKTsK
QEAgLTY3MCw2ICs2MTUsNjIgQEAgYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6b3BlcmF0b3I9PShj
b25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAg
ICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBj
b3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRoZSBiaW5kaW5ncy4K
KyAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisKKyAgICBOb2RlKiBw
YXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1l
bnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKKyAgICAvLyBSZXR1cm4gaWYgcGFyZW50IGlzIG5v
dCBtYXBwZWQgeWV0LgorICAgIGlmICghcGFyZW50SWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKKyAgICAgICAg
Ly8gTm8gY2hpbGRyZW4gYXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24gY2hhbmdlcyBv
ZiBoYXNDaGlsZHJlbi4KKyAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVk
KHBhcmVudElkLCBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIC8vIENoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQgLT4gcmV0dXJuIHZhbHVlIG9m
IGEgbmV3IGNoaWxkLgorICAgICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNT
aWJsaW5nKG5vZGUpOworICAgICAgICBsb25nIHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOworICAgICAgICBTY3JpcHRPYmpl
Y3QgdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9J
ZE1hcCk7CisgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBw
cmV2SWQsIHZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJl
bW92ZURPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7
CisgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsK
KyAgICAvLyBJZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4K
KyAgICBpZiAoIXBhcmVudElkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fY2hpbGRy
ZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CisgICAgICAgIC8vIE5vIGNoaWxkcmVu
IGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRyZW4u
CisgICAgICAgIGlmIChpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKKyAgICAgICAg
ICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CisgICAg
fSBlbHNlCisgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZVJlbW92ZWQocGFyZW50SWQsIG1f
ZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSkpOworICAgIHVuYmluZChub2RlLCAmbV9kb2N1
bWVudE5vZGVUb0lkTWFwKTsgICAgCit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1v
ZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBsb25nIGlkID0gbV9kb2N1bWVu
dE5vZGVUb0lkTWFwLmdldChlbGVtZW50KTsKKyAgICAvLyBJZiBub2RlIGlzIG5vdCBtYXBwZWQg
eWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9mcm9udGVuZC0+YXR0cmlidXRlc1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVt
ZW50QXR0cmlidXRlcyhlbGVtZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaAppbmRleCBhZTMwMmE4Li5kNzMzNGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmgKQEAgLTk4LDYgKzk4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOwogICAgICAgICB2b2lkIHJlbGVh
c2VEYW5nbGluZ05vZGVzKCk7CiAKKyAgICAgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUq
KTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKTsKKyAgICAgICAgdm9pZCBk
aWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKKwogICAgICAgICBOb2RlKiBub2RlRm9ySWQobG9u
ZyBub2RlSWQpOwogICAgICAgICBOb2RlKiBub2RlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
OwogICAgICAgICBsb25nIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46088</attachid>
            <date>2010-01-07 14:37:20 -0800</date>
            <delta_ts>2010-01-09 02:43:01 -0800</delta_ts>
            <desc>Fixes the chromium build issue?</desc>
            <filename>Issue32846.diff</filename>
            <type>text/plain</type>
            <size>12541</size>
            <attacher name="Kelly Norton">knorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDZiZjgzMS4uZTc5YWQ0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wMS0wNiAgS2VsbHkgTm9ydG9u
ICA8a25vcnRvbkBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeGVzIHRoZSBmYWN0IHRoYXQgdGltZWxpbmUgcGFuZWwgcmVzdWx0
cyBhcmUgc2tld2VkIGJ5IHRoZSB1c2Ugb2YgRE9NIG11dGF0aW9uIGV2ZW50cy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyODQ2CisKKyAgICAgICAg
SW5zdGVhZCBvZiB1c2luZyBET00gbXV0YXRpb24gZXZlbnRzIGluIEluc3BlY3RvckRPTUFnZW50
LCBJbnNwZWN0b3JDb250cm9sbGVyIGlzIG5vdyBjYWxsZWQKKyAgICAgICAgZGlyZWN0bHkgd2hl
biB0aGUgRE9NIGlzIG11dGF0ZWQuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6
IENhbGxzIEluc3BlY3RvckNvbnRyb2xsZXIgZGlyZWN0bHkgd2hlbiBjaGlsZCBub2RlcyBhcmUg
YWRkZWQvcmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJbnNlcnRpb25F
dmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxFdmVudHMpOgor
ICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDogQ2FsbHMgSW5zcGVjdG9yQ29udHJvbGxlciBkaXJl
Y3RseSB3aGVuIGF0dHJpYnV0ZXMgYXJlIGFkZGVkL3JlbW92ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpkaXNwYXRjaEF0dHJSZW1vdmFsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6ZGlzcGF0Y2hBdHRyQWRkaXRpb25FdmVudCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzdGFydExpc3Rlbmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c3RvcExpc3RlbmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorCiAyMDEwLTAxLTA3ICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4OiBhdm9p
ZCBhIG5hbWUgY29uZmxpY3QgYnkgdXNpbmcgdGhlIGxvY2FsICdzdHJ1Y3R1cmUnIGluc3RlYWQK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvV2ViQ29yZS9kb20v
Q29udGFpbmVyTm9kZS5jcHAKaW5kZXggNWNkMDc4MS4uMzljZDNiNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZy
YW1lVmlldy5oIgogI2luY2x1ZGUgIklubGluZVRleHRCb3guaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIlBh
Z2UuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgpAQCAtODY5LDYgKzg3MCwxMyBAQCBzdGF0
aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUqIGNoaWxkKQogewogICAg
IEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKIAorI2lmIEVOQUJMRShJTlNQRUNU
T1IpCisgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjaGlsZC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Cisg
ICAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFn
ZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAgICAgICAgICAgaW5zcGVjdG9yQ29udHJvbGxl
ci0+ZGlkSW5zZXJ0RE9NTm9kZShjaGlsZCk7CisgICAgfQorI2VuZGlmCisKICAgICBSZWZQdHI8
Tm9kZT4gYyA9IGNoaWxkOwogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBjaGlsZC0+
ZG9jdW1lbnQoKTsKIApAQCAtODkxLDYgKzg5OSwxMyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENo
aWxkSW5zZXJ0aW9uRXZlbnRzKE5vZGUqIGNoaWxkKQogCiBzdGF0aWMgdm9pZCBkaXNwYXRjaENo
aWxkUmVtb3ZhbEV2ZW50cyhOb2RlKiBjaGlsZCkKIHsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKSAg
ICAKKyAgICBpZiAoUGFnZSogcGFnZSA9IGNoaWxkLT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAg
ICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdl
LT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVy
LT5kaWRSZW1vdmVET01Ob2RlKGNoaWxkKTsKKyAgICB9CisjZW5kaWYKKwogICAgIFJlZlB0cjxO
b2RlPiBjID0gY2hpbGQ7CiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IGNoaWxkLT5k
b2N1bWVudCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDllYmQzMjguLjQ4ZWJmNmMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9s
bGVyLmgiCiAjaW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIK
ICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKQEAgLTEwMDUsNiArMTAwNiwxNCBAQCB2b2lk
IEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNo
QXR0clJlbW92YWxFdmVudChBdHRyaWJ1dGUqKQogewogICAgIEFTU0VSVCghZXZlbnREaXNwYXRj
aEZvcmJpZGRlbigpKTsKKworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQorICAg
ICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZE1vZGlmeURPTUF0dHIodGhpcyk7CisgICAg
fQorI2VuZGlmCisKICNpZiAwCiAgICAgaWYgKCFkb2N1bWVudCgpLT5oYXNMaXN0ZW5lclR5cGUo
RG9jdW1lbnQ6OkRPTUFUVFJNT0RJRklFRF9MSVNURU5FUikpCiAgICAgICAgIHJldHVybjsKQEAg
LTEwMTcsNiArMTAyNiwxNCBAQCB2b2lkIEVsZW1lbnQ6OmRpc3BhdGNoQXR0clJlbW92YWxFdmVu
dChBdHRyaWJ1dGUqKQogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEF0dHJBZGRpdGlvbkV2ZW50KEF0
dHJpYnV0ZSopCiB7CiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOworCisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKSkgeworICAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCisgICAgICAgICAgaW5zcGVjdG9yQ29u
dHJvbGxlci0+ZGlkTW9kaWZ5RE9NQXR0cih0aGlzKTsKKyAgICB9CisjZW5kaWYKKwogI2lmIDAK
ICAgICBpZiAoIWRvY3VtZW50KCktPmhhc0xpc3RlbmVyVHlwZShEb2N1bWVudDo6RE9NQVRUUk1P
RElGSUVEX0xJU1RFTkVSKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA1MDE4ZGQxLi5jNzU4ZWJlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTg3NCw2ICsxODc0LDI0IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGVsZXRlQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSwgY29uc3QgU3RyaW5nJiBkCiAgICAgfQogfQogCit2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAobV9kb21BZ2VudCkK
KyAgICAgICAgbV9kb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCit7CisgICAg
aWYgKG1fZG9tQWdlbnQpCisgICAgICAgIG1fZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9k
ZSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIGlmIChtX2RvbUFnZW50KQorICAgICAgICBtX2RvbUFnZW50
LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmgKaW5kZXggMThhMTkxZC4uM2VlZWFmYiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNjAsNiArNjAsNyBAQCBjbGFzcyBDYWNoZWRS
ZXNvdXJjZTsKIGNsYXNzIERhdGFiYXNlOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBEb2N1bWVu
dExvYWRlcjsKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFzcyBI
aXRUZXN0UmVzdWx0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRIb3N0OwpAQCAtMTg3LDYgKzE4OCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIG1haW5SZXNvdXJjZUZpcmVkTG9hZEV2ZW50KERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgS1VSTCYpOwogICAgIHZvaWQgbWFpblJlc291cmNlRmlyZWRET01D
b250ZW50RXZlbnQoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBLVVJMJik7CisgICAgCisgICAgdm9p
ZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUqKTsKKyAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9k
ZSopOworICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIHZvaWQgZ2V0
Q29va2llcyhsb25nIGNhbGxJZCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAppbmRleCA5NjMyODA2Li44YjBiNmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC0xMTAsOSArMTEwLDYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
c3RhcnRMaXN0ZW5pbmcoRG9jdW1lbnQqIGRvYykKICAgICAgICAgcmV0dXJuOwogCiAgICAgZG9j
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVkRXZlbnQsIHRo
aXMsIGZhbHNlKTsKLSAgICBkb2MtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLkRPTU5v
ZGVJbnNlcnRlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9jLT5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS5ET01Ob2RlUmVtb3ZlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9j
LT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01BdHRyTW9kaWZpZWRFdmVudCwgdGhp
cywgZmFsc2UpOwogICAgIGRvYy0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2
ZW50LCB0aGlzLCB0cnVlKTsKICAgICBtX2RvY3VtZW50cy5hZGQoZG9jKTsKIH0KQEAgLTEyMyw5
ICsxMjAsNiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzdG9wTGlzdGVuaW5nKERvY3VtZW50
KiBkb2MpCiAgICAgICAgIHJldHVybjsKIAogICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuRE9NQ29udGVudExvYWRlZEV2ZW50LCB0aGlzLCBmYWxzZSk7Ci0gICAgZG9j
LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRFdmVudCwg
dGhpcywgZmFsc2UpOwotICAgIGRvYy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
RE9NTm9kZVJlbW92ZWRFdmVudCwgdGhpcywgZmFsc2UpOwotICAgIGRvYy0+cmVtb3ZlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuRE9NQXR0ck1vZGlmaWVkRXZlbnQsIHRoaXMsIGZhbHNlKTsK
ICAgICBkb2MtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgdGhp
cywgdHJ1ZSk7CiAgICAgbV9kb2N1bWVudHMucmVtb3ZlKGRvYyk7CiB9CkBAIC0xMzUsNTYgKzEy
OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFdmVudCogZXZlbnQpCiAgICAgQXRvbWljU3RyaW5nIHR5cGUgPSBldmVudC0+
dHlwZSgpOwogICAgIE5vZGUqIG5vZGUgPSBldmVudC0+dGFyZ2V0KCktPnRvTm9kZSgpOwogCi0g
ICAgaWYgKHR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUF0dHJNb2RpZmllZEV2ZW50KSB7Ci0gICAg
ICAgIGxvbmcgaWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGUpOwotICAgICAgICAv
LyBJZiBub2RlIGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCi0gICAgICAg
IGlmICghaWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgRWxlbWVudCogZWxlbWVu
dCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgbV9mcm9udGVuZC0+YXR0
cmlidXRlc1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50
KSk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5ET01Ob2RlSW5zZXJ0ZWRF
dmVudCkgewotICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIC8vIFdlIGNvdWxkIGJlIGF0dGFjaGluZyBleGlzdGluZyBzdWJ0cmVl
LiBGb3JnZXQgdGhlIGJpbmRpbmdzLgotICAgICAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnRO
b2RlVG9JZE1hcCk7Ci0KLSAgICAgICAgTm9kZSogcGFyZW50ID0gc3RhdGljX2Nhc3Q8TXV0YXRp
b25FdmVudCo+KGV2ZW50KS0+cmVsYXRlZE5vZGUoKTsKLSAgICAgICAgbG9uZyBwYXJlbnRJZCA9
IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKLSAgICAgICAgLy8gUmV0dXJuIGlm
IHBhcmVudCBpcyBub3QgbWFwcGVkIHlldC4KLSAgICAgICAgaWYgKCFwYXJlbnRJZCkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFp
bnMocGFyZW50SWQpKSB7Ci0gICAgICAgICAgICAvLyBObyBjaGlsZHJlbiBhcmUgbWFwcGVkIHll
dCAtPiBvbmx5IG5vdGlmeSBvbiBjaGFuZ2VzIG9mIGhhc0NoaWxkcmVuLgotICAgICAgICAgICAg
bV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVkKHBhcmVudElkLCBpbm5lckNoaWxkTm9k
ZUNvdW50KHBhcmVudCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gQ2hpbGRy
ZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZCAtPiByZXR1cm4gdmFsdWUgb2YgYSBuZXcgY2hpbGQuCi0g
ICAgICAgICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVyUHJldmlvdXNTaWJsaW5nKG5vZGUp
OwotICAgICAgICAgICAgbG9uZyBwcmV2SWQgPSBwcmV2U2libGluZyA/IG1fZG9jdW1lbnROb2Rl
VG9JZE1hcC5nZXQocHJldlNpYmxpbmcpIDogMDsKLSAgICAgICAgICAgIFNjcmlwdE9iamVjdCB2
YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9kZShub2RlLCAwLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFw
KTsKLSAgICAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUluc2VydGVkKHBhcmVudElkLCBw
cmV2SWQsIHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodHlwZSA9PSBldmVudE5h
bWVzKCkuRE9NTm9kZVJlbW92ZWRFdmVudCkgewotICAgICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5v
ZGUpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIE5vZGUqIHBhcmVudCA9IHN0YXRp
Y19jYXN0PE11dGF0aW9uRXZlbnQqPihldmVudCktPnJlbGF0ZWROb2RlKCk7Ci0gICAgICAgIGxv
bmcgcGFyZW50SWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHBhcmVudCk7Ci0gICAgICAg
IC8vIElmIHBhcmVudCBpcyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgotICAg
ICAgICBpZiAoIXBhcmVudElkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICgh
bV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKLSAgICAgICAgICAgIC8v
IE5vIGNoaWxkcmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2Yg
aGFzQ2hpbGRyZW4uCi0gICAgICAgICAgICBpZiAoaW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQp
ID09IDEpCi0gICAgICAgICAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRVcGRhdGVk
KHBhcmVudElkLCAwKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fZnJvbnRlbmQt
PmNoaWxkTm9kZVJlbW92ZWQocGFyZW50SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9k
ZSkpOwotICAgICAgICB9Ci0gICAgICAgIHVuYmluZChub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lk
TWFwKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gZXZlbnROYW1lcygpLkRPTUNvbnRlbnRMb2Fk
ZWRFdmVudCkgeworICAgIGlmICh0eXBlID09IGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVk
RXZlbnQpIHsKICAgICAgICAgLy8gUmUtcHVzaCBkb2N1bWVudCBvbmNlIGl0IGlzIGxvYWRlZC4K
ICAgICAgICAgZGlzY2FyZEJpbmRpbmdzKCk7CiAgICAgICAgIHB1c2hEb2N1bWVudFRvRnJvbnRl
bmQoKTsKQEAgLTY3MCw2ICs2MTUsNjIgQEAgYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6b3BlcmF0
b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkK
K3sKKyAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4gRm9yZ2V0IHRoZSBiaW5k
aW5ncy4KKyAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CisKKyAgICBO
b2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgbG9uZyBwYXJlbnRJZCA9IG1f
ZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFyZW50KTsKKyAgICAvLyBSZXR1cm4gaWYgcGFyZW50
IGlzIG5vdCBtYXBwZWQgeWV0LgorICAgIGlmICghcGFyZW50SWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmICghbV9jaGlsZHJlblJlcXVlc3RlZC5jb250YWlucyhwYXJlbnRJZCkpIHsKKyAg
ICAgICAgLy8gTm8gY2hpbGRyZW4gYXJlIG1hcHBlZCB5ZXQgLT4gb25seSBub3RpZnkgb24gY2hh
bmdlcyBvZiBoYXNDaGlsZHJlbi4KKyAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlQ291bnRV
cGRhdGVkKHBhcmVudElkLCBpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIENoaWxkcmVuIGhhdmUgYmVlbiByZXF1ZXN0ZWQgLT4gcmV0dXJuIHZh
bHVlIG9mIGEgbmV3IGNoaWxkLgorICAgICAgICBOb2RlKiBwcmV2U2libGluZyA9IGlubmVyUHJl
dmlvdXNTaWJsaW5nKG5vZGUpOworICAgICAgICBsb25nIHByZXZJZCA9IHByZXZTaWJsaW5nID8g
bV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOworICAgICAgICBTY3Jp
cHRPYmplY3QgdmFsdWUgPSBidWlsZE9iamVjdEZvck5vZGUobm9kZSwgMCwgJm1fZG9jdW1lbnRO
b2RlVG9JZE1hcCk7CisgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUluc2VydGVkKHBhcmVu
dElkLCBwcmV2SWQsIHZhbHVlKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoaXNXaGl0ZXNwYWNlKG5v
ZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnRO
b2RlKCk7CisgICAgbG9uZyBwYXJlbnRJZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQocGFy
ZW50KTsKKyAgICAvLyBJZiBwYXJlbnQgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBl
dmVudC4KKyAgICBpZiAoIXBhcmVudElkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1f
Y2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CisgICAgICAgIC8vIE5vIGNo
aWxkcmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hp
bGRyZW4uCisgICAgICAgIGlmIChpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKKyAg
ICAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7
CisgICAgfSBlbHNlCisgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZVJlbW92ZWQocGFyZW50
SWQsIG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQobm9kZSkpOworICAgIHVuYmluZChub2RlLCAm
bV9kb2N1bWVudE5vZGVUb0lkTWFwKTsgICAgCit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBsb25nIGlkID0gbV9k
b2N1bWVudE5vZGVUb0lkTWFwLmdldChlbGVtZW50KTsKKyAgICAvLyBJZiBub2RlIGlzIG5vdCBt
YXBwZWQgeWV0IC0+IGlnbm9yZSB0aGUgZXZlbnQuCisgICAgaWYgKCFpZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9mcm9udGVuZC0+YXR0cmlidXRlc1VwZGF0ZWQoaWQsIGJ1aWxkQXJyYXlG
b3JFbGVtZW50QXR0cmlidXRlcyhlbGVtZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaAppbmRleCBhZTMwMmE4Li5kNzMzNGI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmgKQEAgLTk4LDYgKzk4LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBzZXREb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpOwogICAgICAgICB2b2lk
IHJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CiAKKyAgICAgICAgdm9pZCBkaWRJbnNlcnRET01Ob2Rl
KE5vZGUqKTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUqKTsKKyAgICAgICAg
dm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKKwogICAgICAgICBOb2RlKiBub2RlRm9y
SWQobG9uZyBub2RlSWQpOwogICAgICAgICBOb2RlKiBub2RlRm9yUGF0aChjb25zdCBTdHJpbmcm
IHBhdGgpOwogICAgICAgICBsb25nIHB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZSk7
Cg==
</data>
<flag name="review"
          id="28302"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>