<?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>75577</bug_id>
          
          <creation_ts>2012-01-04 14:38:37 -0800</creation_ts>
          <short_desc>[chromium] Route all animate calls through CCLayerTreeHost in composited mode to simplify rate limiting logic</short_desc>
          <delta_ts>2012-01-05 17:01:44 -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>New Bugs</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>
          
          <blocked>75591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>fishd</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>vangelis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>529770</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 14:38:37 -0800</bug_when>
    <thetext>[chromium] Route all animate calls through CCLayerTreeHost in composited mode to simplify rate limiting logic</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529779</commentid>
    <comment_count>1</comment_count>
      <attachid>121161</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 14:53:11 -0800</bug_when>
    <thetext>Created attachment 121161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529781</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-04 14:55:51 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529782</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 14:56:50 -0800</bug_when>
    <thetext>See ChangeLog for description of what this does. One thing that&apos;s a bit ugly is that WebWidget declares animate() and layout(). Since I wanted to break up CCLayerTreeHostClient&apos;s animateAndLayout() function, the obvious names are animate() and layout() but they collide in WebViewImpl which implements both WebWidget and CCLayerTreeHostClient. The implementations for layout() are the same so I just left that alone, but the two animate() overrides require different behavior. I solved this by (somewhat arbitrarily) renaming the CCLayerTreeHostClient version to updateAnimations().

This requires a chromium-side change for the WebLayerTreeViewClient interface change which I&apos;ll land before landing this or aura will stop compiling. It looks like WebLayerTreeViewClient implementations don&apos;t currently use animateAndLayout() for anything at all. I expect that they will want to hook up with updateAnimations() but they don&apos;t immediately need a layout(), so I&apos;ve left that out of the API for now. I may end up adding layout() as well in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529801</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 15:04:58 -0800</bug_when>
    <thetext>Chromium side here: http://codereview.chromium.org/9008078/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529803</commentid>
    <comment_count>5</comment_count>
      <attachid>121161</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-04 15:05:54 -0800</bug_when>
    <thetext>Comment on attachment 121161
Patch

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

Unofficial LGTM

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1141
&gt; +    if (m_layerTreeHost)

should this be m_acceleratedCompositingActive or something like that?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1149
&gt; +void WebViewImpl::updateAnimations(double frameBeginTime)

I think the trace event for animate has disappeared with this patch. Might just put an trace here? I assume layout is still there, I think that was explicitly traced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529814</commentid>
    <comment_count>6</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 15:15:34 -0800</bug_when>
    <thetext>Ah whoops, WebViewImpl::animate() and WebViewImpl::layout() have traces, but in the threaded path I did lose the trace for the animate call. I think I&apos;ll just move the animate trace in WebViewImpl to WebViewImpl::updateAnimations(), which all codepaths still go through. Does that sound good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529835</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 15:42:55 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 121161 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121161&amp;action=review
&gt; 
&gt; Unofficial LGTM
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1141
&gt; &gt; +    if (m_layerTreeHost)
&gt; 
&gt; should this be m_acceleratedCompositingActive or something like that?

Yes, I think it should be. Fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529836</commentid>
    <comment_count>8</comment_count>
      <attachid>121178</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 15:43:50 -0800</bug_when>
    <thetext>Created attachment 121178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529907</commentid>
    <comment_count>9</comment_count>
      <attachid>121193</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 17:43:23 -0800</bug_when>
    <thetext>Created attachment 121193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529908</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-04 17:44:32 -0800</bug_when>
    <thetext>I changed my mind re WebLayerTreeViewClient::layout() - i&apos;m going to need that for the next patch (making WebViewImpl depend on WebLayerTreeView instead of CCLayerTreeHost) and since it requires a two-sided patch it&apos;s easier to just do it all at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529911</commentid>
    <comment_count>11</comment_count>
      <attachid>121193</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-01-04 17:54:35 -0800</bug_when>
    <thetext>Comment on attachment 121193
Patch

Ship it. Unofficial lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530014</commentid>
    <comment_count>12</comment_count>
      <attachid>121193</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-04 22:48:56 -0800</bug_when>
    <thetext>Comment on attachment 121193
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1136
&gt; +#if USE(ACCELERATED_COMPOSITING)

nit: What about moving this code into WebViewImpl::updateAnimations, or if not,
then perhaps WebViewImpl::updateAnimations should be renamed to indicate that it
should only be called when not in accelerated compositing mode?  Maybe add an
assertion too?

&gt; Source/WebKit/chromium/src/WebViewImpl.h:112
&gt; +    // This also implements WebCore::CCLayerTreeHostClient::layout()

micro-nit: maybe put this comment inline so the flow of function declarations is not disrupted?

  virtual void layout(); // Also implements CCLayerTreeHostClient::layout()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530388</commentid>
    <comment_count>13</comment_count>
      <attachid>121193</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-05 10:24:14 -0800</bug_when>
    <thetext>Comment on attachment 121193
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1136
&gt;&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; 
&gt; nit: What about moving this code into WebViewImpl::updateAnimations, or if not,
&gt; then perhaps WebViewImpl::updateAnimations should be renamed to indicate that it
&gt; should only be called when not in accelerated compositing mode?  Maybe add an
&gt; assertion too?

currently updateAnimations() is called in composited and non-composited mode. the three possibilities are:

(1) non-composited:
render_widget calls WebWidget::animate() which is implemented by WebViewImpl::animate()
WebViewImpl::animate() calls WebViewImpl::updateAnimations()

(2) composited but render_widget scheduling (single-threaded)
render_widget calls WebWidget::animate() which is implemented by WebViewImpl::animate()
WebViewImpl::animate() calls CCLayerTreeHost::updateAnimations()
CCLayerTreeHost::updateAnimations() sets rate limiting logic and calls WebViewImpl::updateAnimations()

(3) composited with compositor-driven scheduling (threaded)
CCThreadProxy calls CCLayerTreeHost::updateAnimations()
CCLayerTreeHost::updateAnimations() sets rate limiting logic and calls WebViewImpl::updateAnimations()

so i&apos;m not sure i can fold any functions into each other

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.h:112
&gt;&gt; +    // This also implements WebCore::CCLayerTreeHostClient::layout()
&gt; 
&gt; micro-nit: maybe put this comment inline so the flow of function declarations is not disrupted?
&gt; 
&gt;   virtual void layout(); // Also implements CCLayerTreeHostClient::layout()

Sure, will do</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530781</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-05 16:52:48 -0800</bug_when>
    <thetext>Chromium implementations of new pure virtuals on WebLayerTreeViewClient landed in http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=116580.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530785</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-05 16:56:30 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 121193 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121193&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:1136
&gt; &gt;&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; &gt; 
&gt; &gt; nit: What about moving this code into WebViewImpl::updateAnimations, or if not,
&gt; &gt; then perhaps WebViewImpl::updateAnimations should be renamed to indicate that it
&gt; &gt; should only be called when not in accelerated compositing mode?  Maybe add an
&gt; &gt; assertion too?
&gt; 
&gt; currently updateAnimations() is called in composited and non-composited mode. the three possibilities are:
&gt; 
&gt; (1) non-composited:
&gt; render_widget calls WebWidget::animate() which is implemented by WebViewImpl::animate()
&gt; WebViewImpl::animate() calls WebViewImpl::updateAnimations()
&gt; 
&gt; (2) composited but render_widget scheduling (single-threaded)
&gt; render_widget calls WebWidget::animate() which is implemented by WebViewImpl::animate()
&gt; WebViewImpl::animate() calls CCLayerTreeHost::updateAnimations()
&gt; CCLayerTreeHost::updateAnimations() sets rate limiting logic and calls WebViewImpl::updateAnimations()
&gt; 
&gt; (3) composited with compositor-driven scheduling (threaded)
&gt; CCThreadProxy calls CCLayerTreeHost::updateAnimations()
&gt; CCLayerTreeHost::updateAnimations() sets rate limiting logic and calls WebViewImpl::updateAnimations()
&gt; 
&gt; so i&apos;m not sure i can fold any functions into each other

OK... makes sense.  I hadn&apos;t understood all of the call paths.
I&apos;m happy with the code as you have it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530791</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-05 17:01:44 -0800</bug_when>
    <thetext>Committed r104248: &lt;http://trac.webkit.org/changeset/104248&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121161</attachid>
            <date>2012-01-04 14:53:11 -0800</date>
            <delta_ts>2012-01-04 15:43:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75577-20120104145310.patch</filename>
            <type>text/plain</type>
            <size>16855</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhhYThiMjgxNmFiNGE1
YzJjMGVmMzNkNzUwZWE0ZTliNDExMmI3My4uOTE5MmJiZTk0ZDY2M2FlZTk3NDNiMGFjZTk2Y2Q2
MTVkMGMzY2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTA0ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
b3V0ZSBhbGwgYW5pbWF0ZSBjYWxscyB0aHJvdWdoIENDTGF5ZXJUcmVlSG9zdCBpbiBjb21wb3Np
dGVkIG1vZGUgdG8gc2ltcGxpZnkgcmF0ZSBsaW1pdGluZyBsb2dpYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGludGVybmFsaXplcyB0aGUgYW5p
bWF0aW9uIHJhdGUgbGltaXRpbmcgbG9naWMgdG8gQ0NMYXllclRyZWVIb3N0IGFuZCByZW1vdmVz
IHRoZSBzZXR0ZXJzL2dldHRlcnMgZm9yIHRoZQorICAgICAgICBtX2FuaW1hdGluZyBmbGFnLiBU
aGlzIHJlcXVpcmVzIHRoYXQgYWxsIGFuaW1hdGlvbiB1cGRhdGVzIGhhdmUgdG8gZ28gdGhyb3Vn
aCBDQ0xheWVyVHJlZUhvc3QgdG8gZ2V0IHRoZSByaWdodAorICAgICAgICByYXRlIGxpbWl0aW5n
IGJlaGF2aW9yLCByZWdhcmRsZXNzIG9mIHdoaWNoIHByb3h5IGlzIGJlaW5nIHVzZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmltYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c3RhcnRSYXRlTGltaXRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKwogMjAxMi0w
MS0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNT
SU9OIChyOTI4MjMpOiBCYWNrZ3JvdW5kIGNvbG9yIG5vdCBwcmVzZXJ2ZWQgd2hlbiBjb3B5aW5n
IGFuZCBwYXN0aW5nIGEgdGFibGUgcm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUz
NTM4YjZkOWIwZjA5NDA5MzU1OTQ5ZDE2MjM4ZTI3ZTU1ODdiM2UuLjFlNTk1NWVhYWFiY2I5MjNm
YTc4NDk5ZjRhOWMxNzE1MGZjOTZlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjUgQEAKIDIwMTItMDEtMDQgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIFJvdXRlIGFsbCBhbmltYXRlIGNhbGxzIHRocm91
Z2ggQ0NMYXllclRyZWVIb3N0IGluIGNvbXBvc2l0ZWQgbW9kZSB0byBzaW1wbGlmeSByYXRlIGxp
bWl0aW5nIGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTU3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJvdXRlcyBXZWJXaWRnZXQtaW5pdGlhdGVkIGFuaW1hdGUoKSBjYWxscyB0aHJvdWdoIHRo
ZSBDQ0xheWVyVHJlZUhvc3QgaW4gY29tcG9zaXRlZCBtb2RlLiBDQ0xheWVyVHJlZUhvc3Qncwor
ICAgICAgICByYXRlIGxpbWl0aW5nIGxvZ2ljIG5lZWRzIHRvIGJlIGF3YXJlIG9mIHdoZW4gcmVx
dWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcyBhcmUgcnVuLiBJbiB0aHJlYWRlZCBtb2RlLCB0
aGUKKyAgICAgICAgYW5pbWF0ZSBjYWxscyBhcmUgZHJpdmVuIGZyb20gQ0NUaHJlYWRQcm94eSBh
bmQgc28gdGhlIENDTGF5ZXJUcmVlSG9zdCBjYW4gc2V0IHdoYXRldmVyIHN0YXRlIGl0IG5lZWRz
LiBUaGlzCisgICAgICAgIG1ha2VzIHRoZSBzaW5nbGUtdGhyZWFkZWQgbW9kZSB3aGVyZSB0aGUg
YW5pbWF0ZSBjYWxscyBhcmUgZHJpdmVuIHRocm91Z2ggdGhlIFdlYldpZGdldCBpbnRlcmZhY2Ug
b3V0c2lkZSBvZiB0aGUKKyAgICAgICAgQ0NQcm94eSdzIGNvbnRyb2wuCisKKyAgICAgICAgVGhp
cyBpcyBhIHNtYWxsIHN0ZXAgdG93YXJkcyBpbnZlcnRpbmcgdGhlIHNjaGVkdWxpbmcgY29udHJv
bCBmcm9tIHRoZSBXZWJXaWRnZXQgdG8gdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKworMjAxMi0wMS0wNCAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gQ29tcGlsZSBmaXgsIHJl
bmFtZSBsaWJwbGF0Zm9ybS5hIHRvIGxpYndlYmtpdF9wbGF0Zm9ybS5hIHRvIGF2b2lkIGNvbGxp
c2lvbiB3aXRoIG5hY2wKIAogICAgICAgICAqIFdlYktpdC5neXA6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCBjZDc1NmQ2MDBkYzBmMGUzZjMwMWIzMmQ3ZThlODRmYzAwYWIw
NzYxLi5mNTYxYTY3YjQxZGU2ZDc3M2Q2Y2FjMDA5NGY4OGVmZjk4N2ZlMDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTExOCwxMyArMTE4LDE4IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jCiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmRE
ZWxldGVBbGxUZXh0dXJlcyhhbGxvY2F0b3IpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCit2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCiB7CiAgICAgbV9h
bmltYXRpbmcgPSB0cnVlOwotICAgIG1fY2xpZW50LT5hbmltYXRlQW5kTGF5b3V0KGZyYW1lQmVn
aW5UaW1lKTsKKyAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7
CiAgICAgbV9hbmltYXRpbmcgPSBmYWxzZTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Omxh
eW91dCgpCit7CisgICAgbV9jbGllbnQtPmxheW91dCgpOworfQorCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6YmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdElt
cGwpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKQEAgLTUxMSw3ICs1
MTYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBD
Q1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRS
YXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBpZiAoYW5pbWF0
aW5nKCkpCisgICAgaWYgKG1fYW5pbWF0aW5nKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KGNvbnRleHQpOwogICAgIFJhdGVMaW1pdGVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmF0ZUxpbWl0
ZXJzLmZpbmQoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI3ZDFi
MWU1ZjAzZGQzOWJkYzY2ODAwZmYxMjlmYjI0ZTRjYjA1ZWMuLjY4ZDQyMmEyMjMwMDcxMTA3MTU2
NTMyYTE0YTRjYmRhNjhlZGVmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01
Myw3ICs1Myw4IEBAIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3RDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRv
dWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRp
b25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNj
ZXNzKSA9IDA7CkBAIC0xMjEsNyArMTIyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGFu
eUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0
IGludGVyZmFjZSB0byBDQ1Byb3h5LgotICAgIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUg
ZnJhbWVCZWdpblRpbWUpOworICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVC
ZWdpblRpbWUpOworICAgIHZvaWQgbGF5b3V0KCk7CiAgICAgdm9pZCBiZWdpbkNvbW1pdE9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBmaW5pc2hDb21taXRPbklt
cGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAgIHZvaWQgY29tbWl0Q29tcGxldGUo
KTsKQEAgLTEzMywxMCArMTM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVTd2Fw
QnVmZmVycygpIHsgbV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZv
aWQgZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7
CiAKLSAgICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50ZXJmYWNlIHRvIFdlYlZpZXcuCi0gICAgYm9v
bCBhbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGluZzsgfQotICAgIHZvaWQgc2V0
QW5pbWF0aW5nKGJvb2wgYW5pbWF0aW5nKSB7IG1fYW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9IC8v
IENhbiBiZSByZW1vdmVkIHdoZW4gbm9uLXRocmVhZGVkIHNjaGVkdWxpbmcgbW92ZXMgaW5zaWRl
LgotCiAgICAgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVu
dDsgfQogCiAgICAgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9j
b21wb3NpdG9ySWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBj
MDBkZDY2ZTUzNGFhMzQ0NGY2YmU4YWQ0YWFmMWQ4NTljZDE0ZmQ2Li45MDMzMTM1MTNhOWQwOTgy
MzQxMmU1ZTc3ZDY5OTg1NDU3ZjkzYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApA
QCAtMzYzLDE1ICszNjMsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29t
bWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyBSZS1k
byB0aGUgY29tbWl0IGZsb3cgc28gdGhhdCB3ZSBkb24ndCBzZW5kIHRoZSBzY3JvbGxJbmZvIG9u
IHRoZSBCRkFDIG1lc3NhZ2UuCiAgICAgbV9sYXllclRyZWVIb3N0LT5hcHBseVNjcm9sbEFuZFNj
YWxlKCpzY3JvbGxJbmZvKTsKIAotICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29udGV4dCBp
ZiBpdCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZAotICAgIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dCIsIHRoaXMsIDApOwot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmFuaW1hdGVBbmRMYXlvdXQoZnJhbWVCZWdpblRpbWUp
OwotICAgIH0KKyAgICAvLyBGSVhNRTogcmVjcmVhdGUgdGhlIGNvbnRleHQgaWYgaXQgd2FzIHJl
cXVlc3RlZCBieSB0aGUgaW1wbCB0aHJlYWQuCisgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVB
bmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmxheW91dCgp
OwogCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNl
TnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIAotICAgIC8vIENsZWFyIHRoZSBjb21taXQgZmxh
ZyBhZnRlciBhbmltYXRlQW5kTGF5b3V0IGhlcmUgLS0tIG9iamVjdHMgdGhhdCBvbmx5CisgICAg
Ly8gQ2xlYXIgdGhlIGNvbW1pdCBmbGFnIGFmdGVyIHVwZGF0aW5nIGFuaW1hdGlvbnMgYW5kIGxh
eW91dCBoZXJlIC0tLSBvYmplY3RzIHRoYXQgb25seQogICAgIC8vIGxheW91dCB3aGVuIHBhaW50
ZWQgd2lsbCB0cmlnZ2VyIGFub3RoZXIgc2V0TmVlZHNDb21taXQgaW5zaWRlCiAgICAgLy8gdXBk
YXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRy
ZWVWaWV3Q2xpZW50LmgKaW5kZXggNmY1MDA5NjA3NmNkZjY2MmI3MjRhMDE4MzQ1Mzc0YzRiMGQ2
YWQ3OC4uYjY3NTA4ZTc1NGNlYTdhNTA4NjRlMGI4N2UwMWExOGRlOGExY2NlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmll
d0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkxheWVyVHJlZVZpZXdDbGllbnQuaApAQCAtMzMsOSArMzMsOSBAQCBjbGFzcyBXZWJUaHJlYWQ7
CiAKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQgewogcHVibGljOgotICAgIC8vIFVwZGF0
ZXMgYW5pbWF0aW9uIGFuZCBsYXlvdXQuIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9z
aXRpbmcgcGFzcwotICAgIC8vIHNvIHRoYXQgbGF5ZXJzIGNhbiBiZSB1cGRhdGVkIGF0IHRoZSBn
aXZlbiBmcmFtZSB0aW1lLgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSkgPSAwOworICAgIC8vIFVwZGF0ZXMgYW5pbWF0aW9uLiBUaGlzIGlz
IGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3Mgc28gdGhhdAorICAgIC8vIGxheWVy
cyBjYW4gYmUgdXBkYXRlZCBhdCB0aGUgZ2l2ZW4gZnJhbWUgdGltZS4KKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsKIAogICAgIC8v
IEFwcGxpZXMgYSBzY3JvbGwgZGVsdGEgdG8gdGhlIHJvb3QgbGF5ZXIsIHdoaWNoIGlzIGJ1bmRs
ZWQgd2l0aCBhIHBhZ2UKICAgICAvLyBzY2FsZSBmYWN0b3IgdGhhdCBtYXkgYXBwbHkgYSBDU1Mg
dHJhbnNmb3JtIG9uIHRoZSB3aG9sZSBkb2N1bWVudCAodXNlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IGVkYzE2ZWM3
YjI3MjNmYjA4ZWYzYzJkYjYxYTlmOTMxODM1MGM0MjYuLmFjZGNlYWEyZWE2MTA0ZDlmMjBmZWU1
YTQxM2U2OTRmZjNiNDMzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKCkKIHsKIH0KIAotdm9pZCBXZWJMYXll
clRyZWVWaWV3SW1wbDo6YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCit2
b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJl
Z2luVGltZSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5hbmltYXRl
QW5kTGF5b3V0KGZyYW1lQmVnaW5UaW1lKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUFuaW1h
dGlvbnMoZnJhbWVCZWdpblRpbWUpOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjph
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBm
bG9hdCBwYWdlU2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuaAppbmRleCAzODExZTA5M2U1ZjNhMWE1YzdjYzEzMzM3OGZmMDA4Njhj
NmRjNTQzLi41N2ZhMDgzZDA1YzkwMTMxMzhhNzU2YTViMzA4YWUzNzk1MTlhZGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAg
LTQxLDcgKzQxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJMYXllclRyZWVWaWV3SW1w
bChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGlu
Z3MmKTsKICAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3SW1wbCgpOwotICAgIHZpcnR1YWwg
dm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBjcmVh
dGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRl
R3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMjQ3NTFlMzI5YmNjOTg0YjEwMWM2NjlmNzUxMTE0NzJi
NDk3ZDhkMy4uNWFjOGRmYzVhMGRkN2NkYjY3YzJjNWUwM2Q3MmI3NmI5Y2JmMjFiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTEyOSwyMyArMTEy
OSwzMyBAQCB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkK
IHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgVFJBQ0VfRVZFTlQo
IldlYlZpZXdJbXBsOjphbmltYXRlIiwgdGhpcywgMCk7CisKICAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgemVyby1jaGVjayBvbmNlIHJlbmRlcl93aWRnZXQgaGFzIGJlZW4gbW9kaWZpZWQgdG8K
ICAgICAvLyBwYXNzIGluIGEgZnJhbWVCZWdpblRpbWUuCiAgICAgaWYgKCFmcmFtZUJlZ2luVGlt
ZSkKICAgICAgICAgZnJhbWVCZWdpblRpbWUgPSBjdXJyZW50VGltZSgpOwotICAgIFdlYkZyYW1l
SW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7Ci0gICAgaWYgKHdlYmZyYW1lKSB7Ci0g
ICAgICAgIEZyYW1lVmlldyogdmlldyA9IHdlYmZyYW1lLT5mcmFtZVZpZXcoKTsKLSAgICAgICAg
aWYgKHZpZXcpIHsKLSAgICAgICAgICAgIGlmICghQ0NQcm94eTo6aGFzSW1wbFRocmVhZCgpICYm
IG1fbGF5ZXJUcmVlSG9zdCkKLSAgICAgICAgICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldEFu
aW1hdGluZyh0cnVlKTsKIAotICAgICAgICAgICAgdmlldy0+c2VydmljZVNjcmlwdGVkQW5pbWF0
aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGZyYW1lQmVnaW5UaW1lKSk7CisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIC8vIEluIGNvbXBvc2l0ZWQgbW9kZSwg
d2UgYWx3YXlzIGdvIHRocm91Z2ggdGhlIGNvbXBvc2l0b3Igc28gaXQgY2FuIGFwcGx5CisgICAg
Ly8gYXBwcm9wcmlhdGUgZmxvdy1jb250cm9sIG1lY2hhbmlzbXMuCisgICAgaWYgKG1fbGF5ZXJU
cmVlSG9zdCkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVBbmltYXRpb25zKGZyYW1l
QmVnaW5UaW1lKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgdXBkYXRlQW5pbWF0aW9ucyhm
cmFtZUJlZ2luVGltZSk7CisjZW5kaWYKK30KIAotICAgICAgICAgICAgaWYgKCFDQ1Byb3h5Ojpo
YXNJbXBsVGhyZWFkKCkgJiYgbV9sYXllclRyZWVIb3N0KQotICAgICAgICAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW5nKGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KK3ZvaWQg
V2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQorewor
I2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBXZWJGcmFtZUltcGwqIHdl
YmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOworICAgIGlmICghd2ViZnJhbWUpCisgICAgICAgIHJl
dHVybjsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSB3ZWJmcmFtZS0+ZnJhbWVWaWV3KCk7CisgICAg
aWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgdmlldy0+c2VydmljZVNjcmlwdGVkQW5p
bWF0aW9ucyhjb252ZXJ0U2Vjb25kc1RvRE9NVGltZVN0YW1wKGZyYW1lQmVnaW5UaW1lKSk7CiAj
ZW5kaWYKIH0KIApAQCAtMjk5MCwxMiArMzAwMCw2IEBAIFBhc3NSZWZQdHI8R3JhcGhpY3NDb250
ZXh0M0Q+IFdlYlZpZXdJbXBsOjpjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkKICAgICBy
ZXR1cm4gY29udGV4dDsKIH0KIAotdm9pZCBXZWJWaWV3SW1wbDo6YW5pbWF0ZUFuZExheW91dChk
b3VibGUgZnJhbWVCZWdpblRpbWUpCi17Ci0gICAgYW5pbWF0ZShmcmFtZUJlZ2luVGltZSk7Ci0g
ICAgbGF5b3V0KCk7Ci19Ci0KIHZvaWQgV2ViVmlld0ltcGw6OmFwcGx5U2Nyb2xsQW5kU2NhbGUo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZURlbHRhKQogewogICAg
IGlmICghbWFpbkZyYW1lSW1wbCgpIHx8ICFtYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNjY0MTI5ZDY2ZmM1
YWM5YzlkMDA5ZmNhYWJkYjZmNGRkZWUxZjc0ZC4uNjFhMmMwNTc5NWI3ZDRkZThhNWY4ODIxYjMx
NWE2OWI3Y2MwOGM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhpdEZ1
bGxTY3JlZW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhpdEZ1bGxTY3JlZW4oKTsKICAgICB2
aXJ0dWFsIHZvaWQgYW5pbWF0ZShkb3VibGUgZnJhbWVCZWdpblRpbWUpOworICAgIC8vIFRoaXMg
YWxzbyBpbXBsZW1lbnRzIFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdENsaWVudDo6bGF5b3V0KCkK
ICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNh
bnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCk7
CkBAIC0yMzYsNyArMjM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVQYWdl
T3ZlcmxheShXZWJQYWdlT3ZlcmxheSopOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0Q2xpZW50
Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1l
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRp
bWUpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6
OkludFNpemUmLCBmbG9hdCk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYWM3NzgxMzU0M2Rj
MDMwY2U0ZDc0OWUxMzZlYjVjYWYwMmZjYjIyYy4uZTZjZThiMDY2M2VjYTllZmU3ZTM0YWZkMjJj
OGUxZmVjZTkxMGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC01OSw3ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwq
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVI
b3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0
IEludFNpemUmLCBmbG9hdCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQo
ZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0
aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSB7IH0KIH07CiAKIC8vIEFkYXB0cyBDQ0xheWVyVHJlZUhvc3RJbXBsIGZvciB0ZXN0LiBSdW5z
IHJlYWwgY29kZSwgdGhlbiBpbnZva2VzIHRlc3QgaG9va3MuCkBAIC0xMzcsOSArMTM4LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdENs
aWVudCh0ZXN0SG9va3MpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExh
eW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQogICAgIHsKLSAgICAgICAgbV90ZXN0SG9va3Mt
PmFuaW1hdGVBbmRMYXlvdXQoZnJhbWVCZWdpblRpbWUpOworICAgICAgICBtX3Rlc3RIb29rcy0+
dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpCisgICAgeworICAgICAgICBtX3Rlc3RIb29rcy0+bGF5b3V0KCk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHNjYWxlKQpAQCAtNjk2LDcgKzcwMiw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcG9zdFNldE5lZWRzQW5pbWF0ZVRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSkKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQW5pbWF0aW9ucyhkb3VibGUpCiAgICAgewogICAgICAgICBpZiAoIW1fbnVtQW5pbWF0ZXMp
IHsKICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0TmVlZHNBbmltYXRlKCk7CkBAIC03
MzYsNyArNzQyLDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5U
aHJlYWQoKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpCisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpCiAgICAgewogICAg
ICAgICBMYXllckNocm9taXVtKiByb290ID0gbV9sYXllclRyZWVIb3N0LT5yb290TGF5ZXIoKTsK
ICAgICAgICAgaWYgKCFtX2xheWVyVHJlZUhvc3QtPmZyYW1lTnVtYmVyKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDdi
YzQ0NDJhMDY5NTBkMjA5MzE4MWIzOWJiNzRmY2M4NDIyNzYyMDQuLmJjMjdjNDMyOTk2N2NhYWM2
ODFiMzUwZGEwYmEyNDc1MWM3YjJjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01Miw3ICs1Miw4IEBAIG5hbWVzcGFj
ZSB7CiAKIGNsYXNzIEZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQgOiBwdWJsaWMgQ0NMYXllclRy
ZWVIb3N0Q2xpZW50IHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91
dChkb3VibGUgZnJhbWVCZWdpblRpbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEludFNp
emUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpIHsgfQogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQo
Ym9vbCBzdWNjZXNzKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViTGF5ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5
ZXJUZXN0LmNwcAppbmRleCBhN2M5MDJiNDg5NWQ1NDdjOTVhNTg2YzFkZjBjNmM2YTM0ZjU0ODcy
Li41NTVlZGFjN2E1NWYwODQ3ZmM0YjZiZGFkZGRiODFjMGVlZmYyYzIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCkBAIC01Miw3ICs1Miw3IEBA
IGNsYXNzIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IDogcHVibGljIFdlYkxheWVyVHJlZVZp
ZXdDbGllbnQgewogcHVibGljOgogICAgIE1PQ0tfTUVUSE9EMChzY2hlZHVsZUNvbXBvc2l0ZSwg
dm9pZCgpKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFt
ZUJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91Ymxl
IGZyYW1lQmVnaW5UaW1lKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2Fs
ZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGVGYWN0b3IpIHsgfQogICAg
IHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNyZWF0ZUNvbnRleHQzRCgpIHsgcmV0dXJu
IENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcygpKS5sZWFrUHRyKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmViaW5kR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121178</attachid>
            <date>2012-01-04 15:43:50 -0800</date>
            <delta_ts>2012-01-04 17:43:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75577-20120104154349.patch</filename>
            <type>text/plain</type>
            <size>16971</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MDc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjhhYThiMjgxNmFiNGE1
YzJjMGVmMzNkNzUwZWE0ZTliNDExMmI3My4uOTE5MmJiZTk0ZDY2M2FlZTk3NDNiMGFjZTk2Y2Q2
MTVkMGMzY2VkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAxLTA0ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBS
b3V0ZSBhbGwgYW5pbWF0ZSBjYWxscyB0aHJvdWdoIENDTGF5ZXJUcmVlSG9zdCBpbiBjb21wb3Np
dGVkIG1vZGUgdG8gc2ltcGxpZnkgcmF0ZSBsaW1pdGluZyBsb2dpYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGludGVybmFsaXplcyB0aGUgYW5p
bWF0aW9uIHJhdGUgbGltaXRpbmcgbG9naWMgdG8gQ0NMYXllclRyZWVIb3N0IGFuZCByZW1vdmVz
IHRoZSBzZXR0ZXJzL2dldHRlcnMgZm9yIHRoZQorICAgICAgICBtX2FuaW1hdGluZyBmbGFnLiBU
aGlzIHJlcXVpcmVzIHRoYXQgYWxsIGFuaW1hdGlvbiB1cGRhdGVzIGhhdmUgdG8gZ28gdGhyb3Vn
aCBDQ0xheWVyVHJlZUhvc3QgdG8gZ2V0IHRoZSByaWdodAorICAgICAgICByYXRlIGxpbWl0aW5n
IGJlaGF2aW9yLCByZWdhcmRsZXNzIG9mIHdoaWNoIHByb3h5IGlzIGJlaW5nIHVzZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmltYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c3RhcnRSYXRlTGltaXRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKwogMjAxMi0w
MS0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNT
SU9OIChyOTI4MjMpOiBCYWNrZ3JvdW5kIGNvbG9yIG5vdCBwcmVzZXJ2ZWQgd2hlbiBjb3B5aW5n
IGFuZCBwYXN0aW5nIGEgdGFibGUgcm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUz
NTM4YjZkOWIwZjA5NDA5MzU1OTQ5ZDE2MjM4ZTI3ZTU1ODdiM2UuLjFlNTk1NWVhYWFiY2I5MjNm
YTc4NDk5ZjRhOWMxNzE1MGZjOTZlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsMjUgQEAKIDIwMTItMDEtMDQgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KIAorICAgICAgICBbY2hyb21pdW1dIFJvdXRlIGFsbCBhbmltYXRlIGNhbGxzIHRocm91
Z2ggQ0NMYXllclRyZWVIb3N0IGluIGNvbXBvc2l0ZWQgbW9kZSB0byBzaW1wbGlmeSByYXRlIGxp
bWl0aW5nIGxvZ2ljCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTU3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJvdXRlcyBXZWJXaWRnZXQtaW5pdGlhdGVkIGFuaW1hdGUoKSBjYWxscyB0aHJvdWdoIHRo
ZSBDQ0xheWVyVHJlZUhvc3QgaW4gY29tcG9zaXRlZCBtb2RlLiBDQ0xheWVyVHJlZUhvc3Qncwor
ICAgICAgICByYXRlIGxpbWl0aW5nIGxvZ2ljIG5lZWRzIHRvIGJlIGF3YXJlIG9mIHdoZW4gcmVx
dWVzdEFuaW1hdGlvbkZyYW1lIGNhbGxiYWNrcyBhcmUgcnVuLiBJbiB0aHJlYWRlZCBtb2RlLCB0
aGUKKyAgICAgICAgYW5pbWF0ZSBjYWxscyBhcmUgZHJpdmVuIGZyb20gQ0NUaHJlYWRQcm94eSBh
bmQgc28gdGhlIENDTGF5ZXJUcmVlSG9zdCBjYW4gc2V0IHdoYXRldmVyIHN0YXRlIGl0IG5lZWRz
LiBUaGlzCisgICAgICAgIG1ha2VzIHRoZSBzaW5nbGUtdGhyZWFkZWQgbW9kZSB3aGVyZSB0aGUg
YW5pbWF0ZSBjYWxscyBhcmUgZHJpdmVuIHRocm91Z2ggdGhlIFdlYldpZGdldCBpbnRlcmZhY2Ug
b3V0c2lkZSBvZiB0aGUKKyAgICAgICAgQ0NQcm94eSdzIGNvbnRyb2wuCisKKyAgICAgICAgVGhp
cyBpcyBhIHNtYWxsIHN0ZXAgdG93YXJkcyBpbnZlcnRpbmcgdGhlIHNjaGVkdWxpbmcgY29udHJv
bCBmcm9tIHRoZSBXZWJXaWRnZXQgdG8gdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6YW5pbWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKworMjAxMi0wMS0wNCAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gQ29tcGlsZSBmaXgsIHJl
bmFtZSBsaWJwbGF0Zm9ybS5hIHRvIGxpYndlYmtpdF9wbGF0Zm9ybS5hIHRvIGF2b2lkIGNvbGxp
c2lvbiB3aXRoIG5hY2wKIAogICAgICAgICAqIFdlYktpdC5neXA6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCBjZDc1NmQ2MDBkYzBmMGUzZjMwMWIzMmQ3ZThlODRmYzAwYWIw
NzYxLi5mNTYxYTY3YjQxZGU2ZDc3M2Q2Y2FjMDA5NGY4OGVmZjk4N2ZlMDQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTExOCwxMyArMTE4LDE4IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jCiAgICAgICAgIG1fY29udGVudHNUZXh0dXJlTWFuYWdlci0+ZXZpY3RBbmRE
ZWxldGVBbGxUZXh0dXJlcyhhbGxvY2F0b3IpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCit2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCiB7CiAgICAgbV9h
bmltYXRpbmcgPSB0cnVlOwotICAgIG1fY2xpZW50LT5hbmltYXRlQW5kTGF5b3V0KGZyYW1lQmVn
aW5UaW1lKTsKKyAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7
CiAgICAgbV9hbmltYXRpbmcgPSBmYWxzZTsKIH0KIAordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Omxh
eW91dCgpCit7CisgICAgbV9jbGllbnQtPmxheW91dCgpOworfQorCiB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6YmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaG9zdElt
cGwpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKQEAgLTUxMSw3ICs1
MTYsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBD
Q1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRS
YXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBpZiAoYW5pbWF0
aW5nKCkpCisgICAgaWYgKG1fYW5pbWF0aW5nKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KGNvbnRleHQpOwogICAgIFJhdGVMaW1pdGVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmF0ZUxpbWl0
ZXJzLmZpbmQoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI3ZDFi
MWU1ZjAzZGQzOWJkYzY2ODAwZmYxMjlmYjI0ZTRjYjA1ZWMuLjY4ZDQyMmEyMjMwMDcxMTA3MTU2
NTMyYTE0YTRjYmRhNjhlZGVmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01
Myw3ICs1Myw4IEBAIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3RDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRv
dWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRp
b25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgPSAwOwogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjcmVhdGVHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNj
ZXNzKSA9IDA7CkBAIC0xMjEsNyArMTIyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGFu
eUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0cygpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0
IGludGVyZmFjZSB0byBDQ1Byb3h5LgotICAgIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUg
ZnJhbWVCZWdpblRpbWUpOworICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVC
ZWdpblRpbWUpOworICAgIHZvaWQgbGF5b3V0KCk7CiAgICAgdm9pZCBiZWdpbkNvbW1pdE9uSW1w
bFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBmaW5pc2hDb21taXRPbklt
cGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAgIHZvaWQgY29tbWl0Q29tcGxldGUo
KTsKQEAgLTEzMywxMCArMTM1LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29tcGxldGVTd2Fw
QnVmZmVycygpIHsgbV9jbGllbnQtPmRpZENvbXBsZXRlU3dhcEJ1ZmZlcnMoKTsgfQogICAgIHZv
aWQgZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKik7
CiAKLSAgICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50ZXJmYWNlIHRvIFdlYlZpZXcuCi0gICAgYm9v
bCBhbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGluZzsgfQotICAgIHZvaWQgc2V0
QW5pbWF0aW5nKGJvb2wgYW5pbWF0aW5nKSB7IG1fYW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9IC8v
IENhbiBiZSByZW1vdmVkIHdoZW4gbm9uLXRocmVhZGVkIHNjaGVkdWxpbmcgbW92ZXMgaW5zaWRl
LgotCiAgICAgQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVu
dDsgfQogCiAgICAgaW50IGNvbXBvc2l0b3JJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9j
b21wb3NpdG9ySWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBj
MDBkZDY2ZTUzNGFhMzQ0NGY2YmU4YWQ0YWFmMWQ4NTljZDE0ZmQ2Li45MDMzMTM1MTNhOWQwOTgy
MzQxMmU1ZTc3ZDY5OTg1NDU3ZjkzYTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApA
QCAtMzYzLDE1ICszNjMsMTMgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29t
bWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyBSZS1k
byB0aGUgY29tbWl0IGZsb3cgc28gdGhhdCB3ZSBkb24ndCBzZW5kIHRoZSBzY3JvbGxJbmZvIG9u
IHRoZSBCRkFDIG1lc3NhZ2UuCiAgICAgbV9sYXllclRyZWVIb3N0LT5hcHBseVNjcm9sbEFuZFNj
YWxlKCpzY3JvbGxJbmZvKTsKIAotICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29udGV4dCBp
ZiBpdCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZAotICAgIHsKLSAgICAgICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6YW5pbWF0ZUFuZExheW91dCIsIHRoaXMsIDApOwot
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmFuaW1hdGVBbmRMYXlvdXQoZnJhbWVCZWdpblRpbWUp
OwotICAgIH0KKyAgICAvLyBGSVhNRTogcmVjcmVhdGUgdGhlIGNvbnRleHQgaWYgaXQgd2FzIHJl
cXVlc3RlZCBieSB0aGUgaW1wbCB0aHJlYWQuCisgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVB
bmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPmxheW91dCgp
OwogCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNl
TnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIAotICAgIC8vIENsZWFyIHRoZSBjb21taXQgZmxh
ZyBhZnRlciBhbmltYXRlQW5kTGF5b3V0IGhlcmUgLS0tIG9iamVjdHMgdGhhdCBvbmx5CisgICAg
Ly8gQ2xlYXIgdGhlIGNvbW1pdCBmbGFnIGFmdGVyIHVwZGF0aW5nIGFuaW1hdGlvbnMgYW5kIGxh
eW91dCBoZXJlIC0tLSBvYmplY3RzIHRoYXQgb25seQogICAgIC8vIGxheW91dCB3aGVuIHBhaW50
ZWQgd2lsbCB0cmlnZ2VyIGFub3RoZXIgc2V0TmVlZHNDb21taXQgaW5zaWRlCiAgICAgLy8gdXBk
YXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRyZWVWaWV3Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXllclRy
ZWVWaWV3Q2xpZW50LmgKaW5kZXggNmY1MDA5NjA3NmNkZjY2MmI3MjRhMDE4MzQ1Mzc0YzRiMGQ2
YWQ3OC4uYjY3NTA4ZTc1NGNlYTdhNTA4NjRlMGI4N2UwMWExOGRlOGExY2NlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTGF5ZXJUcmVlVmll
d0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkxheWVyVHJlZVZpZXdDbGllbnQuaApAQCAtMzMsOSArMzMsOSBAQCBjbGFzcyBXZWJUaHJlYWQ7
CiAKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQgewogcHVibGljOgotICAgIC8vIFVwZGF0
ZXMgYW5pbWF0aW9uIGFuZCBsYXlvdXQuIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9z
aXRpbmcgcGFzcwotICAgIC8vIHNvIHRoYXQgbGF5ZXJzIGNhbiBiZSB1cGRhdGVkIGF0IHRoZSBn
aXZlbiBmcmFtZSB0aW1lLgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSkgPSAwOworICAgIC8vIFVwZGF0ZXMgYW5pbWF0aW9uLiBUaGlzIGlz
IGNhbGxlZCBiZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3Mgc28gdGhhdAorICAgIC8vIGxheWVy
cyBjYW4gYmUgdXBkYXRlZCBhdCB0aGUgZ2l2ZW4gZnJhbWUgdGltZS4KKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsKIAogICAgIC8v
IEFwcGxpZXMgYSBzY3JvbGwgZGVsdGEgdG8gdGhlIHJvb3QgbGF5ZXIsIHdoaWNoIGlzIGJ1bmRs
ZWQgd2l0aCBhIHBhZ2UKICAgICAvLyBzY2FsZSBmYWN0b3IgdGhhdCBtYXkgYXBwbHkgYSBDU1Mg
dHJhbnNmb3JtIG9uIHRoZSB3aG9sZSBkb2N1bWVudCAodXNlZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IGVkYzE2ZWM3
YjI3MjNmYjA4ZWYzYzJkYjYxYTlmOTMxODM1MGM0MjYuLmFjZGNlYWEyZWE2MTA0ZDlmMjBmZWU1
YTQxM2U2OTRmZjNiNDMzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTYwLDEwICs2MCwxMCBAQCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKCkKIHsKIH0KIAotdm9pZCBXZWJMYXll
clRyZWVWaWV3SW1wbDo6YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCit2
b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJl
Z2luVGltZSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5hbmltYXRl
QW5kTGF5b3V0KGZyYW1lQmVnaW5UaW1lKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUFuaW1h
dGlvbnMoZnJhbWVCZWdpblRpbWUpOwogfQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjph
cHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBm
bG9hdCBwYWdlU2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuaAppbmRleCAzODExZTA5M2U1ZjNhMWE1YzdjYzEzMzM3OGZmMDA4Njhj
NmRjNTQzLi41N2ZhMDgzZDA1YzkwMTMxMzhhNzU2YTViMzA4YWUzNzk1MTlhZGJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAg
LTQxLDcgKzQxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJMYXllclRyZWVWaWV3SW1w
bChXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGlu
Z3MmKTsKICAgICB2aXJ0dWFsIH5XZWJMYXllclRyZWVWaWV3SW1wbCgpOwotICAgIHZpcnR1YWwg
dm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0
dWFsIHZvaWQgbGF5b3V0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2Nh
bGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSk7
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBjcmVh
dGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRl
R3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vzcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMjQ3NTFlMzI5YmNjOTg0YjEwMWM2NjlmNzUxMTE0NzJi
NDk3ZDhkMy4uZjI4YjMwN2ZhZTY3NWU2NjljN2QzYzlhYWZkYTU1MThmM2RiOTVlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTEyOCwyNCArMTEy
OCwzNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpkaWRFeGl0RnVsbFNjcmVlbigpCiB2b2lkIFdlYlZp
ZXdJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHsKICNpZiBFTkFCTEUoUkVR
VUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAgVFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjphbmlt
YXRlIiwgdGhpcywgMCk7CiAgICAgLy8gRklYTUU6IHJlbW92ZSB0aGlzIHplcm8tY2hlY2sgb25j
ZSByZW5kZXJfd2lkZ2V0IGhhcyBiZWVuIG1vZGlmaWVkIHRvCiAgICAgLy8gcGFzcyBpbiBhIGZy
YW1lQmVnaW5UaW1lLgogICAgIGlmICghZnJhbWVCZWdpblRpbWUpCiAgICAgICAgIGZyYW1lQmVn
aW5UaW1lID0gY3VycmVudFRpbWUoKTsKLSAgICBXZWJGcmFtZUltcGwqIHdlYmZyYW1lID0gbWFp
bkZyYW1lSW1wbCgpOwotICAgIGlmICh3ZWJmcmFtZSkgewotICAgICAgICBGcmFtZVZpZXcqIHZp
ZXcgPSB3ZWJmcmFtZS0+ZnJhbWVWaWV3KCk7Ci0gICAgICAgIGlmICh2aWV3KSB7Ci0gICAgICAg
ICAgICBpZiAoIUNDUHJveHk6Omhhc0ltcGxUaHJlYWQoKSAmJiBtX2xheWVyVHJlZUhvc3QpCi0g
ICAgICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRBbmltYXRpbmcodHJ1ZSk7CiAKLSAg
ICAgICAgICAgIHZpZXctPnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNU
b0RPTVRpbWVTdGFtcChmcmFtZUJlZ2luVGltZSkpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyAgICAvLyBJbiBjb21wb3NpdGVkIG1vZGUsIHdlIGFsd2F5cyBnbyB0aHJvdWdo
IHRoZSBjb21wb3NpdG9yIHNvIGl0IGNhbiBhcHBseQorICAgIC8vIGFwcHJvcHJpYXRlIGZsb3ct
Y29udHJvbCBtZWNoYW5pc21zLgorICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUoKSkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVn
aW5UaW1lKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgdXBkYXRlQW5pbWF0aW9ucyhmcmFt
ZUJlZ2luVGltZSk7CisjZW5kaWYKK30KIAotICAgICAgICAgICAgaWYgKCFDQ1Byb3h5OjpoYXNJ
bXBsVGhyZWFkKCkgJiYgbV9sYXllclRyZWVIb3N0KQotICAgICAgICAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0QW5pbWF0aW5nKGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KK3ZvaWQgV2Vi
Vmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQoreworI2lm
IEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKKyAgICBUUkFDRV9FVkVOVCgiV2ViVmll
d0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMiLCB0aGlzLCAwKTsKKworICAgIFdlYkZyYW1lSW1wbCog
d2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7CisgICAgaWYgKCF3ZWJmcmFtZSkKKyAgICAgICAg
cmV0dXJuOworICAgIEZyYW1lVmlldyogdmlldyA9IHdlYmZyYW1lLT5mcmFtZVZpZXcoKTsKKyAg
ICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybjsKKyAgICB2aWV3LT5zZXJ2aWNlU2NyaXB0ZWRB
bmltYXRpb25zKGNvbnZlcnRTZWNvbmRzVG9ET01UaW1lU3RhbXAoZnJhbWVCZWdpblRpbWUpKTsK
ICNlbmRpZgogfQogCkBAIC0yOTkwLDEyICszMDAwLDYgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKQogICAg
IHJldHVybiBjb250ZXh0OwogfQogCi12b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlQW5kTGF5b3V0
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKLXsKLSAgICBhbmltYXRlKGZyYW1lQmVnaW5UaW1lKTsK
LSAgICBsYXlvdXQoKTsKLX0KLQogdm9pZCBXZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2Fs
ZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlRGVsdGEpCiB7CiAg
ICAgaWYgKCFtYWluRnJhbWVJbXBsKCkgfHwgIW1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA2NjQxMjlkNjZm
YzVhYzljOWQwMDlmY2FhYmRiNmY0ZGRlZTFmNzRkLi42MWEyYzA1Nzk1YjdkNGRlOGE1Zjg4MjFi
MzE1YTY5YjdjYzA4Yzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGl0
RnVsbFNjcmVlbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGl0RnVsbFNjcmVlbigpOwogICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgLy8gVGhp
cyBhbHNvIGltcGxlbWVudHMgV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q2xpZW50OjpsYXlvdXQo
KQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2Vi
Q2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQo
KTsKQEAgLTIzNiw3ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVBh
Z2VPdmVybGF5KFdlYlBhZ2VPdmVybGF5Kik7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RDbGll
bnQKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRp
bWUpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2lu
VGltZSk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYsIGZsb2F0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBhYzc3ODEzNTQz
ZGMwMzBjZTRkNzQ5ZTEzNmViNWNhZjAyZmNiMjJjLi5lNmNlOGIwNjYzZWNhOWVmZTdlMzRhZmQy
MmM4ZTFmZWNlOTEwZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTU5LDcgKzU5LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1w
bCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJl
ZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29u
c3QgSW50U2l6ZSYsIGZsb2F0KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91
dChkb3VibGUgZnJhbWVCZWdpblRpbWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91
dCgpIHsgfQogfTsKIAogLy8gQWRhcHRzIENDTGF5ZXJUcmVlSG9zdEltcGwgZm9yIHRlc3QuIFJ1
bnMgcmVhbCBjb2RlLCB0aGVuIGludm9rZXMgdGVzdCBob29rcy4KQEAgLTEzNyw5ICsxMzgsMTQg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0
Q2xpZW50KHRlc3RIb29rcykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5k
TGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5p
bWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpCiAgICAgewotICAgICAgICBtX3Rlc3RIb29r
cy0+YW5pbWF0ZUFuZExheW91dChmcmFtZUJlZ2luVGltZSk7CisgICAgICAgIG1fdGVzdEhvb2tz
LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCkKKyAgICB7CisgICAgICAgIG1fdGVzdEhvb2tzLT5sYXlvdXQoKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXpl
JiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUpCkBAIC02OTYsNyArNzAyLDcgQEAgcHVibGljOgog
ICAgICAgICBwb3N0U2V0TmVlZHNBbmltYXRlVG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlKQorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVBbmltYXRpb25zKGRvdWJsZSkKICAgICB7CiAgICAgICAgIGlmICghbV9udW1BbmltYXRl
cykgewogICAgICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKQEAg
LTczNiw3ICs3NDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFp
blRocmVhZCgpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRv
dWJsZSBmcmFtZUJlZ2luVGltZSkKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkKICAgICB7CiAg
ICAgICAgIExheWVyQ2hyb21pdW0qIHJvb3QgPSBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigp
OwogICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdC0+ZnJhbWVOdW1iZXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
N2JjNDQ0MmEwNjk1MGQyMDkzMTgxYjM5YmI3NGZjYzg0MjI3NjIwNC4uYmMyN2M0MzI5OTY3Y2Fh
YzY4MWIzNTBkYTBiYTI0NzUxYzdiMmM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTUyLDcgKzUyLDggQEAgbmFtZXNw
YWNlIHsKIAogY2xhc3MgRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCA6IHB1YmxpYyBDQ0xheWVy
VHJlZUhvc3RDbGllbnQgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5
b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFu
aW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50
U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSkgeyB9CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkg
eyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4
dChib29sIHN1Y2Nlc3MpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJM
YXllclRlc3QuY3BwCmluZGV4IGE3YzkwMmI0ODk1ZDU0N2M5NWE1ODZjMWRmMGM2YzZhMzRmNTQ4
NzIuLjU1NWVkYWM3YTU1ZjA4NDdmYzRiNmJkYWRkZGI4MWMwZWVmZjJjMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgY2xhc3MgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgOiBwdWJsaWMgV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudCB7CiBwdWJsaWM6CiAgICAgTU9DS19NRVRIT0QwKHNjaGVkdWxlQ29tcG9zaXRl
LCB2b2lkKCkpOwogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZy
YW1lQmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3Vi
bGUgZnJhbWVCZWdpblRpbWUpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbEFuZFNj
YWxlKGNvbnN0IFdlYlNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBzY2FsZUZhY3RvcikgeyB9CiAg
ICAgdmlydHVhbCBXZWJHcmFwaGljc0NvbnRleHQzRCogY3JlYXRlQ29udGV4dDNEKCkgeyByZXR1
cm4gQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdlYkdyYXBoaWNz
Q29udGV4dDNEOjpBdHRyaWJ1dGVzKCkpLmxlYWtQdHIoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWJpbmRHcmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121193</attachid>
            <date>2012-01-04 17:43:23 -0800</date>
            <delta_ts>2012-01-05 10:24:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75577-20120104174322.patch</filename>
            <type>text/plain</type>
            <size>17203</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0MTA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNkZmJkYmEyYzI3ZjM0
MWIyMzliMWNkMzVkOTNmYWYzMTljYTBkZS4uNDFjYzRlMmZhYmU4YTYwODdhM2JkYzJiYzJkMzE1
N2JjMTMzNGQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDEyLTAxLTA0ICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBS
b3V0ZSBhbGwgYW5pbWF0ZSBjYWxscyB0aHJvdWdoIENDTGF5ZXJUcmVlSG9zdCBpbiBjb21wb3Np
dGVkIG1vZGUgdG8gc2ltcGxpZnkgcmF0ZSBsaW1pdGluZyBsb2dpYworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGludGVybmFsaXplcyB0aGUgYW5p
bWF0aW9uIHJhdGUgbGltaXRpbmcgbG9naWMgdG8gQ0NMYXllclRyZWVIb3N0IGFuZCByZW1vdmVz
IHRoZSBzZXR0ZXJzL2dldHRlcnMgZm9yIHRoZQorICAgICAgICBtX2FuaW1hdGluZyBmbGFnLiBU
aGlzIHJlcXVpcmVzIHRoYXQgYWxsIGFuaW1hdGlvbiB1cGRhdGVzIGhhdmUgdG8gZ28gdGhyb3Vn
aCBDQ0xheWVyVHJlZUhvc3QgdG8gZ2V0IHRoZSByaWdodAorICAgICAgICByYXRlIGxpbWl0aW5n
IGJlaGF2aW9yLCByZWdhcmRsZXNzIG9mIHdoaWNoIHByb3h5IGlzIGJlaW5nIHVzZWQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVBbmltYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6c3RhcnRSYXRlTGltaXRlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKworMjAxMi0w
MS0wNCAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtj
aHJvbWl1bV0gUmVtb3ZlIGNocm9taXVtIGNvbXBvc2l0b3Igc3VwcG9ydCBmb3IgdW51c2VkIHpv
b21BbmltYXRvclRyYW5zZm9ybQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzU1ODUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxNjgzNTdk
NDlhOTJhOTJjYmQxM2ExNjNjYzAzZjg0MTA5N2ZlOWEwLi4xODkzYzFmN2Y5MWQ0ODA5YjdiZTU3
MTNjYzgzMGUxZmQ2ZTIzMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsx
LDI1IEBACiAyMDEyLTAxLTA0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgW2Nocm9taXVtXSBSb3V0ZSBhbGwgYW5pbWF0ZSBjYWxscyB0aHJvdWdoIEND
TGF5ZXJUcmVlSG9zdCBpbiBjb21wb3NpdGVkIG1vZGUgdG8gc2ltcGxpZnkgcmF0ZSBsaW1pdGlu
ZyBsb2dpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzU1NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
b3V0ZXMgV2ViV2lkZ2V0LWluaXRpYXRlZCBhbmltYXRlKCkgY2FsbHMgdGhyb3VnaCB0aGUgQ0NM
YXllclRyZWVIb3N0IGluIGNvbXBvc2l0ZWQgbW9kZS4gQ0NMYXllclRyZWVIb3N0J3MKKyAgICAg
ICAgcmF0ZSBsaW1pdGluZyBsb2dpYyBuZWVkcyB0byBiZSBhd2FyZSBvZiB3aGVuIHJlcXVlc3RB
bmltYXRpb25GcmFtZSBjYWxsYmFja3MgYXJlIHJ1bi4gSW4gdGhyZWFkZWQgbW9kZSwgdGhlCisg
ICAgICAgIGFuaW1hdGUgY2FsbHMgYXJlIGRyaXZlbiBmcm9tIENDVGhyZWFkUHJveHkgYW5kIHNv
IHRoZSBDQ0xheWVyVHJlZUhvc3QgY2FuIHNldCB3aGF0ZXZlciBzdGF0ZSBpdCBuZWVkcy4gVGhp
cworICAgICAgICBtYWtlcyB0aGUgc2luZ2xlLXRocmVhZGVkIG1vZGUgd2hlcmUgdGhlIGFuaW1h
dGUgY2FsbHMgYXJlIGRyaXZlbiB0aHJvdWdoIHRoZSBXZWJXaWRnZXQgaW50ZXJmYWNlIG91dHNp
ZGUgb2YgdGhlCisgICAgICAgIENDUHJveHkncyBjb250cm9sLgorCisgICAgICAgIFRoaXMgaXMg
YSBzbWFsbCBzdGVwIHRvd2FyZHMgaW52ZXJ0aW5nIHRoZSBzY2hlZHVsaW5nIGNvbnRyb2wgZnJv
bSB0aGUgV2ViV2lkZ2V0IHRvIHRoZSBjb21wb3NpdG9yLgorCisgICAgICAgICogc3JjL1dlYlZp
ZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmFuaW1hdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmg6CisKKzIwMTItMDEtMDQgIEphbWVzIFJvYmluc29uICA8amFtZXNy
QGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSBjaHJvbWl1bSBjb21w
b3NpdG9yIHN1cHBvcnQgZm9yIHVudXNlZCB6b29tQW5pbWF0b3JUcmFuc2Zvcm0KICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTg1CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IGIxMWIyMmIyNDAyYjk1YmFkYWM2OGE5ZjBhNzgz
M2JiMTcxM2FhOTkuLjM3OWQxNjA4Mzc1OTg0ZTU5NGIyNThiMDI4MDdiZGQ1MGM2NTU0YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtMTE4LDEzICsxMTgsMTggQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmRlbGV0ZUNvbnRlbnRzVGV4dHVyZXNPbkltcGxUaHJlYWQoVGV4
dHVyZUFsbG9jYXRvciogYWxsb2MKICAgICAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5l
dmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKGFsbG9jYXRvcik7CiB9CiAKLXZvaWQgQ0NMYXllclRy
ZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKIHsK
ICAgICBtX2FuaW1hdGluZyA9IHRydWU7Ci0gICAgbV9jbGllbnQtPmFuaW1hdGVBbmRMYXlvdXQo
ZnJhbWVCZWdpblRpbWUpOworICAgIG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVn
aW5UaW1lKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOwogfQogCit2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6bGF5b3V0KCkKK3sKKyAgICBtX2NsaWVudC0+bGF5b3V0KCk7Cit9CisKIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpiZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBs
KiBob3N0SW1wbCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkpOwpAQCAt
NTAwLDcgKzUwNSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjpzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewotICAgIGlm
IChhbmltYXRpbmcoKSkKKyAgICBpZiAobV9hbmltYXRpbmcpCiAgICAgICAgIHJldHVybjsKICAg
ICBBU1NFUlQoY29udGV4dCk7CiAgICAgUmF0ZUxpbWl0ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9y
YXRlTGltaXRlcnMuZmluZChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5k
ZXggMGE2ZTU0Nzc4MzZjNWQ0ZTc0MzJkYzM3NmY3ZGZlZTI1YzEyMzc4Yi4uNGYyOTNlY2E1YTIx
MjNkNzY1YTY0MGU0ZTc0Mjg0ZmQ1Njc2MzBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKQEAgLTUzLDcgKzUzLDggQEAgY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiAKIGNsYXNzIENDTGF5
ZXJUcmVlSG9zdENsaWVudCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRM
YXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25z
dCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgcGFnZVNjYWxlKSA9IDA7CiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4
dDNEKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChi
b29sIHN1Y2Nlc3MpID0gMDsKQEAgLTEyMSw3ICsxMjIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGJvb2wgYW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCk7CiAKICAgICAvLyBDQ0xheWVy
VHJlZUhvc3QgaW50ZXJmYWNlIHRvIENDUHJveHkuCi0gICAgdm9pZCBhbmltYXRlQW5kTGF5b3V0
KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdm9pZCBsYXlvdXQoKTsKICAgICB2b2lkIGJlZ2luQ29t
bWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKICAgICB2b2lkIGZpbmlzaENv
bW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKik7CiAgICAgdm9pZCBjb21taXRD
b21wbGV0ZSgpOwpAQCAtMTMzLDEwICsxMzUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVN3YXBCdWZmZXJzKCkgeyBtX2NsaWVudC0+ZGlkQ29tcGxldGVTd2FwQnVmZmVycygpOyB9
CiAgICAgdm9pZCBkZWxldGVDb250ZW50c1RleHR1cmVzT25JbXBsVGhyZWFkKFRleHR1cmVBbGxv
Y2F0b3IqKTsKIAotICAgIC8vIENDTGF5ZXJUcmVlSG9zdCBpbnRlcmZhY2UgdG8gV2ViVmlldy4K
LSAgICBib29sIGFuaW1hdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fYW5pbWF0aW5nOyB9Ci0gICAg
dm9pZCBzZXRBbmltYXRpbmcoYm9vbCBhbmltYXRpbmcpIHsgbV9hbmltYXRpbmcgPSBhbmltYXRp
bmc7IH0gLy8gQ2FuIGJlIHJlbW92ZWQgd2hlbiBub24tdGhyZWFkZWQgc2NoZWR1bGluZyBtb3Zl
cyBpbnNpZGUuCi0KICAgICBDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJu
IG1fY2xpZW50OyB9CiAKICAgICBpbnQgY29tcG9zaXRvcklkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CmluZGV4IGMwMGRkNjZlNTM0YWEzNDQ0ZjZiZThhZDRhYWYxZDg1OWNkMTRmZDYuLjkwMzMxMzUx
M2E5ZDA5ODIzNDEyZTVlNzdkNjk5ODU0NTdmOTNhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCkBAIC0zNjMsMTUgKzM2MywxMyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJh
bWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAg
IC8vIFJlLWRvIHRoZSBjb21taXQgZmxvdyBzbyB0aGF0IHdlIGRvbid0IHNlbmQgdGhlIHNjcm9s
bEluZm8gb24gdGhlIEJGQUMgbWVzc2FnZS4KICAgICBtX2xheWVyVHJlZUhvc3QtPmFwcGx5U2Ny
b2xsQW5kU2NhbGUoKnNjcm9sbEluZm8pOwogCi0gICAgLy8gRklYTUU6IHJlY3JlYXRlIHRoZSBj
b250ZXh0IGlmIGl0IHdhcyByZXF1ZXN0ZWQgYnkgdGhlIGltcGwgdGhyZWFkCi0gICAgewotICAg
ICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjphbmltYXRlQW5kTGF5b3V0IiwgdGhp
cywgMCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YW5pbWF0ZUFuZExheW91dChmcmFtZUJl
Z2luVGltZSk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiByZWNyZWF0ZSB0aGUgY29udGV4dCBpZiBp
dCB3YXMgcmVxdWVzdGVkIGJ5IHRoZSBpbXBsIHRocmVhZC4KKyAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUFuaW1hdGlvbnMoZnJhbWVCZWdpblRpbWUpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+
bGF5b3V0KCk7CiAKICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0
U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogCi0gICAgLy8gQ2xlYXIgdGhlIGNv
bW1pdCBmbGFnIGFmdGVyIGFuaW1hdGVBbmRMYXlvdXQgaGVyZSAtLS0gb2JqZWN0cyB0aGF0IG9u
bHkKKyAgICAvLyBDbGVhciB0aGUgY29tbWl0IGZsYWcgYWZ0ZXIgdXBkYXRpbmcgYW5pbWF0aW9u
cyBhbmQgbGF5b3V0IGhlcmUgLS0tIG9iamVjdHMgdGhhdCBvbmx5CiAgICAgLy8gbGF5b3V0IHdo
ZW4gcGFpbnRlZCB3aWxsIHRyaWdnZXIgYW5vdGhlciBzZXROZWVkc0NvbW1pdCBpbnNpZGUKICAg
ICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkxheWVyVHJl
ZVZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
YkxheWVyVHJlZVZpZXdDbGllbnQuaAppbmRleCA2ZjUwMDk2MDc2Y2RmNjYyYjcyNGEwMTgzNDUz
NzRjNGIwZDZhZDc4Li45YzRkZmI3N2I3NzExNGIwZWY2N2IwMTdiZmE0YmQyMjNiM2FiNmE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJMYXll
clRyZWVWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oCkBAIC0zMyw5ICszMywxMCBAQCBjbGFzcyBX
ZWJUaHJlYWQ7CiAKIGNsYXNzIFdlYkxheWVyVHJlZVZpZXdDbGllbnQgewogcHVibGljOgotICAg
IC8vIFVwZGF0ZXMgYW5pbWF0aW9uIGFuZCBsYXlvdXQuIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSB0
aGUgY29tcG9zaXRpbmcgcGFzcwotICAgIC8vIHNvIHRoYXQgbGF5ZXJzIGNhbiBiZSB1cGRhdGVk
IGF0IHRoZSBnaXZlbiBmcmFtZSB0aW1lLgotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5
b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkgPSAwOworICAgIC8vIFVwZGF0ZXMgYW5pbWF0aW9u
IGFuZCBsYXlvdXQuIFRoZXNlIGFyZSBjYWxsZWQgYmVmb3JlIHRoZSBjb21wb3NpdGluZworICAg
IC8vIHBhc3Mgc28gdGhhdCBsYXllcnMgY2FuIGJlIHVwZGF0ZWQgYXQgdGhlIGdpdmVuIGZyYW1l
IHRpbWUuCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVn
aW5UaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpID0gMDsKIAogICAgIC8vIEFw
cGxpZXMgYSBzY3JvbGwgZGVsdGEgdG8gdGhlIHJvb3QgbGF5ZXIsIHdoaWNoIGlzIGJ1bmRsZWQg
d2l0aCBhIHBhZ2UKICAgICAvLyBzY2FsZSBmYWN0b3IgdGhhdCBtYXkgYXBwbHkgYSBDU1MgdHJh
bnNmb3JtIG9uIHRoZSB3aG9sZSBkb2N1bWVudCAodXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IGVkYzE2ZWM3YjI3
MjNmYjA4ZWYzYzJkYjYxYTlmOTMxODM1MGM0MjYuLjk4MTQ3NzExODliZjY5ZDdjOGQ1MzQ4N2My
NDlhZjIwYzEwOWQzZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAgLTYwLDEwICs2MCwxNiBAQCBXZWJMYXllclRyZWVW
aWV3SW1wbDo6fldlYkxheWVyVHJlZVZpZXdJbXBsKCkKIHsKIH0KIAotdm9pZCBXZWJMYXllclRy
ZWVWaWV3SW1wbDo6YW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpCit2b2lk
IFdlYkxheWVyVHJlZVZpZXdJbXBsOjp1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2lu
VGltZSkKIHsKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5hbmltYXRlQW5k
TGF5b3V0KGZyYW1lQmVnaW5UaW1lKTsKKyAgICAgICAgbV9jbGllbnQtPnVwZGF0ZUFuaW1hdGlv
bnMoZnJhbWVCZWdpblRpbWUpOworfQorCit2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjpsYXlv
dXQoKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmxheW91dCgpOwog
fQogCiB2b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbERlbHRhLCBmbG9hdCBwYWdlU2NhbGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAppbmRleCAz
ODExZTA5M2U1ZjNhMWE1YzdjYzEzMzM3OGZmMDA4NjhjNmRjNTQzLi41ODBlOWFmODQzODU5NDI1
ODkxNGRiMGRjODhhMTFlNzg1ZTExN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKQEAgLTQxLDcgKzQxLDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBXZWJMYXllclRyZWVWaWV3SW1wbChXZWJMYXllclRyZWVWaWV3Q2xpZW50
KiwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmKTsKICAgICB2aXJ0dWFsIH5XZWJM
YXllclRyZWVWaWV3SW1wbCgpOwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRv
dWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CiAgICAg
dmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
c2Nyb2xsRGVsdGEsIGZsb2F0IHBhZ2VTY2FsZSk7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEPiBjcmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCk7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY3JlYXRlR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2Vz
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYzg1
MmIyYzdiMjY2YjUwODEzNzIzM2Q1MWQyMzM1NTI4Y2E2YmY4NC4uZjhlYjY0MDk0MTM3ZWZiMDFk
ZmM3MjI4Y2ZkMTY3OGExMGZiYmEzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcApAQCAtMTEyOCwyNCArMTEyOCwzNCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpk
aWRFeGl0RnVsbFNjcmVlbigpCiB2b2lkIFdlYlZpZXdJbXBsOjphbmltYXRlKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZSkKIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCi0gICAg
VFJBQ0VfRVZFTlQoIldlYlZpZXdJbXBsOjphbmltYXRlIiwgdGhpcywgMCk7CiAgICAgLy8gRklY
TUU6IHJlbW92ZSB0aGlzIHplcm8tY2hlY2sgb25jZSByZW5kZXJfd2lkZ2V0IGhhcyBiZWVuIG1v
ZGlmaWVkIHRvCiAgICAgLy8gcGFzcyBpbiBhIGZyYW1lQmVnaW5UaW1lLgogICAgIGlmICghZnJh
bWVCZWdpblRpbWUpCiAgICAgICAgIGZyYW1lQmVnaW5UaW1lID0gY3VycmVudFRpbWUoKTsKLSAg
ICBXZWJGcmFtZUltcGwqIHdlYmZyYW1lID0gbWFpbkZyYW1lSW1wbCgpOwotICAgIGlmICh3ZWJm
cmFtZSkgewotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSB3ZWJmcmFtZS0+ZnJhbWVWaWV3KCk7
Ci0gICAgICAgIGlmICh2aWV3KSB7Ci0gICAgICAgICAgICBpZiAoIUNDUHJveHk6Omhhc0ltcGxU
aHJlYWQoKSAmJiBtX2xheWVyVHJlZUhvc3QpCi0gICAgICAgICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRBbmltYXRpbmcodHJ1ZSk7CiAKLSAgICAgICAgICAgIHZpZXctPnNlcnZpY2VTY3Jp
cHRlZEFuaW1hdGlvbnMoY29udmVydFNlY29uZHNUb0RPTVRpbWVTdGFtcChmcmFtZUJlZ2luVGlt
ZSkpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAvLyBJbiBjb21wb3Np
dGVkIG1vZGUsIHdlIGFsd2F5cyBnbyB0aHJvdWdoIHRoZSBjb21wb3NpdG9yIHNvIGl0IGNhbiBh
cHBseQorICAgIC8vIGFwcHJvcHJpYXRlIGZsb3ctY29udHJvbCBtZWNoYW5pc21zLgorICAgIGlm
IChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkKKyAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICBlbHNlCisjZW5kaWYK
KyAgICAgICAgdXBkYXRlQW5pbWF0aW9ucyhmcmFtZUJlZ2luVGltZSk7CisjZW5kaWYKK30KIAot
ICAgICAgICAgICAgaWYgKCFDQ1Byb3h5OjpoYXNJbXBsVGhyZWFkKCkgJiYgbV9sYXllclRyZWVI
b3N0KQotICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0QW5pbWF0aW5nKGZhbHNl
KTsKLSAgICAgICAgfQotICAgIH0KK3ZvaWQgV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMo
ZG91YmxlIGZyYW1lQmVnaW5UaW1lKQoreworI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9G
UkFNRSkKKyAgICBUUkFDRV9FVkVOVCgiV2ViVmlld0ltcGw6OnVwZGF0ZUFuaW1hdGlvbnMiLCB0
aGlzLCAwKTsKKworICAgIFdlYkZyYW1lSW1wbCogd2ViZnJhbWUgPSBtYWluRnJhbWVJbXBsKCk7
CisgICAgaWYgKCF3ZWJmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIEZyYW1lVmlldyogdmll
dyA9IHdlYmZyYW1lLT5mcmFtZVZpZXcoKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVy
bjsKKyAgICB2aWV3LT5zZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGNvbnZlcnRTZWNvbmRzVG9E
T01UaW1lU3RhbXAoZnJhbWVCZWdpblRpbWUpKTsKICNlbmRpZgogfQogCkBAIC0yOTgwLDEyICsy
OTkwLDYgQEAgUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gV2ViVmlld0ltcGw6OmNyZWF0
ZUxheWVyVHJlZUhvc3RDb250ZXh0M0QoKQogICAgIHJldHVybiBjb250ZXh0OwogfQogCi12b2lk
IFdlYlZpZXdJbXBsOjphbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKLXsK
LSAgICBhbmltYXRlKGZyYW1lQmVnaW5UaW1lKTsKLSAgICBsYXlvdXQoKTsKLX0KLQogdm9pZCBX
ZWJWaWV3SW1wbDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgZmxvYXQgcGFnZVNjYWxlRGVsdGEpCiB7CiAgICAgaWYgKCFtYWluRnJhbWVJbXBsKCkgfHwg
IW1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAppbmRleCA2NjQxMjlkNjZmYzVhYzljOWQwMDlmY2FhYmRiNmY0ZGRlZTFm
NzRkLi42MWEyYzA1Nzk1YjdkNGRlOGE1Zjg4MjFiMzE1YTY5YjdjYzA4Yzk3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGl0RnVsbFNjcmVlbigpOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGl0RnVsbFNjcmVlbigpOwogICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKGRvdWJs
ZSBmcmFtZUJlZ2luVGltZSk7CisgICAgLy8gVGhpcyBhbHNvIGltcGxlbWVudHMgV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0Q2xpZW50OjpsYXlvdXQoKQogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKTsKQEAgLTIzNiw3ICsyMzcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVBhZ2VPdmVybGF5KFdlYlBhZ2VPdmVybGF5Kik7
CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0
ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CiAgICAgdmlydHVhbCB2b2lkIGFw
cGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGZsb2F0KTsKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IGNyZWF0ZUxheWVy
VHJlZUhvc3RDb250ZXh0M0QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAppbmRleCBhYzc3ODEzNTQzZGMwMzBjZTRkNzQ5ZTEzNmViNWNhZjAyZmNi
MjJjLi5lNmNlOGIwNjYzZWNhOWVmZTdlMzRhZmQyMmM4ZTFmZWNlOTEwZGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAK
QEAgLTU5LDcgKzU5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0
ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBk
cmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYsIGZsb2F0KSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIHsgfQogfTsKIAogLy8gQWRhcHRzIEND
TGF5ZXJUcmVlSG9zdEltcGwgZm9yIHRlc3QuIFJ1bnMgcmVhbCBjb2RlLCB0aGVuIGludm9rZXMg
dGVzdCBob29rcy4KQEAgLTEzNyw5ICsxMzgsMTQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50KHRlc3RIb29rcykpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRp
bWUpCiAgICAgewotICAgICAgICBtX3Rlc3RIb29rcy0+YW5pbWF0ZUFuZExheW91dChmcmFtZUJl
Z2luVGltZSk7CisgICAgICAgIG1fdGVzdEhvb2tzLT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVn
aW5UaW1lKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkKKyAgICB7CisgICAg
ICAgIG1fdGVzdEhvb2tzLT5sYXlvdXQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBw
bHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGUp
CkBAIC02OTYsNyArNzAyLDcgQEAgcHVibGljOgogICAgICAgICBwb3N0U2V0TmVlZHNBbmltYXRl
VG9NYWluVGhyZWFkKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGVBbmRMYXlv
dXQoZG91YmxlKQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSkKICAg
ICB7CiAgICAgICAgIGlmICghbV9udW1BbmltYXRlcykgewogICAgICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5zZXROZWVkc0FuaW1hdGUoKTsKQEAgLTczNiw3ICs3NDIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCkKICAgICB7CiAgICAgICAgIExheWVyQ2hyb21pdW0qIHJvb3Qg
PSBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpOwogICAgICAgICBpZiAoIW1fbGF5ZXJUcmVl
SG9zdC0+ZnJhbWVOdW1iZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggN2JjNDQ0MmEwNjk1MGQyMDkzMTgxYjM5YmI3
NGZjYzg0MjI3NjIwNC4uYmMyN2M0MzI5OTY3Y2FhYzY4MWIzNTBkYTBiYTI0NzUxYzdiMmM3YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTUyLDcgKzUyLDggQEAgbmFtZXNwYWNlIHsKIAogY2xhc3MgRmFrZUNDTGF5ZXJU
cmVlSG9zdENsaWVudCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RDbGllbnQgewogcHVibGljOgot
ICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkg
eyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5U
aW1lKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGZsb2F0IHBh
Z2VTY2FsZSkgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBj
cmVhdGVMYXllclRyZWVIb3N0Q29udGV4dDNEKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nlc3MpIHsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IGE3YzkwMmI0
ODk1ZDU0N2M5NWE1ODZjMWRmMGM2YzZhMzRmNTQ4NzIuLmUwY2FiODdiZGY1NWJhMjhmYjcyNjY3
MDk2ODI2YjJkMDNjNjdjNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViTGF5ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkxheWVyVGVzdC5jcHAKQEAgLTUyLDcgKzUyLDggQEAgY2xhc3MgTW9ja1dlYkxheWVyVHJlZVZp
ZXdDbGllbnQgOiBwdWJsaWMgV2ViTGF5ZXJUcmVlVmlld0NsaWVudCB7CiBwdWJsaWM6CiAgICAg
TU9DS19NRVRIT0QwKHNjaGVkdWxlQ29tcG9zaXRlLCB2b2lkKCkpOwogCi0gICAgdmlydHVhbCB2
b2lkIGFuaW1hdGVBbmRMYXlvdXQoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBsYXlvdXQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlTY3JvbGxB
bmRTY2FsZShjb25zdCBXZWJTaXplJiBzY3JvbGxEZWx0YSwgZmxvYXQgc2NhbGVGYWN0b3IpIHsg
fQogICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNyZWF0ZUNvbnRleHQzRCgpIHsg
cmV0dXJuIENvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFw
aGljc0NvbnRleHQzRDo6QXR0cmlidXRlcygpKS5sZWFrUHRyKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmViaW5kR3JhcGhpY3NDb250ZXh0KGJvb2wgc3VjY2VzcykgeyB9Cg==
</data>
<flag name="review"
          id="121608"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="121640"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>