<?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>81484</bug_id>
          
          <creation_ts>2012-03-18 20:25:39 -0700</creation_ts>
          <short_desc>[chromium] Animation events should only be used for synchronizing animation start times</short_desc>
          <delta_ts>2012-03-21 05:13:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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>
          <dependson>81106</dependson>
          <blocked>79536</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581594</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-03-18 20:25:39 -0700</bug_when>
    <thetext>It is important that animations on the main and impl thread have the same start time. With 81106, we will be ticking animations on the main thread and it is important that the same value be interpolated at time t on either thread.

It is no longer important to set the final values of animations in response to an animation finishing -- animations on the main thread will finish naturally and set their final values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581596</commentid>
    <comment_count>1</comment_count>
      <attachid>132534</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-18 20:29:40 -0700</bug_when>
    <thetext>Created attachment 132534
Patch

Will post another CL with the ChangeLog changes when 81106 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583078</commentid>
    <comment_count>2</comment_count>
      <attachid>132827</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-20 08:14:34 -0700</bug_when>
    <thetext>Created attachment 132827
Patch

Eliminated animation finished events. Animations will finish naturally on the
main thread and the final values will be set.

Animation started events are now also used to synchronize the main thread
animations&apos; start times with their impl thread equivalents, preventing skew.
Until main thread animations receive their synchronized start times, they will
apply their initial values (i.e., they will be paused at time zero). This
guarantees that we will not jump to the animation&apos;s final value on the main
thread while we wait for the synchronized start time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583685</commentid>
    <comment_count>3</comment_count>
      <attachid>132827</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-03-20 18:35:11 -0700</bug_when>
    <thetext>Comment on attachment 132827
Patch

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

A thing of beauty. @Enne.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCAnimationEvents.cpp:-33
&gt; -CCAnimationEvent::CCAnimationEvent(int layerId, CCActiveAnimation::TargetProperty targetProperty)

No need for the CPP anymore, methinks? Just put the constructor in the .h, c.f. CCLayerTreeHost.h&apos;s CCSettings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583701</commentid>
    <comment_count>4</comment_count>
      <attachid>132827</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-20 19:11:20 -0700</bug_when>
    <thetext>Comment on attachment 132827
Patch

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

Drive by language question: is monotonic time a synonym for wall clock time here?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:391
&gt; +        if (m_activeAnimations[i]-&gt;runState() == CCActiveAnimation::Running &amp;&amp; !m_activeAnimations[i]-&gt;needsSynchronizedStartTime()) {
&gt;              double trimmed = m_activeAnimations[i]-&gt;trimTimeToCurrentIteration(monotonicTime);
&gt;  
&gt; +            // Animation assumes its initial value until it gets the synchronized start time
&gt; +            // from the impl thread and can start ticking.
&gt; +            if (m_activeAnimations[i]-&gt;needsSynchronizedStartTime())
&gt; +                trimmed = 0;

I don&apos;t understand this second conditional here.  It looks like it will never be true, based on the first conditional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583716</commentid>
    <comment_count>5</comment_count>
      <attachid>132950</attachid>
    <who name="">vollick</who>
    <bug_when>2012-03-20 19:44:08 -0700</bug_when>
    <thetext>Created attachment 132950
Patch

(In reply to comment #3)
CCAnimationEvents.cpp is toast.

(In reply to comment #4)
&gt; (From update of attachment 132827 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132827&amp;action=review
&gt;
&gt; Drive by language question: is monotonic time a synonym for wall clock time here?
&gt;
I&apos;ve been using monotonicTime to refer to times obtained via monotonicallyIncreasingTime() and wallClockTime for times obtained using currentTime()

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerAnimationController.cpp:391
&gt; &gt; +        if (m_activeAnimations[i]-&gt;runState() == CCActiveAnimation::Running &amp;&amp; !m_activeAnimations[i]-&gt;needsSynchronizedStartTime()) {
&gt; &gt;              double trimmed = m_activeAnimations[i]-&gt;trimTimeToCurrentIteration(monotonicTime);
&gt; &gt;
&gt; &gt; +            // Animation assumes its initial value until it gets the synchronized start time
&gt; &gt; +            // from the impl thread and can start ticking.
&gt; &gt; +            if (m_activeAnimations[i]-&gt;needsSynchronizedStartTime())
&gt; &gt; +                trimmed = 0;
&gt;
&gt; I don&apos;t understand this second conditional here.  It looks like it will never be true, based on the first conditional.
Good catch. The first conditional was meant to be deleted. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583765</commentid>
    <comment_count>6</comment_count>
      <attachid>132950</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-20 20:59:47 -0700</bug_when>
    <thetext>Comment on attachment 132950
Patch

Thanks for the language clarification.  I must have misread some code to think that monotonic and wall clock were being interchangeably used.

R=me, mostly due to Nat&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584015</commentid>
    <comment_count>7</comment_count>
      <attachid>132950</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 05:13:51 -0700</bug_when>
    <thetext>Comment on attachment 132950
Patch

Clearing flags on attachment: 132950

Committed r111525: &lt;http://trac.webkit.org/changeset/111525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584016</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 05:13:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132534</attachid>
            <date>2012-03-18 20:29:40 -0700</date>
            <delta_ts>2012-03-20 08:14:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81484-20120318232939.patch</filename>
            <type>text/plain</type>
            <size>27005</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDZl
MmI3MmJlMTA4MTM2NjA1NWEzZDk1ZTFmOTI1NmU0NWY5ZjE2MWYuLjE0MjgxMWQyMGU3YWJjNWRk
ZDRiYmM1YmY0ODM2OWRlMTQ0ZTE4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC02MDcs
MjggKzYwNywxMCBAQCBib29sIExheWVyQ2hyb21pdW06Omhhc0FjdGl2ZUFuaW1hdGlvbigpIGNv
bnN0CiAgICAgcmV0dXJuIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5oYXNBY3RpdmVBbmlt
YXRpb24oKTsKIH0KIAotdm9pZCBMYXllckNocm9taXVtOjpzZXRBbmltYXRpb25FdmVudChjb25z
dCBDQ0FuaW1hdGlvbkV2ZW50JiBldmVudCwgZG91YmxlIHdhbGxDbG9ja1RpbWUpCi17Ci0gICAg
c3dpdGNoIChldmVudC50eXBlKCkpIHsKLSAgICBjYXNlIENDQW5pbWF0aW9uRXZlbnQ6OlN0YXJ0
ZWQ6Ci0gICAgICAgIG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCh3YWxsQ2xvY2tUaW1lKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENDQW5pbWF0
aW9uRXZlbnQ6OkZpbmlzaGVkRmxvYXRBbmltYXRpb246IHsKLSAgICAgICAgY29uc3QgQ0NGbG9h
dEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQqIGZpbmlzaGVkRXZlbnQgPSBldmVudC50b0Zsb2F0QW5p
bWF0aW9uRmluaXNoZWRFdmVudCgpOwotICAgICAgICBBU1NFUlQoZmluaXNoZWRFdmVudC0+dGFy
Z2V0UHJvcGVydHkoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSk7Ci0gICAgICAgIHNl
dE9wYWNpdHkoZmluaXNoZWRFdmVudC0+ZmluYWxWYWx1ZSgpKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotCi0gICAgY2FzZSBDQ0FuaW1hdGlvbkV2ZW50OjpGaW5pc2hlZFRyYW5zZm9ybUFuaW1h
dGlvbjogewotICAgICAgICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQq
IGZpbmlzaGVkRXZlbnQgPSBldmVudC50b1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQo
KTsKLSAgICAgICAgQVNTRVJUKGZpbmlzaGVkRXZlbnQtPnRhcmdldFByb3BlcnR5KCkgPT0gQ0NB
Y3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7Ci0gICAgICAgIHNldFRyYW5zZm9ybShmaW5pc2hl
ZEV2ZW50LT5maW5hbFZhbHVlKCkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICB9Cit2
b2lkIExheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQmIGV2ZW50LCBkb3VibGUgd2FsbENsb2NrVGltZSkKK3sKKyAgICBtX2xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlci0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChldmVudCk7Cisg
ICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRlLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHdhbGxD
bG9ja1RpbWUpOwogfQogCiB2b2lkIHNvcnRMYXllcnMoVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+OjppdGVyYXRvciwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+OjppdGVyYXRv
ciwgdm9pZCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggMTY2MDdjYTMwZmZkYzY0ZWJkYzkwZWUw
NWQzMjM3ZWVhZTJhYmI2OS4uNGZmMTI4MjcwYTE1MzU5MjA5NmY5YzY1MDFiODBjZTMzYTQxM2Iz
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtNTYsNyArNTYsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIENDQW5pbWF0aW9uRXZlbnQ7CitzdHJ1Y3QgQ0NBbmltYXRpb25TdGFy
dGVkRXZlbnQ7CiBjbGFzcyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdhdGU7CiBjbGFzcyBDQ0xheWVy
SW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKQEAgLTI0Miw3ICsyNDIsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGhhc0FjdGl2ZUFuaW1hdGlvbigpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRB
bmltYXRpb25FdmVudChjb25zdCBDQ0FuaW1hdGlvbkV2ZW50JiwgZG91YmxlIHdhbGxDbG9ja1Rp
bWUpOworICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudCYsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKIAogICAgIHZpcnR1YWwgUmVnaW9u
IG9wYXF1ZUNvbnRlbnRzUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gUmVnaW9uKCk7IH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
QWN0aXZlQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNwcAppbmRleCA4YzAzMDNlZDYyMTBjN2Y0OWJl
MWQyZWE1ZWEzMGY5OGIwNTE5MmNiLi4yNjBkN2Q0N2UzYjMxYjYyZjU5YjFkYTgwNjBhY2Q1Yjc4
NzM3MmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwCkBAIC00NSw2ICs0
NSw3IEBAIENDQWN0aXZlQW5pbWF0aW9uOjpDQ0FjdGl2ZUFuaW1hdGlvbihQYXNzT3duUHRyPEND
QW5pbWF0aW9uQ3VydmU+IGN1cnZlLCBpbnQgYW5pCiAgICAgLCBtX3J1blN0YXRlKFdhaXRpbmdG
b3JUYXJnZXRBdmFpbGFiaWxpdHkpCiAgICAgLCBtX2l0ZXJhdGlvbnMoMSkKICAgICAsIG1fc3Rh
cnRUaW1lKDApCisgICAgLCBtX25lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKGZhbHNlKQogICAg
ICwgbV9wYXVzZVRpbWUoMCkKICAgICAsIG1fdG90YWxQYXVzZWRUaW1lKDApCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2
ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBY3RpdmVBbmltYXRpb24uaAppbmRleCA5YzY2MzNjM2U0YzZmOWQ2YzRlNmJiZTNmZDM3
NjVjYjdkYmU0ZWMyLi41ZGI4M2FmOTU2MjFmNjUwZjNkZmMzZWVjMzE0ZDQ4ZGRjOTRlNGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FjdGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmgKQEAgLTkyLDYgKzkyLDExIEBAIHB1Ymxp
YzoKICAgICBDQ0FuaW1hdGlvbkN1cnZlKiBjdXJ2ZSgpIHsgcmV0dXJuIG1fY3VydmUuZ2V0KCk7
IH0KICAgICBjb25zdCBDQ0FuaW1hdGlvbkN1cnZlKiBjdXJ2ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VydmUuZ2V0KCk7IH0KIAorICAgIC8vIElmIHRoaXMgaXMgdHJ1ZSwgZXZlbiBpZiB0aGUgYW5p
bWF0aW9uIGlzIHJ1bm5pbmcsIGl0IHdpbGwgbm90IGJlIHRpY2thYmxlIHVudGlsCisgICAgLy8g
aXQgaXMgZ2l2ZW4gYSBzdGFydCB0aW1lLiBUaGlzIGlzIHRydWUgZm9yIGFuaW1hdGlvbnMgcnVu
bmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgYm9vbCBuZWVkc1N5bmNocm9uaXplZFN0YXJ0
VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWU7IH0KKyAg
ICB2b2lkIHNldE5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKGJvb2wgbmVlZHNTeW5jaHJvbml6
ZWRTdGFydFRpbWUpIHsgbV9uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSA9IG5lZWRzU3luY2hy
b25pemVkU3RhcnRUaW1lOyB9CisKICAgICAvLyBUYWtlcyB0aGUgZ2l2ZW4gYWJzb2x1dGUgdGlt
ZSwgYW5kIHVzaW5nIHRoZSBzdGFydCB0aW1lIGFuZCB0aGUgbnVtYmVyCiAgICAgLy8gb2YgaXRl
cmF0aW9ucywgcmV0dXJucyB0aGUgcmVsYXRpdmUgdGltZSBpbiB0aGUgY3VycmVudCBpdGVyYXRp
b24uCiAgICAgZG91YmxlIHRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uKGRvdWJsZSBub3cpIGNv
bnN0OwpAQCAtMTIwLDYgKzEyNSw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1faXRlcmF0aW9uczsK
ICAgICBkb3VibGUgbV9zdGFydFRpbWU7CiAKKyAgICBib29sIG1fbmVlZHNTeW5jaHJvbml6ZWRT
dGFydFRpbWU7CisKICAgICAvLyBUaGVzZSBhcmUgdXNlZCBpbiB0cmltVGltZVRvQ3VycmVudEl0
ZXJhdGlvbiB0byBhY2NvdW50IGZvciB0aW1lCiAgICAgLy8gc3BlbnQgd2hpbGUgcGF1c2VkLiBU
aGlzIGlzIG5vdCBpbmNsdWRlZCBpbiBBbmltYXRpb25TdGF0ZSBzaW5jZSBpdAogICAgIC8vIHRo
ZXJlIGlzIGFic29sdXRlbHkgbm8gbmVlZCBmb3IgY2xpZW50cyBvZiB0aGlzIGNvbnRyb2xsZXIg
dG8ga25vdwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwCmluZGV4IGI3N2QwMmJl
ZDlhYzllMDIyZTFhNDVlY2JiYTBkNzQ2Yjc2MjdmNjkuLmZiYTBkYzMyMDg1ODU4YjRmZDYyMmMy
NTFkNGRlZDM2MTI4NGI0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHAK
QEAgLTMwLDkxICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDQW5pbWF0aW9u
RXZlbnQ6OkNDQW5pbWF0aW9uRXZlbnQoaW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLSAgICA6IG1fbGF5ZXJJZChsYXllcklkKQot
ICAgICwgbV90YXJnZXRQcm9wZXJ0eSh0YXJnZXRQcm9wZXJ0eSkKK0NDQW5pbWF0aW9uU3RhcnRl
ZEV2ZW50OjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQgbGF5ZXJJZCwgaW50IGdyb3VwSWQs
IENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgZG91Ymxl
IG1vbm90b25pY1RpbWUpCisgICAgOiBsYXllcklkKGxheWVySWQpCisgICAgLCBncm91cElkKGdy
b3VwSWQpCisgICAgLCB0YXJnZXRQcm9wZXJ0eSh0YXJnZXRQcm9wZXJ0eSkKKyAgICAsIG1vbm90
b25pY1RpbWUobW9ub3RvbmljVGltZSkKIHsKIH0KIAotQ0NBbmltYXRpb25FdmVudDo6fkNDQW5p
bWF0aW9uRXZlbnQoKQotewotfQotCi1jb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCogQ0NB
bmltYXRpb25FdmVudDo6dG9BbmltYXRpb25TdGFydGVkRXZlbnQoKSBjb25zdAotewotICAgIEFT
U0VSVCh0eXBlKCkgPT0gU3RhcnRlZCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50Kj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDRmxvYXRBbmltYXRp
b25GaW5pc2hlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b0Zsb2F0QW5pbWF0aW9uRmluaXNo
ZWRFdmVudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBGaW5pc2hlZEZsb2F0QW5p
bWF0aW9uKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NGbG9hdEFuaW1hdGlvbkZp
bmlzaGVkRXZlbnQqPih0aGlzKTsKLX0KLQotY29uc3QgQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5p
c2hlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVk
RXZlbnQoKSBjb25zdAotewotICAgIEFTU0VSVCh0eXBlKCkgPT0gRmluaXNoZWRUcmFuc2Zvcm1B
bmltYXRpb24pOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDQ1RyYW5zZm9ybUFuaW1h
dGlvbkZpbmlzaGVkRXZlbnQqPih0aGlzKTsKLX0KLQotUGFzc093blB0cjxDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudD4gQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShpbnQgbGF5ZXJJZCwg
Q0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5KQotewotICAg
IHJldHVybiBhZG9wdFB0cihuZXcgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQobGF5ZXJJZCwgdGFy
Z2V0UHJvcGVydHkpKTsKLX0KLQotQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OkNDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50KGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVy
dHkgdGFyZ2V0UHJvcGVydHkpCi0gICAgOiBDQ0FuaW1hdGlvbkV2ZW50KGxheWVySWQsIHRhcmdl
dFByb3BlcnR5KQotewotfQotCi1DQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6fkNDQW5pbWF0aW9u
U3RhcnRlZEV2ZW50KCkKLXsKLX0KLQotQ0NBbmltYXRpb25FdmVudDo6VHlwZSBDQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudDo6dHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFN0YXJ0ZWQ7Ci19Ci0K
LVBhc3NPd25QdHI8Q0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ+IENDRmxvYXRBbmltYXRp
b25GaW5pc2hlZEV2ZW50OjpjcmVhdGUoaW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgZmxvYXQgZmluYWxWYWx1ZSkKLXsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50KGxheWVySWQs
IHRhcmdldFByb3BlcnR5LCBmaW5hbFZhbHVlKSk7Ci19Ci0KLUNDRmxvYXRBbmltYXRpb25GaW5p
c2hlZEV2ZW50OjpDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudChpbnQgbGF5ZXJJZCwgQ0NB
Y3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBmbG9hdCBmaW5h
bFZhbHVlKQotICAgIDogQ0NBbmltYXRpb25FdmVudChsYXllcklkLCB0YXJnZXRQcm9wZXJ0eSkK
LSAgICAsIG1fZmluYWxWYWx1ZShmaW5hbFZhbHVlKQotewotfQotCi1DQ0Zsb2F0QW5pbWF0aW9u
RmluaXNoZWRFdmVudDo6fkNDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50KCkKLXsKLX0KLQot
Q0NBbmltYXRpb25FdmVudDo6VHlwZSBDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudDo6dHlw
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIEZpbmlzaGVkRmxvYXRBbmltYXRpb247Ci19Ci0KLVBh
c3NPd25QdHI8Q0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50PiBDQ1RyYW5zZm9ybUFu
aW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmNyZWF0ZShpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRp
b246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZmluYWxWYWx1ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVHJhbnNmb3Jt
QW5pbWF0aW9uRmluaXNoZWRFdmVudChsYXllcklkLCB0YXJnZXRQcm9wZXJ0eSwgZmluYWxWYWx1
ZSkpOwotfQotCi1DQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OkNDVHJhbnNmb3Jt
QW5pbWF0aW9uRmluaXNoZWRFdmVudChpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRh
cmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZmluYWxWYWx1ZSkKLSAgICA6IENDQW5pbWF0aW9uRXZlbnQobGF5ZXJJZCwgdGFyZ2V0UHJvcGVy
dHkpCi0gICAgLCBtX2ZpbmFsVmFsdWUoZmluYWxWYWx1ZSkKLXsKLX0KLQotQ0NUcmFuc2Zvcm1B
bmltYXRpb25GaW5pc2hlZEV2ZW50Ojp+Q0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50
KCkKLXsKLX0KLQotQ0NBbmltYXRpb25FdmVudDo6VHlwZSBDQ1RyYW5zZm9ybUFuaW1hdGlvbkZp
bmlzaGVkRXZlbnQ6OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBGaW5pc2hlZFRyYW5zZm9y
bUFuaW1hdGlvbjsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVu
dHMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5p
bWF0aW9uRXZlbnRzLmgKaW5kZXggZTI0Zjc1ZGM3YzFiM2VjNTI4NTAxOGNkZTFhZjk3YjgzYWE0
ZDY5Ni4uNWYwZGQyNzljMjkxMGFjZjZmYWI4MThlYzVmNTA3MWRmZTk1OTg0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRp
b25FdmVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oCkBAIC0yNyw4NyArMjcsMjAgQEAKIAogI2luY2x1ZGUg
ImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCiAKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudDsKLWNsYXNzIENDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2
ZW50OwotY2xhc3MgQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50Oworc3RydWN0IEND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50IHsKKyAgICBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQg
bGF5ZXJJZCwgaW50IGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwg
ZG91YmxlIG1vbm90b25pY1RpbWUpOwogCi1jbGFzcyBDQ0FuaW1hdGlvbkV2ZW50IHsKLXB1Ymxp
YzoKLSAgICBlbnVtIFR5cGUgeyBTdGFydGVkLCBGaW5pc2hlZEZsb2F0QW5pbWF0aW9uLCBGaW5p
c2hlZFRyYW5zZm9ybUFuaW1hdGlvbiB9OwotCi0gICAgdmlydHVhbCB+Q0NBbmltYXRpb25FdmVu
dCgpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7Ci0KLSAgICBpbnQgbGF5
ZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJJZDsgfQotCi0gICAgQ0NBY3RpdmVBbmltYXRp
b246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRQcm9wZXJ0eTsgfQotCi0gICAgY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQqIHRvQW5p
bWF0aW9uU3RhcnRlZEV2ZW50KCkgY29uc3Q7Ci0gICAgY29uc3QgQ0NGbG9hdEFuaW1hdGlvbkZp
bmlzaGVkRXZlbnQqIHRvRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50KCkgY29uc3Q7Ci0gICAg
Y29uc3QgQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50KiB0b1RyYW5zZm9ybUFuaW1h
dGlvbkZpbmlzaGVkRXZlbnQoKSBjb25zdDsKLQotcHJvdGVjdGVkOgotICAgIENDQW5pbWF0aW9u
RXZlbnQoaW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSk7Ci0K
LXByaXZhdGU6Ci0gICAgaW50IG1fbGF5ZXJJZDsKLSAgICBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFy
Z2V0UHJvcGVydHkgbV90YXJnZXRQcm9wZXJ0eTsKLX07Ci0KLS8vIEluZGljYXRlcyB0aGF0IGFu
IGFuaW1hdGlvbiBoYXMgc3RhcnRlZCBvbiBhIHBhcnRpY3VsYXIgbGF5ZXIuCi1jbGFzcyBDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudCA6IHB1YmxpYyBDQ0FuaW1hdGlvbkV2ZW50IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudD4gY3JlYXRlKGlu
dCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpOwotCi0gICAgdmly
dHVhbCB+Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBl
KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxh
eWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSk7Ci19OwotCi0vLyBJbmRp
Y2F0ZXMgdGhhdCBhIGZsb2F0IGFuaW1hdGlvbiBoYXMgY29tcGxldGVkLgotY2xhc3MgQ0NGbG9h
dEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQgOiBwdWJsaWMgQ0NBbmltYXRpb25FdmVudCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ+
IGNyZWF0ZShpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5LCBm
bG9hdCBmaW5hbFZhbHVlKTsKLQotICAgIHZpcnR1YWwgfkNDRmxvYXRBbmltYXRpb25GaW5pc2hl
ZEV2ZW50KCk7Ci0KLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0OwotCi0gICAgZmxvYXQg
ZmluYWxWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmluYWxWYWx1ZTsgfQotCi1wcml2YXRlOgot
ICAgIENDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50KGludCBsYXllcklkLCBDQ0FjdGl2ZUFu
aW1hdGlvbjo6VGFyZ2V0UHJvcGVydHksIGZsb2F0IGZpbmFsVmFsdWUpOwotCi0gICAgZmxvYXQg
bV9maW5hbFZhbHVlOwotfTsKLQotLy8gSW5kaWNhdGVzIHRoYXQgYSB0cmFuc2Zvcm0gYW5pbWF0
aW9uIGhhcyBjb21wbGV0ZWQuCi1jbGFzcyBDQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZl
bnQgOiBwdWJsaWMgQ0NBbmltYXRpb25FdmVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NP
d25QdHI8Q0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50PiBjcmVhdGUoaW50IGxheWVy
SWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGZpbmFsVmFsdWUpOwotCi0gICAgdmlydHVhbCB+Q0NUcmFuc2Zvcm1BbmltYXRp
b25GaW5pc2hlZEV2ZW50KCk7Ci0KLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0OwotCi0g
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZpbmFsVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX2ZpbmFsVmFsdWU7IH0KLQotcHJpdmF0ZToKLSAgICBDQ1RyYW5zZm9ybUFuaW1hdGlvbkZp
bmlzaGVkRXZlbnQoaW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0
eSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZpbmFsVmFsdWUpOwotCi0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbV9maW5hbFZhbHVlOworICAgIGludCBsYXllcklkOworICAgIGludCBn
cm91cElkOworICAgIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9w
ZXJ0eTsKKyAgICBkb3VibGUgbW9ub3RvbmljVGltZTsKIH07CiAKLXR5cGVkZWYgVmVjdG9yPE93
blB0cjxDQ0FuaW1hdGlvbkV2ZW50PiA+IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yOwordHlwZWRl
ZiBWZWN0b3I8Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9y
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAxMjM4ZGNlMGUxYmVkYmIyZTY2ZDc0YjEx
MzAzMWRhYTAyZDVjZmY4Li4yODBmNjI5MDAyNDFlOGU0N2I3OWJiODk3NWViMjU3M2Y3YjVkZWIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CkBAIC05Nyw2ICs5NywxMCBAQCBQYXNzT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiBjcmVhdGVB
Y3RpdmVBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbAogICAgICAgICBhbmlt
LT5zZXRJdGVyYXRpb25zKGl0ZXJhdGlvbnMpOwogICAgIH0KIAorICAgIC8vIEluIG9yZGVyIHRv
IGF2b2lkIHNrZXcsIHRoZSBtYWluIHRocmVhZCBhbmltYXRpb24gY2Fubm90IHRpY2sgdW50aWwg
aXQgaGFzIHJlY2VpdmVkIHRoZSBzdGFydCB0aW1lIG9mCisgICAgLy8gdGhlIGNvcnJlc3BvbmRp
bmcgaW1wbCB0aHJlYWQgYW5pbWF0aW9uLgorICAgIGFuaW0tPnNldE5lZWRzU3luY2hyb25pemVk
U3RhcnRUaW1lKHRydWUpOworCiAgICAgcmV0dXJuIGFuaW0ucmVsZWFzZSgpOwogfQogCkBAIC0x
NzgsNyArMTgyLDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0ZShk
b3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHMKICAgICBzdGFydEFuaW1hdGlv
bnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KG1vbm90b25pY1RpbWUsIGV2ZW50cyk7CiAg
ICAgcmVzb2x2ZUNvbmZsaWN0cyhtb25vdG9uaWNUaW1lKTsKICAgICB0aWNrQW5pbWF0aW9ucyht
b25vdG9uaWNUaW1lKTsKLSAgICBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhldmVudHMpOworICAg
IHB1cmdlRmluaXNoZWRBbmltYXRpb25zKCk7CiAgICAgc3RhcnRBbmltYXRpb25zV2FpdGluZ0Zv
clRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lLCBldmVudHMpOwogfQogCkBAIC0yMTMs
MTcgKzIxNywyOCBAQCBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjppc0FuaW1hdGlu
Z1Byb3BlcnR5KENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcgogICAgIHJldHVybiBmYWxzZTsK
IH0KIAordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCYgZXZlbnQpCit7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSA9PSBldmVudC5ncm91cElkICYm
IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSA9PSBldmVudC50YXJnZXRQ
cm9wZXJ0eSkgeworICAgICAgICAgICAgQVNTRVJUKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+bmVl
ZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7CisgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPnNldE5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKGZhbHNlKTsKKyAgICAgICAgICAg
IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKGV2ZW50Lm1vbm90b25pY1RpbWUp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZChDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwpCiB7CiAgICAgLy8gQW55IG5l
dyBhbmltYXRpb25zIG93bmVkIGJ5IHRoZSBtYWluIHRocmVhZCdzIGNvbnRyb2xsZXIgYXJlIGNs
b25lZCBhbmQgYWRkZSB0byB0aGUgaW1wbCB0aHJlYWQncyBjb250cm9sbGVyLgogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIGlmICghY29udHJvbGxlckltcGwtPmdldEFjdGl2ZUFuaW1hdGlvbihtX2FjdGl2ZUFuaW1h
dGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHko
KSkpIHsKICAgICAgICAgICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gdG9BZGQobV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5jbG9uZUZvckltcGxUaHJlYWQoKSk7Ci0gICAgICAgICAgICAvLyBJ
ZiB0aGUgYW5pbWF0aW9uIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MgLS0gc2V0IGl0IHRvIGJlIHdh
aXRpbmcgdW50aWwgdGhlIHRhcmdldCBpcyBhdmFpbGFibGUuCi0gICAgICAgICAgICAvLyBUaGF0
IHdheSwgaXQgd2lsbCBoYXZlIGEgY2hhbmNlIHRvIHN0YXJ0IG9uIHRoZSBpbXBsIHRocmVhZC4g
T3RoZXJ3aXNlLCB3ZSB3aWxsIG5ldmVyIHRpY2sgYXQgdGhlCi0gICAgICAgICAgICAvLyB2ZXJ5
IGJlZ2lubmluZyBvZiB0aGUgYW5pbWF0aW9uLgotICAgICAgICAgICAgaWYgKHRvQWRkLT5ydW5T
dGF0ZSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nIHx8IHRvQWRkLT5ydW5TdGF0ZSgp
ID09IENDQWN0aXZlQW5pbWF0aW9uOjpQYXVzZWQpCi0gICAgICAgICAgICAgICAgdG9BZGQtPnNl
dFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5
LCAwKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3lu
Y2hyb25pemVkU3RhcnRUaW1lKCkpOworICAgICAgICAgICAgQVNTRVJUKCF0b0FkZC0+bmVlZHNT
eW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7CisgICAgICAgICAgICAvLyBUaGUgbmV3IGFuaW1hdGlv
biBzaG91bGQgYmUgc2V0IHRvIHJ1biBhcyBzb29uIGFzIHBvc3NpYmxlLgorICAgICAgICAgICAg
dG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZh
aWxhYmlsaXR5LCAwKTsKICAgICAgICAgICAgIGNvbnRyb2xsZXJJbXBsLT5hZGQodG9BZGQucmVs
ZWFzZSgpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1MCw3ICsyNjUsNyBAQCB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yTmV4dFRpY2so
ZG91YmxlIG1vbm90bwogICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5T
dGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CiAgICAgICAg
ICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShtb25vdG9uaWNUaW1lKTsK
ICAgICAgICAgICAgIGlmIChldmVudHMpCi0gICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQo
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVB
bmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpKSk7CisgICAgICAgICAgICAgICAgZXZlbnRz
LT5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQobV9jbGllbnQtPmlkKCksIG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9w
ZXJ0eSgpLCBtb25vdG9uaWNUaW1lKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yNjEsNyAr
Mjc2LDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25z
V2FpdGluZ0ZvclN0YXJ0VGltZShkb3VibGUgbW9ub3QKICAgICAgICAgaWYgKG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclN0
YXJ0VGltZSAmJiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnN0YXJ0VGltZSgpIDw9IG1vbm90b25p
Y1RpbWUpIHsKICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUo
Q0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUpOwogICAgICAgICAgICAg
aWYgKGV2ZW50cykKLSAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
PnRhcmdldFByb3BlcnR5KCkpKTsKKyAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudChtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT5ncm91cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90
b25pY1RpbWUpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI5OSw3ICszMTQsNyBAQCB2b2lk
IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFy
Z2V0QXZhaWxhYmlsaXR5KGRvdQogICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUp
OwogICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0U3RhcnRUaW1lKG1v
bm90b25pY1RpbWUpOwogICAgICAgICAgICAgICAgIGlmIChldmVudHMpCi0gICAgICAgICAgICAg
ICAgICAgIGV2ZW50cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9j
bGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSkpOwor
ICAgICAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVu
dChtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpLCBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90b25pY1RpbWUpKTsKICAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaSArIDE7IGogPCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9u
c1tpXS0+Z3JvdXAoKSA9PSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPmdyb3VwKCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+c2V0UnVuU3RhdGUoQ0NB
Y3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUpOwpAQCAtMzMyLDcgKzM0Nyw3
IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlc29sdmVDb25mbGljdHMoZG91
YmxlIG1vbm90b25pY1RpbWUpCiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvciog
ZXZlbnRzKQordm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVyZ2VGaW5pc2hlZEFu
aW1hdGlvbnMoKQogewogICAgIC8vIEVhY2ggaXRlcmF0aW9uLCBtX2FjdGl2ZUFuaW1hdGlvbnMu
c2l6ZSgpIGRlY3JlYXNlcyBvciBpIGluY3JlbWVudHMsCiAgICAgLy8gZ3VhcmFudGVlaW5nIHBy
b2dyZXNzIHRvd2FyZHMgbG9vcCB0ZXJtaW5hdGlvbi4KQEAgLTM1MCwyNyArMzY1LDE1IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1cmdlRmluaXNoZWRBbmltYXRpb25zKEND
QW5pbWF0aW9uRXZlbnRzVmVjdG9yCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
aWYgKGFsbEFuaW1zV2l0aFNhbWVJZEFyZUZpbmlzaGVkKSB7Ci0gICAgICAgICAgICAvLyBXZSBu
b3cgbmVlZCB0byByZW1vdmUgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgc2FtZSBncm91cCBpZCBh
cyBncm91cElkCi0gICAgICAgICAgICAvLyAoYW5kIHNlbmQgYWxvbmcgYW5pbWF0aW9uIGZpbmlz
aGVkIG5vdGlmaWNhdGlvbnMsIGlmIG5lY2Vzc2FyeSkuCisgICAgICAgICAgICAvLyBXZSBub3cg
bmVlZCB0byByZW1vdmUgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgc2FtZSBncm91cCBpZCBhcyBn
cm91cElkLgogICAgICAgICAgICAgLy8gRWFjaCBpdGVyYXRpb24sIG1fYWN0aXZlQW5pbWF0aW9u
cy5zaXplKCkgZGVjcmVhc2VzIG9yIGogaW5jcmVtZW50cywKICAgICAgICAgICAgIC8vIGd1YXJh
bnRlZWluZyBwcm9ncmVzcyB0b3dhcmRzIGxvb3AgdGVybWluYXRpb24uIEFsc28sIHdlIGFyZSBn
dWFyYW50ZWVkCiAgICAgICAgICAgICAvLyB0byByZW1vdmUgYXQgbGVhc3Qgb25lIGFjdGl2ZSBh
bmltYXRpb24uCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gaTsgaiA8IG1fYWN0aXZlQW5p
bWF0aW9ucy5zaXplKCk7KSB7CiAgICAgICAgICAgICAgICAgaWYgKGdyb3VwSWQgIT0gbV9hY3Rp
dmVBbmltYXRpb25zW2pdLT5ncm91cCgpKQogICAgICAgICAgICAgICAgICAgICBqKys7Ci0gICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChldmVudHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2pdLT50YXJn
ZXRQcm9wZXJ0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENDQWN0aXZlQW5p
bWF0aW9uOjpPcGFjaXR5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cy0+YXBw
ZW5kKENDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCks
IENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCBtX2NsaWVudC0+b3BhY2l0eSgpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm06Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50Ojpj
cmVhdGUobV9jbGllbnQtPmlkKCksIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIG1fY2xp
ZW50LT50cmFuc2Zvcm0oKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnMucmVt
b3ZlKGopOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBpKys7CkBAIC0zODAsNyArMzgzLDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNW
ZWN0b3IKIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnRpY2tBbmltYXRpb25zKGRv
dWJsZSBtb25vdG9uaWNUaW1lKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3Rp
dmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcpIHsKKyAgICAg
ICAgaWYgKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1h
dGlvbjo6UnVubmluZyAmJiAhbV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNocm9uaXpl
ZFN0YXJ0VGltZSgpKSB7CiAgICAgICAgICAgICBkb3VibGUgdHJpbW1lZCA9IG1fYWN0aXZlQW5p
bWF0aW9uc1tpXS0+dHJpbVRpbWVUb0N1cnJlbnRJdGVyYXRpb24obW9ub3RvbmljVGltZSk7CiAK
ICAgICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0
eSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaApp
bmRleCBkMDBhYWU3OGFjMWQ1MWU5MmMzYmExNDc2NGEzNzQ5ZDhmNDJmNTAzLi43NDUyYmQzMDhk
YjAzNmZkNzIyOWRjYjM0NjlkZDc5MTlkNzRhNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgKQEAgLTg3LDYgKzg3LDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBpZiB0aGVyZSBpcyBhbiBhbmltYXRpb24gc2NoZWR1bGVkIHRvIGFuaW1hdGUgdGhpcyBw
cm9wZXJ0eSBpbiB0aGUgZnV0dXJlLgogICAgIGJvb2wgaXNBbmltYXRpbmdQcm9wZXJ0eShDQ0Fj
dGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpIGNvbnN0OwogCisgICAgLy8gVGhpcyBpcyBj
YWxsZWQgaW4gcmVzcG9uc2UgdG8gYW4gYW5pbWF0aW9uIGJlaW5nIHN0YXJ0ZWQgb24gdGhlIGlt
cGwgdGhyZWFkLiBUaGlzCisgICAgLy8gZnVuY3Rpb24gdXBkYXRlcyB0aGUgY29ycmVzcG9uZGlu
ZyBtYWluIHRocmVhZCBhbmltYXRpb24ncyBzdGFydCB0aW1lLgorICAgIHZvaWQgbm90aWZ5QW5p
bWF0aW9uU3RhcnRlZChjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCYpOworCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXJDbGllbnQqKTsKIApAQCAtMTAwLDcgKzEwNCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBtb25vdG9u
aWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciopOwogICAgIHZvaWQgc3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3IqKTsKICAgICB2b2lkIHJlc29sdmVDb25mbGljdHMoZG91Ymxl
IG1vbm90b25pY1RpbWUpOwotICAgIHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3IqKTsKKyAgICB2b2lkIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKCk7
CiAKICAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggMjVjNDE1MGQ5ZTBmMzAxNzE3ZDZkNDM0
NTkxY2JhYTI4OThjZDE2Yy4uNzJiODZmZjY3NDYzNGJiM2Y5MWQ0ZDA4YmQ5Y2IxOTRmZWEzNTA2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0xNzksMTEgKzE3OSwxMSBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVh
ZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxvYwogICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoYWxsb2NhdG9yKTsKIH0KIAotdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIHdhbGxDbG9ja1RpbWUp
CiB7CiAgICAgbV9hbmltYXRpbmcgPSB0cnVlOwotICAgIG1fY2xpZW50LT51cGRhdGVBbmltYXRp
b25zKGZyYW1lQmVnaW5UaW1lKTsKLSAgICBhbmltYXRlTGF5ZXJzKGZyYW1lQmVnaW5UaW1lKTsK
KyAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyh3YWxsQ2xvY2tUaW1lKTsKKyAgICBhbmlt
YXRlTGF5ZXJzKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKICAgICBtX2FuaW1hdGlu
ZyA9IGZhbHNlOwogfQogCkBAIC02ODEsOCArNjgxLDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6
OmFuaW1hdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDaHJvbWl1bSogY3VycmVudCwgZG91YmxlIG1v
bm8KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUoY29u
c3QgQ0NBbmltYXRpb25FdmVudHNWZWN0b3ImIGV2ZW50cywgTGF5ZXJDaHJvbWl1bSogbGF5ZXIs
IGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogewogICAgIGZvciAoc2l6ZV90IGV2ZW50SW5kZXggPSAw
OyBldmVudEluZGV4IDwgZXZlbnRzLnNpemUoKTsgKytldmVudEluZGV4KSB7Ci0gICAgICAgIGlm
IChsYXllci0+aWQoKSA9PSBldmVudHNbZXZlbnRJbmRleF0tPmxheWVySWQoKSkKLSAgICAgICAg
ICAgIGxheWVyLT5zZXRBbmltYXRpb25FdmVudCgqZXZlbnRzW2V2ZW50SW5kZXhdLCB3YWxsQ2xv
Y2tUaW1lKTsKKyAgICAgICAgaWYgKGxheWVyLT5pZCgpID09IGV2ZW50c1tldmVudEluZGV4XS5s
YXllcklkKQorICAgICAgICAgICAgbGF5ZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZXZlbnRz
W2V2ZW50SW5kZXhdLCB3YWxsQ2xvY2tUaW1lKTsKICAgICB9CiAKICAgICBmb3IgKHNpemVfdCBj
aGlsZEluZGV4ID0gMDsgY2hpbGRJbmRleCA8IGxheWVyLT5jaGlsZHJlbigpLnNpemUoKTsgKytj
aGlsZEluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBmNzQ5YTZiMDNkMTdm
NDRlZDYxOTg0ZmU5ODAyYWEwMTBkOGU2MWJmLi45Zjc4MGE3YWU3N2FhMWU4ZTE1MTM3YTFkYjhm
OWYwZjkwYmY4Y2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTI1LDcgKzEy
NSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBhbnlMYXllclRyZWVIb3N0SW5zdGFuY2VF
eGlzdHMoKTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdCBpbnRlcmZhY2UgdG8gQ0NQcm94eS4K
LSAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKTsKKyAgICB2
b2lkIHVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIHdhbGxDbG9ja1RpbWUpOwogICAgIHZvaWQgbGF5
b3V0KCk7CiAgICAgdm9pZCBiZWdpbkNvbW1pdE9uSW1wbFRocmVhZChDQ0xheWVyVHJlZUhvc3RJ
bXBsKik7CiAgICAgdm9pZCBmaW5pc2hDb21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0
SW1wbCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBmYzc3NWMzZWU4MjVlMTcx
YmVmNGFlYjI1NzljNDdiOTQ5YzM2MjU3Li4zMjdkOWJlMGIxMjBmYjllZmRlZmY4MDUzMTg4MDUz
MzA2YWJkYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzkzLDcgKzM5Myw4
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpCiB7CiAg
ICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdp
bkZyYW1lIik7CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdCk7Ci0gICAg
bV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcgQmVnaW5GcmFtZUFuZENv
bW1pdFN0YXRlKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSk7CisgICAgbV9wZW5kaW5n
QmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRl
KCkpOworICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5mcmFtZUJlZ2luVGltZSA9IDA7
CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPnNjcm9sbEluZm8gPSBtX2xheWVyVHJl
ZUhvc3RJbXBsLT5wcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CiAKICAgICBtX21haW5UaHJlYWRQcm94
eS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYWFmMmY3MmJlMjI4MzdmNmVi
MDQ1MjdkMmFkNTI3ZTFiYzdjNjI5YS4uOWU1MjRhNzYzZTI4NTBmZDIwOWMxM2UzNTI2MTJlYzVj
YTMwNDllMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtOTIsNyArOTIsNyBAQCBwcml2
YXRlOgogCiAgICAgLy8gU2V0IG9uIGltcGwgdGhyZWFkLCByZWFkIG9uIG1haW4gdGhyZWFkLgog
ICAgIHN0cnVjdCBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUgewotICAgICAgICBCZWdpbkZyYW1l
QW5kQ29tbWl0U3RhdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lKSA6IGZyYW1lQmVnaW5UaW1lKGZy
YW1lQmVnaW5UaW1lKSB7IH0KKyAgICAgICAgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkgOiBm
cmFtZUJlZ2luVGltZSgwKSB7IH0KICAgICAgICAgZG91YmxlIGZyYW1lQmVnaW5UaW1lOwogICAg
ICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAKaW5kZXggM2ZkYTJjOWVlN2FjYWYwYmVlMzY3ZGViNWU2YjFkOTNhOGQxY2I1Ni4uYzZhZDlm
ZjFiYWQ3M2ZiMDMzMzI3MjFhOGFiMWE0NjA5MTJiZTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0xMDA2LDYg
KzEwMDYsNDkgQEAgcHVibGljOgogICAgIH0KIH07CiAKKy8vIEVuc3VyZXMgdGhhdCBtYWluIHRo
cmVhZCBhbmltYXRpb25zIGhhdmUgdGhlaXIgc3RhcnQgdGltZXMgc3luY2hyb25pemVkIHdpdGgg
aW1wbCB0aHJlYWQgYW5pbWF0aW9ucy4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RTeW5jaHJv
bml6ZUFuaW1hdGlvblN0YXJ0VGltZXMgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdFRocmVh
ZE9ubHkgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTeW5jaHJvbml6ZUFuaW1h
dGlvblN0YXJ0VGltZXMoKQorICAgICAgICA6IG1fbnVtQW5pbWF0ZXMoMCkKKyAgICB7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBwb3N0QWRk
QW5pbWF0aW9uVG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFuaW1h
dGVMYXllcnMoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwsIGRvdWJsZSBt
b25vdG9uaWNUaW1lKQorICAgIHsKKyAgICAgICAgaWYgKCFtX251bUFuaW1hdGVzKSB7CisgICAg
ICAgICAgICBtX251bUFuaW1hdGVzKys7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlckltcGwgPSBs
YXllclRyZWVIb3N0SW1wbC0+cm9vdExheWVyKCktPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigp
OworICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IG1fbGF5
ZXJUcmVlSG9zdC0+cm9vdExheWVyKCktPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpOworICAg
ICAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYW5pbWF0aW9uSW1wbCA9IGNvbnRyb2xsZXJJbXBsLT5n
ZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpOworICAgICAg
ICBDQ0FjdGl2ZUFuaW1hdGlvbiogYW5pbWF0aW9uID0gY29udHJvbGxlci0+Z2V0QWN0aXZlQW5p
bWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KTsKKworICAgICAgICBFWFBFQ1Rf
RVEoYW5pbWF0aW9uSW1wbC0+c3RhcnRUaW1lKCksIGFuaW1hdGlvbi0+c3RhcnRUaW1lKCkpOwor
CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0
KCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIGludCBtX251bUFuaW1hdGVzOworfTsK
KworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTeW5jaHJvbml6ZUFuaW1hdGlvblN0YXJ0VGlt
ZXMsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3RUaHJlYWRlZCgpOworfQorCiBURVNU
X0YoQ0NMYXllclRyZWVIb3N0VGVzdERvTm90U2tpcExheWVyc1dpdGhBbmltYXRlZE9wYWNpdHks
IHJ1bk11bHRpVGhyZWFkKQogewogICAgIHJ1blRlc3RUaHJlYWRlZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132827</attachid>
            <date>2012-03-20 08:14:34 -0700</date>
            <delta_ts>2012-03-20 19:44:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81484-20120320111433.patch</filename>
            <type>text/plain</type>
            <size>30081</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI3OTYyOTEwYTUwY2E5
NDM0ODM3ODQ4YmFhMGMzODZiMzFlMzZkNC4uNjQzNzU0OWQ3YzY5NDcyYTA2YmM2YWM0MWM4MDE0
NTI1MGUzYzA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4IEBACiAyMDEyLTAzLTIwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQW5p
bWF0aW9uIGV2ZW50cyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBzeW5jaHJvbml6aW5nIGFuaW1h
dGlvbiBzdGFydCB0aW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFbGltaW5hdGVkIGFuaW1hdGlvbiBmaW5pc2hlZCBldmVudHMuIEFuaW1hdGlvbnMg
d2lsbCBmaW5pc2ggbmF0dXJhbGx5IG9uIHRoZQorICAgICAgICBtYWluIHRocmVhZCBhbmQgdGhl
IGZpbmFsIHZhbHVlcyB3aWxsIGJlIHNldC4KKworICAgICAgICBBbmltYXRpb24gc3RhcnRlZCBl
dmVudHMgYXJlIG5vdyBhbHNvIHVzZWQgdG8gc3luY2hyb25pemUgdGhlIG1haW4gdGhyZWFkCisg
ICAgICAgIGFuaW1hdGlvbnMnIHN0YXJ0IHRpbWVzIHdpdGggdGhlaXIgaW1wbCB0aHJlYWQgZXF1
aXZhbGVudHMsIHByZXZlbnRpbmcgc2tldy4KKyAgICAgICAgVW50aWwgbWFpbiB0aHJlYWQgYW5p
bWF0aW9ucyByZWNlaXZlIHRoZWlyIHN5bmNocm9uaXplZCBzdGFydCB0aW1lcywgdGhleSB3aWxs
CisgICAgICAgIGFwcGx5IHRoZWlyIGluaXRpYWwgdmFsdWVzIChpLmUuLCB0aGV5IHdpbGwgYmUg
cGF1c2VkIGF0IHRpbWUgemVybykuIFRoaXMKKyAgICAgICAgZ3VhcmFudGVlcyB0aGF0IHdlIHdp
bGwgbm90IGp1bXAgdG8gdGhlIGFuaW1hdGlvbidzIGZpbmFsIHZhbHVlIG9uIHRoZSBtYWluCisg
ICAgICAgIHRocmVhZCB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgc3luY2hyb25pemVkIHN0YXJ0IHRp
bWUuCisKKyAgICAgICAgVGVzdGVkIGluIENDTGF5ZXJUcmVlSG9zdFRlc3RTeW5jaHJvbml6ZUFu
aW1hdGlvblN0YXJ0VGltZXMKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6bm90
aWZ5QW5pbWF0aW9uU3RhcnRlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2
ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjo6Q0NB
Y3RpdmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDQWN0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgIChDQ0FjdGl2ZUFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjo6bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRp
bWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb246OnNldE5lZWRzU3luY2hy
b25pemVkU3RhcnRUaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0
YXJ0ZWRFdmVudDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmg6CisgICAgICAgIChDQ0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6YW5pbWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5p
bWF0aW9uU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1wbFRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmlt
YXRpb25zV2FpdGluZ0Zvck5leHRUaWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlv
bnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6dGlja0FuaW1hdGlvbnMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyLmg6CisgICAgICAgIChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcik6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQW5pbWF0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnNldEFuaW1hdGlvbkV2ZW50c1JlY3Vy
c2l2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0Lmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3QpOgorCisyMDEyLTAzLTIwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gSW5m
cmFzdHJ1Y3R1cmUgdG8gYWxsb3cgYW5pbWF0aW5nIGxheWVycyB0byBiZSBvbmx5IHBhcnRpYWxs
eSB1cGRhdGVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MTEwNgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDJmMmMzMDY3MWI2YmRhMmQ4
YWE4ZTdmMGUwMjgwMzI0MTlkMTc2YzkuLmZiMDkwMmEwNDgwY2M3YmM2ZjY1NmEyNDU4ZjBjN2Yx
ZmFlYmVkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEgQEAKIDIw
MTItMDMtMjAgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAg
W2Nocm9taXVtXSBBbmltYXRpb24gZXZlbnRzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHN5bmNo
cm9uaXppbmcgYW5pbWF0aW9uIHN0YXJ0IHRpbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6Cisg
ICAgICAgIChXVEYpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0VGVzdFN5bmNocm9uaXplQW5p
bWF0aW9uU3RhcnRUaW1lcyk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTeW5j
aHJvbml6ZUFuaW1hdGlvblN0YXJ0VGltZXM6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTeW5jaHJvbml6
ZUFuaW1hdGlvblN0YXJ0VGltZXMpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0
U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RG
OjpDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzOjphbmlt
YXRlTGF5ZXJzKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN5bmNocm9uaXpl
QW5pbWF0aW9uU3RhcnRUaW1lczo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToK
KworMjAxMi0wMy0yMCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBbY2hyb21pdW1dIEluZnJhc3RydWN0dXJlIHRvIGFsbG93IGFuaW1hdGluZyBsYXllcnMg
dG8gYmUgb25seSBwYXJ0aWFsbHkgdXBkYXRlZAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODExMDYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRleCBi
YTVhZDA0MDhhOGQwYzI5Y2YwZjA0YWM2OGE2OGYxNDk2NDZkYjllLi5kY2ZiNmUzMWZiMDhkNmQx
ZDY5M2RlNGY0MTAzZGE1NjcwYjgzYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAtNjA2
LDI4ICs2MDYsMTAgQEAgYm9vbCBMYXllckNocm9taXVtOjpoYXNBY3RpdmVBbmltYXRpb24oKSBj
b25zdAogICAgIHJldHVybiBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+aGFzQWN0aXZlQW5p
bWF0aW9uKCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0QW5pbWF0aW9uRXZlbnQoY29u
c3QgQ0NBbmltYXRpb25FdmVudCYgZXZlbnQsIGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQotewotICAg
IHN3aXRjaCAoZXZlbnQudHlwZSgpKSB7Ci0gICAgY2FzZSBDQ0FuaW1hdGlvbkV2ZW50OjpTdGFy
dGVkOgotICAgICAgICBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQod2FsbENsb2NrVGltZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDQ0FuaW1h
dGlvbkV2ZW50OjpGaW5pc2hlZEZsb2F0QW5pbWF0aW9uOiB7Ci0gICAgICAgIGNvbnN0IENDRmxv
YXRBbmltYXRpb25GaW5pc2hlZEV2ZW50KiBmaW5pc2hlZEV2ZW50ID0gZXZlbnQudG9GbG9hdEFu
aW1hdGlvbkZpbmlzaGVkRXZlbnQoKTsKLSAgICAgICAgQVNTRVJUKGZpbmlzaGVkRXZlbnQtPnRh
cmdldFByb3BlcnR5KCkgPT0gQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpOwotICAgICAgICBz
ZXRPcGFjaXR5KGZpbmlzaGVkRXZlbnQtPmZpbmFsVmFsdWUoKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLQotICAgIGNhc2UgQ0NBbmltYXRpb25FdmVudDo6RmluaXNoZWRUcmFuc2Zvcm1Bbmlt
YXRpb246IHsKLSAgICAgICAgY29uc3QgQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50
KiBmaW5pc2hlZEV2ZW50ID0gZXZlbnQudG9UcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50
KCk7Ci0gICAgICAgIEFTU0VSVChmaW5pc2hlZEV2ZW50LT50YXJnZXRQcm9wZXJ0eSgpID09IEND
QWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pOwotICAgICAgICBzZXRUcmFuc2Zvcm0oZmluaXNo
ZWRFdmVudC0+ZmluYWxWYWx1ZSgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgfQor
dm9pZCBMYXllckNocm9taXVtOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0
aW9uU3RhcnRlZEV2ZW50JiBldmVudCwgZG91YmxlIHdhbGxDbG9ja1RpbWUpCit7CisgICAgbV9s
YXllckFuaW1hdGlvbkNvbnRyb2xsZXItPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZXZlbnQpOwor
ICAgIG1fbGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS0+bm90aWZ5QW5pbWF0aW9uU3RhcnRlZCh3YWxs
Q2xvY2tUaW1lKTsKIH0KIAogdm9pZCBzb3J0TGF5ZXJzKFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPjo6aXRlcmF0b3IsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPjo6aXRlcmF0
b3IsIHZvaWQqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDE2NjA3Y2EzMGZmZGM2NGViZGM5MGVl
MDVkMzIzN2VlYWUyYWJiNjkuLjRmZjEyODI3MGExNTM1OTIwOTZmOWM2NTAxYjgwY2UzM2E0MTNi
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTU2LDcgKzU2LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBDQ0FuaW1hdGlvbkV2ZW50Oworc3RydWN0IENDQW5pbWF0aW9uU3Rh
cnRlZEV2ZW50OwogY2xhc3MgQ0NMYXllckFuaW1hdGlvbkRlbGVnYXRlOwogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CkBAIC0yNDIsNyArMjQyLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBjb25zdDsKIAotICAgIHZvaWQgc2V0
QW5pbWF0aW9uRXZlbnQoY29uc3QgQ0NBbmltYXRpb25FdmVudCYsIGRvdWJsZSB3YWxsQ2xvY2tU
aW1lKTsKKyAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25T
dGFydGVkRXZlbnQmLCBkb3VibGUgd2FsbENsb2NrVGltZSk7CiAKICAgICB2aXJ0dWFsIFJlZ2lv
biBvcGFxdWVDb250ZW50c1JlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIFJlZ2lvbigpOyB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FjdGl2ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5jcHAKaW5kZXggOGMwMzAzZWQ2MjEwYzdmNDli
ZTFkMmVhNWVhMzBmOThiMDUxOTJjYi4uMjYwZDdkNDdlM2IzMWI2MmY1OWIxZGE4MDYwYWNkNWI3
ODczNzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNwcApAQCAtNDUsNiAr
NDUsNyBAQCBDQ0FjdGl2ZUFuaW1hdGlvbjo6Q0NBY3RpdmVBbmltYXRpb24oUGFzc093blB0cjxD
Q0FuaW1hdGlvbkN1cnZlPiBjdXJ2ZSwgaW50IGFuaQogICAgICwgbV9ydW5TdGF0ZShXYWl0aW5n
Rm9yVGFyZ2V0QXZhaWxhYmlsaXR5KQogICAgICwgbV9pdGVyYXRpb25zKDEpCiAgICAgLCBtX3N0
YXJ0VGltZSgwKQorICAgICwgbV9uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZShmYWxzZSkKICAg
ICAsIG1fcGF1c2VUaW1lKDApCiAgICAgLCBtX3RvdGFsUGF1c2VkVGltZSgwKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3Rp
dmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDQWN0aXZlQW5pbWF0aW9uLmgKaW5kZXggOWM2NjMzYzNlNGM2ZjlkNmM0ZTZiYmUzZmQz
NzY1Y2I3ZGJlNGVjMi4uNWRiODNhZjk1NjIxZjY1MGYzZGZjM2VlYzMxNGQ0OGRkYzk0ZTRmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NBY3RpdmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oCkBAIC05Miw2ICs5MiwxMSBAQCBwdWJs
aWM6CiAgICAgQ0NBbmltYXRpb25DdXJ2ZSogY3VydmUoKSB7IHJldHVybiBtX2N1cnZlLmdldCgp
OyB9CiAgICAgY29uc3QgQ0NBbmltYXRpb25DdXJ2ZSogY3VydmUoKSBjb25zdCB7IHJldHVybiBt
X2N1cnZlLmdldCgpOyB9CiAKKyAgICAvLyBJZiB0aGlzIGlzIHRydWUsIGV2ZW4gaWYgdGhlIGFu
aW1hdGlvbiBpcyBydW5uaW5nLCBpdCB3aWxsIG5vdCBiZSB0aWNrYWJsZSB1bnRpbAorICAgIC8v
IGl0IGlzIGdpdmVuIGEgc3RhcnQgdGltZS4gVGhpcyBpcyB0cnVlIGZvciBhbmltYXRpb25zIHJ1
bm5pbmcgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIGJvb2wgbmVlZHNTeW5jaHJvbml6ZWRTdGFy
dFRpbWUoKSBjb25zdCB7IHJldHVybiBtX25lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lOyB9Cisg
ICAgdm9pZCBzZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZShib29sIG5lZWRzU3luY2hyb25p
emVkU3RhcnRUaW1lKSB7IG1fbmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUgPSBuZWVkc1N5bmNo
cm9uaXplZFN0YXJ0VGltZTsgfQorCiAgICAgLy8gVGFrZXMgdGhlIGdpdmVuIGFic29sdXRlIHRp
bWUsIGFuZCB1c2luZyB0aGUgc3RhcnQgdGltZSBhbmQgdGhlIG51bWJlcgogICAgIC8vIG9mIGl0
ZXJhdGlvbnMsIHJldHVybnMgdGhlIHJlbGF0aXZlIHRpbWUgaW4gdGhlIGN1cnJlbnQgaXRlcmF0
aW9uLgogICAgIGRvdWJsZSB0cmltVGltZVRvQ3VycmVudEl0ZXJhdGlvbihkb3VibGUgbm93KSBj
b25zdDsKQEAgLTEyMCw2ICsxMjUsOCBAQCBwcml2YXRlOgogICAgIGludCBtX2l0ZXJhdGlvbnM7
CiAgICAgZG91YmxlIG1fc3RhcnRUaW1lOwogCisgICAgYm9vbCBtX25lZWRzU3luY2hyb25pemVk
U3RhcnRUaW1lOworCiAgICAgLy8gVGhlc2UgYXJlIHVzZWQgaW4gdHJpbVRpbWVUb0N1cnJlbnRJ
dGVyYXRpb24gdG8gYWNjb3VudCBmb3IgdGltZQogICAgIC8vIHNwZW50IHdoaWxlIHBhdXNlZC4g
VGhpcyBpcyBub3QgaW5jbHVkZWQgaW4gQW5pbWF0aW9uU3RhdGUgc2luY2UgaXQKICAgICAvLyB0
aGVyZSBpcyBhYnNvbHV0ZWx5IG5vIG5lZWQgZm9yIGNsaWVudHMgb2YgdGhpcyBjb250cm9sbGVy
IHRvIGtub3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmNwcAppbmRleCBiNzdkMDJi
ZWQ5YWM5ZTAyMmUxYTQ1ZWNiYmEwZDc0NmI3NjI3ZjY5Li5mYmEwZGMzMjA4NTg1OGI0ZmQ2MjJj
MjUxZDRkZWQzNjEyODRiNGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3Bw
CkBAIC0zMCw5MSArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1DQ0FuaW1hdGlv
bkV2ZW50OjpDQ0FuaW1hdGlvbkV2ZW50KGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6
VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHkpCi0gICAgOiBtX2xheWVySWQobGF5ZXJJZCkK
LSAgICAsIG1fdGFyZ2V0UHJvcGVydHkodGFyZ2V0UHJvcGVydHkpCitDQ0FuaW1hdGlvblN0YXJ0
ZWRFdmVudDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVySWQsIGludCBncm91cElk
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGRvdWJs
ZSBtb25vdG9uaWNUaW1lKQorICAgIDogbGF5ZXJJZChsYXllcklkKQorICAgICwgZ3JvdXBJZChn
cm91cElkKQorICAgICwgdGFyZ2V0UHJvcGVydHkodGFyZ2V0UHJvcGVydHkpCisgICAgLCBtb25v
dG9uaWNUaW1lKG1vbm90b25pY1RpbWUpCiB7CiB9CiAKLUNDQW5pbWF0aW9uRXZlbnQ6On5DQ0Fu
aW1hdGlvbkV2ZW50KCkKLXsKLX0KLQotY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQqIEND
QW5pbWF0aW9uRXZlbnQ6OnRvQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCkgY29uc3QKLXsKLSAgICBB
U1NFUlQodHlwZSgpID09IFN0YXJ0ZWQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudCo+KHRoaXMpOwotfQotCi1jb25zdCBDQ0Zsb2F0QW5pbWF0
aW9uRmluaXNoZWRFdmVudCogQ0NBbmltYXRpb25FdmVudDo6dG9GbG9hdEFuaW1hdGlvbkZpbmlz
aGVkRXZlbnQoKSBjb25zdAotewotICAgIEFTU0VSVCh0eXBlKCkgPT0gRmluaXNoZWRGbG9hdEFu
aW1hdGlvbik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENDRmxvYXRBbmltYXRpb25G
aW5pc2hlZEV2ZW50Kj4odGhpcyk7Ci19Ci0KLWNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uRmlu
aXNoZWRFdmVudCogQ0NBbmltYXRpb25FdmVudDo6dG9UcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hl
ZEV2ZW50KCkgY29uc3QKLXsKLSAgICBBU1NFUlQodHlwZSgpID09IEZpbmlzaGVkVHJhbnNmb3Jt
QW5pbWF0aW9uKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NUcmFuc2Zvcm1Bbmlt
YXRpb25GaW5pc2hlZEV2ZW50Kj4odGhpcyk7Ci19Ci0KLVBhc3NPd25QdHI8Q0NBbmltYXRpb25T
dGFydGVkRXZlbnQ+IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUoaW50IGxheWVySWQs
IENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLXsKLSAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGxheWVySWQsIHRh
cmdldFByb3BlcnR5KSk7Ci19Ci0KLUNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpDQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudChpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3Bl
cnR5IHRhcmdldFByb3BlcnR5KQotICAgIDogQ0NBbmltYXRpb25FdmVudChsYXllcklkLCB0YXJn
ZXRQcm9wZXJ0eSkKLXsKLX0KLQotQ0NBbmltYXRpb25TdGFydGVkRXZlbnQ6On5DQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudCgpCi17Ci19Ci0KLUNDQW5pbWF0aW9uRXZlbnQ6OlR5cGUgQ0NBbmltYXRp
b25TdGFydGVkRXZlbnQ6OnR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBTdGFydGVkOwotfQot
Ci1QYXNzT3duUHRyPENDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50PiBDQ0Zsb2F0QW5pbWF0
aW9uRmluaXNoZWRFdmVudDo6Y3JlYXRlKGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6
VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGZsb2F0IGZpbmFsVmFsdWUpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudChsYXllcklk
LCB0YXJnZXRQcm9wZXJ0eSwgZmluYWxWYWx1ZSkpOwotfQotCi1DQ0Zsb2F0QW5pbWF0aW9uRmlu
aXNoZWRFdmVudDo6Q0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQoaW50IGxheWVySWQsIEND
QWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgZmxvYXQgZmlu
YWxWYWx1ZSkKLSAgICA6IENDQW5pbWF0aW9uRXZlbnQobGF5ZXJJZCwgdGFyZ2V0UHJvcGVydHkp
Ci0gICAgLCBtX2ZpbmFsVmFsdWUoZmluYWxWYWx1ZSkKLXsKLX0KLQotQ0NGbG9hdEFuaW1hdGlv
bkZpbmlzaGVkRXZlbnQ6On5DQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudCgpCi17Ci19Ci0K
LUNDQW5pbWF0aW9uRXZlbnQ6OlR5cGUgQ0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OnR5
cGUoKSBjb25zdAotewotICAgIHJldHVybiBGaW5pc2hlZEZsb2F0QW5pbWF0aW9uOwotfQotCi1Q
YXNzT3duUHRyPENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudD4gQ0NUcmFuc2Zvcm1B
bmltYXRpb25GaW5pc2hlZEV2ZW50OjpjcmVhdGUoaW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0
aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGZpbmFsVmFsdWUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RyYW5zZm9y
bUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQobGF5ZXJJZCwgdGFyZ2V0UHJvcGVydHksIGZpbmFsVmFs
dWUpKTsKLX0KLQotQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50OjpDQ1RyYW5zZm9y
bUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQoaW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGZpbmFsVmFsdWUpCi0gICAgOiBDQ0FuaW1hdGlvbkV2ZW50KGxheWVySWQsIHRhcmdldFByb3Bl
cnR5KQotICAgICwgbV9maW5hbFZhbHVlKGZpbmFsVmFsdWUpCi17Ci19Ci0KLUNDVHJhbnNmb3Jt
QW5pbWF0aW9uRmluaXNoZWRFdmVudDo6fkNDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVu
dCgpCi17Ci19Ci0KLUNDQW5pbWF0aW9uRXZlbnQ6OlR5cGUgQ0NUcmFuc2Zvcm1BbmltYXRpb25G
aW5pc2hlZEV2ZW50Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRmluaXNoZWRUcmFuc2Zv
cm1BbmltYXRpb247Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZl
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Fu
aW1hdGlvbkV2ZW50cy5oCmluZGV4IGUyNGY3NWRjN2MxYjNlYzUyODUwMThjZGUxYWY5N2I4M2Fh
NGQ2OTYuLjVmMGRkMjc5YzI5MTBhY2Y2ZmFiODE4ZWM1ZjUwNzFkZmU5NTk4NDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0
aW9uRXZlbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaApAQCAtMjcsODcgKzI3LDIwIEBACiAKICNpbmNsdWRl
ICJjYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oIgogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ7Ci1jbGFzcyBDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRF
dmVudDsKLWNsYXNzIENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudDsKK3N0cnVjdCBD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudCB7CisgICAgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50
IGxheWVySWQsIGludCBncm91cElkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHks
IGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIAotY2xhc3MgQ0NBbmltYXRpb25FdmVudCB7Ci1wdWJs
aWM6Ci0gICAgZW51bSBUeXBlIHsgU3RhcnRlZCwgRmluaXNoZWRGbG9hdEFuaW1hdGlvbiwgRmlu
aXNoZWRUcmFuc2Zvcm1BbmltYXRpb24gfTsKLQotICAgIHZpcnR1YWwgfkNDQW5pbWF0aW9uRXZl
bnQoKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOwotCi0gICAgaW50IGxh
eWVySWQoKSBjb25zdCB7IHJldHVybiBtX2xheWVySWQ7IH0KLQotICAgIENDQWN0aXZlQW5pbWF0
aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdGFy
Z2V0UHJvcGVydHk7IH0KLQotICAgIGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KiB0b0Fu
aW1hdGlvblN0YXJ0ZWRFdmVudCgpIGNvbnN0OwotICAgIGNvbnN0IENDRmxvYXRBbmltYXRpb25G
aW5pc2hlZEV2ZW50KiB0b0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0OwotICAg
IGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudCogdG9UcmFuc2Zvcm1Bbmlt
YXRpb25GaW5pc2hlZEV2ZW50KCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBDQ0FuaW1hdGlv
bkV2ZW50KGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpOwot
Ci1wcml2YXRlOgotICAgIGludCBtX2xheWVySWQ7Ci0gICAgQ0NBY3RpdmVBbmltYXRpb246OlRh
cmdldFByb3BlcnR5IG1fdGFyZ2V0UHJvcGVydHk7Ci19OwotCi0vLyBJbmRpY2F0ZXMgdGhhdCBh
biBhbmltYXRpb24gaGFzIHN0YXJ0ZWQgb24gYSBwYXJ0aWN1bGFyIGxheWVyLgotY2xhc3MgQ0NB
bmltYXRpb25TdGFydGVkRXZlbnQgOiBwdWJsaWMgQ0NBbmltYXRpb25FdmVudCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NBbmltYXRpb25TdGFydGVkRXZlbnQ+IGNyZWF0ZShp
bnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5KTsKLQotICAgIHZp
cnR1YWwgfkNDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KCk7Ci0KLSAgICB2aXJ0dWFsIFR5cGUgdHlw
ZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGludCBs
YXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpOwotfTsKLQotLy8gSW5k
aWNhdGVzIHRoYXQgYSBmbG9hdCBhbmltYXRpb24gaGFzIGNvbXBsZXRlZC4KLWNsYXNzIENDRmxv
YXRBbmltYXRpb25GaW5pc2hlZEV2ZW50IDogcHVibGljIENDQW5pbWF0aW9uRXZlbnQgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50
PiBjcmVhdGUoaW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwg
ZmxvYXQgZmluYWxWYWx1ZSk7Ci0KLSAgICB2aXJ0dWFsIH5DQ0Zsb2F0QW5pbWF0aW9uRmluaXNo
ZWRFdmVudCgpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdDsKLQotICAgIGZsb2F0
IGZpbmFsVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2ZpbmFsVmFsdWU7IH0KLQotcHJpdmF0ZToK
LSAgICBDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudChpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVB
bmltYXRpb246OlRhcmdldFByb3BlcnR5LCBmbG9hdCBmaW5hbFZhbHVlKTsKLQotICAgIGZsb2F0
IG1fZmluYWxWYWx1ZTsKLX07Ci0KLS8vIEluZGljYXRlcyB0aGF0IGEgdHJhbnNmb3JtIGFuaW1h
dGlvbiBoYXMgY29tcGxldGVkLgotY2xhc3MgQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2
ZW50IDogcHVibGljIENDQW5pbWF0aW9uRXZlbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudD4gY3JlYXRlKGludCBsYXll
cklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHksIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBmaW5hbFZhbHVlKTsKLQotICAgIHZpcnR1YWwgfkNDVHJhbnNmb3JtQW5pbWF0
aW9uRmluaXNoZWRFdmVudCgpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdDsKLQot
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmaW5hbFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9maW5hbFZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgQ0NUcmFuc2Zvcm1BbmltYXRpb25G
aW5pc2hlZEV2ZW50KGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVy
dHksIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmaW5hbFZhbHVlKTsKLQotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fZmluYWxWYWx1ZTsKKyAgICBpbnQgbGF5ZXJJZDsKKyAgICBpbnQg
Z3JvdXBJZDsKKyAgICBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJv
cGVydHk7CisgICAgZG91YmxlIG1vbm90b25pY1RpbWU7CiB9OwogCi10eXBlZGVmIFZlY3RvcjxP
d25QdHI8Q0NBbmltYXRpb25FdmVudD4gPiBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvcjsKK3R5cGVk
ZWYgVmVjdG9yPENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rv
cjsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTBlNjAwYjI0MmJkMWY0NjhmYzRmNTYw
MjViMzE2MTllYjRmYzExYy4uMjU4NTdlNDk5NWUwNDU3ZWZmMjA0NzQxN2Q3OGI0MWE1MzJmODhl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNw
cApAQCAtOTYsNiArOTYsMTAgQEAgUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gY3JlYXRl
QWN0aXZlQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWwKICAgICAgICAgYW5p
bS0+c2V0SXRlcmF0aW9ucyhpdGVyYXRpb25zKTsKICAgICB9CiAKKyAgICAvLyBJbiBvcmRlciB0
byBhdm9pZCBza2V3LCB0aGUgbWFpbiB0aHJlYWQgYW5pbWF0aW9uIGNhbm5vdCB0aWNrIHVudGls
IGl0IGhhcyByZWNlaXZlZCB0aGUgc3RhcnQgdGltZSBvZgorICAgIC8vIHRoZSBjb3JyZXNwb25k
aW5nIGltcGwgdGhyZWFkIGFuaW1hdGlvbi4KKyAgICBhbmltLT5zZXROZWVkc1N5bmNocm9uaXpl
ZFN0YXJ0VGltZSh0cnVlKTsKKwogICAgIHJldHVybiBhbmltLnJlbGVhc2UoKTsKIH0KIApAQCAt
MTc3LDcgKzE4MSw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGUo
ZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzCiAgICAgc3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lLCBldmVudHMpOwog
ICAgIHJlc29sdmVDb25mbGljdHMobW9ub3RvbmljVGltZSk7CiAgICAgdGlja0FuaW1hdGlvbnMo
bW9ub3RvbmljVGltZSk7Ci0gICAgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoZXZlbnRzKTsKKyAg
ICBwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpOwogICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdG
b3JUYXJnZXRBdmFpbGFiaWxpdHkobW9ub3RvbmljVGltZSwgZXZlbnRzKTsKIH0KIApAQCAtMjEy
LDE3ICsyMTYsMjggQEAgYm9vbCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNBbmltYXRp
bmdQcm9wZXJ0eShDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHIKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQmIGV2ZW50KQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCkgPT0gZXZlbnQuZ3JvdXBJZCAm
JiBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkgPT0gZXZlbnQudGFyZ2V0
UHJvcGVydHkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5l
ZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKCkpOworICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRp
b25zW2ldLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZShmYWxzZSk7CisgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZShldmVudC5tb25vdG9uaWNUaW1l
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJlYWQoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXJJbXBsKQogewogICAgIC8vIEFueSBu
ZXcgYW5pbWF0aW9ucyBvd25lZCBieSB0aGUgbWFpbiB0aHJlYWQncyBjb250cm9sbGVyIGFyZSBj
bG9uZWQgYW5kIGFkZGUgdG8gdGhlIGltcGwgdGhyZWFkJ3MgY29udHJvbGxlci4KICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewogICAg
ICAgICBpZiAoIWNvbnRyb2xsZXJJbXBsLT5nZXRBY3RpdmVBbmltYXRpb24obV9hY3RpdmVBbmlt
YXRpb25zW2ldLT5ncm91cCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5
KCkpKSB7CiAgICAgICAgICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKG1fYWN0
aXZlQW5pbWF0aW9uc1tpXS0+Y2xvbmVGb3JJbXBsVGhyZWFkKCkpOwotICAgICAgICAgICAgLy8g
SWYgdGhlIGFuaW1hdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzIC0tIHNldCBpdCB0byBiZSB3
YWl0aW5nIHVudGlsIHRoZSB0YXJnZXQgaXMgYXZhaWxhYmxlLgotICAgICAgICAgICAgLy8gVGhh
dCB3YXksIGl0IHdpbGwgaGF2ZSBhIGNoYW5jZSB0byBzdGFydCBvbiB0aGUgaW1wbCB0aHJlYWQu
IE90aGVyd2lzZSwgd2Ugd2lsbCBuZXZlciB0aWNrIGF0IHRoZQotICAgICAgICAgICAgLy8gdmVy
eSBiZWdpbm5pbmcgb2YgdGhlIGFuaW1hdGlvbi4KLSAgICAgICAgICAgIGlmICh0b0FkZC0+cnVu
U3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZyB8fCB0b0FkZC0+cnVuU3RhdGUo
KSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UGF1c2VkKQotICAgICAgICAgICAgICAgIHRvQWRkLT5z
ZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0
eSwgMCk7CisgICAgICAgICAgICBBU1NFUlQobV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5
bmNocm9uaXplZFN0YXJ0VGltZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVCghdG9BZGQtPm5lZWRz
U3luY2hyb25pemVkU3RhcnRUaW1lKCkpOworICAgICAgICAgICAgLy8gVGhlIG5ldyBhbmltYXRp
b24gc2hvdWxkIGJlIHNldCB0byBydW4gYXMgc29vbiBhcyBwb3NzaWJsZS4KKyAgICAgICAgICAg
IHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2
YWlsYWJpbGl0eSwgMCk7CiAgICAgICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkKHRvQWRkLnJl
bGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNDksNyArMjY0LDcgQEAgdm9pZCBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0Zvck5leHRUaWNr
KGRvdWJsZSBtb25vdG8KICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVu
U3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcsIG1vbm90b25pY1RpbWUpOwogICAgICAg
ICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7
CiAgICAgICAgICAgICBpZiAoZXZlbnRzKQotICAgICAgICAgICAgICAgIGV2ZW50cy0+YXBwZW5k
KENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGllbnQtPmlkKCksIG1fYWN0aXZl
QW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSkpOworICAgICAgICAgICAgICAgIGV2ZW50
cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJv
cGVydHkoKSwgbW9ub3RvbmljVGltZSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjYwLDcg
KzI3NSw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9u
c1dhaXRpbmdGb3JTdGFydFRpbWUoZG91YmxlIG1vbm90CiAgICAgICAgIGlmIChtX2FjdGl2ZUFu
aW1hdGlvbnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OldhaXRpbmdGb3JT
dGFydFRpbWUgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zdGFydFRpbWUoKSA8PSBtb25vdG9u
aWNUaW1lKSB7CiAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRl
KENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lKTsKICAgICAgICAgICAg
IGlmIChldmVudHMpCi0gICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25T
dGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ld
LT50YXJnZXRQcm9wZXJ0eSgpKSk7CisgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NB
bmltYXRpb25TdGFydGVkRXZlbnQobV9jbGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+Z3JvdXAoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpLCBtb25v
dG9uaWNUaW1lKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yOTgsNyArMzEzLDcgQEAgdm9p
ZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRh
cmdldEF2YWlsYWJpbGl0eShkb3UKICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNb
aV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1l
KTsKICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFN0YXJ0VGltZSht
b25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzKQotICAgICAgICAgICAg
ICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Y3JlYXRlKG1f
Y2xpZW50LT5pZCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCkpKTsK
KyAgICAgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NBbmltYXRpb25TdGFydGVkRXZl
bnQobV9jbGllbnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpLCBtb25vdG9uaWNUaW1lKSk7CiAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgbV9hY3RpdmVBbmltYXRpb25z
LnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPmdyb3VwKCkgPT0gbV9hY3RpdmVBbmltYXRpb25zW2pdLT5ncm91cCgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnNldFJ1blN0YXRlKEND
QWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBtb25vdG9uaWNUaW1lKTsKQEAgLTMzMSw3ICszNDYs
NyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpyZXNvbHZlQ29uZmxpY3RzKGRv
dWJsZSBtb25vdG9uaWNUaW1lKQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZWN0b3Iq
IGV2ZW50cykKK3ZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1cmdlRmluaXNoZWRB
bmltYXRpb25zKCkKIHsKICAgICAvLyBFYWNoIGl0ZXJhdGlvbiwgbV9hY3RpdmVBbmltYXRpb25z
LnNpemUoKSBkZWNyZWFzZXMgb3IgaSBpbmNyZW1lbnRzLAogICAgIC8vIGd1YXJhbnRlZWluZyBw
cm9ncmVzcyB0b3dhcmRzIGxvb3AgdGVybWluYXRpb24uCkBAIC0zNDksMjcgKzM2NCwxNSBAQCB2
b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhD
Q0FuaW1hdGlvbkV2ZW50c1ZlY3RvcgogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGlmIChhbGxBbmltc1dpdGhTYW1lSWRBcmVGaW5pc2hlZCkgewotICAgICAgICAgICAgLy8gV2Ug
bm93IG5lZWQgdG8gcmVtb3ZlIGFsbCBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUgZ3JvdXAgaWQg
YXMgZ3JvdXBJZAotICAgICAgICAgICAgLy8gKGFuZCBzZW5kIGFsb25nIGFuaW1hdGlvbiBmaW5p
c2hlZCBub3RpZmljYXRpb25zLCBpZiBuZWNlc3NhcnkpLgorICAgICAgICAgICAgLy8gV2Ugbm93
IG5lZWQgdG8gcmVtb3ZlIGFsbCBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUgZ3JvdXAgaWQgYXMg
Z3JvdXBJZC4KICAgICAgICAgICAgIC8vIEVhY2ggaXRlcmF0aW9uLCBtX2FjdGl2ZUFuaW1hdGlv
bnMuc2l6ZSgpIGRlY3JlYXNlcyBvciBqIGluY3JlbWVudHMsCiAgICAgICAgICAgICAvLyBndWFy
YW50ZWVpbmcgcHJvZ3Jlc3MgdG93YXJkcyBsb29wIHRlcm1pbmF0aW9uLiBBbHNvLCB3ZSBhcmUg
Z3VhcmFudGVlZAogICAgICAgICAgICAgLy8gdG8gcmVtb3ZlIGF0IGxlYXN0IG9uZSBhY3RpdmUg
YW5pbWF0aW9uLgogICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGk7IGogPCBtX2FjdGl2ZUFu
aW1hdGlvbnMuc2l6ZSgpOykgewogICAgICAgICAgICAgICAgIGlmIChncm91cElkICE9IG1fYWN0
aXZlQW5pbWF0aW9uc1tqXS0+Z3JvdXAoKSkKICAgICAgICAgICAgICAgICAgICAgaisrOwotICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnRzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1fYWN0aXZlQW5pbWF0aW9uc1tqXS0+dGFy
Z2V0UHJvcGVydHkoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDQ0FjdGl2ZUFu
aW1hdGlvbjo6T3BhY2l0eToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHMtPmFw
cGVuZChDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudDo6Y3JlYXRlKG1fY2xpZW50LT5pZCgp
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSwgbV9jbGllbnQtPm9wYWNpdHkoKSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV2ZW50cy0+YXBwZW5kKENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudDo6
Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBtX2Ns
aWVudC0+dHJhbnNmb3JtKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zLnJl
bW92ZShqKTsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgaSsrOwpAQCAtMzc5LDkgKzM4MiwxNCBAQCB2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucyhDQ0FuaW1hdGlvbkV2ZW50
c1ZlY3Rvcgogdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6dGlja0FuaW1hdGlvbnMo
ZG91YmxlIG1vbm90b25pY1RpbWUpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Fj
dGl2ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+cnVuU3RhdGUoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZykgeworICAg
ICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09IENDQWN0aXZlQW5p
bWF0aW9uOjpSdW5uaW5nICYmICFtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3luY2hyb25p
emVkU3RhcnRUaW1lKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSB0cmltbWVkID0gbV9hY3RpdmVB
bmltYXRpb25zW2ldLT50cmltVGltZVRvQ3VycmVudEl0ZXJhdGlvbihtb25vdG9uaWNUaW1lKTsK
IAorICAgICAgICAgICAgLy8gQW5pbWF0aW9uIGFzc3VtZXMgaXRzIGluaXRpYWwgdmFsdWUgdW50
aWwgaXQgZ2V0cyB0aGUgc3luY2hyb25pemVkIHN0YXJ0IHRpbWUKKyAgICAgICAgICAgIC8vIGZy
b20gdGhlIGltcGwgdGhyZWFkIGFuZCBjYW4gc3RhcnQgdGlja2luZy4KKyAgICAgICAgICAgIGlm
IChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPm5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKCkpCisg
ICAgICAgICAgICAgICAgdHJpbW1lZCA9IDA7CisKICAgICAgICAgICAgIHN3aXRjaCAobV9hY3Rp
dmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpKSB7CiAKICAgICAgICAgICAgIGNhc2Ug
Q0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggNTdiNWJhYmViNTY3MzMyMDk2ZDE1ZDlkMjE5
ZGYwZjA1ZmYxNjgzZC4uYjk2NTJkMDg5MTcxYzhhYjJjNzFhNjVmMWEwMzZjNDlkNmM4NDdjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC04
Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gaWYgdGhlcmUgaXMgYW4gYW5pbWF0aW9uIHNj
aGVkdWxlZCB0byBhbmltYXRlIHRoaXMgcHJvcGVydHkgaW4gdGhlIGZ1dHVyZS4KICAgICBib29s
IGlzQW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5KSBj
b25zdDsKIAorICAgIC8vIFRoaXMgaXMgY2FsbGVkIGluIHJlc3BvbnNlIHRvIGFuIGFuaW1hdGlv
biBiZWluZyBzdGFydGVkIG9uIHRoZSBpbXBsIHRocmVhZC4gVGhpcworICAgIC8vIGZ1bmN0aW9u
IHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgbWFpbiB0aHJlYWQgYW5pbWF0aW9uJ3Mgc3RhcnQg
dGltZS4KKyAgICB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25T
dGFydGVkRXZlbnQmKTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50Kik7CiAKQEAgLTk5
LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9y
U3RhcnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3Rvciop
OwogICAgIHZvaWQgc3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShk
b3VibGUgbW9ub3RvbmljVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqKTsKICAgICB2b2lk
IHJlc29sdmVDb25mbGljdHMoZG91YmxlIG1vbm90b25pY1RpbWUpOwotICAgIHZvaWQgcHVyZ2VG
aW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqKTsKKyAgICB2b2lkIHB1
cmdlRmluaXNoZWRBbmltYXRpb25zKCk7CiAKICAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJs
ZSBtb25vdG9uaWNUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXgg
ZDFmZDg5ZWZlYzRlYWYyNDBkYmM4ODM4MWE4NTQ4ZWM0Y2Q0MWI3Yi4uNzJiODZmZjY3NDYzNGJi
M2Y5MWQ0ZDA4YmQ5Y2IxOTRmZWEzNTA2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCkBAIC0xNzksMTAgKzE3OSwxMCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29u
dGVudHNUZXh0dXJlc09uSW1wbFRocmVhZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxvYwogICAgICAg
ICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoYWxs
b2NhdG9yKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMoZG91
YmxlIGZyYW1lQmVnaW5UaW1lKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlv
bnMoZG91YmxlIHdhbGxDbG9ja1RpbWUpCiB7CiAgICAgbV9hbmltYXRpbmcgPSB0cnVlOwotICAg
IG1fY2xpZW50LT51cGRhdGVBbmltYXRpb25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICBtX2NsaWVu
dC0+dXBkYXRlQW5pbWF0aW9ucyh3YWxsQ2xvY2tUaW1lKTsKICAgICBhbmltYXRlTGF5ZXJzKG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOwog
fQpAQCAtNjgxLDggKzY4MSw4IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0OjphbmltYXRlTGF5ZXJz
UmVjdXJzaXZlKExheWVyQ2hyb21pdW0qIGN1cnJlbnQsIGRvdWJsZSBtb25vCiB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9uRXZlbnRzUmVjdXJzaXZlKGNvbnN0IENDQW5pbWF0aW9u
RXZlbnRzVmVjdG9yJiBldmVudHMsIExheWVyQ2hyb21pdW0qIGxheWVyLCBkb3VibGUgd2FsbENs
b2NrVGltZSkKIHsKICAgICBmb3IgKHNpemVfdCBldmVudEluZGV4ID0gMDsgZXZlbnRJbmRleCA8
IGV2ZW50cy5zaXplKCk7ICsrZXZlbnRJbmRleCkgewotICAgICAgICBpZiAobGF5ZXItPmlkKCkg
PT0gZXZlbnRzW2V2ZW50SW5kZXhdLT5sYXllcklkKCkpCi0gICAgICAgICAgICBsYXllci0+c2V0
QW5pbWF0aW9uRXZlbnQoKmV2ZW50c1tldmVudEluZGV4XSwgd2FsbENsb2NrVGltZSk7CisgICAg
ICAgIGlmIChsYXllci0+aWQoKSA9PSBldmVudHNbZXZlbnRJbmRleF0ubGF5ZXJJZCkKKyAgICAg
ICAgICAgIGxheWVyLT5ub3RpZnlBbmltYXRpb25TdGFydGVkKGV2ZW50c1tldmVudEluZGV4XSwg
d2FsbENsb2NrVGltZSk7CiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgY2hpbGRJbmRleCA9IDA7
IGNoaWxkSW5kZXggPCBsYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7ICsrY2hpbGRJbmRleCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZjc0OWE2YjAzZDE3ZjQ0ZWQ2MTk4NGZlOTgw
MmFhMDEwZDhlNjFiZi4uOWY3ODBhN2FlNzdhYTFlOGUxNTEzN2ExZGI4ZjlmMGY5MGJmOGNhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgYW55TGF5ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCk7CiAKICAg
ICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50ZXJmYWNlIHRvIENDUHJveHkuCi0gICAgdm9pZCB1cGRh
dGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CisgICAgdm9pZCB1cGRhdGVBbmlt
YXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKTsKICAgICB2b2lkIGxheW91dCgpOwogICAgIHZv
aWQgYmVnaW5Db21taXRPbkltcGxUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAgIHZv
aWQgZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CmluZGV4IDNmZGEyYzllZTdhY2FmMGJlZTM2N2RlYjVlNmIxZDkzYThkMWNiNTYuLmM2YWQ5ZmYx
YmFkNzNmYjAzMzMyNzIxYThhYjFhNDYwOTEyYmU2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTAwNiw2ICsx
MDA2LDQ5IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCisvLyBFbnN1cmVzIHRoYXQgbWFpbiB0aHJl
YWQgYW5pbWF0aW9ucyBoYXZlIHRoZWlyIHN0YXJ0IHRpbWVzIHN5bmNocm9uaXplZCB3aXRoIGlt
cGwgdGhyZWFkIGFuaW1hdGlvbnMuCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25p
emVBbmltYXRpb25TdGFydFRpbWVzIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRP
bmx5IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRp
b25TdGFydFRpbWVzKCkKKyAgICAgICAgOiBtX251bUFuaW1hdGVzKDApCisgICAgeworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAgcG9zdEFkZEFu
aW1hdGlvblRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRl
TGF5ZXJzKENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsLCBkb3VibGUgbW9u
b3RvbmljVGltZSkKKyAgICB7CisgICAgICAgIGlmICghbV9udW1BbmltYXRlcykgeworICAgICAg
ICAgICAgbV9udW1BbmltYXRlcysrOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXJJbXBsID0gbGF5
ZXJUcmVlSG9zdEltcGwtPnJvb3RMYXllcigpLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKTsK
KyAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2xheWVy
VHJlZUhvc3QtPnJvb3RMYXllcigpLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICAg
ICAgQ0NBY3RpdmVBbmltYXRpb24qIGFuaW1hdGlvbkltcGwgPSBjb250cm9sbGVySW1wbC0+Z2V0
QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KTsKKyAgICAgICAg
Q0NBY3RpdmVBbmltYXRpb24qIGFuaW1hdGlvbiA9IGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1h
dGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSk7CisKKyAgICAgICAgRVhQRUNUX0VR
KGFuaW1hdGlvbkltcGwtPnN0YXJ0VGltZSgpLCBhbmltYXRpb24tPnN0YXJ0VGltZSgpKTsKKwor
ICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgp
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9udW1BbmltYXRlczsKK307CisK
K1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVz
LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0VGhyZWFkZWQoKTsKK30KKwogVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdFRlc3REb05vdFNraXBMYXllcnNXaXRoQW5pbWF0ZWRPcGFjaXR5LCBy
dW5NdWx0aVRocmVhZCkKIHsKICAgICBydW5UZXN0VGhyZWFkZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132950</attachid>
            <date>2012-03-20 19:44:08 -0700</date>
            <delta_ts>2012-03-21 05:13:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81484-20120320224407.patch</filename>
            <type>text/plain</type>
            <size>31881</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI3OTYyOTEwYTUwY2E5
NDM0ODM3ODQ4YmFhMGMzODZiMzFlMzZkNC4uOTBlMDc3Y2E4MjRmZjkwZTE1M2JkMzBiNDJiYWFl
YzgzOWI0MmIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDEyLTAzLTIwICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQW5p
bWF0aW9uIGV2ZW50cyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBzeW5jaHJvbml6aW5nIGFuaW1h
dGlvbiBzdGFydCB0aW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0ZWQgaW4gQ0NMYXllclRyZWVIb3N0VGVzdFN5bmNocm9uaXplQW5pbWF0aW9u
U3RhcnRUaW1lcworCisgICAgICAgIEVsaW1pbmF0ZWQgYW5pbWF0aW9uIGZpbmlzaGVkIGV2ZW50
cy4gQW5pbWF0aW9ucyB3aWxsIGZpbmlzaCBuYXR1cmFsbHkgb24gdGhlCisgICAgICAgIG1haW4g
dGhyZWFkIGFuZCB0aGUgZmluYWwgdmFsdWVzIHdpbGwgYmUgc2V0LgorCisgICAgICAgIEFuaW1h
dGlvbiBzdGFydGVkIGV2ZW50cyBhcmUgbm93IGFsc28gdXNlZCB0byBzeW5jaHJvbml6ZSB0aGUg
bWFpbiB0aHJlYWQKKyAgICAgICAgYW5pbWF0aW9ucycgc3RhcnQgdGltZXMgd2l0aCB0aGVpciBp
bXBsIHRocmVhZCBlcXVpdmFsZW50cywgcHJldmVudGluZyBza2V3LgorICAgICAgICBVbnRpbCBt
YWluIHRocmVhZCBhbmltYXRpb25zIHJlY2VpdmUgdGhlaXIgc3luY2hyb25pemVkIHN0YXJ0IHRp
bWVzLCB0aGV5IHdpbGwKKyAgICAgICAgYXBwbHkgdGhlaXIgaW5pdGlhbCB2YWx1ZXMgKGkuZS4s
IHRoZXkgd2lsbCBiZSBwYXVzZWQgYXQgdGltZSB6ZXJvKS4gVGhpcworICAgICAgICBndWFyYW50
ZWVzIHRoYXQgd2Ugd2lsbCBub3QganVtcCB0byB0aGUgYW5pbWF0aW9uJ3MgZmluYWwgdmFsdWUg
b24gdGhlIG1haW4KKyAgICAgICAgdGhyZWFkIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBzeW5jaHJv
bml6ZWQgc3RhcnQgdGltZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyQ2hyb21pdW06Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NBY3RpdmVBbmltYXRpb246OkNDQWN0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oOgorICAgICAgICAo
Q0NBY3RpdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb246
Om5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDQWN0aXZl
QW5pbWF0aW9uOjpzZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZl
bnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Q0NBbmlt
YXRpb25TdGFydGVkRXZlbnQpOgorICAgICAgICAoQ0NBbmltYXRpb25TdGFydGVkRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cjo6cHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGlj
ayk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRB
bmltYXRpb25zV2FpdGluZ0ZvclN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlcjo6c3RhcnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWls
YWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6
cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OnRpY2tBbmltYXRpb25zKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAo
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpzZXRBbmltYXRpb25FdmVudHNSZWN1cnNpdmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ0NM
YXllclRyZWVIb3N0KToKKworMjAxMi0wMy0yMCAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9t
aXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIEluZnJhc3RydWN0dXJlIHRvIGFsbG93IGFu
aW1hdGluZyBsYXllcnMgdG8gYmUgb25seSBwYXJ0aWFsbHkgdXBkYXRlZAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODExMDYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCAyZjJjMzA2NzFiNmJkYTJkOGFhOGU3ZjBlMDI4MDMyNDE5ZDE3NmM5
Li5mYjA5MDJhMDQ4MGNjN2JjNmY2NTZhMjQ1OGYwYzdmMWZhZWJlZGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTAzLTIwICBJYW4gVm9sbGljayAg
PHZvbGxpY2tAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQW5pbWF0aW9uIGV2
ZW50cyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBzeW5jaHJvbml6aW5nIGFuaW1hdGlvbiBzdGFy
dCB0aW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODE0ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAg
KENDTGF5ZXJUcmVlSG9zdFRlc3RTeW5jaHJvbml6ZUFuaW1hdGlvblN0YXJ0VGltZXMpOgorICAg
ICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRp
bWVzOjpDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzKToK
KyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN5bmNocm9uaXplQW5pbWF0aW9uU3Rh
cnRUaW1lczo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdFN5
bmNocm9uaXplQW5pbWF0aW9uU3RhcnRUaW1lczo6YW5pbWF0ZUxheWVycyk6CisgICAgICAgIChX
VEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RTeW5jaHJvbml6ZUFuaW1hdGlvblN0YXJ0VGltZXM6OmFm
dGVyVGVzdCk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisKKzIwMTItMDMtMjAgIElhbiBWb2xs
aWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBJbmZyYXN0
cnVjdHVyZSB0byBhbGxvdyBhbmltYXRpbmcgbGF5ZXJzIHRvIGJlIG9ubHkgcGFydGlhbGx5IHVw
ZGF0ZWQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
MTA2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzYjNjNTRkZWM3M2FiNGIxZjVmYjQ0ZGQ2Yzg2OGJl
NDFjN2ZkOGM3Li5kNGEwMDE0ZWMwMjUzMjJjNmE4NGZlMmZiMjRhZDIzNzBlZTM0NTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0zNDYwLDcgKzM0NjAsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRp
b25DdXJ2ZS5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0FuaW1hdGlvbkV2ZW50cy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggYmE1YWQwNDA4YThkMGMyOWNmMGYwNGFjNjhhNjhmMTQ5NjQ2ZGI5
ZS4uZGNmYjZlMzFmYjA4ZDZkMWQ2OTNkZTRmNDEwM2RhNTY3MGI4M2JmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTYwNiwyOCArNjA2LDEwIEBAIGJvb2wgTGF5ZXJDaHJvbWl1bTo6aGFz
QWN0aXZlQW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRy
b2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpOwogfQogCi12b2lkIExheWVyQ2hyb21pdW06OnNl
dEFuaW1hdGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQmIGV2ZW50LCBkb3VibGUgd2Fs
bENsb2NrVGltZSkKLXsKLSAgICBzd2l0Y2ggKGV2ZW50LnR5cGUoKSkgewotICAgIGNhc2UgQ0NB
bmltYXRpb25FdmVudDo6U3RhcnRlZDoKLSAgICAgICAgbV9sYXllckFuaW1hdGlvbkRlbGVnYXRl
LT5ub3RpZnlBbmltYXRpb25TdGFydGVkKHdhbGxDbG9ja1RpbWUpOwotICAgICAgICBicmVhazsK
LQotICAgIGNhc2UgQ0NBbmltYXRpb25FdmVudDo6RmluaXNoZWRGbG9hdEFuaW1hdGlvbjogewot
ICAgICAgICBjb25zdCBDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudCogZmluaXNoZWRFdmVu
dCA9IGV2ZW50LnRvRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50KCk7Ci0gICAgICAgIEFTU0VS
VChmaW5pc2hlZEV2ZW50LT50YXJnZXRQcm9wZXJ0eSgpID09IENDQWN0aXZlQW5pbWF0aW9uOjpP
cGFjaXR5KTsKLSAgICAgICAgc2V0T3BhY2l0eShmaW5pc2hlZEV2ZW50LT5maW5hbFZhbHVlKCkp
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENDQW5pbWF0aW9uRXZlbnQ6OkZp
bmlzaGVkVHJhbnNmb3JtQW5pbWF0aW9uOiB7Ci0gICAgICAgIGNvbnN0IENDVHJhbnNmb3JtQW5p
bWF0aW9uRmluaXNoZWRFdmVudCogZmluaXNoZWRFdmVudCA9IGV2ZW50LnRvVHJhbnNmb3JtQW5p
bWF0aW9uRmluaXNoZWRFdmVudCgpOwotICAgICAgICBBU1NFUlQoZmluaXNoZWRFdmVudC0+dGFy
Z2V0UHJvcGVydHkoKSA9PSBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtKTsKLSAgICAgICAg
c2V0VHJhbnNmb3JtKGZpbmlzaGVkRXZlbnQtPmZpbmFsVmFsdWUoKSk7Ci0gICAgICAgIGJyZWFr
OwotICAgIH0KLQotICAgIH0KK3ZvaWQgTGF5ZXJDaHJvbWl1bTo6bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCYgZXZlbnQsIGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lKQoreworICAgIG1fbGF5ZXJBbmltYXRpb25Db250cm9sbGVyLT5ub3RpZnlBbmltYXRp
b25TdGFydGVkKGV2ZW50KTsKKyAgICBtX2xheWVyQW5pbWF0aW9uRGVsZWdhdGUtPm5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQod2FsbENsb2NrVGltZSk7CiB9CiAKIHZvaWQgc29ydExheWVycyhWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID46Oml0ZXJhdG9yLCBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID46Oml0ZXJhdG9yLCB2b2lkKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCAxNjYw
N2NhMzBmZmRjNjRlYmRjOTBlZTA1ZDMyMzdlZWFlMmFiYjY5Li40ZmYxMjgyNzBhMTUzNTkyMDk2
ZjljNjUwMWI4MGNlMzNhNDEzYjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC01Niw3ICs1Niw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQ0NBbmltYXRpb25FdmVudDsKK3N0
cnVjdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDsKIGNsYXNzIENDTGF5ZXJBbmltYXRpb25EZWxl
Z2F0ZTsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwpAQCAtMjQy
LDcgKzI0Miw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCkgY29u
c3Q7CiAKLSAgICB2b2lkIHNldEFuaW1hdGlvbkV2ZW50KGNvbnN0IENDQW5pbWF0aW9uRXZlbnQm
LCBkb3VibGUgd2FsbENsb2NrVGltZSk7CisgICAgdm9pZCBub3RpZnlBbmltYXRpb25TdGFydGVk
KGNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50JiwgZG91YmxlIHdhbGxDbG9ja1RpbWUpOwog
CiAgICAgdmlydHVhbCBSZWdpb24gb3BhcXVlQ29udGVudHNSZWdpb24oKSBjb25zdCB7IHJldHVy
biBSZWdpb24oKTsgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uY3BwCmluZGV4
IDhjMDMwM2VkNjIxMGM3ZjQ5YmUxZDJlYTVlYTMwZjk4YjA1MTkyY2IuLjI2MGQ3ZDQ3ZTNiMzFi
NjJmNTliMWRhODA2MGFjZDViNzg3MzcyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1h
dGlvbi5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgQ0NBY3RpdmVBbmltYXRpb246OkNDQWN0aXZlQW5p
bWF0aW9uKFBhc3NPd25QdHI8Q0NBbmltYXRpb25DdXJ2ZT4gY3VydmUsIGludCBhbmkKICAgICAs
IG1fcnVuU3RhdGUoV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSkKICAgICAsIG1faXRlcmF0
aW9ucygxKQogICAgICwgbV9zdGFydFRpbWUoMCkKKyAgICAsIG1fbmVlZHNTeW5jaHJvbml6ZWRT
dGFydFRpbWUoZmFsc2UpCiAgICAgLCBtX3BhdXNlVGltZSgwKQogICAgICwgbV90b3RhbFBhdXNl
ZFRpbWUoMCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FjdGl2ZUFuaW1hdGlvbi5oCmluZGV4IDljNjYzM2Mz
ZTRjNmY5ZDZjNGU2YmJlM2ZkMzc2NWNiN2RiZTRlYzIuLjVkYjgzYWY5NTYyMWY2NTBmM2RmYzNl
ZWMzMTRkNDhkZGM5NGU0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDQWN0aXZlQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBY3RpdmVBbmltYXRpb24uaApAQCAt
OTIsNiArOTIsMTEgQEAgcHVibGljOgogICAgIENDQW5pbWF0aW9uQ3VydmUqIGN1cnZlKCkgeyBy
ZXR1cm4gbV9jdXJ2ZS5nZXQoKTsgfQogICAgIGNvbnN0IENDQW5pbWF0aW9uQ3VydmUqIGN1cnZl
KCkgY29uc3QgeyByZXR1cm4gbV9jdXJ2ZS5nZXQoKTsgfQogCisgICAgLy8gSWYgdGhpcyBpcyB0
cnVlLCBldmVuIGlmIHRoZSBhbmltYXRpb24gaXMgcnVubmluZywgaXQgd2lsbCBub3QgYmUgdGlj
a2FibGUgdW50aWwKKyAgICAvLyBpdCBpcyBnaXZlbiBhIHN0YXJ0IHRpbWUuIFRoaXMgaXMgdHJ1
ZSBmb3IgYW5pbWF0aW9ucyBydW5uaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBib29sIG5l
ZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1N5bmNocm9u
aXplZFN0YXJ0VGltZTsgfQorICAgIHZvaWQgc2V0TmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUo
Ym9vbCBuZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSkgeyBtX25lZWRzU3luY2hyb25pemVkU3Rh
cnRUaW1lID0gbmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWU7IH0KKwogICAgIC8vIFRha2VzIHRo
ZSBnaXZlbiBhYnNvbHV0ZSB0aW1lLCBhbmQgdXNpbmcgdGhlIHN0YXJ0IHRpbWUgYW5kIHRoZSBu
dW1iZXIKICAgICAvLyBvZiBpdGVyYXRpb25zLCByZXR1cm5zIHRoZSByZWxhdGl2ZSB0aW1lIGlu
IHRoZSBjdXJyZW50IGl0ZXJhdGlvbi4KICAgICBkb3VibGUgdHJpbVRpbWVUb0N1cnJlbnRJdGVy
YXRpb24oZG91YmxlIG5vdykgY29uc3Q7CkBAIC0xMjAsNiArMTI1LDggQEAgcHJpdmF0ZToKICAg
ICBpbnQgbV9pdGVyYXRpb25zOwogICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsKIAorICAgIGJvb2wg
bV9uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZTsKKwogICAgIC8vIFRoZXNlIGFyZSB1c2VkIGlu
IHRyaW1UaW1lVG9DdXJyZW50SXRlcmF0aW9uIHRvIGFjY291bnQgZm9yIHRpbWUKICAgICAvLyBz
cGVudCB3aGlsZSBwYXVzZWQuIFRoaXMgaXMgbm90IGluY2x1ZGVkIGluIEFuaW1hdGlvblN0YXRl
IHNpbmNlIGl0CiAgICAgLy8gdGhlcmUgaXMgYWJzb2x1dGVseSBubyBuZWVkIGZvciBjbGllbnRz
IG9mIHRoaXMgY29udHJvbGxlciB0byBrbm93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50
cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3N2QwMmJlZDlhYzllMDIyZTFh
NDVlY2JiYTBkNzQ2Yjc2MjdmNjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NBbmltYXRpb25FdmVudHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDQW5pbWF0
aW9uRXZlbnRzLmgiCi0KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotQ0NBbmltYXRpb25FdmVudDo6Q0NBbmltYXRpb25FdmVudChpbnQgbGF5ZXJJZCwg
Q0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5KQotICAgIDog
bV9sYXllcklkKGxheWVySWQpCi0gICAgLCBtX3RhcmdldFByb3BlcnR5KHRhcmdldFByb3BlcnR5
KQotewotfQotCi1DQ0FuaW1hdGlvbkV2ZW50Ojp+Q0NBbmltYXRpb25FdmVudCgpCi17Ci19Ci0K
LWNvbnN0IENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KiBDQ0FuaW1hdGlvbkV2ZW50Ojp0b0FuaW1h
dGlvblN0YXJ0ZWRFdmVudCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKHR5cGUoKSA9PSBTdGFydGVk
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQq
Pih0aGlzKTsKLX0KLQotY29uc3QgQ0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQqIENDQW5p
bWF0aW9uRXZlbnQ6OnRvRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50KCkgY29uc3QKLXsKLSAg
ICBBU1NFUlQodHlwZSgpID09IEZpbmlzaGVkRmxvYXRBbmltYXRpb24pOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudCo+KHRoaXMpOwot
fQotCi1jb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQqIENDQW5pbWF0aW9u
RXZlbnQ6OnRvVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUKHR5cGUoKSA9PSBGaW5pc2hlZFRyYW5zZm9ybUFuaW1hdGlvbik7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudCo+KHRo
aXMpOwotfQotCi1QYXNzT3duUHRyPENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBDQ0FuaW1hdGlv
blN0YXJ0ZWRFdmVudDo6Y3JlYXRlKGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFy
Z2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHkpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBD
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudChsYXllcklkLCB0YXJnZXRQcm9wZXJ0eSkpOwotfQotCi1D
Q0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoaW50IGxheWVy
SWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLSAg
ICA6IENDQW5pbWF0aW9uRXZlbnQobGF5ZXJJZCwgdGFyZ2V0UHJvcGVydHkpCi17Ci19Ci0KLUND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50Ojp+Q0NBbmltYXRpb25TdGFydGVkRXZlbnQoKQotewotfQot
Ci1DQ0FuaW1hdGlvbkV2ZW50OjpUeXBlIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50Ojp0eXBlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gU3RhcnRlZDsKLX0KLQotUGFzc093blB0cjxDQ0Zsb2F0QW5p
bWF0aW9uRmluaXNoZWRFdmVudD4gQ0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmNyZWF0
ZShpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFBy
b3BlcnR5LCBmbG9hdCBmaW5hbFZhbHVlKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NG
bG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQobGF5ZXJJZCwgdGFyZ2V0UHJvcGVydHksIGZpbmFs
VmFsdWUpKTsKLX0KLQotQ0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OkNDRmxvYXRBbmlt
YXRpb25GaW5pc2hlZEV2ZW50KGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0
UHJvcGVydHkgdGFyZ2V0UHJvcGVydHksIGZsb2F0IGZpbmFsVmFsdWUpCi0gICAgOiBDQ0FuaW1h
dGlvbkV2ZW50KGxheWVySWQsIHRhcmdldFByb3BlcnR5KQotICAgICwgbV9maW5hbFZhbHVlKGZp
bmFsVmFsdWUpCi17Ci19Ci0KLUNDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50Ojp+Q0NGbG9h
dEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKQotewotfQotCi1DQ0FuaW1hdGlvbkV2ZW50OjpUeXBl
IENDRmxvYXRBbmltYXRpb25GaW5pc2hlZEV2ZW50Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gRmluaXNoZWRGbG9hdEFuaW1hdGlvbjsKLX0KLQotUGFzc093blB0cjxDQ1RyYW5zZm9ybUFu
aW1hdGlvbkZpbmlzaGVkRXZlbnQ+IENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudDo6
Y3JlYXRlKGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFy
Z2V0UHJvcGVydHksIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmaW5hbFZhbHVlKQotewot
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50
KGxheWVySWQsIHRhcmdldFByb3BlcnR5LCBmaW5hbFZhbHVlKSk7Ci19Ci0KLUNDVHJhbnNmb3Jt
QW5pbWF0aW9uRmluaXNoZWRFdmVudDo6Q0NUcmFuc2Zvcm1BbmltYXRpb25GaW5pc2hlZEV2ZW50
KGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJv
cGVydHksIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmaW5hbFZhbHVlKQotICAgIDogQ0NB
bmltYXRpb25FdmVudChsYXllcklkLCB0YXJnZXRQcm9wZXJ0eSkKLSAgICAsIG1fZmluYWxWYWx1
ZShmaW5hbFZhbHVlKQotewotfQotCi1DQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6
On5DQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKQotewotfQotCi1DQ0FuaW1hdGlv
bkV2ZW50OjpUeXBlIENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRFdmVudDo6dHlwZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIEZpbmlzaGVkVHJhbnNmb3JtQW5pbWF0aW9uOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25FdmVudHMuaAppbmRleCBl
MjRmNzVkYzdjMWIzZWM1Mjg1MDE4Y2RlMWFmOTdiODNhYTRkNjk2Li5mNDYyOGRlOWVjNTZkMTNj
ZWFlZmQ4NzY0YmRkMDJkNjgyYTcxYzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkV2ZW50cy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uRXZlbnRz
LmgKQEAgLTI3LDg3ICsyNywyNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVBbmltYXRpb24u
aCIKIAotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50
OwotY2xhc3MgQ0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ7Ci1jbGFzcyBDQ1RyYW5zZm9y
bUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ7Ci0KLWNsYXNzIENDQW5pbWF0aW9uRXZlbnQgewotcHVi
bGljOgotICAgIGVudW0gVHlwZSB7IFN0YXJ0ZWQsIEZpbmlzaGVkRmxvYXRBbmltYXRpb24sIEZp
bmlzaGVkVHJhbnNmb3JtQW5pbWF0aW9uIH07Ci0KLSAgICB2aXJ0dWFsIH5DQ0FuaW1hdGlvbkV2
ZW50KCk7Ci0KLSAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0ID0gMDsKLQotICAgIGludCBs
YXllcklkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcklkOyB9Ci0KLSAgICBDQ0FjdGl2ZUFuaW1h
dGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX3Rh
cmdldFByb3BlcnR5OyB9Ci0KLSAgICBjb25zdCBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCogdG9B
bmltYXRpb25TdGFydGVkRXZlbnQoKSBjb25zdDsKLSAgICBjb25zdCBDQ0Zsb2F0QW5pbWF0aW9u
RmluaXNoZWRFdmVudCogdG9GbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQoKSBjb25zdDsKLSAg
ICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQqIHRvVHJhbnNmb3JtQW5p
bWF0aW9uRmluaXNoZWRFdmVudCgpIGNvbnN0OwotCi1wcm90ZWN0ZWQ6Ci0gICAgQ0NBbmltYXRp
b25FdmVudChpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5KTsK
LQotcHJpdmF0ZToKLSAgICBpbnQgbV9sYXllcklkOwotICAgIENDQWN0aXZlQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSBtX3RhcmdldFByb3BlcnR5OwotfTsKLQotLy8gSW5kaWNhdGVzIHRoYXQg
YW4gYW5pbWF0aW9uIGhhcyBzdGFydGVkIG9uIGEgcGFydGljdWxhciBsYXllci4KLWNsYXNzIEND
QW5pbWF0aW9uU3RhcnRlZEV2ZW50IDogcHVibGljIENDQW5pbWF0aW9uRXZlbnQgewotcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50PiBjcmVhdGUo
aW50IGxheWVySWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSk7Ci0KLSAgICB2
aXJ0dWFsIH5DQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudCgpOwotCi0gICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudChpbnQg
bGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5KTsKLX07Ci0KLS8vIElu
ZGljYXRlcyB0aGF0IGEgZmxvYXQgYW5pbWF0aW9uIGhhcyBjb21wbGV0ZWQuCi1jbGFzcyBDQ0Zs
b2F0QW5pbWF0aW9uRmluaXNoZWRFdmVudCA6IHB1YmxpYyBDQ0FuaW1hdGlvbkV2ZW50IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ0Zsb2F0QW5pbWF0aW9uRmluaXNoZWRFdmVu
dD4gY3JlYXRlKGludCBsYXllcklkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHks
IGZsb2F0IGZpbmFsVmFsdWUpOwotCi0gICAgdmlydHVhbCB+Q0NGbG9hdEFuaW1hdGlvbkZpbmlz
aGVkRXZlbnQoKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Q7Ci0KLSAgICBmbG9h
dCBmaW5hbFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9maW5hbFZhbHVlOyB9Ci0KLXByaXZhdGU6
Ci0gICAgQ0NGbG9hdEFuaW1hdGlvbkZpbmlzaGVkRXZlbnQoaW50IGxheWVySWQsIENDQWN0aXZl
QW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSwgZmxvYXQgZmluYWxWYWx1ZSk7Ci0KLSAgICBmbG9h
dCBtX2ZpbmFsVmFsdWU7Ci19OwotCi0vLyBJbmRpY2F0ZXMgdGhhdCBhIHRyYW5zZm9ybSBhbmlt
YXRpb24gaGFzIGNvbXBsZXRlZC4KLWNsYXNzIENDVHJhbnNmb3JtQW5pbWF0aW9uRmluaXNoZWRF
dmVudCA6IHB1YmxpYyBDQ0FuaW1hdGlvbkV2ZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1RyYW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ+IGNyZWF0ZShpbnQgbGF5
ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgZmluYWxWYWx1ZSk7Ci0KLSAgICB2aXJ0dWFsIH5DQ1RyYW5zZm9ybUFuaW1h
dGlvbkZpbmlzaGVkRXZlbnQoKTsKLQotICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Q7Ci0K
LSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZmluYWxWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZmluYWxWYWx1ZTsgfQotCi1wcml2YXRlOgotICAgIENDVHJhbnNmb3JtQW5pbWF0aW9u
RmluaXNoZWRFdmVudChpbnQgbGF5ZXJJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3Bl
cnR5LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZmluYWxWYWx1ZSk7Ci0KLSAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtX2ZpbmFsVmFsdWU7CitzdHJ1Y3QgQ0NBbmltYXRpb25TdGFydGVk
RXZlbnQgeworICAgIENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KGludCBsYXllcklkLCBpbnQgZ3Jv
dXBJZCwgQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5LCBk
b3VibGUgbW9ub3RvbmljVGltZSkKKyAgICAgICAgOiBsYXllcklkKGxheWVySWQpCisgICAgICAg
ICwgZ3JvdXBJZChncm91cElkKQorICAgICAgICAsIHRhcmdldFByb3BlcnR5KHRhcmdldFByb3Bl
cnR5KQorICAgICAgICAsIG1vbm90b25pY1RpbWUobW9ub3RvbmljVGltZSkKKyAgICB7CisgICAg
fQorCisgICAgaW50IGxheWVySWQ7CisgICAgaW50IGdyb3VwSWQ7CisgICAgQ0NBY3RpdmVBbmlt
YXRpb246OlRhcmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5OworICAgIGRvdWJsZSBtb25vdG9u
aWNUaW1lOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8T3duUHRyPENDQW5pbWF0aW9uRXZlbnQ+ID4g
Q0NBbmltYXRpb25FdmVudHNWZWN0b3I7Cit0eXBlZGVmIFZlY3RvcjxDQ0FuaW1hdGlvblN0YXJ0
ZWRFdmVudD4gQ0NBbmltYXRpb25FdmVudHNWZWN0b3I7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CmluZGV4IGEwZTYwMGIyNDJiZDFmNDY4ZmM0ZjU2MDI1YjMxNjE5ZWI0ZmMxMWMuLjM5ZjliMTY5
OTYxOWE2MGI0ZDk3YzI1NDlhYjUzMmNlZWUyNGFmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTk2LDYgKzk2LDEwIEBAIFBhc3NP
d25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihjb25zdCBLZXlm
cmFtZVZhbHVlTGlzdCYgdmFsCiAgICAgICAgIGFuaW0tPnNldEl0ZXJhdGlvbnMoaXRlcmF0aW9u
cyk7CiAgICAgfQogCisgICAgLy8gSW4gb3JkZXIgdG8gYXZvaWQgc2tldywgdGhlIG1haW4gdGhy
ZWFkIGFuaW1hdGlvbiBjYW5ub3QgdGljayB1bnRpbCBpdCBoYXMgcmVjZWl2ZWQgdGhlIHN0YXJ0
IHRpbWUgb2YKKyAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBpbXBsIHRocmVhZCBhbmltYXRpb24u
CisgICAgYW5pbS0+c2V0TmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUodHJ1ZSk7CisKICAgICBy
ZXR1cm4gYW5pbS5yZWxlYXNlKCk7CiB9CiAKQEAgLTE3Nyw3ICsxODEsNyBAQCB2b2lkIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyOjphbmltYXRlKGRvdWJsZSBtb25vdG9uaWNUaW1lLCBDQ0Fu
aW1hdGlvbkV2ZW50cwogICAgIHN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFi
aWxpdHkobW9ub3RvbmljVGltZSwgZXZlbnRzKTsKICAgICByZXNvbHZlQ29uZmxpY3RzKG1vbm90
b25pY1RpbWUpOwogICAgIHRpY2tBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwotICAgIHB1cmdl
RmluaXNoZWRBbmltYXRpb25zKGV2ZW50cyk7CisgICAgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMo
KTsKICAgICBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5KG1vbm90
b25pY1RpbWUsIGV2ZW50cyk7CiB9CiAKQEAgLTIxMiwxNyArMjE2LDI4IEBAIGJvb2wgQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXI6OmlzQW5pbWF0aW5nUHJvcGVydHkoQ0NBY3RpdmVBbmltYXRp
b246OlRhcmdldFByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIENDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IENDQW5pbWF0aW9uU3Rh
cnRlZEV2ZW50JiBldmVudCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZl
QW5pbWF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25z
W2ldLT5ncm91cCgpID09IGV2ZW50Lmdyb3VwSWQgJiYgbV9hY3RpdmVBbmltYXRpb25zW2ldLT50
YXJnZXRQcm9wZXJ0eSgpID09IGV2ZW50LnRhcmdldFByb3BlcnR5KSB7CisgICAgICAgICAgICBB
U1NFUlQobV9hY3RpdmVBbmltYXRpb25zW2ldLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgp
KTsKKyAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0TmVlZHNTeW5jaHJvbml6
ZWRTdGFydFRpbWUoZmFsc2UpOworICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5z
ZXRTdGFydFRpbWUoZXZlbnQubW9ub3RvbmljVGltZSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1
c2hOZXdBbmltYXRpb25zVG9JbXBsVGhyZWFkKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKiBj
b250cm9sbGVySW1wbCkKIHsKICAgICAvLyBBbnkgbmV3IGFuaW1hdGlvbnMgb3duZWQgYnkgdGhl
IG1haW4gdGhyZWFkJ3MgY29udHJvbGxlciBhcmUgY2xvbmVkIGFuZCBhZGRlIHRvIHRoZSBpbXBs
IHRocmVhZCdzIGNvbnRyb2xsZXIuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FjdGl2
ZUFuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKCFjb250cm9sbGVySW1wbC0+
Z2V0QWN0aXZlQW5pbWF0aW9uKG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Z3JvdXAoKSwgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpKSkgewogICAgICAgICAgICAgT3duUHRy
PENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmNsb25lRm9y
SW1wbFRocmVhZCgpKTsKLSAgICAgICAgICAgIC8vIElmIHRoZSBhbmltYXRpb24gaXMgYWxyZWFk
eSBpbiBwcm9ncmVzcyAtLSBzZXQgaXQgdG8gYmUgd2FpdGluZyB1bnRpbCB0aGUgdGFyZ2V0IGlz
IGF2YWlsYWJsZS4KLSAgICAgICAgICAgIC8vIFRoYXQgd2F5LCBpdCB3aWxsIGhhdmUgYSBjaGFu
Y2UgdG8gc3RhcnQgb24gdGhlIGltcGwgdGhyZWFkLiBPdGhlcndpc2UsIHdlIHdpbGwgbmV2ZXIg
dGljayBhdCB0aGUKLSAgICAgICAgICAgIC8vIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBhbmltYXRp
b24uCi0gICAgICAgICAgICBpZiAodG9BZGQtPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRp
b246OlJ1bm5pbmcgfHwgdG9BZGQtPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OlBh
dXNlZCkKLSAgICAgICAgICAgICAgICB0b0FkZC0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRp
b246OldhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHksIDApOworICAgICAgICAgICAgQVNTRVJU
KG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+bmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUoKSk7Cisg
ICAgICAgICAgICBBU1NFUlQoIXRvQWRkLT5uZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSgpKTsK
KyAgICAgICAgICAgIC8vIFRoZSBuZXcgYW5pbWF0aW9uIHNob3VsZCBiZSBzZXQgdG8gcnVuIGFz
IHNvb24gYXMgcG9zc2libGUuCisgICAgICAgICAgICB0b0FkZC0+c2V0UnVuU3RhdGUoQ0NBY3Rp
dmVBbmltYXRpb246OldhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHksIDApOwogICAgICAgICAg
ICAgY29udHJvbGxlckltcGwtPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAg
fQpAQCAtMjQ5LDcgKzI2NCw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnN0
YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JOZXh0VGljayhkb3VibGUgbW9ub3RvCiAgICAgICAgICAg
ICBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpS
dW5uaW5nLCBtb25vdG9uaWNUaW1lKTsKICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tp
XS0+c2V0U3RhcnRUaW1lKG1vbm90b25pY1RpbWUpOwogICAgICAgICAgICAgaWYgKGV2ZW50cykK
LSAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0ZWRFdmVudDo6
Y3JlYXRlKG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3Bl
cnR5KCkpKTsKKyAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ0FuaW1hdGlvblN0YXJ0
ZWRFdmVudChtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpLCBt
X2FjdGl2ZUFuaW1hdGlvbnNbaV0tPnRhcmdldFByb3BlcnR5KCksIG1vbm90b25pY1RpbWUpKTsK
ICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI2MCw3ICsyNzUsNyBAQCB2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJs
ZSBtb25vdAogICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ydW5TdGF0ZSgpID09
IENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lICYmIG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+c3RhcnRUaW1lKCkgPD0gbW9ub3RvbmljVGltZSkgewogICAgICAgICAgICAgbV9h
Y3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmlu
ZywgbW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICBpZiAoZXZlbnRzKQotICAgICAgICAgICAg
ICAgIGV2ZW50cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50OjpjcmVhdGUobV9jbGll
bnQtPmlkKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSkpOworICAg
ICAgICAgICAgICAgIGV2ZW50cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KG1fY2xp
ZW50LT5pZCgpLCBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0
aW9uc1tpXS0+dGFyZ2V0UHJvcGVydHkoKSwgbW9ub3RvbmljVGltZSkpOwogICAgICAgICB9CiAg
ICAgfQogfQpAQCAtMjk4LDcgKzMxMyw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXI6OnN0YXJ0QW5pbWF0aW9uc1dhaXRpbmdGb3JUYXJnZXRBdmFpbGFiaWxpdHkoZG91CiAgICAg
ICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zW2ldLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFu
aW1hdGlvbjo6UnVubmluZywgbW9ub3RvbmljVGltZSk7CiAgICAgICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2ldLT5zZXRTdGFydFRpbWUobW9ub3RvbmljVGltZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50cykKLSAgICAgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NB
bmltYXRpb25TdGFydGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgbV9hY3RpdmVBbmlt
YXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpKSk7CisgICAgICAgICAgICAgICAgICAgIGV2ZW50
cy0+YXBwZW5kKENDQW5pbWF0aW9uU3RhcnRlZEV2ZW50KG1fY2xpZW50LT5pZCgpLCBtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPmdyb3VwKCksIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+dGFyZ2V0UHJv
cGVydHkoKSwgbW9ub3RvbmljVGltZSkpOwogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSBpICsgMTsgaiA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7ICsraikgewogICAgICAgICAg
ICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5ncm91cCgpID09IG1fYWN0aXZl
QW5pbWF0aW9uc1tqXS0+Z3JvdXAoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgbV9hY3Rp
dmVBbmltYXRpb25zW2pdLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6UnVubmluZywg
bW9ub3RvbmljVGltZSk7CkBAIC0zMzEsNyArMzQ2LDcgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcjo6cmVzb2x2ZUNvbmZsaWN0cyhkb3VibGUgbW9ub3RvbmljVGltZSkKICAgICB9
CiB9CiAKLXZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnB1cmdlRmluaXNoZWRBbmlt
YXRpb25zKENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKiBldmVudHMpCit2b2lkIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpwdXJnZUZpbmlzaGVkQW5pbWF0aW9ucygpCiB7CiAgICAgLy8gRWFj
aCBpdGVyYXRpb24sIG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCkgZGVjcmVhc2VzIG9yIGkgaW5j
cmVtZW50cywKICAgICAvLyBndWFyYW50ZWVpbmcgcHJvZ3Jlc3MgdG93YXJkcyBsb29wIHRlcm1p
bmF0aW9uLgpAQCAtMzQ5LDI3ICszNjQsMTUgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlcjo6cHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmltYXRpb25FdmVudHNWZWN0b3IKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoYWxsQW5pbXNXaXRoU2FtZUlkQXJl
RmluaXNoZWQpIHsKLSAgICAgICAgICAgIC8vIFdlIG5vdyBuZWVkIHRvIHJlbW92ZSBhbGwgYW5p
bWF0aW9ucyB3aXRoIHRoZSBzYW1lIGdyb3VwIGlkIGFzIGdyb3VwSWQKLSAgICAgICAgICAgIC8v
IChhbmQgc2VuZCBhbG9uZyBhbmltYXRpb24gZmluaXNoZWQgbm90aWZpY2F0aW9ucywgaWYgbmVj
ZXNzYXJ5KS4KKyAgICAgICAgICAgIC8vIFdlIG5vdyBuZWVkIHRvIHJlbW92ZSBhbGwgYW5pbWF0
aW9ucyB3aXRoIHRoZSBzYW1lIGdyb3VwIGlkIGFzIGdyb3VwSWQuCiAgICAgICAgICAgICAvLyBF
YWNoIGl0ZXJhdGlvbiwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKSBkZWNyZWFzZXMgb3IgaiBp
bmNyZW1lbnRzLAogICAgICAgICAgICAgLy8gZ3VhcmFudGVlaW5nIHByb2dyZXNzIHRvd2FyZHMg
bG9vcCB0ZXJtaW5hdGlvbi4gQWxzbywgd2UgYXJlIGd1YXJhbnRlZWQKICAgICAgICAgICAgIC8v
IHRvIHJlbW92ZSBhdCBsZWFzdCBvbmUgYWN0aXZlIGFuaW1hdGlvbi4KICAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGogPSBpOyBqIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTspIHsKICAgICAg
ICAgICAgICAgICBpZiAoZ3JvdXBJZCAhPSBtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPmdyb3VwKCkp
CiAgICAgICAgICAgICAgICAgICAgIGorKzsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGV2ZW50cykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChtX2FjdGl2ZUFuaW1hdGlvbnNbal0tPnRhcmdldFByb3BlcnR5KCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXZlbnRzLT5hcHBlbmQoQ0NGbG9hdEFuaW1hdGlvbkZpbmlz
aGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNp
dHksIG1fY2xpZW50LT5vcGFjaXR5KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRy
YW5zZm9ybToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudHMtPmFwcGVuZChDQ1Ry
YW5zZm9ybUFuaW1hdGlvbkZpbmlzaGVkRXZlbnQ6OmNyZWF0ZShtX2NsaWVudC0+aWQoKSwgQ0NB
Y3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSwgbV9jbGllbnQtPnRyYW5zZm9ybSgpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9ucy5yZW1vdmUoaik7Ci0gICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGkrKzsKQEAgLTM4
Miw2ICszODUsMTEgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6dGlja0FuaW1h
dGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCiAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPnJ1blN0YXRlKCkgPT0gQ0NBY3RpdmVBbmltYXRpb246OlJ1bm5pbmcpIHsKICAgICAg
ICAgICAgIGRvdWJsZSB0cmltbWVkID0gbV9hY3RpdmVBbmltYXRpb25zW2ldLT50cmltVGltZVRv
Q3VycmVudEl0ZXJhdGlvbihtb25vdG9uaWNUaW1lKTsKIAorICAgICAgICAgICAgLy8gQW5pbWF0
aW9uIGFzc3VtZXMgaXRzIGluaXRpYWwgdmFsdWUgdW50aWwgaXQgZ2V0cyB0aGUgc3luY2hyb25p
emVkIHN0YXJ0IHRpbWUKKyAgICAgICAgICAgIC8vIGZyb20gdGhlIGltcGwgdGhyZWFkIGFuZCBj
YW4gc3RhcnQgdGlja2luZy4KKyAgICAgICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0t
Pm5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKCkpCisgICAgICAgICAgICAgICAgdHJpbW1lZCA9
IDA7CisKICAgICAgICAgICAgIHN3aXRjaCAobV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQ
cm9wZXJ0eSgpKSB7CiAKICAgICAgICAgICAgIGNhc2UgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5z
Zm9ybTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgK
aW5kZXggNTdiNWJhYmViNTY3MzMyMDk2ZDE1ZDlkMjE5ZGYwZjA1ZmYxNjgzZC4uYjk2NTJkMDg5
MTcxYzhhYjJjNzFhNjVmMWEwMzZjNDlkNmM4NDdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC04Niw2ICs4NiwxMCBAQCBwdWJsaWM6CiAg
ICAgLy8gaWYgdGhlcmUgaXMgYW4gYW5pbWF0aW9uIHNjaGVkdWxlZCB0byBhbmltYXRlIHRoaXMg
cHJvcGVydHkgaW4gdGhlIGZ1dHVyZS4KICAgICBib29sIGlzQW5pbWF0aW5nUHJvcGVydHkoQ0NB
Y3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5KSBjb25zdDsKIAorICAgIC8vIFRoaXMgaXMg
Y2FsbGVkIGluIHJlc3BvbnNlIHRvIGFuIGFuaW1hdGlvbiBiZWluZyBzdGFydGVkIG9uIHRoZSBp
bXBsIHRocmVhZC4gVGhpcworICAgIC8vIGZ1bmN0aW9uIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRp
bmcgbWFpbiB0aHJlYWQgYW5pbWF0aW9uJ3Mgc3RhcnQgdGltZS4KKyAgICB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoY29uc3QgQ0NBbmltYXRpb25TdGFydGVkRXZlbnQmKTsKKwogcHJvdGVj
dGVkOgogICAgIGV4cGxpY2l0IENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyQ2xpZW50Kik7CiAKQEAgLTk5LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzdGFydEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lKGRvdWJsZSBtb25vdG9u
aWNUaW1lLCBDQ0FuaW1hdGlvbkV2ZW50c1ZlY3RvciopOwogICAgIHZvaWQgc3RhcnRBbmltYXRp
b25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShkb3VibGUgbW9ub3RvbmljVGltZSwgQ0NB
bmltYXRpb25FdmVudHNWZWN0b3IqKTsKICAgICB2b2lkIHJlc29sdmVDb25mbGljdHMoZG91Ymxl
IG1vbm90b25pY1RpbWUpOwotICAgIHZvaWQgcHVyZ2VGaW5pc2hlZEFuaW1hdGlvbnMoQ0NBbmlt
YXRpb25FdmVudHNWZWN0b3IqKTsKKyAgICB2b2lkIHB1cmdlRmluaXNoZWRBbmltYXRpb25zKCk7
CiAKICAgICB2b2lkIHRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZDFmZDg5ZWZlYzRlYWYyNDBkYmM4ODM4
MWE4NTQ4ZWM0Y2Q0MWI3Yi4uNzJiODZmZjY3NDYzNGJiM2Y5MWQ0ZDA4YmQ5Y2IxOTRmZWEzNTA2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0xNzksMTAgKzE3OSwxMCBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6ZGVsZXRlQ29udGVudHNUZXh0dXJlc09uSW1wbFRocmVh
ZChUZXh0dXJlQWxsb2NhdG9yKiBhbGxvYwogICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFn
ZXItPmV2aWN0QW5kRGVsZXRlQWxsVGV4dHVyZXMoYWxsb2NhdG9yKTsKIH0KIAotdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIGZyYW1lQmVnaW5UaW1lKQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUFuaW1hdGlvbnMoZG91YmxlIHdhbGxDbG9ja1RpbWUp
CiB7CiAgICAgbV9hbmltYXRpbmcgPSB0cnVlOwotICAgIG1fY2xpZW50LT51cGRhdGVBbmltYXRp
b25zKGZyYW1lQmVnaW5UaW1lKTsKKyAgICBtX2NsaWVudC0+dXBkYXRlQW5pbWF0aW9ucyh3YWxs
Q2xvY2tUaW1lKTsKICAgICBhbmltYXRlTGF5ZXJzKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpKTsKICAgICBtX2FuaW1hdGluZyA9IGZhbHNlOwogfQpAQCAtNjgxLDggKzY4MSw4IEBAIGJv
b2wgQ0NMYXllclRyZWVIb3N0OjphbmltYXRlTGF5ZXJzUmVjdXJzaXZlKExheWVyQ2hyb21pdW0q
IGN1cnJlbnQsIGRvdWJsZSBtb25vCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c2V0QW5pbWF0aW9u
RXZlbnRzUmVjdXJzaXZlKGNvbnN0IENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yJiBldmVudHMsIExh
eWVyQ2hyb21pdW0qIGxheWVyLCBkb3VibGUgd2FsbENsb2NrVGltZSkKIHsKICAgICBmb3IgKHNp
emVfdCBldmVudEluZGV4ID0gMDsgZXZlbnRJbmRleCA8IGV2ZW50cy5zaXplKCk7ICsrZXZlbnRJ
bmRleCkgewotICAgICAgICBpZiAobGF5ZXItPmlkKCkgPT0gZXZlbnRzW2V2ZW50SW5kZXhdLT5s
YXllcklkKCkpCi0gICAgICAgICAgICBsYXllci0+c2V0QW5pbWF0aW9uRXZlbnQoKmV2ZW50c1tl
dmVudEluZGV4XSwgd2FsbENsb2NrVGltZSk7CisgICAgICAgIGlmIChsYXllci0+aWQoKSA9PSBl
dmVudHNbZXZlbnRJbmRleF0ubGF5ZXJJZCkKKyAgICAgICAgICAgIGxheWVyLT5ub3RpZnlBbmlt
YXRpb25TdGFydGVkKGV2ZW50c1tldmVudEluZGV4XSwgd2FsbENsb2NrVGltZSk7CiAgICAgfQog
CiAgICAgZm9yIChzaXplX3QgY2hpbGRJbmRleCA9IDA7IGNoaWxkSW5kZXggPCBsYXllci0+Y2hp
bGRyZW4oKS5zaXplKCk7ICsrY2hpbGRJbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgK
aW5kZXggZjc0OWE2YjAzZDE3ZjQ0ZWQ2MTk4NGZlOTgwMmFhMDEwZDhlNjFiZi4uOWY3ODBhN2Fl
NzdhYTFlOGUxNTEzN2ExZGI4ZjlmMGY5MGJmOGNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKQEAgLTEyNSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgYW55TGF5
ZXJUcmVlSG9zdEluc3RhbmNlRXhpc3RzKCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3QgaW50
ZXJmYWNlIHRvIENDUHJveHkuCi0gICAgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFt
ZUJlZ2luVGltZSk7CisgICAgdm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tU
aW1lKTsKICAgICB2b2lkIGxheW91dCgpOwogICAgIHZvaWQgYmVnaW5Db21taXRPbkltcGxUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCopOwogICAgIHZvaWQgZmluaXNoQ29tbWl0T25JbXBsVGhy
ZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDNmZGEyYzllZTdhY2FmMGJl
ZTM2N2RlYjVlNmIxZDkzYThkMWNiNTYuLmM2YWQ5ZmYxYmFkNzNmYjAzMzMyNzIxYThhYjFhNDYw
OTEyYmU2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTAwNiw2ICsxMDA2LDQ5IEBAIHB1YmxpYzoKICAgICB9
CiB9OwogCisvLyBFbnN1cmVzIHRoYXQgbWFpbiB0aHJlYWQgYW5pbWF0aW9ucyBoYXZlIHRoZWly
IHN0YXJ0IHRpbWVzIHN5bmNocm9uaXplZCB3aXRoIGltcGwgdGhyZWFkIGFuaW1hdGlvbnMuCitj
bGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzIDog
cHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3RUaHJlYWRPbmx5IHsKK3B1YmxpYzoKKyAgICBDQ0xh
eWVyVHJlZUhvc3RUZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzKCkKKyAgICAgICAg
OiBtX251bUFuaW1hdGVzKDApCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRlc3QoKQorICAgIHsKKyAgICAgICAgcG9zdEFkZEFuaW1hdGlvblRvTWFpblRocmVhZCgpOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlTGF5ZXJzKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGxheWVyVHJlZUhvc3RJbXBsLCBkb3VibGUgbW9ub3RvbmljVGltZSkKKyAgICB7CisgICAg
ICAgIGlmICghbV9udW1BbmltYXRlcykgeworICAgICAgICAgICAgbV9udW1BbmltYXRlcysrOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXJJbXBsID0gbGF5ZXJUcmVlSG9zdEltcGwtPnJvb3RMYXll
cigpLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICAgICAgQ0NMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBtX2xheWVyVHJlZUhvc3QtPnJvb3RMYXllcigpLT5s
YXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKKyAgICAgICAgQ0NBY3RpdmVBbmltYXRpb24qIGFu
aW1hdGlvbkltcGwgPSBjb250cm9sbGVySW1wbC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0
aXZlQW5pbWF0aW9uOjpPcGFjaXR5KTsKKyAgICAgICAgQ0NBY3RpdmVBbmltYXRpb24qIGFuaW1h
dGlvbiA9IGNvbnRyb2xsZXItPmdldEFjdGl2ZUFuaW1hdGlvbigwLCBDQ0FjdGl2ZUFuaW1hdGlv
bjo6T3BhY2l0eSk7CisKKyAgICAgICAgRVhQRUNUX0VRKGFuaW1hdGlvbkltcGwtPnN0YXJ0VGlt
ZSgpLCBhbmltYXRpb24tPnN0YXJ0VGltZSgpKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgIH0KKworcHJpdmF0
ZToKKyAgICBpbnQgbV9udW1BbmltYXRlczsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RU
ZXN0U3luY2hyb25pemVBbmltYXRpb25TdGFydFRpbWVzLCBydW5NdWx0aVRocmVhZCkKK3sKKyAg
ICBydW5UZXN0VGhyZWFkZWQoKTsKK30KKwogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3REb05v
dFNraXBMYXllcnNXaXRoQW5pbWF0ZWRPcGFjaXR5LCBydW5NdWx0aVRocmVhZCkKIHsKICAgICBy
dW5UZXN0VGhyZWFkZWQoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>