<?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>137685</bug_id>
          
          <creation_ts>2014-10-14 03:52:12 -0700</creation_ts>
          <short_desc>[GTK] Move click counter logic back to WebKitWebViewBase</short_desc>
          <delta_ts>2014-12-11 09:07:10 -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>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>berto</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041524</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-14 03:52:12 -0700</bug_when>
    <thetext>It was moved to a shared class in platform to be used by both WebKit1 and WebKit2, but it&apos;s currently only used by WebKitWebViewBase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041525</commentid>
    <comment_count>1</comment_count>
      <attachid>239791</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-14 03:54:54 -0700</bug_when>
    <thetext>Created attachment 239791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041527</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-14 03:55:49 -0700</bug_when>
    <thetext>Btw, this is also another file we don&apos;t build twice because of the plugin process :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041528</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 03:57:05 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041565</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-10-14 09:03:33 -0700</bug_when>
    <thetext>Again, I think we should just move this class to WebKit2. It&apos;s useful to separate code into classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041805</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-14 23:23:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Again, I think we should just move this class to WebKit2. It&apos;s useful to separate code into classes.

I don&apos;t think it&apos;s always helpful, in this case we end up with a very small class (another file to build) with a single method that IMO belongs to the view. In the case of the DND helper is even worse, because having half of the code in the web view and the other half in a separate class makes quite difficult to follow the code (and DND logic is already complex enough). It made sense to me when we needed to share the common code, but that&apos;s no longer needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042766</commentid>
    <comment_count>6</comment_count>
      <attachid>240104</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-10-20 03:26:43 -0700</bug_when>
    <thetext>Created attachment 240104
Rebased patch to apply on current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054493</commentid>
    <comment_count>7</comment_count>
      <attachid>243124</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-12-11 08:39:46 -0800</bug_when>
    <thetext>Created attachment 243124
New patch

Added a private struct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054496</commentid>
    <comment_count>8</comment_count>
      <attachid>243124</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-12-11 08:42:36 -0800</bug_when>
    <thetext>Comment on attachment 243124
New patch

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

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:768
&gt; +    // For double and triple clicks GDK sends both a normal button press event
&gt; +    // and a specific type (like GDK_2BUTTON_PRESS). If we detect a special press
&gt; +    // coming up, ignore this event as it certainly generated the double or triple
&gt; +    // click. The consequence of not eating this event is two DOM button press events
&gt; +    // are generated.
&gt; +    GUniquePtr&lt;GdkEvent&gt; nextEvent(gdk_event_peek());
&gt; +    if (nextEvent &amp;&amp; (nextEvent-&gt;any.type == GDK_2BUTTON_PRESS || nextEvent-&gt;any.type == GDK_3BUTTON_PRESS))
&gt;          return TRUE;

I think I prefer this method as part of the click counter, since understanding types of click events is what it&apos;s good at.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054501</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-12-11 08:51:48 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 243124 [details]
&gt; New patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=243124&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:768
&gt; &gt; +    // For double and triple clicks GDK sends both a normal button press event
&gt; &gt; +    // and a specific type (like GDK_2BUTTON_PRESS). If we detect a special press
&gt; &gt; +    // coming up, ignore this event as it certainly generated the double or triple
&gt; &gt; +    // click. The consequence of not eating this event is two DOM button press events
&gt; &gt; +    // are generated.
&gt; &gt; +    GUniquePtr&lt;GdkEvent&gt; nextEvent(gdk_event_peek());
&gt; &gt; +    if (nextEvent &amp;&amp; (nextEvent-&gt;any.type == GDK_2BUTTON_PRESS || nextEvent-&gt;any.type == GDK_3BUTTON_PRESS))
&gt; &gt;          return TRUE;
&gt; 
&gt; I think I prefer this method as part of the click counter, since
&gt; understanding types of click events is what it&apos;s good at.

it doesn&apos;t use anything from the click counter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054502</commentid>
    <comment_count>10</comment_count>
      <attachid>243124</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2014-12-11 08:57:12 -0800</bug_when>
    <thetext>Comment on attachment 243124
New patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:768
&gt;&gt;&gt;          return TRUE;
&gt;&gt; 
&gt;&gt; I think I prefer this method as part of the click counter, since understanding types of click events is what it&apos;s good at.
&gt; 
&gt; it doesn&apos;t use anything from the click counter

I just meant that it is involved with counting clicks. Perhaps if it had a better name, it would make more sense. I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1054507</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-12-11 09:07:10 -0800</bug_when>
    <thetext>Committed r177148: &lt;http://trac.webkit.org/changeset/177148&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239791</attachid>
            <date>2014-10-14 03:54:54 -0700</date>
            <delta_ts>2014-10-20 03:26:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-click-counter.diff</filename>
            <type>text/plain</type>
            <size>13818</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0Y2IzYzYyLi43YWQ4YzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTQtMTAtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIE1vdmUgY2xpY2sgY291bnRlciBsb2dpYyBiYWNrIHRvIFdlYktp
dFdlYlZpZXdCYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzc2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgR3RrQ2xpY2tDb3VudGVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21h
a2U6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5oOiBSZW1vdmVkLgorCiAy
MDE0LTEwLTEzICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIHVudXNlZCBzdGFsZSBQYWdlIHByb3RvY29sIG1ldGhv
ZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggZGE4NjIwMy4uNWYwOTA5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKQEAgLTIyMiw3ICsyMjIsNiBAQCBsaXN0KEFQUEVORCBXZWJD
b3JlUGxhdGZvcm1HVEtfU09VUkNFUwogICAgIHBsYXRmb3JtL2d0ay9EcmFnSWNvbi5jcHAKICAg
ICBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HUmVmUHRy
R3RrLmNwcAotICAgIHBsYXRmb3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuY3BwCiAgICAgcGxhdGZv
cm0vZ3RrL0d0a0RyYWdBbmREcm9wSGVscGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtJbnB1
dE1ldGhvZEZpbHRlci5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrVG91Y2hDb250ZXh0SGVscGVy
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU4ZDEyZC4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEln
YWxpYSBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiR3RrQ2xpY2tDb3VudGVyLmgiCi0KLSNpbmNsdWRlICJHVW5pcXVl
UHRyR3RrLmgiCi0jaW5jbHVkZSA8Z3RrL2d0ay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LUd0a0NsaWNrQ291bnRlcjo6R3RrQ2xpY2tDb3VudGVyKCkKLSAgICA6IG1fY3VycmVudENsaWNr
Q291bnQoMCkKLSAgICAsIG1fcHJldmlvdXNDbGlja0J1dHRvbigwKQotICAgICwgbV9wcmV2aW91
c0NsaWNrVGltZSgwKQotewotfQotCi12b2lkIEd0a0NsaWNrQ291bnRlcjo6cmVzZXQoKQotewot
ICAgIG1fY3VycmVudENsaWNrQ291bnQgPSAwOwotICAgIG1fcHJldmlvdXNDbGlja1BvaW50ID0g
SW50UG9pbnQoKTsKLSAgICBtX3ByZXZpb3VzQ2xpY2tUaW1lID0gMDsKLSAgICBtX3ByZXZpb3Vz
Q2xpY2tCdXR0b24gPSAwOwotfQotCi1ib29sIEd0a0NsaWNrQ291bnRlcjo6c2hvdWxkUHJvY2Vz
c0J1dHRvbkV2ZW50KEdka0V2ZW50QnV0dG9uKikKLXsKLSAgICAvLyBGb3IgZG91YmxlIGFuZCB0
cmlwbGUgY2xpY2tzIEdESyBzZW5kcyBib3RoIGEgbm9ybWFsIGJ1dHRvbiBwcmVzcyBldmVudAot
ICAgIC8vIGFuZCBhIHNwZWNpZmljIHR5cGUgKGxpa2UgR0RLXzJCVVRUT05fUFJFU1MpLiBJZiB3
ZSBkZXRlY3QgYSBzcGVjaWFsIHByZXNzCi0gICAgLy8gY29taW5nIHVwLCBpZ25vcmUgdGhpcyBl
dmVudCBhcyBpdCBjZXJ0YWlubHkgZ2VuZXJhdGVkIHRoZSBkb3VibGUgb3IgdHJpcGxlCi0gICAg
Ly8gY2xpY2suIFRoZSBjb25zZXF1ZW5jZSBvZiBub3QgZWF0aW5nIHRoaXMgZXZlbnQgaXMgdHdv
IERPTSBidXR0b24gcHJlc3MgZXZlbnRzCi0gICAgLy8gYXJlIGdlbmVyYXRlZC4KLSAgICBHVW5p
cXVlUHRyPEdka0V2ZW50PiBuZXh0RXZlbnQoZ2RrX2V2ZW50X3BlZWsoKSk7Ci0gICAgaWYgKCFu
ZXh0RXZlbnQpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChuZXh0RXZlbnQtPmFueS50
eXBlID09IEdES18yQlVUVE9OX1BSRVNTIHx8IG5leHRFdmVudC0+YW55LnR5cGUgPT0gR0RLXzNC
VVRUT05fUFJFU1MpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotc3RhdGljIGd1aW50MzIgZ2V0RXZlbnRUaW1lKEdka0V2ZW50KiBldmVudCkKLXsKLSAgICBn
dWludDMyIHRpbWUgPSBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpOwotICAgIGlmICh0aW1lKQot
ICAgICAgICByZXR1cm4gdGltZTsKLQotICAgIC8vIFJlYWwgZXZlbnRzIGFsd2F5cyBoYXZlIGEg
bm9uLXplcm8gdGltZSwgYnV0IGV2ZW50cyBzeW50aGVzaXplZAotICAgIC8vIGJ5IHRoZSBEUlQg
ZG8gbm90IGFuZCB3ZSBtdXN0IGNhbGN1bGF0ZSBhIHRpbWUgbWFudWFsbHkuIFRoaXMgdGltZQot
ICAgIC8vIGlzIG5vdCBjYWxjdWxhdGVkIGluIHRoZSBEUlQsIGJlY2F1c2UgR1RLKyBkb2VzIG5v
dCB3b3JrIHdlbGwgd2l0aAotICAgIC8vIGFueXRoaW5nIG90aGVyIHRoYW4gR0RLX0NVUlJFTlRf
VElNRSBvbiBzeW50aGVzaXplZCBldmVudHMuCi0gICAgR1RpbWVWYWwgdGltZVZhbHVlOwotICAg
IGdfZ2V0X2N1cnJlbnRfdGltZSgmdGltZVZhbHVlKTsKLSAgICByZXR1cm4gKHRpbWVWYWx1ZS50
dl9zZWMgKiAxMDAwKSArICh0aW1lVmFsdWUudHZfdXNlYyAvIDEwMDApOwotfQotCi1pbnQgR3Rr
Q2xpY2tDb3VudGVyOjpjbGlja0NvdW50Rm9yR2RrQnV0dG9uRXZlbnQoR3RrV2lkZ2V0KiB3aWRn
ZXQsIEdka0V2ZW50QnV0dG9uKiBidXR0b25FdmVudCkKLXsKLSAgICBnaW50IGRvdWJsZUNsaWNr
RGlzdGFuY2UgPSAyNTA7Ci0gICAgZ2ludCBkb3VibGVDbGlja1RpbWUgPSA1OwotICAgIEd0a1Nl
dHRpbmdzKiBzZXR0aW5ncyA9IGd0a19zZXR0aW5nc19nZXRfZm9yX3NjcmVlbihndGtfd2lkZ2V0
X2dldF9zY3JlZW4od2lkZ2V0KSk7Ci0gICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLAotICAgICAg
ICAgICAgICAgICAiZ3RrLWRvdWJsZS1jbGljay1kaXN0YW5jZSIsICZkb3VibGVDbGlja0Rpc3Rh
bmNlLAotICAgICAgICAgICAgICAgICAiZ3RrLWRvdWJsZS1jbGljay10aW1lIiwgJmRvdWJsZUNs
aWNrVGltZSwgTlVMTCk7Ci0KLSAgICAvLyBHVEsrIG9ubHkgY291bnRzIHVwIHRvIHRyaXBsZSBj
bGlja3MsIGJ1dCBXZWJDb3JlIHdhbnRzIHRvIGtub3cgYWJvdXQKLSAgICAvLyBxdWFkcnVwbGUg
Y2xpY2tzLCBxdWludHVwbGUgY2xpY2tzLCBhZCBpbmZpbml0dW0uIEhlcmUsIHdlIHJlcGxpY2F0
ZSB0aGUKLSAgICAvLyBHREsgbG9naWMgZm9yIGNvdW50aW5nIGNsaWNrcy4KLSAgICBHZGtFdmVu
dCogZXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSk7Ci0gICAg
Z3VpbnQzMiBldmVudFRpbWUgPSBnZXRFdmVudFRpbWUoZXZlbnQpOwotCi0gICAgaWYgKChldmVu
dC0+dHlwZSA9PSBHREtfMkJVVFRPTl9QUkVTUyB8fCBldmVudC0+dHlwZSA9PSBHREtfM0JVVFRP
Tl9QUkVTUykKLSAgICAgICAgfHwgKChhYnMoYnV0dG9uRXZlbnQtPnggLSBtX3ByZXZpb3VzQ2xp
Y2tQb2ludC54KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKLSAgICAgICAgICAgICYmIChhYnMo
YnV0dG9uRXZlbnQtPnkgLSBtX3ByZXZpb3VzQ2xpY2tQb2ludC55KCkpIDwgZG91YmxlQ2xpY2tE
aXN0YW5jZSkKLSAgICAgICAgICAgICYmIChldmVudFRpbWUgLSBtX3ByZXZpb3VzQ2xpY2tUaW1l
IDwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KGRvdWJsZUNsaWNrVGltZSkpCi0gICAgICAgICAgICAmJiAo
YnV0dG9uRXZlbnQtPmJ1dHRvbiA9PSBtX3ByZXZpb3VzQ2xpY2tCdXR0b24pKSkKLSAgICAgICAg
bV9jdXJyZW50Q2xpY2tDb3VudCsrOwotICAgIGVsc2UKLSAgICAgICAgbV9jdXJyZW50Q2xpY2tD
b3VudCA9IDE7Ci0KLSAgICBnZG91YmxlIHgsIHk7Ci0gICAgZ2RrX2V2ZW50X2dldF9jb29yZHMo
ZXZlbnQsICZ4LCAmeSk7Ci0gICAgbV9wcmV2aW91c0NsaWNrUG9pbnQgPSBJbnRQb2ludCh4LCB5
KTsKLSAgICBtX3ByZXZpb3VzQ2xpY2tCdXR0b24gPSBidXR0b25FdmVudC0+YnV0dG9uOwotICAg
IG1fcHJldmlvdXNDbGlja1RpbWUgPSBldmVudFRpbWU7Ci0KLSAgICByZXR1cm4gbV9jdXJyZW50
Q2xpY2tDb3VudDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2NmNhMWRlLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtDbGlja0NvdW50ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgSWdhbGlhIFMuTC4KLSAqCi0gKiAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICog
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEz
MDEgIFVTQQotICovCi0KLSNpZm5kZWYgR3RrQ2xpY2tDb3VudGVyX2gKLSNkZWZpbmUgR3RrQ2xp
Y2tDb3VudGVyX2gKLQotI2luY2x1ZGUgIkludFBvaW50LmgiCi0KLXR5cGVkZWYgc3RydWN0IF9H
ZGtFdmVudEJ1dHRvbiBHZGtFdmVudEJ1dHRvbjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBHdGtDbGlja0NvdW50ZXIgewotcHVibGljOgotICAgIEd0a0NsaWNrQ291bnRlcigpOwot
ICAgIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIHNob3VsZFByb2Nlc3NCdXR0b25FdmVudChHZGtF
dmVudEJ1dHRvbiopOwotICAgIGludCBjbGlja0NvdW50Rm9yR2RrQnV0dG9uRXZlbnQoR3RrV2lk
Z2V0KiwgR2RrRXZlbnRCdXR0b24qKTsKLQotcHJpdmF0ZToKLSAgICBpbnQgbV9jdXJyZW50Q2xp
Y2tDb3VudDsKLSAgICBJbnRQb2ludCBtX3ByZXZpb3VzQ2xpY2tQb2ludDsKLSAgICB1bnNpZ25l
ZCBpbnQgbV9wcmV2aW91c0NsaWNrQnV0dG9uOwotICAgIGludCBtX3ByZXZpb3VzQ2xpY2tUaW1l
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDZiN2MyOTguLmZhZjMzOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNC0xMC0x
NCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gTW92ZSBjbGljayBjb3VudGVyIGxvZ2ljIGJhY2sgdG8gV2ViS2l0V2ViVmlld0Jhc2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IHdhcyBt
b3ZlZCB0byBhIHNoYXJlZCBjbGFzcyBpbiBwbGF0Zm9ybSB0byBiZSB1c2VkIGJ5IGJvdGgKKyAg
ICAgICAgV2ViS2l0MSBhbmQgV2ViS2l0MiwgYnV0IGl0J3MgY3VycmVudGx5IG9ubHkgdXNlZCBi
eSBXZWJLaXRXZWJWaWV3QmFzZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlVXBkYXRlQ2xpY2tD
b3VudEZvckdka0J1dHRvbkV2ZW50KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9u
UHJlc3NFdmVudCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyk6CisgICAg
ICAgICh3ZWJraXRXZWJWaWV3QmFzZVJlc2V0Q2xpY2tDb3VudGVyKToKKwogMjAxNC0xMC0xMyAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dU
S11bQ01ha2VdIE5vbi1uaW5qYSBidWlsZCBpcyBicm9rZW4gc2luY2UgcjE3NDQyMgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCmluZGV4IDQwNDZjMGEuLmNhZDA4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTUzLDcgKzUzLDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFn
SWNvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR1VuaXF1ZVB0ckd0ay5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvR3RrQ2xpY2tDb3VudGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtEcmFnQW5kRHJv
cEhlbHBlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3RrVG91Y2hDb250ZXh0SGVscGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KQEAgLTk4LDcgKzk3LDYgQEAgc3RydWN0
IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ2xp
ZW50SW1wbD4gcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7
CiAgICAgYm9vbCBzaG91bGRGb3J3YXJkTmV4dEtleUV2ZW50OwotICAgIEd0a0NsaWNrQ291bnRl
ciBjbGlja0NvdW50ZXI7CiAgICAgQ1N0cmluZyB0b29sdGlwVGV4dDsKICAgICBJbnRSZWN0IHRv
b2x0aXBBcmVhOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkBAIC0xMzMsNiArMTMxLDEyIEBA
IHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlIHsKICAgICBib29sIGlzVmlzaWJsZSA6
IDE7CiAgICAgYm9vbCBpc1dpbmRvd1Zpc2libGUgOiAxOwogCisgICAgLy8gQ2xpY2sgQ291bnRl
ci4KKyAgICBpbnQgY3VycmVudENsaWNrQ291bnQ7CisgICAgSW50UG9pbnQgcHJldmlvdXNDbGlj
a1BvaW50OworICAgIHVuc2lnbmVkIHByZXZpb3VzQ2xpY2tCdXR0b247CisgICAgaW50IHByZXZp
b3VzQ2xpY2tUaW1lOworCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VEb3dubG9hZFJlcXVlc3RIYW5k
bGVyIGRvd25sb2FkSGFuZGxlcjsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTY3
OCw2ICs2ODIsNDUgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlS2V5UmVsZWFz
ZUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSoKICAgICByZXR1cm4gVFJVRTsK
IH0KIAorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVDbGlja0NvdW50Rm9yR2Rr
QnV0dG9uRXZlbnQoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHZGtFdmVudEJ1dHRv
biogYnV0dG9uRXZlbnQpCit7CisgICAgaW50IGRvdWJsZUNsaWNrRGlzdGFuY2UgPSAyNTA7Cisg
ICAgaW50IGRvdWJsZUNsaWNrVGltZSA9IDU7CisgICAgZ19vYmplY3RfZ2V0KGd0a193aWRnZXRf
Z2V0X3NldHRpbmdzKEdUS19XSURHRVQod2ViVmlld0Jhc2UpKSwgImd0ay1kb3VibGUtY2xpY2st
ZGlzdGFuY2UiLCAmZG91YmxlQ2xpY2tEaXN0YW5jZSwKKyAgICAgICAgImd0ay1kb3VibGUtY2xp
Y2stdGltZSIsICZkb3VibGVDbGlja1RpbWUsIG51bGxwdHIpOworCisgICAgLy8gR1RLKyBvbmx5
IGNvdW50cyB1cCB0byB0cmlwbGUgY2xpY2tzLCBidXQgV2ViQ29yZSB3YW50cyB0byBrbm93IGFi
b3V0CisgICAgLy8gcXVhZHJ1cGxlIGNsaWNrcywgcXVpbnR1cGxlIGNsaWNrcywgYWQgaW5maW5p
dHVtLiBIZXJlLCB3ZSByZXBsaWNhdGUgdGhlCisgICAgLy8gR0RLIGxvZ2ljIGZvciBjb3VudGlu
ZyBjbGlja3MuCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxHZGtFdmVu
dCo+KGJ1dHRvbkV2ZW50KTsKKyAgICBndWludDMyIGV2ZW50VGltZSA9IGdka19ldmVudF9nZXRf
dGltZShldmVudCk7CisgICAgaWYgKCFldmVudFRpbWUpIHsKKyAgICAgICAgLy8gUmVhbCBldmVu
dHMgYWx3YXlzIGhhdmUgYSBub24temVybyB0aW1lLCBidXQgZXZlbnRzIHN5bnRoZXNpemVkCisg
ICAgICAgIC8vIGJ5IHRoZSBXVFIgZG8gbm90IGFuZCB3ZSBtdXN0IGNhbGN1bGF0ZSBhIHRpbWUg
bWFudWFsbHkuIFRoaXMgdGltZQorICAgICAgICAvLyBpcyBub3QgY2FsY3VsYXRlZCBpbiB0aGUg
V1RSLCBiZWNhdXNlIEdUSysgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGgKKyAgICAgICAgLy8gYW55
dGhpbmcgb3RoZXIgdGhhbiBHREtfQ1VSUkVOVF9USU1FIG9uIHN5bnRoZXNpemVkIGV2ZW50cy4K
KyAgICAgICAgR1RpbWVWYWwgdGltZVZhbHVlOworICAgICAgICBnX2dldF9jdXJyZW50X3RpbWUo
JnRpbWVWYWx1ZSk7CisgICAgICAgIGV2ZW50VGltZSA9ICh0aW1lVmFsdWUudHZfc2VjICogMTAw
MCkgKyAodGltZVZhbHVlLnR2X3VzZWMgLyAxMDAwKTsKKyAgICB9CisKKyAgICBXZWJLaXRXZWJW
aWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJpdjsKKyAgICBpZiAoKGV2ZW50
LT50eXBlID09IEdES18yQlVUVE9OX1BSRVNTIHx8IGV2ZW50LT50eXBlID09IEdES18zQlVUVE9O
X1BSRVNTKQorICAgICAgICB8fCAoKGFicyhidXR0b25FdmVudC0+eCAtIHByaXYtPnByZXZpb3Vz
Q2xpY2tQb2ludC54KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKKyAgICAgICAgICAgICYmIChh
YnMoYnV0dG9uRXZlbnQtPnkgLSBwcml2LT5wcmV2aW91c0NsaWNrUG9pbnQueSgpKSA8IGRvdWJs
ZUNsaWNrRGlzdGFuY2UpCisgICAgICAgICAgICAmJiAoZXZlbnRUaW1lIC0gcHJpdi0+cHJldmlv
dXNDbGlja1RpbWUgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZG91YmxlQ2xpY2tUaW1lKSkKKyAg
ICAgICAgICAgICYmIChidXR0b25FdmVudC0+YnV0dG9uID09IHByaXYtPnByZXZpb3VzQ2xpY2tC
dXR0b24pKSkKKyAgICAgICAgcHJpdi0+Y3VycmVudENsaWNrQ291bnQrKzsKKyAgICBlbHNlCisg
ICAgICAgIHByaXYtPmN1cnJlbnRDbGlja0NvdW50ID0gMTsKKworICAgIGRvdWJsZSB4LCB5Owor
ICAgIGdka19ldmVudF9nZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOworICAgIHByaXYtPnByZXZp
b3VzQ2xpY2tQb2ludCA9IEludFBvaW50KHgsIHkpOworICAgIHByaXYtPnByZXZpb3VzQ2xpY2tC
dXR0b24gPSBidXR0b25FdmVudC0+YnV0dG9uOworICAgIHByaXYtPnByZXZpb3VzQ2xpY2tUaW1l
ID0gZXZlbnRUaW1lOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VCdXR0
b25QcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogYnV0dG9uRXZl
bnQpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlID0gV0VCS0lUX1dFQl9W
SUVXX0JBU0Uod2lkZ2V0KTsKQEAgLTY5MCwxNCArNzMzLDIxIEBAIHN0YXRpYyBnYm9vbGVhbiB3
ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50QnV0CiAKICAgICBwcml2LT5pbnB1dE1ldGhvZEZpbHRlci5ub3RpZnlNb3VzZUJ1dHRvblBy
ZXNzKCk7CiAKLSAgICBpZiAoIXByaXYtPmNsaWNrQ291bnRlci5zaG91bGRQcm9jZXNzQnV0dG9u
RXZlbnQoYnV0dG9uRXZlbnQpKQorICAgIC8vIEZvciBkb3VibGUgYW5kIHRyaXBsZSBjbGlja3Mg
R0RLIHNlbmRzIGJvdGggYSBub3JtYWwgYnV0dG9uIHByZXNzIGV2ZW50CisgICAgLy8gYW5kIGEg
c3BlY2lmaWMgdHlwZSAobGlrZSBHREtfMkJVVFRPTl9QUkVTUykuIElmIHdlIGRldGVjdCBhIHNw
ZWNpYWwgcHJlc3MKKyAgICAvLyBjb21pbmcgdXAsIGlnbm9yZSB0aGlzIGV2ZW50IGFzIGl0IGNl
cnRhaW5seSBnZW5lcmF0ZWQgdGhlIGRvdWJsZSBvciB0cmlwbGUKKyAgICAvLyBjbGljay4gVGhl
IGNvbnNlcXVlbmNlIG9mIG5vdCBlYXRpbmcgdGhpcyBldmVudCBpcyB0d28gRE9NIGJ1dHRvbiBw
cmVzcyBldmVudHMKKyAgICAvLyBhcmUgZ2VuZXJhdGVkLgorICAgIEdVbmlxdWVQdHI8R2RrRXZl
bnQ+IG5leHRFdmVudChnZGtfZXZlbnRfcGVlaygpKTsKKyAgICBpZiAobmV4dEV2ZW50ICYmIChu
ZXh0RXZlbnQtPmFueS50eXBlID09IEdES18yQlVUVE9OX1BSRVNTIHx8IG5leHRFdmVudC0+YW55
LnR5cGUgPT0gR0RLXzNCVVRUT05fUFJFU1MpKQogICAgICAgICByZXR1cm4gVFJVRTsKIAogICAg
IC8vIElmIGl0J3MgYSByaWdodCBjbGljayBldmVudCBzYXZlIGl0IGFzIGEgcG9zc2libGUgY29u
dGV4dCBtZW51IGV2ZW50LgogICAgIGlmIChidXR0b25FdmVudC0+YnV0dG9uID09IDMpCiAgICAg
ICAgIHByaXYtPmNvbnRleHRNZW51RXZlbnQucmVzZXQoZ2RrX2V2ZW50X2NvcHkocmVpbnRlcnBy
ZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSkpOwotICAgIHByaXYtPnBhZ2VQcm94eS0+
aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2Rr
RXZlbnQqPihidXR0b25FdmVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHByaXYtPmNsaWNrQ291bnRlci5jbGlja0NvdW50Rm9yR2RrQnV0
dG9uRXZlbnQod2lkZ2V0LCBidXR0b25FdmVudCkpKTsKKworICAgIHdlYmtpdFdlYlZpZXdCYXNl
VXBkYXRlQ2xpY2tDb3VudEZvckdka0J1dHRvbkV2ZW50KHdlYlZpZXdCYXNlLCBidXR0b25FdmVu
dCk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNl
RXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSwgcHJpdi0+Y3Vy
cmVudENsaWNrQ291bnQpKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMTA2NCw4ICsxMTE0
LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVN0YXJ0RHJhZyhXZWJLaXRXZWJWaWV3QmFzZSog
d2ViVmlld0Jhc2UsIGNvbnN0IERyYWdEYXRhJgogCiAKICAgICAvLyBBIGRyYWcgc3RhcnRpbmcg
c2hvdWxkIHByZXZlbnQgYSBkb3VibGUtY2xpY2sgZnJvbSBoYXBwZW5pbmcuIFRoaXMgbWlnaHQK
LSAgICAvLyBoYXBwZW4gaWYgYSBkcmFnIGlzIGZvbGxvd2VkIHZlcnkgcXVpY2tseSBieSBhbm90
aGVyIGNsaWNrIChsaWtlIGluIHRoZSBEUlQpLgotICAgIHByaXYtPmNsaWNrQ291bnRlci5yZXNl
dCgpOworICAgIC8vIGhhcHBlbiBpZiBhIGRyYWcgaXMgZm9sbG93ZWQgdmVyeSBxdWlja2x5IGJ5
IGFub3RoZXIgY2xpY2sgKGxpa2UgaW4gdGhlIFdUUikuCisgICAgd2Via2l0V2ViVmlld0Jhc2VS
ZXNldENsaWNrQ291bnRlcih3ZWJWaWV3QmFzZSk7CiAKICAgICBpZiAoZHJhZ0ltYWdlKSB7CiAg
ICAgICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGltYWdlKGRyYWdJbWFnZS0+Y3JlYXRlQ2Fp
cm9TdXJmYWNlKCkpOwpAQCAtMTIyOCw1ICsxMjc4LDggQEAgdm9pZCB3ZWJraXRXZWJWaWV3QmFz
ZVVwZGF0ZVRleHRJbnB1dFN0YXRlKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFz
ZSkKIAogdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlc2V0Q2xpY2tDb3VudGVyKFdlYktpdFdlYlZp
ZXdCYXNlKiB3ZWJraXRXZWJWaWV3QmFzZSkKIHsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJp
di0+Y2xpY2tDb3VudGVyLnJlc2V0KCk7CisgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPmN1
cnJlbnRDbGlja0NvdW50ID0gMDsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+cHJldmlv
dXNDbGlja1BvaW50ID0gSW50UG9pbnQoKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+
cHJldmlvdXNDbGlja1RpbWUgPSAwOworICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wcmV2
aW91c0NsaWNrQnV0dG9uID0gMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240104</attachid>
            <date>2014-10-20 03:26:43 -0700</date>
            <delta_ts>2014-12-11 08:39:46 -0800</delta_ts>
            <desc>Rebased patch to apply on current git master</desc>
            <filename>wk2-click-counter.diff</filename>
            <type>text/plain</type>
            <size>13307</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OGI5ZGZjLi41ZmE2YmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTQtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIE1vdmUgY2xpY2sgY291bnRlciBsb2dpYyBiYWNrIHRvIFdlYktp
dFdlYlZpZXdCYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzc2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgR3RrQ2xpY2tDb3VudGVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21h
a2U6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5oOiBSZW1vdmVkLgorCiAy
MDE0LTEwLTIwICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBVcGRhdGUgdGhlIDxsaW5rPidzIGxpbmsgc3RhdHVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNt
YWtlCmluZGV4IGQ2MzNhNDcuLmQ3MDY0NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCkBA
IC0yMjEsNyArMjIxLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NPVVJDRVMK
ICAgICBwbGF0Zm9ybS9ndGsvRHJhZ0ljb24uY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0RyYWdJbWFn
ZUd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR1JlZlB0ckd0ay5jcHAKLSAgICBwbGF0Zm9ybS9n
dGsvR3RrQ2xpY2tDb3VudGVyLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HdGtJbnB1dE1ldGhvZEZp
bHRlci5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAogICAgIHBsYXRmb3Jt
L2d0ay9HdGtWZXJzaW9uaW5nLmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9HdGtDbGlja0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0
a0NsaWNrQ291bnRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlOGQxMmQu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSBJZ2FsaWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkd0a0NsaWNrQ291bnRlci5oIgotCi0j
aW5jbHVkZSAiR1VuaXF1ZVB0ckd0ay5oIgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1HdGtDbGlja0NvdW50ZXI6Okd0a0NsaWNrQ291bnRlcigpCi0gICAg
OiBtX2N1cnJlbnRDbGlja0NvdW50KDApCi0gICAgLCBtX3ByZXZpb3VzQ2xpY2tCdXR0b24oMCkK
LSAgICAsIG1fcHJldmlvdXNDbGlja1RpbWUoMCkKLXsKLX0KLQotdm9pZCBHdGtDbGlja0NvdW50
ZXI6OnJlc2V0KCkKLXsKLSAgICBtX2N1cnJlbnRDbGlja0NvdW50ID0gMDsKLSAgICBtX3ByZXZp
b3VzQ2xpY2tQb2ludCA9IEludFBvaW50KCk7Ci0gICAgbV9wcmV2aW91c0NsaWNrVGltZSA9IDA7
Ci0gICAgbV9wcmV2aW91c0NsaWNrQnV0dG9uID0gMDsKLX0KLQotYm9vbCBHdGtDbGlja0NvdW50
ZXI6OnNob3VsZFByb2Nlc3NCdXR0b25FdmVudChHZGtFdmVudEJ1dHRvbiopCi17Ci0gICAgLy8g
Rm9yIGRvdWJsZSBhbmQgdHJpcGxlIGNsaWNrcyBHREsgc2VuZHMgYm90aCBhIG5vcm1hbCBidXR0
b24gcHJlc3MgZXZlbnQKLSAgICAvLyBhbmQgYSBzcGVjaWZpYyB0eXBlIChsaWtlIEdES18yQlVU
VE9OX1BSRVNTKS4gSWYgd2UgZGV0ZWN0IGEgc3BlY2lhbCBwcmVzcwotICAgIC8vIGNvbWluZyB1
cCwgaWdub3JlIHRoaXMgZXZlbnQgYXMgaXQgY2VydGFpbmx5IGdlbmVyYXRlZCB0aGUgZG91Ymxl
IG9yIHRyaXBsZQotICAgIC8vIGNsaWNrLiBUaGUgY29uc2VxdWVuY2Ugb2Ygbm90IGVhdGluZyB0
aGlzIGV2ZW50IGlzIHR3byBET00gYnV0dG9uIHByZXNzIGV2ZW50cwotICAgIC8vIGFyZSBnZW5l
cmF0ZWQuCi0gICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gbmV4dEV2ZW50KGdka19ldmVudF9wZWVr
KCkpOwotICAgIGlmICghbmV4dEV2ZW50KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAo
bmV4dEV2ZW50LT5hbnkudHlwZSA9PSBHREtfMkJVVFRPTl9QUkVTUyB8fCBuZXh0RXZlbnQtPmFu
eS50eXBlID09IEdES18zQlVUVE9OX1BSRVNTKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBndWludDMyIGdldEV2ZW50VGltZShHZGtFdmVudCog
ZXZlbnQpCi17Ci0gICAgZ3VpbnQzMiB0aW1lID0gZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KTsK
LSAgICBpZiAodGltZSkKLSAgICAgICAgcmV0dXJuIHRpbWU7Ci0KLSAgICAvLyBSZWFsIGV2ZW50
cyBhbHdheXMgaGF2ZSBhIG5vbi16ZXJvIHRpbWUsIGJ1dCBldmVudHMgc3ludGhlc2l6ZWQKLSAg
ICAvLyBieSB0aGUgRFJUIGRvIG5vdCBhbmQgd2UgbXVzdCBjYWxjdWxhdGUgYSB0aW1lIG1hbnVh
bGx5LiBUaGlzIHRpbWUKLSAgICAvLyBpcyBub3QgY2FsY3VsYXRlZCBpbiB0aGUgRFJULCBiZWNh
dXNlIEdUSysgZG9lcyBub3Qgd29yayB3ZWxsIHdpdGgKLSAgICAvLyBhbnl0aGluZyBvdGhlciB0
aGFuIEdES19DVVJSRU5UX1RJTUUgb24gc3ludGhlc2l6ZWQgZXZlbnRzLgotICAgIEdUaW1lVmFs
IHRpbWVWYWx1ZTsKLSAgICBnX2dldF9jdXJyZW50X3RpbWUoJnRpbWVWYWx1ZSk7Ci0gICAgcmV0
dXJuICh0aW1lVmFsdWUudHZfc2VjICogMTAwMCkgKyAodGltZVZhbHVlLnR2X3VzZWMgLyAxMDAw
KTsKLX0KLQotaW50IEd0a0NsaWNrQ291bnRlcjo6Y2xpY2tDb3VudEZvckdka0J1dHRvbkV2ZW50
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogYnV0dG9uRXZlbnQpCi17Ci0gICAg
Z2ludCBkb3VibGVDbGlja0Rpc3RhbmNlID0gMjUwOwotICAgIGdpbnQgZG91YmxlQ2xpY2tUaW1l
ID0gNTsKLSAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3MgPSBndGtfc2V0dGluZ3NfZ2V0X2Zvcl9z
Y3JlZW4oZ3RrX3dpZGdldF9nZXRfc2NyZWVuKHdpZGdldCkpOwotICAgIGdfb2JqZWN0X2dldChz
ZXR0aW5ncywKLSAgICAgICAgICAgICAgICAgImd0ay1kb3VibGUtY2xpY2stZGlzdGFuY2UiLCAm
ZG91YmxlQ2xpY2tEaXN0YW5jZSwKLSAgICAgICAgICAgICAgICAgImd0ay1kb3VibGUtY2xpY2st
dGltZSIsICZkb3VibGVDbGlja1RpbWUsIE5VTEwpOwotCi0gICAgLy8gR1RLKyBvbmx5IGNvdW50
cyB1cCB0byB0cmlwbGUgY2xpY2tzLCBidXQgV2ViQ29yZSB3YW50cyB0byBrbm93IGFib3V0Ci0g
ICAgLy8gcXVhZHJ1cGxlIGNsaWNrcywgcXVpbnR1cGxlIGNsaWNrcywgYWQgaW5maW5pdHVtLiBI
ZXJlLCB3ZSByZXBsaWNhdGUgdGhlCi0gICAgLy8gR0RLIGxvZ2ljIGZvciBjb3VudGluZyBjbGlj
a3MuCi0gICAgR2RrRXZlbnQqIGV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0
b25FdmVudCkpOwotICAgIGd1aW50MzIgZXZlbnRUaW1lID0gZ2V0RXZlbnRUaW1lKGV2ZW50KTsK
LQotICAgIGlmICgoZXZlbnQtPnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgZXZlbnQtPnR5
cGUgPT0gR0RLXzNCVVRUT05fUFJFU1MpCi0gICAgICAgIHx8ICgoYWJzKGJ1dHRvbkV2ZW50LT54
IC0gbV9wcmV2aW91c0NsaWNrUG9pbnQueCgpKSA8IGRvdWJsZUNsaWNrRGlzdGFuY2UpCi0gICAg
ICAgICAgICAmJiAoYWJzKGJ1dHRvbkV2ZW50LT55IC0gbV9wcmV2aW91c0NsaWNrUG9pbnQueSgp
KSA8IGRvdWJsZUNsaWNrRGlzdGFuY2UpCi0gICAgICAgICAgICAmJiAoZXZlbnRUaW1lIC0gbV9w
cmV2aW91c0NsaWNrVGltZSA8IHN0YXRpY19jYXN0PGd1aW50Pihkb3VibGVDbGlja1RpbWUpKQot
ICAgICAgICAgICAgJiYgKGJ1dHRvbkV2ZW50LT5idXR0b24gPT0gbV9wcmV2aW91c0NsaWNrQnV0
dG9uKSkpCi0gICAgICAgIG1fY3VycmVudENsaWNrQ291bnQrKzsKLSAgICBlbHNlCi0gICAgICAg
IG1fY3VycmVudENsaWNrQ291bnQgPSAxOwotCi0gICAgZ2RvdWJsZSB4LCB5OwotICAgIGdka19l
dmVudF9nZXRfY29vcmRzKGV2ZW50LCAmeCwgJnkpOwotICAgIG1fcHJldmlvdXNDbGlja1BvaW50
ID0gSW50UG9pbnQoeCwgeSk7Ci0gICAgbV9wcmV2aW91c0NsaWNrQnV0dG9uID0gYnV0dG9uRXZl
bnQtPmJ1dHRvbjsKLSAgICBtX3ByZXZpb3VzQ2xpY2tUaW1lID0gZXZlbnRUaW1lOwotCi0gICAg
cmV0dXJuIG1fY3VycmVudENsaWNrQ291bnQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtDbGlja0NvdW50ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZjYTFkZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIElnYWxpYSBTLkwuCi0g
KgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAq
ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0
b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0jaWZuZGVmIEd0a0NsaWNrQ291bnRlcl9o
Ci0jZGVmaW5lIEd0a0NsaWNrQ291bnRlcl9oCi0KLSNpbmNsdWRlICJJbnRQb2ludC5oIgotCi10
eXBlZGVmIHN0cnVjdCBfR2RrRXZlbnRCdXR0b24gR2RrRXZlbnRCdXR0b247Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotY2xhc3MgR3RrQ2xpY2tDb3VudGVyIHsKLXB1YmxpYzoKLSAgICBHdGtD
bGlja0NvdW50ZXIoKTsKLSAgICB2b2lkIHJlc2V0KCk7Ci0gICAgYm9vbCBzaG91bGRQcm9jZXNz
QnV0dG9uRXZlbnQoR2RrRXZlbnRCdXR0b24qKTsKLSAgICBpbnQgY2xpY2tDb3VudEZvckdka0J1
dHRvbkV2ZW50KEd0a1dpZGdldCosIEdka0V2ZW50QnV0dG9uKik7Ci0KLXByaXZhdGU6Ci0gICAg
aW50IG1fY3VycmVudENsaWNrQ291bnQ7Ci0gICAgSW50UG9pbnQgbV9wcmV2aW91c0NsaWNrUG9p
bnQ7Ci0gICAgdW5zaWduZWQgaW50IG1fcHJldmlvdXNDbGlja0J1dHRvbjsKLSAgICBpbnQgbV9w
cmV2aW91c0NsaWNrVGltZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwppbmRleCA4YmZlOWY1Li40NTU5ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MjEgQEAKIDIwMTQtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCisgICAgICAgIFtHVEtdIE1vdmUgY2xpY2sgY291bnRlciBsb2dpYyBiYWNrIHRvIFdl
YktpdFdlYlZpZXdCYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzc2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJdCB3YXMgbW92ZWQgdG8gYSBzaGFyZWQgY2xhc3MgaW4gcGxhdGZvcm0gdG8gYmUg
dXNlZCBieSBib3RoCisgICAgICAgIFdlYktpdDEgYW5kIFdlYktpdDIsIGJ1dCBpdCdzIGN1cnJl
bnRseSBvbmx5IHVzZWQgYnkgV2ViS2l0V2ViVmlld0Jhc2UuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3
QmFzZVVwZGF0ZUNsaWNrQ291bnRGb3JHZGtCdXR0b25FdmVudCk6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VT
dGFydERyYWcpOgorICAgICAgICAod2Via2l0V2ViVmlld0Jhc2VSZXNldENsaWNrQ291bnRlcik6
CisKKzIwMTQtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCiAgICAgICAgIFtHVEtdIFJlbW92ZSB0aGUgZmFjdG9yeSBtZXRob2QgZnJvbSBEcmFnQW5k
RHJvcEhhbmRsZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNzg3MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggOTY4NWM1MS4uNDI1NWU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNl
LmNwcApAQCAtNDksNyArNDksNiBAQAogI2luY2x1ZGUgIldlYlZpZXdCYXNlSW5wdXRNZXRob2RG
aWx0ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HVW5pcXVlUHRyR3RrLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HdGtDbGlja0NvdW50
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3RrVmVyc2lvbmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
QEAgLTkzLDcgKzkyLDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUgewogICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKICAgICBSZWZQdHI8
V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7CiAgICAgYm9vbCBzaG91bGRGb3J3YXJkTmV4dEtleUV2
ZW50OwotICAgIEd0a0NsaWNrQ291bnRlciBjbGlja0NvdW50ZXI7CiAgICAgQ1N0cmluZyB0b29s
dGlwVGV4dDsKICAgICBJbnRSZWN0IHRvb2x0aXBBcmVhOwogI2lmICFHVEtfQ0hFQ0tfVkVSU0lP
TigzLCAxMywgNCkKQEAgLTEyNCw2ICsxMjIsMTIgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3QmFz
ZVByaXZhdGUgewogICAgIGJvb2wgaXNWaXNpYmxlIDogMTsKICAgICBib29sIGlzV2luZG93Vmlz
aWJsZSA6IDE7CiAKKyAgICAvLyBDbGljayBDb3VudGVyLgorICAgIGludCBjdXJyZW50Q2xpY2tD
b3VudDsKKyAgICBJbnRQb2ludCBwcmV2aW91c0NsaWNrUG9pbnQ7CisgICAgdW5zaWduZWQgcHJl
dmlvdXNDbGlja0J1dHRvbjsKKyAgICBpbnQgcHJldmlvdXNDbGlja1RpbWU7CisKICAgICBXZWJL
aXRXZWJWaWV3QmFzZURvd25sb2FkUmVxdWVzdEhhbmRsZXIgZG93bmxvYWRIYW5kbGVyOwogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtNjc0LDYgKzY3OCw0NSBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VLZXlSZWxlYXNlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQs
IEdka0V2ZW50S2V5KgogICAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgdm9pZCB3ZWJraXRX
ZWJWaWV3QmFzZVVwZGF0ZUNsaWNrQ291bnRGb3JHZGtCdXR0b25FdmVudChXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UsIEdka0V2ZW50QnV0dG9uKiBidXR0b25FdmVudCkKK3sKKyAgICBp
bnQgZG91YmxlQ2xpY2tEaXN0YW5jZSA9IDI1MDsKKyAgICBpbnQgZG91YmxlQ2xpY2tUaW1lID0g
NTsKKyAgICBnX29iamVjdF9nZXQoZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MoR1RLX1dJREdFVCh3
ZWJWaWV3QmFzZSkpLCAiZ3RrLWRvdWJsZS1jbGljay1kaXN0YW5jZSIsICZkb3VibGVDbGlja0Rp
c3RhbmNlLAorICAgICAgICAiZ3RrLWRvdWJsZS1jbGljay10aW1lIiwgJmRvdWJsZUNsaWNrVGlt
ZSwgbnVsbHB0cik7CisKKyAgICAvLyBHVEsrIG9ubHkgY291bnRzIHVwIHRvIHRyaXBsZSBjbGlj
a3MsIGJ1dCBXZWJDb3JlIHdhbnRzIHRvIGtub3cgYWJvdXQKKyAgICAvLyBxdWFkcnVwbGUgY2xp
Y2tzLCBxdWludHVwbGUgY2xpY2tzLCBhZCBpbmZpbml0dW0uIEhlcmUsIHdlIHJlcGxpY2F0ZSB0
aGUKKyAgICAvLyBHREsgbG9naWMgZm9yIGNvdW50aW5nIGNsaWNrcy4KKyAgICBHZGtFdmVudCog
ZXZlbnQgPSByZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oYnV0dG9uRXZlbnQpOworICAgIGd1
aW50MzIgZXZlbnRUaW1lID0gZ2RrX2V2ZW50X2dldF90aW1lKGV2ZW50KTsKKyAgICBpZiAoIWV2
ZW50VGltZSkgeworICAgICAgICAvLyBSZWFsIGV2ZW50cyBhbHdheXMgaGF2ZSBhIG5vbi16ZXJv
IHRpbWUsIGJ1dCBldmVudHMgc3ludGhlc2l6ZWQKKyAgICAgICAgLy8gYnkgdGhlIFdUUiBkbyBu
b3QgYW5kIHdlIG11c3QgY2FsY3VsYXRlIGEgdGltZSBtYW51YWxseS4gVGhpcyB0aW1lCisgICAg
ICAgIC8vIGlzIG5vdCBjYWxjdWxhdGVkIGluIHRoZSBXVFIsIGJlY2F1c2UgR1RLKyBkb2VzIG5v
dCB3b3JrIHdlbGwgd2l0aAorICAgICAgICAvLyBhbnl0aGluZyBvdGhlciB0aGFuIEdES19DVVJS
RU5UX1RJTUUgb24gc3ludGhlc2l6ZWQgZXZlbnRzLgorICAgICAgICBHVGltZVZhbCB0aW1lVmFs
dWU7CisgICAgICAgIGdfZ2V0X2N1cnJlbnRfdGltZSgmdGltZVZhbHVlKTsKKyAgICAgICAgZXZl
bnRUaW1lID0gKHRpbWVWYWx1ZS50dl9zZWMgKiAxMDAwKSArICh0aW1lVmFsdWUudHZfdXNlYyAv
IDEwMDApOworICAgIH0KKworICAgIFdlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSogcHJpdiA9IHdl
YlZpZXdCYXNlLT5wcml2OworICAgIGlmICgoZXZlbnQtPnR5cGUgPT0gR0RLXzJCVVRUT05fUFJF
U1MgfHwgZXZlbnQtPnR5cGUgPT0gR0RLXzNCVVRUT05fUFJFU1MpCisgICAgICAgIHx8ICgoYWJz
KGJ1dHRvbkV2ZW50LT54IC0gcHJpdi0+cHJldmlvdXNDbGlja1BvaW50LngoKSkgPCBkb3VibGVD
bGlja0Rpc3RhbmNlKQorICAgICAgICAgICAgJiYgKGFicyhidXR0b25FdmVudC0+eSAtIHByaXYt
PnByZXZpb3VzQ2xpY2tQb2ludC55KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKKyAgICAgICAg
ICAgICYmIChldmVudFRpbWUgLSBwcml2LT5wcmV2aW91c0NsaWNrVGltZSA8IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihkb3VibGVDbGlja1RpbWUpKQorICAgICAgICAgICAgJiYgKGJ1dHRvbkV2ZW50
LT5idXR0b24gPT0gcHJpdi0+cHJldmlvdXNDbGlja0J1dHRvbikpKQorICAgICAgICBwcml2LT5j
dXJyZW50Q2xpY2tDb3VudCsrOworICAgIGVsc2UKKyAgICAgICAgcHJpdi0+Y3VycmVudENsaWNr
Q291bnQgPSAxOworCisgICAgZG91YmxlIHgsIHk7CisgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMo
ZXZlbnQsICZ4LCAmeSk7CisgICAgcHJpdi0+cHJldmlvdXNDbGlja1BvaW50ID0gSW50UG9pbnQo
eCwgeSk7CisgICAgcHJpdi0+cHJldmlvdXNDbGlja0J1dHRvbiA9IGJ1dHRvbkV2ZW50LT5idXR0
b247CisgICAgcHJpdi0+cHJldmlvdXNDbGlja1RpbWUgPSBldmVudFRpbWU7Cit9CisKIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QmFzZUJ1dHRvblByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3
aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBidXR0b25FdmVudCkKIHsKICAgICBXZWJLaXRXZWJWaWV3
QmFzZSogd2ViVmlld0Jhc2UgPSBXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3aWRnZXQpOwpAQCAtNjg2
LDE0ICs3MjksMjEgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNlQnV0dG9uUHJl
c3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXQKIAogICAgIHByaXYtPmlucHV0
TWV0aG9kRmlsdGVyLm5vdGlmeU1vdXNlQnV0dG9uUHJlc3MoKTsKIAotICAgIGlmICghcHJpdi0+
Y2xpY2tDb3VudGVyLnNob3VsZFByb2Nlc3NCdXR0b25FdmVudChidXR0b25FdmVudCkpCisgICAg
Ly8gRm9yIGRvdWJsZSBhbmQgdHJpcGxlIGNsaWNrcyBHREsgc2VuZHMgYm90aCBhIG5vcm1hbCBi
dXR0b24gcHJlc3MgZXZlbnQKKyAgICAvLyBhbmQgYSBzcGVjaWZpYyB0eXBlIChsaWtlIEdES18y
QlVUVE9OX1BSRVNTKS4gSWYgd2UgZGV0ZWN0IGEgc3BlY2lhbCBwcmVzcworICAgIC8vIGNvbWlu
ZyB1cCwgaWdub3JlIHRoaXMgZXZlbnQgYXMgaXQgY2VydGFpbmx5IGdlbmVyYXRlZCB0aGUgZG91
YmxlIG9yIHRyaXBsZQorICAgIC8vIGNsaWNrLiBUaGUgY29uc2VxdWVuY2Ugb2Ygbm90IGVhdGlu
ZyB0aGlzIGV2ZW50IGlzIHR3byBET00gYnV0dG9uIHByZXNzIGV2ZW50cworICAgIC8vIGFyZSBn
ZW5lcmF0ZWQuCisgICAgR1VuaXF1ZVB0cjxHZGtFdmVudD4gbmV4dEV2ZW50KGdka19ldmVudF9w
ZWVrKCkpOworICAgIGlmIChuZXh0RXZlbnQgJiYgKG5leHRFdmVudC0+YW55LnR5cGUgPT0gR0RL
XzJCVVRUT05fUFJFU1MgfHwgbmV4dEV2ZW50LT5hbnkudHlwZSA9PSBHREtfM0JVVFRPTl9QUkVT
UykpCiAgICAgICAgIHJldHVybiBUUlVFOwogCiAgICAgLy8gSWYgaXQncyBhIHJpZ2h0IGNsaWNr
IGV2ZW50IHNhdmUgaXQgYXMgYSBwb3NzaWJsZSBjb250ZXh0IG1lbnUgZXZlbnQuCiAgICAgaWYg
KGJ1dHRvbkV2ZW50LT5idXR0b24gPT0gMykKICAgICAgICAgcHJpdi0+Y29udGV4dE1lbnVFdmVu
dC5yZXNldChnZGtfZXZlbnRfY29weShyZWludGVycHJldF9jYXN0PEdka0V2ZW50Kj4oYnV0dG9u
RXZlbnQpKSk7Ci0gICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdl
Yk1vdXNlRXZlbnQocmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+
Y2xpY2tDb3VudGVyLmNsaWNrQ291bnRGb3JHZGtCdXR0b25FdmVudCh3aWRnZXQsIGJ1dHRvbkV2
ZW50KSkpOworCisgICAgd2Via2l0V2ViVmlld0Jhc2VVcGRhdGVDbGlja0NvdW50Rm9yR2RrQnV0
dG9uRXZlbnQod2ViVmlld0Jhc2UsIGJ1dHRvbkV2ZW50KTsKKyAgICBwcml2LT5wYWdlUHJveHkt
PmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChyZWludGVycHJldF9jYXN0PEdk
a0V2ZW50Kj4oYnV0dG9uRXZlbnQpLCBwcml2LT5jdXJyZW50Q2xpY2tDb3VudCkpOwogICAgIHJl
dHVybiBUUlVFOwogfQogCkBAIC0xMjQ5LDUgKzEyOTksOCBAQCB2b2lkIHdlYmtpdFdlYlZpZXdC
YXNlVXBkYXRlVGV4dElucHV0U3RhdGUoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdC
YXNlKQogCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlUmVzZXRDbGlja0NvdW50ZXIoV2ViS2l0V2Vi
Vmlld0Jhc2UqIHdlYmtpdFdlYlZpZXdCYXNlKQogewotICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5w
cml2LT5jbGlja0NvdW50ZXIucmVzZXQoKTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZS0+cHJpdi0+
Y3VycmVudENsaWNrQ291bnQgPSAwOworICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2LT5wcmV2
aW91c0NsaWNrUG9pbnQgPSBJbnRQb2ludCgpOworICAgIHdlYmtpdFdlYlZpZXdCYXNlLT5wcml2
LT5wcmV2aW91c0NsaWNrVGltZSA9IDA7CisgICAgd2Via2l0V2ViVmlld0Jhc2UtPnByaXYtPnBy
ZXZpb3VzQ2xpY2tCdXR0b24gPSAwOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243124</attachid>
            <date>2014-12-11 08:39:46 -0800</date>
            <delta_ts>2014-12-11 08:42:36 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>wk2-click-counter.diff</filename>
            <type>text/plain</type>
            <size>12645</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3MjY5ODg4Li4xZWQzMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTgg
QEAKIDIwMTQtMTItMTEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIE1vdmUgY2xpY2sgY291bnRlciBsb2dpYyBiYWNrIHRvIFdlYktp
dFdlYlZpZXdCYXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzc2ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZW1vdmUgR3RrQ2xpY2tDb3VudGVyLgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21h
a2U6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5oOiBSZW1vdmVkLgorCisy
MDE0LTEyLTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwog
ICAgICAgICBbR1RLXSBJbXBsZW1lbnQgc2l6ZXMgYXR0cmlidXRlIGZvciBsaW5rIHRhZwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI1Nzc1CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNv
cmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggMDI1NmEyZS4uMjI2ZjhjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1HVEsuY21ha2UKQEAgLTIyMyw3ICsyMjMsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlUGxh
dGZvcm1HVEtfU09VUkNFUwogICAgIHBsYXRmb3JtL2d0ay9EcmFnSWNvbi5jcHAKICAgICBwbGF0
Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNw
cAotICAgIHBsYXRmb3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3Rr
L0d0a1V0aWxpdGllcy5jcHAKICAgICBwbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5jCiAgICAg
cGxhdGZvcm0vZ3RrL0tleUJpbmRpbmdUcmFuc2xhdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNrQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvR3RrQ2xpY2tDb3VudGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMWU4ZDEyZC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvR3RrQ2xpY2tDb3VudGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIElnYWxpYSBTLkwuCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjEx
MC0xMzAxICBVU0EKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR3RrQ2xp
Y2tDb3VudGVyLmgiCi0KLSNpbmNsdWRlICJHVW5pcXVlUHRyR3RrLmgiCi0jaW5jbHVkZSA8Z3Rr
L2d0ay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUd0a0NsaWNrQ291bnRlcjo6R3RrQ2xp
Y2tDb3VudGVyKCkKLSAgICA6IG1fY3VycmVudENsaWNrQ291bnQoMCkKLSAgICAsIG1fcHJldmlv
dXNDbGlja0J1dHRvbigwKQotICAgICwgbV9wcmV2aW91c0NsaWNrVGltZSgwKQotewotfQotCi12
b2lkIEd0a0NsaWNrQ291bnRlcjo6cmVzZXQoKQotewotICAgIG1fY3VycmVudENsaWNrQ291bnQg
PSAwOwotICAgIG1fcHJldmlvdXNDbGlja1BvaW50ID0gSW50UG9pbnQoKTsKLSAgICBtX3ByZXZp
b3VzQ2xpY2tUaW1lID0gMDsKLSAgICBtX3ByZXZpb3VzQ2xpY2tCdXR0b24gPSAwOwotfQotCi1i
b29sIEd0a0NsaWNrQ291bnRlcjo6c2hvdWxkUHJvY2Vzc0J1dHRvbkV2ZW50KEdka0V2ZW50QnV0
dG9uKikKLXsKLSAgICAvLyBGb3IgZG91YmxlIGFuZCB0cmlwbGUgY2xpY2tzIEdESyBzZW5kcyBi
b3RoIGEgbm9ybWFsIGJ1dHRvbiBwcmVzcyBldmVudAotICAgIC8vIGFuZCBhIHNwZWNpZmljIHR5
cGUgKGxpa2UgR0RLXzJCVVRUT05fUFJFU1MpLiBJZiB3ZSBkZXRlY3QgYSBzcGVjaWFsIHByZXNz
Ci0gICAgLy8gY29taW5nIHVwLCBpZ25vcmUgdGhpcyBldmVudCBhcyBpdCBjZXJ0YWlubHkgZ2Vu
ZXJhdGVkIHRoZSBkb3VibGUgb3IgdHJpcGxlCi0gICAgLy8gY2xpY2suIFRoZSBjb25zZXF1ZW5j
ZSBvZiBub3QgZWF0aW5nIHRoaXMgZXZlbnQgaXMgdHdvIERPTSBidXR0b24gcHJlc3MgZXZlbnRz
Ci0gICAgLy8gYXJlIGdlbmVyYXRlZC4KLSAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBuZXh0RXZl
bnQoZ2RrX2V2ZW50X3BlZWsoKSk7Ci0gICAgaWYgKCFuZXh0RXZlbnQpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChuZXh0RXZlbnQtPmFueS50eXBlID09IEdES18yQlVUVE9OX1BSRVNT
IHx8IG5leHRFdmVudC0+YW55LnR5cGUgPT0gR0RLXzNCVVRUT05fUFJFU1MpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIGd1aW50MzIgZ2V0RXZl
bnRUaW1lKEdka0V2ZW50KiBldmVudCkKLXsKLSAgICBndWludDMyIHRpbWUgPSBnZGtfZXZlbnRf
Z2V0X3RpbWUoZXZlbnQpOwotICAgIGlmICh0aW1lKQotICAgICAgICByZXR1cm4gdGltZTsKLQot
ICAgIC8vIFJlYWwgZXZlbnRzIGFsd2F5cyBoYXZlIGEgbm9uLXplcm8gdGltZSwgYnV0IGV2ZW50
cyBzeW50aGVzaXplZAotICAgIC8vIGJ5IHRoZSBEUlQgZG8gbm90IGFuZCB3ZSBtdXN0IGNhbGN1
bGF0ZSBhIHRpbWUgbWFudWFsbHkuIFRoaXMgdGltZQotICAgIC8vIGlzIG5vdCBjYWxjdWxhdGVk
IGluIHRoZSBEUlQsIGJlY2F1c2UgR1RLKyBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aAotICAgIC8v
IGFueXRoaW5nIG90aGVyIHRoYW4gR0RLX0NVUlJFTlRfVElNRSBvbiBzeW50aGVzaXplZCBldmVu
dHMuCi0gICAgR1RpbWVWYWwgdGltZVZhbHVlOwotICAgIGdfZ2V0X2N1cnJlbnRfdGltZSgmdGlt
ZVZhbHVlKTsKLSAgICByZXR1cm4gKHRpbWVWYWx1ZS50dl9zZWMgKiAxMDAwKSArICh0aW1lVmFs
dWUudHZfdXNlYyAvIDEwMDApOwotfQotCi1pbnQgR3RrQ2xpY2tDb3VudGVyOjpjbGlja0NvdW50
Rm9yR2RrQnV0dG9uRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBidXR0
b25FdmVudCkKLXsKLSAgICBnaW50IGRvdWJsZUNsaWNrRGlzdGFuY2UgPSAyNTA7Ci0gICAgZ2lu
dCBkb3VibGVDbGlja1RpbWUgPSA1OwotICAgIEd0a1NldHRpbmdzKiBzZXR0aW5ncyA9IGd0a19z
ZXR0aW5nc19nZXRfZm9yX3NjcmVlbihndGtfd2lkZ2V0X2dldF9zY3JlZW4od2lkZ2V0KSk7Ci0g
ICAgZ19vYmplY3RfZ2V0KHNldHRpbmdzLAotICAgICAgICAgICAgICAgICAiZ3RrLWRvdWJsZS1j
bGljay1kaXN0YW5jZSIsICZkb3VibGVDbGlja0Rpc3RhbmNlLAotICAgICAgICAgICAgICAgICAi
Z3RrLWRvdWJsZS1jbGljay10aW1lIiwgJmRvdWJsZUNsaWNrVGltZSwgTlVMTCk7Ci0KLSAgICAv
LyBHVEsrIG9ubHkgY291bnRzIHVwIHRvIHRyaXBsZSBjbGlja3MsIGJ1dCBXZWJDb3JlIHdhbnRz
IHRvIGtub3cgYWJvdXQKLSAgICAvLyBxdWFkcnVwbGUgY2xpY2tzLCBxdWludHVwbGUgY2xpY2tz
LCBhZCBpbmZpbml0dW0uIEhlcmUsIHdlIHJlcGxpY2F0ZSB0aGUKLSAgICAvLyBHREsgbG9naWMg
Zm9yIGNvdW50aW5nIGNsaWNrcy4KLSAgICBHZGtFdmVudCogZXZlbnQocmVpbnRlcnByZXRfY2Fz
dDxHZGtFdmVudCo+KGJ1dHRvbkV2ZW50KSk7Ci0gICAgZ3VpbnQzMiBldmVudFRpbWUgPSBnZXRF
dmVudFRpbWUoZXZlbnQpOwotCi0gICAgaWYgKChldmVudC0+dHlwZSA9PSBHREtfMkJVVFRPTl9Q
UkVTUyB8fCBldmVudC0+dHlwZSA9PSBHREtfM0JVVFRPTl9QUkVTUykKLSAgICAgICAgfHwgKChh
YnMoYnV0dG9uRXZlbnQtPnggLSBtX3ByZXZpb3VzQ2xpY2tQb2ludC54KCkpIDwgZG91YmxlQ2xp
Y2tEaXN0YW5jZSkKLSAgICAgICAgICAgICYmIChhYnMoYnV0dG9uRXZlbnQtPnkgLSBtX3ByZXZp
b3VzQ2xpY2tQb2ludC55KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKLSAgICAgICAgICAgICYm
IChldmVudFRpbWUgLSBtX3ByZXZpb3VzQ2xpY2tUaW1lIDwgc3RhdGljX2Nhc3Q8Z3VpbnQ+KGRv
dWJsZUNsaWNrVGltZSkpCi0gICAgICAgICAgICAmJiAoYnV0dG9uRXZlbnQtPmJ1dHRvbiA9PSBt
X3ByZXZpb3VzQ2xpY2tCdXR0b24pKSkKLSAgICAgICAgbV9jdXJyZW50Q2xpY2tDb3VudCsrOwot
ICAgIGVsc2UKLSAgICAgICAgbV9jdXJyZW50Q2xpY2tDb3VudCA9IDE7Ci0KLSAgICBnZG91Ymxl
IHgsIHk7Ci0gICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7Ci0gICAgbV9w
cmV2aW91c0NsaWNrUG9pbnQgPSBJbnRQb2ludCh4LCB5KTsKLSAgICBtX3ByZXZpb3VzQ2xpY2tC
dXR0b24gPSBidXR0b25FdmVudC0+YnV0dG9uOwotICAgIG1fcHJldmlvdXNDbGlja1RpbWUgPSBl
dmVudFRpbWU7Ci0KLSAgICByZXR1cm4gbV9jdXJyZW50Q2xpY2tDb3VudDsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a0NsaWNrQ291bnRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a0NsaWNr
Q291bnRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmNhMWRlLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtDbGlja0NvdW50ZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTEgSWdhbGlhIFMuTC4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0g
KiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpZm5kZWYg
R3RrQ2xpY2tDb3VudGVyX2gKLSNkZWZpbmUgR3RrQ2xpY2tDb3VudGVyX2gKLQotI2luY2x1ZGUg
IkludFBvaW50LmgiCi0KLXR5cGVkZWYgc3RydWN0IF9HZGtFdmVudEJ1dHRvbiBHZGtFdmVudEJ1
dHRvbjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHdGtDbGlja0NvdW50ZXIgewot
cHVibGljOgotICAgIEd0a0NsaWNrQ291bnRlcigpOwotICAgIHZvaWQgcmVzZXQoKTsKLSAgICBi
b29sIHNob3VsZFByb2Nlc3NCdXR0b25FdmVudChHZGtFdmVudEJ1dHRvbiopOwotICAgIGludCBj
bGlja0NvdW50Rm9yR2RrQnV0dG9uRXZlbnQoR3RrV2lkZ2V0KiwgR2RrRXZlbnRCdXR0b24qKTsK
LQotcHJpdmF0ZToKLSAgICBpbnQgbV9jdXJyZW50Q2xpY2tDb3VudDsKLSAgICBJbnRQb2ludCBt
X3ByZXZpb3VzQ2xpY2tQb2ludDsKLSAgICB1bnNpZ25lZCBpbnQgbV9wcmV2aW91c0NsaWNrQnV0
dG9uOwotICAgIGludCBtX3ByZXZpb3VzQ2xpY2tUaW1lOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGMxNWQzNzEuLjRiN2YyMjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0xMi0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gTW92ZSBjbGljayBjb3VudGVy
IGxvZ2ljIGJhY2sgdG8gV2ViS2l0V2ViVmlld0Jhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IHdhcyBtb3ZlZCB0byBhIHNoYXJlZCBjbGFzcyBp
biBwbGF0Zm9ybSB0byBiZSB1c2VkIGJ5IGJvdGgKKyAgICAgICAgV2ViS2l0MSBhbmQgV2ViS2l0
MiwgYnV0IGl0J3MgY3VycmVudGx5IG9ubHkgdXNlZCBieSBXZWJLaXRXZWJWaWV3QmFzZS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKENsaWNrQ291bnRlcjo6cmVzZXQpOgorICAgICAgICAoQ2xpY2tDb3VudGVyOjpjdXJyZW50
Q2xpY2tDb3VudEZvckdka0J1dHRvbkV2ZW50KToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
QnV0dG9uUHJlc3NFdmVudCk6CisKIDIwMTQtMTItMTEgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBl
cmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIFtHVEtdIHdhcm5pbmc6
IHVudXNlZCBwYXJhbWV0ZXIgYXQgTmV0d29ya1Byb2Nlc3NTb3VwLmNwcCBhZnRlciByMTc3MDU2
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCmluZGV4IDE0ODk2M2YuLjBiZjcwY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTUw
LDcgKzUwLDYgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ2Fpcm9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dV
bmlxdWVQdHJHdGsuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0d0a0NsaWNrQ291bnRlci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HdGtWZXJz
aW9uaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgpAQCAtNzgsNiAr
NzcsNjMgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIAorc3RydWN0IENsaWNrQ291bnRlciB7CitwdWJsaWM6CisgICAgdm9pZCByZXNldCgpCisg
ICAgeworICAgICAgICBjdXJyZW50Q2xpY2tDb3VudCA9IDA7CisgICAgICAgIHByZXZpb3VzQ2xp
Y2tQb2ludCA9IEludFBvaW50KCk7CisgICAgICAgIHByZXZpb3VzQ2xpY2tUaW1lID0gMDsKKyAg
ICAgICAgcHJldmlvdXNDbGlja0J1dHRvbiA9IDA7CisgICAgfQorCisgICAgaW50IGN1cnJlbnRD
bGlja0NvdW50Rm9yR2RrQnV0dG9uRXZlbnQoR2RrRXZlbnRCdXR0b24qIGJ1dHRvbkV2ZW50KQor
ICAgIHsKKyAgICAgICAgR2RrRXZlbnQqIGV2ZW50ID0gcmVpbnRlcnByZXRfY2FzdDxHZGtFdmVu
dCo+KGJ1dHRvbkV2ZW50KTsKKyAgICAgICAgaW50IGRvdWJsZUNsaWNrRGlzdGFuY2UgPSAyNTA7
CisgICAgICAgIGludCBkb3VibGVDbGlja1RpbWUgPSA1OworICAgICAgICBnX29iamVjdF9nZXQo
Z3RrX3NldHRpbmdzX2dldF9mb3Jfc2NyZWVuKGdka19ldmVudF9nZXRfc2NyZWVuKGV2ZW50KSks
CisgICAgICAgICAgICAiZ3RrLWRvdWJsZS1jbGljay1kaXN0YW5jZSIsICZkb3VibGVDbGlja0Rp
c3RhbmNlLCAiZ3RrLWRvdWJsZS1jbGljay10aW1lIiwgJmRvdWJsZUNsaWNrVGltZSwgbnVsbHB0
cik7CisKKyAgICAgICAgLy8gR1RLKyBvbmx5IGNvdW50cyB1cCB0byB0cmlwbGUgY2xpY2tzLCBi
dXQgV2ViQ29yZSB3YW50cyB0byBrbm93IGFib3V0CisgICAgICAgIC8vIHF1YWRydXBsZSBjbGlj
a3MsIHF1aW50dXBsZSBjbGlja3MsIGFkIGluZmluaXR1bS4gSGVyZSwgd2UgcmVwbGljYXRlIHRo
ZQorICAgICAgICAvLyBHREsgbG9naWMgZm9yIGNvdW50aW5nIGNsaWNrcy4KKyAgICAgICAgZ3Vp
bnQzMiBldmVudFRpbWUgPSBnZGtfZXZlbnRfZ2V0X3RpbWUoZXZlbnQpOworICAgICAgICBpZiAo
IWV2ZW50VGltZSkgeworICAgICAgICAgICAgLy8gUmVhbCBldmVudHMgYWx3YXlzIGhhdmUgYSBu
b24temVybyB0aW1lLCBidXQgZXZlbnRzIHN5bnRoZXNpemVkCisgICAgICAgICAgICAvLyBieSB0
aGUgV1RSIGRvIG5vdCBhbmQgd2UgbXVzdCBjYWxjdWxhdGUgYSB0aW1lIG1hbnVhbGx5LiBUaGlz
IHRpbWUKKyAgICAgICAgICAgIC8vIGlzIG5vdCBjYWxjdWxhdGVkIGluIHRoZSBXVFIsIGJlY2F1
c2UgR1RLKyBkb2VzIG5vdCB3b3JrIHdlbGwgd2l0aAorICAgICAgICAgICAgLy8gYW55dGhpbmcg
b3RoZXIgdGhhbiBHREtfQ1VSUkVOVF9USU1FIG9uIHN5bnRoZXNpemVkIGV2ZW50cy4KKyAgICAg
ICAgICAgIEdUaW1lVmFsIHRpbWVWYWx1ZTsKKyAgICAgICAgICAgIGdfZ2V0X2N1cnJlbnRfdGlt
ZSgmdGltZVZhbHVlKTsKKyAgICAgICAgICAgIGV2ZW50VGltZSA9ICh0aW1lVmFsdWUudHZfc2Vj
ICogMTAwMCkgKyAodGltZVZhbHVlLnR2X3VzZWMgLyAxMDAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICgoZXZlbnQtPnR5cGUgPT0gR0RLXzJCVVRUT05fUFJFU1MgfHwgZXZlbnQtPnR5cGUg
PT0gR0RLXzNCVVRUT05fUFJFU1MpCisgICAgICAgICAgICB8fCAoKGFicyhidXR0b25FdmVudC0+
eCAtIHByZXZpb3VzQ2xpY2tQb2ludC54KCkpIDwgZG91YmxlQ2xpY2tEaXN0YW5jZSkKKyAgICAg
ICAgICAgICAgICAmJiAoYWJzKGJ1dHRvbkV2ZW50LT55IC0gcHJldmlvdXNDbGlja1BvaW50Lnko
KSkgPCBkb3VibGVDbGlja0Rpc3RhbmNlKQorICAgICAgICAgICAgICAgICYmIChldmVudFRpbWUg
LSBwcmV2aW91c0NsaWNrVGltZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkb3VibGVDbGlja1Rp
bWUpKQorICAgICAgICAgICAgICAgICYmIChidXR0b25FdmVudC0+YnV0dG9uID09IHByZXZpb3Vz
Q2xpY2tCdXR0b24pKSkKKyAgICAgICAgICAgIGN1cnJlbnRDbGlja0NvdW50Kys7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGN1cnJlbnRDbGlja0NvdW50ID0gMTsKKworICAgICAgICBkb3Vi
bGUgeCwgeTsKKyAgICAgICAgZ2RrX2V2ZW50X2dldF9jb29yZHMoZXZlbnQsICZ4LCAmeSk7Cisg
ICAgICAgIHByZXZpb3VzQ2xpY2tQb2ludCA9IEludFBvaW50KHgsIHkpOworICAgICAgICBwcmV2
aW91c0NsaWNrQnV0dG9uID0gYnV0dG9uRXZlbnQtPmJ1dHRvbjsKKyAgICAgICAgcHJldmlvdXND
bGlja1RpbWUgPSBldmVudFRpbWU7CisKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRDbGlja0NvdW50
OworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgY3VycmVudENsaWNrQ291bnQ7CisgICAgSW50
UG9pbnQgcHJldmlvdXNDbGlja1BvaW50OworICAgIHVuc2lnbmVkIHByZXZpb3VzQ2xpY2tCdXR0
b247CisgICAgaW50IHByZXZpb3VzQ2xpY2tUaW1lOworfTsKKwogdHlwZWRlZiBIYXNoTWFwPEd0
a1dpZGdldCosIEludFJlY3Q+IFdlYktpdFdlYlZpZXdDaGlsZHJlbk1hcDsKIHR5cGVkZWYgSGFz
aE1hcDx1aW50MzJfdCwgR1VuaXF1ZVB0cjxHZGtFdmVudD4+IFRvdWNoRXZlbnRzTWFwOwogCkBA
IC04Niw3ICsxNDIsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdCYXNlUHJpdmF0ZSB7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogICAgIFJlZlB0cjxX
ZWJQYWdlUHJveHk+IHBhZ2VQcm94eTsKICAgICBib29sIHNob3VsZEZvcndhcmROZXh0S2V5RXZl
bnQ7Ci0gICAgR3RrQ2xpY2tDb3VudGVyIGNsaWNrQ291bnRlcjsKKyAgICBDbGlja0NvdW50ZXIg
Y2xpY2tDb3VudGVyOwogICAgIENTdHJpbmcgdG9vbHRpcFRleHQ7CiAgICAgSW50UmVjdCB0b29s
dGlwQXJlYTsKICNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgMTMsIDQpCkBAIC03MDIsMTQgKzc1
OCwyMSBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld0Jhc2VCdXR0b25QcmVzc0V2ZW50
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dAogCiAgICAgcHJpdi0+aW5wdXRNZXRob2RG
aWx0ZXIubm90aWZ5TW91c2VCdXR0b25QcmVzcygpOwogCi0gICAgaWYgKCFwcml2LT5jbGlja0Nv
dW50ZXIuc2hvdWxkUHJvY2Vzc0J1dHRvbkV2ZW50KGJ1dHRvbkV2ZW50KSkKKyAgICAvLyBGb3Ig
ZG91YmxlIGFuZCB0cmlwbGUgY2xpY2tzIEdESyBzZW5kcyBib3RoIGEgbm9ybWFsIGJ1dHRvbiBw
cmVzcyBldmVudAorICAgIC8vIGFuZCBhIHNwZWNpZmljIHR5cGUgKGxpa2UgR0RLXzJCVVRUT05f
UFJFU1MpLiBJZiB3ZSBkZXRlY3QgYSBzcGVjaWFsIHByZXNzCisgICAgLy8gY29taW5nIHVwLCBp
Z25vcmUgdGhpcyBldmVudCBhcyBpdCBjZXJ0YWlubHkgZ2VuZXJhdGVkIHRoZSBkb3VibGUgb3Ig
dHJpcGxlCisgICAgLy8gY2xpY2suIFRoZSBjb25zZXF1ZW5jZSBvZiBub3QgZWF0aW5nIHRoaXMg
ZXZlbnQgaXMgdHdvIERPTSBidXR0b24gcHJlc3MgZXZlbnRzCisgICAgLy8gYXJlIGdlbmVyYXRl
ZC4KKyAgICBHVW5pcXVlUHRyPEdka0V2ZW50PiBuZXh0RXZlbnQoZ2RrX2V2ZW50X3BlZWsoKSk7
CisgICAgaWYgKG5leHRFdmVudCAmJiAobmV4dEV2ZW50LT5hbnkudHlwZSA9PSBHREtfMkJVVFRP
Tl9QUkVTUyB8fCBuZXh0RXZlbnQtPmFueS50eXBlID09IEdES18zQlVUVE9OX1BSRVNTKSkKICAg
ICAgICAgcmV0dXJuIFRSVUU7CiAKICAgICAvLyBJZiBpdCdzIGEgcmlnaHQgY2xpY2sgZXZlbnQg
c2F2ZSBpdCBhcyBhIHBvc3NpYmxlIGNvbnRleHQgbWVudSBldmVudC4KICAgICBpZiAoYnV0dG9u
RXZlbnQtPmJ1dHRvbiA9PSAzKQogICAgICAgICBwcml2LT5jb250ZXh0TWVudUV2ZW50LnJlc2V0
KGdka19ldmVudF9jb3B5KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVudCkp
KTsKKwogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3Vz
ZUV2ZW50KHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihidXR0b25FdmVudCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNsaWNr
Q291bnRlci5jbGlja0NvdW50Rm9yR2RrQnV0dG9uRXZlbnQod2lkZ2V0LCBidXR0b25FdmVudCkp
KTsKKyAgICAgICAgcHJpdi0+Y2xpY2tDb3VudGVyLmN1cnJlbnRDbGlja0NvdW50Rm9yR2RrQnV0
dG9uRXZlbnQoYnV0dG9uRXZlbnQpKSk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
</data>
<flag name="review"
          id="267977"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>