<?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>47173</bug_id>
          
          <creation_ts>2010-10-05 06:42:53 -0700</creation_ts>
          <short_desc>Web Inspector: extract Inspector Instrumentation API as a class</short_desc>
          <delta_ts>2010-10-07 04:47:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>tkent</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289565</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-05 06:42:53 -0700</bug_when>
    <thetext>Web Inspector: extract Inspector Instrumentation API as a class

Remove references to InspectorTimelineAgent from WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289569</commentid>
    <comment_count>1</comment_count>
      <attachid>69777</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-05 06:43:40 -0700</bug_when>
    <thetext>Created attachment 69777
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289602</commentid>
    <comment_count>2</comment_count>
      <attachid>69783</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-05 07:52:37 -0700</bug_when>
    <thetext>Created attachment 69783
Patch.

Comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289619</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-05 08:21:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=69783) [details]
&gt; Patch.
&gt; 
&gt; Comments addressed.

Wrong patch, sorry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290166</commentid>
    <comment_count>4</comment_count>
      <attachid>69777</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-10-06 03:10:06 -0700</bug_when>
    <thetext>Comment on attachment 69777
Patch.

looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290171</commentid>
    <comment_count>5</comment_count>
      <attachid>69777</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2010-10-06 03:30:31 -0700</bug_when>
    <thetext>Comment on attachment 69777
Patch.

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

&gt; WebCore/dom/Node.cpp:2605
&gt; +    int instrumentationCookie = InspectorInstrumentation::willDispatchEvent(document(), *event, targetForWindowEvents, this, ancestors);

Nit: InspectorInstrumentationCookie cookie?

&gt; WebCore/inspector/InspectorInstrumentation.cpp:313
&gt; +    if (InspectorTimelineAgent* timelineAgent = inspectorController-&gt;m_timelineAgent.get()) {

Nit: I think it&apos;d be better to have overloaded function for retrieving timelineAgent. like retrieveTimelineAgent(InspectorController*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290396</commentid>
    <comment_count>6</comment_count>
      <attachid>69953</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-06 10:07:52 -0700</bug_when>
    <thetext>Created attachment 69953
Comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290565</commentid>
    <comment_count>7</comment_count>
      <attachid>69953</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-06 14:02:12 -0700</bug_when>
    <thetext>Comment on attachment 69953
Comments addressed.

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

&gt; WebCore/ChangeLog:27
&gt; +        (WebCore::InspectorInstrumentation::willInsertDOMNodeImpl):

You should nuke these scary verbose lines.

&gt; WebCore/bindings/v8/V8Proxy.cpp:414
&gt; +    InspectorInstrumentation::didEvaluateScript(m_frame, cookie);

I think cookie should be the first parameter in all the calls.

&gt; WebCore/inspector/InspectorInstrumentation.cpp:-67
&gt; -    if (!inspectorController-&gt;hasFrontend())

Why did these go? Please explain in order to get r+.

&gt; WebCore/inspector/InspectorInstrumentation.h:116
&gt; +    static InspectorInstrumentationCookie willCallFunctionImpl(InspectorController*, const String&amp; scriptName, int scriptLine);

This is crazy amount of methods, really easy to make a mistake here. Can we cut the number?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290853</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-07 01:13:26 -0700</bug_when>
    <thetext>&gt; 
&gt; &gt; WebCore/inspector/InspectorInstrumentation.cpp:-67
&gt; &gt; -    if (!inspectorController-&gt;hasFrontend())
&gt; 
&gt; Why did these go? Please explain in order to get r+.

This checks were moved to InspectorInstrumentation::inspectorControllerForPage method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290870</commentid>
    <comment_count>9</comment_count>
      <attachid>69953</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-07 02:05:24 -0700</bug_when>
    <thetext>Comment on attachment 69953
Comments addressed.

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

&gt; WebCore/inspector/InspectorInstrumentation.h:61
&gt; +    static void willSendXMLHttpRequest(ScriptExecutionContext*, const String&amp; url);

LGTM given we migrate to a macro shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290889</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-07 02:44:11 -0700</bug_when>
    <thetext>Committed r69283: &lt;http://trac.webkit.org/changeset/69283&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290906</commentid>
    <comment_count>11</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-07 03:28:07 -0700</bug_when>
    <thetext>This change broke https://bugs.webkit.org/show_bug.cgi?id=47173 on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290907</commentid>
    <comment_count>12</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-07 03:28:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; This change broke https://bugs.webkit.org/show_bug.cgi?id=47173 on all platforms.

Oops, copy&amp;paste error.

This change broke  http/tests/inspector/console-xhr-logging.html on all platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290921</commentid>
    <comment_count>13</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-07 04:47:02 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; This change broke https://bugs.webkit.org/show_bug.cgi?id=47173 on all platforms.
&gt; 
&gt; Oops, copy&amp;paste error.
&gt; 
&gt; This change broke  http/tests/inspector/console-xhr-logging.html on all platforms.

Fixed in r69286.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69777</attachid>
            <date>2010-10-05 06:43:40 -0700</date>
            <delta_ts>2010-10-06 10:07:52 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>79365</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNjOWNmMS4uM2I2NGRlOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIgQEAKKzIwMTAtMTAtMDUgIFBhdmVsIFBvZGl2
aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBJbnNwZWN0b3Ig
SW5zdHJ1bWVudGF0aW9uIEFQSSBhcyBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzE3MworCisgICAgICAgICogYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1
ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpldmFsdWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsSW5zZXJ0RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlm
eURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVs
ZVJlc291cmNlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb25J
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENo
YW5nZVhIUlJlYWR5U3RhdGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0
ZVNjcmlwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRmlyZVRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1M
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zy
b250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0
cmlldmVUaW1lbGluZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omhhc0Zyb250ZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENh
bGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50T25XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaEV2ZW50T25XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xs
ZXJGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBhZ2UvRE9N
VGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVGltZXI6OnJlbW92ZUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VGltZXI6OmZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmg6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNhbGxSZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIpOgorCiAyMDEwLTEwLTA1ICBLd2FuZyBZdWwg
U2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQ3NhYmEg
T3N6dHJvZ29uw6FjLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1
c3RvbS5jcHAKaW5kZXggYzQ3YjlmMy4uNDlkZmJhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC05NCw3ICs5NCw3IEBAIEpTVmFsdWUg
SlNYTUxIdHRwUmVxdWVzdDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCiAKIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6c2VuZChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgaW1wbCgpLT51cmwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGltcGwoKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCBpbXBsKCktPnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwog
ICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggZDMxOGNiYi4uMTJjMGMwNyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiRnJh
bWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJI
VE1MUGx1Z0luRWxlbWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIK
KyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiTlBf
anNvYmplY3QuaCIKQEAgLTE0MiwxOSArMTQyLDEzIEBAIFNjcmlwdFZhbHVlIFNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlSW5Xb3JsZChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
CiAKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QgPSBtX2ZyYW1lOwogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IG1fZnJhbWUtPnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpIDogMCkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEV2YWx1YXRlU2NyaXB0KHNvdXJj
ZVVSTCwgc291cmNlQ29kZS5zdGFydExpbmUoKSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgp
KTsKIAogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAg
IENvbXBsZXRpb24gY29tcCA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZXZhbHVhdGUoZXhlYywg
ZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIGpzU291cmNl
Q29kZSwgc2hlbGwpOwogICAgIGV4ZWMtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRF
dmFsdWF0ZVNjcmlwdCgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBjb29raWUpOwogCiAgICAgLy8gRXZhbHVhdGluZyB0
aGUgSmF2YVNjcmlwdCBjb3VsZCBjYXVzZSB0aGUgZnJhbWUgdG8gYmUgZGVhbGxvY2F0ZWQKICAg
ICAvLyBzbyB3ZSBzdGFydCB0aGUga2VlcCBhbGl2ZSB0aW1lciBoZXJlLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKaW5kZXggNGJkNGI0Mi4uODBiZjY4MyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJT
Y3JpcHRDb250cm9sbGVyLmgiCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRleCBmNjUzNWFhLi5l
ZjcyYjc3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAKICNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1CcmlkZ2UuaCIKQEAgLTM3NiwxMCArMzc2LDcgQEAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlLCBOb2RlKiBub2QKIAogICAgIFY4R0NDb250cm9sbGVyOjpjaGVja01lbW9yeVVzYWdl
KCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxs
RXZhbHVhdGVTY3JpcHQoc291cmNlLnVybCgpLmlzTnVsbCgpID8gU3RyaW5nKCkgOiBzb3VyY2Uu
dXJsKCkuc3RyaW5nKCksIHNvdXJjZS5zdGFydExpbmUoKSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlLnVybCgpLmlzTnVsbCgpID8gU3Ry
aW5nKCkgOiBzb3VyY2UudXJsKCkuc3RyaW5nKCksIHNvdXJjZS5zdGFydExpbmUoKSk7CiAKICAg
ICB2ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQ7CiAgICAgewpAQCAtNDE0LDEwICs0MTEsNyBA
QCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2UsIE5vZGUqIG5vZAogICAgIFBsYXRmb3JtQnJpZGdlOjp0cmFjZUV2ZW50
RW5kKCJ2OC5ydW4iLCBub2RlLCAiIik7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2ZyYW1l
LT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDAp
Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEV2YWx1YXRlU2NyaXB0KCk7Ci0jZW5kaWYKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIGNv
b2tpZSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTA1LDMzICs0OTksMjMgQEAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2FsbEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uPiBmdW5jdGlvbiwgdjgKICAgICAgICAgLy8gZXhlY3V0aW9uIGZpbmlzaHMgYmVmb3Jl
IGZpcmluZyB0aGUgdGltZXIuCiAgICAgICAgIG1fZnJhbWUtPmtlZXBBbGl2ZSgpOwogCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSA/IG1fZnJhbWUtPnBhZ2UoKTogMDsKLSAg
ICAgICAgaWYgKGluc3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yVGltZWxp
bmVBZ2VudCgpKSB7Ci0gICAgICAgICAgICAgICAgdjg6OlNjcmlwdE9yaWdpbiBvcmlnaW4gPSBm
dW5jdGlvbi0+R2V0U2NyaXB0T3JpZ2luKCk7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHJlc291
cmNlTmFtZSgidW5kZWZpbmVkIik7Ci0gICAgICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSAx
OwotICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLlJlc291cmNlTmFtZSgpLklzRW1wdHkoKSkg
ewotICAgICAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWUgPSB0b1dlYkNvcmVTdHJpbmcob3Jp
Z2luLlJlc291cmNlTmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZU51bWJlciA9IGZ1
bmN0aW9uLT5HZXRTY3JpcHRMaW5lTnVtYmVyKCkgKyAxOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsQ2FsbEZ1bmN0aW9uKHJlc291cmNlTmFt
ZSwgbGluZU51bWJlcik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBpbnNw
ZWN0ZWRQYWdlID0gMDsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSA9IDA7CisgICAgICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250
ZW5kcygpKSB7CisgICAgICAgICAgICB2ODo6U2NyaXB0T3JpZ2luIG9yaWdpbiA9IGZ1bmN0aW9u
LT5HZXRTY3JpcHRPcmlnaW4oKTsKKyAgICAgICAgICAgIFN0cmluZyByZXNvdXJjZU5hbWUoInVu
ZGVmaW5lZCIpOworICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSAxOworICAgICAgICAgICAg
aWYgKCFvcmlnaW4uUmVzb3VyY2VOYW1lKCkuSXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2VOYW1lID0gdG9XZWJDb3JlU3RyaW5nKG9yaWdpbi5SZXNvdXJjZU5hbWUoKSk7Cisg
ICAgICAgICAgICAgICAgbGluZU51bWJlciA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRMaW5lTnVtYmVy
KCkgKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKG1fZnJhbWUsIHJlc291cmNlTmFtZSwgbGlu
ZU51bWJlcik7CiAgICAgICAgIH0KLSNlbmRpZiAvLyAhRU5BQkxFKElOU1BFQ1RPUikKIAogICAg
ICAgICBtX3JlY3Vyc2lvbisrOwogICAgICAgICByZXN1bHQgPSBmdW5jdGlvbi0+Q2FsbChyZWNl
aXZlciwgYXJnYywgYXJncyk7CiAgICAgICAgIG1fcmVjdXJzaW9uLS07CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgICAgICBpZiAoaW5zcGVjdGVkUGFnZSkKLSAgICAgICAgICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdGVkUGFnZS0+aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZENhbGxGdW5jdGlvbigpOwotI2VuZGlmIC8vICFFTkFCTEUoSU5TUEVDVE9SKQotCisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKG1fZnJhbWUsIGNvb2tp
ZSk7CiAgICAgfQogCiAgICAgLy8gUmVsZWFzZSB0aGUgc3RvcmFnZSBtdXRleCBpZiBhcHBsaWNh
YmxlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVx
dWVzdEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcAppbmRleCAxYWRkMjkyLi44YWIzYWRhIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtMTE0
LDcgKzExNCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhNTEh0dHBSZXF1ZXN0OjpzZW5k
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBJTkNfU1RBVFMoIkRPTS5Y
TUxIdHRwUmVxdWVzdC5zZW5kKCkiKTsKICAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVl
c3QgPSBWOFhNTEh0dHBSZXF1ZXN0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3Qo
eG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJlcXVlc3Qt
PnVybCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJl
cXVlc3QoeG1sSHR0cFJlcXVlc3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgeG1sSHR0cFJl
cXVlc3QtPnVybCgpKTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyMTkyZjExLi5iZDI5MDMxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC04OCw3ICs4OCw3IEBACiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUg
IkltYWdlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgotI2luY2x1
ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgpAQCAtMTQ2MCwxMCArMTQ2MCw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoYW5nZSkKICAgICBpZiAobV9p
blN0eWxlUmVjYWxjKQogICAgICAgICByZXR1cm47IC8vIEd1YXJkIGFnYWluc3QgcmUtZW50cmFu
Y3kuIC1kd2gKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAg
ICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0jZW5kaWYKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZSh0aGlzKTsKIAogICAgIG1faW5TdHlsZVJlY2Fs
YyA9IHRydWU7CiAgICAgc3VzcGVuZFBvc3RBdHRhY2hDYWxsYmFja3MoKTsKQEAgLTE1MTgsMTAg
KzE1MTUsNyBAQCBiYWlsX291dDoKICAgICAgICAgaW1wbGljaXRDbG9zZSgpOwogICAgIH0KIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZSh0aGlzLCBjb29raWUpOwogfQogCiB2b2lk
IERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKCkKQEAgLTQ2ODUsMTggKzQ2NzksNiBAQCBi
b29sIERvY3VtZW50Ojppc1hIVE1MTVBEb2N1bWVudCgpIGNvbnN0CiB9CiAjZW5kaWYKIAotI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi1JbnNwZWN0b3JUaW1lbGluZUFnZW50KiBEb2N1bWVudDo6aW5z
cGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0IAotewotICAgIHJldHVybiBwYWdlKCkgPyBwYWdl
KCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDA7Ci19Ci0KLUluc3BlY3RvckNvbnRyb2xs
ZXIqIERvY3VtZW50OjppbnNwZWN0b3JDb250cm9sbGVyKCkgY29uc3QgCi17Ci0gICAgcmV0dXJu
IHBhZ2UoKSA/IHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpIDogMDsKLX0KLSNlbmRpZgot
ICAgIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIHZvaWQgRG9jdW1lbnQ6OndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBzaG9y
dCBmbGFncykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDM3MjA5MGMuLjJlYWFhNGIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtODgsNyAr
ODgsNiBAQCBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7CiBj
bGFzcyBIaXRUZXN0UmVxdWVzdDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7Ci1jbGFzcyBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBET01XcmFwcGVyV29ybGQ7
CiBjbGFzcyBKU05vZGU7CkBAIC00ODAsMTAgKzQ3OSw2IEBAIHB1YmxpYzoKICAgICBGcmFtZSog
ZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9IC8vIGNhbiBiZSBOVUxMCiAgICAgUGFn
ZSogcGFnZSgpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAogICAgIFNldHRpbmdzKiBzZXR0aW5ncygp
IGNvbnN0OyAvLyBjYW4gYmUgTlVMTAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0OyAvLyBjYW4g
YmUgTlVMTAotICAgIHZpcnR1YWwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlcigpIGNvbnN0OyAvLyBjYW4gYmUgTlVMTAotI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPFJh
bmdlPiBjcmVhdGVSYW5nZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBi
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDY4NjY2YTAuLjFmZmZhMDMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNjAy
LDcgKzI2MDIsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNoR2VuZXJpY0V2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+IHBycEV2ZW50KQogICAgICAgICAgICAgdGFyZ2V0Rm9yV2luZG93RXZlbnRzID0gc3Rh
dGljX2Nhc3Q8RG9jdW1lbnQqPih0b3BMZXZlbENvbnRhaW5lciktPmRvbVdpbmRvdygpOwogICAg
IH0KIAotICAgIGludCBpbnN0cnVtZW50YXRpb25Db29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Omluc3RydW1lbnRXaWxsRGlzcGF0Y2hFdmVudChkb2N1bWVudCgpLCAqZXZlbnQsIHRh
cmdldEZvcldpbmRvd0V2ZW50cywgdGhpcywgYW5jZXN0b3JzKTsKKyAgICBpbnQgaW5zdHJ1bWVu
dGF0aW9uQ29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVu
dChkb2N1bWVudCgpLCAqZXZlbnQsIHRhcmdldEZvcldpbmRvd0V2ZW50cywgdGhpcywgYW5jZXN0
b3JzKTsKIAogICAgIC8vIEdpdmUgdGhlIHRhcmdldCBub2RlIGEgY2hhbmNlIHRvIGRvIHNvbWUg
d29yayBiZWZvcmUgRE9NIGV2ZW50IGhhbmRsZXJzIGdldCBhIGNyYWNrLgogICAgIHZvaWQqIGRh
dGEgPSBwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihldmVudC5nZXQoKSk7CkBAIC0yNjg1LDcgKzI2
ODUsNyBAQCBkb25lRGlzcGF0Y2hpbmc6CiAKIGRvbmVXaXRoRGVmYXVsdDoKIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudERpZERpc3BhdGNoRXZlbnQoZG9jdW1lbnQo
KSwgaW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZERpc3BhdGNoRXZlbnQoZG9jdW1lbnQoKSwgaW5zdHJ1bWVudGF0aW9uQ29va2llKTsKIAog
ICAgIHJldHVybiAhZXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2MzBiNmFhLi5kNjY4ZDVlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0zNiwxNSArMzYs
MTIgQEAKICNpbmNsdWRlICJIVE1MU2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiSFRNTFRyZWVC
dWlsZGVyLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKICNpbmNsdWRl
IDx3dGYvQ3VycmVudFRpbWUuaD4KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTIxMCw5ICsyMDcsMTIgQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAg
ICAgLy8gQVNTRVJUIHRoYXQgdGhpcyBvYmplY3QgaXMgYm90aCBhdHRhY2hlZCB0byB0aGUgRG9j
dW1lbnQgYW5kIHByb3RlY3RlZC4KICAgICBBU1NFUlQocmVmQ291bnQoKSA+PSAyKTsKIAotICAg
IC8vIFdlIHRlbGwgdGhlIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgYWJvdXQgZXZlcnkgcHVtcCwg
ZXZlbiBpZiB3ZQorICAgIC8vIFdlIHRlbGwgdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBh
Ym91dCBldmVyeSBwdW1wLCBldmVuIGlmIHdlCiAgICAgLy8gZW5kIHVwIHB1bXBpbmcgbm90aGlu
Zy4gIEl0IGNhbiBmaWx0ZXIgb3V0IGVtcHR5IHB1bXBzIGl0c2VsZi4KLSAgICB3aWxsUHVtcExl
eGVyKCk7CisgICAgLy8gRklYTUU6IG1faW5wdXQuY3VycmVudCgpLmxlbmd0aCgpIGlzIG9ubHkg
YWNjdXJhdGUgaWYgd2UKKyAgICAvLyBlbmQgdXAgcGFyc2luZyB0aGUgd2hvbGUgYnVmZmVyIGlu
IHRoaXMgcHVtcC4gIFdlIHNob3VsZCBwYXNzIGhvdworICAgIC8vIG11Y2ggd2UgcGFyc2VkIGFz
IHBhcnQgb2YgZGlkV3JpdGVIVE1MIGluc3RlYWQgb2Ygd2lsbFdyaXRlSFRNTC4KKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsV3JpdGVIVE1MKGRvY3VtZW50KCksIG1faW5wdXQuY3VycmVudCgpLmxlbmd0aCgp
LCBtX3Rva2VuaXplci0+bGluZU51bWJlcigpKTsKIAogICAgIEhUTUxQYXJzZXJTY2hlZHVsZXI6
OlB1bXBTZXNzaW9uIHNlc3Npb247CiAgICAgLy8gRklYTUU6IFRoaXMgbG9vcCBib2R5IGhhcyBp
cyBub3cgdG9vIGxvbmcgYW5kIG5lZWRzIGNsZWFudXAuCkBAIC0yNTYsMjYgKzI1Niw3IEBAIHZv
aWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2Rl
KQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCk7CiAgICAgfQogCi0gICAgZGlkUHVt
cExleGVyKCk7Ci19Ci0KLXZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjp3aWxsUHVtcExleGVyKCkK
LXsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIC8vIEZJWE1FOiBtX2lucHV0LmN1cnJlbnQo
KS5sZW5ndGgoKSBpcyBvbmx5IGFjY3VyYXRlIGlmIHdlCi0gICAgLy8gZW5kIHVwIHBhcnNpbmcg
dGhlIHdob2xlIGJ1ZmZlciBpbiB0aGlzIHB1bXAuICBXZSBzaG91bGQgcGFzcyBob3cKLSAgICAv
LyBtdWNoIHdlIHBhcnNlZCBhcyBwYXJ0IG9mIGRpZFdyaXRlSFRNTCBpbnN0ZWFkIG9mIHdpbGxX
cml0ZUhUTUwuCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSBkb2N1bWVudCgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxXcml0ZUhUTUwobV9pbnB1dC5jdXJyZW50KCkubGVuZ3RoKCksIG1fdG9rZW5p
emVyLT5saW5lTnVtYmVyKCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpkaWRQdW1wTGV4ZXIoKQotewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBkb2N1bWVudCgpLT5pbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFdyaXRlSFRNTChtX3Rv
a2VuaXplci0+bGluZU51bWJlcigpKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkV3JpdGVIVE1MKGRvY3VtZW50KCksIG1fdG9rZW5pemVyLT5saW5lTnVtYmVyKCks
IGNvb2tpZSk7CiB9CiAKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjpoYXNJbnNlcnRpb25Qb2lu
dCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5o
IGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAppbmRleCBlNjVhNTgy
Li5kOTYyNWYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgKQEAg
LTEwMyw5ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIC8vIENhY2hlZFJlc291cmNlQ2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKLSAgICB2
b2lkIHdpbGxQdW1wTGV4ZXIoKTsKLSAgICB2b2lkIGRpZFB1bXBMZXhlcigpOwotCiAgICAgZW51
bSBTeW5jaHJvbm91c01vZGUgewogICAgICAgICBBbGxvd1lpZWxkLAogICAgICAgICBGb3JjZVN5
bmNocm9ub3VzLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5jcHAKaW5kZXggZmI1NzY4YS4uM2ZmODBhZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIlhNTEh0dHBS
ZXF1ZXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjQsOCArNjUsNiBAQCBzdGF0
aWMgYm9vbCBldmVudEhhc0xpc3RlbmVycyhjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwg
RE9NV2luZG93KiB3aW5kb3csCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbElu
c2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IE5vZGUqIG5vZGUsIE5vZGUqIHBhcmVudCkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJV
R0dFUikKLSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAg
ICAgIHJldHVybjsKICAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIGlmICghZGVi
dWdnZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwpAQCAtODAsOCArNzksNiBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlYwogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0
RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9k
ZSogbm9kZSkKIHsKLSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkp
Ci0gICAgICAgIHJldHVybjsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+bV9kb21BZ2VudC5nZXQoKSkKICAgICAgICAgZG9tQWdlbnQt
PmRpZEluc2VydERPTU5vZGUobm9kZSk7CiB9CkBAIC04OSw4ICs4Niw2IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZURP
TU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIE5vZGUq
IG5vZGUpCiB7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKCFpbnNw
ZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICByZXR1cm47CiAgICAgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXIt
Pm1fZGVidWdnZXJBZ2VudC5nZXQoKTsKICAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCiAgICAgICAg
IHJldHVybjsKQEAgLTEwNSw4ICsxMDAsNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlYwogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSogbm9kZSkKIHsKLSAgICBp
ZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybjsK
ICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxl
ci0+bV9kb21BZ2VudC5nZXQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUo
bm9kZSk7CiB9CkBAIC0xMTQsOCArMTA3LDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlbW92ZURPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3QKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgRWxlbWVudCogZWxlbWVudCkKIHsK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAoIWluc3BlY3RvckNvbnRy
b2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybjsKICAgICBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dl
ckFnZW50LmdldCgpOwogICAgIGlmICghZGVidWdnZXJBZ2VudCkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTMwLDI3ICsxMjEsODYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxN
b2RpZnlET01BdHRySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWMKIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgaWYg
KCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICByZXR1cm47CiAg
ICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXIt
Pm1fZG9tQWdlbnQuZ2V0KCkpCiAgICAgICAgIGRvbUFnZW50LT5kaWRNb2RpZnlET01BdHRyKGVs
ZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0
YU1vZGlmaWVkSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBD
aGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQogewotICAgIGlmICghaW5zcGVjdG9yQ29udHJv
bGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgcmV0dXJuOwogICAgIGlmIChJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgp
KQogICAgICAgICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGNoYXJhY3RlckRhdGEp
OwogfQogCi1pbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbERpc3Bh
dGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNv
bnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3JzKQorCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCog
ZGVidWdnZXJBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQo
KTsKKyAgICBpZiAoIWRlYnVnZ2VyQWdlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
aW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxkQnJlYWtPblhNTEh0dHBSZXF1ZXN0KHVybCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInR5
cGUiLCAiWEhSIik7CisgICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAg
ZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5hdGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50
VHlwZSwgZXZlbnREYXRhKTsKKyNlbmRpZgorfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+
bV90aW1lbGluZUFnZW50LmdldCgpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRTY2hlZHVs
ZVJlc291cmNlUmVxdWVzdCh1cmwpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkSW5zdGFsbFRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyLCBpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCkKK3sKKyAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNv
bnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkSW5zdGFsbFRpbWVyKHRpbWVySWQsIHRpbWVvdXQsIHNpbmdsZVNob3QpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGludCB0aW1lcklkKQoreworICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxl
ci0+bV90aW1lbGluZUFnZW50LmdldCgpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZW1v
dmVUaW1lcih0aW1lcklkKTsKK30KKworCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUs
IGludCBzY3JpcHRMaW5lKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpKSB7
CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0TmFtZSwgc2Ny
aXB0TGluZSk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAg
ICByZXR1cm4gMDsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxG
dW5jdGlvbkltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKIHsKLSAgICBpbnQgaW5zdHJ1bWVu
dGF0aW9uQ29va2llID0gMDsKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29r
aWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDYWxsRnVuY3Rpb24oKTsKK30KIAotICAg
IGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgcmV0dXJu
IGluc3RydW1lbnRhdGlvbkNvb2tpZTsKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBYTUxIdHRwUmVxdWVzdCogcmVx
dWVzdCkKK3sKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
cGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpOworICAgIGlmICh0aW1lbGlu
ZUFnZW50ICYmIHJlcXVlc3QtPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5yZWFkeXN0
YXRlY2hhbmdlRXZlbnQpKSB7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDaGFuZ2VYSFJS
ZWFkeVN0YXRlKHJlcXVlc3QtPnVybCgpLnN0cmluZygpLCByZXF1ZXN0LT5yZWFkeVN0YXRlKCkp
OworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CiAKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFk
eVN0YXRlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoreworICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENoYW5n
ZVhIUlJlYWR5U3RhdGUoKTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2lu
ZG93KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9k
ZT4gPiYgYW5jZXN0b3JzKQorewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAg
IGlmIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29u
dHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgpKSB7CiAgICAgICAgIGlmIChpbnNwZWN0b3JD
b250cm9sbGVyLT5zaG91bGRCcmVha09uRXZlbnQoZXZlbnQudHlwZSgpKSkgewpAQCAtMTY1LDQ0
ICsyMTUsMTg2IEBAIGludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxs
RGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlCiAgICAgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVB
Z2VudC5nZXQoKTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiBldmVudEhhc0xpc3RlbmVycyhl
dmVudC50eXBlKCksIHdpbmRvdywgbm9kZSwgYW5jZXN0b3JzKSkgewogICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgICAgIGluc3RydW1lbnRhdGlv
bkNvb2tpZSA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFn
ZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uQ29va2llOworICAg
IHJldHVybiAwOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVu
dERpZERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIGludCBpbnN0cnVtZW50YXRpb25Db29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKIHsK
LSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJl
dHVybjsKLQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9k
ZWJ1Z2dlckFnZW50LmdldCgpKQogICAgICAgICBkZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZU9u
TmV4dFN0YXRlbWVudCgpOwogI2VuZGlmCiAKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9s
bGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KCk7
Cit9CisKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5k
b3cpCit7CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Bl
Y3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKTsKLSAgICBpZiAodGltZWxpbmVB
Z2VudCAmJiB0aW1lbGluZUFnZW50LT5pZCgpID09IGluc3RydW1lbnRhdGlvbkNvb2tpZSkKKyAg
ICBpZiAodGltZWxpbmVBZ2VudCAmJiB3aW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50LnR5
cGUoKSkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQp
OworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlz
cGF0Y2hFdmVudCgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1
bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdXJsKQorSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0SW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcm
IHVybCwgaW50IGxpbmVOdW1iZXIpCiB7Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci0gICAgaWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5lQWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+d2lsbEV2YWx1YXRlU2NyaXB0KHVybCwgbGluZU51bWJlcik7CisgICAgICAg
IHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAot
ICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250
cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7Ci0gICAgaWYgKCFkZWJ1Z2dlckFnZW50KQot
ICAgICAgICByZXR1cm47Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVh
dGVTY3JpcHRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZh
bHVhdGVTY3JpcHQoKTsKK30KIAotICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxk
QnJlYWtPblhNTEh0dHBSZXF1ZXN0KHVybCkpCi0gICAgICAgIHJldHVybjsKK0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGlt
ZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGludCB0aW1l
cklkKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zcGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpKSB7CisgICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxGaXJlVGltZXIodGltZXJJZCk7CisgICAgICAgIHJldHVybiB0aW1l
bGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0g
ICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoInR5cGUiLCAiWEhSIik7Ci0gICAgZXZlbnREYXRhLT5z
ZXRTdHJpbmcoInVybCIsIHVybCk7Ci0gICAgZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKE5h
dGl2ZUJyZWFrcG9pbnREZWJ1Z2dlckV2ZW50VHlwZSwgZXZlbnREYXRhKTsKLSNlbmRpZgordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUp
KQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaXJlVGltZXIoKTsKK30KKworSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91
dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNvbnRy
b2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKSkgeworICAgICAgICB0aW1lbGluZUFnZW50LT53
aWxsTGF5b3V0KCk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0K
KyAgICByZXR1cm4gMDsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExh
eW91dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0
b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRMYXlvdXQo
KTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbExvYWRYSFJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5l
QWdlbnQuZ2V0KCk7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgcmVxdWVzdC0+aGFzRXZlbnRM
aXN0ZW5lcnMoZXZlbnROYW1lcygpLmxvYWRFdmVudCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+d2lsbExvYWRYSFIocmVxdWVzdC0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4g
dGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZExvYWRYSFIoKTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBJbnRSZWN0JiByZWN0
KQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5z
cGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpKSB7CisgICAgICAgIHRpbWVs
aW5lQWdlbnQtPndpbGxQYWludChyZWN0KTsKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQt
PmlkKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUGFpbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5l
QWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+ZGlkUGFpbnQoKTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5l
QWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2FsY3VsYXRlU3R5
bGUoKTsKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJl
dHVybiAwOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxh
dGVTdHlsZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNw
ZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNh
bGN1bGF0ZVN0eWxlKCk7Cit9CisKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5lQWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoaWRlbnRpZmllcik7CisgICAgICAg
IHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJv
bGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNl
RGF0YSgpOworfQorCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVs
aW5lQWdlbnQuZ2V0KCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKKyAgICAgICAgcmV0dXJuIHRpbWVs
aW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29v
a2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
KTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFdyaXRlSFRNTEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSkK
K3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Bl
Y3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKSkgeworICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsV3JpdGVIVE1MKGxlbmd0aCwgc3RhcnRMaW5lKTsKKyAgICAgICAgcmV0dXJu
IHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JD
b250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRXcml0ZUhUTUwo
ZW5kTGluZSk7Cit9CisKKworYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCit7CisgICAgcmV0
dXJuIGluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCk7Cit9CisKK0luc3BlY3RvclRp
bWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFn
ZW50KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5n
ZXQoKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCAmJiB0aW1lbGluZUFnZW50LT5pZCgpID09IGNv
b2tpZSkKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQ7CisgICAgcmV0dXJuIDA7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgKaW5kZXggNWI2NmEyZS4uZmU0MmY4NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZp
bmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgogCkBAIC00MCw3ICs0MSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBDaGFyYWN0ZXJEYXRhOwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgTm9kZTsKK2Ns
YXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7CitjbGFzcyBYTUxI
dHRwUmVxdWVzdDsKKwordHlwZWRlZiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
OwogCiBjbGFzcyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gewogcHVibGljOgpAQCAtNTEsMTUg
KzU4LDQ0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBkaWRNb2RpZnlET01BdHRyKERvY3Vt
ZW50KiwgRWxlbWVudCopOwogICAgIHN0YXRpYyB2b2lkIGNoYXJhY3RlckRhdGFNb2RpZmllZChE
b2N1bWVudCosIENoYXJhY3RlckRhdGEqKTsKIAotICAgIHN0YXRpYyBpbnQgaW5zdHJ1bWVudFdp
bGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cqLCBOb2Rl
KiwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpOwotICAg
IHN0YXRpYyB2b2lkIGluc3RydW1lbnREaWREaXNwYXRjaEV2ZW50KERvY3VtZW50KiwgaW50IGlu
c3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVx
dWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHN0
YXRpYyB2b2lkIGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50KiwgY29uc3QgU3Ry
aW5nJiB1cmwpOworICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgaW50IHRpbWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBp
bnQgdGltZXJJZCk7CiAKLSAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRw
UmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJik7CisgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2FsbEZ1bmN0aW9uKEZyYW1l
KiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3
aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJl
cXVlc3QqIHJlcXVlc3QpOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBj
b29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERp
c3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2lu
ZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFu
Y2VzdG9ycyk7CisgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudChEb2N1bWVudCosIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSos
IGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOworICAgIHN0YXRpYyB2b2lk
IGRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5l
TnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChGcmFtZSosIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgaW50IHRpbWVySWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7Cisg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5b3V0KEZyYW1l
Kik7CisgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0KEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJlcXVl
c3QqIHJlcXVlc3QpOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRYSFIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0
YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFBhaW50KEZyYW1lKiwgY29u
c3QgSW50UmVjdCYgcmVjdCk7CisgICAgc3RhdGljIHZvaWQgZGlkUGFpbnQoRnJhbWUqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Kik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCosIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZURhdGEo
RnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlKEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3Vt
ZW50KiwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7CisgICAg
c3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MKERvY3VtZW50KiwgdW5zaWduZWQgaW50IGVuZExpbmUs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZENyZWF0ZWQoKSB7IHNfZnJvbnRlbmRD
b3VudGVyICs9IDE7IH0KICAgICBzdGF0aWMgdm9pZCBmcm9udGVuZERlbGV0ZWQoKSB7IHNfZnJv
bnRlbmRDb3VudGVyIC09IDE7IH0KICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZHMoKSB7IHJl
dHVybiBzX2Zyb250ZW5kQ291bnRlcjsgfQorI2Vsc2UKKyAgICBzdGF0aWMgYm9vbCBoYXNGcm9u
dGVuZHMoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC03MiwxNSAr
MTA4LDQ2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0ckltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIEVsZW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBjaGFyYWN0
ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBDaGFyYWN0ZXJEYXRhKik7
CiAKLSAgICBzdGF0aWMgaW50IGluc3RydW1lbnRXaWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93KiwgTm9kZSosIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5jZXN0b3JzKTsKLSAgICBzdGF0aWMgdm9p
ZCBpbnN0cnVtZW50RGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGlu
dCBpbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0
cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHVybCk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3RJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgc3RhdGljIHZvaWQgZGlkSW5zdGFs
bFRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQsIGludCB0aW1lb3V0
LCBib29sIHNpbmdsZVNob3QpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVySW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQpOwogCi0gICAgc3RhdGljIHZvaWQgaW5z
dHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBj
b25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxDYWxsRnVuY3Rpb25JbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcm
IHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVu
Y3Rpb25JbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENo
YW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBYTUxIdHRwUmVxdWVz
dCogcmVxdWVzdCk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7Cisg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVu
dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93
KiB3aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4g
PiYgYW5jZXN0b3JzKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50T25X
aW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdp
bmRvdyogd2luZG93KTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUp
OworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRl
U2NyaXB0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBs
aW5lTnVtYmVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVySW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVU
aW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5
b3V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxMb2FkWEhS
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOworICAg
IHN0YXRpYyB2b2lkIGRpZExvYWRYSFJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgd2lsbFBhaW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgSW50
UmVjdCYgcmVjdCk7CisgICAgc3RhdGljIHZvaWQgZGlkUGFpbnRJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsK
KyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVz
b3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNw
b25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOworICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25l
ZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBpbnQgZW5kTGlu
ZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKIAotICAgIHN0YXRpYyBJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKICAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlckZv
ckRvY3VtZW50KERvY3VtZW50Kik7CisgICAgc3RhdGljIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShGcmFtZSopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShQYWdlKik7CiAKKyAgICBzdGF0
aWMgYm9vbCBoYXNGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgc3RhdGljIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0b3JDb250
cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKwogICAgIHN0YXRpYyBp
bnQgc19mcm9udGVuZENvdW50ZXI7CiAjZW5kaWYKIH07CkBAIC0xMzUsMzMgKzIwMiwyNjQgQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZp
ZWQoRG9jdW1lbnQqIGRvY3VtZW50LAogI2VuZGlmCiB9CiAKLWlubGluZSBpbnQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2Rl
LCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycykKKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsKQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkK
KyAgICAgICAgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwg
dXJsKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB1cmwpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCB1cmwpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zdGFsbFRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQor
eworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0
KSkKKyAgICAgICAgZGlkSW5zdGFsbFRpbWVySW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1l
cklkLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGludCB0aW1lcklkKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkUmVtb3ZlVGltZXJJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVySWQpOworI2VuZGlmCit9CisKKworaW5saW5lIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxDYWxsRnVuY3Rpb24oRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGlu
dCBzY3JpcHRMaW5lKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm4gd2lsbENhbGxGdW5jdGlvbkltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgc2NyaXB0TmFtZSwgc2NyaXB0TGluZSk7CisjZW5kaWYKKyAgICByZXR1
cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxs
RnVuY3Rpb24oRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJh
bWUpKQorICAgICAgICBkaWRDYWxsRnVuY3Rpb25JbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNv
b2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KQorewor
I2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkK
KyAgICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChpbnNwZWN0b3JDb250
cm9sbGVyLCByZXF1ZXN0KTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRl
eHQoY29udGV4dCkpCisgICAgICAgIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdp
bmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBh
bmNlc3RvcnMpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiBpbnN0cnVtZW50V2lsbERpc3BhdGNoRXZl
bnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGV2ZW50LCB3aW5kb3csIG5vZGUsIGFuY2VzdG9y
cyk7CisgICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudEltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgZXZlbnQsIHdpbmRvdywgbm9kZSwgYW5jZXN0b3JzKTsKICNlbmRpZgogICAgIHJldHVy
biAwOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1l
bnREaWREaXNwYXRjaEV2ZW50KERvY3VtZW50KiBkb2N1bWVudCwgaW50IGluc3RydW1lbnRhdGlv
bkNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1
bWVudChkb2N1bWVudCkpCi0gICAgICAgIGluc3RydW1lbnREaWREaXNwYXRjaEV2ZW50SW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCBpbnN0cnVtZW50YXRpb25Db29raWUpOworICAgICAgICBkaWRE
aXNwYXRjaEV2ZW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOwogI2VuZGlmCiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxT
ZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3Qg
U3RyaW5nJiB1cmwpCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSogZnJh
bWUsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpCiB7CiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRl
eHQpKQotICAgICAgICBpbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgdXJsKTsKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAg
ICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChpbnNwZWN0b3JDb250cm9s
bGVyLCBldmVudCwgd2luZG93KTsKICNlbmRpZgorICAgIHJldHVybiAwOwogfQogCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhG
cmFtZSogZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLWlubGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JTY3JpcHRFeGVjdXRpb25D
b250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
RnJhbWUoZnJhbWUpKQorICAgICAgICBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0
ZVNjcmlwdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcikK
K3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkK
KyAgICAgICAgcmV0dXJuIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgdXJsLCBsaW5lTnVtYmVyKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KEZyYW1lKiBm
cmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlk
RXZhbHVhdGVTY3JpcHRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYK
K30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgaW50IHRpbWVySWQpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICByZXR1cm4gd2lsbEZpcmVUaW1lckltcGwoaW5z
cGVjdG9yQ29udHJvbGxlciwgdGltZXJJZCk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKwor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRl
eHQoY29udGV4dCkpCisgICAgICAgIGRpZEZpcmVUaW1lckltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgY29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dChGcmFtZSogZnJhbWUp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
CisgICAgICAgIHJldHVybiB3aWxsTGF5b3V0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyNl
bmRpZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZExheW91dChGcmFtZSogZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBjb29raWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JG
cmFtZShmcmFtZSkpCisgICAgICAgIGRpZExheW91dEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwg
Y29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICBy
ZXR1cm4gd2lsbExvYWRYSFJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlcXVlc3QpOworI2Vu
ZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNw
ZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkTG9hZFhIUklt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFBhaW50KEZyYW1lKiBmcmFtZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJu
IHdpbGxQYWludEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgcmVjdCk7CisjZW5kaWYKKyAgICBy
ZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQ
YWludChGcmFtZSogZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
CisgICAgICAgIGRpZFBhaW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOworI2Vu
ZGlmCit9CisKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCogZG9jdW1lbnQp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1
bWVudCkpCisgICAgICAgIHJldHVybiB3aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoaW5zcGVjdG9y
Q29udHJvbGxlcik7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50KiBkb2N1
bWVudCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAg
ICAgZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsK
KyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqIGZyYW1l
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJl
c291cmNlRGF0YUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRpZmllcik7CisjZW5kaWYK
KyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlRGF0YUltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiBmcmFtZSwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHdp
bGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgaWRlbnRp
ZmllciwgcmVzcG9uc2UpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJh
bWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoreworI2lm
IEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAg
ICBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29v
a2llKTsKKyNlbmRpZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTChEb2N1bWVudCogZG9jdW1l
bnQsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpCit7CisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisg
ICAgICAgIHJldHVybiB3aWxsV3JpdGVIVE1MSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBsZW5n
dGgsIHN0YXJ0TGluZSk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwoRG9jdW1lbnQqIGRvY3VtZW50
LCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50
KGRvY3VtZW50KSkKKyAgICAgICAgZGlkV3JpdGVIVE1MSW1wbChpbnNwZWN0b3JDb250cm9sbGVy
LCBlbmRMaW5lLCBjb29raWUpOworI2VuZGlmCit9CisKKworI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CitpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpp
bnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogewogICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb250ZXh0ICYmIGNvbnRleHQtPmlz
RG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKHN0
YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPnBhZ2UoKSk7CkBAIC0xNzAsMTQgKzQ2OCwy
NyBAQCBpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaQogCiBpbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxl
ciogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1l
bnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewotICAgIGlmIChoYXNGcm9udGVuZHMoKSkKKyAgICBp
ZiAoaGFzRnJvbnRlbmRzKCkgJiYgZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JD
b250cm9sbGVyRm9yUGFnZShkb2N1bWVudC0+cGFnZSgpKTsKICAgICByZXR1cm4gMDsKIH0KIAor
aW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
cGVjdG9yQ29udHJvbGxlckZvckZyYW1lKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoaGFzRnJv
bnRlbmRzKCkgJiYgZnJhbWUpCisgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyRm9y
UGFnZShmcmFtZS0+cGFnZSgpKTsKKyAgICByZXR1cm4gMDsKK30KKwogaW5saW5lIEluc3BlY3Rv
ckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxl
ckZvclBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSA6IDA7CisgICAgaWYgKHBhZ2UpIHsKKyAgICAgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBwYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkpIHsKKyAgICAgICAgICAgIGlmIChoYXNGcm9udGVuZChpbnNwZWN0b3JDb250cm9sbGVy
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlcjsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gMDsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDFkZDg2YWQuLjY0NWI2OTIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC00NCwxNCAr
NDQsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1pbnQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6c19pbnN0YW5jZUNvdW50ID0gMDsKIGludCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpz
X2lkID0gMDsKIAogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCiAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5k
KQogICAgICwgbV9pZCgrK3NfaWQpCiB7Ci0gICAgKytzX2luc3RhbmNlQ291bnQ7CiAgICAgU2Ny
aXB0R0NFdmVudDo6YWRkRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICBBU1NFUlQobV9mcm9udGVu
ZCk7CiB9CkBAIC03OCw4ICs3Niw2IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlk
R0MoZG91YmxlIHN0YXJ0VGltZSwgZG91YmxlIGVuZFRpbWUsIHNpemVfdCBjb2xsCiAKIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGluZUFnZW50KCkKIHsKLSAgICBBU1NF
UlQoc19pbnN0YW5jZUNvdW50KTsKLSAgICAtLXNfaW5zdGFuY2VDb3VudDsKICAgICBTY3JpcHRH
Q0V2ZW50OjpyZW1vdmVFdmVudExpc3RlbmVyKHRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggOTk2OWExNC4uYmMxZTAyNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMzMsOSArMzMsNyBA
QAogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNjcmlwdEdDRXZlbnQuaCIKICNpbmNsdWRlICJTY3JpcHRHQ0V2ZW50
TGlzdGVuZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMzAsOSArMTI4LDYgQEAg
cHVibGljOgogICAgICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGlkR0MoZG91YmxlLCBkb3VibGUs
IHNpemVfdCk7CiAKLSAgICBzdGF0aWMgaW50IGluc3RhbmNlQ291bnQoKSB7IHJldHVybiBzX2lu
c3RhbmNlQ291bnQ7IH0KLSAgICBzdGF0aWMgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmll
dmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiBwcml2YXRlOgogICAgIHN0cnVjdCBUaW1l
bGluZVJlY29yZEVudHJ5IHsKICAgICAgICAgVGltZWxpbmVSZWNvcmRFbnRyeShQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gcmVjb3JkLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0
YSwgUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gY2hpbGRyZW4sIFRpbWVsaW5lUmVjb3JkVHlw
ZSB0eXBlKQpAQCAtMTU3LDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRnJvbnRl
bmQqIG1fZnJvbnRlbmQ7CiAKICAgICBWZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9yZWNv
cmRTdGFjazsKLSAgICBzdGF0aWMgaW50IHNfaW5zdGFuY2VDb3VudDsKKwogICAgIHN0YXRpYyBp
bnQgc19pZDsKICAgICBjb25zdCBpbnQgbV9pZDsKICAgICBzdHJ1Y3QgR0NFdmVudCB7CkBAIC0x
NzMsMTMgKzE2OCw2IEBAIHByaXZhdGU6CiAgICAgR0NFdmVudHMgbV9nY0V2ZW50czsKIH07CiAK
LWlubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpy
ZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewotICAgIGlmIChjb250
ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PERvY3VtZW50Kj4oY29udGV4dCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICByZXR1
cm4gMDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gIUVOQUJMRShJ
TlNQRUNUT1IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAg
Yi9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNDkwYmMzMC4uNTQ5NmQ5
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMzYsOCArMzYsNyBAQAogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCkBAIC00MDEsNDQgKzQwMCwyMCBAQCB2b2lk
IFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRsZSosIHVuc2lnbmVkIGxv
bmcgbG9uZyBieXRlc1NlbnQsCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQog
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
Omluc3RhbmNlQ291bnQoKSkgewotICAgICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpKSA/IG1fZnJhbWUtPnBhZ2Uo
KS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMDsKLSAgICAgICAgaWYgKHRpbWVsaW5lQWdl
bnQpCi0gICAgICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UoaWRlbnRpZmllcigpLCByZXNwb25zZSk7Ci0gICAgfQotI2VuZGlmCisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUuZ2V0KCksIGlkZW50aWZpZXIoKSwg
cmVzcG9uc2UpOwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgaWYg
KGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm1heWJlTG9hZEZhbGxi
YWNrRm9yUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOwotI2lmIEVOQUJMRShJTlNQRUNUT1Ip
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSkgewotICAg
ICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gKG1fZnJhbWUgJiYg
bV9mcmFtZS0+cGFnZSgpKSA/IG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpIDogMDsKLSAgICAgICAgaWYgKHRpbWVsaW5lQWdlbnQpCi0gICAgICAgICAgICB0aW1lbGlu
ZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOwotICAgIH0KLSNlbmRpZgorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UobV9m
cmFtZS5nZXQoKSwgY29va2llKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQg
bGVuZ3RoUmVjZWl2ZWQpCiB7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6aW5zdGFuY2VDb3VudCgpKSB7Ci0gICAgICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkp
ID8gbV9mcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwOwotICAgICAg
ICBpZiAodGltZWxpbmVBZ2VudCkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNl
aXZlUmVzb3VyY2VEYXRhKGlkZW50aWZpZXIoKSk7Ci0gICAgfQotI2VuZGlmCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEobV9mcmFtZS5nZXQoKSwgaWRlbnRpZmllcigpKTsK
ICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGxlbmd0aFJlY2VpdmVkLCBmYWxzZSk7
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
aW5zdGFuY2VDb3VudCgpKSB7Ci0gICAgICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpID8gbV9mcmFtZS0+cGFnZSgp
LT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgOiAwOwotICAgICAgICBpZiAodGltZWxpbmVBZ2Vu
dCkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoKTsK
LSAgICB9Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVS
ZXNvdXJjZURhdGEobV9mcmFtZS5nZXQoKSwgY29va2llKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1l
KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVy
L2xvYWRlci5jcHAKaW5kZXggM2Y2ZmFkMi4uOGYyNjJlMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvbG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCkBAIC0yOCw3
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCi0jaW5jbHVkZSAiSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnQuaCIKQEAgLTE0OSwxMyArMTQ5LDcgQEAgdm9pZCBMb2FkZXI6Omxv
YWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNv
dXJjZSogcmUKICAgICAgICAgaG9zdC0+c2VydmVQZW5kaW5nUmVxdWVzdHMocHJpb3JpdHkpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIEhhbmRsZSBhc3luY2hyb25vdXNseSBzbyBlYXJseSBs
b3cgcHJpb3JpdHkgcmVxdWVzdHMgZG9uJ3QgZ2V0IHNjaGVkdWxlZCBiZWZvcmUgbGF0ZXIgaGln
aCBwcmlvcml0eSBvbmVzCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSkgewotICAgICAgICAgICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogYWdlbnQgPSBjYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jKCktPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICAgICAgICAgIGlmIChhZ2VudCkKLSAgICAgICAg
ICAgICAgICBhZ2VudC0+ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QocmVzb3VyY2UtPnVybCgp
KTsKLSAgICAgICAgfQotI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QoY2FjaGVkUmVz
b3VyY2VMb2FkZXItPmRvYygpLCByZXNvdXJjZS0+dXJsKCkpOwogICAgICAgICBzY2hlZHVsZVNl
cnZlUGVuZGluZ1JlcXVlc3RzKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmNwcCBiL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggM2FjNmQxNS4u
MTQwMmRkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAorKysgYi9XZWJD
b3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiRE9NVGltZXIuaCIKIAotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTgxLDEwICs4MSw3IEBAIGludCBET01UaW1l
cjo6aW5zdGFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzT3duUHRyPFNj
aGVkdWxlZEFjdGlvCiAgICAgLy8gb3IgaWYgaXQgaXMgYSBvbmUtdGltZSB0aW1lciBhbmQgaXQg
aGFzIGZpcmVkIChET01UaW1lcjo6ZmlyZWQpLgogICAgIERPTVRpbWVyKiB0aW1lciA9IG5ldyBE
T01UaW1lcihjb250ZXh0LCBhY3Rpb24sIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogCi0jaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJldHJpZXZlKGNvbnRleHQpKQotICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRJbnN0YWxsVGltZXIodGltZXItPm1fdGltZW91dElkLCB0aW1l
b3V0LCBzaW5nbGVTaG90KTsKLSNlbmRpZiAgICAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEluc3RhbGxUaW1lcihjb250ZXh0LCB0aW1lci0+bV90aW1lb3V0SWQsIHRpbWVvdXQs
IHNpbmdsZVNob3QpOwogCiAgICAgcmV0dXJuIHRpbWVyLT5tX3RpbWVvdXRJZDsKIH0KQEAgLTk3
LDEwICs5NCw3IEBAIHZvaWQgRE9NVGltZXI6OnJlbW92ZUJ5SWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgaW50IHRpbWVvdXRJZCkKICAgICBpZiAodGltZW91dElkIDw9IDApCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpy
ZXRyaWV2ZShjb250ZXh0KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVtb3ZlVGltZXIo
dGltZW91dElkKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVt
b3ZlVGltZXIoY29udGV4dCwgdGltZW91dElkKTsKIAogICAgIGRlbGV0ZSBjb250ZXh0LT5maW5k
VGltZW91dCh0aW1lb3V0SWQpOwogfQpAQCAtMTEwLDEwICsxMDQsNyBAQCB2b2lkIERPTVRpbWVy
OjpmaXJlZCgpCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IG1fbmVzdGluZ0xldmVs
OwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJldHJpZXZlKGNvbnRl
eHQpKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZVRpbWVyKG1fdGltZW91dElkKTsK
LSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQp
OwogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYg
KGlzQWN0aXZlKCkpIHsKQEAgLTEyNSwxMCArMTE2LDkgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQo
KQogCiAgICAgICAgIC8vIE5vIGFjY2VzcyB0byBtZW1iZXIgdmFyaWFibGVzIGFmdGVyIHRoaXMg
cG9pbnQsIGl0IGNhbiBkZWxldGUgdGhlIHRpbWVyLgogICAgICAgICBtX2FjdGlvbi0+ZXhlY3V0
ZShjb250ZXh0KTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJl
dHJpZXZlKGNvbnRleHQpKQotICAgICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZVRpbWVy
KCk7Ci0jZW5kaWYKKworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVU
aW1lcihjb250ZXh0LCBjb29raWUpOworCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0
MCwxMCArMTMwLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogCiAgICAgYWN0aW9uLT5leGVj
dXRlKGNvbnRleHQpOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnJl
dHJpZXZlKGNvbnRleHQpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaXJlVGltZXIoKTsK
LSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRl
eHQsIGNvb2tpZSk7CiAKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaCBiL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCmluZGV4
IGMxZDhkOWUuLjRmYzZhYWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCisr
KyBiL1dlYkNvcmUvcGFnZS9ET01UaW1lci5oCkBAIC0zNCw4ICszNCw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7Ci0KICAgICBj
bGFzcyBET01UaW1lciA6IHB1YmxpYyBTdXNwZW5kYWJsZVRpbWVyIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgfkRPTVRpbWVyKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDVlOGE1N2YuLjMx
MDBjMDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC02Miw3ICs2Miw3IEBACiAjaW5jbHVkZSAiSURCRmFj
dG9yeS5oIgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTG9jYXRpb24uaCIKICNpbmNsdWRlICJTdHlsZU1lZGlhLmgiCkBA
IC0xNTIyLDE1ICsxNTIyLDYgQEAgdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KCkK
ICNlbmRpZgogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLUluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIERPTVdpbmRvdzo6aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIAotewotICAgIGlmIChmcmFt
ZSgpICYmIGZyYW1lKCktPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lKCktPnBhZ2UoKS0+
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KIGJv
b2wgRE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBwcnBUYXJnZXQpCiB7CiAgICAgUmVmUHRyPEV2ZW50VGFy
Z2V0PiBwcm90ZWN0ID0gdGhpczsKQEAgLTE1NDAsMjMgKzE1MzEsMTEgQEAgYm9vbCBET01XaW5k
b3c6OmRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBhc3NSZWZQdHI8
RXZlbnRUYXJnZXQKICAgICBldmVudC0+c2V0Q3VycmVudFRhcmdldCh0aGlzKTsKICAgICBldmVu
dC0+c2V0RXZlbnRQaGFzZShFdmVudDo6QVRfVEFSR0VUKTsKIAotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgUGFnZSogaW5zcGVjdGVkUGFnZSA9IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omlu
c3RhbmNlQ291bnQoKSAmJiBmcmFtZSgpID8gZnJhbWUoKS0+cGFnZSgpIDogMDsKLSAgICBpZiAo
aW5zcGVjdGVkUGFnZSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IGhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50LT50eXBlKCkpID8gaW5zcGVjdGVk
UGFnZS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMCkKLSAgICAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KCpldmVudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGluc3BlY3RlZFBhZ2UgPSAwOwotICAgIH0KLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3coZnJhbWUoKSwgKmV2ZW50LCB0aGlzKTsKIAogICAgIGJvb2wg
cmVzdWx0ID0gZmlyZUV2ZW50TGlzdGVuZXJzKGV2ZW50LmdldCgpKTsKIAotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgaWYgKGluc3BlY3RlZFBhZ2UpCi0gICAgICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQotICAgICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRGlzcGF0Y2hFdmVu
dCgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2
ZW50T25XaW5kb3coZnJhbWUoKSwgY29va2llKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmgKaW5kZXggNmZkMzc3NS4uY2E0NWY1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5oCisrKyBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtNTcsNyArNTcsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgSGlzdG9y
eTsKICAgICBjbGFzcyBJREJGYWN0b3J5OwotICAgIGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ7CiAgICAgY2xhc3MgTG9jYXRpb247CiAgICAgY2xhc3MgU3R5bGVNZWRpYTsKICAgICBjbGFz
cyBOYXZpZ2F0b3I7CkBAIC00MDcsNyArNDA2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQogICAgICAg
ICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCk7CiAgICAgICAgIHZp
cnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKTsKLSAgICAgICAg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwogCiAgICAg
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gbV9zZWN1cml0eU9yaWdpbjsKICAgICAgICAgS1VS
TCBtX3VybDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggZDM5OWEwMS4uMjk0MWYyMyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAKICNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkltYWdlRWxlbWVudC5o
IgotI2luY2x1ZGUgIkluc3BlY3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgpAQCAt
NjE3LDEwICs2MTcsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
KQogICAgIGlmIChpc1BhaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJ
TlNQRUNUT1IpICAgIAotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT53
aWxsTGF5b3V0KCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0KG1fZnJhbWUuZ2V0
KCkpOwogCiAgICAgaWYgKCFhbGxvd1N1YnRyZWUgJiYgbV9sYXlvdXRSb290KSB7CiAgICAgICAg
IG1fbGF5b3V0Um9vdC0+bWFya0NvbnRhaW5pbmdCbG9ja3NGb3JMYXlvdXQoZmFsc2UpOwpAQCAt
ODQwLDEwICs4MzcsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
KQogICAgICAgICBBU1NFUlQobV9lbnF1ZXVlRXZlbnRzKTsKICAgICB9CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRM
YXlvdXQoKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0
KG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CiAKICAgICBtX25lc3RlZExheW91dENvdW50LS07CiB9
CkBAIC0xOTMyLDEwICsxOTI2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmICghZnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KHJlY3QpOwotI2VuZGlmCisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFBhaW50KG1fZnJhbWUuZ2V0KCksIHJlY3QpOwogCiAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKIApAQCAtMjAwOSwxMCArMjAwMCw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKICAgICBpZiAoaXNUb3BMZXZlbFBhaW50ZXIpCiAgICAgICAgIHNDdXJy
ZW50UGFpbnRUaW1lU3RhbXAgPSAwOwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQoKTsKLSNlbmRpZgorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQobV9mcmFtZS5nZXQoKSwgY29va2ll
KTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvciBi
ZWhhdmlvcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCAyMmMwNWJlLi41ZTI3NDMzIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0y
NSw5ICsyNSw5IEBACiAjaWZuZGVmIEZyYW1lVmlld19oCiAjZGVmaW5lIEZyYW1lVmlld19oCiAK
LSNpbmNsdWRlICJGcmFtZS5oIiAvLyBPbmx5IHVzZWQgYnkgRnJhbWVWaWV3OjppbnNwZWN0b3JU
aW1lbGluZUFnZW50KCkKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkludFNpemUuaCIK
LSNpbmNsdWRlICJQYWdlLmgiIC8vIE9ubHkgdXNlZCBieSBGcmFtZVZpZXc6Omluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKQorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIgLy8gRm9yIFBhaW50QmVoYXZpb3IKICNpbmNsdWRlICJTY3JvbGxWaWV3LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTM4LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgQ29sb3I7CiBjbGFzcyBFdmVudDsKIGNsYXNzIEZyYW1lVmlld1ByaXZhdGU7Ci1jbGFz
cyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBj
bGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CkBAIC0yOTMsMTAgKzI5Miw2IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBzY3JvbGxUb0FuY2hvcigpOwogICAgIHZvaWQgc2Nyb2xsUG9zaXRpb25DaGFuZ2Vk
KCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdDsKLSNlbmRpZgotICAgIAogICAgIGJvb2wg
aGFzQ3VzdG9tU2Nyb2xsYmFycygpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNj
cm9sbENvcm5lcigpOwpAQCAtMzg2LDEzICszODEsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBk
b3VibGUgc19kZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVudER1cmluZ0xvYWRpbmc7CiB9Owog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLWlubGluZSBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBG
cmFtZVZpZXc6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdAotewotICAgIHJldHVybiBt
X2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSA6IDA7Ci19Ci0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RnJhbWVWaWV3X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAppbmRleCBmYjBhOWM5Li42MTRmMzJiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC00Niw3ICs0Niw2
IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3Rh
cnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5oIgpAQCAtODQxLDEzICs4NDAsNiBA
QCBib29sIFBhZ2U6OmphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1famF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkOwogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikK
LUluc3BlY3RvclRpbWVsaW5lQWdlbnQqIFBhZ2U6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXItPnRpbWVsaW5lQWdlbnQo
KTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKIFNwZWVjaElucHV0KiBQ
YWdlOjpzcGVlY2hJbnB1dCgpCiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIv
V2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBmNzgzMGRiLi42ZmY2NGNmIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTYxLDcgKzYx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhpc3RvcnlJdGVtOwogICAgIGNs
YXNzIEluc3BlY3RvckNsaWVudDsKICAgICBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwotICAg
IGNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ7CiAgICAgY2xhc3MgTWVkaWFDYW5TdGFydExp
c3RlbmVyOwogICAgIGNsYXNzIE5vZGU7CiAgICAgY2xhc3MgUGFnZUdyb3VwOwpAQCAtMjg5LDEw
ICsyODgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SmF2YVNjcmlw
dFVSTHNBcmVBbGxvd2VkKGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRVUkxzQXJlQWxs
b3dlZCgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIGNvbnN0OwotI2VuZGlmCi0K
ICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgbW9yZSB0aGFuIGEgY2VydGFpbiBudW1iZXIgb2YgZnJh
bWVzIGluIGEgcGFnZS4KICAgICAgICAgLy8gVGhpcyBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSB1
cHBlciBib3VuZCwgYW5kIG90aGVyd2lzZSBtdXR1YWxseQogICAgICAgICAvLyByZWN1cnNpdmUg
ZnJhbWVzZXQgcGFnZXMgY2FuIHF1aWNrbHkgYnJpbmcgdGhlIHByb2dyYW0gdG8gaXRzIGtuZWVz
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBmOWUyMzY3Li5m
MjFiNjcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTQz
LDcgKzQzLDcgQEAKICNpbmNsdWRlICJIVE1MSUZyYW1lRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJJbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2Uu
aCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKQEAgLTEwNTksMjYgKzEwNTksMTAgQEAgdm9pZCBS
ZW5kZXJMYXllckJhY2tpbmc6OnBhaW50SW50b0xheWVyKFJlbmRlckxheWVyKiByb290TGF5ZXIs
IEdyYXBoaWNzQ29udGV4dCoKICAgICBBU1NFUlQoIW1fb3duaW5nTGF5ZXItPm1fdXNlZFRyYW5z
cGFyZW5jeSk7CiB9CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotc3RhdGljIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKLXsKLSAgICBGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJhbWUoKTsKLSAgICBpZiAoIWZy
YW1lKQotICAgICAgICByZXR1cm4gMDsKLSAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsK
LSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBwYWdlLT5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7Ci19Ci0jZW5kaWYKLQogLy8gVXAtY2FsbCBmcm9tIGNvbXBv
c2l0aW5nIGxheWVyIGRyYXdpbmcgY2FsbGJhY2suCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6
cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSBwYWludGluZ1BoYXNlLCBjb25zdCBJbnRS
ZWN0JiBjbGlwKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KG1fb3du
aW5nTGF5ZXItPnJlbmRlcmVyKCkpKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUGFpbnQo
Y2xpcCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnQobV9vd25pbmdMYXllci0+cmVu
ZGVyZXIoKS0+ZnJhbWUoKSwgY2xpcCk7CiAKICAgICAvLyBXZSBoYXZlIHRvIHVzZSB0aGUgc2Ft
ZSByb290IGFzIGZvciBoaXQgdGVzdGluZywgYmVjYXVzZSBib3RoIG1ldGhvZHMKICAgICAvLyBj
YW4gY29tcHV0ZSBhbmQgY2FjaGUgY2xpcFJlY3RzLgpAQCAtMTA5OCwxMCArMTA4Miw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmIGNvCiAKICAgICBwYWludEludG9MYXllcihtX293bmluZ0xheWVy
LCAmY29udGV4dCwgZGlydHlSZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNl
LCByZW5kZXJlcigpKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KG1f
b3duaW5nTGF5ZXItPnJlbmRlcmVyKCkpKQotICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRQYWlu
dCgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChtX293
bmluZ0xheWVyLT5yZW5kZXJlcigpLT5mcmFtZSgpLCBjb29raWUpOwogfQogCiBib29sIFJlbmRl
ckxheWVyQmFja2luZzo6c2hvd0RlYnVnQm9yZGVycygpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggMDdhODE2ZC4uZWZiZTA3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0
cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1l
bGluZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0zMDMsMzUgKzMwMywxNyBAQCB2b2lkIFhNTEh0
dHBSZXF1ZXN0OjpjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkKICAgICBpZiAoIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0jaWYgRU5BQkxFKElOU1BF
Q1RPUikKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6cmV0cmlldmUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAg
ICBib29sIGNhbGxUaW1lbGluZUFnZW50T25SZWFkeVN0YXRlQ2hhbmdlID0gdGltZWxpbmVBZ2Vu
dCAmJiBoYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50
KTsKLSAgICBpZiAoY2FsbFRpbWVsaW5lQWdlbnRPblJlYWR5U3RhdGVDaGFuZ2UpCi0gICAgICAg
IHRpbWVsaW5lQWdlbnQtPndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKG1fdXJsLnN0cmluZygpLCBt
X3N0YXRlKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CiAKICAgICBpZiAobV9hc3luYyB8fCAobV9z
dGF0ZSA8PSBPUEVORUQgfHwgbV9zdGF0ZSA9PSBET05FKSkKICAgICAgICAgbV9wcm9ncmVzc0V2
ZW50VGhyb3R0bGUuZGlzcGF0Y2hFdmVudChYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KSwgbV9zdGF0ZSA9PSBET05F
ID8gRmx1c2hQcm9ncmVzc0V2ZW50IDogRG9Ob3RGbHVzaFByb2dyZXNzRXZlbnQpOwogCi0jaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoY2FsbFRpbWVsaW5lQWdlbnRPblJlYWR5U3RhdGVD
aGFuZ2UgJiYgKHRpbWVsaW5lQWdlbnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXRyaWV2
ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlk
Q2hhbmdlWEhSUmVhZHlTdGF0ZSgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29v
a2llKTsKIAogICAgIGlmIChtX3N0YXRlID09IERPTkUgJiYgIW1fZXJyb3IpIHsKLSNpZiBFTkFC
TEUoSU5TUEVDVE9SKQotICAgICAgICB0aW1lbGluZUFnZW50ID0gSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6cmV0cmlldmUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICAgICAgYm9vbCBj
YWxsVGltZWxpbmVBZ2VudE9uTG9hZCA9IHRpbWVsaW5lQWdlbnQgJiYgaGFzRXZlbnRMaXN0ZW5l
cnMoZXZlbnROYW1lcygpLmxvYWRFdmVudCk7Ci0gICAgICAgIGlmIChjYWxsVGltZWxpbmVBZ2Vu
dE9uTG9hZCkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxMb2FkWEhSKG1fdXJsLnN0
cmluZygpKTsKLSNlbmRpZgotCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSwgdGhpcyk7CiAgICAgICAgIG1fcHJvZ3Jlc3NFdmVudFRocm90dGxl
LmRpc3BhdGNoRXZlbnQoWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCkpOwotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYg
KGNhbGxUaW1lbGluZUFnZW50T25Mb2FkICYmICh0aW1lbGluZUFnZW50ID0gSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6cmV0cmlldmUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCi0gICAgICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWRMb2FkWEhSKCk7Ci0jZW5kaWYKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
Y29va2llKTsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69783</attachid>
            <date>2010-10-05 07:52:37 -0700</date>
            <delta_ts>2010-10-05 08:21:32 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>2801</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzNjOWNmMS4uMTQ3NWU5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0xMC0wNCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgIlNldCBCcmVha3BvaW50
IiBpdGVtIHRvIFhIUiByZXNvdXJjZSBjb250ZXh0IG1lbnUuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA4NQorCisgICAgICAgICogaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUuX2NvbnRleHRNZW51KToKKwogMjAxMC0xMC0wNSAgS3dhbmcg
WXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5IENz
YWJhIE9zenRyb2dvbsOhYy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcwppbmRleCAxOTM5ZWZjLi4xYzY1ZGEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xMjUwLDE3ICsxMjUwLDI3IEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfY29udGV4dE1l
bnU6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgLy8gY3JlYXRlQmxvYlVSTCBpcyBl
bmFibGVkIGNvbmRpdGlvbmFsbHksIGRvIG5vdCBleHBvc2UgcmVzb3VyY2UgZXhwb3J0IGlmIGl0
J3Mgbm90IGF2YWlsYWJsZS4KLSAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cuY3JlYXRlQmxvYlVS
TCAhPT0gImZ1bmN0aW9uIiB8fCAhUHJlZmVyZW5jZXMucmVzb3VyY2VFeHBvcnRFbmFibGVkKQot
ICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29udGV4dE1lbnUoKTsKICAgICAgICAgdmFyIHJlc291cmNlVHJlZUl0ZW0gPSBl
dmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygicmVzb3VyY2Utc2lkZWJh
ci10cmVlLWl0ZW0iKTsKLSAgICAgICAgaWYgKHJlc291cmNlVHJlZUl0ZW0gJiYgcmVzb3VyY2VU
cmVlSXRlbS50cmVlRWxlbWVudCkgewotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gcmVzb3Vy
Y2VUcmVlSXRlbS50cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBvcnQgdG8gSEFS
IiksIHRoaXMuX2V4cG9ydFJlc291cmNlLmJpbmQodGhpcywgcmVzb3VyY2UpKTsKKyAgICAgICAg
dmFyIHJlc291cmNlOworICAgICAgICBpZiAocmVzb3VyY2VUcmVlSXRlbSAmJiByZXNvdXJjZVRy
ZWVJdGVtLnRyZWVFbGVtZW50KQorICAgICAgICAgICAgcmVzb3VyY2UgPSByZXNvdXJjZVRyZWVJ
dGVtLnRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0OworCisgICAgICAgIHZhciBuZWVkU2Vw
YXJhdG9yID0gZmFsc2U7CisgICAgICAgIC8vIGNyZWF0ZUJsb2JVUkwgaXMgZW5hYmxlZCBjb25k
aXRpb25hbGx5LCBkbyBub3QgZXhwb3NlIHJlc291cmNlIGV4cG9ydCBpZiBpdCdzIG5vdCBhdmFp
bGFibGUuCisgICAgICAgIGlmICh0eXBlb2Ygd2luZG93LmNyZWF0ZUJsb2JVUkwgPT09ICJmdW5j
dGlvbiIgJiYgUHJlZmVyZW5jZXMucmVzb3VyY2VFeHBvcnRFbmFibGVkKSB7CisgICAgICAgICAg
ICBpZiAocmVzb3VyY2UpCisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cG9ydCB0byBIQVIiKSwgdGhpcy5fZXhwb3J0UmVzb3Vy
Y2UuYmluZCh0aGlzLCByZXNvdXJjZSkpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cG9ydCBhbGwgdG8gSEFSIiksIHRoaXMuX2V4
cG9ydEFsbC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIG5lZWRTZXBhcmF0b3IgPSB0cnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc291cmNlICYmIHJlc291cmNlLmNhdGVnb3J5ID09
PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VDYXRlZ29yaWVzLnhocikgeworICAgICAgICAgICAgaWYg
KG5lZWRTZXBhcmF0b3IpCisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJh
dG9yKCk7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2V0IEJyZWFrcG9pbnQiKSwgV2ViSW5zcGVjdG9yLmJyZWFrcG9pbnRNYW5hZ2Vy
LmNyZWF0ZVhIUkJyZWFrcG9pbnQuYmluZChXZWJJbnNwZWN0b3IuYnJlYWtwb2ludE1hbmFnZXIs
IHJlc291cmNlLnVybCkpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBvcnQgYWxsIHRvIEhBUiIpLCB0aGlzLl9leHBv
cnRBbGwuYmluZCh0aGlzKSk7CisKICAgICAgICAgY29udGV4dE1lbnUuc2hvdyhldmVudCk7CiAg
ICAgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69953</attachid>
            <date>2010-10-06 10:07:52 -0700</date>
            <delta_ts>2010-10-07 02:05:24 -0700</delta_ts>
            <desc>Comments addressed.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>79819</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTM1MDRmZC4uYjgyNDFiYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzIgQEAKKzIwMTAtMTAtMDUgIFBhdmVsIFBvZGl2
aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZXh0cmFjdCBJbnNwZWN0b3Ig
SW5zdHJ1bWVudGF0aW9uIEFQSSBhcyBhIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzE3MworCisgICAgICAgICogYmluZGluZ3MvanMvSlNY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1
ZXN0OjpzZW5kKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpldmFsdWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFjayk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHlsZSk6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsSW5zZXJ0RE9NTm9kZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRET01Ob2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGVJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1vZGlm
eURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVs
ZVJlc291cmNlUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRJbnN0YWxsVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb25J
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENo
YW5nZVhIUlJlYWR5U3RhdGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0
ZVNjcmlwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRmlyZVRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUxJbXBsKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1M
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omhhc0Zy
b250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0
cmlldmVUaW1lbGluZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
Omhhc0Zyb250ZW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZVRpbWVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENh
bGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50T25XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaEV2ZW50T25XaW5kb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFIpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xs
ZXJGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJGb3JQYWdlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6On5JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogbG9hZGVyL2xvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMb2FkZXI6OmxvYWQpOgorICAgICAgICAqIHBhZ2UvRE9N
VGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6Omluc3RhbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVGltZXI6OnJlbW92ZUJ5SWQpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VGltZXI6OmZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmg6CisgICAgICAgICogcGFn
ZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpkaXNwYXRjaEV2
ZW50KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiB4
bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6
OmNhbGxSZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIpOgorCiAyMDEwLTEwLTA2ICBQYXZlbCBQb2Rp
dmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFl1
cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0
cFJlcXVlc3RDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
Q3VzdG9tLmNwcAppbmRleCBjNDdiOWYzLi40OWRmYmFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgSlNWYWx1
ZSBKU1hNTEh0dHBSZXF1ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKIAogSlNWYWx1ZSBKU1hN
TEh0dHBSZXF1ZXN0OjpzZW5kKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGltcGwoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpbXBsKCktPnVybCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3QoaW1wbCgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIGltcGwoKS0+dXJsKCkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCBkMzE4Y2JiLi4xMmMwYzA3IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
IkhUTUxQbHVnSW5FbGVtZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJO
UF9qc29iamVjdC5oIgpAQCAtMTQyLDE5ICsxNDIsMTMgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUKIAogICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdCA9IG1fZnJhbWU7CiAKLSNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gbV9mcmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkgOiAwKQotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRXZhbHVhdGVTY3JpcHQoc291
cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuc3RhcnRMaW5l
KCkpOwogCiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAg
ICAgQ29tcGxldGlvbiBjb21wID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpldmFsdWF0ZShleGVj
LCBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4oKSwganNTb3Vy
Y2VDb2RlLCBzaGVsbCk7CiAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
b3AoKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCkt
Pmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDApCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZEV2YWx1YXRlU2NyaXB0KCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIGNvb2tpZSk7CiAKICAgICAvLyBFdmFsdWF0aW5n
IHRoZSBKYXZhU2NyaXB0IGNvdWxkIGNhdXNlIHRoZSBmcmFtZSB0byBiZSBkZWFsbG9jYXRlZAog
ICAgIC8vIHNvIHdlIHN0YXJ0IHRoZSBrZWVwIGFsaXZlIHRpbWVyIGhlcmUuCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA0YmQ0YjQyLi44MGJmNjgzIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAK
ICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
cm94eS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IGY2NTM1YWEu
LmVmNzJiNzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtMzksNyArMzksNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJ
bnRlcmZhY2UuaCIKICNpbmNsdWRlICJJREJQZW5kaW5nVHJhbnNhY3Rpb25Nb25pdG9yLmgiCi0j
aW5jbHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgpAQCAtMzc2LDEwICszNzYsNyBAQCB2ODo6
TG9jYWw8djg6OlZhbHVlPiBWOFByb3h5OjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2UsIE5vZGUqIG5vZAogCiAgICAgVjhHQ0NvbnRyb2xsZXI6OmNoZWNrTWVtb3J5VXNh
Z2UoKTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBtX2ZyYW1lLT5wYWdlKCkgPyBtX2ZyYW1lLT5wYWdlKCkt
Pmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDApCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPndp
bGxFdmFsdWF0ZVNjcmlwdChzb3VyY2UudXJsKCkuaXNOdWxsKCkgPyBTdHJpbmcoKSA6IHNvdXJj
ZS51cmwoKS5zdHJpbmcoKSwgc291cmNlLnN0YXJ0TGluZSgpKTsKLSNlbmRpZgorICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2UudXJsKCkuaXNOdWxsKCkgPyBT
dHJpbmcoKSA6IHNvdXJjZS51cmwoKS5zdHJpbmcoKSwgc291cmNlLnN0YXJ0TGluZSgpKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHJlc3VsdDsKICAgICB7CkBAIC00MTQsMTAgKzQxMSw3
IEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZSwgTm9kZSogbm9kCiAgICAgUGxhdGZvcm1CcmlkZ2U6OnRyYWNlRXZl
bnRFbmQoInY4LnJ1biIsIG5vZGUsICIiKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKElOU1BFQ1RP
UikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IG1fZnJh
bWUtPnBhZ2UoKSA/IG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDog
MCkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZhbHVhdGVTY3JpcHQoKTsKLSNlbmRpZgor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwg
Y29va2llKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MDUsMzMgKzQ5OSwyMyBAQCB2
ODo6TG9jYWw8djg6OlZhbHVlPiBWOFByb3h5OjpjYWxsRnVuY3Rpb24odjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uLCB2OAogICAgICAgICAvLyBleGVjdXRpb24gZmluaXNocyBiZWZv
cmUgZmlyaW5nIHRoZSB0aW1lci4KICAgICAgICAgbV9mcmFtZS0+a2VlcEFsaXZlKCk7CiAKLSNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgICAgICBQYWdlKiBpbnNwZWN0ZWRQYWdlID0gSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6aW5zdGFuY2VDb3VudCgpID8gbV9mcmFtZS0+cGFnZSgpOiAwOwot
ICAgICAgICBpZiAoaW5zcGVjdGVkUGFnZSkgewotICAgICAgICAgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpIHsKLSAgICAgICAgICAgICAgICB2ODo6U2NyaXB0T3JpZ2luIG9yaWdpbiA9
IGZ1bmN0aW9uLT5HZXRTY3JpcHRPcmlnaW4oKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcmVz
b3VyY2VOYW1lKCJ1bmRlZmluZWQiKTsKLSAgICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9
IDE7Ci0gICAgICAgICAgICAgICAgaWYgKCFvcmlnaW4uUmVzb3VyY2VOYW1lKCkuSXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZSA9IHRvV2ViQ29yZVN0cmluZyhv
cmlnaW4uUmVzb3VyY2VOYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0g
ZnVuY3Rpb24tPkdldFNjcmlwdExpbmVOdW1iZXIoKSArIDE7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxDYWxsRnVuY3Rpb24ocmVzb3VyY2VO
YW1lLCBsaW5lTnVtYmVyKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGlu
c3BlY3RlZFBhZ2UgPSAwOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gMDsKKyAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJv
bnRlbmRzKCkpIHsKKyAgICAgICAgICAgIHY4OjpTY3JpcHRPcmlnaW4gb3JpZ2luID0gZnVuY3Rp
b24tPkdldFNjcmlwdE9yaWdpbigpOworICAgICAgICAgICAgU3RyaW5nIHJlc291cmNlTmFtZSgi
dW5kZWZpbmVkIik7CisgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IDE7CisgICAgICAgICAg
ICBpZiAoIW9yaWdpbi5SZXNvdXJjZU5hbWUoKS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAg
ICByZXNvdXJjZU5hbWUgPSB0b1dlYkNvcmVTdHJpbmcob3JpZ2luLlJlc291cmNlTmFtZSgpKTsK
KyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID0gZnVuY3Rpb24tPkdldFNjcmlwdExpbmVOdW1i
ZXIoKSArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb29raWUgPSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24obV9mcmFtZSwgcmVzb3VyY2VOYW1lLCBs
aW5lTnVtYmVyKTsKICAgICAgICAgfQotI2VuZGlmIC8vICFFTkFCTEUoSU5TUEVDVE9SKQogCiAg
ICAgICAgIG1fcmVjdXJzaW9uKys7CiAgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxsKHJl
Y2VpdmVyLCBhcmdjLCBhcmdzKTsKICAgICAgICAgbV9yZWN1cnNpb24tLTsKIAotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgICAgIGlmIChpbnNwZWN0ZWRQYWdlKQotICAgICAgICAgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0ZWRQYWdlLT5p
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAgICAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkQ2FsbEZ1bmN0aW9uKCk7Ci0jZW5kaWYgLy8gIUVOQUJMRShJTlNQRUNUT1IpCi0KKyAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24obV9mcmFtZSwgY29v
a2llKTsKICAgICB9CiAKICAgICAvLyBSZWxlYXNlIHRoZSBzdG9yYWdlIG11dGV4IGlmIGFwcGxp
Y2FibGUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBS
ZXF1ZXN0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCmluZGV4IDFhZGQyOTIuLjhhYjNhZGEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC0x
MTQsNyArMTE0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNl
bmRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIElOQ19TVEFUUygiRE9N
LlhNTEh0dHBSZXF1ZXN0LnNlbmQoKSIpOwogICAgIFhNTEh0dHBSZXF1ZXN0KiB4bWxIdHRwUmVx
dWVzdCA9IFY4WE1MSHR0cFJlcXVlc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogCi0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50V2lsbFNlbmRYTUxIdHRwUmVxdWVz
dCh4bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB4bWxIdHRwUmVxdWVz
dC0+dXJsKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRw
UmVxdWVzdCh4bWxIdHRwUmVxdWVzdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB4bWxIdHRw
UmVxdWVzdC0+dXJsKCkpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDhkNTIwNzguLjI4NDhlMDAgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTg4LDcgKzg4LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVk
ZSAiSW1hZ2VMb2FkZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCkBAIC0xNDYwLDEwICsxNDYwLDcgQEAg
dm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogICAgIGlmICht
X2luU3R5bGVSZWNhbGMpCiAgICAgICAgIHJldHVybjsgLy8gR3VhcmQgYWdhaW5zdCByZS1lbnRy
YW5jeS4gLWR3aAogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAg
ICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2FsY3VsYXRlU3R5bGUoKTsKLSNlbmRpZgorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlKHRoaXMpOwogCiAgICAgbV9pblN0eWxlUmVj
YWxjID0gdHJ1ZTsKICAgICBzdXNwZW5kUG9zdEF0dGFjaENhbGxiYWNrcygpOwpAQCAtMTUxOCwx
MCArMTUxNSw3IEBAIGJhaWxfb3V0OgogICAgICAgICBpbXBsaWNpdENsb3NlKCk7CiAgICAgfQog
Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKHRoaXMsIGNvb2tpZSk7CiB9CiAKIHZv
aWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQpAQCAtNDY4NSwxOCArNDY3OSw2IEBA
IGJvb2wgRG9jdW1lbnQ6OmlzWEhUTUxNUERvY3VtZW50KCkgY29uc3QKIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKElOU1BFQ1RPUikKLUluc3BlY3RvclRpbWVsaW5lQWdlbnQqIERvY3VtZW50Ojpp
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3QgCi17Ci0gICAgcmV0dXJuIHBhZ2UoKSA/IHBh
Z2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMDsKLX0KLQotSW5zcGVjdG9yQ29udHJv
bGxlciogRG9jdW1lbnQ6Omluc3BlY3RvckNvbnRyb2xsZXIoKSBjb25zdCAKLXsKLSAgICByZXR1
cm4gcGFnZSgpID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOwotfQotI2VuZGlm
Ci0gICAgCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogdm9pZCBEb2N1bWVudDo6d2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHNo
b3J0IGZsYWdzKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMzcyMDkwYy4uMmVhYWE0YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC04OCw3
ICs4OCw2IEBAIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsK
IGNsYXNzIEhpdFRlc3RSZXF1ZXN0OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKLWNsYXNzIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIERPTVdyYXBwZXJXb3Js
ZDsKIGNsYXNzIEpTTm9kZTsKQEAgLTQ4MCwxMCArNDc5LDYgQEAgcHVibGljOgogICAgIEZyYW1l
KiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0gLy8gY2FuIGJlIE5VTEwKICAgICBQ
YWdlKiBwYWdlKCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCiAgICAgU2V0dGluZ3MqIHNldHRpbmdz
KCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7IC8vIGNh
biBiZSBOVUxMCi0gICAgdmlydHVhbCBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKCkgY29uc3Q7IC8vIGNhbiBiZSBOVUxMCi0jZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8
UmFuZ2U+IGNyZWF0ZVJhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3Bw
IGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNjg2NjZhMC4uZTk1ZjYyMCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI2
MDIsNyArMjYwMiw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hHZW5lcmljRXZlbnQoUGFzc1JlZlB0
cjxFdmVudD4gcHJwRXZlbnQpCiAgICAgICAgICAgICB0YXJnZXRGb3JXaW5kb3dFdmVudHMgPSBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KHRvcExldmVsQ29udGFpbmVyKS0+ZG9tV2luZG93KCk7CiAg
ICAgfQogCi0gICAgaW50IGluc3RydW1lbnRhdGlvbkNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxEaXNwYXRjaEV2ZW50KGRvY3VtZW50KCksICpldmVudCwg
dGFyZ2V0Rm9yV2luZG93RXZlbnRzLCB0aGlzLCBhbmNlc3RvcnMpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEaXNwYXRjaEV2ZW50KGRvY3VtZW50KCksICpldmVudCwgdGFyZ2V0Rm9yV2luZG93RXZlbnRz
LCB0aGlzLCBhbmNlc3RvcnMpOwogCiAgICAgLy8gR2l2ZSB0aGUgdGFyZ2V0IG5vZGUgYSBjaGFu
Y2UgdG8gZG8gc29tZSB3b3JrIGJlZm9yZSBET00gZXZlbnQgaGFuZGxlcnMgZ2V0IGEgY3JhY2su
CiAgICAgdm9pZCogZGF0YSA9IHByZURpc3BhdGNoRXZlbnRIYW5kbGVyKGV2ZW50LmdldCgpKTsK
QEAgLTI2ODUsNyArMjY4NSw3IEBAIGRvbmVEaXNwYXRjaGluZzoKIAogZG9uZVdpdGhEZWZhdWx0
OgogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50RGlkRGlzcGF0Y2hF
dmVudChkb2N1bWVudCgpLCBpbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudChkb2N1bWVudCgpLCBjb29raWUpOwogCiAg
ICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDYzMGI2YWEuLmQ2NjhkNWUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTM2LDE1ICszNiwx
MiBAQAogI2luY2x1ZGUgIkhUTUxTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJIVE1MVHJlZUJ1
aWxkZXIuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOZXN0aW5nTGV2ZWxJbmNyZW1lbnRlci5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUg
PHd0Zi9DdXJyZW50VGltZS5oPgogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJ
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjEwLDkgKzIwNywxMiBAQCB2b2lkIEhU
TUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcihTeW5jaHJvbm91c01vZGUgbW9kZSkKICAg
ICAvLyBBU1NFUlQgdGhhdCB0aGlzIG9iamVjdCBpcyBib3RoIGF0dGFjaGVkIHRvIHRoZSBEb2N1
bWVudCBhbmQgcHJvdGVjdGVkLgogICAgIEFTU0VSVChyZWZDb3VudCgpID49IDIpOwogCi0gICAg
Ly8gV2UgdGVsbCB0aGUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCBhYm91dCBldmVyeSBwdW1wLCBl
dmVuIGlmIHdlCisgICAgLy8gV2UgdGVsbCB0aGUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGFi
b3V0IGV2ZXJ5IHB1bXAsIGV2ZW4gaWYgd2UKICAgICAvLyBlbmQgdXAgcHVtcGluZyBub3RoaW5n
LiAgSXQgY2FuIGZpbHRlciBvdXQgZW1wdHkgcHVtcHMgaXRzZWxmLgotICAgIHdpbGxQdW1wTGV4
ZXIoKTsKKyAgICAvLyBGSVhNRTogbV9pbnB1dC5jdXJyZW50KCkubGVuZ3RoKCkgaXMgb25seSBh
Y2N1cmF0ZSBpZiB3ZQorICAgIC8vIGVuZCB1cCBwYXJzaW5nIHRoZSB3aG9sZSBidWZmZXIgaW4g
dGhpcyBwdW1wLiAgV2Ugc2hvdWxkIHBhc3MgaG93CisgICAgLy8gbXVjaCB3ZSBwYXJzZWQgYXMg
cGFydCBvZiBkaWRXcml0ZUhUTUwgaW5zdGVhZCBvZiB3aWxsV3JpdGVIVE1MLgorICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxXcml0ZUhUTUwoZG9jdW1lbnQoKSwgbV9pbnB1dC5jdXJyZW50KCkubGVuZ3RoKCks
IG1fdG9rZW5pemVyLT5saW5lTnVtYmVyKCkpOwogCiAgICAgSFRNTFBhcnNlclNjaGVkdWxlcjo6
UHVtcFNlc3Npb24gc2Vzc2lvbjsKICAgICAvLyBGSVhNRTogVGhpcyBsb29wIGJvZHkgaGFzIGlz
IG5vdyB0b28gbG9uZyBhbmQgbmVlZHMgY2xlYW51cC4KQEAgLTI1NiwyNiArMjU2LDcgQEAgdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUp
CiAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKTsKICAgICB9CiAKLSAgICBkaWRQdW1w
TGV4ZXIoKTsKLX0KLQotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OndpbGxQdW1wTGV4ZXIoKQot
ewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgLy8gRklYTUU6IG1faW5wdXQuY3VycmVudCgp
Lmxlbmd0aCgpIGlzIG9ubHkgYWNjdXJhdGUgaWYgd2UKLSAgICAvLyBlbmQgdXAgcGFyc2luZyB0
aGUgd2hvbGUgYnVmZmVyIGluIHRoaXMgcHVtcC4gIFdlIHNob3VsZCBwYXNzIGhvdwotICAgIC8v
IG11Y2ggd2UgcGFyc2VkIGFzIHBhcnQgb2YgZGlkV3JpdGVIVE1MIGluc3RlYWQgb2Ygd2lsbFdy
aXRlSFRNTC4KLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGRvY3VtZW50KCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVB
Z2VudC0+d2lsbFdyaXRlSFRNTChtX2lucHV0LmN1cnJlbnQoKS5sZW5ndGgoKSwgbV90b2tlbml6
ZXItPmxpbmVOdW1iZXIoKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OmRpZFB1bXBMZXhlcigpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGRvY3VtZW50KCktPmluc3BlY3RvclRp
bWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkV3JpdGVIVE1MKG1fdG9r
ZW5pemVyLT5saW5lTnVtYmVyKCkpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRXcml0ZUhUTUwoZG9jdW1lbnQoKSwgbV90b2tlbml6ZXItPmxpbmVOdW1iZXIoKSwg
Y29va2llKTsKIH0KIAogYm9vbCBIVE1MRG9jdW1lbnRQYXJzZXI6Omhhc0luc2VydGlvblBvaW50
KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmgg
Yi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGU2NWE1ODIu
LmQ5NjI1ZjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmgKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApAQCAt
MTAzLDkgKzEwMyw2IEBAIHByaXZhdGU6CiAgICAgLy8gQ2FjaGVkUmVzb3VyY2VDbGllbnQKICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAotICAgIHZv
aWQgd2lsbFB1bXBMZXhlcigpOwotICAgIHZvaWQgZGlkUHVtcExleGVyKCk7Ci0KICAgICBlbnVt
IFN5bmNocm9ub3VzTW9kZSB7CiAgICAgICAgIEFsbG93WWllbGQsCiAgICAgICAgIEZvcmNlU3lu
Y2hyb25vdXMsCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAppbmRleCBmYjU3NjhhLi5lNzQ0YzVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJJ
bnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCisjaW5jbHVkZSAiWE1MSHR0cFJl
cXVlc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NCw4ICs2NSw2IEBAIHN0YXRp
YyBib29sIGV2ZW50SGFzTGlzdGVuZXJzKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBE
T01XaW5kb3cqIHdpbmRvdywKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5z
ZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwg
Tm9kZSogbm9kZSwgTm9kZSogcGFyZW50KQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQotICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAg
ICAgcmV0dXJuOwogICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCk7CiAgICAgaWYgKCFkZWJ1
Z2dlckFnZW50KQogICAgICAgICByZXR1cm47CkBAIC04MCw4ICs3OSw2IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSW5zZXJ0RE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnNlcnRE
T01Ob2RlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBOb2Rl
KiBub2RlKQogewotICAgIGlmICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkK
LSAgICAgICAgcmV0dXJuOwogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBp
bnNwZWN0b3JDb250cm9sbGVyLT5tX2RvbUFnZW50LmdldCgpKQogICAgICAgICBkb21BZ2VudC0+
ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKIH0KQEAgLTg5LDggKzg2LDYgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGVJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3QKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9N
Tm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgTm9kZSog
bm9kZSkKIHsKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLSAgICBpZiAoIWluc3Bl
Y3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybjsKICAgICBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+
bV9kZWJ1Z2dlckFnZW50LmdldCgpOwogICAgIGlmICghZGVidWdnZXJBZ2VudCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTA1LDggKzEwMCw2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjCiAKIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01Ob2RlSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBOb2RlKiBub2RlKQogewotICAgIGlm
ICghaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVy
LT5tX2RvbUFnZW50LmdldCgpKQogICAgICAgICBkb21BZ2VudC0+ZGlkUmVtb3ZlRE9NTm9kZShu
b2RlKTsKIH0KQEAgLTExNCw4ICsxMDcsNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVtb3ZlRE9NTm9kZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdAogdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxNb2RpZnlET01BdHRySW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBFbGVtZW50KiBlbGVtZW50KQogewog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGlmICghaW5zcGVjdG9yQ29udHJv
bGxlci0+aGFzRnJvbnRlbmQoKSkKLSAgICAgICAgcmV0dXJuOwogICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2Vy
QWdlbnQuZ2V0KCk7CiAgICAgaWYgKCFkZWJ1Z2dlckFnZW50KQogICAgICAgICByZXR1cm47CkBA
IC0xMzAsMjcgKzEyMSw4NiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbE1v
ZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlYwogCiB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0ckltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBpZiAo
IWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybjsKICAg
ICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+
bV9kb21BZ2VudC5nZXQoKSkKICAgICAgICAgZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxl
bWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjaGFyYWN0ZXJEYXRh
TW9kaWZpZWRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIENo
YXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEpCiB7Ci0gICAgaWYgKCFpbnNwZWN0b3JDb250cm9s
bGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICByZXR1cm47CiAgICAgaWYgKEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZG9tQWdlbnQuZ2V0KCkp
CiAgICAgICAgIGRvbUFnZW50LT5jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoY2hhcmFjdGVyRGF0YSk7
CiB9CiAKLWludCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsRGlzcGF0
Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29u
c3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVj
dG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCisKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyNpZiBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBk
ZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50LmdldCgp
OworICAgIGlmICghZGVidWdnZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFp
bnNwZWN0b3JDb250cm9sbGVyLT5zaG91bGRCcmVha09uWE1MSHR0cFJlcXVlc3QodXJsKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0g
SW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygidHlw
ZSIsICJYSFIiKTsKKyAgICBldmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKKyAgICBk
ZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRU
eXBlLCBldmVudERhdGEpOworI2VuZGlmCit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQo
aW5zcGVjdG9yQ29udHJvbGxlcikpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFNjaGVkdWxl
UmVzb3VyY2VSZXF1ZXN0KHVybCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRJbnN0YWxsVGltZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIsIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KQoreworICAg
IGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1l
bGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRJbnN0YWxsVGltZXIodGltZXJJZCwgdGltZW91dCwgc2luZ2xlU2hvdCk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lckltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgaW50IHRpbWVySWQpCit7CisgICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdl
bnQoaW5zcGVjdG9yQ29udHJvbGxlcikpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlbW92
ZVRpbWVyKHRpbWVySWQpOworfQorCisKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb25JbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwg
aW50IHNjcmlwdExpbmUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcikpIHsK
KyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbENhbGxGdW5jdGlvbihzY3JpcHROYW1lLCBzY3Jp
cHRMaW5lKTsKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAg
IHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1
bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQogewotICAgIGludCBpbnN0cnVtZW50
YXRpb25Db29raWUgPSAwOworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tp
ZSkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENhbGxGdW5jdGlvbigpOworfQogCi0gICAg
aWYgKCFpbnNwZWN0b3JDb250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICByZXR1cm4g
aW5zdHJ1bWVudGF0aW9uQ29va2llOworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFhNTEh0dHBSZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRy
aWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgaWYgKHRpbWVsaW5l
QWdlbnQgJiYgcmVxdWVzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnJlYWR5c3Rh
dGVjaGFuZ2VFdmVudCkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbENoYW5nZVhIUlJl
YWR5U3RhdGUocmVxdWVzdC0+dXJsKCkuc3RyaW5nKCksIHJlcXVlc3QtPnJlYWR5U3RhdGUoKSk7
CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICByZXR1cm4g
MDsKK30KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5
U3RhdGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVj
dG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkQ2hhbmdl
WEhSUmVhZHlTdGF0ZSgpOworfQorCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5k
b3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2Rl
PiA+JiBhbmNlc3RvcnMpCit7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAg
aWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250
cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0KCkpIHsKICAgICAgICAgaWYgKGluc3BlY3RvckNv
bnRyb2xsZXItPnNob3VsZEJyZWFrT25FdmVudChldmVudC50eXBlKCkpKSB7CkBAIC0xNjIsNDcg
KzIxMiwxOTQgQEAgaW50IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxE
aXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JDb250cm9sbGUKICAgICB9CiAjZW5kaWYKIAotICAg
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JDb250cm9s
bGVyLT5tX3RpbWVsaW5lQWdlbnQuZ2V0KCk7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVy
KTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiBldmVudEhhc0xpc3RlbmVycyhldmVudC50eXBl
KCksIHdpbmRvdywgbm9kZSwgYW5jZXN0b3JzKSkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53
aWxsRGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgICAgIGluc3RydW1lbnRhdGlvbkNvb2tpZSA9
IHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgp
OwogICAgIH0KLSAgICByZXR1cm4gaW5zdHJ1bWVudGF0aW9uQ29va2llOworICAgIHJldHVybiAw
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudERpZERpc3Bh
dGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGlu
dCBpbnN0cnVtZW50YXRpb25Db29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKIHsKLSAgICBpZiAo
IWluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250ZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIGlmIChJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFn
ZW50LmdldCgpKQogICAgICAgICBkZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZU9uTmV4dFN0YXRl
bWVudCgpOwogI2VuZGlmCiAKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGluZUFnZW50LmdldCgpOwotICAgIGlm
ICh0aW1lbGluZUFnZW50ICYmIHRpbWVsaW5lQWdlbnQtPmlkKCkgPT0gaW5zdHJ1bWVudGF0aW9u
Q29va2llKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcmIHVy
bCkKK0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cp
CiB7Ci0jaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKCFpbnNwZWN0b3JD
b250cm9sbGVyLT5oYXNGcm9udGVuZCgpKQotICAgICAgICByZXR1cm47CisgICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNw
ZWN0b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCAmJiB3aW5kb3ctPmhhc0V2
ZW50TGlzdGVuZXJzKGV2ZW50LnR5cGUoKSkpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bERpc3BhdGNoRXZlbnQoZXZlbnQpOworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQo
KTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KiBkZWJ1Z2dlckFnZW50ID0gaW5zcGVjdG9yQ29udHJvbGxlci0+bV9kZWJ1Z2dlckFnZW50Lmdl
dCgpOwotICAgIGlmICghZGVidWdnZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuOwordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBj
b29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KCk7Cit9CiAK
LSAgICBpZiAoIWluc3BlY3RvckNvbnRyb2xsZXItPnNob3VsZEJyZWFrT25YTUxIdHRwUmVxdWVz
dCh1cmwpKQotICAgICAgICByZXR1cm47CitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQg
bGluZU51bWJlcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkgeworICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsRXZhbHVhdGVTY3JpcHQodXJsLCBsaW5lTnVtYmVyKTsK
KyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJldHVybiAw
OworfQogCi0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygidHlwZSIsICJYSFIi
KTsKLSAgICBldmVudERhdGEtPnNldFN0cmluZygidXJsIiwgdXJsKTsKLSAgICBkZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVu
dERhdGEpOwotI2VuZGlmCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVh
dGVTY3JpcHRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZh
bHVhdGVTY3JpcHQoKTsKK30KKworSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgaW50IHRpbWVySWQpCit7CisgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlcikpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVUaW1l
cih0aW1lcklkKTsKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgfQor
ICAgIHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmly
ZVRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoreworICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVU
aW1lcigpOworfQorCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7Cisg
ICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxMYXlvdXQoKTsKKyAgICAgICAgcmV0dXJuIHRpbWVs
aW5lQWdlbnQtPmlkKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQor
eworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgICAgIHRp
bWVsaW5lQWdlbnQtPmRpZExheW91dCgpOworfQorCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3Qp
Cit7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZl
VGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2Vu
dCAmJiByZXF1ZXN0LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkubG9hZEV2ZW50KSkg
eworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTG9hZFhIUihyZXF1ZXN0LT51cmwoKS5zdHJp
bmcoKSk7CisgICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgIH0KKyAgICBy
ZXR1cm4gMDsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29u
dHJvbGxlciwgY29va2llKSkKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkTG9hZFhIUigpOwor
fQorCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsUGFpbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJv
bGxlcikpIHsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KHJlY3QpOworICAgICAg
ICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludEltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUp
KQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRQYWludCgpOworfQorCitJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK3sK
KyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZl
VGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkgeworICAgICAgICB0aW1lbGluZUFn
ZW50LT53aWxsUmVjYWxjdWxhdGVTdHlsZSgpOworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2Vu
dC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0
cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgICAg
IHRpbWVsaW5lQWdlbnQtPmRpZFJlY2FsY3VsYXRlU3R5bGUoKTsKK30KKworSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVS
ZXNvdXJjZURhdGFJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250
cm9sbGVyKSkgeworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlRGF0
YShpZGVudGlmaWVyKTsKKyAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAg
fQorICAgIHJldHVybiAwOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxp
bmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFn
ZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VEYXRhKCk7Cit9CisKK0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgdW5z
aWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJp
ZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkgeworICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2Up
OworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3Vy
Y2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyAgICBpZiAoSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChp
bnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZSgpOworfQorCitJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1
bnNpZ25lZCBpbnQgc3RhcnRMaW5lKQoreworICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xs
ZXIpKSB7CisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxXcml0ZUhUTUwobGVuZ3RoLCBzdGFy
dExpbmUpOworICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhU
TUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVk
IGludCBlbmRMaW5lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQorewor
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVU
aW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZFdyaXRlSFRNTChlbmRMaW5lKTsKK30KKworCitib29sIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlcikKK3sKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRl
bmQoKTsKK30KKworSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpyZXRyaWV2ZVRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlcikKK3sKKyAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlci0+bV90aW1lbGlu
ZUFnZW50LmdldCgpOworfQorCitJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KQoreworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2
ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgaWYgKHRpbWVsaW5lQWdl
bnQgJiYgdGltZWxpbmVBZ2VudC0+aWQoKSA9PSBjb29raWUpCisgICAgICAgIHJldHVybiB0aW1l
bGluZUFnZW50OworICAgIHJldHVybiAwOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDViNjZh
MmUuLjA3MjEwMWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bl9oCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIApAQCAtNDAs
NyArNDEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2hhcmFjdGVyRGF0YTsKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOworY2xhc3MgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDsKIGNsYXNzIE5vZGU7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFz
cyBSZXNvdXJjZVJlc3BvbnNlOworY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CisKK3R5cGVkZWYgaW50
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZTsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uIHsKIHB1YmxpYzoKQEAgLTUxLDE1ICs1OCw0NCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihEb2N1bWVudCosIEVsZW1lbnQqKTsKICAgICBzdGF0
aWMgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZpZWQoRG9jdW1lbnQqLCBDaGFyYWN0ZXJEYXRhKik7
CiAKLSAgICBzdGF0aWMgaW50IGluc3RydW1lbnRXaWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCos
IGNvbnN0IEV2ZW50JiwgRE9NV2luZG93KiwgTm9kZSosIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29u
dGFpbmVyTm9kZT4gPiYgYW5jZXN0b3JzKTsKLSAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50RGlk
RGlzcGF0Y2hFdmVudChEb2N1bWVudCosIGludCBpbnN0cnVtZW50YXRpb25Db29raWUpOworICAg
IHN0YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVJlc291
cmNlUmVxdWVzdChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRJbnN0YWxsVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCB0aW1lcklkLCBp
bnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVU
aW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgaW50IHRpbWVySWQpOwogCi0gICAgc3RhdGlj
IHZvaWQgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbENhbGxGdW5jdGlvbihGcmFtZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFt
ZSwgaW50IHNjcmlwdExpbmUpOworICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihGcmFt
ZSosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENoYW5nZVhIUlJlYWR5U3RhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiwgY29u
c3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwgY29uc3QgVmVj
dG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpOworICAgIHN0YXRpYyB2b2lk
IGRpZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxEaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdp
bmRvdyogd2luZG93KTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3co
RnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdChGcmFt
ZSosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CisgICAgc3RhdGljIHZvaWQg
ZGlkRXZhbHVhdGVTY3JpcHQoRnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxG
aXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCB0aW1lcklkKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbExheW91dChGcmFtZSopOworICAgIHN0YXRpYyB2b2lkIGRpZExh
eW91dChGcmFtZSosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbExvYWRYSFIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxQYWludChGcmFtZSosIGNvbnN0IEludFJlY3QmIHJlY3QpOworICAgIHN0
YXRpYyB2b2lkIGRpZFBhaW50KEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
UmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3Vs
YXRlU3R5bGUoRG9jdW1lbnQqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZl
UmVzb3VyY2VEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUqLCB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSosIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgd2lsbFdyaXRlSFRNTChEb2N1bWVudCosIHVuc2lnbmVkIGludCBsZW5ndGgs
IHVuc2lnbmVkIGludCBzdGFydExpbmUpOworICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRNTChE
b2N1bWVudCosIHVuc2lnbmVkIGludCBlbmRMaW5lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3RhdGljIHZvaWQg
ZnJvbnRlbmRDcmVhdGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CiAgICAgc3RhdGlj
IHZvaWQgZnJvbnRlbmREZWxldGVkKCkgeyBzX2Zyb250ZW5kQ291bnRlciAtPSAxOyB9CiAgICAg
c3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyByZXR1cm4gc19mcm9udGVuZENvdW50ZXI7IH0K
KyNlbHNlCisgICAgc3RhdGljIGJvb2wgaGFzRnJvbnRlbmRzKCkgeyByZXR1cm4gZmFsc2U7IH0K
ICNlbmRpZgogCiBwcml2YXRlOgpAQCAtNzIsMTUgKzEwOCw0NyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGRpZE1vZGlmeURPTUF0dHJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBFbGVt
ZW50Kik7CiAgICAgc3RhdGljIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbChJbnNwZWN0
b3JDb250cm9sbGVyKiwgQ2hhcmFjdGVyRGF0YSopOwogCi0gICAgc3RhdGljIGludCBpbnN0cnVt
ZW50V2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVu
dCYsIERPTVdpbmRvdyosIE5vZGUqLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+
ID4mIGFuY2VzdG9ycyk7Ci0gICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudERpZERpc3BhdGNoRXZl
bnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBpbnQgaW5zdHJ1bWVudGF0aW9uQ29va2llKTsK
KyAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVkdWxl
UmVzb3VyY2VSZXF1ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB1
cmwpOworICAgIHN0YXRpYyB2b2lkIGRpZEluc3RhbGxUaW1lckltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciosIGludCB0aW1lcklkLCBpbnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZW1vdmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGludCB0
aW1lcklkKTsKIAotICAgIHN0YXRpYyB2b2lkIGluc3RydW1lbnRXaWxsU2VuZFhNTEh0dHBSZXF1
ZXN0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGlu
ZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOworICAgIHN0YXRpYyB2
b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25z
dCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5vZGU+ID4mIGFuY2VzdG9ycyk7CisgICAgc3RhdGlj
IHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdyk7CisgICAgc3RhdGlj
IHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zcGVjdG9yQ29udHJv
bGxlciosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CisgICAgc3RhdGljIHZv
aWQgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGludCB0aW1l
cklkKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbExheW91dEltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciopOworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlcios
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTG9hZFhIUkltcGwoSW5zcGVjdG9yQ29udHJvbGxlcios
IFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkWEhSSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsK
KyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxQYWludEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEludFJlY3QmIHJlY3QpOworICAgIHN0YXRpYyB2
b2lkIGRpZFBhaW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgc3Rh
dGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNvbnRyb2xs
ZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7Cisg
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50
IHN0YXJ0TGluZSk7CisgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgdW5zaWduZWQgaW50IGVuZExpbmUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSk7CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OworICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9y
Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCopOworICAg
IHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUo
RnJhbWUqKTsKICAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlckZvclBhZ2UoUGFnZSopOwogCisgICAgc3RhdGljIGJvb2wgaGFzRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopOworICAgIHN0YXRpYyBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiByZXRy
aWV2ZVRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHN0YXRpYyBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yQ29udHJv
bGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisKICAgICBzdGF0aWMgaW50
IHNfZnJvbnRlbmRDb3VudGVyOwogI2VuZGlmCiB9OwpAQCAtMTM1LDMzICsyMDMsMjY0IEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVk
KERvY3VtZW50KiBkb2N1bWVudCwKICNlbmRpZgogfQogCi1pbmxpbmUgaW50IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6aW5zdHJ1bWVudFdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50KiBkb2N1
bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9kZSogbm9kZSwg
Y29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMpCisKK2lubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCkKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCisg
ICAgICAgIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHVy
bCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmlu
ZyYgdXJsKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1l
bnQoZG9jdW1lbnQpKQorICAgICAgICBkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdEltcGwoaW5z
cGVjdG9yQ29udHJvbGxlciwgdXJsKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEluc3RhbGxUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBpbnQgdGltZXJJZCwgaW50IHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCkKK3sK
KyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkp
CisgICAgICAgIGRpZEluc3RhbGxUaW1lckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZXJJ
ZCwgdGltZW91dCwgc2luZ2xlU2hvdCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBpbnQgdGltZXJJZCkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29u
dHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRpZFJlbW92ZVRpbWVySW1wbChp
bnNwZWN0b3JDb250cm9sbGVyLCB0aW1lcklkKTsKKyNlbmRpZgorfQorCisKK2lubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
Q2FsbEZ1bmN0aW9uKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQg
c2NyaXB0TGluZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZy
YW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuIHdpbGxDYWxsRnVuY3Rpb25JbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIHNjcmlwdE5hbWUsIHNjcmlwdExpbmUpOworI2VuZGlmCisgICAgcmV0dXJu
IDA7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1
bmN0aW9uKEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVy
KiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1l
KSkKKyAgICAgICAgZGlkQ2FsbEZ1bmN0aW9uSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29r
aWUpOworI2VuZGlmCit9CisKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCkKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCisg
ICAgICAgIHJldHVybiB3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoaW5zcGVjdG9yQ29udHJv
bGxlciwgcmVxdWVzdCk7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBj
b29raWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0
KGNvbnRleHQpKQorICAgICAgICBkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChpbnNwZWN0b3JD
b250cm9sbGVyLCBjb29raWUpOworI2VuZGlmCit9CisKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVu
dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5k
b3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5j
ZXN0b3JzKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1l
bnQoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4gaW5zdHJ1bWVudFdpbGxEaXNwYXRjaEV2ZW50
SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBldmVudCwgd2luZG93LCBub2RlLCBhbmNlc3RvcnMp
OworICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNoRXZlbnRJbXBsKGluc3BlY3RvckNvbnRyb2xs
ZXIsIGV2ZW50LCB3aW5kb3csIG5vZGUsIGFuY2VzdG9ycyk7CiAjZW5kaWYKICAgICByZXR1cm4g
MDsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50
RGlkRGlzcGF0Y2hFdmVudChEb2N1bWVudCogZG9jdW1lbnQsIGludCBpbnN0cnVtZW50YXRpb25D
b29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNo
RXZlbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1l
bnQoZG9jdW1lbnQpKQotICAgICAgICBpbnN0cnVtZW50RGlkRGlzcGF0Y2hFdmVudEltcGwoaW5z
cGVjdG9yQ29udHJvbGxlciwgaW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICAgICAgZGlkRGlz
cGF0Y2hFdmVudEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKICNlbmRpZgogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRXaWxsU2Vu
ZFhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdXJsKQoraW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqIGZyYW1l
LCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93KQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0
KSkKLSAgICAgICAgaW5zdHJ1bWVudFdpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIHVybCk7CisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAg
ICByZXR1cm4gd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgZXZlbnQsIHdpbmRvdyk7CiAjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KIAoraW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50T25XaW5kb3coRnJh
bWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQorewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi1pbmxpbmUgSW5zcGVjdG9yQ29udHJvbGxlciogSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjppbnNwZWN0b3JDb250cm9sbGVyRm9yU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZy
YW1lKGZyYW1lKSkKKyAgICAgICAgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChpbnNwZWN0
b3JDb250cm9sbGVyLCBjb29raWUpOworI2VuZGlmCit9CisKK2lubGluZSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVT
Y3JpcHQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpCit7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisg
ICAgICAgIHJldHVybiB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIs
IHVybCwgbGluZU51bWJlcik7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChGcmFtZSogZnJh
bWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZEV2
YWx1YXRlU2NyaXB0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOworI2VuZGlmCit9
CisKK2lubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGludCB0aW1lcklkKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9y
Q29udGV4dChjb250ZXh0KSkKKyAgICAgICAgcmV0dXJuIHdpbGxGaXJlVGltZXJJbXBsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsIHRpbWVySWQpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBj
b29raWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0
KGNvbnRleHQpKQorICAgICAgICBkaWRGaXJlVGltZXJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIs
IGNvb2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUqIGZyYW1lKQor
eworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQor
ICAgICAgICByZXR1cm4gd2lsbExheW91dEltcGwoaW5zcGVjdG9yQ29udHJvbGxlcik7CisjZW5k
aWYKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRMYXlvdXQoRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJh
bWUoZnJhbWUpKQorICAgICAgICBkaWRMYXlvdXRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNv
b2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KQoreworI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgcmV0
dXJuIHdpbGxMb2FkWEhSSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCByZXF1ZXN0KTsKKyNlbmRp
ZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVj
dG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRpZExvYWRYSFJJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQ
YWludChGcmFtZSogZnJhbWUsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisjaWYgRU5BQkxFKElO
U1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiB3
aWxsUGFpbnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlY3QpOworI2VuZGlmCisgICAgcmV0
dXJuIDA7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFp
bnQoRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQor
eworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQor
ICAgICAgICBkaWRQYWludEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyNlbmRp
ZgorfQorCitpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGUoRG9jdW1lbnQqIGRvY3VtZW50KQor
eworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1l
bnQpKQorICAgICAgICByZXR1cm4gd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKGluc3BlY3RvckNv
bnRyb2xsZXIpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCogZG9jdW1l
bnQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAg
IGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7Cisj
ZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICByZXR1cm4gd2lsbFJlY2VpdmVSZXNv
dXJjZURhdGFJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZpZXIpOworI2VuZGlmCisg
ICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZVJlc291cmNlRGF0YShGcmFtZSogZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSBjb29raWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xs
ZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKGlu
c3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9
IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybiB3aWxs
UmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGlkZW50aWZp
ZXIsIHJlc3BvbnNlKTsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1l
KiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3sKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tp
ZSk7CisjZW5kaWYKK30KKworaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwoRG9jdW1lbnQqIGRvY3VtZW50
LCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKQoreworI2lmIEVO
QUJMRShJTlNQRUNUT1IpCisgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAg
ICAgICByZXR1cm4gd2lsbFdyaXRlSFRNTEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgbGVuZ3Ro
LCBzdGFydExpbmUpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKERvY3VtZW50KiBkb2N1bWVudCwg
dW5zaWduZWQgaW50IGVuZExpbmUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChk
b2N1bWVudCkpCisgICAgICAgIGRpZFdyaXRlSFRNTEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwg
ZW5kTGluZSwgY29va2llKTsKKyNlbmRpZgorfQorCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQor
aW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5z
cGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKIHsKICAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29udGV4dCAmJiBjb250ZXh0LT5pc0Rv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyRm9yUGFnZShzdGF0
aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5wYWdlKCkpOwpAQCAtMTcwLDE0ICs0NjksMjcg
QEAgaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
aW5zcGVjdG9yQ29udHJvbGxlckZvclNjcmkKIAogaW5saW5lIEluc3BlY3RvckNvbnRyb2xsZXIq
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50
KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBpZiAoaGFzRnJvbnRlbmRzKCkpCisgICAgaWYg
KGhhc0Zyb250ZW5kcygpICYmIGRvY3VtZW50KQogICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29u
dHJvbGxlckZvclBhZ2UoZG9jdW1lbnQtPnBhZ2UoKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK2lu
bGluZSBJbnNwZWN0b3JDb250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Bl
Y3RvckNvbnRyb2xsZXJGb3JGcmFtZShGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKGhhc0Zyb250
ZW5kcygpICYmIGZyYW1lKQorICAgICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlckZvclBh
Z2UoZnJhbWUtPnBhZ2UoKSk7CisgICAgcmV0dXJuIDA7Cit9CisKIGlubGluZSBJbnNwZWN0b3JD
b250cm9sbGVyKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3BlY3RvckNvbnRyb2xsZXJG
b3JQYWdlKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHBhZ2UgPyBwYWdlLT5pbnNwZWN0b3JD
b250cm9sbGVyKCkgOiAwOworICAgIGlmIChwYWdlKSB7CisgICAgICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpKSB7CisgICAgICAgICAgICBpZiAoaGFzRnJvbnRlbmQoaW5zcGVjdG9yQ29udHJvbGxlcikp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXI7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCAxZGQ4NmFkLi42NDViNjkyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDQsMTQgKzQ0
LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW50IEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnNfaW5zdGFuY2VDb3VudCA9IDA7CiBpbnQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6c19p
ZCA9IDA7CiAKIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQo
SW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKQogICAgIDogbV9mcm9udGVuZChmcm9udGVuZCkK
ICAgICAsIG1faWQoKytzX2lkKQogewotICAgICsrc19pbnN0YW5jZUNvdW50OwogICAgIFNjcmlw
dEdDRXZlbnQ6OmFkZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmQp
OwogfQpAQCAtNzgsOCArNzYsNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEdD
KGRvdWJsZSBzdGFydFRpbWUsIGRvdWJsZSBlbmRUaW1lLCBzaXplX3QgY29sbAogCiBJbnNwZWN0
b3JUaW1lbGluZUFnZW50Ojp+SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpCiB7Ci0gICAgQVNTRVJU
KHNfaW5zdGFuY2VDb3VudCk7Ci0gICAgLS1zX2luc3RhbmNlQ291bnQ7CiAgICAgU2NyaXB0R0NF
dmVudDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcih0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDk5NjlhMTQuLmJjMWUwMjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTMzLDkgKzMzLDcgQEAK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclZhbHVlcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTY3JpcHRHQ0V2ZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0R0NFdmVudExp
c3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTMwLDkgKzEyOCw2IEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgdmlydHVhbCB2b2lkIGRpZEdDKGRvdWJsZSwgZG91YmxlLCBz
aXplX3QpOwogCi0gICAgc3RhdGljIGludCBpbnN0YW5jZUNvdW50KCkgeyByZXR1cm4gc19pbnN0
YW5jZUNvdW50OyB9Ci0gICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLQogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVGltZWxp
bmVSZWNvcmRFbnRyeSB7CiAgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkoUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IHJlY29yZCwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEs
IFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGNoaWxkcmVuLCBUaW1lbGluZVJlY29yZFR5cGUg
dHlwZSkKQEAgLTE1Nyw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckZyb250ZW5k
KiBtX2Zyb250ZW5kOwogCiAgICAgVmVjdG9yPFRpbWVsaW5lUmVjb3JkRW50cnk+IG1fcmVjb3Jk
U3RhY2s7Ci0gICAgc3RhdGljIGludCBzX2luc3RhbmNlQ291bnQ7CisKICAgICBzdGF0aWMgaW50
IHNfaWQ7CiAgICAgY29uc3QgaW50IG1faWQ7CiAgICAgc3RydWN0IEdDRXZlbnQgewpAQCAtMTcz
LDEzICsxNjgsNiBAQCBwcml2YXRlOgogICAgIEdDRXZlbnRzIG1fZ2NFdmVudHM7CiB9OwogCi1p
bmxpbmUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmV0
cmlldmUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKLXsKLSAgICBpZiAoY29udGV4
dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KGNvbnRleHQpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vICFFTkFCTEUoSU5T
UEVDVE9SKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDQ5MGJjMzAuLjU0OTZkOWUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTM2LDggKzM2LDcgQEAKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtNDAxLDQ0ICs0MDAsMjAgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEoUmVzb3VyY2VIYW5kbGUqLCB1bnNpZ25lZCBsb25n
IGxvbmcgYnl0ZXNTZW50LAogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoUmVzb3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
LSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpp
bnN0YW5jZUNvdW50KCkpIHsKLSAgICAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkgPyBtX2ZyYW1lLT5wYWdlKCkt
Pmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDA7Ci0gICAgICAgIGlmICh0aW1lbGluZUFnZW50
KQotICAgICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
KGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwotICAgIH0KLSNlbmRpZgorICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLmdldCgpLCBpZGVudGlmaWVyKCksIHJl
c3BvbnNlKTsKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIGlmIChk
b2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFj
a0ZvclJlc3BvbnNlKHRoaXMsIHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAg
ICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnN0YW5jZUNvdW50KCkpIHsKLSAgICAg
ICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IChtX2ZyYW1lICYmIG1f
ZnJhbWUtPnBhZ2UoKSkgPyBtX2ZyYW1lLT5wYWdlKCktPmluc3BlY3RvclRpbWVsaW5lQWdlbnQo
KSA6IDA7Ci0gICAgICAgIGlmICh0aW1lbGluZUFnZW50KQotICAgICAgICAgICAgdGltZWxpbmVB
Z2VudC0+ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoKTsKLSAgICB9Ci0jZW5kaWYKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJh
bWUuZ2V0KCksIGNvb2tpZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKFJlc291cmNlSGFuZGxlKiwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgaW50IGxl
bmd0aFJlY2VpdmVkKQogewotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6Omluc3RhbmNlQ291bnQoKSkgewotICAgICAgICBJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpKSA/
IG1fZnJhbWUtPnBhZ2UoKS0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMDsKLSAgICAgICAg
aWYgKHRpbWVsaW5lQWdlbnQpCi0gICAgICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2
ZVJlc291cmNlRGF0YShpZGVudGlmaWVyKCkpOwotICAgIH0KLSNlbmRpZgorICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKG1fZnJhbWUuZ2V0KCksIGlkZW50aWZpZXIoKSk7CiAg
ICAgZGlkUmVjZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBsZW5ndGhSZWNlaXZlZCwgZmFsc2UpOwot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omlu
c3RhbmNlQ291bnQoKSkgewotICAgICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpKSA/IG1fZnJhbWUtPnBhZ2UoKS0+
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpIDogMDsKLSAgICAgICAgaWYgKHRpbWVsaW5lQWdlbnQp
Ci0gICAgICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VEYXRhKCk7Ci0g
ICAgfQotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVz
b3VyY2VEYXRhKG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3VibGUgZmluaXNoVGltZSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9s
b2FkZXIuY3BwCmluZGV4IDNmNmZhZDIuLjhmMjYyZTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9h
ZGVyL2xvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcApAQCAtMjgsNyAr
MjgsNyBAQAogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3Vy
Y2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgotI2luY2x1ZGUgIkluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiSFRNTERvY3VtZW50LmgiCkBAIC0xNDksMTMgKzE0OSw3IEBAIHZvaWQgTG9hZGVyOjpsb2Fk
KENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3Vy
Y2UqIHJlCiAgICAgICAgIGhvc3QtPnNlcnZlUGVuZGluZ1JlcXVlc3RzKHByaW9yaXR5KTsKICAg
ICB9IGVsc2UgewogICAgICAgICAvLyBIYW5kbGUgYXN5bmNocm9ub3VzbHkgc28gZWFybHkgbG93
IHByaW9yaXR5IHJlcXVlc3RzIGRvbid0IGdldCBzY2hlZHVsZWQgYmVmb3JlIGxhdGVyIGhpZ2gg
cHJpb3JpdHkgb25lcwotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlmIChJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnN0YW5jZUNvdW50KCkpIHsKLSAgICAgICAgICAgIEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIGFnZW50ID0gY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvYygpLT5pbnNw
ZWN0b3JUaW1lbGluZUFnZW50KCk7Ci0gICAgICAgICAgICBpZiAoYWdlbnQpCi0gICAgICAgICAg
ICAgICAgYWdlbnQtPmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KHJlc291cmNlLT51cmwoKSk7
Ci0gICAgICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGNhY2hlZFJlc291
cmNlTG9hZGVyLT5kb2MoKSwgcmVzb3VyY2UtPnVybCgpKTsKICAgICAgICAgc2NoZWR1bGVTZXJ2
ZVBlbmRpbmdSZXF1ZXN0cygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9E
T01UaW1lci5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IDNhYzZkMTUuLjE0
MDJkZGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtMjcsNyArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
U2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC04MSwxMCArODEsNyBAQCBpbnQgRE9NVGltZXI6
Omluc3RhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc093blB0cjxTY2hl
ZHVsZWRBY3RpbwogICAgIC8vIG9yIGlmIGl0IGlzIGEgb25lLXRpbWUgdGltZXIgYW5kIGl0IGhh
cyBmaXJlZCAoRE9NVGltZXI6OmZpcmVkKS4KICAgICBET01UaW1lciogdGltZXIgPSBuZXcgRE9N
VGltZXIoY29udGV4dCwgYWN0aW9uLCB0aW1lb3V0LCBzaW5nbGVTaG90KTsKIAotI2lmIEVOQUJM
RShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXRyaWV2ZShjb250ZXh0KSkKLSAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkSW5zdGFsbFRpbWVyKHRpbWVyLT5tX3RpbWVvdXRJZCwgdGltZW91
dCwgc2luZ2xlU2hvdCk7Ci0jZW5kaWYgICAgCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRJbnN0YWxsVGltZXIoY29udGV4dCwgdGltZXItPm1fdGltZW91dElkLCB0aW1lb3V0LCBz
aW5nbGVTaG90KTsKIAogICAgIHJldHVybiB0aW1lci0+bV90aW1lb3V0SWQ7CiB9CkBAIC05Nywx
MCArOTQsNyBAQCB2b2lkIERPTVRpbWVyOjpyZW1vdmVCeUlkKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGludCB0aW1lb3V0SWQpCiAgICAgaWYgKHRpbWVvdXRJZCA8PSAwKQogICAg
ICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmV0
cmlldmUoY29udGV4dCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlbW92ZVRpbWVyKHRp
bWVvdXRJZCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92
ZVRpbWVyKGNvbnRleHQsIHRpbWVvdXRJZCk7CiAKICAgICBkZWxldGUgY29udGV4dC0+ZmluZFRp
bWVvdXQodGltZW91dElkKTsKIH0KQEAgLTExMCwxMCArMTA0LDcgQEAgdm9pZCBET01UaW1lcjo6
ZmlyZWQoKQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSBtX25lc3RpbmdMZXZlbDsK
IAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXRyaWV2ZShjb250ZXh0
KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVUaW1lcihtX3RpbWVvdXRJZCk7Ci0j
ZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkKTsK
IAogICAgIC8vIFNpbXBsZSBjYXNlIGZvciBub24tb25lLXNob3QgdGltZXJzLgogICAgIGlmIChp
c0FjdGl2ZSgpKSB7CkBAIC0xMjUsMTAgKzExNiw5IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkK
IAogICAgICAgICAvLyBObyBhY2Nlc3MgdG8gbWVtYmVyIHZhcmlhYmxlcyBhZnRlciB0aGlzIHBv
aW50LCBpdCBjYW4gZGVsZXRlIHRoZSB0aW1lci4KICAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUo
Y29udGV4dCk7Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICAgICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXRy
aWV2ZShjb250ZXh0KSkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVUaW1lcigp
OwotI2VuZGlmCisKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGlt
ZXIoY29udGV4dCwgY29va2llKTsKKwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNDAs
MTAgKzEzMCw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogICAgIGFjdGlvbi0+ZXhlY3V0
ZShjb250ZXh0KTsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpyZXRy
aWV2ZShjb250ZXh0KSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZVRpbWVyKCk7Ci0j
ZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0
LCBjb29raWUpOwogCiAgICAgdGltZXJOZXN0aW5nTGV2ZWwgPSAwOwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wYWdlL0RPTVRpbWVyLmggYi9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAppbmRleCBj
MWQ4ZDllLi40ZmM2YWFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaAorKysg
Yi9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuaApAQCAtMzQsOCArMzQsNiBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLSAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwotCiAgICAgY2xh
c3MgRE9NVGltZXIgOiBwdWJsaWMgU3VzcGVuZGFibGVUaW1lciB7CiAgICAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIH5ET01UaW1lcigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA1ZThhNTdmLi4zMTAw
YzA1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNjIsNyArNjIsNyBAQAogI2luY2x1ZGUgIklEQkZhY3Rv
cnkuaCIKICNpbmNsdWRlICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS1VS
TC5oIgogI2luY2x1ZGUgIkxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVNZWRpYS5oIgpAQCAt
MTUyMiwxNSArMTUyMiw2IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaExvYWRFdmVudCgpCiAj
ZW5kaWYKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1JbnNwZWN0b3JUaW1lbGluZUFnZW50
KiBET01XaW5kb3c6Omluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSAKLXsKLSAgICBpZiAoZnJhbWUo
KSAmJiBmcmFtZSgpLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBmcmFtZSgpLT5wYWdlKCktPmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCiBib29s
IERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCwgUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gcHJwVGFyZ2V0KQogewogICAgIFJlZlB0cjxFdmVudFRhcmdl
dD4gcHJvdGVjdCA9IHRoaXM7CkBAIC0xNTQwLDIzICsxNTMxLDExIEBAIGJvb2wgRE9NV2luZG93
OjpkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQYXNzUmVmUHRyPEV2
ZW50VGFyZ2V0CiAgICAgZXZlbnQtPnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CiAgICAgZXZlbnQt
PnNldEV2ZW50UGhhc2UoRXZlbnQ6OkFUX1RBUkdFVCk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UgPSBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnN0
YW5jZUNvdW50KCkgJiYgZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2UoKSA6IDA7Ci0gICAgaWYgKGlu
c3BlY3RlZFBhZ2UpIHsKLSAgICAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSBoYXNFdmVudExpc3RlbmVycyhldmVudC0+dHlwZSgpKSA/IGluc3BlY3RlZFBh
Z2UtPmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSA6IDApCi0gICAgICAgICAgICB0aW1lbGluZUFn
ZW50LT53aWxsRGlzcGF0Y2hFdmVudCgqZXZlbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBpbnNwZWN0ZWRQYWdlID0gMDsKLSAgICB9Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlz
cGF0Y2hFdmVudE9uV2luZG93KGZyYW1lKCksICpldmVudCwgdGhpcyk7CiAKICAgICBib29sIHJl
c3VsdCA9IGZpcmVFdmVudExpc3RlbmVycyhldmVudC5nZXQoKSk7CiAKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIGlmIChpbnNwZWN0ZWRQYWdlKQotICAgICAgICBpZiAoSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3BlY3RlZFBhZ2UtPmluc3BlY3RvclRpbWVs
aW5lQWdlbnQoKSkKLSAgICAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQo
KTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVu
dE9uV2luZG93KGZyYW1lKCksIGNvb2tpZSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5oCmluZGV4IDZmZDM3NzUuLmNhNDVmNTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTU3LDcgKzU3LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhpc3Rvcnk7
CiAgICAgY2xhc3MgSURCRmFjdG9yeTsKLSAgICBjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OwogICAgIGNsYXNzIExvY2F0aW9uOwogICAgIGNsYXNzIFN0eWxlTWVkaWE7CiAgICAgY2xhc3Mg
TmF2aWdhdG9yOwpAQCAtNDA3LDcgKzQwNiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KICAgICAgICAg
dmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpOwogICAgICAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7Ci0gICAgICAgIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKIAogICAgICAg
ICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAgICAgIEtVUkwg
bV91cmw7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGQzOTlhMDEuLjI5NDFmMjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSAiSFRNTEZyYW1lU2V0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCIK
LSNpbmNsdWRlICJJbnNwZWN0b3JUaW1lbGluZUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiT3ZlcmZsb3dFdmVudC5oIgogI2luY2x1ZGUg
IlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKQEAgLTYx
NywxMCArNjE3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkK
ICAgICBpZiAoaXNQYWludGluZygpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKSAgICAKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bExheW91dCgpOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dChtX2ZyYW1lLmdldCgp
KTsKIAogICAgIGlmICghYWxsb3dTdWJ0cmVlICYmIG1fbGF5b3V0Um9vdCkgewogICAgICAgICBt
X2xheW91dFJvb3QtPm1hcmtDb250YWluaW5nQmxvY2tzRm9yTGF5b3V0KGZhbHNlKTsKQEAgLTg0
MCwxMCArODM3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkK
ICAgICAgICAgQVNTRVJUKG1fZW5xdWV1ZUV2ZW50cyk7CiAgICAgfQogCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkTGF5
b3V0KCk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dCht
X2ZyYW1lLmdldCgpLCBjb29raWUpOwogCiAgICAgbV9uZXN0ZWRMYXlvdXRDb3VudC0tOwogfQpA
QCAtMTkzMiwxMCArMTkyNiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAoIWZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFnZW50KCkp
Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxQYWludChyZWN0KTsKLSNlbmRpZgorICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxQYWludChtX2ZyYW1lLmdldCgpLCByZWN0KTsKIAogICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lKCktPmRvY3VtZW50KCk7CiAKQEAgLTIwMDksMTAgKzIwMDAsNyBAQCB2
b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiAgICAgaWYgKGlzVG9wTGV2ZWxQYWludGVyKQogICAgICAgICBzQ3VycmVu
dFBhaW50VGltZVN0YW1wID0gMDsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFBhaW50KCk7Ci0jZW5kaWYKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7
CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3IgYmVo
YXZpb3IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKaW5kZXggMjJjMDViZS4uNWUyNzQzMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtMjUs
OSArMjUsOSBAQAogI2lmbmRlZiBGcmFtZVZpZXdfaAogI2RlZmluZSBGcmFtZVZpZXdfaAogCi0j
aW5jbHVkZSAiRnJhbWUuaCIgLy8gT25seSB1c2VkIGJ5IEZyYW1lVmlldzo6aW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0j
aW5jbHVkZSAiUGFnZS5oIiAvLyBPbmx5IHVzZWQgYnkgRnJhbWVWaWV3OjppbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
IC8vIEZvciBQYWludEJlaGF2aW9yCiAjaW5jbHVkZSAiU2Nyb2xsVmlldy5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CkBAIC0zOCw3ICszOCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIENvbG9yOwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGcmFtZVZpZXdQcml2YXRlOwotY2xhc3Mg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwpAQCAtMjkzLDEwICsyOTIsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2Nyb2xsVG9BbmNob3IoKTsKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgp
OwogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBp
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3Q7Ci0jZW5kaWYKLSAgICAKICAgICBib29sIGhh
c0N1c3RvbVNjcm9sbGJhcnMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3Jv
bGxDb3JuZXIoKTsKQEAgLTM4NiwxMyArMzgxLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgZG91
YmxlIHNfZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nOwogfTsKIAot
I2lmIEVOQUJMRShJTlNQRUNUT1IpCi1pbmxpbmUgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogRnJh
bWVWaWV3OjppbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9m
cmFtZS0+cGFnZSgpID8gbV9mcmFtZS0+cGFnZSgpLT5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkg
OiAwOwotfQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEZy
YW1lVmlld19oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggOWEzZDNkNy4uZTE1NDk2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNDYsNyArNDYsNiBA
QAogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlzdG9yeUl0ZW0uaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0
TGlzdGVuZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKQEAgLTg0MSwxMyArODQwLDYgQEAg
Ym9vbCBQYWdlOjpqYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQoKSBjb25zdAogICAgIHJldHVybiBt
X2phdmFTY3JpcHRVUkxzQXJlQWxsb3dlZDsKIH0KIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi1J
bnNwZWN0b3JUaW1lbGluZUFnZW50KiBQYWdlOjppbnNwZWN0b3JUaW1lbGluZUFnZW50KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9pbnNwZWN0b3JDb250cm9sbGVyLT50aW1lbGluZUFnZW50KCk7
Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShJTlBVVF9TUEVFQ0gpCiBTcGVlY2hJbnB1dCogUGFn
ZTo6c3BlZWNoSW5wdXQoKQogewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1dl
YkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggZjc4MzBkYi4uNmZmNjRjZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAorKysgYi9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC02MSw3ICs2MSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBIaXN0b3J5SXRlbTsKICAgICBjbGFz
cyBJbnNwZWN0b3JDbGllbnQ7CiAgICAgY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICBj
bGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50OwogICAgIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0
ZW5lcjsKICAgICBjbGFzcyBOb2RlOwogICAgIGNsYXNzIFBhZ2VHcm91cDsKQEAgLTI4OSwxMCAr
Mjg4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZChib29sKTsKICAgICAgICAgYm9vbCBqYXZhU2NyaXB0VVJMc0FyZUFsbG93
ZWQoKSBjb25zdDsKIAotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIGluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSBjb25zdDsKLSNlbmRpZgotCiAg
ICAgICAgIC8vIERvbid0IGFsbG93IG1vcmUgdGhhbiBhIGNlcnRhaW4gbnVtYmVyIG9mIGZyYW1l
cyBpbiBhIHBhZ2UuCiAgICAgICAgIC8vIFRoaXMgc2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdXBw
ZXIgYm91bmQsIGFuZCBvdGhlcndpc2UgbXV0dWFsbHkKICAgICAgICAgLy8gcmVjdXJzaXZlIGZy
YW1lc2V0IHBhZ2VzIGNhbiBxdWlja2x5IGJyaW5nIHRoZSBwcm9ncmFtIHRvIGl0cyBrbmVlcwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZjllMjM2Ny4uZjIx
YjY3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC00Myw3
ICs0Myw3IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1M
TWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yVGltZWxpbmVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIktleWZyYW1lTGlzdC5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyQm94LmgiCkBAIC0xMDU5LDI2ICsxMDU5LDEwIEBAIHZvaWQgUmVu
ZGVyTGF5ZXJCYWNraW5nOjpwYWludEludG9MYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBH
cmFwaGljc0NvbnRleHQqCiAgICAgQVNTRVJUKCFtX293bmluZ0xheWVyLT5tX3VzZWRUcmFuc3Bh
cmVuY3kpOwogfQogCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLXN0YXRpYyBJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiBpbnNwZWN0b3JUaW1lbGluZUFnZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIp
Ci17Ci0gICAgRnJhbWUqIGZyYW1lID0gcmVuZGVyZXItPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0g
ICAgaWYgKCFwYWdlKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcGFnZS0+aW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpOwotfQotI2VuZGlmCi0KIC8vIFVwLWNhbGwgZnJvbSBjb21wb3Np
dGluZyBsYXllciBkcmF3aW5nIGNhbGxiYWNrLgogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBh
aW50Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UgcGFpbnRpbmdQaGFzZSwgY29uc3QgSW50UmVj
dCYgY2xpcCkKIHsKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudChtX293bmlu
Z0xheWVyLT5yZW5kZXJlcigpKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KGNs
aXApOwotI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KG1fb3duaW5nTGF5ZXItPnJlbmRl
cmVyKCktPmZyYW1lKCksIGNsaXApOwogCiAgICAgLy8gV2UgaGF2ZSB0byB1c2UgdGhlIHNhbWUg
cm9vdCBhcyBmb3IgaGl0IHRlc3RpbmcsIGJlY2F1c2UgYm90aCBtZXRob2RzCiAgICAgLy8gY2Fu
IGNvbXB1dGUgYW5kIGNhY2hlIGNsaXBSZWN0cy4KQEAgLTEwOTgsMTAgKzEwODIsNyBAQCB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwg
R3JhcGhpY3NDb250ZXh0JiBjbwogCiAgICAgcGFpbnRJbnRvTGF5ZXIobV9vd25pbmdMYXllciwg
JmNvbnRleHQsIGRpcnR5UmVjdCwgUGFpbnRCZWhhdmlvck5vcm1hbCwgcGFpbnRpbmdQaGFzZSwg
cmVuZGVyZXIoKSk7CiAKLSNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zcGVjdG9yVGltZWxpbmVBZ2VudChtX293
bmluZ0xheWVyLT5yZW5kZXJlcigpKSkKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQo
KTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQobV9vd25p
bmdMYXllci0+cmVuZGVyZXIoKS0+ZnJhbWUoKSwgY29va2llKTsKIH0KIAogYm9vbCBSZW5kZXJM
YXllckJhY2tpbmc6OnNob3dEZWJ1Z0JvcmRlcnMoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CmluZGV4IDA3YTgxNmQuLmVmYmUwN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTM1LDcg
KzM1LDcgQEAKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1
ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgpAQCAtMzAzLDM1ICszMDMsMTcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y2FsbFJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigpCiAgICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKIAotI2lmIEVOQUJMRShJTlNQRUNU
T1IpCi0gICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQ6OnJldHJpZXZlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAg
Ym9vbCBjYWxsVGltZWxpbmVBZ2VudE9uUmVhZHlTdGF0ZUNoYW5nZSA9IHRpbWVsaW5lQWdlbnQg
JiYgaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCk7
Ci0gICAgaWYgKGNhbGxUaW1lbGluZUFnZW50T25SZWFkeVN0YXRlQ2hhbmdlKQotICAgICAgICB0
aW1lbGluZUFnZW50LT53aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShtX3VybC5zdHJpbmcoKSwgbV9z
dGF0ZSk7Ci0jZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMpOwogCiAgICAgaWYgKG1fYXN5bmMgfHwgKG1fc3Rh
dGUgPD0gT1BFTkVEIHx8IG1fc3RhdGUgPT0gRE9ORSkpCiAgICAgICAgIG1fcHJvZ3Jlc3NFdmVu
dFRocm90dGxlLmRpc3BhdGNoRXZlbnQoWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVudCksIG1fc3RhdGUgPT0gRE9ORSA/
IEZsdXNoUHJvZ3Jlc3NFdmVudCA6IERvTm90Rmx1c2hQcm9ncmVzc0V2ZW50KTsKIAotI2lmIEVO
QUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKGNhbGxUaW1lbGluZUFnZW50T25SZWFkeVN0YXRlQ2hh
bmdlICYmICh0aW1lbGluZUFnZW50ID0gSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cmV0cmlldmUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSkpCi0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENo
YW5nZVhIUlJlYWR5U3RhdGUoKTsKLSNlbmRpZgorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNvb2tp
ZSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBET05FICYmICFtX2Vycm9yKSB7Ci0jaWYgRU5BQkxF
KElOU1BFQ1RPUikKLSAgICAgICAgdGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OnJldHJpZXZlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Ci0gICAgICAgIGJvb2wgY2Fs
bFRpbWVsaW5lQWdlbnRPbkxvYWQgPSB0aW1lbGluZUFnZW50ICYmIGhhc0V2ZW50TGlzdGVuZXJz
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQpOwotICAgICAgICBpZiAoY2FsbFRpbWVsaW5lQWdlbnRP
bkxvYWQpCi0gICAgICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTG9hZFhIUihtX3VybC5zdHJp
bmcoKSk7Ci0jZW5kaWYKLQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIHRoaXMpOwogICAgICAgICBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZS5k
aXNwYXRjaEV2ZW50KFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5sb2FkRXZlbnQpKTsKLQotI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgICAgIGlmIChj
YWxsVGltZWxpbmVBZ2VudE9uTG9hZCAmJiAodGltZWxpbmVBZ2VudCA9IEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OnJldHJpZXZlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpKQotICAgICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkTG9hZFhIUigpOwotI2VuZGlmCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNv
b2tpZSk7CiAgICAgfQogfQogCg==
</data>
<flag name="review"
          id="59720"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>