<?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>216726</bug_id>
          
          <creation_ts>2020-09-18 20:57:30 -0700</creation_ts>
          <short_desc>Redundant rendering updates can be scheduled from inside Page::updateRendering()</short_desc>
          <delta_ts>2020-12-02 12:14:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219447</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>216958</dependson>
          <blocked>202843</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>nham</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1690036</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-18 20:57:30 -0700</bug_when>
    <thetext>Repaints schedule rendering updates, but if the repaint is issued inside of Page::updateRendering(), we&apos;ll handle that repaint in this rendering update, so there&apos;s no need to schedule another one.

This might lead to way too many rendering updates.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690037</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-18 20:58:04 -0700</bug_when>
    <thetext>&lt;rdar://problem/69193204&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690051</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-09-18 23:46:08 -0700</bug_when>
    <thetext>!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690225</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-20 14:53:07 -0700</bug_when>
    <thetext>To fix this we&apos;ll need to have some state that tracks the current phase of the rendering update:

enum RenderingUpdatePhase {
  Outside,
  UpdateRendering,
  Flushing,
  Painting
};

A notifyFlushRequired during UpdateRendering just needs to ensure the flush happens. A paint invalidation during UpdateRendering or Flushing doesn&apos;t need to schedule another update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692464</commentid>
    <comment_count>4</comment_count>
      <attachid>409863</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-27 17:29:08 -0700</bug_when>
    <thetext>Created attachment 409863
EWSing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692465</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-27 17:30:19 -0700</bug_when>
    <thetext>Comments on the approach welcome. It feels a little messy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692587</commentid>
    <comment_count>6</comment_count>
      <attachid>409863</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-09-28 10:15:16 -0700</bug_when>
    <thetext>Comment on attachment 409863
EWSing

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

I think this is a *fantastic* idea. I wish it could be understood in terms of &quot;dirty bits&quot; or &quot;invalidation&quot; rather than &quot;phases&quot;, but regardless of the framework it’s something we really need.

&gt; Source/WebCore/dom/Document.cpp:8184
&gt; +    if (!domWindow())
&gt; +        return;
&gt; +
&gt; +    if (auto* timelinesController = this-&gt;timelinesController())

Why not put both into local variables?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1692593</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-09-28 10:33:54 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 409863 [details]
&gt; EWSing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=409863&amp;action=review
&gt; 
&gt; I think this is a *fantastic* idea. I wish it could be understood in terms
&gt; of &quot;dirty bits&quot; or &quot;invalidation&quot; rather than &quot;phases&quot;, but regardless of
&gt; the framework it’s something we really need.

I think it&apos;s phases, not dirty bits, because it&apos;s order-dependent and dirty bits don&apos;t communicate that.

&gt; &gt; Source/WebCore/dom/Document.cpp:8184
&gt; &gt; +    if (!domWindow())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    if (auto* timelinesController = this-&gt;timelinesController())
&gt; 
&gt; Why not put both into local variables?

Can do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694463</commentid>
    <comment_count>8</comment_count>
      <attachid>410441</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-03 15:11:41 -0700</bug_when>
    <thetext>Created attachment 410441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694464</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-03 15:12:10 -0700</bug_when>
    <thetext>This patch uses bits for each step; I think I prefer it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694465</commentid>
    <comment_count>10</comment_count>
      <attachid>410442</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-03 15:21:49 -0700</bug_when>
    <thetext>Created attachment 410442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694495</commentid>
    <comment_count>11</comment_count>
      <attachid>410453</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-03 21:12:00 -0700</bug_when>
    <thetext>Created attachment 410453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694562</commentid>
    <comment_count>12</comment_count>
      <attachid>410478</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-04 12:05:18 -0700</bug_when>
    <thetext>Created attachment 410478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694572</commentid>
    <comment_count>13</comment_count>
      <attachid>410478</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-04 14:11:16 -0700</bug_when>
    <thetext>Comment on attachment 410478
Patch

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

&gt; Source/WTF/wtf/text/TextStream.h:215
&gt; +template&lt;typename ItemType, size_t inlineCapacity = 0&gt;

No need for the &quot;= 0&quot; here.

&gt; Source/WebCore/dom/Document.cpp:8159
&gt; +    if (!domWindow())
&gt; +        return;
&gt; +
&gt; +    if (auto* timelinesController = this-&gt;timelinesController())
&gt; +        timelinesController-&gt;updateAnimationsAndSendEvents(domWindow()-&gt;frozenNowTimestamp());

Same thought as before about putting both into local variables.

&gt; Source/WebCore/page/Page.cpp:1448
&gt; +    // FIXME: flags?

I don’t understand this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1694594</commentid>
    <comment_count>14</comment_count>
      <attachid>410487</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-04 16:14:31 -0700</bug_when>
    <thetext>Created attachment 410487
WK1 Testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695231</commentid>
    <comment_count>15</comment_count>
      <attachid>410665</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-06 11:17:56 -0700</bug_when>
    <thetext>Created attachment 410665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695237</commentid>
    <comment_count>16</comment_count>
      <attachid>410669</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-10-06 11:32:53 -0700</bug_when>
    <thetext>Created attachment 410669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695262</commentid>
    <comment_count>17</comment_count>
      <attachid>410669</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2020-10-06 12:09:39 -0700</bug_when>
    <thetext>Comment on attachment 410669
Patch

This is wild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695315</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-06 14:33:47 -0700</bug_when>
    <thetext>Committed r268075: &lt;https://trac.webkit.org/changeset/268075&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 410669.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696004</commentid>
    <comment_count>19</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-10-08 13:03:26 -0700</bug_when>
    <thetext>Filed: Bug 217490 – [WinCairo] ASSERTION FAILED: m_renderingUpdateRemainingSteps.last().isEmpty() in WebCore::Page::finalizeRenderingUpdate since r268075</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409863</attachid>
            <date>2020-09-27 17:29:08 -0700</date>
            <delta_ts>2020-10-03 15:11:39 -0700</delta_ts>
            <desc>EWSing</desc>
            <filename>bug-216726-20200927172907.patch</filename>
            <type>text/plain</type>
            <size>30886</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3Njg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhYTU0YTU1YTM5ZDgy
MzEzNjM4YmE1MDk1NzNhMTQ4OGQzOWZkNS4uNzRhMTk2ZTJiNzQwZjM1OGY4ZjVlMTdmZjJmZDU0
ZTQ3NDhhNWMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDIwLTA5LTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVuZGFudCBy
ZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2NoZWR1bGVkIGZyb20gaW5zaWRlIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTY3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmFzaWMgbW9kZWwgZm9yIHNjaGVkdWxpbmcgcmVuZGVyaW5nIHVwZGF0ZXMgaXMg
dGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gdHJpZ2dlciBvbmUKKyAgICAgICAganVzdCBjYWxscyBQ
YWdlOjpzY2hlZHVsZVtUaW1lZF1SZW5kZXJpbmdVcGRhdGUoKS4gSG93ZXZlciwgaWYgUGFnZTo6
dXBkYXRlUmVuZGVyaW5nKCkKKyAgICAgICAgaXMgYWxyZWFkeSBvbiB0aGUgc3RhY2ssIGFuZCB0
aGUgd29yayB0byBiZSBzY2hlZHVsZWQgd2lsbCBoYXBwZW4gbGF0ZXIgaW4gdGhlIGN1cnJlbnQK
KyAgICAgICAgdXBkYXRlLCB3ZSBkb24ndCBoYXZlIHRvIHNjaGVkdWxlIGEgbmV3IG9uZS4KKwor
ICAgICAgICBUbyBmaXggdGhpcyBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKSBhbmQgcmVsYXRlZCBm
dW5jdGlvbnMgdHJhY2sgdGhlIGN1cnJlbnQgcGhhc2Ugb2YKKyAgICAgICAgdGhlIHVwZGF0ZSwg
YW5kIGNhbGxlcnMgb2Ygc2NoZWR1bGVbVGltZWRdUmVuZGVyaW5nVXBkYXRlKCkgcGFzcyB0aGUg
dXBkYXRlIHBoYXNlCisgICAgICAgIGZvciB0aGUgd29yayB0aGV5IG5lZWQgdG8gdHJpZ2dlci4g
SWYgdGhlIHJlcXVlc3RlZCBwaGFzZSBpcyBsYXRlciB0aGFuIHRoZSBjdXJyZW50CisgICAgICAg
IHBoYXNlLCBubyBuZXcgdXBkYXRlIG5lZWRzIHRvIGJlIHNjaGVkdWxlZC4KKworICAgICAgICBJ
biBteSBicmllZiB0ZXN0aW5nLCB0aGlzIHJlZHVjZXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBQ
YWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAgICBieSAxMC0yNSUgb24gc29tZSByZWFsIHBh
Z2VzLCB3aGljaCBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHBvd2VyIHNhdmluZy4KKworICAgICAg
ICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbik6CisgICAgICAgICog
ZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OkxheWVyQ29udHJvbGxlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0TmVl
ZHNET01XaW5kb3dSZXNpemVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
TmVlZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
YWRkUGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVU
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY2hlZHVsZUluaXRp
YWxJbnRlcnNlY3Rpb25PYnNlcnZhdGlvblVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6dXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlQW5p
bWF0aW9uKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnNjaGVkdWxlQ3Vyc29yVXBkYXRlKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpZXdFeHBv
c2VkUmVjdCk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6dXBkYXRlUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRvQWZ0ZXJVcGRh
dGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZmluYWxpemVSZW5kZXJpbmdV
cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hh
bmdlVmlld0V4cG9zZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJv
bGxlcjo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNpemVPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAg
ICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnNj
aGVkdWxlVHJlZVN0YXRlQ29tbWl0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5
Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmg6CisKIDIwMjAtMDktMjQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViS2l0TGVnYWN5IHNob3VsZCBjYWxsIFBhZ2U6OmZpbmFsaXplUmVu
ZGVyaW5nVXBkYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVs
aW5lLmNwcAppbmRleCA3YTg1MjE0NDk5ZGRlYmUzMjM0NDhkNmE5NWM5YTE1YjEwYzE0NDlkLi5i
M2ZlYjBhZjQwOWE4OGNiMmEzOGMyZTA2OGZkNjRiODNkMDVkMGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAg
dm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKQogICAg
IGlmICghc2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmluZ1N1c3Bl
bnNpb25TdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCkt
PnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCkt
PnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsgLy8gRklYTUU6IFBhc3MgYSBwaGFzZSBi
dXQgaXQncyBub3QgY2xlYXIgd2hpY2ggb25lIGlzIGFwcHJvcHJpYXRlLgogICAgIG1fYW5pbWF0
aW9uUmVzb2x1dGlvblNjaGVkdWxlZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCmluZGV4IGYyM2FjM2RkNjc1NmY2
YzNkNmY1MjY4MTRjNzg1ZDVlZTNkZDI2MTguLjUzNGU1MDJiYjAwNzc5ZDBkNDcwZWQ4ZThkMjFk
NzVmZmQyNDM1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxh
eWVyQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5
ZXJDb250cm9sbGVyLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTGF5ZXJDb250cm9sbGVy
OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHBhZ2UtPnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpMYXllckZsdXNoKTsK
IH0KIAogdm9pZCBMYXllckNvbnRyb2xsZXI6OmVuc3VyZVJvb3RMYXllcihGbG9hdFNpemUgdmll
d1NpemUsIEZsb2F0U2l6ZSBjb250ZW50U2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGFiN2YxMTk4Zjk4YzY3YmM5YjYzYzQ3MTkyMWY2ZTdkOGQzMTM2ZWYuLjc0ZmZmYWQ2Yjk2YWUx
MmI5MDAwOGU2NGY2YjMyNWFlZGVmYzdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
NTY0LDcgKzU2NCw3IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFVS
TCYgdXJsLCBEb2N1bWVudENsYXNzRmxhZ3MgZG9jdW1lbnRDbGFzCiAgICAgLCBtX2Z1bGxzY3Jl
ZW5NYW5hZ2VyIHsgbWFrZVVuaXF1ZVJlZjxGdWxsc2NyZWVuTWFuYWdlcj4oKnRoaXMpIH0KICNl
bmRpZgogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCi0gICAgLCBtX2ludGVyc2Vj
dGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lcigqdGhpcywgJkRvY3VtZW50OjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKQorICAgICwgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0
aWFsVXBkYXRlVGltZXIoKnRoaXMsICZEb2N1bWVudDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5p
dGlhbFVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5kaWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1l
cigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKQEAgLTQwODEsMTMg
KzQwODEsMTMgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRVbml0c09uUmVzaXplKCkK
IHZvaWQgRG9jdW1lbnQ6OnNldE5lZWRzRE9NV2luZG93UmVzaXplRXZlbnQoKQogewogICAgIG1f
bmVlZHNET01XaW5kb3dSZXNpemVFdmVudCA9IHRydWU7Ci0gICAgc2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpOworICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5n
VXBkYXRlUGhhc2U6OlJlc2l6ZVN0ZXBzKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0TmVlZHNW
aXN1YWxWaWV3cG9ydFJlc2l6ZSgpCiB7CiAgICAgbV9uZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXpl
RXZlbnQgPSB0cnVlOwotICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBz
Y2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpSZXNpemVT
dGVwcyk7CiB9CiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNydW4t
dGhlLXJlc2l6ZS1zdGVwcwpAQCAtNDExNyw3ICs0MTE3LDcgQEAgdm9pZCBEb2N1bWVudDo6YWRk
UGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0KENvbnRhaW5lck5vZGUmIHRhcmdldCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKHRhcmdldHMuaXNFbXB0eSgpKQotICAgICAgICBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoUmVuZGVyaW5nVXBkYXRlUGhhc2U6OlNjcm9sbFN0ZXBzKTsKIAogICAgIHRhcmdldHMuYXBw
ZW5kKHRhcmdldCk7CiB9CkBAIC00MTI1LDcgKzQxMjUsNyBAQCB2b2lkIERvY3VtZW50OjphZGRQ
ZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQogdm9pZCBEb2N1
bWVudDo6c2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KCkKIHsKICAgICBpZiAoIW1f
bmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KQotICAgICAgICBzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVu
ZGVyaW5nVXBkYXRlUGhhc2U6OlNjcm9sbFN0ZXBzKTsKICAgICBtX25lZWRzVmlzdWFsVmlld3Bv
cnRTY3JvbGxFdmVudCA9IHRydWU7CiB9CiAKQEAgLTY0NTcsMTAgKzY0NTcsMTAgQEAgdm9pZCBE
b2N1bWVudDo6cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCkKICAg
ICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnJlc3VtZSgpOwogfQogCi12b2lk
IERvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRS
ZXNvbHV0aW9uU2Vjb25kcyB0aW1lc3RhbXApCit2b2lkIERvY3VtZW50OjpzZXJ2aWNlUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKCkKIHsKLSAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXIpCi0gICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5zZXJ2
aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKHRpbWVzdGFtcCk7CisgICAgaWYgKG1f
c2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyICYmIGRvbVdpbmRvdygpKQorICAgICAgICBtX3Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrcyhkb21XaW5kb3coKS0+ZnJvemVuTm93VGltZXN0YW1wKCkpOwogfQogCiB2b2lkIERv
Y3VtZW50Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlE
KQpAQCAtNzU2NCwxMyArNzU2NCwxOCBAQCB2b2lkIERvY3VtZW50OjpyZW1vdmVEeW5hbWljTWVk
aWFRdWVyeURlcGVuZGVudEltYWdlKEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCiAgICAgbV9k
eW5hbWljTWVkaWFRdWVyeURlcGVuZGVudEltYWdlcy5yZW1vdmUoZWxlbWVudCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQordm9pZCBEb2N1bWVu
dDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyRmlyZWQoKQoreworICAg
IHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlUGhhc2U6Ok91dHNp
ZGUpOworfQorCit2b2lkIERvY3VtZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZVBoYXNlIHBoYXNlKQogewogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JT
RVJWRVIpCiAgICAgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIuc3Rv
cCgpOwogI2VuZGlmCiAgICAgaWYgKGF1dG8gcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAg
cGFnZS0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKHBoYXNlKTsKIH0KIAogI2lmIEVOQUJMRShJTlRFUlNF
Q1RJT05fT0JTRVJWRVIpCkBAIC03Nzk1LDcgKzc4MDAsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRh
dGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKQogdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVJbml0
aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUoKQogewogICAgIGlmIChtX3JlYWR5U3Rh
dGUgPT0gQ29tcGxldGUpCi0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsK
KyAgICAgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVQaGFz
ZTo6T3V0c2lkZSk7CiAgICAgZWxzZSBpZiAoIW1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlh
bFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJz
SW5pdGlhbFVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0
aWFsVXBkYXRlRGVsYXkpOwogfQpAQCAtNzg4Nyw3ICs3ODkyLDcgQEAgdm9pZCBEb2N1bWVudDo6
dXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGdldFBhcnNlckxv
Y2F0aW9uKHVybCwgbGluZSwgY29sdW1uKTsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCJSZXNp
emVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMu
IiwgbGluZSwgY29sdW1uLCB1cmwsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICAvLyBTdGFy
dGluZyBhIG5ldyBzY2hlZHVsZSB0aGUgbmV4dCByb3VuZCBvZiBub3RpZnkuCi0gICAgICAgIHNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgc2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVQaGFzZTo6T3V0c2lkZSk7CiAgICAgfQogfQogCkBA
IC04MTcxLDYgKzgxNzYsMTUgQEAgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVyJiBEb2N1bWVu
dDo6ZW5zdXJlVGltZWxpbmVzQ29udHJvbGxlcigpCiAgICAgcmV0dXJuICptX3RpbWVsaW5lc0Nv
bnRyb2xsZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUFuaW1hdGlvbnNBbmRT
ZW5kRXZlbnRzKCkKK3sKKyAgICBpZiAoIWRvbVdpbmRvdygpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoYXV0byogdGltZWxpbmVzQ29udHJvbGxlciA9IHRoaXMtPnRpbWVsaW5lc0NvbnRy
b2xsZXIoKSkKKyAgICAgICAgdGltZWxpbmVzQ29udHJvbGxlci0+dXBkYXRlQW5pbWF0aW9uc0Fu
ZFNlbmRFdmVudHMoZG9tV2luZG93KCktPmZyb3plbk5vd1RpbWVzdGFtcCgpKTsKK30KKwogRG9j
dW1lbnRUaW1lbGluZSYgRG9jdW1lbnQ6OnRpbWVsaW5lKCkKIHsKICAgICBpZiAoIW1fdGltZWxp
bmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDg2NGFkNzMxNGViMWJjMGVjMTAzOTBjYmVmNDJi
YjA5MGExMGI0MmYuLmUzZWFkMmZkMDhlY2QzMjllYTM2MzRhYzIyNWFiNGYwNDVhMzJlYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0yNDAsNiArMjQwLDcgQEAgZW51bSBDb2xsZWN0aW9uVHlw
ZTsKIAogZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90OwogZW51bSBjbGFz
cyBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IDogdWludDhfdDsKK2VudW0gY2xhc3MgUmVu
ZGVyaW5nVXBkYXRlUGhhc2UgOiB1aW50OF90OwogCiB1c2luZyBQbGF0Zm9ybURpc3BsYXlJRCA9
IHVpbnQzMl90OwogCkBAIC0xMDcwLDcgKzEwNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNw
ZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgdm9pZCByZXN1
bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKIAotICAgIHZvaWQgc2Vy
dmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29u
ZHMpOworICAgIHZvaWQgc2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcygpOwog
CiAgICAgdm9pZCB3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQpOwogCkBA
IC0xNDAwLDcgKzE0MDEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGREeW5hbWljTWVkaWFRdWVy
eURlcGVuZGVudEltYWdlKEhUTUxJbWFnZUVsZW1lbnQmKTsKICAgICB2b2lkIHJlbW92ZUR5bmFt
aWNNZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYpOwogCi0gICAgdm9p
ZCBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVk
UmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNlKTsKIAogI2lmIEVOQUJMRShJTlRF
UlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgdm9pZCBhZGRJbnRlcnNlY3Rpb25PYnNlcnZlcihJbnRl
cnNlY3Rpb25PYnNlcnZlciYpOwpAQCAtMTQ5MCw2ICsxNDkxLDcgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKFJlZlB0cjxTdHJp
bmdDYWxsYmFjaz4mJik7IC8vIEZvciB0ZXN0aW5nLgogCisgICAgdm9pZCB1cGRhdGVBbmltYXRp
b25zQW5kU2VuZEV2ZW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmUm
IHRpbWVsaW5lKCk7CiAgICAgRG9jdW1lbnRUaW1lbGluZSogZXhpc3RpbmdUaW1lbGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZWxpbmUuZ2V0KCk7IH0KICAgICBWZWN0b3I8UmVmUHRyPFdlYkFu
aW1hdGlvbj4+IGdldEFuaW1hdGlvbnMoKTsKQEAgLTE2NTIsNiArMTY1NCw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudFNsb3dDYXNlKE5vZGUm
LCBEb2N1bWVudCYpOwogCisgICAgdm9pZCBpbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBk
YXRlVGltZXJGaXJlZCgpOworCiAgICAgdm9pZCBsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQoKTsK
IAogICAgIHZvaWQgcGVuZGluZ1Rhc2tzVGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA1MTdkZjgwMDI1
NWEyOTFjOGQ2NTVmZDZmYjJlY2Y0YWQxYmVjZjJiLi43OWVkNWIwNDkyYjYxMmI4MTA5NTJhYTQy
NTRhYjRkOWYzNjAxMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICBwYWdlLT5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2tzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IGY5OGJj
ZTFiZjQ2Njk4Y2EwZTVkYWRhYmQ2NDljNWZkNzU4MGZhMjcuLjA4YTBlMTZjYmU4NGZkZTM5OWEx
OWM0MmFiMDVmOTE1Mzk1YjExNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
QEAgLTMxNTMsNyArMzE1Myw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzY2hlZHVsZUN1cnNvclVw
ZGF0ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faGFzU2NoZWR1bGVkQ3Vyc29yVXBkYXRl
ID0gdHJ1ZTsKLSAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHBhZ2Ut
PnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpDdXJzb3JVcGRh
dGUpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRT
b29uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhZWY2MzlhNTcxZTMwZjFhYWE3
NzM2NmNmMzUzMDkyMGMzZjAxNTVhLi5mNDRlNTEyMzIyODNiYzQ2OWNhNDVlYjRlNDFlNmQ0MDc4
NjljMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC01NDQ0LDcgKzU0NDQsNyBA
QCB2b2lkIEZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4g
dmlld0V4cG9zZWRSZWN0KQogICAgIH0KIAogICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5w
YWdlKCkpIHsKLSAgICAgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAg
ICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlUGhhc2U6Okxh
eWVyRmx1c2gpOwogICAgICAgICBwYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFu
Z2VWaWV3RXhwb3NlZFJlY3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAxM2Q5
NWEwMDY2MTA3NTI1MDFmNjAwOTI2MmRmNTBjYzZiNWVjOGYwLi5hODA0YzY3MTVhNGI5YTMwM2Y2
OGQ2OWQ3NWRiNGE0YWNkYzZmNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTYwMCw3ICs2MDAs
NyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCkKICAg
ICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2Fj
aGUoKTsKICAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVGdWxsU3R5bGVSZWJ1aWxkKCk7CiAgICAg
ICAgIGRvY3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQo
KTsKLSAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAg
ICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0
ZVBoYXNlOjpFdmFsdWF0ZU1lZGlhUXVlcmllcyk7CiAgICAgfSk7CiB9CiAKQEAgLTE0MTAsMTMg
KzE0MTAsMTggQEAgdm9pZCBQYWdlOjpsYXlvdXRJZk5lZWRlZCgpCiAgICAgICAgIHZpZXctPnVw
ZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIH0KIAotdm9pZCBQYWdlOjpz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNlIHBoYXNlKQogeworICAgIGlmIChtX3VwZGF0ZVJlbmRl
cmluZ1BoYXNlU3RhY2suc2l6ZSgpICYmIHBoYXNlID4gbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0
YWNrLmxhc3QoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKLXZvaWQgUGFnZTo6c2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdV
cGRhdGUoUmVuZGVyaW5nVXBkYXRlUGhhc2UgcGhhc2UpCiB7CisgICAgaWYgKG1fdXBkYXRlUmVu
ZGVyaW5nUGhhc2VTdGFjay5zaXplKCkgJiYgcGhhc2UgPiBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNl
U3RhY2subGFzdCgpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoY2hyb21lKCkuY2xpZW50
KCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpKQogICAgICAgICByZXR1cm47CiAgICAg
cmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgp
OwpAQCAtMTQ0Nyw2ICsxNDUyLDcgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAg
IC8vIFRoaXMgaXMgd2h5IHdlIHRyYWNrIHVwZGF0ZVJlbmRlcmluZ1BoYXNlIGFzIGEgc3RhY2su
CiAgICAgaWYgKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5zaXplKCkgPiAxKSB7CiAgICAg
ICAgIGxheW91dElmTmVlZGVkKCk7CisgICAgICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFj
ay5sYXN0KCkgPSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6RW5kT2ZBZnRlclVwZGF0ZVJlbmRlcmlu
ZzsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ3MCw0NCArMTQ3Niw1MSBAQCB2b2lk
IFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIGluaXRpYWxEb2N1bWVudHMuYXBwZW5k
KG1ha2VXZWFrUHRyKCZkb2N1bWVudCkpOwogICAgIH0pOwogCi0gICAgLy8gRmx1c2ggYXV0b2Zv
Y3VzIGNhbmRpZGF0ZXMKKyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmlu
Z1VwZGF0ZVBoYXNlIHBoYXNlLCBjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnQmKT4m
IHBlckRvY3VtZW50RnVuY3Rpb24pIHsKKyAgICAgICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0
YWNrLmxhc3QoKSA9IHBoYXNlOworICAgICAgICBmb3JFYWNoRG9jdW1lbnQocGVyRG9jdW1lbnRG
dW5jdGlvbik7CisgICAgfTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRv
Y3VtZW50KSB7CisgICAgLy8gRklYTUU6IEZsdXNoIGF1dG9mb2N1cyBjYW5kaWRhdGVzLgorCisg
ICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlUGhhc2U6OlJlc2l6ZVN0ZXBzLCBb
XSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnJ1blJlc2l6ZVN0ZXBz
KCk7CiAgICAgfSk7CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVu
dCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpTY3JvbGxT
dGVwcywgW10gKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC5ydW5TY3Jv
bGxTdGVwcygpOwogICAgIH0pOwogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYg
ZG9jdW1lbnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVQaGFzZTo6
RXZhbHVhdGVNZWRpYVF1ZXJpZXMsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAg
ZG9jdW1lbnQuZXZhbHVhdGVNZWRpYVF1ZXJpZXNBbmRSZXBvcnRDaGFuZ2VzKCk7ICAgICAgICAK
ICAgICB9KTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7
Ci0gICAgICAgIGlmICghZG9jdW1lbnQuZG9tV2luZG93KCkpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGF1dG8gdGltZXN0YW1wID0gZG9jdW1lbnQuZG9tV2luZG93KCktPmZyb3plbk5v
d1RpbWVzdGFtcCgpOwotICAgICAgICBpZiAoYXV0byogdGltZWxpbmVzQ29udHJvbGxlciA9IGRv
Y3VtZW50LnRpbWVsaW5lc0NvbnRyb2xsZXIoKSkKLSAgICAgICAgICAgIHRpbWVsaW5lc0NvbnRy
b2xsZXItPnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKHRpbWVzdGFtcCk7Ci0gICAgICAg
IC8vIEZJWE1FOiBSdW4gdGhlIGZ1bGxzY3JlZW4gc3RlcHMuCi0gICAgICAgIGRvY3VtZW50LnNl
cnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1wKTsKKyAgICBydW5Q
cm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVQaGFzZTo6VXBkYXRlQW5pbWF0aW9ucywgW10g
KERvY3VtZW50JiBkb2N1bWVudCkgeworICAgICAgICBkb2N1bWVudC51cGRhdGVBbmltYXRpb25z
QW5kU2VuZEV2ZW50cygpOworICAgIH0pOworCisgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNj
cmVlbiBzdGVwcy4KKworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVBoYXNl
OjpBbmltYXRpb25GcmFtZUNhbGxiYWNrcywgW10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAg
ICAgICBkb2N1bWVudC5zZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKCk7CiAg
ICAgfSk7CiAKICAgICBsYXlvdXRJZk5lZWRlZCgpOwogCiAjaWYgRU5BQkxFKElOVEVSU0VDVElP
Tl9PQlNFUlZFUikKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkg
eworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpJbnRlcnNlY3Rp
b25PYnNlcnZhdGlvbnMsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1l
bnQudXBkYXRlSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25zKCk7CiAgICAgfSk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCi0gICAgZm9yRWFjaERvY3VtZW50KFsmXSAoRG9j
dW1lbnQmIGRvY3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRl
UGhhc2U6OlJlc2l6ZU9ic2VydmF0aW9ucywgWyZdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAg
ICAgICAgZG9jdW1lbnQudXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKCp0aGlzKTsKICAgICB9KTsK
ICNlbmRpZgogCisgICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRl
cmluZ1VwZGF0ZVBoYXNlOjpFbmRPZlVwZGF0ZVJlbmRlcmluZzsKKwogICAgIGZvckVhY2hEb2N1
bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGZvciAoYXV0byYgaW1hZ2Ug
OiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmFsbENhY2hlZFNWR0ltYWdlcygpKSB7
CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGltYWdlLT5pbnRlcm5hbFBhZ2UoKSkKQEAg
LTE1MTUsMTMgKzE1MjgsMTQgQEAgdm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgICAg
ICB9CiAgICAgfSk7CiAKLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxh
c3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOworICAgIEFT
U0VSVChtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID09IFJlbmRlcmluZ1VwZGF0
ZVBoYXNlOjpFbmRPZlVwZGF0ZVJlbmRlcmluZyk7CiAKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50
IDogaW5pdGlhbERvY3VtZW50cykgewogICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQt
PmRvbVdpbmRvdygpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT51bmZyZWV6
ZU5vd1RpbWVzdGFtcCgpOwogICAgIH0KIAorICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGdldCBh
IHBoYXNlLgogICAgIGlmIChVTkxJS0VMWShpc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSkKICAg
ICAgICAgd2hlZWxFdmVudFRlc3RNb25pdG9yKCktPmNoZWNrU2hvdWxkRmlyZUNhbGxiYWNrcygp
OwogCkBAIC0xNTM0LDcgKzE1NDgsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAg
ICAgaWYgKCFpc1NWR0ltYWdlUGFnZSkKICAgICAgICAgdHJhY2VQb2ludChSZW5kZXJpbmdVcGRh
dGVFbmQpOwogCi0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkg
PT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKKyAgICBBU1NFUlQo
bV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFz
ZTo6RW5kT2ZBZnRlclVwZGF0ZVJlbmRlcmluZyk7CiB9CiAKIHZvaWQgUGFnZTo6aXNvbGF0ZWRV
cGRhdGVSZW5kZXJpbmcoKQpAQCAtMTU0NSw3ICsxNTU5LDcgQEAgdm9pZCBQYWdlOjppc29sYXRl
ZFVwZGF0ZVJlbmRlcmluZygpCiAKIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZygp
CiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVu
ZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKKyAgICBBU1NFUlQobV91cGRh
dGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6RW5k
T2ZVcGRhdGVSZW5kZXJpbmcpOwogCiAgICAgLy8gQ29kZSBoZXJlIHNob3VsZCBkbyBvbmNlLXBl
ci1mcmFtZSB3b3JrIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFuZCBy
ZXF1aXJlcwogICAgIC8vIGxheW91dCB0byBiZSB1cC10by1kYXRlLiBJdCBzaG91bGQgbm90IHJ1
biBzY3JpcHQsIHRyaWdnZXIgbGF5b3V0LCBvciBkaXJ0eSBsYXlvdXQuCkBAIC0xNTU5LDExICsx
NTczLDE1IEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgfQogI2Vu
ZGlmCiAKKyAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID0gUmVuZGVyaW5n
VXBkYXRlUGhhc2U6OkN1cnNvclVwZGF0ZTsKKwogICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9j
dW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkpCiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkudXBkYXRlQ3Vyc29ySWZO
ZWVkZWQoKTsKICAgICB9KTsKIAorICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0
KCkgPSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6QWZ0ZXJVcGRhdGVSZW5kZXJpbmdNaXNjOworCiAg
ICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9j
dW1lbnQuZW5xdWV1ZVBhaW50VGltaW5nRW50cnlJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtMTU3
OCw2ICsxNTk2LDggQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9
KTsKICNlbmRpZgogCisgICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJl
bmRlcmluZ1VwZGF0ZVBoYXNlOjpFdmVudFJlZ2lvblVwZGF0ZTsKKwogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQogICAgIC8vIHVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCkgbmVlZHMgdG8g
YmUgY2FsbGVkIG9ubHkgb24gdGhlIHRvcCBkb2N1bWVudC4KICAgICBpZiAoUmVmUHRyPERvY3Vt
ZW50PiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLmRvY3VtZW50KCkpCkBAIC0xNTg3LDYgKzE2MDcs
OCBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgICAgICBkb2N1bWVu
dC51cGRhdGVFdmVudFJlZ2lvbnMoKTsKICAgICB9KTsKIAorICAgIG1fdXBkYXRlUmVuZGVyaW5n
UGhhc2VTdGFjay5sYXN0KCkgPSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6RW5kT2ZBZnRlclVwZGF0
ZVJlbmRlcmluZzsKKwogICAgIERlYnVnUGFnZU92ZXJsYXlzOjpkb0FmdGVyVXBkYXRlUmVuZGVy
aW5nKCp0aGlzKTsKIAogICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CkBAIC0xNjAxLDEyICsxNjIzLDEzIEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRl
cmluZygpCiAgICAgfQogI2VuZGlmCiAKLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFz
ZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcp
OworICAgIEFTU0VSVChtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID09IFJlbmRl
cmluZ1VwZGF0ZVBoYXNlOjpFbmRPZkFmdGVyVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQ
YWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdV
cGRhdGVGbGFncz4gZmxhZ3MpCiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VT
dGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsK
KyAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJp
bmdVcGRhdGVQaGFzZTo6RW5kT2ZBZnRlclVwZGF0ZVJlbmRlcmluZyk7CisgICAgbV91cGRhdGVS
ZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpGaW5hbGl6
ZVVwZGF0ZTsKIAogICAgIGF1dG8qIHZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYg
KCF2aWV3KQpAQCAtMTYxNSwxMyArMTYzOCwxNCBAQCB2b2lkIFBhZ2U6OmZpbmFsaXplUmVuZGVy
aW5nVXBkYXRlKE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPiBmbGFncwog
ICAgIGlmIChmbGFncy5jb250YWlucyhGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpJbnZh
bGlkYXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcykpCiAgICAgICAgIHZpZXctPmludmFsaWRhdGVJ
bWFnZXNXaXRoQXN5bmNEZWNvZGVzKCk7CiAKLSAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3Rh
Y2subGFzdCgpID0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkxheWVyRmx1c2hpbmc7CisgICAgbV91
cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpM
YXllckZsdXNoOwogCiAgICAgdmlldy0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3Vi
ZnJhbWVzKCk7CiAKLSAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID0gUmVu
ZGVyaW5nVXBkYXRlUGhhc2U6OlBvc3RMYXllckZsdXNoOwogCiAjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKKyAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID0gUmVuZGVy
aW5nVXBkYXRlUGhhc2U6OlNjcm9sbGluZ1RyZWVVcGRhdGU7CisKICAgICBpZiAoYXV0byogc2Ny
b2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigpKSB7CiAgICAg
ICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5jb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpOwogICAg
ICAgICBpZiAoZmxhZ3MuY29udGFpbnMoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6QXBw
bHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMpKQpAQCAtMjk1NSw3ICsyOTc5LDcgQEAgdm9p
ZCBQYWdlOjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGZvckVhY2hEb2N1
bWVudChbXSAoYXV0byYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgp
LmV2YWx1YXRlTWVkaWFRdWVyaWVzRm9yQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCk7CiAg
ICAgICAgIGRvY3VtZW50LnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllcygpOwot
ICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAg
IGRvY3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlUGhh
c2U6OkV2YWx1YXRlTWVkaWFRdWVyaWVzKTsKICAgICB9KTsKIH0KIApAQCAtMjk2NSw3ICsyOTg5
LDcgQEAgdm9pZCBQYWdlOjphcHBlYXJhbmNlRGlkQ2hhbmdlKCkKICAgICAgICAgZG9jdW1lbnQu
c3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOwogICAgICAgICBk
b2N1bWVudC5zdHlsZVNjb3BlKCkuZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hh
bmdlKCk7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVl
cmllcygpOwotICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7
CisgICAgICAgIGRvY3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5n
VXBkYXRlUGhhc2U6OkV2YWx1YXRlTWVkaWFRdWVyaWVzKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuaAppbmRleCBkNTdiMTYwZGYwMWRiM2NiYWUzODBlMzI4MzNkNjg3MThmOTlkNWFjLi42ODEw
MjMwOTViMWZlMjlmYTAyYzBjN2ZlYTU3Nzc4Yzg5OTE2NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
MTczLDYgKzE3MywzMSBAQCBlbnVtIGNsYXNzIEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3Mg
OiB1aW50OF90IHsKICAgICBJbnZhbGlkYXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcyAgICA9IDEg
PDwgMSwKIH07CiAKK2VudW0gY2xhc3MgUmVuZGVyaW5nVXBkYXRlUGhhc2UgOiB1aW50OF90IHsK
KyAgICBPdXRzaWRlLAorICAgIEluVXBkYXRlUmVuZGVyaW5nLAorICAgIFJlc2l6ZVN0ZXBzLAor
ICAgIFNjcm9sbFN0ZXBzLAorICAgIEV2YWx1YXRlTWVkaWFRdWVyaWVzLAorICAgIFVwZGF0ZUFu
aW1hdGlvbnMsCisgICAgRnVsbHNjcmVlblN0ZXBzLAorICAgIEFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2tzLAorI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCisgICAgSW50ZXJzZWN0aW9u
T2JzZXJ2YXRpb25zLAorI2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKKyAgICBS
ZXNpemVPYnNlcnZhdGlvbnMsCisjZW5kaWYKKyAgICBFbmRPZlVwZGF0ZVJlbmRlcmluZywKKyAg
ICBDdXJzb3JVcGRhdGUsCisgICAgQWZ0ZXJVcGRhdGVSZW5kZXJpbmdNaXNjLAorICAgIEV2ZW50
UmVnaW9uVXBkYXRlLAorICAgIEVuZE9mQWZ0ZXJVcGRhdGVSZW5kZXJpbmcsCisgICAgRmluYWxp
emVVcGRhdGUsCisgICAgTGF5ZXJGbHVzaCwKKyAgICBTY3JvbGxpbmdUcmVlVXBkYXRlLAorfTsK
KwogY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFBhZ2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ5Myw5ICs1MTgsOSBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8Rmlu
YWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4pOwogCiAgICAgLy8gRG8gaW1tZWRpYXRlIG9yIHRp
bWVkIHVwZGF0ZSBhcyBkaWN0YXRlZCBieSB0aGUgQ2hyb21lQ2xpZW50LgotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNlID0gUmVu
ZGVyaW5nVXBkYXRlUGhhc2U6Ok91dHNpZGUpOwogICAgIC8vIFNjaGVkdWxlIGFuIHVwZGF0ZSB0
aGF0IGNvb3JkaW5hdGVzIHdpdGggZGlzcGxheSByZWZyZXNoOyB0aGUgbm9ybWFsIGtpbmQgb2Yg
dXBkYXRlLgotICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZv
aWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVQaGFzZSA9IFJl
bmRlcmluZ1VwZGF0ZVBoYXNlOjpPdXRzaWRlKTsKICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUg
aW4gdGhlIGN1cnJlbnQgcnVubG9vcDsgdGhpcyBpcyBhbiBlYWdlciB1cGRhdGUgdGhhdCBtYXkg
dHJpZ2dlciByZW5kZXJpbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGRpc3BsYXkgcmVmcmVzaC4KICAg
ICB2b2lkIHNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCk7CiAKQEAgLTc4MSwxMyAr
ODA2LDYgQEAgcHVibGljOgogICAgIE1vbm90b25pY1RpbWUgbGFzdFJlbmRlcmluZ1VwZGF0ZVRp
bWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsg
fQogCiBwcml2YXRlOgotICAgIGVudW0gY2xhc3MgUmVuZGVyaW5nVXBkYXRlUGhhc2UgOiB1aW50
OF90IHsKLSAgICAgICAgT3V0c2lkZSwKLSAgICAgICAgSW5VcGRhdGVSZW5kZXJpbmcsCi0gICAg
ICAgIExheWVyRmx1c2hpbmcsCi0gICAgICAgIFBvc3RMYXllckZsdXNoCi0gICAgfTsKLQogICAg
IHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwog
ICAgICAgICBGcmFtZUxvYWRUeXBlIHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VP
dmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggMjUyYmVmOTUwOThkZjJmY2FmMGQyMTJlNTY4Njli
OGNjMjUwZTE2ZS4uMjA2YWIyNDQzOTA0YjEzNDM0NTMzZjk3YTc2NjVkOGE1NmU5ZmFkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtMzE4
LDcgKzMxOCw3IEBAIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VT
Y2FsZUZhY3RvcigpCiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3
RXhwb3NlZFJlY3QoKQogewotICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgbV9wYWdlLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBk
YXRlUGhhc2U6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6
ZGlkU2Nyb2xsRnJhbWUoRnJhbWUmIGZyYW1lKQpAQCAtNDEyLDcgKzQxMiw3IEBAIGZsb2F0IFBh
Z2VPdmVybGF5Q29udHJvbGxlcjo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIFBh
Z2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xh
eWVyKikKIHsKLSAgICBtX3BhZ2Uuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAg
IG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNl
OjpMYXllckZsdXNoKTsKIH0KIAogdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5n
ZU92ZXJsYXlGcmFtZShQYWdlT3ZlcmxheSYgb3ZlcmxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNp
emVPYnNlcnZlci5jcHAKaW5kZXggMjU3ZmExMWM4YzdiZmVhYjYxYTM0ZWY3MTM2Y2FiYmM4MDU1
NjBhMC4uZmI0MGZmMTBiNDMxNGI0ZWU4OGNkNWFkZWY2ZDZjMmFiMDdhNTE3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBSZXNp
emVPYnNlcnZlcjo6b2JzZXJ2ZShFbGVtZW50JiB0YXJnZXQpCiAKICAgICBpZiAobV9kb2N1bWVu
dCkgewogICAgICAgICBtX2RvY3VtZW50LT5hZGRSZXNpemVPYnNlcnZlcigqdGhpcyk7Ci0gICAg
ICAgIG1fZG9jdW1lbnQtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAg
bV9kb2N1bWVudC0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVQ
aGFzZTo6UmVzaXplT2JzZXJ2YXRpb25zKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCmluZGV4IDBiOWFi
YjhjOWNhODhiNDYyOWEyOTM5ODFkZDI1NmU3MTc1ZDBjNDguLjE5MTBlYmU4MTNjYWFiZWFiNTRj
ZmExZjMzNTU0ZDEzOWQzZjI2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
U2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0Ojpub3RpZnlGbHVzaFJlcXVpcmVk
KGNvbnN0IEdyYXBoaWNzTGF5CiAgICAgaWYgKCFtX2NvbnRyb2xsZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fY29udHJvbGxlci0+cGFnZSgpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoKTsKKyAgICBtX2NvbnRyb2xsZXItPnBhZ2UoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpMYXllckZsdXNoKTsKIH0KIAogdm9pZCBTZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OnBhaW50Q29udGVudHMoY29uc3QgR3JhcGhp
Y3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpp
bmRleCA0NjM3YjVkNDM4NTIwN2I2NWI5MjhiMmVjOWMyZDRmZjQ3ZGY1YzIwLi5hNDcwNWMzYzY2
MjQwYTE3MzUxMmI2MzYxMDAxMDY2NGUzZTRhMmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1t
CkBAIC05NSw3ICs5NSw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmhhbmRsZVdo
ZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2CiAKIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWM6OnNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkKIHsKLSAgICBtX3Bh
Z2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgLy8gRklYTUU6IFRoaXMgb25lIG5l
ZWRzIHdvcmsuCisgICAgbV9wYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdV
cGRhdGVQaGFzZTo6U2Nyb2xsaW5nVHJlZVVwZGF0ZSk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWM6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggMmY3YjU4OTIzMmZhNzIy
MzQ2ZjcwMmE4ZDQyZGUxMzNiZGU3ZWVhNS4uYTFkNTAxMGRkNmM2MGEyYjY3ODIyNWRjODJlN2Vh
YjdkOWUwNWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAKQEAgLTM2NDgsMTEgKzM2NDgsMTIgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tp
bmc6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGNvbnN0IFN0
cmkKIHsKIH0KIAotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoUmVxdWlyZWQo
Y29uc3QgR3JhcGhpY3NMYXllciopCit2b2lkIFJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5Rmx1
c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBpZiAocmVuZGVy
ZXIoKS5yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNv
bXBvc2l0b3IoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworCisgICAgY29tcG9zaXRvcigp
Lm5vdGlmeUZsdXNoUmVxdWlyZWQobGF5ZXIpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6bm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaChjb25zdCBHcmFwaGljc0xheWVyKiBs
YXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKaW5kZXggNzU3NWRjYTdlYjI0ZWMzYTlkZTcxNjYxN2JmNzIyNTAyY2VjMjNlYS4u
NTFhNGZkZTNiZGQwMzcyNDkzYjFjZjliNzFhNTkyNWFiYjhjZGE5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTUyNiw3
ICs1MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoKQogewogICAgIEFTU0VSVCghbV9mbHVzaGluZ0xheWVycyk7CiAKLSAgICBwYWdlKCku
c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBwYWdlKCkuc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkxheWVyRmx1c2gpOwogfQogCiBGbG9hdFJlY3Qg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5o
CmluZGV4IGMzOTYxNDgzZjRlZTI2YzA1MTgwODJlN2VjMmNkOTc2NTVhNjU0MWQuLmMxNTFlMjNk
MGVmNjVmZWI5OWYwNTdlNWQyMjhlYmJmZDVjMTg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBw
dWJsaWM6CiAKICAgICAvLyBHcmFwaGljc0xheWVycyBidWZmZXIgc3RhdGUsIHdoaWNoIGdldHMg
cHVzaGVkIHRvIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGxheWVycwogICAgIC8vIGF0IHNwZWNp
ZmljIHRpbWVzLgotICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lk
IG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAg
IHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGJvb2wgaXNGbHVzaFJvb3QgPSB0cnVlKTsK
IAogICAgIC8vIENhbGxlZCB3aGVuIHRoZSBHcmFwaGljc0xheWVyIGZvciB0aGUgZ2l2ZW4gUmVu
ZGVyTGF5ZXIgaGFzIGZsdXNoZWQgY2hhbmdlcyBpbnNpZGUgb2YgZmx1c2hQZW5kaW5nTGF5ZXJD
aGFuZ2VzKCkuCkBAIC0zOTYsNyArMzk2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUNv
bXBvc2l0aW5nUG9saWN5KCk7CiAgICAgCiAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudCBpbXBs
ZW1lbnRhdGlvbgotICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xh
eWVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFp
bnRCZWhhdmlvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXN0b21Qb3NpdGlvbkZvclZpc2libGVS
ZWN0Q29tcHV0YXRpb24oY29uc3QgR3JhcGhpY3NMYXllciosIEZsb2F0UG9pbnQmKSBjb25zdCBv
dmVycmlkZTsKICAgICBib29sIGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1faXNUcmFja2luZ1JlcGFpbnRzOyB9CkBAIC00NTQsNiArNDUzLDggQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbmVlZHNDb21wb3NpdGluZ0ZvckNvbnRlbnRPck92ZXJsYXlzKCkgY29u
c3Q7CiAKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisKICAgICB2b2lkIGVu
c3VyZVJvb3RMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVJvb3RMYXllcigpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410441</attachid>
            <date>2020-10-03 15:11:41 -0700</date>
            <delta_ts>2020-10-03 15:27:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216726-20201003151141.patch</filename>
            <type>text/plain</type>
            <size>40255</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZhY2YyZmY4ODI4YmU4
ZDVlODI0MjFkZWIyZDFiZGZmZTA0ZmZiZS4uMzUyMmViYzFkMmE2MjQwOGMwMGZhMzhhYjZhZGQ0
NmI4ZWViYTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTEwLTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVuZGFudCBy
ZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2NoZWR1bGVkIGZyb20gaW5zaWRlIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTY3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmFzaWMgbW9kZWwgZm9yIHNjaGVkdWxpbmcgcmVuZGVyaW5nIHVwZGF0ZXMgaXMg
dGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gdHJpZ2dlciBhbgorICAgICAgICB1cGRhdGUganVzdCBj
YWxscyBQYWdlOjpzY2hlZHVsZVtUaW1lZF1SZW5kZXJpbmdVcGRhdGUoKS4gSG93ZXZlciwgaWYK
KyAgICAgICAgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgaXMgYWxyZWFkeSBvbiB0aGUgc3RhY2ss
IGFuZCB0aGUgd29yayB0byBiZSBzY2hlZHVsZWQgd2lsbCBoYXBwZW4KKyAgICAgICAgbGF0ZXIg
aW4gdGhlIGN1cnJlbnQgdXBkYXRlLCB3ZSBkb24ndCBoYXZlIHRvIHNjaGVkdWxlIGEgbmV3IG9u
ZS4KKworICAgICAgICBUbyBmaXggdGhpcyBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKSBhbmQgcmVs
YXRlZCBmdW5jdGlvbnMgdHJhY2sgd2hpY2ggc3RlcHMgcmVtYWluCisgICAgICAgIGluIHRoZSBj
dXJyZW50IHVwZGF0ZSwgYW5kIGNhbGxlcnMgb2Ygc2NoZWR1bGVbVGltZWRdUmVuZGVyaW5nVXBk
YXRlKCkgcGFzcyB0aGUgdXBkYXRlIHN0ZXBzCisgICAgICAgIGZvciB0aGUgd29yayB0aGV5IG5l
ZWQgdG8gdHJpZ2dlci4gSWYgdGhlIHJlcXVlc3RlZCBzdGVwcyBhcmUgaW5jbHVkZWQgaW4gdGhl
IHJlbWFpbmluZyBzdGVwcworICAgICAgICBubyBuZXcgdXBkYXRlIG5lZWRzIHRvIGJlIHNjaGVk
dWxlZC4gTm90ZSB0aGF0IHJlcXVlc3RpbmcgYSBzdGVwIHdoaWxlIHRoYXQgc3RlcCBpcyBiZWlu
ZyBleGVjdXRlZAorICAgICAgICBoYXMgdG8gc2NoZWR1bGUgYW4gdXBhdGUgKGUuZy4gcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIGluc2lkZSBpdHMgb3duIGNhbGxiYWNrIGhhcyB0byBzY2hlZHVsZSku
CisgICAgICAgIAorICAgICAgICBBdCB0aGUgZW5kIG9mIGFuIHVwZGF0ZSwgaWYgdGhlcmUgYXJl
IGFueSB1bmZ1bGZpbGxlZCBzdGVwcywgdGhlbiB3ZSBzY2hlZHVsZSBhIG5ldyB1cGRhdGUuCisK
KyAgICAgICAgSW4gbXkgYnJpZWYgdGVzdGluZywgdGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2Yg
Y2FsbHMgdG8gUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgYnkgMTAtMjUlCisgICAgICAgIG9uIHNv
bWUgcmVhbCBwYWdlcywgd2hpY2ggY291bGQgYmUgYSBzaWduaWZpY2FudCBwb3dlciBzYXZpbmcu
CisKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOgor
ICAgICAgICAqIGRpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldE5lZWRzRE9NV2luZG93UmVzaXplRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0
aWFsVXBkYXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2No
ZWR1bGVJbml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpz
Y2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZUZvckltYWdlKTogUmVuYW1lIGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2VDbGllbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2NoZWR1bGVDdXJzb3JVcGRhdGUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlU3R5
bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb21wdXRlVW5m
dWxmaWxsZWRSZW5kZXJpbmdTdGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzY2hlZHVs
ZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRh
dGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNvbGF0ZWRVcGRhdGVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld0V4cG9zZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZCk6CisgICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNpemVPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAgICAgICogcGFnZS9XaGVlbEV2
ZW50VGVzdE1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RNb25p
dG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpzY2hlZHVsZUNhbGxiYWNrQ2hlY2spOgorICAgICAg
ICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlmeUZsdXNoUmVx
dWlyZWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hl
ZHVsZVRyZWVTdGF0ZUNvbW1pdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGVGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaFJlcXVp
cmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwog
MjAyMC0xMC0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENh
bGxpbmcgc3VzcGVuZCgpIG9uIGF1ZGlvIGNvbnRleHQgd2l0aCBubyBub2RlIGRvZXMgbm90IHBy
ZXZlbnQgYXV0byB0cmFuc2l0aW9uIHRvIHJ1bm5pbmcgd2hlbiBmaXJzdCBub2RlIGlzIGNyZWF0
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAppbmRl
eCA3YTg1MjE0NDk5ZGRlYmUzMjM0NDhkNmE5NWM5YTE1YjEwYzE0NDlkLi5hNTM5ZWZkMGI2MGY2
MzYxYmE1MTAyMmQ2YjJmMjgxNGU5NjVhOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBEb2N1bWVu
dFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24oKQogICAgIGlmICghc2hvdWxk
UnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmluZ1N1c3BlbnNpb25TdGF0ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RvY3VtZW50LT5wYWdlKCktPnNjaGVkdWxlVGlt
ZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBtX2RvY3VtZW50LT5wYWdlKCktPnNjaGVkdWxlVGlt
ZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9ucyk7CiAgICAg
bV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKaW5kZXggZjIzYWMz
ZGQ2NzU2ZjZjM2Q2ZjUyNjgxNGM3ODVkNWVlM2RkMjYxOC4uMmNiYjBlMDFkYWJmODcyNDBjMDhj
NWVjNTg2OTFiM2VhY2FlNmEyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9E
aXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rp
c3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBMYXllckNv
bnRyb2xsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKICAgICBpZiAoIXBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
cGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJG
bHVzaCk7CiB9CiAKIHZvaWQgTGF5ZXJDb250cm9sbGVyOjplbnN1cmVSb290TGF5ZXIoRmxvYXRT
aXplIHZpZXdTaXplLCBGbG9hdFNpemUgY29udGVudFNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAppbmRleCA4ZTliMjE5MGY4ZTJiMWE3NDlkMzNmYjMyYzE3ZDBlOWZiY2RjZTRjLi41NzQ1OTM1
NGM2ODMyYTFmNGVmZDFhZGIyMTdjNWI0ZTM3ZmIwYjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTU2MCw3ICs1NjAsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBj
b25zdCBVUkwmIHVybCwgRG9jdW1lbnRDbGFzc0ZsYWdzIGRvY3VtZW50Q2xhcwogICAgICwgbV9m
dWxsc2NyZWVuTWFuYWdlciB7IG1ha2VVbmlxdWVSZWY8RnVsbHNjcmVlbk1hbmFnZXI+KCp0aGlz
KSB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQotICAgICwgbV9p
bnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIoKnRoaXMsICZEb2N1bWVudDo6
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSkKKyAgICAsIG1faW50ZXJzZWN0aW9uT2JzZXJ2
ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmludGVyc2VjdGlvbk9ic2Vy
dmVyc0luaXRpYWxVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAgICAgLCBtX2xvYWRFdmVudERl
bGF5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCkBAIC00
MDc3LDEzICs0MDc3LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVZpZXdwb3J0VW5pdHNPblJl
c2l6ZSgpCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50KCkKIHsK
ICAgICBtX25lZWRzRE9NV2luZG93UmVzaXplRXZlbnQgPSB0cnVlOwotICAgIHNjaGVkdWxlVGlt
ZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldE5lZWRz
VmlzdWFsVmlld3BvcnRSZXNpemUoKQogewogICAgIG1fbmVlZHNWaXN1YWxWaWV3cG9ydFJlc2l6
ZUV2ZW50ID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUp
OwogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20tdmlldy8jcnVuLXRoZS1y
ZXNpemUtc3RlcHMKQEAgLTQxMTMsNyArNDExMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZFBlbmRp
bmdTY3JvbGxFdmVudFRhcmdldChDb250YWluZXJOb2RlJiB0YXJnZXQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgc2NoZWR1bGVUaW1lZFJl
bmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCk7CiAKICAgICB0YXJnZXRzLmFwcGVuZCh0YXJnZXQp
OwogfQpAQCAtNDEyMSw3ICs0MTIxLDcgQEAgdm9pZCBEb2N1bWVudDo6YWRkUGVuZGluZ1Njcm9s
bEV2ZW50VGFyZ2V0KENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHZvaWQgRG9jdW1lbnQ6OnNldE5l
ZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCgpCiB7CiAgICAgaWYgKCFtX25lZWRzVmlzdWFs
Vmlld3BvcnRTY3JvbGxFdmVudCkKLSAgICAgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0
ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OlNjcm9sbCk7CiAgICAgbV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQgPSB0
cnVlOwogfQogCkBAIC02NDM3LDEwICs2NDM3LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZVNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpCiAgICAgICAgIG1fc2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLT5yZXN1bWUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2Vydmlj
ZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMg
dGltZXN0YW1wKQordm9pZCBEb2N1bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrcygpCiB7Ci0gICAgaWYgKG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKQotICAg
ICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+c2VydmljZVJlcXVlc3RBbmltYXRp
b25GcmFtZUNhbGxiYWNrcyh0aW1lc3RhbXApOworICAgIGlmIChtX3NjcmlwdGVkQW5pbWF0aW9u
Q29udHJvbGxlciAmJiBkb21XaW5kb3coKSkKKyAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoZG9tV2luZG93
KCktPmZyb3plbk5vd1RpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6d2luZG93U2Ny
ZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKQEAgLTc1MzMsMTMgKzc1
MzMsMTggQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlRHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJ
bWFnZShIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogICAgIG1fZHluYW1pY01lZGlhUXVlcnlE
ZXBlbmRlbnRJbWFnZXMucmVtb3ZlKGVsZW1lbnQpOwogfQogCi12b2lkIERvY3VtZW50OjpzY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkKK3ZvaWQgRG9jdW1lbnQ6OmludGVyc2VjdGlvbk9i
c2VydmVyc0luaXRpYWxVcGRhdGVUaW1lckZpcmVkKCkKK3sKKyAgICBzY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKHsgfSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBz
KQogewogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgbV9pbnRlcnNlY3Rp
b25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIuc3RvcCgpOwogI2VuZGlmCiAgICAgaWYgKGF1
dG8gcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+c2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KHJlcXVlc3RlZFN0ZXBzKTsKIH0KIAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIp
CkBAIC03NzY0LDcgKzc3NjksNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJbnRlcnNlY3Rpb25P
YnNlcnZhdGlvbnMoKQogdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVJbml0aWFsSW50ZXJzZWN0aW9u
T2JzZXJ2YXRpb25VcGRhdGUoKQogewogICAgIGlmIChtX3JlYWR5U3RhdGUgPT0gQ29tcGxldGUp
Ci0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogICAgIGVsc2UgaWYgKCFtX2ludGVyc2VjdGlv
bk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2ludGVy
c2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoaW50ZXJzZWN0
aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZURlbGF5KTsKIH0KQEAgLTc4NTYsNyArNzg2MSw3IEBA
IHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucyhQYWdlJiBwYWdlKQogICAg
ICAgICBnZXRQYXJzZXJMb2NhdGlvbih1cmwsIGxpbmUsIGNvbHVtbik7CiAgICAgICAgIHJlcG9y
dEV4Y2VwdGlvbigiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJl
ZCBub3RpZmljYXRpb25zLiIsIGxpbmUsIGNvbHVtbiwgdXJsLCBudWxscHRyLCBudWxscHRyKTsK
ICAgICAgICAgLy8gU3RhcnRpbmcgYSBuZXcgc2NoZWR1bGUgdGhlIG5leHQgcm91bmQgb2Ygbm90
aWZ5LgotICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoeyB9KTsKICAgICB9CiB9CiAKQEAgLTgxNDAsNiAr
ODE0NSwxNSBAQCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXImIERvY3VtZW50OjplbnN1cmVU
aW1lbGluZXNDb250cm9sbGVyKCkKICAgICByZXR1cm4gKm1fdGltZWxpbmVzQ29udHJvbGxlci5n
ZXQoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMo
KQoreworICAgIGlmICghZG9tV2luZG93KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChh
dXRvKiB0aW1lbGluZXNDb250cm9sbGVyID0gdGhpcy0+dGltZWxpbmVzQ29udHJvbGxlcigpKQor
ICAgICAgICB0aW1lbGluZXNDb250cm9sbGVyLT51cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50
cyhkb21XaW5kb3coKS0+ZnJvemVuTm93VGltZXN0YW1wKCkpOworfQorCiBEb2N1bWVudFRpbWVs
aW5lJiBEb2N1bWVudDo6dGltZWxpbmUoKQogewogICAgIGlmICghbV90aW1lbGluZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzc4MjVjNTRkNGE5MGYzMTQwMWYyNjIwNWIxMTUzY2QyMGY5ZWI1
My4uMmIwMDFhYWJiMjFjYWFhYjIyNzgzMDc5ZjIwYjAyNTIzY2IyZjJiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTIzOSw2ICsyMzksNyBAQCBlbnVtIENvbGxlY3Rpb25UeXBlOwogCiBlbnVt
IGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgOiB1aW50OF90OworZW51bSBjbGFzcyBSZW5kZXJpbmdVcGRh
dGVTdGVwIDogdWludDE2X3Q7CiAKIHVzaW5nIFBsYXRmb3JtRGlzcGxheUlEID0gdWludDMyX3Q7
CiAKQEAgLTEwNjksNyArMTA3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2b2lkIHJlc3VtZVNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogCi0gICAgdm9pZCBzZXJ2aWNlUmVxdWVz
dEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0aW9uU2Vjb25kcyk7CisgICAg
dm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKCk7CiAKICAgICB2b2lk
IHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCk7CiAKQEAgLTEzOTUsNyAr
MTM5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZER5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW50
SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQgcmVtb3ZlRHluYW1pY01lZGlhUXVl
cnlEZXBlbmRlbnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50Jik7CiAKLSAgICB2b2lkIHNjaGVkdWxl
VGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdV
cGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKIAogI2lmIEVOQUJMRShJTlRF
UlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgdm9pZCBhZGRJbnRlcnNlY3Rpb25PYnNlcnZlcihJbnRl
cnNlY3Rpb25PYnNlcnZlciYpOwpAQCAtMTQ4NSw2ICsxNDg2LDcgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25zb2xlTWVzc2FnZUxpc3RlbmVyKFJlZlB0cjxTdHJp
bmdDYWxsYmFjaz4mJik7IC8vIEZvciB0ZXN0aW5nLgogCisgICAgdm9pZCB1cGRhdGVBbmltYXRp
b25zQW5kU2VuZEV2ZW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JUIERvY3VtZW50VGltZWxpbmUm
IHRpbWVsaW5lKCk7CiAgICAgRG9jdW1lbnRUaW1lbGluZSogZXhpc3RpbmdUaW1lbGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGltZWxpbmUuZ2V0KCk7IH0KICAgICBWZWN0b3I8UmVmUHRyPFdlYkFu
aW1hdGlvbj4+IGdldEFuaW1hdGlvbnMoKTsKQEAgLTE2NDcsNiArMTY0OSw4IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1bWVudFNsb3dDYXNlKE5vZGUm
LCBEb2N1bWVudCYpOwogCisgICAgdm9pZCBpbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBk
YXRlVGltZXJGaXJlZCgpOworCiAgICAgdm9pZCBsb2FkRXZlbnREZWxheVRpbWVyRmlyZWQoKTsK
IAogICAgIHZvaWQgcGVuZGluZ1Rhc2tzVGltZXJGaXJlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA1MTdkZjgwMDI1
NWEyOTFjOGQ2NTVmZDZmYjJlY2Y0YWQxYmVjZjJiLi4yOTZmODAwMmVmYzM3OTRiNDk4MGU3YzE4
ZDllOTQxZmJmYzY5Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICBwYWdlLT5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9uRnJhbWVDYWxsYmFj
a3MpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCAzZmExODE3YTlkNjY2OGZiNDMzYjFiZDQ1YzYwODYyZjBjMzg3ZGQ2Li5hOTI1YzMy
OWUyYjQ3M2IwZTUyYzkzMTU0NDU2ZmFiZjJlYzg3MTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTcwMyw3ICs3MDMsNyBAQCB2b2lkIENhY2hl
ZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNvbnN0IEltYWdlJiBpbWFnZSkK
IAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZEltYWdlQ2xpZW50PiB3YWxr
ZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoYXV0byogY2xpZW50ID0gd2Fsa2VyLm5leHQoKSkK
LSAgICAgICAgY2xpZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAg
IGNsaWVudC0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFnZSgqdGhpcyk7CiB9CiAKIGJv
b2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlQ2xpZW50LmgKaW5kZXggMjk1ZTY1NmFiMWViYzFiOTBmZDFhY2U3ODNkMzQxOWMyZjY5
YTA4Yi4uYmE2NDQ1YjdlYTdlZDk2M2Q2MWJmZjMwZjI4YTlhNGVkN2Y5YzEzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKQEAgLTQ5LDcg
KzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUNhY2hlZEltYWdl
Q2xpZW50KENhY2hlZEltYWdlJikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZjk4YmNlMWJmNDY2
OThjYTBlNWRhZGFiZDY0OWM1ZmQ3NTgwZmEyNy4uNmI2YmFkYjFlZWE4NTRjNzNlMmQzZWRkNDJk
OTdlM2ZiMzU1NmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzE1
Myw3ICszMTUzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNjaGVkdWxlQ3Vyc29yVXBkYXRlKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXNTY2hlZHVsZWRDdXJzb3JVcGRhdGUgPSB0cnVl
OwotICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgcGFnZS0+c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6Q3Vyc29yVXBkYXRlKTsKIH0K
IAogdm9pZCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYWVmNjM5YTU3MWUzMGYxYWFhNzczNjZjZjM1
MzA5MjBjM2YwMTU1YS4uZDIyOTI5MmQ4Zjk2NzYyZjZhZmNlYzk0ZGZlYWQ0ZDdkMTRjMzYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNTQ0NCw3ICs1NDQ0LDcgQEAgdm9pZCBG
cmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBv
c2VkUmVjdCkKICAgICB9CiAKICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7
Ci0gICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2Ut
PnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gp
OwogICAgICAgICBwYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VWaWV3RXhw
b3NlZFJlY3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCA2OGRjYzkwNWZmYzRh
MTc5Y2EzYjMwZDA5ZjJmODdlZGEwZGZhNDc1Li4zZmU0OGIzYzA4ZmQxNzZlNWM2MTdiYmFiZWU3
MmRiOTVmZjJhNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lk
IFBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25tZW50KCkKICAgICAgICAgICAg
IHN0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUoKTsKICAg
ICAgICAgZG9jdW1lbnQuc2NoZWR1bGVGdWxsU3R5bGVSZWJ1aWxkKCk7CiAgICAgICAgIGRvY3Vt
ZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKLSAgICAg
ICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBkb2N1
bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1l
ZGlhUXVlcnlFdmFsdWF0aW9uKTsKICAgICB9KTsKIH0KIApAQCAtMTQwNiwyMCArMTQwNiw0MCBA
QCB2b2lkIFBhZ2U6OmxheW91dElmTmVlZGVkKCkKICAgICAgICAgdmlldy0+dXBkYXRlTGF5b3V0
QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogfQogCi12b2lkIFBhZ2U6OnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKCkKK3ZvaWQgUGFnZTo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoT3B0aW9u
U2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQogewotICAgIHJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgaWYgKG1f
cmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlbmRl
cmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyhy
ZXF1ZXN0ZWRTdGVwcyk7CiB9CiAKLXZvaWQgUGFnZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0
PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQogewotICAgIGlmIChjaHJvbWUo
KS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkpCisgICAgaWYgKG1fcmVu
ZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChjaHJv
bWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlVGlt
ZWRSZW5kZXJpbmdVcGRhdGUoKTsKICAgICAgICAgcmV0dXJuOwotICAgIHJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB9CisKKyAg
ICBjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyhyZXF1ZXN0ZWRTdGVwcyk7Cit9CisK
K3ZvaWQgUGFnZTo6Y29tcHV0ZVVuZnVsZmlsbGVkUmVuZGVyaW5nU3RlcHMoT3B0aW9uU2V0PFJl
bmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQoreworICAgIC8vIG1fcmVuZGVyaW5n
VXBkYXRlUmVtYWluaW5nU3RlcHMgb25seSBoYXMgbW9yZSB0aGFuIG9uZSBlbnRyeSBmb3IgdGhl
IHJlLWVudHJhbnQgcmVuZGVyaW5nIHVwZGF0ZSB0cmlnZ2VyZWQgYnkgdGVzdGluZy4KKyAgICAv
LyBGb3Igc2NoZWR1bGluZywgd2Ugb25seSBjYXJlIGFib3V0IHRoZSB2YWx1ZSBvZiB0aGUgZmly
c3QgZW50cnkuCisgICAgYXV0byByZW1haW5pbmdTdGVwcyA9IG1fcmVuZGVyaW5nVXBkYXRlUmVt
YWluaW5nU3RlcHNbMF07CisgICAgYXV0byBzdGVwc0Zvck5leHRVcGRhdGUgPSByZXF1ZXN0ZWRT
dGVwcyAtIHJlbWFpbmluZ1N0ZXBzOworICAgIG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwcy5h
ZGQoc3RlcHNGb3JOZXh0VXBkYXRlKTsKIH0KIAogdm9pZCBQYWdlOjpzY2hlZHVsZUltbWVkaWF0
ZVJlbmRlcmluZ1VwZGF0ZSgpCiB7CisgICAgLy8gRklYTUU6IGZsYWdzPwogICAgIHJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCk7CiB9
CiAKQEAgLTE0MzcsMTEgKzE0NTcsMTQgQEAgdW5zaWduZWQgUGFnZTo6cmVuZGVyaW5nVXBkYXRl
Q291bnQoKSBjb25zdAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uv
d2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5nCiB2b2lkIFBhZ2U6OnVwZGF0ZVJl
bmRlcmluZygpCiB7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmFwcGVuZChSZW5k
ZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOworICAgIGlmIChtX3JlbmRlcmlu
Z1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmZ1bGZpbGxlZFJl
cXVlc3RlZFN0ZXBzID0geyB9OworCisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVw
cy5hcHBlbmQoYWxsUmVuZGVyaW5nVXBkYXRlU3RlcHMpOwogCiAgICAgLy8gVGhpcyBmdW5jdGlv
biBpcyBub3QgcmVlbnRyYW50LCBlLmcuIGEgckFGIGNhbGxiYWNrIG1heSB0cmlnZ2VyIGEgZm9y
Y2VzIHJlcGFpbnQgaW4gdGVzdGluZy4KICAgICAvLyBUaGlzIGlzIHdoeSB3ZSB0cmFjayB1cGRh
dGVSZW5kZXJpbmdQaGFzZSBhcyBhIHN0YWNrLgotICAgIGlmIChtX3VwZGF0ZVJlbmRlcmluZ1Bo
YXNlU3RhY2suc2l6ZSgpID4gMSkgeworICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmlu
Z1N0ZXBzLnNpemUoKSA+IDEpIHsKICAgICAgICAgbGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE0NjYsNTggKzE0ODksNjQgQEAgdm9pZCBQYWdlOjp1cGRhdGVS
ZW5kZXJpbmcoKQogICAgICAgICBpbml0aWFsRG9jdW1lbnRzLmFwcGVuZChtYWtlV2Vha1B0cigm
ZG9jdW1lbnQpKTsKICAgICB9KTsKIAotICAgIC8vIEZsdXNoIGF1dG9mb2N1cyBjYW5kaWRhdGVz
CisgICAgYXV0byBydW5Qcm9jZXNzaW5nU3RlcCA9IFsmXShSZW5kZXJpbmdVcGRhdGVTdGVwIHN0
ZXAsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYpPiYgcGVyRG9jdW1lbnRGdW5j
dGlvbikgeworICAgICAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5y
ZW1vdmUoc3RlcCk7CisgICAgICAgIGZvckVhY2hEb2N1bWVudChwZXJEb2N1bWVudEZ1bmN0aW9u
KTsKKyAgICB9OwogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQp
IHsKKyAgICAvLyBGSVhNRTogRmx1c2ggYXV0b2ZvY3VzIGNhbmRpZGF0ZXMuCisKKyAgICBydW5Q
cm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUsIFtdIChEb2N1bWVudCYg
ZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQucnVuUmVzaXplU3RlcHMoKTsKICAgICB9KTsK
IAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgcnVu
UHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsLCBbXSAoRG9jdW1lbnQm
IGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnJ1blNjcm9sbFN0ZXBzKCk7CiAgICAgfSk7
CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgIHJ1
blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9u
LCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LmV2YWx1YXRlTWVk
aWFRdWVyaWVzQW5kUmVwb3J0Q2hhbmdlcygpOyAgICAgICAgCiAgICAgfSk7CiAKLSAgICBmb3JF
YWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewotICAgICAgICBpZiAoIWRvY3Vt
ZW50LmRvbVdpbmRvdygpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBhdXRvIHRpbWVz
dGFtcCA9IGRvY3VtZW50LmRvbVdpbmRvdygpLT5mcm96ZW5Ob3dUaW1lc3RhbXAoKTsKLSAgICAg
ICAgaWYgKGF1dG8qIHRpbWVsaW5lc0NvbnRyb2xsZXIgPSBkb2N1bWVudC50aW1lbGluZXNDb250
cm9sbGVyKCkpCi0gICAgICAgICAgICB0aW1lbGluZXNDb250cm9sbGVyLT51cGRhdGVBbmltYXRp
b25zQW5kU2VuZEV2ZW50cyh0aW1lc3RhbXApOwotICAgICAgICAvLyBGSVhNRTogUnVuIHRoZSBm
dWxsc2NyZWVuIHN0ZXBzLgotICAgICAgICBkb2N1bWVudC5zZXJ2aWNlUmVxdWVzdEFuaW1hdGlv
bkZyYW1lQ2FsbGJhY2tzKHRpbWVzdGFtcCk7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVy
aW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9ucywgW10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAg
ICAgICBkb2N1bWVudC51cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpOworICAgIH0pOwor
CisgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNjcmVlbiBzdGVwcy4KKyAgICBtX3JlbmRlcmlu
Z1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
RnVsbHNjcmVlbik7CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVw
OjpBbmltYXRpb25GcmFtZUNhbGxiYWNrcywgW10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAg
ICAgICBkb2N1bWVudC5zZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKCk7CiAg
ICAgfSk7CiAKICAgICBsYXlvdXRJZk5lZWRlZCgpOwogCiAjaWYgRU5BQkxFKElOVEVSU0VDVElP
Tl9PQlNFUlZFUikKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkg
eworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlv
bk9ic2VydmF0aW9ucywgW10gKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVu
dC51cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKTsKICAgICB9KTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKLSAgICBmb3JFYWNoRG9jdW1lbnQoWyZdIChEb2N1
bWVudCYgZG9jdW1lbnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVT
dGVwOjpSZXNpemVPYnNlcnZhdGlvbnMsIFsmXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAg
ICAgIGRvY3VtZW50LnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucygqdGhpcyk7CiAgICAgfSk7CiAj
ZW5kaWYKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Cisg
ICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzLCBbXSAoRG9j
dW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGZvciAoYXV0byYgaW1hZ2UgOiBkb2N1bWVudC5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLmFsbENhY2hlZFNWR0ltYWdlcygpKSB7CiAgICAgICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGltYWdlLT5pbnRlcm5hbFBhZ2UoKSkKICAgICAgICAgICAgICAg
ICBwYWdlLT5pc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpOwogICAgICAgICB9CiAgICAgfSk7CiAK
LSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJp
bmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAgICAgZm9yIChhdXRvJiBkb2N1
bWVudCA6IGluaXRpYWxEb2N1bWVudHMpIHsKICAgICAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3Vt
ZW50LT5kb21XaW5kb3coKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5kb21XaW5kb3coKS0+dW5m
cmVlemVOb3dUaW1lc3RhbXAoKTsKICAgICB9CiAKKyAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFp
bmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1v
bml0b3JDYWxsYmFja3MpOworCiAgICAgaWYgKFVOTElLRUxZKGlzTW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkpKQogICAgICAgICB3aGVlbEV2ZW50VGVzdE1vbml0b3IoKS0+Y2hlY2tTaG91bGRGaXJl
Q2FsbGJhY2tzKCk7CiAKQEAgLTE1MjksMjAgKzE1NTgsMTYgQEAgdm9pZCBQYWdlOjp1cGRhdGVS
ZW5kZXJpbmcoKQogCiAgICAgaWYgKCFpc1NWR0ltYWdlUGFnZSkKICAgICAgICAgdHJhY2VQb2lu
dChSZW5kZXJpbmdVcGRhdGVFbmQpOwotCi0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhh
c2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5n
KTsKIH0KIAogdm9pZCBQYWdlOjppc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpCiB7CiAgICAgdXBk
YXRlUmVuZGVyaW5nKCk7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLnJlbW92ZUxh
c3QoKTsKKyAgICByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKIH0KIAogdm9pZCBQYWdlOjpk
b0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKIHsKLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQ
aGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJp
bmcpOwotCiAgICAgLy8gQ29kZSBoZXJlIHNob3VsZCBkbyBvbmNlLXBlci1mcmFtZSB3b3JrIHRo
YXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFuZCByZXF1aXJlcwogICAgIC8v
IGxheW91dCB0byBiZSB1cC10by1kYXRlLiBJdCBzaG91bGQgbm90IHJ1biBzY3JpcHQsIHRyaWdn
ZXIgbGF5b3V0LCBvciBkaXJ0eSBsYXlvdXQuCiAKQEAgLTE1NTUsNyArMTU4MCwxMiBAQCB2b2lk
IFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0KICNlbmRpZgogCi0gICAgZm9y
RWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBhdXRvIHJ1blByb2Nl
c3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CisgICAgICAgIG1f
cmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShzdGVwKTsKKyAgICAg
ICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24pOworICAgIH07CisKKyAgICBy
dW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJzb3JVcGRhdGUsIFtdIChE
b2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQu
ZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVDdXJzb3JJ
Zk5lZWRlZCgpOwogICAgIH0pOwpAQCAtMTU3NCw2ICsxNjA0LDggQEAgdm9pZCBQYWdlOjpkb0Fm
dGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgogCisgICAgbV9yZW5kZXJpbmdV
cGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkV2
ZW50UmVnaW9uVXBkYXRlKTsKKwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIC8v
IHVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCkgbmVlZHMgdG8gYmUgY2FsbGVkIG9ubHkgb24gdGhl
IHRvcCBkb2N1bWVudC4KICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1haW5G
cmFtZSgpLmRvY3VtZW50KCkpCkBAIC0xNTk2LDE0ICsxNjI4LDEwIEBAIHZvaWQgUGFnZTo6ZG9B
ZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIEFTU0VSVCghZnJhbWVWaWV3IHx8ICFmcmFt
ZVZpZXctPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KICNlbmRpZgotCi0gICAgQVNTRVJUKG1fdXBk
YXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6Oklu
VXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0
ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3MpCiB7Ci0gICAg
QVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBk
YXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKLQogICAgIGF1dG8qIHZpZXcgPSBtYWluRnJh
bWUoKS52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm47CkBAIC0xNjExLDIz
ICsxNjM5LDM0IEBAIHZvaWQgUGFnZTo6ZmluYWxpemVSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0
PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzCiAgICAgaWYgKGZsYWdzLmNvbnRh
aW5zKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkludmFsaWRhdGVJbWFnZXNXaXRoQXN5
bmNEZWNvZGVzKSkKICAgICAgICAgdmlldy0+aW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29k
ZXMoKTsKIAotICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPSBSZW5kZXJp
bmdVcGRhdGVQaGFzZTo6TGF5ZXJGbHVzaGluZzsKKyAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFp
bmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7
CiAKICAgICB2aWV3LT5mbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsK
IAotICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPSBSZW5kZXJpbmdVcGRh
dGVQaGFzZTo6UG9zdExheWVyRmx1c2g7Ci0KICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQor
ICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJp
bmdVcGRhdGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlKTsKKwogICAgIGlmIChhdXRvKiBzY3Jv
bGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsKICAgICAg
ICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCk7CiAgICAg
ICAgIGlmIChmbGFncy5jb250YWlucyhGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzOjpBcHBs
eVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucykpCiAgICAgICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+YXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMoKTsKLSAgICAgICAgICAg
IAorCiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kaWRDb21wbGV0ZVJlbmRlcmluZ1Vw
ZGF0ZSgpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNr
LnJlbW92ZUxhc3QoKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVw
cy5sYXN0KCkuaXNFbXB0eSgpKTsKKyAgICByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKK30K
Kwordm9pZCBQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKQoreworICAgIG1fcmVuZGVy
aW5nVXBkYXRlUmVtYWluaW5nU3RlcHMucmVtb3ZlTGFzdCgpOworCisgICAgaWYgKG1fdW5mdWxm
aWxsZWRSZXF1ZXN0ZWRTdGVwcykgeworICAgICAgICByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIo
KS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBtX3VuZnVsZmlsbGVkUmVxdWVz
dGVkU3RlcHMgPSB7IH07CisgICAgfQogfQogCiB2b2lkIFBhZ2U6OnN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbnMoKQpAQCAtMjkzMSw3ICsyOTcwLDcgQEAgdm9pZCBQYWdlOjphY2Nlc3NpYmlsaXR5
U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGZvckVhY2hEb2N1bWVudChbXSAoYXV0byYgZG9jdW1l
bnQpIHsKICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmV2YWx1YXRlTWVkaWFRdWVyaWVz
Rm9yQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCk7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0
ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllcygpOwotICAgICAgICBkb2N1bWVudC5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIGRvY3VtZW50LnNjaGVkdWxlVGlt
ZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2YWx1YXRp
b24pOwogICAgIH0pOwogfQogCkBAIC0yOTQxLDcgKzI5ODAsNyBAQCB2b2lkIFBhZ2U6OmFwcGVh
cmFuY2VEaWRDaGFuZ2UoKQogICAgICAgICBkb2N1bWVudC5zdHlsZVNjb3BlKCkuZGlkQ2hhbmdl
U3R5bGVTaGVldEVudmlyb25tZW50KCk7CiAgICAgICAgIGRvY3VtZW50LnN0eWxlU2NvcGUoKS5l
dmFsdWF0ZU1lZGlhUXVlcmllc0ZvckFwcGVhcmFuY2VDaGFuZ2UoKTsKICAgICAgICAgZG9jdW1l
bnQudXBkYXRlRWxlbWVudHNBZmZlY3RlZEJ5TWVkaWFRdWVyaWVzKCk7Ci0gICAgICAgIGRvY3Vt
ZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgZG9jdW1lbnQuc2No
ZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpNZWRpYVF1ZXJ5
RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMjExN2EyM2E4ODAy
ZDdmYzc0ZjA1ZTdhZGU2MDhiODRhYjUzMGYzOC4uODM4NTBmN2ZkZjM1OGRjYWI2NDdiNDNkMzQ2
Y2E3YzcxZDI3MzE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE2OSw2ICsxNjksNDggQEAgZW51bSBj
bGFzcyBGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzIDogdWludDhfdCB7CiAgICAgSW52YWxp
ZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMgICAgPSAxIDw8IDEsCiB9OwogCitlbnVtIGNsYXNz
IFJlbmRlcmluZ1VwZGF0ZVN0ZXAgOiB1aW50MTZfdCB7CisgICAgUmVzaXplICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBTY3JvbGwgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCAxLAorICAgIE1lZGlhUXVlcnlFdmFsdWF0aW9uICAgICAgICAgICAgPSAxIDw8
IDIsCisgICAgQW5pbWF0aW9ucyAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICBG
dWxsc2NyZWVuICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorICAgIEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2tzICAgICAgICAgPSAxIDw8IDUsCisjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9P
QlNFUlZFUikKKyAgICBJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMgICAgICAgID0gMSA8PCA2LAor
I2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKKyAgICBSZXNpemVPYnNlcnZhdGlv
bnMgICAgICAgICAgICAgID0gMSA8PCA3LAorI2VuZGlmCisgICAgSW1hZ2VzICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgOCwKKyAgICBXaGVlbEV2ZW50TW9uaXRvckNhbGxiYWNrcyAg
ICAgID0gMSA8PCA5LAorICAgIEN1cnNvclVwZGF0ZSAgICAgICAgICAgICAgICAgICAgPSAxIDw8
IDEwLAorICAgIEV2ZW50UmVnaW9uVXBkYXRlICAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAg
IExheWVyRmx1c2ggICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEyLAorICAgIFNjcm9sbGlu
Z1RyZWVVcGRhdGUgICAgICAgICAgICAgPSAxIDw8IDEzLAorfTsKKworY29uc3RleHByIE9wdGlv
blNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiBhbGxSZW5kZXJpbmdVcGRhdGVTdGVwcyA9IHsKKyAg
ICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUsCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6
U2Nyb2xsLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uLAor
ICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbnMsCisgICAgUmVuZGVyaW5nVXBkYXRl
U3RlcDo6RnVsbHNjcmVlbiwKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25GcmFt
ZUNhbGxiYWNrcywKKyNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQorICAgIFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9ucywKKyNlbmRpZgorI2lmIEVO
QUJMRShSRVNJWkVfT0JTRVJWRVIpCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplT2Jz
ZXJ2YXRpb25zLAorI2VuZGlmCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzLAorICAg
IFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzLAorICAgIFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OkN1cnNvclVwZGF0ZSwKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVw
OjpFdmVudFJlZ2lvblVwZGF0ZSwKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNo
LAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1RyZWVVcGRhdGUsCit9OworCiBj
bGFzcyBQYWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDg5LDkgKzUzMSw5IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxGaW5hbGl6
ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAKICAgICAvLyBEbyBpbW1lZGlhdGUgb3IgdGltZWQg
dXBkYXRlIGFzIGRpY3RhdGVkIGJ5IHRoZSBDaHJvbWVDbGllbnQuCi0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+
KTsKICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUgdGhhdCBjb29yZGluYXRlcyB3aXRoIGRpc3Bs
YXkgcmVmcmVzaDsgdGhlIG5vcm1hbCBraW5kIG9mIHVwZGF0ZS4KLSAgICB2b2lkIHNjaGVkdWxl
VGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdV
cGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICAvLyBTY2hlZHVsZSBh
biB1cGRhdGUgaW4gdGhlIGN1cnJlbnQgcnVubG9vcDsgdGhpcyBpcyBhbiBlYWdlciB1cGRhdGUg
dGhhdCBtYXkgdHJpZ2dlciByZW5kZXJpbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGRpc3BsYXkgcmVm
cmVzaC4KICAgICB2b2lkIHNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCk7CiAKQEAg
LTc3MywxMyArODE1LDYgQEAgcHVibGljOgogICAgIE1vbm90b25pY1RpbWUgbGFzdFJlbmRlcmlu
Z1VwZGF0ZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRp
bWVzdGFtcDsgfQogCiBwcml2YXRlOgotICAgIGVudW0gY2xhc3MgUmVuZGVyaW5nVXBkYXRlUGhh
c2UgOiB1aW50OF90IHsKLSAgICAgICAgT3V0c2lkZSwKLSAgICAgICAgSW5VcGRhdGVSZW5kZXJp
bmcsCi0gICAgICAgIExheWVyRmx1c2hpbmcsCi0gICAgICAgIFBvc3RMYXllckZsdXNoCi0gICAg
fTsKLQogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4g
ZG9tYWluOwogICAgICAgICBGcmFtZUxvYWRUeXBlIHR5cGU7CkBAIC04MTUsNiArODUwLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVy
RmlyZWQoKTsKIAogICAgIHZvaWQgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOworICAgIHZvaWQg
cmVuZGVyaW5nVXBkYXRlQ29tcGxldGVkKCk7CisgICAgdm9pZCBjb21wdXRlVW5mdWxmaWxsZWRS
ZW5kZXJpbmdTdGVwcyhPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4pOwogCiAgICAgUmVu
ZGVyaW5nVXBkYXRlU2NoZWR1bGVyJiByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKTsKIApAQCAt
MTAyNCw4ICsxMDYxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNFZGl0YWJsZVJlZ2lvbkVu
YWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBWZWN0b3I8UmVuZGVyaW5nVXBkYXRlUGhh
c2UsIDI+IG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjazsKLQorICAgIFZlY3RvcjxPcHRpb25T
ZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4sIDI+IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3Rl
cHM7CisgICAgT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IG1fdW5mdWxmaWxsZWRSZXF1
ZXN0ZWRTdGVwczsKKyAgICAKICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246
OkxUUiB9OwogICAgIAogICAgIC8vIEZvciB0ZXN0aW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDI1MmJlZjk1MDk4ZGYyZmNhZjBkMjEy
ZTU2ODY5YjhjYzI1MGUxNmUuLmM2MmE5ODU1NDc5MDE0NTI2MTg5NzA3NDAyYjU2ZDcxYzZkN2Q1
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAK
QEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdl
RGV2aWNlU2NhbGVGYWN0b3IoKQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hh
bmdlVmlld0V4cG9zZWRSZWN0KCkKIHsKLSAgICBtX3BhZ2Uuc2NoZWR1bGVUaW1lZFJlbmRlcmlu
Z1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJv
bGxlcjo6ZGlkU2Nyb2xsRnJhbWUoRnJhbWUmIGZyYW1lKQpAQCAtNDEyLDcgKzQxMiw3IEBAIGZs
b2F0IFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2
b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFw
aGljc0xheWVyKikKIHsKLSAgICBtX3BhZ2Uuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgp
OworICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlk
Q2hhbmdlT3ZlcmxheUZyYW1lKFBhZ2VPdmVybGF5JiBvdmVybGF5KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1Jlc2l6ZU9ic2VydmVyLmNwcAppbmRleCAyNTdmYTExYzhjN2JmZWFiNjFhMzRlZjcxMzZjYWJi
YzgwNTU2MGEwLi42Yzg3MjBiYWVhZGJkMWVkZmNkN2M4ZjJkNGJiNGU5Mzk3ZGUxOTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lk
IFJlc2l6ZU9ic2VydmVyOjpvYnNlcnZlKEVsZW1lbnQmIHRhcmdldCkKIAogICAgIGlmIChtX2Rv
Y3VtZW50KSB7CiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZFJlc2l6ZU9ic2VydmVyKCp0aGlzKTsK
LSAgICAgICAgbV9kb2N1bWVudC0+c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAg
ICAgICBtX2RvY3VtZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9ucyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKaW5kZXggMWQxM2ZjNjE5NzEwM2Zk
YjAxZWZjOTQzZmFjMTA2NTIyYzgxMDU2NC4uMTQ3NDE3NmU1ZjA0ZjBkYjE5MTM0MDhlY2IzNDBh
ZmI3YzU4MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVz
dE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0
VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhwZWN0V2hlZWxFbgogICAgIFVO
VVNFRF9QQVJBTShleHBlY3RNb21lbnR1bUVuZCk7CiAjZW5kaWYKIAotICAgIG1fcGFnZS5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVlbEV2ZW50TW9uaXRvckNhbGxiYWNrcyk7CiAKICAg
ICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcgLSBl
eHBlY3QgZW5kL2NhbmNlbCAiIDw8IGV4cGVjdFdoZWVsRW5kT3JDYW5jZWwgPDwgIiwgZXhwZWN0
IG1vbWVudHVtIGVuZCAiIDw8IGV4cGVjdE1vbWVudHVtRW5kKTsKIH0KQEAgLTEyMSwxMyArMTIx
LDEzIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpyZWNlaXZlZFdoZWVsRXZlbnQoY29u
c3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9y
OjpzY2hlZHVsZUNhbGxiYWNrQ2hlY2soKQogewogICAgIGlmIChpc01haW5UaHJlYWQoKSkgewot
ICAgICAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgbV9wYWdl
LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRN
b25pdG9yQ2FsbGJhY2tzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0cihtX3BhZ2UpXSB7CiAgICAg
ICAgIGlmICh3ZWFrUGFnZSkKLSAgICAgICAgICAgIHdlYWtQYWdlLT5zY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpOworICAgICAgICAgICAgd2Vha1BhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3Zlcmxh
eUNvbnRyb2xsZXIubW0KaW5kZXggMGI5YWJiOGM5Y2E4OGI0NjI5YTI5Mzk4MWRkMjU2ZTcxNzVk
MGM0OC4uOGYxN2FjMTVhMWY0NzE3ZjRjZDYzMzhmM2EyNDBjMTI5MzVhOWVmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1t
CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdo
bGlnaHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXkKICAgICBpZiAoIW1f
Y29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250cm9sbGVyLT5wYWdlKCku
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fY29udHJvbGxlci0+cGFnZSgp
LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJG
bHVzaCk7CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6SGlnaGxpZ2h0Ojpw
YWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3Ip
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDI0OWJiOTY5ZjI5ZTg4MzYzZTc2MmUyZjQxMGNh
ZjA3MzYxMTQ0M2UuLmYxMzkyMzcxYmRiMjMzMzU4ZTNiNDUzZTUzNWViMzljMmU5OGQ3OTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xMjMsNiArMTIzLDcgQEAgdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXRFdmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KCkKIHsKICAgICBt
X2V2ZW50VHJhY2tpbmdSZWdpb25zRGlydHkgPSB0cnVlOwogICAgIC8vIFdlIGhhdmUgdG8gc2No
ZWR1bGUgYSBjb21taXQsIGJ1dCB0aGUgY29tcHV0ZWQgbm9uLWZhc3QgcmVnaW9uIG1heSBub3Qg
aGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgorICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGRpc2Ft
YmlndWF0ZSBiZXR3ZWVuIGV2ZW50IHJlZ2lvbnMgaW4gdGhlIHNjcm9sbGluZyB0cmVlLCBhbmQg
dGhvc2UgaW4gR3JhcGhpY3NMYXllcnMuCiAgICAgc2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCmluZGV4IDQ2MzdiNWQ0Mzg1MjA3YjY1YjkyOGIy
ZWM5YzJkNGZmNDdkZjVjMjAuLmI0OWYxMGM5ZmNjMGZhZmJkOTU4ZDcyZTBhMGQ2OGRjNTI3OWJm
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxp
bmdDb29yZGluYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KQEAgLTk1LDcgKzk1LDggQEAgYm9vbCBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChGcmFtZVZpZXcmLCBjb25zdCBQ
bGF0Zm9ybVdoZWVsRXYKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6c2NoZWR1bGVU
cmVlU3RhdGVDb21taXQoKQogewotICAgIG1fcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICAvLyBGSVhNRTogVGhpcyBvbmUgbmVlZHMgd29yay4KKyAgICBtX3BhZ2UtPnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1RyZWVVcGRh
dGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpjb21taXRUcmVlU3RhdGVJ
Zk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5k
ZXggZGZkMGJkOTkxMDNkMGM5ZDNhZDdmNzE2ZDc4YjFjZjBjN2Q0ODAyYi4uYWYxOWQxYzg1M2Jh
NjhjMTI2YmQ4OTIzMWM0YTQzMjQ3M2Q4MmRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTQwMywxMCArMTQwMywxMCBAQCB2b2lkIFJlbmRlckVs
ZW1lbnQ6OmRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJiBjYWNoZWRJbWFn
ZSkKICAgICAgICAgdmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBhdXNlZEltYWdlQW5pbWF0aW9u
cygqdGhpcywgY2FjaGVkSW1hZ2UpOwogfQogCi12b2lkIFJlbmRlckVsZW1lbnQ6OnNjaGVkdWxl
VGltZWRSZW5kZXJpbmdVcGRhdGUoKQordm9pZCBSZW5kZXJFbGVtZW50OjpzY2hlZHVsZVJlbmRl
cmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikKIHsKICAgICBpZiAoYXV0byogcGFnZSA9
IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzKTsKIH0KIAogYm9vbCBSZW5kZXJFbGVtZW50OjpyZXBh
aW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCmluZGV4IGJhMzQ4YjdhNTM5MDhmOTEwOWQ3NWE0NGZlMGViYWExNzVk
NTU0ODYuLjQyYzI3OGFhYTRiMGI3NDczYWNlOTIzMjgwNWI3YzBlMWQ1YWVhOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMzIzLDcgKzMyMyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEoKSBmaW5hbCB7IHJldHVybiAh
aXNWaXNpYmxlSW5WaWV3cG9ydCgpOyB9CiAgICAgVmlzaWJsZUluVmlld3BvcnRTdGF0ZSBpbWFn
ZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiwgSW1hZ2VBbmltYXRpbmdTdGF0ZSwgY29uc3Qg
SW50UmVjdCogY2hhbmdlUmVjdCkgZmluYWw7CiAgICAgdm9pZCBkaWRSZW1vdmVDYWNoZWRJbWFn
ZUNsaWVudChDYWNoZWRJbWFnZSYpIGZpbmFsOwotICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpIGZpbmFsOworICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJ
bWFnZShDYWNoZWRJbWFnZSYpIGZpbmFsOwogCiAgICAgYm9vbCBnZXRMZWFkaW5nQ29ybmVyKEZs
b2F0UG9pbnQmIG91dHB1dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNvbnN0OwogICAgIGJvb2wgZ2V0
VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0LCBib29sJiBpbnNpZGVGaXhlZCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDljYTBmOTNiYmJjMWQ1MWQ5MDBjOWZmOWY4MTA3MzY0OTU1ZGZlMmUuLjJkYmE1YjFk
N2E5MzA3OTZmNzA0MTAyODBhZDBkMTg3ZGUxZGI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zNjQ4LDExICszNjQ4LDEyIEBA
IHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdy
YXBoaWNzTGF5ZXIqLCBjb25zdCBTdHJpCiB7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5n
Ojpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKQordm9pZCBSZW5kZXJM
YXllckJhY2tpbmc6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciogbGF5
ZXIpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkucmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBjb21wb3NpdG9yKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
KTsKKworICAgIGNvbXBvc2l0b3IoKS5ub3RpZnlGbHVzaFJlcXVpcmVkKGxheWVyKTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2go
Y29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDc1NzVkY2E3ZWIyNGVjM2E5ZGU3
MTY2MTdiZjcyMjUwMmNlYzIzZWEuLmY1YmY3YjQ4MDA1MTBiZjM3YmIxOGUzMDE0NDk5MmYxZjQ4
ZTI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBBU1NFUlQoIW1fZmx1c2hpbmdM
YXllcnMpOwogCi0gICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgcGFn
ZSgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1
c2gpOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aXNpYmxlUmVjdEZv
ckxheWVyRmx1c2hpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGMzOTYxNDgzZjRlZTI2YzA1MTgwODJlN2VjMmNk
OTc2NTVhNjU0MWQuLmMxNTFlMjNkMGVmNjVmZWI5OWYwNTdlNWQyMjhlYmJmZDVjMTg1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgK
QEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHcmFwaGljc0xheWVycyBidWZm
ZXIgc3RhdGUsIHdoaWNoIGdldHMgcHVzaGVkIHRvIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGxh
eWVycwogICAgIC8vIGF0IHNwZWNpZmljIHRpbWVzLgotICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoKTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NM
YXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGJvb2wg
aXNGbHVzaFJvb3QgPSB0cnVlKTsKIAogICAgIC8vIENhbGxlZCB3aGVuIHRoZSBHcmFwaGljc0xh
eWVyIGZvciB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgaGFzIGZsdXNoZWQgY2hhbmdlcyBpbnNpZGUg
b2YgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkuCkBAIC0zOTYsNyArMzk2LDYgQEAgcHJpdmF0
ZToKICAgICBib29sIHVwZGF0ZUNvbXBvc2l0aW5nUG9saWN5KCk7CiAgICAgCiAgICAgLy8gR3Jh
cGhpY3NMYXllckNsaWVudCBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1
aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludENvbnRl
bnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXN0
b21Qb3NpdGlvbkZvclZpc2libGVSZWN0Q29tcHV0YXRpb24oY29uc3QgR3JhcGhpY3NMYXllcios
IEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzVHJhY2tpbmdSZXBhaW50
cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUcmFja2luZ1JlcGFpbnRzOyB9CkBAIC00
NTQsNiArNDUzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbmVlZHNDb21wb3NpdGluZ0ZvckNv
bnRlbnRPck92ZXJsYXlzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKCk7CisKICAgICB2b2lkIGVuc3VyZVJvb3RMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVJv
b3RMYXllcigpOwogCg==
</data>
<flag name="commit-queue"
          id="426382"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410442</attachid>
            <date>2020-10-03 15:21:49 -0700</date>
            <delta_ts>2020-10-03 21:11:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216726-20201003152148.patch</filename>
            <type>text/plain</type>
            <size>41593</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZhY2YyZmY4ODI4YmU4
ZDVlODI0MjFkZWIyZDFiZGZmZTA0ZmZiZS4uMzUyMmViYzFkMmE2MjQwOGMwMGZhMzhhYjZhZGQ0
NmI4ZWViYTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTEwLTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVuZGFudCBy
ZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2NoZWR1bGVkIGZyb20gaW5zaWRlIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTY3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmFzaWMgbW9kZWwgZm9yIHNjaGVkdWxpbmcgcmVuZGVyaW5nIHVwZGF0ZXMgaXMg
dGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gdHJpZ2dlciBhbgorICAgICAgICB1cGRhdGUganVzdCBj
YWxscyBQYWdlOjpzY2hlZHVsZVtUaW1lZF1SZW5kZXJpbmdVcGRhdGUoKS4gSG93ZXZlciwgaWYK
KyAgICAgICAgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgaXMgYWxyZWFkeSBvbiB0aGUgc3RhY2ss
IGFuZCB0aGUgd29yayB0byBiZSBzY2hlZHVsZWQgd2lsbCBoYXBwZW4KKyAgICAgICAgbGF0ZXIg
aW4gdGhlIGN1cnJlbnQgdXBkYXRlLCB3ZSBkb24ndCBoYXZlIHRvIHNjaGVkdWxlIGEgbmV3IG9u
ZS4KKworICAgICAgICBUbyBmaXggdGhpcyBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKSBhbmQgcmVs
YXRlZCBmdW5jdGlvbnMgdHJhY2sgd2hpY2ggc3RlcHMgcmVtYWluCisgICAgICAgIGluIHRoZSBj
dXJyZW50IHVwZGF0ZSwgYW5kIGNhbGxlcnMgb2Ygc2NoZWR1bGVbVGltZWRdUmVuZGVyaW5nVXBk
YXRlKCkgcGFzcyB0aGUgdXBkYXRlIHN0ZXBzCisgICAgICAgIGZvciB0aGUgd29yayB0aGV5IG5l
ZWQgdG8gdHJpZ2dlci4gSWYgdGhlIHJlcXVlc3RlZCBzdGVwcyBhcmUgaW5jbHVkZWQgaW4gdGhl
IHJlbWFpbmluZyBzdGVwcworICAgICAgICBubyBuZXcgdXBkYXRlIG5lZWRzIHRvIGJlIHNjaGVk
dWxlZC4gTm90ZSB0aGF0IHJlcXVlc3RpbmcgYSBzdGVwIHdoaWxlIHRoYXQgc3RlcCBpcyBiZWlu
ZyBleGVjdXRlZAorICAgICAgICBoYXMgdG8gc2NoZWR1bGUgYW4gdXBhdGUgKGUuZy4gcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIGluc2lkZSBpdHMgb3duIGNhbGxiYWNrIGhhcyB0byBzY2hlZHVsZSku
CisgICAgICAgIAorICAgICAgICBBdCB0aGUgZW5kIG9mIGFuIHVwZGF0ZSwgaWYgdGhlcmUgYXJl
IGFueSB1bmZ1bGZpbGxlZCBzdGVwcywgdGhlbiB3ZSBzY2hlZHVsZSBhIG5ldyB1cGRhdGUuCisK
KyAgICAgICAgSW4gbXkgYnJpZWYgdGVzdGluZywgdGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2Yg
Y2FsbHMgdG8gUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgYnkgMTAtMjUlCisgICAgICAgIG9uIHNv
bWUgcmVhbCBwYWdlcywgd2hpY2ggY291bGQgYmUgYSBzaWduaWZpY2FudCBwb3dlciBzYXZpbmcu
CisKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOgor
ICAgICAgICAqIGRpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldE5lZWRzRE9NV2luZG93UmVzaXplRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0
aWFsVXBkYXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2No
ZWR1bGVJbml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpz
Y2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZUZvckltYWdlKTogUmVuYW1lIGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2VDbGllbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2NoZWR1bGVDdXJzb3JVcGRhdGUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlU3R5
bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb21wdXRlVW5m
dWxmaWxsZWRSZW5kZXJpbmdTdGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzY2hlZHVs
ZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRh
dGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNvbGF0ZWRVcGRhdGVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld0V4cG9zZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZCk6CisgICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNpemVPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAgICAgICogcGFnZS9XaGVlbEV2
ZW50VGVzdE1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RNb25p
dG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpzY2hlZHVsZUNhbGxiYWNrQ2hlY2spOgorICAgICAg
ICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlmeUZsdXNoUmVx
dWlyZWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hl
ZHVsZVRyZWVTdGF0ZUNvbW1pdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGVGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaFJlcXVp
cmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwog
MjAyMC0xMC0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENh
bGxpbmcgc3VzcGVuZCgpIG9uIGF1ZGlvIGNvbnRleHQgd2l0aCBubyBub2RlIGRvZXMgbm90IHBy
ZXZlbnQgYXV0byB0cmFuc2l0aW9uIHRvIHJ1bm5pbmcgd2hlbiBmaXJzdCBub2RlIGlzIGNyZWF0
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBmMDdiMDRhNzAyMjA1ZDBmYjU4ZGZh
NzBmOGRhNmM0Mjc5MjhiMjJlLi41YTE1M2QyOTVhNzk5M2JlOWJiYWE0ODQxNDU2OTZlMDkyYzg5
ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAt
MTAtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdW5kYW50IHJlbmRlcmluZyB1cGRhdGVzIGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUg
UGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNjaGVkdWxlIGZvciBsYXllciBmbHVzaC4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGVGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludF0pOgorCiAyMDIwLTEwLTAxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIGluZnJhc3RydWN0
dXJlIGZvciBBdWRpb1dvcmtsZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmNwcAppbmRleCA3YTg1MjE0NDk5ZGRlYmUzMjM0NDhkNmE5NWM5YTE1YjEwYzE0
NDlkLi5hNTM5ZWZkMGI2MGY2MzYxYmE1MTAyMmQ2YjJmMjgxNGU5NjVhOTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0xNjYsNyArMTY2
LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24o
KQogICAgIGlmICghc2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmlu
Z1N1c3BlbnNpb25TdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RvY3VtZW50LT5w
YWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBtX2RvY3VtZW50LT5w
YWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
QW5pbWF0aW9ucyk7CiAgICAgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxl
ci5jcHAKaW5kZXggZjIzYWMzZGQ2NzU2ZjZjM2Q2ZjUyNjgxNGM3ODVkNWVlM2RkMjYxOC4uMmNi
YjBlMDFkYWJmODcyNDBjMDhjNWVjNTg2OTFiM2VhY2FlNmEyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0xMjUsNyArMTI1
LDcgQEAgdm9pZCBMYXllckNvbnRyb2xsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlKCk7CisgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5n
VXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgTGF5ZXJDb250cm9sbGVyOjplbnN1
cmVSb290TGF5ZXIoRmxvYXRTaXplIHZpZXdTaXplLCBGbG9hdFNpemUgY29udGVudFNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4ZTliMjE5MGY4ZTJiMWE3NDlkMzNmYjMyYzE3ZDBl
OWZiY2RjZTRjLi41NzQ1OTM1NGM2ODMyYTFmNGVmZDFhZGIyMTdjNWI0ZTM3ZmIwYjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU2MCw3ICs1NjAsNyBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgRG9jdW1lbnRDbGFzc0ZsYWdzIGRvY3Vt
ZW50Q2xhcwogICAgICwgbV9mdWxsc2NyZWVuTWFuYWdlciB7IG1ha2VVbmlxdWVSZWY8RnVsbHNj
cmVlbk1hbmFnZXI+KCp0aGlzKSB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09C
U0VSVkVSKQotICAgICwgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIo
KnRoaXMsICZEb2N1bWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSkKKyAgICAsIG1f
aW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6
OmludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAg
ICAgLCBtX2xvYWRFdmVudERlbGF5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVs
YXlUaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCkBAIC00MDc3LDEzICs0MDc3LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZVZpZXdwb3J0VW5pdHNPblJlc2l6ZSgpCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc0RPTVdpbmRv
d1Jlc2l6ZUV2ZW50KCkKIHsKICAgICBtX25lZWRzRE9NV2luZG93UmVzaXplRXZlbnQgPSB0cnVl
OwotICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBzY2hlZHVsZVRpbWVk
UmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRSZXNpemUoKQogewogICAgIG1fbmVlZHNW
aXN1YWxWaWV3cG9ydFJlc2l6ZUV2ZW50ID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVRpbWVkUmVuZGVy
aW5nVXBkYXRlKCk7CisgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdV
cGRhdGVTdGVwOjpSZXNpemUpOwogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20tdmlldy8jcnVuLXRoZS1yZXNpemUtc3RlcHMKQEAgLTQxMTMsNyArNDExMyw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldChDb250YWluZXJOb2RlJiB0YXJn
ZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKLSAgICAg
ICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVk
UmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCk7CiAKICAgICB0YXJn
ZXRzLmFwcGVuZCh0YXJnZXQpOwogfQpAQCAtNDEyMSw3ICs0MTIxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6YWRkUGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0KENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHZv
aWQgRG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCgpCiB7CiAgICAg
aWYgKCFtX25lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCkKLSAgICAgICAgc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCk7CiAgICAgbV9uZWVkc1Zpc3VhbFZpZXdw
b3J0U2Nyb2xsRXZlbnQgPSB0cnVlOwogfQogCkBAIC02NDM3LDEwICs2NDM3LDEwIEBAIHZvaWQg
RG9jdW1lbnQ6OnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpCiAg
ICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5yZXN1bWUoKTsKIH0KIAotdm9p
ZCBEb2N1bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhSZWR1Y2Vk
UmVzb2x1dGlvblNlY29uZHMgdGltZXN0YW1wKQordm9pZCBEb2N1bWVudDo6c2VydmljZVJlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcygpCiB7Ci0gICAgaWYgKG1fc2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyKQotICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+c2Vy
dmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyh0aW1lc3RhbXApOworICAgIGlmICht
X3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciAmJiBkb21XaW5kb3coKSkKKyAgICAgICAgbV9z
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFja3MoZG9tV2luZG93KCktPmZyb3plbk5vd1RpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBE
b2N1bWVudDo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKQEAgLTc1MzMsMTMgKzc1MzMsMTggQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlRHluYW1pY01l
ZGlhUXVlcnlEZXBlbmRlbnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogICAgIG1f
ZHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZXMucmVtb3ZlKGVsZW1lbnQpOwogfQogCi12
b2lkIERvY3VtZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkKK3ZvaWQgRG9jdW1l
bnQ6OmludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lckZpcmVkKCkKK3sKKyAg
ICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKHsgfSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0
ZXA+IHJlcXVlc3RlZFN0ZXBzKQogewogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIp
CiAgICAgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIuc3RvcCgpOwog
I2VuZGlmCiAgICAgaWYgKGF1dG8gcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5zY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKHJlcXVlc3RlZFN0ZXBzKTsKIH0KIAogI2lmIEVOQUJMRShJTlRF
UlNFQ1RJT05fT0JTRVJWRVIpCkBAIC03NzY0LDcgKzc3NjksNyBAQCB2b2lkIERvY3VtZW50Ojp1
cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKQogdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVJ
bml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUoKQogewogICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gQ29tcGxldGUpCi0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICAgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogICAgIGVsc2Ug
aWYgKCFtX2ludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5pc0FjdGl2ZSgp
KQogICAgICAgICBtX2ludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZURlbGF5KTsKIH0KQEAg
LTc4NTYsNyArNzg2MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9u
cyhQYWdlJiBwYWdlKQogICAgICAgICBnZXRQYXJzZXJMb2NhdGlvbih1cmwsIGxpbmUsIGNvbHVt
bik7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0
ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zLiIsIGxpbmUsIGNvbHVtbiwgdXJsLCBu
dWxscHRyLCBudWxscHRyKTsKICAgICAgICAgLy8gU3RhcnRpbmcgYSBuZXcgc2NoZWR1bGUgdGhl
IG5leHQgcm91bmQgb2Ygbm90aWZ5LgotICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKCk7CisgICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoeyB9KTsKICAgICB9
CiB9CiAKQEAgLTgxNDAsNiArODE0NSwxNSBAQCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIm
IERvY3VtZW50OjplbnN1cmVUaW1lbGluZXNDb250cm9sbGVyKCkKICAgICByZXR1cm4gKm1fdGlt
ZWxpbmVzQ29udHJvbGxlci5nZXQoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6dXBkYXRlQW5pbWF0
aW9uc0FuZFNlbmRFdmVudHMoKQoreworICAgIGlmICghZG9tV2luZG93KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiB0aW1lbGluZXNDb250cm9sbGVyID0gdGhpcy0+dGltZWxp
bmVzQ29udHJvbGxlcigpKQorICAgICAgICB0aW1lbGluZXNDb250cm9sbGVyLT51cGRhdGVBbmlt
YXRpb25zQW5kU2VuZEV2ZW50cyhkb21XaW5kb3coKS0+ZnJvemVuTm93VGltZXN0YW1wKCkpOwor
fQorCiBEb2N1bWVudFRpbWVsaW5lJiBEb2N1bWVudDo6dGltZWxpbmUoKQogewogICAgIGlmICgh
bV90aW1lbGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYzc4MjVjNTRkNGE5MGYzMTQwMWYy
NjIwNWIxMTUzY2QyMGY5ZWI1My4uMmIwMDFhYWJiMjFjYWFhYjIyNzgzMDc5ZjIwYjAyNTIzY2Iy
ZjJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIzOSw2ICsyMzksNyBAQCBlbnVtIENvbGxl
Y3Rpb25UeXBlOwogCiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBl
bnVtIGNsYXNzIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgOiB1aW50OF90OworZW51bSBj
bGFzcyBSZW5kZXJpbmdVcGRhdGVTdGVwIDogdWludDE2X3Q7CiAKIHVzaW5nIFBsYXRmb3JtRGlz
cGxheUlEID0gdWludDMyX3Q7CiAKQEAgLTEwNjksNyArMTA3MCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2
b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogCi0gICAg
dm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcyk7CisgICAgdm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2tzKCk7CiAKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCk7CiAKQEAgLTEzOTUsNyArMTM5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZER5bmFtaWNN
ZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQgcmVt
b3ZlRHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50Jik7CiAK
LSAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVk
dWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsK
IAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgdm9pZCBhZGRJbnRlcnNl
Y3Rpb25PYnNlcnZlcihJbnRlcnNlY3Rpb25PYnNlcnZlciYpOwpAQCAtMTQ4NSw2ICsxNDg2LDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25zb2xlTWVzc2FnZUxp
c3RlbmVyKFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJik7IC8vIEZvciB0ZXN0aW5nLgogCisgICAg
dm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JU
IERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKCk7CiAgICAgRG9jdW1lbnRUaW1lbGluZSogZXhp
c3RpbmdUaW1lbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmUuZ2V0KCk7IH0KICAgICBW
ZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGdldEFuaW1hdGlvbnMoKTsKQEAgLTE2NDcsNiAr
MTY0OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1
bWVudFNsb3dDYXNlKE5vZGUmLCBEb2N1bWVudCYpOwogCisgICAgdm9pZCBpbnRlcnNlY3Rpb25P
YnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJGaXJlZCgpOworCiAgICAgdm9pZCBsb2FkRXZlbnRE
ZWxheVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgcGVuZGluZ1Rhc2tzVGltZXJGaXJlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNw
cAppbmRleCA1MTdkZjgwMDI1NWEyOTFjOGQ2NTVmZDZmYjJlY2Y0YWQxYmVjZjJiLi4yOTZmODAw
MmVmYzM3OTRiNDk4MGU3YzE4ZDllOTQxZmJmYzY5Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3
IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQot
ICAgICAgICBwYWdlLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBh
Z2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5p
bWF0aW9uRnJhbWVDYWxsYmFja3MpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAzZmExODE3YTlkNjY2OGZiNDMzYjFiZDQ1YzYwODYy
ZjBjMzg3ZGQ2Li5hOTI1YzMyOWUyYjQ3M2IwZTUyYzkzMTU0NDU2ZmFiZjJlYzg3MTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTcwMyw3ICs3
MDMsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNv
bnN0IEltYWdlJiBpbWFnZSkKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZEltYWdlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoYXV0byogY2xpZW50
ID0gd2Fsa2VyLm5leHQoKSkKLSAgICAgICAgY2xpZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgICAgIGNsaWVudC0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFn
ZSgqdGhpcyk7CiB9CiAKIGJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggMjk1ZTY1NmFiMWViYzFiOTBm
ZDFhY2U3ODNkMzQxOWMyZjY5YTA4Yi4uYmE2NDQ1YjdlYTdlZDk2M2Q2MWJmZjMwZjI4YTlhNGVk
N2Y5YzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJikgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikgeyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggZjk4YmNlMWJmNDY2OThjYTBlNWRhZGFiZDY0OWM1ZmQ3NTgwZmEyNy4uNmI2YmFkYjFl
ZWE4NTRjNzNlMmQzZWRkNDJkOTdlM2ZiMzU1NmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMzE1Myw3ICszMTUzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNjaGVk
dWxlQ3Vyc29yVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXNTY2hlZHVsZWRD
dXJzb3JVcGRhdGUgPSB0cnVlOwotICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7
CisgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
Q3Vyc29yVXBkYXRlKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRmFrZU1vdXNl
TW92ZUV2ZW50U29vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYWVmNjM5YTU3
MWUzMGYxYWFhNzczNjZjZjM1MzA5MjBjM2YwMTU1YS4uZDIyOTI5MmQ4Zjk2NzYyZjZhZmNlYzk0
ZGZlYWQ0ZDdkMTRjMzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNTQ0NCw3
ICs1NDQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxG
bG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKICAgICB9CiAKICAgICBpZiAoYXV0byogcGFnZSA9
IGZyYW1lKCkucGFnZSgpKSB7Ci0gICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkxheWVyRmx1c2gpOwogICAgICAgICBwYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIo
KS5kaWRDaGFuZ2VWaWV3RXhwb3NlZFJlY3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCA2OGRjYzkwNWZmYzRhMTc5Y2EzYjMwZDA5ZjJmODdlZGEwZGZhNDc1Li4zZmU0OGIzYzA4
ZmQxNzZlNWM2MTdiYmFiZWU3MmRiOTVmZjJhNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5
Niw3ICs1OTYsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25t
ZW50KCkKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkRGVjbGFy
YXRpb25zQ2FjaGUoKTsKICAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVGdWxsU3R5bGVSZWJ1aWxk
KCk7CiAgICAgICAgIGRvY3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52
aXJvbm1lbnQoKTsKLSAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0
ZSgpOworICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uKTsKICAgICB9KTsKIH0KIApAQCAt
MTQwNiwyMCArMTQwNiw0MCBAQCB2b2lkIFBhZ2U6OmxheW91dElmTmVlZGVkKCkKICAgICAgICAg
dmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogfQogCi12b2lk
IFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKK3ZvaWQgUGFnZTo6c2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBz
KQogewotICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKCk7CisgICAgaWYgKG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21wdXRlVW5mdWxmaWxs
ZWRSZW5kZXJpbmdTdGVwcyhyZXF1ZXN0ZWRTdGVwcyk7CiB9CiAKLXZvaWQgUGFnZTo6c2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQog
ewotICAgIGlmIChjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCkpCisgICAgaWYgKG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmIChjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoKTsKKyAgICB9CisKKyAgICBjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyhyZXF1
ZXN0ZWRTdGVwcyk7Cit9CisKK3ZvaWQgUGFnZTo6Y29tcHV0ZVVuZnVsZmlsbGVkUmVuZGVyaW5n
U3RlcHMoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQorewor
ICAgIC8vIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMgb25seSBoYXMgbW9yZSB0aGFu
IG9uZSBlbnRyeSBmb3IgdGhlIHJlLWVudHJhbnQgcmVuZGVyaW5nIHVwZGF0ZSB0cmlnZ2VyZWQg
YnkgdGVzdGluZy4KKyAgICAvLyBGb3Igc2NoZWR1bGluZywgd2Ugb25seSBjYXJlIGFib3V0IHRo
ZSB2YWx1ZSBvZiB0aGUgZmlyc3QgZW50cnkuCisgICAgYXV0byByZW1haW5pbmdTdGVwcyA9IG1f
cmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHNbMF07CisgICAgYXV0byBzdGVwc0Zvck5leHRV
cGRhdGUgPSByZXF1ZXN0ZWRTdGVwcyAtIHJlbWFpbmluZ1N0ZXBzOworICAgIG1fdW5mdWxmaWxs
ZWRSZXF1ZXN0ZWRTdGVwcy5hZGQoc3RlcHNGb3JOZXh0VXBkYXRlKTsKIH0KIAogdm9pZCBQYWdl
OjpzY2hlZHVsZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpCiB7CisgICAgLy8gRklYTUU6IGZs
YWdzPwogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlSW1tZWRpYXRlUmVu
ZGVyaW5nVXBkYXRlKCk7CiB9CiAKQEAgLTE0MzcsMTEgKzE0NTcsMTQgQEAgdW5zaWduZWQgUGFn
ZTo6cmVuZGVyaW5nVXBkYXRlQ291bnQoKSBjb25zdAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5nCiB2
b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiB7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFz
ZVN0YWNrLmFwcGVuZChSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwor
ICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV91bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzID0geyB9OworCisgICAgbV9yZW5kZXJpbmdV
cGRhdGVSZW1haW5pbmdTdGVwcy5hcHBlbmQoYWxsUmVuZGVyaW5nVXBkYXRlU3RlcHMpOwogCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBub3QgcmVlbnRyYW50LCBlLmcuIGEgckFGIGNhbGxiYWNr
IG1heSB0cmlnZ2VyIGEgZm9yY2VzIHJlcGFpbnQgaW4gdGVzdGluZy4KICAgICAvLyBUaGlzIGlz
IHdoeSB3ZSB0cmFjayB1cGRhdGVSZW5kZXJpbmdQaGFzZSBhcyBhIHN0YWNrLgotICAgIGlmICht
X3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2suc2l6ZSgpID4gMSkgeworICAgIGlmIChtX3JlbmRl
cmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLnNpemUoKSA+IDEpIHsKICAgICAgICAgbGF5b3V0SWZO
ZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NjYsNTggKzE0ODksNjQgQEAg
dm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgICAgICBpbml0aWFsRG9jdW1lbnRzLmFw
cGVuZChtYWtlV2Vha1B0cigmZG9jdW1lbnQpKTsKICAgICB9KTsKIAotICAgIC8vIEZsdXNoIGF1
dG9mb2N1cyBjYW5kaWRhdGVzCisgICAgYXV0byBydW5Qcm9jZXNzaW5nU3RlcCA9IFsmXShSZW5k
ZXJpbmdVcGRhdGVTdGVwIHN0ZXAsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYp
PiYgcGVyRG9jdW1lbnRGdW5jdGlvbikgeworICAgICAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFp
bmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoc3RlcCk7CisgICAgICAgIGZvckVhY2hEb2N1bWVudChw
ZXJEb2N1bWVudEZ1bmN0aW9uKTsKKyAgICB9OwogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChE
b2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAvLyBGSVhNRTogRmx1c2ggYXV0b2ZvY3VzIGNhbmRp
ZGF0ZXMuCisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNp
emUsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQucnVuUmVzaXpl
U3RlcHMoKTsKICAgICB9KTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRv
Y3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Ny
b2xsLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnJ1blNjcm9s
bFN0ZXBzKCk7CiAgICAgfSk7CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBk
b2N1bWVudCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1l
ZGlhUXVlcnlFdmFsdWF0aW9uLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRv
Y3VtZW50LmV2YWx1YXRlTWVkaWFRdWVyaWVzQW5kUmVwb3J0Q2hhbmdlcygpOyAgICAgICAgCiAg
ICAgfSk7CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewot
ICAgICAgICBpZiAoIWRvY3VtZW50LmRvbVdpbmRvdygpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBhdXRvIHRpbWVzdGFtcCA9IGRvY3VtZW50LmRvbVdpbmRvdygpLT5mcm96ZW5Ob3dU
aW1lc3RhbXAoKTsKLSAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lc0NvbnRyb2xsZXIgPSBkb2N1
bWVudC50aW1lbGluZXNDb250cm9sbGVyKCkpCi0gICAgICAgICAgICB0aW1lbGluZXNDb250cm9s
bGVyLT51cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyh0aW1lc3RhbXApOwotICAgICAgICAv
LyBGSVhNRTogUnVuIHRoZSBmdWxsc2NyZWVuIHN0ZXBzLgotICAgICAgICBkb2N1bWVudC5zZXJ2
aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKHRpbWVzdGFtcCk7CisgICAgcnVuUHJv
Y2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9ucywgW10gKERvY3VtZW50
JiBkb2N1bWVudCkgeworICAgICAgICBkb2N1bWVudC51cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2
ZW50cygpOworICAgIH0pOworCisgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNjcmVlbiBzdGVw
cy4KKyAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6RnVsbHNjcmVlbik7CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25GcmFtZUNhbGxiYWNrcywgW10gKERvY3VtZW50
JiBkb2N1bWVudCkgeworICAgICAgICBkb2N1bWVudC5zZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2tzKCk7CiAgICAgfSk7CiAKICAgICBsYXlvdXRJZk5lZWRlZCgpOwogCiAjaWYg
RU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERv
Y3VtZW50JiBkb2N1bWVudCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9ucywgW10gKERvY3VtZW50JiBkb2N1bWVudCkg
ewogICAgICAgICBkb2N1bWVudC51cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKTsKICAg
ICB9KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKLSAgICBmb3JFYWNo
RG9jdW1lbnQoWyZdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3Rl
cChSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZhdGlvbnMsIFsmXSAoRG9jdW1lbnQm
IGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucygq
dGhpcyk7CiAgICAgfSk7CiAjZW5kaWYKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1l
bnQmIGRvY3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3Rl
cDo6SW1hZ2VzLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGZvciAoYXV0byYg
aW1hZ2UgOiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmFsbENhY2hlZFNWR0ltYWdl
cygpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGltYWdlLT5pbnRlcm5hbFBhZ2Uo
KSkKICAgICAgICAgICAgICAgICBwYWdlLT5pc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpOwogICAg
ICAgICB9CiAgICAgfSk7CiAKLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNr
Lmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAg
ICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGluaXRpYWxEb2N1bWVudHMpIHsKICAgICAgICAgaWYg
KGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb21XaW5kb3coKSkKICAgICAgICAgICAgIGRvY3VtZW50
LT5kb21XaW5kb3coKS0+dW5mcmVlemVOb3dUaW1lc3RhbXAoKTsKICAgICB9CiAKKyAgICBtX3Jl
bmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRl
U3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MpOworCiAgICAgaWYgKFVOTElLRUxZKGlz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpKQogICAgICAgICB3aGVlbEV2ZW50VGVzdE1vbml0b3Io
KS0+Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCk7CiAKQEAgLTE1MjksMjAgKzE1NTgsMTYgQEAg
dm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogCiAgICAgaWYgKCFpc1NWR0ltYWdlUGFnZSkK
ICAgICAgICAgdHJhY2VQb2ludChSZW5kZXJpbmdVcGRhdGVFbmQpOwotCi0gICAgQVNTRVJUKG1f
dXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6
OkluVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjppc29sYXRlZFVwZGF0ZVJlbmRl
cmluZygpCiB7CiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQ
aGFzZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsK
IH0KIAogdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKIHsKLSAgICBBU1NFUlQo
bV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFz
ZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAgICAgLy8gQ29kZSBoZXJlIHNob3VsZCBkbyBvbmNl
LXBlci1mcmFtZSB3b3JrIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFu
ZCByZXF1aXJlcwogICAgIC8vIGxheW91dCB0byBiZSB1cC10by1kYXRlLiBJdCBzaG91bGQgbm90
IHJ1biBzY3JpcHQsIHRyaWdnZXIgbGF5b3V0LCBvciBkaXJ0eSBsYXlvdXQuCiAKQEAgLTE1NTUs
NyArMTU4MCwxMiBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0K
ICNlbmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsK
KyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3Rl
cCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0
aW9uKSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJl
bW92ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24p
OworICAgIH07CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpD
dXJzb3JVcGRhdGUsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtMTU3NCw2ICsxNjA0LDgg
QEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgog
CisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKKwogI2lmIEVOQUJMRShJT1NfVE9V
Q0hfRVZFTlRTKQogICAgIC8vIHVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCkgbmVlZHMgdG8gYmUg
Y2FsbGVkIG9ubHkgb24gdGhlIHRvcCBkb2N1bWVudC4KICAgICBpZiAoUmVmUHRyPERvY3VtZW50
PiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLmRvY3VtZW50KCkpCkBAIC0xNTk2LDE0ICsxNjI4LDEw
IEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIEFTU0VSVCgh
ZnJhbWVWaWV3IHx8ICFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KICNlbmRpZgot
Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVy
aW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjpmaW5h
bGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFn
cz4gZmxhZ3MpCiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0
KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKLQogICAgIGF1
dG8qIHZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjExLDIzICsxNjM5LDM0IEBAIHZvaWQgUGFnZTo6ZmluYWxpemVSZW5kZXJp
bmdVcGRhdGUoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzCiAg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkludmFs
aWRhdGVJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKSkKICAgICAgICAgdmlldy0+aW52YWxpZGF0ZUlt
YWdlc1dpdGhBc3luY0RlY29kZXMoKTsKIAotICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFj
ay5sYXN0KCkgPSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6TGF5ZXJGbHVzaGluZzsKKyAgICBtX3Jl
bmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRl
U3RlcDo6TGF5ZXJGbHVzaCk7CiAKICAgICB2aWV3LT5mbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNs
dWRpbmdTdWJmcmFtZXMoKTsKIAotICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0
KCkgPSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6UG9zdExheWVyRmx1c2g7Ci0KICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQorICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFz
dCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlKTsKKwog
ICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpIHsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvbW1pdFRyZWVTdGF0
ZUlmTmVlZGVkKCk7CiAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucykpCiAgICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+YXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlv
bnMoKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kaWRD
b21wbGV0ZVJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV91cGRhdGVS
ZW5kZXJpbmdQaGFzZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdV
cGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkuaXNFbXB0eSgpKTsKKyAgICByZW5kZXJpbmdVcGRh
dGVDb21wbGV0ZWQoKTsKK30KKwordm9pZCBQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQo
KQoreworICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMucmVtb3ZlTGFzdCgpOwor
CisgICAgaWYgKG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwcykgeworICAgICAgICByZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBt
X3VuZnVsZmlsbGVkUmVxdWVzdGVkU3RlcHMgPSB7IH07CisgICAgfQogfQogCiB2b2lkIFBhZ2U6
OnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKQpAQCAtMjkzMSw3ICsyOTcwLDcgQEAgdm9pZCBQ
YWdlOjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGZvckVhY2hEb2N1bWVu
dChbXSAoYXV0byYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmV2
YWx1YXRlTWVkaWFRdWVyaWVzRm9yQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCk7CiAgICAg
ICAgIGRvY3VtZW50LnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllcygpOwotICAg
ICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIGRv
Y3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
TWVkaWFRdWVyeUV2YWx1YXRpb24pOwogICAgIH0pOwogfQogCkBAIC0yOTQxLDcgKzI5ODAsNyBA
QCB2b2lkIFBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UoKQogICAgICAgICBkb2N1bWVudC5zdHls
ZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7CiAgICAgICAgIGRvY3Vt
ZW50LnN0eWxlU2NvcGUoKS5ldmFsdWF0ZU1lZGlhUXVlcmllc0ZvckFwcGVhcmFuY2VDaGFuZ2Uo
KTsKICAgICAgICAgZG9jdW1lbnQudXBkYXRlRWxlbWVudHNBZmZlY3RlZEJ5TWVkaWFRdWVyaWVz
KCk7Ci0gICAgICAgIGRvY3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAg
ICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRh
dGVTdGVwOjpNZWRpYVF1ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggMjExN2EyM2E4ODAyZDdmYzc0ZjA1ZTdhZGU2MDhiODRhYjUzMGYzOC4uODM4NTBmN2Zk
ZjM1OGRjYWI2NDdiNDNkMzQ2Y2E3YzcxZDI3MzE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE2OSw2
ICsxNjksNDggQEAgZW51bSBjbGFzcyBGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzIDogdWlu
dDhfdCB7CiAgICAgSW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMgICAgPSAxIDw8IDEs
CiB9OwogCitlbnVtIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVN0ZXAgOiB1aW50MTZfdCB7CisgICAg
UmVzaXplICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBTY3JvbGwgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorICAgIE1lZGlhUXVlcnlFdmFsdWF0aW9u
ICAgICAgICAgICAgPSAxIDw8IDIsCisgICAgQW5pbWF0aW9ucyAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMywKKyAgICBGdWxsc2NyZWVuICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA0
LAorICAgIEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzICAgICAgICAgPSAxIDw8IDUsCisjaWYgRU5B
QkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICBJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMg
ICAgICAgID0gMSA8PCA2LAorI2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKKyAg
ICBSZXNpemVPYnNlcnZhdGlvbnMgICAgICAgICAgICAgID0gMSA8PCA3LAorI2VuZGlmCisgICAg
SW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKKyAgICBXaGVlbEV2ZW50
TW9uaXRvckNhbGxiYWNrcyAgICAgID0gMSA8PCA5LAorICAgIEN1cnNvclVwZGF0ZSAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgIEV2ZW50UmVnaW9uVXBkYXRlICAgICAgICAgICAg
ICAgPSAxIDw8IDExLAorICAgIExheWVyRmx1c2ggICAgICAgICAgICAgICAgICAgICAgPSAxIDw8
IDEyLAorICAgIFNjcm9sbGluZ1RyZWVVcGRhdGUgICAgICAgICAgICAgPSAxIDw8IDEzLAorfTsK
KworY29uc3RleHByIE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiBhbGxSZW5kZXJpbmdV
cGRhdGVTdGVwcyA9IHsKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUsCisgICAgUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlh
UXVlcnlFdmFsdWF0aW9uLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbnMsCisg
ICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6RnVsbHNjcmVlbiwKKyAgICBSZW5kZXJpbmdVcGRhdGVT
dGVwOjpBbmltYXRpb25GcmFtZUNhbGxiYWNrcywKKyNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09C
U0VSVkVSKQorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9u
cywKKyNlbmRpZgorI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisgICAgUmVuZGVyaW5nVXBk
YXRlU3RlcDo6UmVzaXplT2JzZXJ2YXRpb25zLAorI2VuZGlmCisgICAgUmVuZGVyaW5nVXBkYXRl
U3RlcDo6SW1hZ2VzLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9y
Q2FsbGJhY2tzLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkN1cnNvclVwZGF0ZSwKKyAgICBS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpFdmVudFJlZ2lvblVwZGF0ZSwKKyAgICBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpMYXllckZsdXNoLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1Ry
ZWVVcGRhdGUsCit9OworCiBjbGFzcyBQYWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBhZ2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDg5LDkgKzUzMSw5IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAKICAgICAvLyBEbyBp
bW1lZGlhdGUgb3IgdGltZWQgdXBkYXRlIGFzIGRpY3RhdGVkIGJ5IHRoZSBDaHJvbWVDbGllbnQu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJl
bmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUgdGhhdCBjb29y
ZGluYXRlcyB3aXRoIGRpc3BsYXkgcmVmcmVzaDsgdGhlIG5vcm1hbCBraW5kIG9mIHVwZGF0ZS4K
LSAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVk
dWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsK
ICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUgaW4gdGhlIGN1cnJlbnQgcnVubG9vcDsgdGhpcyBp
cyBhbiBlYWdlciB1cGRhdGUgdGhhdCBtYXkgdHJpZ2dlciByZW5kZXJpbmcgbW9yZSB0aGFuIG9u
Y2UgcGVyIGRpc3BsYXkgcmVmcmVzaC4KICAgICB2b2lkIHNjaGVkdWxlSW1tZWRpYXRlUmVuZGVy
aW5nVXBkYXRlKCk7CiAKQEAgLTc3MywxMyArODE1LDYgQEAgcHVibGljOgogICAgIE1vbm90b25p
Y1RpbWUgbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsgfQogCiBwcml2YXRlOgotICAgIGVudW0gY2xhc3Mg
UmVuZGVyaW5nVXBkYXRlUGhhc2UgOiB1aW50OF90IHsKLSAgICAgICAgT3V0c2lkZSwKLSAgICAg
ICAgSW5VcGRhdGVSZW5kZXJpbmcsCi0gICAgICAgIExheWVyRmx1c2hpbmcsCi0gICAgICAgIFBv
c3RMYXllckZsdXNoCi0gICAgfTsKLQogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAg
UmVnaXN0cmFibGVEb21haW4gZG9tYWluOwogICAgICAgICBGcmFtZUxvYWRUeXBlIHR5cGU7CkBA
IC04MTUsNiArODUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvbVRpbWVyQWxpZ25tZW50SW50
ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgZG9BZnRlclVwZGF0ZVJlbmRl
cmluZygpOworICAgIHZvaWQgcmVuZGVyaW5nVXBkYXRlQ29tcGxldGVkKCk7CisgICAgdm9pZCBj
b21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyhPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRl
U3RlcD4pOwogCiAgICAgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyJiByZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIoKTsKIApAQCAtMTAyNCw4ICsxMDYxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNFZGl0YWJsZVJlZ2lvbkVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBWZWN0b3I8
UmVuZGVyaW5nVXBkYXRlUGhhc2UsIDI+IG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjazsKLQor
ICAgIFZlY3RvcjxPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4sIDI+IG1fcmVuZGVyaW5n
VXBkYXRlUmVtYWluaW5nU3RlcHM7CisgICAgT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+
IG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwczsKKyAgICAKICAgICBVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogICAgIAogICAgIC8vIEZvciB0ZXN0aW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDI1MmJl
Zjk1MDk4ZGYyZmNhZjBkMjEyZTU2ODY5YjhjYzI1MGUxNmUuLmM2MmE5ODU1NDc5MDE0NTI2MTg5
NzA3NDAyYjU2ZDcxYzZkN2Q1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZU92ZXJsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVy
bGF5Q29udHJvbGxlci5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFBhZ2VPdmVybGF5Q29u
dHJvbGxlcjo6ZGlkQ2hhbmdlRGV2aWNlU2NhbGVGYWN0b3IoKQogCiB2b2lkIFBhZ2VPdmVybGF5
Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld0V4cG9zZWRSZWN0KCkKIHsKLSAgICBtX3BhZ2Uuc2No
ZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lk
IFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkU2Nyb2xsRnJhbWUoRnJhbWUmIGZyYW1lKQpAQCAt
NDEyLDcgKzQxMiw3IEBAIGZsb2F0IFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGV2aWNlU2NhbGVG
YWN0b3IoKSBjb25zdAogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKIHsKLSAgICBtX3BhZ2Uuc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIFBhZ2VPdmVy
bGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlT3ZlcmxheUZyYW1lKFBhZ2VPdmVybGF5JiBvdmVybGF5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcAppbmRleCAyNTdmYTExYzhjN2Jm
ZWFiNjFhMzRlZjcxMzZjYWJiYzgwNTU2MGEwLi42Yzg3MjBiYWVhZGJkMWVkZmNkN2M4ZjJkNGJi
NGU5Mzk3ZGUxOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcApAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIFJlc2l6ZU9ic2VydmVyOjpvYnNlcnZlKEVsZW1lbnQmIHRhcmdl
dCkKIAogICAgIGlmIChtX2RvY3VtZW50KSB7CiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZFJlc2l6
ZU9ic2VydmVyKCp0aGlzKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpOworICAgICAgICBtX2RvY3VtZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9ucyk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKaW5k
ZXggMWQxM2ZjNjE5NzEwM2ZkYjAxZWZjOTQzZmFjMTA2NTIyYzgxMDU2NC4uMTQ3NDE3NmU1ZjA0
ZjBkYjE5MTM0MDhlY2IzNDBhZmI3YzU4MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhw
ZWN0V2hlZWxFbgogICAgIFVOVVNFRF9QQVJBTShleHBlY3RNb21lbnR1bUVuZCk7CiAjZW5kaWYK
IAotICAgIG1fcGFnZS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVlbEV2ZW50TW9uaXRv
ckNhbGxiYWNrcyk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9y
LCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRT
dGFydE1vbml0b3JpbmcgLSBleHBlY3QgZW5kL2NhbmNlbCAiIDw8IGV4cGVjdFdoZWVsRW5kT3JD
YW5jZWwgPDwgIiwgZXhwZWN0IG1vbWVudHVtIGVuZCAiIDw8IGV4cGVjdE1vbWVudHVtRW5kKTsK
IH0KQEAgLTEyMSwxMyArMTIxLDEzIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpyZWNl
aXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHZvaWQgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpzY2hlZHVsZUNhbGxiYWNrQ2hlY2soKQogewogICAgIGlmIChp
c01haW5UaHJlYWQoKSkgewotICAgICAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICAgICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0
cihtX3BhZ2UpXSB7CiAgICAgICAgIGlmICh3ZWFrUGFnZSkKLSAgICAgICAgICAgIHdlYWtQYWdl
LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICAgICAgd2Vha1BhZ2UtPnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9y
Q2FsbGJhY2tzKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggMGI5YWJiOGM5Y2E4OGI0NjI5
YTI5Mzk4MWRkMjU2ZTcxNzVkMGM0OC4uOGYxN2FjMTVhMWY0NzE3ZjRjZDYzMzhmM2EyNDBjMTI5
MzVhOWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhp
Y3NMYXkKICAgICBpZiAoIW1fY29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b250cm9sbGVyLT5wYWdlKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1f
Y29udHJvbGxlci0+cGFnZSgpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5n
VXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NM
YXllclBhaW50QmVoYXZpb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDI0OWJiOTY5ZjI5
ZTg4MzYzZTc2MmUyZjQxMGNhZjA3MzYxMTQ0M2UuLmYxMzkyMzcxYmRiMjMzMzU4ZTNiNDUzZTUz
NWViMzljMmU5OGQ3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xMjMsNiArMTIzLDcg
QEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRFdmVudFRyYWNraW5nUmVnaW9u
c0RpcnR5KCkKIHsKICAgICBtX2V2ZW50VHJhY2tpbmdSZWdpb25zRGlydHkgPSB0cnVlOwogICAg
IC8vIFdlIGhhdmUgdG8gc2NoZWR1bGUgYSBjb21taXQsIGJ1dCB0aGUgY29tcHV0ZWQgbm9uLWZh
c3QgcmVnaW9uIG1heSBub3QgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgorICAgIC8vIEZJWE1FOiBU
aGlzIG5lZWRzIHRvIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIGV2ZW50IHJlZ2lvbnMgaW4gdGhlIHNj
cm9sbGluZyB0cmVlLCBhbmQgdGhvc2UgaW4gR3JhcGhpY3NMYXllcnMuCiAgICAgc2NoZWR1bGVU
cmVlU3RhdGVDb21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCmluZGV4IDQ2Mzdi
NWQ0Mzg1MjA3YjY1YjkyOGIyZWM5YzJkNGZmNDdkZjVjMjAuLmI0OWYxMGM5ZmNjMGZhZmJkOTU4
ZDcyZTBhMGQ2OGRjNTI3OWJmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KQEAgLTk1LDcg
Kzk1LDggQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChG
cmFtZVZpZXcmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXYKIAogdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvck1hYzo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQogewotICAgIG1fcGFnZS0+c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBvbmUgbmVlZHMgd29yay4K
KyAgICBtX3BhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6
OlNjcm9sbGluZ1RyZWVVcGRhdGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Ojpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKaW5kZXggZGZkMGJkOTkxMDNkMGM5ZDNhZDdmNzE2ZDc4YjFjZjBjN2Q0
ODAyYi4uYWYxOWQxYzg1M2JhNjhjMTI2YmQ4OTIzMWM0YTQzMjQ3M2Q4MmRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTQwMywxMCArMTQwMywx
MCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hl
ZEltYWdlJiBjYWNoZWRJbWFnZSkKICAgICAgICAgdmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBh
dXNlZEltYWdlQW5pbWF0aW9ucygqdGhpcywgY2FjaGVkSW1hZ2UpOwogfQogCi12b2lkIFJlbmRl
ckVsZW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQordm9pZCBSZW5kZXJFbGVt
ZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikKIHsKICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzKTsKIH0KIAogYm9vbCBS
ZW5kZXJFbGVtZW50OjpyZXBhaW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29u
c3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IGJhMzQ4YjdhNTM5MDhmOTEw
OWQ3NWE0NGZlMGViYWExNzVkNTU0ODYuLjQyYzI3OGFhYTRiMGI3NDczYWNlOTIzMjgwNWI3YzBl
MWQ1YWVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAt
MzIzLDcgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbCB7IHJldHVybiAhaXNWaXNpYmxlSW5WaWV3cG9ydCgpOyB9CiAgICAgVmlzaWJsZUlu
Vmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiwgSW1hZ2VBbmlt
YXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIGZpbmFsOwotICAgIHZvaWQg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsOworICAgIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGVGb3JJbWFnZShDYWNoZWRJbWFnZSYpIGZpbmFsOwogCiAgICAgYm9vbCBn
ZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91dHB1dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNv
bnN0OwogICAgIGJvb2wgZ2V0VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0LCBib29s
JiBpbnNpZGVGaXhlZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDljYTBmOTNiYmJjMWQ1MWQ5MDBjOWZmOWY4MTA3MzY0
OTU1ZGZlMmUuLjJkYmE1YjFkN2E5MzA3OTZmNzA0MTAyODBhZDBkMTg3ZGUxZGI1YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0z
NjQ4LDExICszNjQ4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlBbmltYXRp
b25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBTdHJpCiB7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKQordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3Qg
R3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkucmVuZGVyVHJlZUJl
aW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21wb3NpdG9yKCkuc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKKworICAgIGNvbXBvc2l0b3IoKS5ub3RpZnlGbHVzaFJlcXVp
cmVkKGxheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoQmVm
b3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDc1
NzVkY2E3ZWIyNGVjM2E5ZGU3MTY2MTdiZjcyMjUwMmNlYzIzZWEuLmY1YmY3YjQ4MDA1MTBiZjM3
YmIxOGUzMDE0NDk5MmYxZjQ4ZTI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBB
U1NFUlQoIW1fZmx1c2hpbmdMYXllcnMpOwogCi0gICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGMzOTYxNDgzZjRl
ZTI2YzA1MTgwODJlN2VjMmNkOTc2NTVhNjU0MWQuLmMxNTFlMjNkMGVmNjVmZWI5OWYwNTdlNWQy
MjhlYmJmZDVjMTg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBH
cmFwaGljc0xheWVycyBidWZmZXIgc3RhdGUsIHdoaWNoIGdldHMgcHVzaGVkIHRvIHRoZSB1bmRl
cmx5aW5nIHBsYXRmb3JtIGxheWVycwogICAgIC8vIGF0IHNwZWNpZmljIHRpbWVzLgotICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWly
ZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzKGJvb2wgaXNGbHVzaFJvb3QgPSB0cnVlKTsKIAogICAgIC8vIENhbGxlZCB3
aGVuIHRoZSBHcmFwaGljc0xheWVyIGZvciB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgaGFzIGZsdXNo
ZWQgY2hhbmdlcyBpbnNpZGUgb2YgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkuCkBAIC0zOTYs
NyArMzk2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUNvbXBvc2l0aW5nUG9saWN5KCk7
CiAgICAgCiAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudCBpbXBsZW1lbnRhdGlvbgotICAgIHZv
aWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXN0b21Qb3NpdGlvbkZvclZpc2libGVSZWN0Q29tcHV0YXRpb24oY29u
c3QgR3JhcGhpY3NMYXllciosIEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUcmFja2lu
Z1JlcGFpbnRzOyB9CkBAIC00NTQsNiArNDUzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbmVl
ZHNDb21wb3NpdGluZ0ZvckNvbnRlbnRPck92ZXJsYXlzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisKICAgICB2b2lkIGVuc3VyZVJvb3RMYXllcigpOwog
ICAgIHZvaWQgZGVzdHJveVJvb3RMYXllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjIzNWQyYzFlZDZhNjA1YzZkYjMyMTBiYWUwMTBjMGFl
MmIxNTgwNC4uNjZhYTRjNmNkNDRkMjEzOGNiNzAxYmY2MWFiMmFlYzk0MzVjMTY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTA4MCw3ICs5MDgw
LDcgQEAgLSAoQk9PTClfZmx1c2hDb21wb3NpdGluZ0NoYW5nZXMKIC0gKHZvaWQpX3NjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlRm9yUGVuZGluZ1RpbGVDYWNoZVJlcGFpbnQKIHsKICAgICBpZiAoYXV0
byogcGFnZSA9IF9wcml2YXRlLT5wYWdlKQotICAgICAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJp
bmdVcGRhdGVTdGVwOjpMYXllckZsdXNoKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410453</attachid>
            <date>2020-10-03 21:12:00 -0700</date>
            <delta_ts>2020-10-04 12:05:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216726-20201003211200.patch</filename>
            <type>text/plain</type>
            <size>42519</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZhY2YyZmY4ODI4YmU4
ZDVlODI0MjFkZWIyZDFiZGZmZTA0ZmZiZS4uMzUyMmViYzFkMmE2MjQwOGMwMGZhMzhhYjZhZGQ0
NmI4ZWViYTAyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTEwLTAzICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZHVuZGFudCBy
ZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2NoZWR1bGVkIGZyb20gaW5zaWRlIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTY3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgYmFzaWMgbW9kZWwgZm9yIHNjaGVkdWxpbmcgcmVuZGVyaW5nIHVwZGF0ZXMgaXMg
dGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gdHJpZ2dlciBhbgorICAgICAgICB1cGRhdGUganVzdCBj
YWxscyBQYWdlOjpzY2hlZHVsZVtUaW1lZF1SZW5kZXJpbmdVcGRhdGUoKS4gSG93ZXZlciwgaWYK
KyAgICAgICAgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgaXMgYWxyZWFkeSBvbiB0aGUgc3RhY2ss
IGFuZCB0aGUgd29yayB0byBiZSBzY2hlZHVsZWQgd2lsbCBoYXBwZW4KKyAgICAgICAgbGF0ZXIg
aW4gdGhlIGN1cnJlbnQgdXBkYXRlLCB3ZSBkb24ndCBoYXZlIHRvIHNjaGVkdWxlIGEgbmV3IG9u
ZS4KKworICAgICAgICBUbyBmaXggdGhpcyBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKSBhbmQgcmVs
YXRlZCBmdW5jdGlvbnMgdHJhY2sgd2hpY2ggc3RlcHMgcmVtYWluCisgICAgICAgIGluIHRoZSBj
dXJyZW50IHVwZGF0ZSwgYW5kIGNhbGxlcnMgb2Ygc2NoZWR1bGVbVGltZWRdUmVuZGVyaW5nVXBk
YXRlKCkgcGFzcyB0aGUgdXBkYXRlIHN0ZXBzCisgICAgICAgIGZvciB0aGUgd29yayB0aGV5IG5l
ZWQgdG8gdHJpZ2dlci4gSWYgdGhlIHJlcXVlc3RlZCBzdGVwcyBhcmUgaW5jbHVkZWQgaW4gdGhl
IHJlbWFpbmluZyBzdGVwcworICAgICAgICBubyBuZXcgdXBkYXRlIG5lZWRzIHRvIGJlIHNjaGVk
dWxlZC4gTm90ZSB0aGF0IHJlcXVlc3RpbmcgYSBzdGVwIHdoaWxlIHRoYXQgc3RlcCBpcyBiZWlu
ZyBleGVjdXRlZAorICAgICAgICBoYXMgdG8gc2NoZWR1bGUgYW4gdXBhdGUgKGUuZy4gcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIGluc2lkZSBpdHMgb3duIGNhbGxiYWNrIGhhcyB0byBzY2hlZHVsZSku
CisgICAgICAgIAorICAgICAgICBBdCB0aGUgZW5kIG9mIGFuIHVwZGF0ZSwgaWYgdGhlcmUgYXJl
IGFueSB1bmZ1bGZpbGxlZCBzdGVwcywgdGhlbiB3ZSBzY2hlZHVsZSBhIG5ldyB1cGRhdGUuCisK
KyAgICAgICAgSW4gbXkgYnJpZWYgdGVzdGluZywgdGhpcyByZWR1Y2VzIHRoZSBudW1iZXIgb2Yg
Y2FsbHMgdG8gUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgYnkgMTAtMjUlCisgICAgICAgIG9uIHNv
bWUgcmVhbCBwYWdlcywgd2hpY2ggY291bGQgYmUgYSBzaWduaWZpY2FudCBwb3dlciBzYXZpbmcu
CisKKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24pOgor
ICAgICAgICAqIGRpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpMYXllckNvbnRyb2xsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldE5lZWRzRE9NV2luZG93UmVzaXplRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRSZXNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6c2V0TmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tz
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0
aWFsVXBkYXRlVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2No
ZWR1bGVJbml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpz
Y2hlZHVsZUFuaW1hdGlvbik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlQ2xpZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZUZvckltYWdlKTogUmVuYW1lIGZvciBjbGFyaXR5LgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2VDbGllbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFu
ZGxlcjo6c2NoZWR1bGVDdXJzb3JVcGRhdGUpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KToKKyAg
ICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dXBkYXRlU3R5
bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb21wdXRlVW5m
dWxmaWxsZWRSZW5kZXJpbmdTdGVwcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzY2hlZHVs
ZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1cGRh
dGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNvbGF0ZWRVcGRhdGVSZW5k
ZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UpOgorICAgICAgICAqIHBhZ2UvUGFn
ZS5oOgorICAgICAgICAqIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld0V4cG9zZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZCk6CisgICAgICAgICogcGFnZS9SZXNpemVPYnNlcnZlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNpemVPYnNlcnZlcjo6b2JzZXJ2ZSk6CisgICAgICAgICogcGFnZS9XaGVlbEV2
ZW50VGVzdE1vbml0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudFRlc3RNb25p
dG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudFRlc3RNb25pdG9yOjpzY2hlZHVsZUNhbGxiYWNrQ2hlY2spOgorICAgICAg
ICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlmeUZsdXNoUmVx
dWlyZWQpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRv
ck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hl
ZHVsZVRyZWVTdGF0ZUNvbW1pdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGVGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaFJlcXVp
cmVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaDoKKwog
MjAyMC0xMC0wMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIENh
bGxpbmcgc3VzcGVuZCgpIG9uIGF1ZGlvIGNvbnRleHQgd2l0aCBubyBub2RlIGRvZXMgbm90IHBy
ZXZlbnQgYXV0byB0cmFuc2l0aW9uIHRvIHJ1bm5pbmcgd2hlbiBmaXJzdCBub2RlIGlzIGNyZWF0
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBmMDdiMDRhNzAyMjA1ZDBmYjU4ZGZh
NzBmOGRhNmM0Mjc5MjhiMjJlLi41YTE1M2QyOTVhNzk5M2JlOWJiYWE0ODQxNDU2OTZlMDkyYzg5
ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAt
MTAtMDMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVkdW5kYW50IHJlbmRlcmluZyB1cGRhdGVzIGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUg
UGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNjcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNjaGVkdWxlIGZvciBsYXllciBmbHVzaC4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGVGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludF0pOgorCiAyMDIwLTEwLTAxICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIGluZnJhc3RydWN0
dXJlIGZvciBBdWRpb1dvcmtsZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmNwcAppbmRleCA3YTg1MjE0NDk5ZGRlYmUzMjM0NDhkNmE5NWM5YTE1YjEwYzE0
NDlkLi5hNTM5ZWZkMGI2MGY2MzYxYmE1MTAyMmQ2YjJmMjgxNGU5NjVhOTNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0xNjYsNyArMTY2
LDcgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZUFuaW1hdGlvblJlc29sdXRpb24o
KQogICAgIGlmICghc2hvdWxkUnVuVXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHNJZ25vcmlu
Z1N1c3BlbnNpb25TdGF0ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RvY3VtZW50LT5w
YWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBtX2RvY3VtZW50LT5w
YWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
QW5pbWF0aW9ucyk7CiAgICAgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkID0gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxl
ci5jcHAKaW5kZXggZjIzYWMzZGQ2NzU2ZjZjM2Q2ZjUyNjgxNGM3ODVkNWVlM2RkMjYxOC4uMmNi
YjBlMDFkYWJmODcyNDBjMDhjNWVjNTg2OTFiM2VhY2FlNmEyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0xMjUsNyArMTI1
LDcgQEAgdm9pZCBMYXllckNvbnRyb2xsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlKCk7CisgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5n
VXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgTGF5ZXJDb250cm9sbGVyOjplbnN1
cmVSb290TGF5ZXIoRmxvYXRTaXplIHZpZXdTaXplLCBGbG9hdFNpemUgY29udGVudFNpemUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4ZTliMjE5MGY4ZTJiMWE3NDlkMzNmYjMyYzE3ZDBl
OWZiY2RjZTRjLi41NzQ1OTM1NGM2ODMyYTFmNGVmZDFhZGIyMTdjNWI0ZTM3ZmIwYjQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU2MCw3ICs1NjAsNyBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgRG9jdW1lbnRDbGFzc0ZsYWdzIGRvY3Vt
ZW50Q2xhcwogICAgICwgbV9mdWxsc2NyZWVuTWFuYWdlciB7IG1ha2VVbmlxdWVSZWY8RnVsbHNj
cmVlbk1hbmFnZXI+KCp0aGlzKSB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09C
U0VSVkVSKQotICAgICwgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIo
KnRoaXMsICZEb2N1bWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSkKKyAgICAsIG1f
aW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6
OmludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lckZpcmVkKQogI2VuZGlmCiAg
ICAgLCBtX2xvYWRFdmVudERlbGF5VGltZXIoKnRoaXMsICZEb2N1bWVudDo6bG9hZEV2ZW50RGVs
YXlUaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShERVZJQ0Vf
T1JJRU5UQVRJT04pCkBAIC00MDc3LDEzICs0MDc3LDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0
ZVZpZXdwb3J0VW5pdHNPblJlc2l6ZSgpCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc0RPTVdpbmRv
d1Jlc2l6ZUV2ZW50KCkKIHsKICAgICBtX25lZWRzRE9NV2luZG93UmVzaXplRXZlbnQgPSB0cnVl
OwotICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBzY2hlZHVsZVRpbWVk
UmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSk7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRSZXNpemUoKQogewogICAgIG1fbmVlZHNW
aXN1YWxWaWV3cG9ydFJlc2l6ZUV2ZW50ID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVRpbWVkUmVuZGVy
aW5nVXBkYXRlKCk7CisgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdV
cGRhdGVTdGVwOjpSZXNpemUpOwogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nz
b20tdmlldy8jcnVuLXRoZS1yZXNpemUtc3RlcHMKQEAgLTQxMTMsNyArNDExMyw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldChDb250YWluZXJOb2RlJiB0YXJn
ZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKLSAgICAg
ICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVk
UmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCk7CiAKICAgICB0YXJn
ZXRzLmFwcGVuZCh0YXJnZXQpOwogfQpAQCAtNDEyMSw3ICs0MTIxLDcgQEAgdm9pZCBEb2N1bWVu
dDo6YWRkUGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0KENvbnRhaW5lck5vZGUmIHRhcmdldCkKIHZv
aWQgRG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCgpCiB7CiAgICAg
aWYgKCFtX25lZWRzVmlzdWFsVmlld3BvcnRTY3JvbGxFdmVudCkKLSAgICAgICAgc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCk7CiAgICAgbV9uZWVkc1Zpc3VhbFZpZXdw
b3J0U2Nyb2xsRXZlbnQgPSB0cnVlOwogfQogCkBAIC02NDM3LDEwICs2NDM3LDEwIEBAIHZvaWQg
RG9jdW1lbnQ6OnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpCiAg
ICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5yZXN1bWUoKTsKIH0KIAotdm9p
ZCBEb2N1bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhSZWR1Y2Vk
UmVzb2x1dGlvblNlY29uZHMgdGltZXN0YW1wKQordm9pZCBEb2N1bWVudDo6c2VydmljZVJlcXVl
c3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcygpCiB7Ci0gICAgaWYgKG1fc2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyKQotICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+c2Vy
dmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyh0aW1lc3RhbXApOworICAgIGlmICht
X3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciAmJiBkb21XaW5kb3coKSkKKyAgICAgICAgbV9z
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFja3MoZG9tV2luZG93KCktPmZyb3plbk5vd1RpbWVzdGFtcCgpKTsKIH0KIAogdm9pZCBE
b2N1bWVudDo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJ
RCkKQEAgLTc1MzMsMTMgKzc1MzMsMTggQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlRHluYW1pY01l
ZGlhUXVlcnlEZXBlbmRlbnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50JiBlbGVtZW50KQogICAgIG1f
ZHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZXMucmVtb3ZlKGVsZW1lbnQpOwogfQogCi12
b2lkIERvY3VtZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkKK3ZvaWQgRG9jdW1l
bnQ6OmludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lckZpcmVkKCkKK3sKKyAg
ICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKHsgfSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0
ZXA+IHJlcXVlc3RlZFN0ZXBzKQogewogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIp
CiAgICAgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIuc3RvcCgpOwog
I2VuZGlmCiAgICAgaWYgKGF1dG8gcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5zY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKHJlcXVlc3RlZFN0ZXBzKTsKIH0KIAogI2lmIEVOQUJMRShJTlRF
UlNFQ1RJT05fT0JTRVJWRVIpCkBAIC03NzY0LDcgKzc3NjksNyBAQCB2b2lkIERvY3VtZW50Ojp1
cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKQogdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVJ
bml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUoKQogewogICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gQ29tcGxldGUpCi0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICAgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogICAgIGVsc2Ug
aWYgKCFtX2ludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5pc0FjdGl2ZSgp
KQogICAgICAgICBtX2ludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdGFy
dE9uZVNob3QoaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZURlbGF5KTsKIH0KQEAg
LTc4NTYsNyArNzg2MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9u
cyhQYWdlJiBwYWdlKQogICAgICAgICBnZXRQYXJzZXJMb2NhdGlvbih1cmwsIGxpbmUsIGNvbHVt
bik7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0
ZWQgd2l0aCB1bmRlbGl2ZXJlZCBub3RpZmljYXRpb25zLiIsIGxpbmUsIGNvbHVtbiwgdXJsLCBu
dWxscHRyLCBudWxscHRyKTsKICAgICAgICAgLy8gU3RhcnRpbmcgYSBuZXcgc2NoZWR1bGUgdGhl
IG5leHQgcm91bmQgb2Ygbm90aWZ5LgotICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKCk7CisgICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoeyB9KTsKICAgICB9
CiB9CiAKQEAgLTgxNDAsNiArODE0NSwxNSBAQCBEb2N1bWVudFRpbWVsaW5lc0NvbnRyb2xsZXIm
IERvY3VtZW50OjplbnN1cmVUaW1lbGluZXNDb250cm9sbGVyKCkKICAgICByZXR1cm4gKm1fdGlt
ZWxpbmVzQ29udHJvbGxlci5nZXQoKTsKIH0KIAordm9pZCBEb2N1bWVudDo6dXBkYXRlQW5pbWF0
aW9uc0FuZFNlbmRFdmVudHMoKQoreworICAgIGlmICghZG9tV2luZG93KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChhdXRvKiB0aW1lbGluZXNDb250cm9sbGVyID0gdGhpcy0+dGltZWxp
bmVzQ29udHJvbGxlcigpKQorICAgICAgICB0aW1lbGluZXNDb250cm9sbGVyLT51cGRhdGVBbmlt
YXRpb25zQW5kU2VuZEV2ZW50cyhkb21XaW5kb3coKS0+ZnJvemVuTm93VGltZXN0YW1wKCkpOwor
fQorCiBEb2N1bWVudFRpbWVsaW5lJiBEb2N1bWVudDo6dGltZWxpbmUoKQogewogICAgIGlmICgh
bV90aW1lbGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYzc4MjVjNTRkNGE5MGYzMTQwMWYy
NjIwNWIxMTUzY2QyMGY5ZWI1My4uMmIwMDFhYWJiMjFjYWFhYjIyNzgzMDc5ZjIwYjAyNTIzY2Iy
ZjJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTIzOSw2ICsyMzksNyBAQCBlbnVtIENvbGxl
Y3Rpb25UeXBlOwogCiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3Q7CiBl
bnVtIGNsYXNzIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgOiB1aW50OF90OworZW51bSBj
bGFzcyBSZW5kZXJpbmdVcGRhdGVTdGVwIDogdWludDE2X3Q7CiAKIHVzaW5nIFBsYXRmb3JtRGlz
cGxheUlEID0gdWludDMyX3Q7CiAKQEAgLTEwNjksNyArMTA3MCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKICAgICB2
b2lkIHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogCi0gICAg
dm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKFJlZHVjZWRSZXNvbHV0
aW9uU2Vjb25kcyk7CisgICAgdm9pZCBzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2tzKCk7CiAKICAgICB2b2lkIHdpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJ
RCk7CiAKQEAgLTEzOTUsNyArMTM5Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZER5bmFtaWNN
ZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYpOwogICAgIHZvaWQgcmVt
b3ZlRHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50Jik7CiAK
LSAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVk
dWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsK
IAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAgICAgdm9pZCBhZGRJbnRlcnNl
Y3Rpb25PYnNlcnZlcihJbnRlcnNlY3Rpb25PYnNlcnZlciYpOwpAQCAtMTQ4NSw2ICsxNDg2LDcg
QEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25zb2xlTWVzc2FnZUxp
c3RlbmVyKFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4mJik7IC8vIEZvciB0ZXN0aW5nLgogCisgICAg
dm9pZCB1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cygpOwogICAgIFdFQkNPUkVfRVhQT1JU
IERvY3VtZW50VGltZWxpbmUmIHRpbWVsaW5lKCk7CiAgICAgRG9jdW1lbnRUaW1lbGluZSogZXhp
c3RpbmdUaW1lbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZWxpbmUuZ2V0KCk7IH0KICAgICBW
ZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGdldEFuaW1hdGlvbnMoKTsKQEAgLTE2NDcsNiAr
MTY0OSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIG1vdmVOb2RlSXRlcmF0b3JzVG9OZXdEb2N1
bWVudFNsb3dDYXNlKE5vZGUmLCBEb2N1bWVudCYpOwogCisgICAgdm9pZCBpbnRlcnNlY3Rpb25P
YnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJGaXJlZCgpOworCiAgICAgdm9pZCBsb2FkRXZlbnRE
ZWxheVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgcGVuZGluZ1Rhc2tzVGltZXJGaXJlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNw
cAppbmRleCA1MTdkZjgwMDI1NWEyOTFjOGQ2NTVmZDZmYjJlY2Y0YWQxYmVjZjJiLi4yOTZmODAw
MmVmYzM3OTRiNDk4MGU3YzE4ZDllOTQxZmJmYzY5Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3
IEBAIHZvaWQgU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVsZUFuaW1hdGlvbigp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQot
ICAgICAgICBwYWdlLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBh
Z2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5p
bWF0aW9uRnJhbWVDYWxsYmFja3MpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAzZmExODE3YTlkNjY2OGZiNDMzYjFiZDQ1YzYwODYy
ZjBjMzg3ZGQ2Li5hOTI1YzMyOWUyYjQ3M2IwZTUyYzkzMTU0NDU2ZmFiZjJlYzg3MTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTcwMyw3ICs3
MDMsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKGNv
bnN0IEltYWdlJiBpbWFnZSkKIAogICAgIENhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyPENhY2hl
ZEltYWdlQ2xpZW50PiB3YWxrZXIobV9jbGllbnRzKTsKICAgICB3aGlsZSAoYXV0byogY2xpZW50
ID0gd2Fsa2VyLm5leHQoKSkKLSAgICAgICAgY2xpZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgICAgIGNsaWVudC0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFn
ZSgqdGhpcyk7CiB9CiAKIGJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlQ2xpZW50LmgKaW5kZXggMjk1ZTY1NmFiMWViYzFiOTBm
ZDFhY2U3ODNkMzQxOWMyZjY5YTA4Yi4uYmE2NDQ1YjdlYTdlZDk2M2Q2MWJmZjMwZjI4YTlhNGVk
N2Y5YzEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
Q2xpZW50LmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJikgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikgeyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAK
aW5kZXggZjk4YmNlMWJmNDY2OThjYTBlNWRhZGFiZDY0OWM1ZmQ3NTgwZmEyNy4uNmI2YmFkYjFl
ZWE4NTRjNzNlMmQzZWRkNDJkOTdlM2ZiMzU1NmJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcApAQCAtMzE1Myw3ICszMTUzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNjaGVk
dWxlQ3Vyc29yVXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXNTY2hlZHVsZWRD
dXJzb3JVcGRhdGUgPSB0cnVlOwotICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7
CisgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
Q3Vyc29yVXBkYXRlKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRmFrZU1vdXNl
TW92ZUV2ZW50U29vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYWVmNjM5YTU3
MWUzMGYxYWFhNzczNjZjZjM1MzA5MjBjM2YwMTU1YS4uZDIyOTI5MmQ4Zjk2NzYyZjZhZmNlYzk0
ZGZlYWQ0ZDdkMTRjMzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNTQ0NCw3
ICs1NDQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxG
bG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKICAgICB9CiAKICAgICBpZiAoYXV0byogcGFnZSA9
IGZyYW1lKCkucGFnZSgpKSB7Ci0gICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkxheWVyRmx1c2gpOwogICAgICAgICBwYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIo
KS5kaWRDaGFuZ2VWaWV3RXhwb3NlZFJlY3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApp
bmRleCA2OGRjYzkwNWZmYzRhMTc5Y2EzYjMwZDA5ZjJmODdlZGEwZGZhNDc1Li4zZmU0OGIzYzA4
ZmQxNzZlNWM2MTdiYmFiZWU3MmRiOTVmZjJhNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU5
Niw3ICs1OTYsNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVN0eWxlQWZ0ZXJDaGFuZ2VJbkVudmlyb25t
ZW50KCkKICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkRGVjbGFy
YXRpb25zQ2FjaGUoKTsKICAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVGdWxsU3R5bGVSZWJ1aWxk
KCk7CiAgICAgICAgIGRvY3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52
aXJvbm1lbnQoKTsKLSAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0
ZSgpOworICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uKTsKICAgICB9KTsKIH0KIApAQCAt
MTQwNiwyMCArMTQwNiw0MCBAQCB2b2lkIFBhZ2U6OmxheW91dElmTmVlZGVkKCkKICAgICAgICAg
dmlldy0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogfQogCi12b2lk
IFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKK3ZvaWQgUGFnZTo6c2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBz
KQogewotICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKCk7CisgICAgaWYgKG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgp
KSB7CisgICAgICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb21wdXRlVW5mdWxmaWxs
ZWRSZW5kZXJpbmdTdGVwcyhyZXF1ZXN0ZWRTdGVwcyk7CiB9CiAKLXZvaWQgUGFnZTo6c2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQog
ewotICAgIGlmIChjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCkpCisgICAgaWYgKG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgpKSB7
CisgICAgICAgIGlmIChjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoKTsKKyAgICB9CisKKyAgICBjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyhyZXF1
ZXN0ZWRTdGVwcyk7Cit9CisKK3ZvaWQgUGFnZTo6Y29tcHV0ZVVuZnVsZmlsbGVkUmVuZGVyaW5n
U3RlcHMoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQorewor
ICAgIC8vIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMgb25seSBoYXMgbW9yZSB0aGFu
IG9uZSBlbnRyeSBmb3IgdGhlIHJlLWVudHJhbnQgcmVuZGVyaW5nIHVwZGF0ZSB0cmlnZ2VyZWQg
YnkgdGVzdGluZy4KKyAgICAvLyBGb3Igc2NoZWR1bGluZywgd2Ugb25seSBjYXJlIGFib3V0IHRo
ZSB2YWx1ZSBvZiB0aGUgZmlyc3QgZW50cnkuCisgICAgYXV0byByZW1haW5pbmdTdGVwcyA9IG1f
cmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHNbMF07CisgICAgYXV0byBzdGVwc0Zvck5leHRV
cGRhdGUgPSByZXF1ZXN0ZWRTdGVwcyAtIHJlbWFpbmluZ1N0ZXBzOworICAgIG1fdW5mdWxmaWxs
ZWRSZXF1ZXN0ZWRTdGVwcy5hZGQoc3RlcHNGb3JOZXh0VXBkYXRlKTsKIH0KIAogdm9pZCBQYWdl
OjpzY2hlZHVsZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpCiB7CisgICAgLy8gRklYTUU6IGZs
YWdzPwogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlSW1tZWRpYXRlUmVu
ZGVyaW5nVXBkYXRlKCk7CiB9CiAKQEAgLTE0MzcsMTEgKzE0NTcsMTQgQEAgdW5zaWduZWQgUGFn
ZTo6cmVuZGVyaW5nVXBkYXRlQ291bnQoKSBjb25zdAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5nCiB2
b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiB7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFz
ZVN0YWNrLmFwcGVuZChSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwor
ICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmlzRW1wdHkoKSkKKyAgICAg
ICAgbV91bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzID0geyB9OworCisgICAgbV9yZW5kZXJpbmdV
cGRhdGVSZW1haW5pbmdTdGVwcy5hcHBlbmQoYWxsUmVuZGVyaW5nVXBkYXRlU3RlcHMpOwogCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBub3QgcmVlbnRyYW50LCBlLmcuIGEgckFGIGNhbGxiYWNr
IG1heSB0cmlnZ2VyIGEgZm9yY2VzIHJlcGFpbnQgaW4gdGVzdGluZy4KICAgICAvLyBUaGlzIGlz
IHdoeSB3ZSB0cmFjayB1cGRhdGVSZW5kZXJpbmdQaGFzZSBhcyBhIHN0YWNrLgotICAgIGlmICht
X3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2suc2l6ZSgpID4gMSkgeworICAgIGlmIChtX3JlbmRl
cmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLnNpemUoKSA+IDEpIHsKICAgICAgICAgbGF5b3V0SWZO
ZWVkZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0NjYsNTggKzE0ODksNjQgQEAg
dm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogICAgICAgICBpbml0aWFsRG9jdW1lbnRzLmFw
cGVuZChtYWtlV2Vha1B0cigmZG9jdW1lbnQpKTsKICAgICB9KTsKIAotICAgIC8vIEZsdXNoIGF1
dG9mb2N1cyBjYW5kaWRhdGVzCisgICAgYXV0byBydW5Qcm9jZXNzaW5nU3RlcCA9IFsmXShSZW5k
ZXJpbmdVcGRhdGVTdGVwIHN0ZXAsIGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYp
PiYgcGVyRG9jdW1lbnRGdW5jdGlvbikgeworICAgICAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFp
bmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoc3RlcCk7CisgICAgICAgIGZvckVhY2hEb2N1bWVudChw
ZXJEb2N1bWVudEZ1bmN0aW9uKTsKKyAgICB9OwogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChE
b2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAvLyBGSVhNRTogRmx1c2ggYXV0b2ZvY3VzIGNhbmRp
ZGF0ZXMuCisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNp
emUsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQucnVuUmVzaXpl
U3RlcHMoKTsKICAgICB9KTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRv
Y3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Ny
b2xsLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnJ1blNjcm9s
bFN0ZXBzKCk7CiAgICAgfSk7CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBk
b2N1bWVudCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1l
ZGlhUXVlcnlFdmFsdWF0aW9uLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRv
Y3VtZW50LmV2YWx1YXRlTWVkaWFRdWVyaWVzQW5kUmVwb3J0Q2hhbmdlcygpOyAgICAgICAgCiAg
ICAgfSk7CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewot
ICAgICAgICBpZiAoIWRvY3VtZW50LmRvbVdpbmRvdygpKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBhdXRvIHRpbWVzdGFtcCA9IGRvY3VtZW50LmRvbVdpbmRvdygpLT5mcm96ZW5Ob3dU
aW1lc3RhbXAoKTsKLSAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lc0NvbnRyb2xsZXIgPSBkb2N1
bWVudC50aW1lbGluZXNDb250cm9sbGVyKCkpCi0gICAgICAgICAgICB0aW1lbGluZXNDb250cm9s
bGVyLT51cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50cyh0aW1lc3RhbXApOwotICAgICAgICAv
LyBGSVhNRTogUnVuIHRoZSBmdWxsc2NyZWVuIHN0ZXBzLgotICAgICAgICBkb2N1bWVudC5zZXJ2
aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKHRpbWVzdGFtcCk7CisgICAgcnVuUHJv
Y2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9ucywgW10gKERvY3VtZW50
JiBkb2N1bWVudCkgeworICAgICAgICBkb2N1bWVudC51cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2
ZW50cygpOworICAgIH0pOworCisgICAgLy8gRklYTUU6IFJ1biB0aGUgZnVsbHNjcmVlbiBzdGVw
cy4KKyAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6RnVsbHNjcmVlbik7CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25GcmFtZUNhbGxiYWNrcywgW10gKERvY3VtZW50
JiBkb2N1bWVudCkgeworICAgICAgICBkb2N1bWVudC5zZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZy
YW1lQ2FsbGJhY2tzKCk7CiAgICAgfSk7CiAKICAgICBsYXlvdXRJZk5lZWRlZCgpOwogCiAjaWYg
RU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERv
Y3VtZW50JiBkb2N1bWVudCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9ucywgW10gKERvY3VtZW50JiBkb2N1bWVudCkg
ewogICAgICAgICBkb2N1bWVudC51cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKTsKICAg
ICB9KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKLSAgICBmb3JFYWNo
RG9jdW1lbnQoWyZdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3Rl
cChSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZhdGlvbnMsIFsmXSAoRG9jdW1lbnQm
IGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucygq
dGhpcyk7CiAgICAgfSk7CiAjZW5kaWYKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1l
bnQmIGRvY3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3Rl
cDo6SW1hZ2VzLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGZvciAoYXV0byYg
aW1hZ2UgOiBkb2N1bWVudC5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLmFsbENhY2hlZFNWR0ltYWdl
cygpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGltYWdlLT5pbnRlcm5hbFBhZ2Uo
KSkKICAgICAgICAgICAgICAgICBwYWdlLT5pc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpOwogICAg
ICAgICB9CiAgICAgfSk7CiAKLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNr
Lmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAg
ICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGluaXRpYWxEb2N1bWVudHMpIHsKICAgICAgICAgaWYg
KGRvY3VtZW50ICYmIGRvY3VtZW50LT5kb21XaW5kb3coKSkKICAgICAgICAgICAgIGRvY3VtZW50
LT5kb21XaW5kb3coKS0+dW5mcmVlemVOb3dUaW1lc3RhbXAoKTsKICAgICB9CiAKKyAgICBtX3Jl
bmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRl
U3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MpOworCiAgICAgaWYgKFVOTElLRUxZKGlz
TW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpKQogICAgICAgICB3aGVlbEV2ZW50VGVzdE1vbml0b3Io
KS0+Y2hlY2tTaG91bGRGaXJlQ2FsbGJhY2tzKCk7CiAKQEAgLTE1MjksMjAgKzE1NTgsMTYgQEAg
dm9pZCBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQogCiAgICAgaWYgKCFpc1NWR0ltYWdlUGFnZSkK
ICAgICAgICAgdHJhY2VQb2ludChSZW5kZXJpbmdVcGRhdGVFbmQpOwotCi0gICAgQVNTRVJUKG1f
dXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6
OkluVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjppc29sYXRlZFVwZGF0ZVJlbmRl
cmluZygpCiB7CiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQ
aGFzZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsK
IH0KIAogdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKIHsKLSAgICBBU1NFUlQo
bV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFz
ZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAgICAgLy8gQ29kZSBoZXJlIHNob3VsZCBkbyBvbmNl
LXBlci1mcmFtZSB3b3JrIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFu
ZCByZXF1aXJlcwogICAgIC8vIGxheW91dCB0byBiZSB1cC10by1kYXRlLiBJdCBzaG91bGQgbm90
IHJ1biBzY3JpcHQsIHRyaWdnZXIgbGF5b3V0LCBvciBkaXJ0eSBsYXlvdXQuCiAKQEAgLTE1NTUs
NyArMTU4MCwxMiBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0K
ICNlbmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsK
KyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3Rl
cCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0
aW9uKSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJl
bW92ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24p
OworICAgIH07CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpD
dXJzb3JVcGRhdGUsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRs
ZXIoKS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtMTU3NCw2ICsxNjA0LDgg
QEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgog
CisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKKwogI2lmIEVOQUJMRShJT1NfVE9V
Q0hfRVZFTlRTKQogICAgIC8vIHVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCkgbmVlZHMgdG8gYmUg
Y2FsbGVkIG9ubHkgb24gdGhlIHRvcCBkb2N1bWVudC4KICAgICBpZiAoUmVmUHRyPERvY3VtZW50
PiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLmRvY3VtZW50KCkpCkBAIC0xNTk2LDE0ICsxNjI4LDEw
IEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIEFTU0VSVCgh
ZnJhbWVWaWV3IHx8ICFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KICNlbmRpZgot
Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVy
aW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjpmaW5h
bGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFn
cz4gZmxhZ3MpCiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0
KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKLQogICAgIGF1
dG8qIHZpZXcgPSBtYWluRnJhbWUoKS52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjExLDIzICsxNjM5LDM0IEBAIHZvaWQgUGFnZTo6ZmluYWxpemVSZW5kZXJp
bmdVcGRhdGUoT3B0aW9uU2V0PEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M+IGZsYWdzCiAg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkludmFs
aWRhdGVJbWFnZXNXaXRoQXN5bmNEZWNvZGVzKSkKICAgICAgICAgdmlldy0+aW52YWxpZGF0ZUlt
YWdlc1dpdGhBc3luY0RlY29kZXMoKTsKIAotICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFj
ay5sYXN0KCkgPSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6TGF5ZXJGbHVzaGluZzsKKyAgICBtX3Jl
bmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5yZW1vdmUoUmVuZGVyaW5nVXBkYXRl
U3RlcDo6TGF5ZXJGbHVzaCk7CiAKICAgICB2aWV3LT5mbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNs
dWRpbmdTdWJmcmFtZXMoKTsKIAotICAgIG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0
KCkgPSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6UG9zdExheWVyRmx1c2g7Ci0KICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQorICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFz
dCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlKTsKKwog
ICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpIHsKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmNvbW1pdFRyZWVTdGF0
ZUlmTmVlZGVkKCk7CiAgICAgICAgIGlmIChmbGFncy5jb250YWlucyhGaW5hbGl6ZVJlbmRlcmlu
Z1VwZGF0ZUZsYWdzOjpBcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucykpCiAgICAgICAg
ICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+YXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlv
bnMoKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5kaWRD
b21wbGV0ZVJlbmRlcmluZ1VwZGF0ZSgpOwogICAgIH0KICNlbmRpZgogCi0gICAgbV91cGRhdGVS
ZW5kZXJpbmdQaGFzZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICBBU1NFUlQobV9yZW5kZXJpbmdV
cGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkuaXNFbXB0eSgpKTsKKyAgICByZW5kZXJpbmdVcGRh
dGVDb21wbGV0ZWQoKTsKK30KKwordm9pZCBQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQo
KQoreworICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMucmVtb3ZlTGFzdCgpOwor
CisgICAgaWYgKG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwcykgeworICAgICAgICByZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBt
X3VuZnVsZmlsbGVkUmVxdWVzdGVkU3RlcHMgPSB7IH07CisgICAgfQogfQogCiB2b2lkIFBhZ2U6
OnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKQpAQCAtMjkzMSw3ICsyOTcwLDcgQEAgdm9pZCBQ
YWdlOjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGZvckVhY2hEb2N1bWVu
dChbXSAoYXV0byYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmV2
YWx1YXRlTWVkaWFRdWVyaWVzRm9yQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlKCk7CiAgICAg
ICAgIGRvY3VtZW50LnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllcygpOwotICAg
ICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIGRv
Y3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
TWVkaWFRdWVyeUV2YWx1YXRpb24pOwogICAgIH0pOwogfQogCkBAIC0yOTQxLDcgKzI5ODAsNyBA
QCB2b2lkIFBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UoKQogICAgICAgICBkb2N1bWVudC5zdHls
ZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7CiAgICAgICAgIGRvY3Vt
ZW50LnN0eWxlU2NvcGUoKS5ldmFsdWF0ZU1lZGlhUXVlcmllc0ZvckFwcGVhcmFuY2VDaGFuZ2Uo
KTsKICAgICAgICAgZG9jdW1lbnQudXBkYXRlRWxlbWVudHNBZmZlY3RlZEJ5TWVkaWFRdWVyaWVz
KCk7Ci0gICAgICAgIGRvY3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAg
ICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRh
dGVTdGVwOjpNZWRpYVF1ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggMjExN2EyM2E4ODAyZDdmYzc0ZjA1ZTdhZGU2MDhiODRhYjUzMGYzOC4uODM4NTBmN2Zk
ZjM1OGRjYWI2NDdiNDNkMzQ2Y2E3YzcxZDI3MzE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTE2OSw2
ICsxNjksNDggQEAgZW51bSBjbGFzcyBGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzIDogdWlu
dDhfdCB7CiAgICAgSW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMgICAgPSAxIDw8IDEs
CiB9OwogCitlbnVtIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVN0ZXAgOiB1aW50MTZfdCB7CisgICAg
UmVzaXplICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBTY3JvbGwgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorICAgIE1lZGlhUXVlcnlFdmFsdWF0aW9u
ICAgICAgICAgICAgPSAxIDw8IDIsCisgICAgQW5pbWF0aW9ucyAgICAgICAgICAgICAgICAgICAg
ICA9IDEgPDwgMywKKyAgICBGdWxsc2NyZWVuICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA0
LAorICAgIEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzICAgICAgICAgPSAxIDw8IDUsCisjaWYgRU5B
QkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICBJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMg
ICAgICAgID0gMSA8PCA2LAorI2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKKyAg
ICBSZXNpemVPYnNlcnZhdGlvbnMgICAgICAgICAgICAgID0gMSA8PCA3LAorI2VuZGlmCisgICAg
SW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKKyAgICBXaGVlbEV2ZW50
TW9uaXRvckNhbGxiYWNrcyAgICAgID0gMSA8PCA5LAorICAgIEN1cnNvclVwZGF0ZSAgICAgICAg
ICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgIEV2ZW50UmVnaW9uVXBkYXRlICAgICAgICAgICAg
ICAgPSAxIDw8IDExLAorICAgIExheWVyRmx1c2ggICAgICAgICAgICAgICAgICAgICAgPSAxIDw8
IDEyLAorICAgIFNjcm9sbGluZ1RyZWVVcGRhdGUgICAgICAgICAgICAgPSAxIDw8IDEzLAorfTsK
KworY29uc3RleHByIE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiBhbGxSZW5kZXJpbmdV
cGRhdGVTdGVwcyA9IHsKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUsCisgICAgUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlh
UXVlcnlFdmFsdWF0aW9uLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbnMsCisg
ICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6RnVsbHNjcmVlbiwKKyAgICBSZW5kZXJpbmdVcGRhdGVT
dGVwOjpBbmltYXRpb25GcmFtZUNhbGxiYWNrcywKKyNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09C
U0VSVkVSKQorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9u
cywKKyNlbmRpZgorI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisgICAgUmVuZGVyaW5nVXBk
YXRlU3RlcDo6UmVzaXplT2JzZXJ2YXRpb25zLAorI2VuZGlmCisgICAgUmVuZGVyaW5nVXBkYXRl
U3RlcDo6SW1hZ2VzLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9y
Q2FsbGJhY2tzLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkN1cnNvclVwZGF0ZSwKKyAgICBS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpFdmVudFJlZ2lvblVwZGF0ZSwKKyAgICBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpMYXllckZsdXNoLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1Ry
ZWVVcGRhdGUsCit9OworCiBjbGFzcyBQYWdlIDogcHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBhZ2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNDg5LDkgKzUzMSw5IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzPik7CiAKICAgICAvLyBEbyBp
bW1lZGlhdGUgb3IgdGltZWQgdXBkYXRlIGFzIGRpY3RhdGVkIGJ5IHRoZSBDaHJvbWVDbGllbnQu
Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJl
bmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUgdGhhdCBjb29y
ZGluYXRlcyB3aXRoIGRpc3BsYXkgcmVmcmVzaDsgdGhlIG5vcm1hbCBraW5kIG9mIHVwZGF0ZS4K
LSAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVk
dWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsK
ICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUgaW4gdGhlIGN1cnJlbnQgcnVubG9vcDsgdGhpcyBp
cyBhbiBlYWdlciB1cGRhdGUgdGhhdCBtYXkgdHJpZ2dlciByZW5kZXJpbmcgbW9yZSB0aGFuIG9u
Y2UgcGVyIGRpc3BsYXkgcmVmcmVzaC4KICAgICB2b2lkIHNjaGVkdWxlSW1tZWRpYXRlUmVuZGVy
aW5nVXBkYXRlKCk7CiAKQEAgLTc3MywxMyArODE1LDYgQEAgcHVibGljOgogICAgIE1vbm90b25p
Y1RpbWUgbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsgfQogCiBwcml2YXRlOgotICAgIGVudW0gY2xhc3Mg
UmVuZGVyaW5nVXBkYXRlUGhhc2UgOiB1aW50OF90IHsKLSAgICAgICAgT3V0c2lkZSwKLSAgICAg
ICAgSW5VcGRhdGVSZW5kZXJpbmcsCi0gICAgICAgIExheWVyRmx1c2hpbmcsCi0gICAgICAgIFBv
c3RMYXllckZsdXNoCi0gICAgfTsKLQogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAg
UmVnaXN0cmFibGVEb21haW4gZG9tYWluOwogICAgICAgICBGcmFtZUxvYWRUeXBlIHR5cGU7CkBA
IC04MTUsNiArODUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvbVRpbWVyQWxpZ25tZW50SW50
ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQoKTsKIAogICAgIHZvaWQgZG9BZnRlclVwZGF0ZVJlbmRl
cmluZygpOworICAgIHZvaWQgcmVuZGVyaW5nVXBkYXRlQ29tcGxldGVkKCk7CisgICAgdm9pZCBj
b21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyhPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRl
U3RlcD4pOwogCiAgICAgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyJiByZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIoKTsKIApAQCAtMTAyNCw4ICsxMDYxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aXNFZGl0YWJsZVJlZ2lvbkVuYWJsZWQgeyBmYWxzZSB9OwogI2VuZGlmCiAKLSAgICBWZWN0b3I8
UmVuZGVyaW5nVXBkYXRlUGhhc2UsIDI+IG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjazsKLQor
ICAgIFZlY3RvcjxPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4sIDI+IG1fcmVuZGVyaW5n
VXBkYXRlUmVtYWluaW5nU3RlcHM7CisgICAgT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+
IG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwczsKKyAgICAKICAgICBVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogICAgIAogICAgIC8vIEZvciB0ZXN0aW5nLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDI1MmJl
Zjk1MDk4ZGYyZmNhZjBkMjEyZTU2ODY5YjhjYzI1MGUxNmUuLmM2MmE5ODU1NDc5MDE0NTI2MTg5
NzA3NDAyYjU2ZDcxYzZkN2Q1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZU92ZXJsYXlDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVy
bGF5Q29udHJvbGxlci5jcHAKQEAgLTMxOCw3ICszMTgsNyBAQCB2b2lkIFBhZ2VPdmVybGF5Q29u
dHJvbGxlcjo6ZGlkQ2hhbmdlRGV2aWNlU2NhbGVGYWN0b3IoKQogCiB2b2lkIFBhZ2VPdmVybGF5
Q29udHJvbGxlcjo6ZGlkQ2hhbmdlVmlld0V4cG9zZWRSZWN0KCkKIHsKLSAgICBtX3BhZ2Uuc2No
ZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVu
ZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lk
IFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkU2Nyb2xsRnJhbWUoRnJhbWUmIGZyYW1lKQpAQCAt
NDEyLDcgKzQxMiw3IEBAIGZsb2F0IFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGV2aWNlU2NhbGVG
YWN0b3IoKSBjb25zdAogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKIHsKLSAgICBtX3BhZ2Uuc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIFBhZ2VPdmVy
bGF5Q29udHJvbGxlcjo6ZGlkQ2hhbmdlT3ZlcmxheUZyYW1lKFBhZ2VPdmVybGF5JiBvdmVybGF5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcAppbmRleCAyNTdmYTExYzhjN2Jm
ZWFiNjFhMzRlZjcxMzZjYWJiYzgwNTU2MGEwLi42Yzg3MjBiYWVhZGJkMWVkZmNkN2M4ZjJkNGJi
NGU5Mzk3ZGUxOTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcApAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIFJlc2l6ZU9ic2VydmVyOjpvYnNlcnZlKEVsZW1lbnQmIHRhcmdl
dCkKIAogICAgIGlmIChtX2RvY3VtZW50KSB7CiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZFJlc2l6
ZU9ic2VydmVyKCp0aGlzKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpOworICAgICAgICBtX2RvY3VtZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9ucyk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKaW5k
ZXggMWQxM2ZjNjE5NzEwM2ZkYjAxZWZjOTQzZmFjMTA2NTIyYzgxMDU2NC4uMTQ3NDE3NmU1ZjA0
ZjBkYjE5MTM0MDhlY2IzNDBhZmI3YzU4MzY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
V2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFdoZWVsRXZl
bnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5kU3RhcnRNb25pdG9yaW5nKGJvb2wgZXhw
ZWN0V2hlZWxFbgogICAgIFVOVVNFRF9QQVJBTShleHBlY3RNb21lbnR1bUVuZCk7CiAjZW5kaWYK
IAotICAgIG1fcGFnZS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1fcGFnZS5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVlbEV2ZW50TW9uaXRv
ckNhbGxiYWNrcyk7CiAKICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9y
LCBzdHJlYW0gPDwgIiAgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRT
dGFydE1vbml0b3JpbmcgLSBleHBlY3QgZW5kL2NhbmNlbCAiIDw8IGV4cGVjdFdoZWVsRW5kT3JD
YW5jZWwgPDwgIiwgZXhwZWN0IG1vbWVudHVtIGVuZCAiIDw8IGV4cGVjdE1vbWVudHVtRW5kKTsK
IH0KQEAgLTEyMSwxMyArMTIxLDEzIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpyZWNl
aXZlZFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIHZvaWQgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpzY2hlZHVsZUNhbGxiYWNrQ2hlY2soKQogewogICAgIGlmIChp
c01haW5UaHJlYWQoKSkgewotICAgICAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICAgICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1BhZ2UgPSBtYWtlV2Vha1B0
cihtX3BhZ2UpXSB7CiAgICAgICAgIGlmICh3ZWFrUGFnZSkKLSAgICAgICAgICAgIHdlYWtQYWdl
LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICAgICAgd2Vha1BhZ2UtPnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9y
Q2FsbGJhY2tzKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
bWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggMGI5YWJiOGM5Y2E4OGI0NjI5
YTI5Mzk4MWRkMjU2ZTcxNzVkMGM0OC4uOGYxN2FjMTVhMWY0NzE3ZjRjZDYzMzhmM2EyNDBjMTI5
MzVhOWVmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVy
bGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBTZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhp
Y3NMYXkKICAgICBpZiAoIW1fY29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b250cm9sbGVyLT5wYWdlKCkuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1f
Y29udHJvbGxlci0+cGFnZSgpLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5n
VXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJv
bGxlcjo6SGlnaGxpZ2h0OjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFw
aGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NM
YXllclBhaW50QmVoYXZpb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDI0OWJiOTY5ZjI5
ZTg4MzYzZTc2MmUyZjQxMGNhZjA3MzYxMTQ0M2UuLmYxMzkyMzcxYmRiMjMzMzU4ZTNiNDUzZTUz
NWViMzljMmU5OGQ3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xMjMsNiArMTIzLDcg
QEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRFdmVudFRyYWNraW5nUmVnaW9u
c0RpcnR5KCkKIHsKICAgICBtX2V2ZW50VHJhY2tpbmdSZWdpb25zRGlydHkgPSB0cnVlOwogICAg
IC8vIFdlIGhhdmUgdG8gc2NoZWR1bGUgYSBjb21taXQsIGJ1dCB0aGUgY29tcHV0ZWQgbm9uLWZh
c3QgcmVnaW9uIG1heSBub3QgaGF2ZSBhY3R1YWxseSBjaGFuZ2VkLgorICAgIC8vIEZJWE1FOiBU
aGlzIG5lZWRzIHRvIGRpc2FtYmlndWF0ZSBiZXR3ZWVuIGV2ZW50IHJlZ2lvbnMgaW4gdGhlIHNj
cm9sbGluZyB0cmVlLCBhbmQgdGhvc2UgaW4gR3JhcGhpY3NMYXllcnMuCiAgICAgc2NoZWR1bGVU
cmVlU3RhdGVDb21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCmluZGV4IDQ2Mzdi
NWQ0Mzg1MjA3YjY1YjkyOGIyZWM5YzJkNGZmNDdkZjVjMjAuLmI0OWYxMGM5ZmNjMGZhZmJkOTU4
ZDcyZTBhMGQ2OGRjNTI3OWJmM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KQEAgLTk1LDcg
Kzk1LDggQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVudChG
cmFtZVZpZXcmLCBjb25zdCBQbGF0Zm9ybVdoZWVsRXYKIAogdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvck1hYzo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQoKQogewotICAgIG1fcGFnZS0+c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAvLyBGSVhNRTogVGhpcyBvbmUgbmVlZHMgd29yay4K
KyAgICBtX3BhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6
OlNjcm9sbGluZ1RyZWVVcGRhdGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
Ojpjb21taXRUcmVlU3RhdGVJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKaW5kZXggZGZkMGJkOTkxMDNkMGM5ZDNhZDdmNzE2ZDc4YjFjZjBjN2Q0
ODAyYi4uYWYxOWQxYzg1M2JhNjhjMTI2YmQ4OTIzMWM0YTQzMjQ3M2Q4MmRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTQwMywxMCArMTQwMywx
MCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hl
ZEltYWdlJiBjYWNoZWRJbWFnZSkKICAgICAgICAgdmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBh
dXNlZEltYWdlQW5pbWF0aW9ucygqdGhpcywgY2FjaGVkSW1hZ2UpOwogfQogCi12b2lkIFJlbmRl
ckVsZW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQordm9pZCBSZW5kZXJFbGVt
ZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikKIHsKICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzKTsKIH0KIAogYm9vbCBS
ZW5kZXJFbGVtZW50OjpyZXBhaW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29u
c3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IGJhMzQ4YjdhNTM5MDhmOTEw
OWQ3NWE0NGZlMGViYWExNzVkNTU0ODYuLjQyYzI3OGFhYTRiMGI3NDczYWNlOTIzMjgwNWI3YzBl
MWQ1YWVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAt
MzIzLDcgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbCB7IHJldHVybiAhaXNWaXNpYmxlSW5WaWV3cG9ydCgpOyB9CiAgICAgVmlzaWJsZUlu
Vmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiwgSW1hZ2VBbmlt
YXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIGZpbmFsOwotICAgIHZvaWQg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsOworICAgIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGVGb3JJbWFnZShDYWNoZWRJbWFnZSYpIGZpbmFsOwogCiAgICAgYm9vbCBn
ZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91dHB1dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNv
bnN0OwogICAgIGJvb2wgZ2V0VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0LCBib29s
JiBpbnNpZGVGaXhlZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDljYTBmOTNiYmJjMWQ1MWQ5MDBjOWZmOWY4MTA3MzY0
OTU1ZGZlMmUuLjJkYmE1YjFkN2E5MzA3OTZmNzA0MTAyODBhZDBkMTg3ZGUxZGI1YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0z
NjQ4LDExICszNjQ4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlBbmltYXRp
b25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBTdHJpCiB7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKQordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3Qg
R3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkucmVuZGVyVHJlZUJl
aW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21wb3NpdG9yKCkuc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKKworICAgIGNvbXBvc2l0b3IoKS5ub3RpZnlGbHVzaFJlcXVp
cmVkKGxheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoQmVm
b3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDc1
NzVkY2E3ZWIyNGVjM2E5ZGU3MTY2MTdiZjcyMjUwMmNlYzIzZWEuLmY1YmY3YjQ4MDA1MTBiZjM3
YmIxOGUzMDE0NDk5MmYxZjQ4ZTI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBB
U1NFUlQoIW1fZmx1c2hpbmdMYXllcnMpOwogCi0gICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGMzOTYxNDgzZjRl
ZTI2YzA1MTgwODJlN2VjMmNkOTc2NTVhNjU0MWQuLmMxNTFlMjNkMGVmNjVmZWI5OWYwNTdlNWQy
MjhlYmJmZDVjMTg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBH
cmFwaGljc0xheWVycyBidWZmZXIgc3RhdGUsIHdoaWNoIGdldHMgcHVzaGVkIHRvIHRoZSB1bmRl
cmx5aW5nIHBsYXRmb3JtIGxheWVycwogICAgIC8vIGF0IHNwZWNpZmljIHRpbWVzLgotICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWly
ZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzKGJvb2wgaXNGbHVzaFJvb3QgPSB0cnVlKTsKIAogICAgIC8vIENhbGxlZCB3
aGVuIHRoZSBHcmFwaGljc0xheWVyIGZvciB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgaGFzIGZsdXNo
ZWQgY2hhbmdlcyBpbnNpZGUgb2YgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkuCkBAIC0zOTYs
NyArMzk2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUNvbXBvc2l0aW5nUG9saWN5KCk7
CiAgICAgCiAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudCBpbXBsZW1lbnRhdGlvbgotICAgIHZv
aWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXN0b21Qb3NpdGlvbkZvclZpc2libGVSZWN0Q29tcHV0YXRpb24oY29u
c3QgR3JhcGhpY3NMYXllciosIEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUcmFja2lu
Z1JlcGFpbnRzOyB9CkBAIC00NTQsNiArNDUzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbmVl
ZHNDb21wb3NpdGluZ0ZvckNvbnRlbnRPck92ZXJsYXlzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisKICAgICB2b2lkIGVuc3VyZVJvb3RMYXllcigpOwog
ICAgIHZvaWQgZGVzdHJveVJvb3RMYXllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDc5Y2EyY2Nk
MzFkODQ1NGRlMjE0OWExY2RmMDQ2NDU3NTg4ODAwNjUuLmYxMjdkNzdlOTM2MDFiZGJjZjllNGRl
Njc3OTA2Y2YzOWI3NGQ3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQg
TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQogCiAgICAgLy8gSW4gY2FzZSBh
biBhbmltYXRpb24gaXMgcnVubmluZywgd2Ugc2hvdWxkIGZsdXNoIGFnYWluIHNvb24uCiAgICAg
aWYgKGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPihtX3Jvb3RMYXllci5nZXQo
KSktPmxheWVyKCkuZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkKLSAg
ICAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdV
cGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIExheWVyVHJlZUhv
c3Q6OkxheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2MjM1ZDJjMWVkNmE2MDVjNmRiMzIxMGJhZTAx
MGMwYWUyYjE1ODA0Li45OTRmMjE4NzlhYjJiNDJiOWVhYTMwZjFhZmU3YzY1Njg0NjQxMGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05MDgwLDcg
KzkwODAsNyBAQCAtIChCT09MKV9mbHVzaENvbXBvc2l0aW5nQ2hhbmdlcwogLSAodm9pZClfc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludAogewogICAgIGlm
IChhdXRvKiBwYWdlID0gX3ByaXZhdGUtPnBhZ2UpCi0gICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410478</attachid>
            <date>2020-10-04 12:05:18 -0700</date>
            <delta_ts>2020-10-06 11:17:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216726-20201004120518.patch</filename>
            <type>text/plain</type>
            <size>55371</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI3NzA2ZjNkYmI5NDJlOTBjYzAwZWQ5
OGQ3ZjI5NDcxOGI3YTZiNGYuLmNmNTQ0NDQ4NDgxYjU3NTI1ZTJjMDJjOGUzMjhmMmRlMmYzZjIy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50IHJlbmRlcmluZyB1cGRhdGVz
IGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gZHVtcCBWZWN0b3JzIHdpdGggaW5saW5lIGNhcGFjaXR5LgorCisgICAgICAgICog
d3RmL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwogMjAy
MC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENvcHkgaG9zdCBmcm9tIGJhc2UgZmlsZSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmFjZjJm
Zjg4MjhiZThkNWU4MjQyMWRlYjJkMWJkZmZlMDRmZmJlLi44N2Q0NTI5ZmJkODU1YTdlOTk2NzEw
YzkwOGMzZTU2NmFiMjUyZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDIwLTEw
LTAzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJl
ZHVuZGFudCByZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2NoZWR1bGVkIGZyb20gaW5zaWRlIFBh
Z2U6OnVwZGF0ZVJlbmRlcmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTY3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgYmFzaWMgbW9kZWwgZm9yIHNjaGVkdWxpbmcgcmVuZGVyaW5nIHVw
ZGF0ZXMgaXMgdGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gdHJpZ2dlciBhbgorICAgICAgICB1cGRh
dGUganVzdCBjYWxscyBQYWdlOjpzY2hlZHVsZVtUaW1lZF1SZW5kZXJpbmdVcGRhdGUoKS4gSG93
ZXZlciwgaWYKKyAgICAgICAgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgaXMgYWxyZWFkeSBvbiB0
aGUgc3RhY2ssIGFuZCB0aGUgd29yayB0byBiZSBzY2hlZHVsZWQgd2lsbCBoYXBwZW4KKyAgICAg
ICAgbGF0ZXIgaW4gdGhlIGN1cnJlbnQgdXBkYXRlLCB3ZSBkb24ndCBoYXZlIHRvIHNjaGVkdWxl
IGEgbmV3IG9uZS4KKworICAgICAgICBUbyBmaXggdGhpcyBQYWdlOjp1cGRhdGVSZW5kZXJpbmco
KSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgdHJhY2sgd2hpY2ggc3RlcHMgcmVtYWluCisgICAgICAg
IGluIHRoZSBjdXJyZW50IHVwZGF0ZSwgYW5kIGNhbGxlcnMgb2Ygc2NoZWR1bGVbVGltZWRdUmVu
ZGVyaW5nVXBkYXRlKCkgcGFzcyB0aGUgdXBkYXRlIHN0ZXBzCisgICAgICAgIGZvciB0aGUgd29y
ayB0aGV5IG5lZWQgdG8gdHJpZ2dlci4gSWYgdGhlIHJlcXVlc3RlZCBzdGVwcyBhcmUgaW5jbHVk
ZWQgaW4gdGhlIHJlbWFpbmluZyBzdGVwcworICAgICAgICBubyBuZXcgdXBkYXRlIG5lZWRzIHRv
IGJlIHNjaGVkdWxlZC4gTm90ZSB0aGF0IHJlcXVlc3RpbmcgYSBzdGVwIHdoaWxlIHRoYXQgc3Rl
cCBpcyBiZWluZyBleGVjdXRlZAorICAgICAgICBoYXMgdG8gc2NoZWR1bGUgYW4gdXBhdGUgKGUu
Zy4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGluc2lkZSBpdHMgb3duIGNhbGxiYWNrIGhhcyB0byBz
Y2hlZHVsZSkuCisgICAgICAgIAorICAgICAgICBBdCB0aGUgZW5kIG9mIGFuIHVwZGF0ZSwgaWYg
dGhlcmUgYXJlIGFueSB1bmZ1bGZpbGxlZCBzdGVwcywgdGhlbiB3ZSBzY2hlZHVsZSBhIG5ldyB1
cGRhdGUuCisKKyAgICAgICAgQWRkIGEgbG9nIGNoYW5uZWwgZm9yIEV2ZW50TG9vcCBhbmQgYW5k
IGxvZyBmcm9tIHZhcmlvdXMgcGxhY2VzLgorCisgICAgICAgIEluIG15IGJyaWVmIHRlc3Rpbmcs
IHRoaXMgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIFBhZ2U6OnVwZGF0ZVJlbmRlcmlu
ZygpIGJ5IDEwLTI1JQorICAgICAgICBvbiBzb21lIHJlYWwgcGFnZXMsIHdoaWNoIGNvdWxkIGJl
IGEgc2lnbmlmaWNhbnQgcG93ZXIgc2F2aW5nLgorCisgICAgICAgICogYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c2No
ZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKToKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlMYXll
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9s
bGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0
UmVzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZl
bnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmll
d3BvcnRTY3JvbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2VydmljZVJl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNjaGVkdWxlSW5pdGlhbEludGVyc2VjdGlvbk9ic2Vy
dmF0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVSZXNpemVP
YnNlcnZhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUFuaW1hdGlv
bnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJ
bWFnZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZUNs
aWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZUNsaWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpzY2hlZHVsZUN1cnNvclVwZGF0ZSk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJl
Y3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1
cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
Y2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNv
bXB1dGVVbmZ1bGZpbGxlZFJlbmRlcmluZ1N0ZXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc29sYXRlZFVw
ZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YXBwZWFyYW5jZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdFeHBvc2VkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlT3ZlcmxheUNvbnRyb2xsZXI6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAg
ICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3Rh
cnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRp
c3BsYXlSZWZyZXNoRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyOjpzY2hlZHVsZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToK
KyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oOgorICAgICAgICAqIHBh
Z2UvUmVzaXplT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzaXplT2JzZXJ2ZXI6
Om9ic2VydmUpOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5k
U3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6c2NoZWR1bGVDYWxsYmFja0NoZWNrKToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6SGlnaGxpZ2h0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEV2ZW50VHJhY2tpbmdSZWdpb25zRGly
dHkpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hlZHVs
ZVRyZWVTdGF0ZUNvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisKIDIwMjAtMTAtMDIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIHN1c3BlbmQoKSBvbiBhdWRpbyBjb250
ZXh0IHdpdGggbm8gbm9kZSBkb2VzIG5vdCBwcmV2ZW50IGF1dG8gdHJhbnNpdGlvbiB0byBydW5u
aW5nIHdoZW4gZmlyc3Qgbm9kZSBpcyBjcmVhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwNTRkZmQ3ODgxOWY2
ZDYzZTkwODllMjcyOTk5NTBiMDdjN2E3ODQuLjA5MGY1OGFhMzQ1ZjJjZTJhOTlhMjBjOWZjMTIx
ZjI4OWUxMmE1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDQgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50IHJl
bmRlcmluZyB1cGRhdGVzIGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBkYXRl
UmVuZGVyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNjcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjaGVkdWxlIGZvciBsYXllciBmbHVzaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0dXJlTWFwcGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgor
CiAyMDIwLTEwLTAyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgog
CiAgICAgICAgIE11bHRpcGxlIGNhbGxzIHRvIHN1c3BlbmQgbWVkaWEgcGxheWJhY2sgZm9yIHRo
ZSBzYW1lIHBhZ2UgbWF5IHJlc3VsdCBpbiByZXN1bWluZyBtZWRpYSBwbGF5YmFjayB0b28gc29v
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwN2IwNGE3MDIyMDVkMGZiNThkZmE3
MGY4ZGE2YzQyNzkyOGIyMmUuLmM1Y2Q5ODU5NWM3MmFmMzI0ODVkN2M5Y2YwZWNmMzlkYjA2ODQx
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0x
MC0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWR1bmRhbnQgcmVuZGVyaW5nIHVwZGF0ZXMgY2FuIGJlIHNjaGVkdWxlZCBmcm9tIGluc2lkZSBQ
YWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIgaGFkIGEgYnVnIHRoYXQg
d291bGQgY2F1c2UgdGhlIHJ1bmxvb3Agb2JzZXJ2ZXIgdG8gZ2V0IGludmFsaWRhdGVkCisgICAg
ICAgIGlmIHNjaGVkdWxlKCkgd2FzIGNhbGxlZCBpbnNpZGUgdGhlIGNhbGxiYWNrOyBpbiB0aGlz
IGNhc2Ugd2UgbmVlZCB0byBrZWVwIHRoZSByZXBlYXRpbmcgcnVubG9vcCBvYnNlcnZlcgorICAg
ICAgICByZWdpc3RlcmVkIGZvciB0aGUgbmV4dCBjYWxsYmFjay4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGVGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
d0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoV2Vi
Vmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKFdlYlZpZXdMYXll
ckZsdXNoU2NoZWR1bGVyOjpsYXllckZsdXNoQ2FsbGJhY2spOgorCiAyMDIwLTEwLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIGluZnJhc3Ry
dWN0dXJlIGZvciBBdWRpb1dvcmtsZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
VGV4dFN0cmVhbS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmgKaW5kZXggZGNk
YWZiYzNmMzJhNjYxNjhhMmMwNTFjODIzZjk2NzQ5OWU0ODFmNi4uZjNkMmNmYzExMWM4OTg1M2E1
YmJmMzFlMzUxMzc5ZDUxMmQ4ZDdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9U
ZXh0U3RyZWFtLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmgKQEAgLTIx
Miw4ICsyMTIsOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBNYXJrYWJsZTxULCBUcmFpdHM+JiBpdGVtKQogICAgIHJldHVybiB0cyA8PCAidW5zZXQiOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgVmVjdG9yPEl0ZW0+JiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMD4KK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtVHlwZSwgaW5saW5lQ2FwYWNp
dHk+JiB2ZWN0b3IpCiB7CiAgICAgdHMgPDwgIlsiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggN2E4NTIxNDQ5OWRkZWJlMzIzNDQ4ZDZh
OTVjOWExNWIxMGMxNDQ5ZC4uYTUzOWVmZDBiNjBmNjM2MWJhNTEwMjJkNmIyZjI4MTRlOTY1YTkz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApA
QCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmltYXRp
b25SZXNvbHV0aW9uKCkKICAgICBpZiAoIXNob3VsZFJ1blVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5k
RXZlbnRzSWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9kb2N1bWVudC0+cGFnZSgpLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
bV9kb2N1bWVudC0+cGFnZSgpLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbnMpOwogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVk
dWxlZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlz
cGxheUxheWVyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlM
YXllckNvbnRyb2xsZXIuY3BwCmluZGV4IGYyM2FjM2RkNjc1NmY2YzNkNmY1MjY4MTRjNzg1ZDVl
ZTNkZDI2MTguLjJjYmIwZTAxZGFiZjg3MjQwYzA4YzVlYzU4NjkxYjNlYWNhZTZhMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApA
QCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTGF5ZXJDb250cm9sbGVyOjpzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5z
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIExheWVyQ29u
dHJvbGxlcjo6ZW5zdXJlUm9vdExheWVyKEZsb2F0U2l6ZSB2aWV3U2l6ZSwgRmxvYXRTaXplIGNv
bnRlbnRTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOGU5YjIxOTBmOGUyYjFhNzQ5
ZDMzZmIzMmMxN2QwZTlmYmNkY2U0Yy4uOTQwMDBmMjNiOGQyOTFmNDdjYWY3ZjIzMmE3M2IxOTM5
ODg3YzdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NjAsNyArNTYwLDcgQEAgRG9j
dW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIERvY3VtZW50Q2xh
c3NGbGFncyBkb2N1bWVudENsYXMKICAgICAsIG1fZnVsbHNjcmVlbk1hbmFnZXIgeyBtYWtlVW5p
cXVlUmVmPEZ1bGxzY3JlZW5NYW5hZ2VyPigqdGhpcykgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElO
VEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICAsIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlh
bFVwZGF0ZVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUpCisgICAgLCBtX2ludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lcigqdGhp
cywgJkRvY3VtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJGaXJl
ZCkKICNlbmRpZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6
OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAtNDA3NywxMyArNDA3NywxMyBAQCB2b2lkIERv
Y3VtZW50Ojp1cGRhdGVWaWV3cG9ydFVuaXRzT25SZXNpemUoKQogdm9pZCBEb2N1bWVudDo6c2V0
TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCgpCiB7CiAgICAgbV9uZWVkc0RPTVdpbmRvd1Jlc2l6
ZUV2ZW50ID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUp
OwogfQogCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCkKIHsK
ICAgICBtX25lZWRzVmlzdWFsVmlld3BvcnRSZXNpemVFdmVudCA9IHRydWU7Ci0gICAgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplKTsKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzc29tLXZpZXcvI3J1bi10aGUtcmVzaXplLXN0ZXBzCkBAIC00MTEzLDcgKzQx
MTMsNyBAQCB2b2lkIERvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFp
bmVyTm9kZSYgdGFyZ2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGFyZ2V0cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwp
OwogCiAgICAgdGFyZ2V0cy5hcHBlbmQodGFyZ2V0KTsKIH0KQEAgLTQxMjEsNyArNDEyMSw3IEBA
IHZvaWQgRG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldChDb250YWluZXJOb2Rl
JiB0YXJnZXQpCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZl
bnQoKQogewogICAgIGlmICghbV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpCi0gICAg
ICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwpOwogICAgIG1fbmVl
ZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50ID0gdHJ1ZTsKIH0KIApAQCAtNjQzNywxMCArNjQz
NywxMCBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJD
YWxsYmFja3MoKQogICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+cmVzdW1l
KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIHRpbWVzdGFtcCkKK3ZvaWQgRG9jdW1lbnQ6
OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKQogewotICAgIGlmIChtX3Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKLSAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1w
KTsKKyAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgJiYgZG9tV2luZG93KCkp
CisgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5zZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKGRvbVdpbmRvdygpLT5mcm96ZW5Ob3dUaW1lc3RhbXAoKSk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQpCkBAIC03NTMzLDEzICs3NTMzLDIzIEBAIHZvaWQgRG9jdW1lbnQ6OnJl
bW92ZUR5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgZWxl
bWVudCkKICAgICBtX2R5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2VzLnJlbW92ZShlbGVt
ZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgp
Cit2b2lkIERvY3VtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJG
aXJlZCgpCit7CisjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICBzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9i
c2VydmF0aW9ucyk7CisjZW5kaWYKK30KKwordm9pZCBEb2N1bWVudDo6c2NoZWR1bGVUaW1lZFJl
bmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4gcmVxdWVzdGVkU3Rl
cHMpCiB7CiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICBtX2ludGVyc2Vj
dGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdG9wKCk7CisgICAgaWYgKG1faW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
bV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIuc3RvcCgpOworICAgICAg
ICByZXF1ZXN0ZWRTdGVwcy5hZGQoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50ZXJzZWN0aW9uT2Jz
ZXJ2YXRpb25zKTsKKyAgICB9CiAjZW5kaWYKICAgICBpZiAoYXV0byBwYWdlID0gdGhpcy0+cGFn
ZSgpKQotICAgICAgICBwYWdlLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
ICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUocmVxdWVzdGVkU3RlcHMpOwog
fQogCiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKQEAgLTc3NjQsNyArNzc3NCw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmF0aW9ucygpCiB2b2lk
IERvY3VtZW50OjpzY2hlZHVsZUluaXRpYWxJbnRlcnNlY3Rpb25PYnNlcnZhdGlvblVwZGF0ZSgp
CiB7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDb21wbGV0ZSkKLSAgICAgICAgc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9ucyk7CiAgICAg
ZWxzZSBpZiAoIW1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLmlzQWN0
aXZlKCkpCiAgICAgICAgIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVy
LnN0YXJ0T25lU2hvdChpbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlRGVsYXkpOwog
fQpAQCAtNzg1Niw3ICs3ODY2LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlUmVzaXplT2JzZXJ2
YXRpb25zKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGdldFBhcnNlckxvY2F0aW9uKHVybCwgbGluZSwg
Y29sdW1uKTsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCJSZXNpemVPYnNlcnZlciBsb29wIGNv
bXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMuIiwgbGluZSwgY29sdW1uLCB1
cmwsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICAvLyBTdGFydGluZyBhIG5ldyBzY2hlZHVs
ZSB0aGUgbmV4dCByb3VuZCBvZiBub3RpZnkuCi0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoKTsKKyAgICAgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJp
bmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZhdGlvbnMpOwogICAgIH0KIH0KIApAQCAtODE0MCw2
ICs4MTUwLDE1IEBAIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmVuc3Vy
ZVRpbWVsaW5lc0NvbnRyb2xsZXIoKQogICAgIHJldHVybiAqbV90aW1lbGluZXNDb250cm9sbGVy
LmdldCgpOwogfQogCit2b2lkIERvY3VtZW50Ojp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50
cygpCit7CisgICAgaWYgKCFkb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGF1dG8qIHRpbWVsaW5lc0NvbnRyb2xsZXIgPSB0aGlzLT50aW1lbGluZXNDb250cm9sbGVyKCkp
CisgICAgICAgIHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZl
bnRzKGRvbVdpbmRvdygpLT5mcm96ZW5Ob3dUaW1lc3RhbXAoKSk7Cit9CisKIERvY3VtZW50VGlt
ZWxpbmUmIERvY3VtZW50Ojp0aW1lbGluZSgpCiB7CiAgICAgaWYgKCFtX3RpbWVsaW5lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBjNzgyNWM1NGQ0YTkwZjMxNDAxZjI2MjA1YjExNTNjZDIwZjll
YjUzLi4yYjAwMWFhYmIyMWNhYWFiMjI3ODMwNzlmMjBiMDI1MjNjYjJmMmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMjM5LDYgKzIzOSw3IEBAIGVudW0gQ29sbGVjdGlvblR5cGU7CiAKIGVu
dW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXAgOiB1aW50MTZfdDsKIAogdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJf
dDsKIApAQCAtMTA2OSw3ICsxMDcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAKLSAgICB2b2lkIHNlcnZpY2VSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKKyAg
ICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKTsKIAogICAgIHZv
aWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIApAQCAtMTM5NSw3
ICsxMzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRHluYW1pY01lZGlhUXVlcnlEZXBlbmRl
bnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVEeW5hbWljTWVkaWFR
dWVyeURlcGVuZGVudEltYWdlKEhUTUxJbWFnZUVsZW1lbnQmKTsKIAotICAgIHZvaWQgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmlu
Z1VwZGF0ZShPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4pOwogCiAjaWYgRU5BQkxFKElO
VEVSU0VDVElPTl9PQlNFUlZFUikKICAgICB2b2lkIGFkZEludGVyc2VjdGlvbk9ic2VydmVyKElu
dGVyc2VjdGlvbk9ic2VydmVyJik7CkBAIC0xNDg1LDYgKzE0ODYsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoUmVmUHRyPFN0
cmluZ0NhbGxiYWNrPiYmKTsgLy8gRm9yIHRlc3RpbmcuCiAKKyAgICB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRUaW1lbGlu
ZSYgdGltZWxpbmUoKTsKICAgICBEb2N1bWVudFRpbWVsaW5lKiBleGlzdGluZ1RpbWVsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lbGluZS5nZXQoKTsgfQogICAgIFZlY3RvcjxSZWZQdHI8V2Vi
QW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9ucygpOwpAQCAtMTY0Nyw2ICsxNjQ5LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgbW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50U2xvd0Nhc2UoTm9k
ZSYsIERvY3VtZW50Jik7CiAKKyAgICB2b2lkIGludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxV
cGRhdGVUaW1lckZpcmVkKCk7CisKICAgICB2b2lkIGxvYWRFdmVudERlbGF5VGltZXJGaXJlZCgp
OwogCiAgICAgdm9pZCBwZW5kaW5nVGFza3NUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDUxN2RmODAw
MjU1YTI5MWM4ZDY1NWZkNmZiMmVjZjRhZDFiZWNmMmIuLjI5NmY4MDAyZWZjMzc5NGI0OTgwZTdj
MThkOWU5NDFmYmZjNjkyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgcGFnZS0+c2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25GcmFtZUNhbGxi
YWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IDNmYTE4MTdhOWQ2NjY4ZmI0MzNiMWJkNDVjNjA4NjJmMGMzODdkZDYuLmE5MjVj
MzI5ZTJiNDczYjBlNTJjOTMxNTQ0NTZmYWJmMmVjODcxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNzAzLDcgKzcwMyw3IEBAIHZvaWQgQ2Fj
aGVkSW1hZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWdl
KQogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChhdXRvKiBjbGllbnQgPSB3YWxrZXIubmV4dCgp
KQotICAgICAgICBjbGllbnQtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAg
ICAgY2xpZW50LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKCp0aGlzKTsKIH0KIAog
Ym9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2VDbGllbnQuaAppbmRleCAyOTVlNjU2YWIxZWJjMWI5MGZkMWFjZTc4M2QzNDE5YzJm
NjlhMDhiLi5iYTY0NDViN2VhN2VkOTYzZDYxYmZmMzBmMjhhOWE0ZWQ3ZjljMTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1h
Z2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2UmKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmOThiY2UxYmY0
NjY5OGNhMGU1ZGFkYWJkNjQ5YzVmZDc1ODBmYTI3Li42YjZiYWRiMWVlYTg1NGM3M2UyZDNlZGQ0
MmQ5N2UzZmIzNTU2YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0z
MTUzLDcgKzMxNTMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2NoZWR1bGVDdXJzb3JVcGRhdGUo
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2hhc1NjaGVkdWxlZEN1cnNvclVwZGF0ZSA9IHRy
dWU7Ci0gICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBwYWdlLT5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJzb3JVcGRhdGUpOwog
fQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhZWY2MzlhNTcxZTMwZjFhYWE3NzM2NmNm
MzUzMDkyMGMzZjAxNTVhLi5kMjI5MjkyZDhmOTY3NjJmNmFmY2VjOTRkZmVhZDRkN2QxNGMzNjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC01NDQ0LDcgKzU0NDQsNyBAQCB2b2lk
IEZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4
cG9zZWRSZWN0KQogICAgIH0KIAogICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkp
IHsKLSAgICAgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgcGFn
ZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVz
aCk7CiAgICAgICAgIHBhZ2UtPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmRpZENoYW5nZVZpZXdF
eHBvc2VkUmVjdCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDY4ZGNjOTA1ZmZj
NGExNzljYTNiMzBkMDlmMmY4N2VkYTBkZmE0NzUuLmJlZDBiYWU4OTQxMGExZGZmNzcxMDBhOWMy
MGM3MWM2ZWE5YTIwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTQ0LDYgKzE0NCw3IEBACiAj
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNp
bmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC01OTYsNyArNTk3LDcgQEAgdm9pZCBQYWdl
Ojp1cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCgpCiAgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLT5pbnZhbGlkYXRlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlKCk7CiAgICAgICAg
IGRvY3VtZW50LnNjaGVkdWxlRnVsbFN0eWxlUmVidWlsZCgpOwogICAgICAgICBkb2N1bWVudC5z
dHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7Ci0gICAgICAgIGRv
Y3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgZG9jdW1lbnQu
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpNZWRpYVF1
ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKQEAgLTE0MDYsMjAgKzE0MDcsNDUgQEAgdm9p
ZCBQYWdlOjpsYXlvdXRJZk5lZWRlZCgpCiAgICAgICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0
eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIH0KIAotdm9pZCBQYWdlOjpzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxS
ZW5kZXJpbmdVcGRhdGVTdGVwPiByZXF1ZXN0ZWRTdGVwcykKIHsKLSAgICByZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIGlmIChtX3JlbmRl
cmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmlzRW1wdHkoKSkgeworICAgICAgICByZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJQ
YWdlICIgPDwgdGhpcyA8PCAiIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgLSByZXF1ZXN0ZWRT
dGVwcyAiIDw8IHJlcXVlc3RlZFN0ZXBzIDw8ICIgcmVtYWluaW5nIHN0ZXBzICIgPDwgbV9yZW5k
ZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcyk7CisKKyAgICBjb21wdXRlVW5mdWxmaWxsZWRSZW5k
ZXJpbmdTdGVwcyhyZXF1ZXN0ZWRTdGVwcyk7CiB9CiAKLXZvaWQgUGFnZTo6c2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQogewotICAg
IGlmIChjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkpCisg
ICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJQYWdlICIgPDwgdGhpcyA8
PCAiIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSAtIHJlcXVlc3RlZFN0ZXBzICIgPDwg
cmVxdWVzdGVkU3RlcHMgPDwgIiByZW1haW5pbmcgc3RlcHMgIiA8PCBtX3JlbmRlcmluZ1VwZGF0
ZVJlbWFpbmluZ1N0ZXBzKTsKKworICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0
ZXBzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY2hyb21lKCkuY2xpZW50KCkuc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CiAg
ICAgICAgIHJldHVybjsKLSAgICByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgfQorCisgICAgY29tcHV0ZVVuZnVsZmlsbGVkUmVu
ZGVyaW5nU3RlcHMocmVxdWVzdGVkU3RlcHMpOworfQorCit2b2lkIFBhZ2U6OmNvbXB1dGVVbmZ1
bGZpbGxlZFJlbmRlcmluZ1N0ZXBzKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiByZXF1
ZXN0ZWRTdGVwcykKK3sKKyAgICAvLyBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzIG9u
bHkgaGFzIG1vcmUgdGhhbiBvbmUgZW50cnkgZm9yIHRoZSByZS1lbnRyYW50IHJlbmRlcmluZyB1
cGRhdGUgdHJpZ2dlcmVkIGJ5IHRlc3RpbmcuCisgICAgLy8gRm9yIHNjaGVkdWxpbmcsIHdlIG9u
bHkgY2FyZSBhYm91dCB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVudHJ5LgorICAgIGF1dG8gcmVt
YWluaW5nU3RlcHMgPSBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzWzBdOworICAgIGF1
dG8gc3RlcHNGb3JOZXh0VXBkYXRlID0gcmVxdWVzdGVkU3RlcHMgLSByZW1haW5pbmdTdGVwczsK
KyAgICBtX3VuZnVsZmlsbGVkUmVxdWVzdGVkU3RlcHMuYWRkKHN0ZXBzRm9yTmV4dFVwZGF0ZSk7
CiB9CiAKIHZvaWQgUGFnZTo6c2NoZWR1bGVJbW1lZGlhdGVSZW5kZXJpbmdVcGRhdGUoKQogewor
ICAgIExPR19XSVRIX1NUUkVBTShFdmVudExvb3AsIHN0cmVhbSA8PCAiUGFnZSAiIDw8IHRoaXMg
PDwgIiBzY2hlZHVsZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpIik7CisgICAgLy8gRklYTUU6
IGZsYWdzPwogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlSW1tZWRpYXRl
UmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKQEAgLTE0MzcsMTIgKzE0NjMsMTggQEAgdW5zaWduZWQg
UGFnZTo6cmVuZGVyaW5nVXBkYXRlQ291bnQoKSBjb25zdAogLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5n
CiB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiB7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQ
aGFzZVN0YWNrLmFwcGVuZChSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcp
OworICAgIExPRyhFdmVudExvb3AsICJQYWdlICVwIHVwZGF0ZVJlbmRlcmluZygpIC0gcmUtZW50
ZXJpbmcgJWQiLCB0aGlzLCAhbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5pc0VtcHR5
KCkpOworCisgICAgaWYgKG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgp
KQorICAgICAgICBtX3VuZnVsZmlsbGVkUmVxdWVzdGVkU3RlcHMgPSB7IH07CisKKyAgICBtX3Jl
bmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmFwcGVuZChhbGxSZW5kZXJpbmdVcGRhdGVTdGVw
cyk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCByZWVudHJhbnQsIGUuZy4gYSByQUYg
Y2FsbGJhY2sgbWF5IHRyaWdnZXIgYSBmb3JjZXMgcmVwYWludCBpbiB0ZXN0aW5nLgotICAgIC8v
IFRoaXMgaXMgd2h5IHdlIHRyYWNrIHVwZGF0ZVJlbmRlcmluZ1BoYXNlIGFzIGEgc3RhY2suCi0g
ICAgaWYgKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5zaXplKCkgPiAxKSB7CisgICAgLy8g
VGhpcyBpcyB3aHkgd2UgdHJhY2sgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcyBhcyBh
IHN0YWNrLgorICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLnNpemUoKSA+
IDEpIHsKICAgICAgICAgbGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgbV9yZW5kZXJpbmdVcGRh
dGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKHVwZGF0ZVJlbmRlcmluZ1N0ZXBzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ2Niw1OCArMTQ5OCw2NCBAQCB2b2lkIFBhZ2U6
OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIGluaXRpYWxEb2N1bWVudHMuYXBwZW5kKG1ha2VX
ZWFrUHRyKCZkb2N1bWVudCkpOwogICAgIH0pOwogCi0gICAgLy8gRmx1c2ggYXV0b2ZvY3VzIGNh
bmRpZGF0ZXMKKyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0
ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1
bWVudEZ1bmN0aW9uKSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMu
bGFzdCgpLnJlbW92ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50
RnVuY3Rpb24pOworICAgIH07CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBk
b2N1bWVudCkgeworICAgIC8vIEZJWE1FOiBGbHVzaCBhdXRvZm9jdXMgY2FuZGlkYXRlcy4KKwor
ICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSwgW10gKERv
Y3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC5ydW5SZXNpemVTdGVwcygpOwog
ICAgIH0pOwogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsK
KyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwsIFtdIChE
b2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQucnVuU2Nyb2xsU3RlcHMoKTsK
ICAgICB9KTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7
CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2
YWx1YXRpb24sIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQuZXZh
bHVhdGVNZWRpYVF1ZXJpZXNBbmRSZXBvcnRDaGFuZ2VzKCk7ICAgICAgICAKICAgICB9KTsKIAot
ICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0gICAgICAgIGlm
ICghZG9jdW1lbnQuZG9tV2luZG93KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1
dG8gdGltZXN0YW1wID0gZG9jdW1lbnQuZG9tV2luZG93KCktPmZyb3plbk5vd1RpbWVzdGFtcCgp
OwotICAgICAgICBpZiAoYXV0byogdGltZWxpbmVzQ29udHJvbGxlciA9IGRvY3VtZW50LnRpbWVs
aW5lc0NvbnRyb2xsZXIoKSkKLSAgICAgICAgICAgIHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0
ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKHRpbWVzdGFtcCk7Ci0gICAgICAgIC8vIEZJWE1FOiBS
dW4gdGhlIGZ1bGxzY3JlZW4gc3RlcHMuCi0gICAgICAgIGRvY3VtZW50LnNlcnZpY2VSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1wKTsKKyAgICBydW5Qcm9jZXNzaW5nU3Rl
cChSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25zLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGRvY3VtZW50LnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7Cisg
ICAgfSk7CisKKyAgICAvLyBGSVhNRTogUnVuIHRoZSBmdWxsc2NyZWVuIHN0ZXBzLgorICAgIG1f
cmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRh
dGVTdGVwOjpGdWxsc2NyZWVuKTsKKworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OkFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGRvY3VtZW50LnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
a3MoKTsKICAgICB9KTsKIAogICAgIGxheW91dElmTmVlZGVkKCk7CiAKICNpZiBFTkFCTEUoSU5U
RVJTRUNUSU9OX09CU0VSVkVSKQotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRv
Y3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50
ZXJzZWN0aW9uT2JzZXJ2YXRpb25zLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAg
IGRvY3VtZW50LnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmF0aW9ucygpOwogICAgIH0pOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQotICAgIGZvckVhY2hEb2N1bWVudChb
Jl0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9ucywgWyZdIChEb2N1bWVudCYgZG9jdW1lbnQp
IHsKICAgICAgICAgZG9jdW1lbnQudXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKCp0aGlzKTsKICAg
ICB9KTsKICNlbmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1l
bnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbWFnZXMs
IFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuYWxsQ2FjaGVkU1ZHSW1hZ2VzKCkpIHsKICAg
ICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaW1hZ2UtPmludGVybmFsUGFnZSgpKQogICAgICAg
ICAgICAgICAgIHBhZ2UtPmlzb2xhdGVkVXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9KTsKIAotICAgIEFTU0VSVChtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID09
IFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpJblVwZGF0ZVJlbmRlcmluZyk7Ci0KICAgICBmb3IgKGF1
dG8mIGRvY3VtZW50IDogaW5pdGlhbERvY3VtZW50cykgewogICAgICAgICBpZiAoZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPmRvbVdpbmRvdygpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRvbVdpbmRv
dygpLT51bmZyZWV6ZU5vd1RpbWVzdGFtcCgpOwogICAgIH0KIAorICAgIG1fcmVuZGVyaW5nVXBk
YXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVl
bEV2ZW50TW9uaXRvckNhbGxiYWNrcyk7CisKICAgICBpZiAoVU5MSUtFTFkoaXNNb25pdG9yaW5n
V2hlZWxFdmVudHMoKSkpCiAgICAgICAgIHdoZWVsRXZlbnRUZXN0TW9uaXRvcigpLT5jaGVja1No
b3VsZEZpcmVDYWxsYmFja3MoKTsKIApAQCAtMTUyOSwyMCArMTU2NywxNyBAQCB2b2lkIFBhZ2U6
OnVwZGF0ZVJlbmRlcmluZygpCiAKICAgICBpZiAoIWlzU1ZHSW1hZ2VQYWdlKQogICAgICAgICB0
cmFjZVBvaW50KFJlbmRlcmluZ1VwZGF0ZUVuZCk7Ci0KLSAgICBBU1NFUlQobV91cGRhdGVSZW5k
ZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVS
ZW5kZXJpbmcpOwogfQogCiB2b2lkIFBhZ2U6Omlzb2xhdGVkVXBkYXRlUmVuZGVyaW5nKCkKIHsK
KyAgICBMT0coRXZlbnRMb29wLCAiUGFnZSAlcCBpc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpIiwg
dGhpcyk7CiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFz
ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKIH0K
IAogdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKIHsKLSAgICBBU1NFUlQobV91
cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6
SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAgICAgLy8gQ29kZSBoZXJlIHNob3VsZCBkbyBvbmNlLXBl
ci1mcmFtZSB3b3JrIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFuZCBy
ZXF1aXJlcwogICAgIC8vIGxheW91dCB0byBiZSB1cC10by1kYXRlLiBJdCBzaG91bGQgbm90IHJ1
biBzY3JpcHQsIHRyaWdnZXIgbGF5b3V0LCBvciBkaXJ0eSBsYXlvdXQuCiAKQEAgLTE1NTUsNyAr
MTU5MCwxMiBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0KICNl
bmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAg
ICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwg
Y29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9u
KSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92
ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24pOwor
ICAgIH07CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJz
b3JVcGRhdGUsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtMTU3NCw2ICsxNjE0LDggQEAg
dm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgogCisg
ICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKKwogI2lmIEVOQUJMRShJT1NfVE9VQ0hf
RVZFTlRTKQogICAgIC8vIHVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCkgbmVlZHMgdG8gYmUgY2Fs
bGVkIG9ubHkgb24gdGhlIHRvcCBkb2N1bWVudC4KICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBk
b2N1bWVudCA9IG1haW5GcmFtZSgpLmRvY3VtZW50KCkpCkBAIC0xNTk2LDEzICsxNjM4LDExIEBA
IHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIEFTU0VSVCghZnJh
bWVWaWV3IHx8ICFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KICNlbmRpZgotCi0g
ICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5n
VXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjpmaW5hbGl6
ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4g
ZmxhZ3MpCiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkg
PT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKKyAgICBMT0coRXZl
bnRMb29wLCAiUGFnZSAlcCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpIiwgdGhpcyk7CiAKICAg
ICBhdXRvKiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghdmlldykKQEAgLTE2
MTEsMjMgKzE2NTEsMzYgQEAgdm9pZCBQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRp
b25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3MKICAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6SW52YWxpZGF0ZUltYWdlc1dp
dGhBc3luY0RlY29kZXMpKQogICAgICAgICB2aWV3LT5pbnZhbGlkYXRlSW1hZ2VzV2l0aEFzeW5j
RGVjb2RlcygpOwogCi0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJl
bmRlcmluZ1VwZGF0ZVBoYXNlOjpMYXllckZsdXNoaW5nOworICAgIG1fcmVuZGVyaW5nVXBkYXRl
UmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZs
dXNoKTsKIAogICAgIHZpZXctPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1l
cygpOwogCi0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmlu
Z1VwZGF0ZVBoYXNlOjpQb3N0TGF5ZXJGbHVzaDsKLQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1RyZWVVcGRhdGUpOworCiAgICAgaWYgKGF1dG8q
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewog
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKTsK
ICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6
OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKSkKICAgICAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5hcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucygpOwotICAgICAg
ICAgICAgCisKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRpZENvbXBsZXRlUmVuZGVy
aW5nVXBkYXRlKCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNl
U3RhY2sucmVtb3ZlTGFzdCgpOworICAgIEFTU0VSVChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmlu
Z1N0ZXBzLmxhc3QoKS5pc0VtcHR5KCkpOworICAgIHJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCgp
OworfQorCit2b2lkIFBhZ2U6OnJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgbV9y
ZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5yZW1vdmVMYXN0KCk7CisKKyAgICBMT0dfV0lU
SF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlBhZ2UgIiA8PCB0aGlzIDw8ICIgcmVuZGVy
aW5nVXBkYXRlQ29tcGxldGVkKCkgLSBzdGVwcyAiIDw8IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWlu
aW5nU3RlcHMgPDwgIiB1bmZ1bGZpbGxlZCBzdGVwcyAiIDw8IG1fdW5mdWxmaWxsZWRSZXF1ZXN0
ZWRTdGVwcyk7CisKKyAgICBpZiAobV91bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzKSB7CisgICAg
ICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7
CisgICAgICAgIG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwcyA9IHsgfTsKKyAgICB9CiB9CiAK
IHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCkBAIC0yOTMxLDcgKzI5ODQs
NyBAQCB2b2lkIFBhZ2U6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpCiAgICAgZm9y
RWFjaERvY3VtZW50KFtdIChhdXRvJiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC5zdHls
ZVNjb3BlKCkuZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFu
Z2UoKTsKICAgICAgICAgZG9jdW1lbnQudXBkYXRlRWxlbWVudHNBZmZlY3RlZEJ5TWVkaWFRdWVy
aWVzKCk7Ci0gICAgICAgIGRvY3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsK
KyAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdV
cGRhdGVTdGVwOjpNZWRpYVF1ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKQEAgLTI5NDEs
NyArMjk5NCw3IEBAIHZvaWQgUGFnZTo6YXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAgICAgIGRv
Y3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKICAg
ICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmV2YWx1YXRlTWVkaWFRdWVyaWVzRm9yQXBwZWFy
YW5jZUNoYW5nZSgpOwogICAgICAgICBkb2N1bWVudC51cGRhdGVFbGVtZW50c0FmZmVjdGVkQnlN
ZWRpYVF1ZXJpZXMoKTsKLSAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSgpOworICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uKTsKICAgICB9KTsKIH0KIApA
QCAtMzMwNiw0ICszMzU5LDI5IEBAIHZvaWQgUGFnZTo6bWFpbkZyYW1lRGlkQ2hhbmdlVG9Ob25J
bml0aWFsRW1wdHlEb2N1bWVudCgpCiAgICAgbV91c2VyU3R5bGVTaGVldHNQZW5kaW5nSW5qZWN0
aW9uLmNsZWFyKCk7CiB9CiAKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mIHRzLCBSZW5kZXJpbmdVcGRhdGVTdGVwIHN0ZXApCit7CisgICAgc3dpdGNoIChzdGVw
KSB7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemU6IHRzIDw8ICJSZXNpemUi
OyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbDogdHMgPDwgIlNj
cm9sbCI7IGJyZWFrOworICAgIGNhc2UgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2
YWx1YXRpb246IHRzIDw8ICJNZWRpYVF1ZXJ5RXZhbHVhdGlvbiI7IGJyZWFrOworICAgIGNhc2Ug
UmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9uczogdHMgPDwgIkFuaW1hdGlvbnMiOyBicmVh
azsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkZ1bGxzY3JlZW46IHRzIDw8ICJGdWxs
c2NyZWVuIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25G
cmFtZUNhbGxiYWNrczogdHMgPDwgIkFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzIjsgYnJlYWs7Cisj
aWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9uczogdHMgPDwgIkludGVyc2VjdGlvbk9ic2Vy
dmF0aW9ucyI7IGJyZWFrOworI2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKKyAg
ICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9uczogdHMgPDwgIlJl
c2l6ZU9ic2VydmF0aW9ucyI7IGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpJbWFnZXM6IHRzIDw8ICJJbWFnZXMiOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzOiB0cyA8PCAiV2hlZWxFdmVu
dE1vbml0b3JDYWxsYmFja3MiOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6
OkN1cnNvclVwZGF0ZTogdHMgPDwgIkN1cnNvclVwZGF0ZSI7IGJyZWFrOworICAgIGNhc2UgUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6RXZlbnRSZWdpb25VcGRhdGU6IHRzIDw8ICJFdmVudFJlZ2lvblVw
ZGF0ZSI7IGJyZWFrOworICAgIGNhc2UgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaDog
dHMgPDwgIkxheWVyRmx1c2giOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6
OlNjcm9sbGluZ1RyZWVVcGRhdGU6IHRzIDw8ICJTY3JvbGxpbmdUcmVlVXBkYXRlIjsgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCAyMTE3YTIzYTg4MDJkN2ZjNzRmMDVlN2FkZTYwOGI4NGFiNTMwZjM4Li4x
MWE3YjcyMDU0OTgyMjE0NDQ0MjA4MmZjMTVhYTg4Y2RjNWNhNWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtNzQsNiArNzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBEZWJ1Z2dlcjsKIH0KIAor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFtOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSBJREJDbGllbnQgewpAQCAtMTY5LDYgKzE3Myw1MiBAQCBlbnVtIGNs
YXNzIEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3MgOiB1aW50OF90IHsKICAgICBJbnZhbGlk
YXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcyAgICA9IDEgPDwgMSwKIH07CiAKK2VudW0gY2xhc3Mg
UmVuZGVyaW5nVXBkYXRlU3RlcCA6IHVpbnQxNl90IHsKKyAgICBSZXNpemUgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAwLAorICAgIFNjcm9sbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDEsCisgICAgTWVkaWFRdWVyeUV2YWx1YXRpb24gICAgICAgICAgICA9IDEgPDwg
MiwKKyAgICBBbmltYXRpb25zICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAorICAgIEZ1
bGxzY3JlZW4gICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDQsCisgICAgQW5pbWF0aW9uRnJh
bWVDYWxsYmFja3MgICAgICAgICA9IDEgPDwgNSwKKyNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09C
U0VSVkVSKQorICAgIEludGVyc2VjdGlvbk9ic2VydmF0aW9ucyAgICAgICAgPSAxIDw8IDYsCisj
ZW5kaWYKKyNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQorICAgIFJlc2l6ZU9ic2VydmF0aW9u
cyAgICAgICAgICAgICAgPSAxIDw8IDcsCisjZW5kaWYKKyAgICBJbWFnZXMgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCA4LAorICAgIFdoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzICAg
ICAgPSAxIDw8IDksCisgICAgQ3Vyc29yVXBkYXRlICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTAsCisgICAgRXZlbnRSZWdpb25VcGRhdGUgICAgICAgICAgICAgICA9IDEgPDwgMTEsCisgICAg
TGF5ZXJGbHVzaCAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCisgICAgU2Nyb2xsaW5n
VHJlZVVwZGF0ZSAgICAgICAgICAgICA9IDEgPDwgMTMsCit9OworCitjb25zdGV4cHIgT3B0aW9u
U2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHVwZGF0ZVJlbmRlcmluZ1N0ZXBzID0geworICAgIFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSwKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3Jv
bGwsCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2YWx1YXRpb24sCisgICAg
UmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9ucywKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVw
OjpGdWxsc2NyZWVuLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2tzLAorI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCisgICAgUmVuZGVyaW5n
VXBkYXRlU3RlcDo6SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25zLAorI2VuZGlmCisjaWYgRU5BQkxF
KFJFU0laRV9PQlNFUlZFUikKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZh
dGlvbnMsCisjZW5kaWYKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbWFnZXMsCisgICAgUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MsCisgICAgUmVuZGVy
aW5nVXBkYXRlU3RlcDo6Q3Vyc29yVXBkYXRlLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkV2
ZW50UmVnaW9uVXBkYXRlLAorfTsKKworY29uc3RleHByIGF1dG8gYWxsUmVuZGVyaW5nVXBkYXRl
U3RlcHMgPSB1cGRhdGVSZW5kZXJpbmdTdGVwcyB8IE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVT
dGVwPiB7CisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCwKKyAgICBSZW5kZXJp
bmdVcGRhdGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlLAorfTsKKworCiBjbGFzcyBQYWdlIDog
cHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZT4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtNDg5LDkgKzUzOSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZUZsYWdzPik7CiAKICAgICAvLyBEbyBpbW1lZGlhdGUgb3IgdGltZWQgdXBkYXRlIGFzIGRp
Y3RhdGVkIGJ5IHRoZSBDaHJvbWVDbGllbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICAvLyBT
Y2hlZHVsZSBhbiB1cGRhdGUgdGhhdCBjb29yZGluYXRlcyB3aXRoIGRpc3BsYXkgcmVmcmVzaDsg
dGhlIG5vcm1hbCBraW5kIG9mIHVwZGF0ZS4KLSAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9u
U2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUgaW4g
dGhlIGN1cnJlbnQgcnVubG9vcDsgdGhpcyBpcyBhbiBlYWdlciB1cGRhdGUgdGhhdCBtYXkgdHJp
Z2dlciByZW5kZXJpbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGRpc3BsYXkgcmVmcmVzaC4KICAgICB2
b2lkIHNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCk7CiAKQEAgLTc3MywxMyArODIz
LDYgQEAgcHVibGljOgogICAgIE1vbm90b25pY1RpbWUgbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsgfQog
CiBwcml2YXRlOgotICAgIGVudW0gY2xhc3MgUmVuZGVyaW5nVXBkYXRlUGhhc2UgOiB1aW50OF90
IHsKLSAgICAgICAgT3V0c2lkZSwKLSAgICAgICAgSW5VcGRhdGVSZW5kZXJpbmcsCi0gICAgICAg
IExheWVyRmx1c2hpbmcsCi0gICAgICAgIFBvc3RMYXllckZsdXNoCi0gICAgfTsKLQogICAgIHN0
cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwogICAg
ICAgICBGcmFtZUxvYWRUeXBlIHR5cGU7CkBAIC04MTUsNiArODU4LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQoKTsKIAog
ICAgIHZvaWQgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOworICAgIHZvaWQgcmVuZGVyaW5nVXBk
YXRlQ29tcGxldGVkKCk7CisgICAgdm9pZCBjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVw
cyhPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4pOwogCiAgICAgUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyJiByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKTsKIApAQCAtMTAyNCw4ICsxMDY5
LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNFZGl0YWJsZVJlZ2lvbkVuYWJsZWQgeyBmYWxz
ZSB9OwogI2VuZGlmCiAKLSAgICBWZWN0b3I8UmVuZGVyaW5nVXBkYXRlUGhhc2UsIDI+IG1fdXBk
YXRlUmVuZGVyaW5nUGhhc2VTdGFjazsKLQorICAgIFZlY3RvcjxPcHRpb25TZXQ8UmVuZGVyaW5n
VXBkYXRlU3RlcD4sIDI+IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHM7CisgICAgT3B0
aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwczsK
KyAgICAKICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogICAg
IAogICAgIC8vIEZvciB0ZXN0aW5nLgpAQCAtMTA4Nyw0ICsxMTMzLDYgQEAgaW5saW5lIFBhZ2VH
cm91cCYgUGFnZTo6Z3JvdXAoKQogICAgIHJldHVybiAqbV9ncm91cDsKIH0KIAorV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFJlbmRlcmluZ1VwZGF0ZVN0ZXAp
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VP
dmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggMjUyYmVmOTUwOThkZjJmY2FmMGQyMTJlNTY4Njli
OGNjMjUwZTE2ZS4uYzYyYTk4NTU0NzkwMTQ1MjYxODk3MDc0MDJiNTZkNzFjNmQ3ZDU0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtMzE4
LDcgKzMxOCw3IEBAIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VT
Y2FsZUZhY3RvcigpCiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3
RXhwb3NlZFJlY3QoKQogewotICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgbV9wYWdlLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBk
YXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpk
aWRTY3JvbGxGcmFtZShGcmFtZSYgZnJhbWUpCkBAIC00MTIsNyArNDEyLDcgQEAgZmxvYXQgUGFn
ZU92ZXJsYXlDb250cm9sbGVyOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgUGFn
ZU92ZXJsYXlDb250cm9sbGVyOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKQogewotICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
bV9wYWdlLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VP
dmVybGF5RnJhbWUoUGFnZU92ZXJsYXkmIG92ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggZmE3Y2M3NzM0NDg0ZWNjMjJh
ZmRiYzgxZDM5NDY3NmRkZDkwY2FhMS4uODhmMGJlYmU2NzY3NzU3ZDc1ZTJmZDM2MTAzMTQ5YmQ2
ZmM2OTVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
IDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs2MCwxMSBAQCBib29sIFJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVBbmltYXRpb24oRnJhbWVzUGVyU2Vjb25kIHByZWZl
cnJlZEZyYW1lcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICBzZXRQcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmQocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKLSAgICByZXR1cm4g
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjaGVkdWxlQW5p
bWF0aW9uKCp0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlvbigqdGhpcyk7CisKKyAgICBM
T0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzY2hlZHVsZUFuaW1hdGlvbigiIDw8IHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCA8PCAiZnBzKSAtIHNjaGVkdWxlZCAiIDw8IHJlc3VsdCk7
CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6YWRqdXN0UmVuZGVyaW5nVXBkYXRlRnJlcXVlbmN5KCkKQEAgLTc3LDYgKzgzLDggQEAgdm9p
ZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmFkanVzdFJlbmRlcmluZ1VwZGF0ZUZyZXF1ZW5j
eSgpCiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzY2hlZHVsZVRpbWVkUmVuZGVy
aW5nVXBkYXRlKCkKIHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwg
IlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkgLSBhbHJlYWR5IHNjaGVkdWxlZCAiIDw8IGlzU2No
ZWR1bGVkKCkgPDwgIiBwYWdlIHZpc2libGUgIiA8PCBtX3BhZ2UuaXNWaXNpYmxlKCkpOworCiAg
ICAgaWYgKGlzU2NoZWR1bGVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA2LDYgKzExNCw4
IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CiAg
ICAgCiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihTZWNvbmRzIGRl
bGF5KQogeworICAgIExPR19XSVRIX1NUUkVBTShFdmVudExvb3AsIHN0cmVhbSA8PCAiUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyIGZvciBwYWdlICIgPDwgJm1fcGFnZSA8PCAiIHN0YXJ0VGltZXIo
IiA8PCBkZWxheSA8PCAiKSIpOworCiAgICAgQVNTRVJUKCFpc1NjaGVkdWxlZCgpKTsKICAgICBt
X3JlZnJlc2hUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKTsKICAgICBtX3JlZnJlc2hUaW1lci0+c3Rh
cnRPbmVTaG90KGRlbGF5KTsKQEAgLTEzMyw2ICsxNDMsOCBAQCB2b2lkIFJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRAogCiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJl
ZCgpCiB7CisgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIgZm9yIHBhZ2UgIiA8PCAmbV9wYWdlIDw8ICIgZGlzcGxheVJlZnJl
c2hGaXJlZCgpIik7CisKICAgICB0cmFjZVBvaW50KFRyaWdnZXJSZW5kZXJpbmdVcGRhdGUpOwog
CiAgICAgY2xlYXJTY2hlZHVsZWQoKTsKQEAgLTE0MSwxMSArMTUzLDE0IEBAIHZvaWQgUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKCkKIAogdm9pZCBSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCkKIHsK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzY2hlZHVsZUltbWVkaWF0ZVJl
bmRlcmluZ1VwZGF0ZSgpIik7CiAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLnNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiB7CisgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9v
cCwgc3RyZWFtIDw8ICJSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIgZm9yIHBhZ2UgIiA8PCAmbV9w
YWdlIDw8ICIgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSAtIG5lZWRzIGltbWVkaWF0ZSB1cGRh
dGUgIiA8PCBtX3BhZ2UuY2hyb21lKCkuY2xpZW50KCkubmVlZHNJbW1lZGlhdGVSZW5kZXJpbmdV
cGRhdGUoKSk7CisKICAgICBpZiAobV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLm5lZWRzSW1tZWRp
YXRlUmVuZGVyaW5nVXBkYXRlKCkpCiAgICAgICAgIHNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5n
VXBkYXRlKCk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBk
YXRlU2NoZWR1bGVyLmgKaW5kZXggZTBlMDE3ZWJjMmY0ZmIzODRkZTk1OTVjNmM5NDQ4YTU2MmMz
NTg1NC4uMmI3NjZjZDE1OTUxZmJkYjZmODZhMmI4OGJkNzQ0Y2VjNTI4YjAwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCkBAIC02Myw5ICs2
Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclNjaGVkdWxlZCgpOwogCiAgICAgUGFnZSYg
bV9wYWdlOwotICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxUaW1lcj4gbV9yZWZyZXNoVGltZXI7CiAgICAgRnJhbWVzUGVyU2Vjb25kIG1fcHJlZmVy
cmVkRnJhbWVzUGVyU2Vjb25kIHsgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kIH07CisgICAgYm9v
bCBtX3NjaGVkdWxlZCB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXpl
T2JzZXJ2ZXIuY3BwCmluZGV4IDI1N2ZhMTFjOGM3YmZlYWI2MWEzNGVmNzEzNmNhYmJjODA1NTYw
YTAuLjZjODcyMGJhZWFkYmQxZWRmY2Q3YzhmMmQ0YmI0ZTkzOTdkZTE5NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVzaXpl
T2JzZXJ2ZXI6Om9ic2VydmUoRWxlbWVudCYgdGFyZ2V0KQogCiAgICAgaWYgKG1fZG9jdW1lbnQp
IHsKICAgICAgICAgbV9kb2N1bWVudC0+YWRkUmVzaXplT2JzZXJ2ZXIoKnRoaXMpOwotICAgICAg
ICBtX2RvY3VtZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIG1f
ZG9jdW1lbnQtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3Rl
cDo6UmVzaXplT2JzZXJ2YXRpb25zKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcAppbmRleCAxZDEzZmM2MTk3MTAzZmRiMDFlZmM5
NDNmYWMxMDY1MjJjODEwNTY0Li4xNDc0MTc2ZTVmMDRmMGRiMTkxMzQwOGVjYjM0MGFmYjdjNTgz
NjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2Fs
bGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuCiAgICAgVU5VU0VEX1BB
UkFNKGV4cGVjdE1vbWVudHVtRW5kKTsKICNlbmRpZgogCi0gICAgbV9wYWdlLnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKCk7CisgICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzKTsKIAogICAgIExPR19X
SVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50
VGVzdE1vbml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyAtIGV4cGVjdCBl
bmQvY2FuY2VsICIgPDwgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCA8PCAiLCBleHBlY3QgbW9tZW50
dW0gZW5kICIgPDwgZXhwZWN0TW9tZW50dW1FbmQpOwogfQpAQCAtMTIxLDEzICsxMjEsMTMgQEAg
dm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudChjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNjaGVk
dWxlQ2FsbGJhY2tDaGVjaygpCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAg
IG1fcGFnZS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBtX3BhZ2Uuc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JD
YWxsYmFja3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKG1fcGFnZSldIHsKICAgICAgICAgaWYg
KHdlYWtQYWdlKQotICAgICAgICAgICAgd2Vha1BhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgICAgICAgICB3ZWFrUGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVy
aW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbQppbmRleCAwYjlhYmI4YzljYTg4YjQ2MjlhMjkzOTgxZGQyNTZlNzE3NWQwYzQ4Li44
ZjE3YWMxNWExZjQ3MTdmNGNkNjMzOGYzYTI0MGMxMjkzNWE5ZWY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6
bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheQogICAgIGlmICghbV9jb250cm9s
bGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRyb2xsZXItPnBhZ2UoKS5zY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgbV9jb250cm9sbGVyLT5wYWdlKCkuc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNoKTsK
IH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OnBhaW50Q29u
dGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKaW5kZXggMjQ5YmI5NjlmMjllODgzNjNlNzYyZTJmNDEwY2FmMDczNjEx
NDQzZS4uZjEzOTIzNzFiZGIyMzMzNThlM2I0NTNlNTM1ZWIzOWMyZTk4ZDc5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKQEAgLTEyMyw2ICsxMjMsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldEV2ZW50VHJhY2tpbmdSZWdpb25zRGlydHkoKQogewogICAgIG1fZXZlbnRU
cmFja2luZ1JlZ2lvbnNEaXJ0eSA9IHRydWU7CiAgICAgLy8gV2UgaGF2ZSB0byBzY2hlZHVsZSBh
IGNvbW1pdCwgYnV0IHRoZSBjb21wdXRlZCBub24tZmFzdCByZWdpb24gbWF5IG5vdCBoYXZlIGFj
dHVhbGx5IGNoYW5nZWQuCisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gZGlzYW1iaWd1YXRl
IGJldHdlZW4gZXZlbnQgcmVnaW9ucyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUsIGFuZCB0aG9zZSBp
biBHcmFwaGljc0xheWVycy4KICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggNDYzN2I1ZDQzODUyMDdiNjViOTI4YjJlYzljMmQ0
ZmY0N2RmNWMyMC4uYjQ5ZjEwYzlmY2MwZmFmYmQ5NThkNzJlMGEwZDY4ZGM1Mjc5YmYzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtOTUsNyArOTUsOCBAQCBib29sIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdgogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hlZHVsZVRyZWVTdGF0
ZUNvbW1pdCgpCiB7Ci0gICAgbV9wYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAg
IC8vIEZJWE1FOiBUaGlzIG9uZSBuZWVkcyB3b3JrLgorICAgIG1fcGFnZS0+c2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsaW5nVHJlZVVwZGF0ZSk7CiB9
CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCA3ZDZjODg0NjExM2Q4NWQzZmQxYTlk
YzM1OGVjNGJiMWQ5OTcyYTA1Li5iNTM5YmRlMmNmOTM0YjBmMDI0ZjhkNjBmMTZkZjE0YzlhNTNm
ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCkBAIC01Niw2ICs1Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBNKEVkaXRpbmcpIFwKICAgICBNKEVNRSkgXAogICAgIE0oRXZl
bnRzKSBcCisgICAgTShFdmVudExvb3ApIFwKICAgICBNKEV2ZW50UmVnaW9ucykgXAogICAgIE0o
RmlsZUFQSSkgXAogICAgIE0oRmlsdGVycykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCmluZGV4IGRmZDBiZDk5MTAzZDBjOWQzYWQ3ZjcxNmQ3OGIxY2YwYzdk
NDgwMmIuLmFmMTlkMWM4NTNiYTY4YzEyNmJkODkyMzFjNGE0MzI0NzNkODJkZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTE0MDMsMTAgKzE0MDMs
MTAgQEAgdm9pZCBSZW5kZXJFbGVtZW50OjpkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNo
ZWRJbWFnZSYgY2FjaGVkSW1hZ2UpCiAgICAgICAgIHZpZXcoKS5yZW1vdmVSZW5kZXJlcldpdGhQ
YXVzZWRJbWFnZUFuaW1hdGlvbnMoKnRoaXMsIGNhY2hlZEltYWdlKTsKIH0KIAotdm9pZCBSZW5k
ZXJFbGVtZW50OjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkKK3ZvaWQgUmVuZGVyRWxl
bWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFnZShDYWNoZWRJbWFnZSYpCiB7CiAg
ICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+c2No
ZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5zY2hlZHVsZVRpbWVk
UmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkltYWdlcyk7CiB9CiAKIGJvb2wg
UmVuZGVyRWxlbWVudDo6cmVwYWludEZvclBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVlZGVkKGNv
bnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiYTM0OGI3YTUzOTA4Zjkx
MDlkNzVhNDRmZTBlYmFhMTc1ZDU1NDg2Li40MmMyNzhhYWE0YjBiNzQ3M2FjZTkyMzI4MDViN2Mw
ZTFkNWFlYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAg
LTMyMyw3ICszMjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuRGVzdHJveURlY29kZWREYXRh
KCkgZmluYWwgeyByZXR1cm4gIWlzVmlzaWJsZUluVmlld3BvcnQoKTsgfQogICAgIFZpc2libGVJ
blZpZXdwb3J0U3RhdGUgaW1hZ2VGcmFtZUF2YWlsYWJsZShDYWNoZWRJbWFnZSYsIEltYWdlQW5p
bWF0aW5nU3RhdGUsIGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVtb3ZlQ2FjaGVkSW1hZ2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSBmaW5hbDsKLSAgICB2b2lk
IHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSBmaW5hbDsKKyAgICB2b2lkIHNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2UmKSBmaW5hbDsKIAogICAgIGJvb2wg
Z2V0TGVhZGluZ0Nvcm5lcihGbG9hdFBvaW50JiBvdXRwdXQsIGJvb2wmIGluc2lkZUZpeGVkKSBj
b25zdDsKICAgICBib29sIGdldFRyYWlsaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91dHB1dCwgYm9v
bCYgaW5zaWRlRml4ZWQpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCA5Y2EwZjkzYmJiYzFkNTFkOTAwYzlmZjlmODEwNzM2
NDk1NWRmZTJlLi4yZGJhNWIxZDdhOTMwNzk2ZjcwNDEwMjgwYWQwZDE4N2RlMWRiNWJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAt
MzY0OCwxMSArMzY0OCwxMiBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5QW5pbWF0
aW9uU3RhcnRlZChjb25zdCBHcmFwaGljc0xheWVyKiwgY29uc3QgU3RyaQogewogfQogCi12b2lk
IFJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xh
eWVyKikKK3ZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0
IEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIGlmIChyZW5kZXJlcigpLnJlbmRlclRyZWVC
ZWluZ0Rlc3Ryb3llZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgY29tcG9zaXRvcigpLnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKCk7CisKKyAgICBjb21wb3NpdG9yKCkubm90aWZ5Rmx1c2hSZXF1
aXJlZChsYXllcik7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaEJl
Zm9yZURpc3BsYXlSZWZyZXNoKGNvbnN0IEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCA3
NTc1ZGNhN2ViMjRlYzNhOWRlNzE2NjE3YmY3MjI1MDJjZWMyM2VhLi5mNWJmN2I0ODAwNTEwYmYz
N2JiMThlMzAxNDQ5OTJmMWY0OGUyNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtNTI2LDcgKzUyNiw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiB7CiAgICAg
QVNTRVJUKCFtX2ZsdXNoaW5nTGF5ZXJzKTsKIAotICAgIHBhZ2UoKS5zY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpOworICAgIHBhZ2UoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdV
cGRhdGVTdGVwOjpMYXllckZsdXNoKTsKIH0KIAogRmxvYXRSZWN0IFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6dmlzaWJsZVJlY3RGb3JMYXllckZsdXNoaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRleCBjMzk2MTQ4M2Y0
ZWUyNmMwNTE4MDgyZTdlYzJjZDk3NjU1YTY1NDFkLi5jMTUxZTIzZDBlZjY1ZmViOTlmMDU3ZTVk
MjI4ZWJiZmQ1YzE4NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCkBAIC0xNzgsNyArMTc4LDcgQEAgcHVibGljOgogCiAgICAgLy8g
R3JhcGhpY3NMYXllcnMgYnVmZmVyIHN0YXRlLCB3aGljaCBnZXRzIHB1c2hlZCB0byB0aGUgdW5k
ZXJseWluZyBwbGF0Zm9ybSBsYXllcnMKICAgICAvLyBhdCBzcGVjaWZpYyB0aW1lcy4KLSAgICB2
b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgdm9pZCBub3RpZnlGbHVzaFJlcXVp
cmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIGZsdXNoUGVuZGlu
Z0xheWVyQ2hhbmdlcyhib29sIGlzRmx1c2hSb290ID0gdHJ1ZSk7CiAKICAgICAvLyBDYWxsZWQg
d2hlbiB0aGUgR3JhcGhpY3NMYXllciBmb3IgdGhlIGdpdmVuIFJlbmRlckxheWVyIGhhcyBmbHVz
aGVkIGNoYW5nZXMgaW5zaWRlIG9mIGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpLgpAQCAtMzk2
LDcgKzM5Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCB1cGRhdGVDb21wb3NpdGluZ1BvbGljeSgp
OwogICAgIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQgaW1wbGVtZW50YXRpb24KLSAgICB2
b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwog
ICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiwgR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiwgR3JhcGhpY3NMYXllclBhaW50QmVoYXZpb3IpIG92ZXJy
aWRlOwogICAgIHZvaWQgY3VzdG9tUG9zaXRpb25Gb3JWaXNpYmxlUmVjdENvbXB1dGF0aW9uKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqLCBGbG9hdFBvaW50JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9v
bCBpc1RyYWNraW5nUmVwYWludHMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzVHJhY2tp
bmdSZXBhaW50czsgfQpAQCAtNDU0LDYgKzQ1Myw4IEBAIHByaXZhdGU6CiAKICAgICBib29sIG5l
ZWRzQ29tcG9zaXRpbmdGb3JDb250ZW50T3JPdmVybGF5cygpIGNvbnN0OwogCisgICAgdm9pZCBz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworCiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoKTsK
ICAgICB2b2lkIGRlc3Ryb3lSb290TGF5ZXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0VGV4
dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA3OWNhMmNj
ZDMxZDg0NTRkZTIxNDlhMWNkZjA0NjQ1NzU4ODgwMDY1Li5mMTI3ZDc3ZTkzNjAxYmRiY2Y5ZTRk
ZTY3NzkwNmNmMzliNzRkNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0dXJlTWFwcGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUhvc3RUZXh0dXJlTWFwcGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lk
IExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1lckZpcmVkKCkKIAogICAgIC8vIEluIGNhc2Ug
YW4gYW5pbWF0aW9uIGlzIHJ1bm5pbmcsIHdlIHNob3VsZCBmbHVzaCBhZ2FpbiBzb29uLgogICAg
IGlmIChkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4obV9yb290TGF5ZXIuZ2V0
KCkpLT5sYXllcigpLmRlc2NlbmRhbnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkpCi0g
ICAgICAgIG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgICAgIG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiBMYXllclRyZWVI
b3N0OjpMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNjIzNWQyYzFlZDZhNjA1YzZkYjMyMTBiYWUw
MTBjMGFlMmIxNTgwNC4uOTk0ZjIxODc5YWIyYjQyYjllYWEzMGYxYWZlN2M2NTY4NDY0MTBjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtOTA4MCw3
ICs5MDgwLDcgQEAgLSAoQk9PTClfZmx1c2hDb21wb3NpdGluZ0NoYW5nZXMKIC0gKHZvaWQpX3Nj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9yUGVuZGluZ1RpbGVDYWNoZVJlcGFpbnQKIHsKICAgICBp
ZiAoYXV0byogcGFnZSA9IF9wcml2YXRlLT5wYWdlKQotICAgICAgICBwYWdlLT5zY2hlZHVsZVJl
bmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShX
ZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNoKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKaW5kZXggMWZk
YTc2NzY0OWMyMjZmMjFhN2U3MmE0NjE3OWMzZjllYWViNzM1Yi4uZGZlMmMzMDBkNzY2M2JjNThm
MGNmOGM2YjY3YmU4NTcwMDRjZDAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMTIxLDYgKzEyMSw4IEBAIHByaXZhdGU6CiAgICAgCiAg
ICAgTGF5ZXJGbHVzaENvbnRyb2xsZXIqIG1fZmx1c2hDb250cm9sbGVyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpSdW5Mb29wT2JzZXJ2ZXI+IG1fcnVuTG9vcE9ic2VydmVyOworICAg
IGJvb2wgbV9pbnNpZGVDYWxsYmFjayB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Jlc2NoZWR1bGVk
SW5zaWRlQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKIAogY2xhc3MgTGF5ZXJGbHVzaENvbnRyb2xs
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllckZsdXNoQ29udHJvbGxlcj4gewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEubW0KaW5kZXggZmNlNGE2NjQ2
NmQ4ZmZiNjRiNjIxMjU5MDMwMWViMjQzYmE4OTQ2Ni4uYTlhOTlhNDdmMWViYTVlNWEzZjU4ZjU3
MzRiNGYwMjc2MDQ5ZDA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXdEYXRhLm1tCkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1ZhbGlk
YXRpb25CdWJibGUuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3dGYv
UnVuTG9vcC5oPgorI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogI2ltcG9ydCAiV2ViR2VvbG9jYXRpb25Qcm92aWRlcklPUy5oIgpAQCAtMTA3
LDYgKzEwOCw5IEBAIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjp+V2ViVmlld0xheWVyRmx1
c2hTY2hlZHVsZXIoKQogCiB2b2lkIFdlYlZpZXdMYXllckZsdXNoU2NoZWR1bGVyOjpzY2hlZHVs
ZSgpCiB7CisgICAgaWYgKG1faW5zaWRlQ2FsbGJhY2spCisgICAgICAgIG1fcmVzY2hlZHVsZWRJ
bnNpZGVDYWxsYmFjayA9IHRydWU7CisKICAgICBtX3J1bkxvb3BPYnNlcnZlci0+c2NoZWR1bGUo
Y3VycmVudFJ1bkxvb3AoKSk7CiB9CiAKQEAgLTExOSw3ICsxMjMsMTEgQEAgdm9pZCBXZWJWaWV3
TGF5ZXJGbHVzaFNjaGVkdWxlcjo6bGF5ZXJGbHVzaENhbGxiYWNrKCkKIHsKICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKICAgICAgICAgUmVmUHRyPExheWVyRmx1c2hDb250cm9sbGVyPiBwcm90ZWN0
b3IgPSBtX2ZsdXNoQ29udHJvbGxlcjsKLSAgICAgICAgaWYgKG1fZmx1c2hDb250cm9sbGVyLT5m
bHVzaExheWVycygpKQorCisgICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGluc2lkZUNhbGxiYWNr
U2NvcGUobV9pbnNpZGVDYWxsYmFjaywgdHJ1ZSk7CisgICAgICAgIG1fcmVzY2hlZHVsZWRJbnNp
ZGVDYWxsYmFjayA9IGZhbHNlOworCisgICAgICAgIGlmIChtX2ZsdXNoQ29udHJvbGxlci0+Zmx1
c2hMYXllcnMoKSAmJiAhbV9yZXNjaGVkdWxlZEluc2lkZUNhbGxiYWNrKQogICAgICAgICAgICAg
aW52YWxpZGF0ZSgpOwogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410487</attachid>
            <date>2020-10-04 16:14:31 -0700</date>
            <delta_ts>2020-10-06 11:17:54 -0700</delta_ts>
            <desc>WK1 Testing</desc>
            <filename>bug-216726-20201004161430.patch</filename>
            <type>text/plain</type>
            <size>56964</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI3NzA2ZjNkYmI5NDJlOTBjYzAwZWQ5
OGQ3ZjI5NDcxOGI3YTZiNGYuLmNmNTQ0NDQ4NDgxYjU3NTI1ZTJjMDJjOGUzMjhmMmRlMmYzZjIy
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50IHJlbmRlcmluZyB1cGRhdGVz
IGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gZHVtcCBWZWN0b3JzIHdpdGggaW5saW5lIGNhcGFjaXR5LgorCisgICAgICAgICog
d3RmL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwogMjAy
MC0xMC0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENvcHkgaG9zdCBmcm9tIGJhc2UgZmlsZSBVUkwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiNmFjZjJm
Zjg4MjhiZThkNWU4MjQyMWRlYjJkMWJkZmZlMDRmZmJlLi44N2Q0NTI5ZmJkODU1YTdlOTk2NzEw
YzkwOGMzZTU2NmFiMjUyZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAzIEBACisyMDIwLTEw
LTAzICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJl
ZHVuZGFudCByZW5kZXJpbmcgdXBkYXRlcyBjYW4gYmUgc2NoZWR1bGVkIGZyb20gaW5zaWRlIFBh
Z2U6OnVwZGF0ZVJlbmRlcmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTY3MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgYmFzaWMgbW9kZWwgZm9yIHNjaGVkdWxpbmcgcmVuZGVyaW5nIHVw
ZGF0ZXMgaXMgdGhhdCBjb2RlIHRoYXQgbmVlZHMgdG8gdHJpZ2dlciBhbgorICAgICAgICB1cGRh
dGUganVzdCBjYWxscyBQYWdlOjpzY2hlZHVsZVtUaW1lZF1SZW5kZXJpbmdVcGRhdGUoKS4gSG93
ZXZlciwgaWYKKyAgICAgICAgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgaXMgYWxyZWFkeSBvbiB0
aGUgc3RhY2ssIGFuZCB0aGUgd29yayB0byBiZSBzY2hlZHVsZWQgd2lsbCBoYXBwZW4KKyAgICAg
ICAgbGF0ZXIgaW4gdGhlIGN1cnJlbnQgdXBkYXRlLCB3ZSBkb24ndCBoYXZlIHRvIHNjaGVkdWxl
IGEgbmV3IG9uZS4KKworICAgICAgICBUbyBmaXggdGhpcyBQYWdlOjp1cGRhdGVSZW5kZXJpbmco
KSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgdHJhY2sgd2hpY2ggc3RlcHMgcmVtYWluCisgICAgICAg
IGluIHRoZSBjdXJyZW50IHVwZGF0ZSwgYW5kIGNhbGxlcnMgb2Ygc2NoZWR1bGVbVGltZWRdUmVu
ZGVyaW5nVXBkYXRlKCkgcGFzcyB0aGUgdXBkYXRlIHN0ZXBzCisgICAgICAgIGZvciB0aGUgd29y
ayB0aGV5IG5lZWQgdG8gdHJpZ2dlci4gSWYgdGhlIHJlcXVlc3RlZCBzdGVwcyBhcmUgaW5jbHVk
ZWQgaW4gdGhlIHJlbWFpbmluZyBzdGVwcworICAgICAgICBubyBuZXcgdXBkYXRlIG5lZWRzIHRv
IGJlIHNjaGVkdWxlZC4gTm90ZSB0aGF0IHJlcXVlc3RpbmcgYSBzdGVwIHdoaWxlIHRoYXQgc3Rl
cCBpcyBiZWluZyBleGVjdXRlZAorICAgICAgICBoYXMgdG8gc2NoZWR1bGUgYW4gdXBhdGUgKGUu
Zy4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGluc2lkZSBpdHMgb3duIGNhbGxiYWNrIGhhcyB0byBz
Y2hlZHVsZSkuCisgICAgICAgIAorICAgICAgICBBdCB0aGUgZW5kIG9mIGFuIHVwZGF0ZSwgaWYg
dGhlcmUgYXJlIGFueSB1bmZ1bGZpbGxlZCBzdGVwcywgdGhlbiB3ZSBzY2hlZHVsZSBhIG5ldyB1
cGRhdGUuCisKKyAgICAgICAgQWRkIGEgbG9nIGNoYW5uZWwgZm9yIEV2ZW50TG9vcCBhbmQgYW5k
IGxvZyBmcm9tIHZhcmlvdXMgcGxhY2VzLgorCisgICAgICAgIEluIG15IGJyaWVmIHRlc3Rpbmcs
IHRoaXMgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIFBhZ2U6OnVwZGF0ZVJlbmRlcmlu
ZygpIGJ5IDEwLTI1JQorICAgICAgICBvbiBzb21lIHJlYWwgcGFnZXMsIHdoaWNoIGNvdWxkIGJl
IGEgc2lnbmlmaWNhbnQgcG93ZXIgc2F2aW5nLgorCisgICAgICAgICogYW5pbWF0aW9uL0RvY3Vt
ZW50VGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6c2No
ZWR1bGVBbmltYXRpb25SZXNvbHV0aW9uKToKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlMYXll
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6TGF5ZXJDb250cm9s
bGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXROZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0
UmVzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZl
bnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldE5lZWRzVmlzdWFsVmll
d3BvcnRTY3JvbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2VydmljZVJl
cXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyRmlyZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNjaGVkdWxlSW5pdGlhbEludGVyc2VjdGlvbk9ic2Vy
dmF0aW9uVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVSZXNpemVP
YnNlcnZhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVwZGF0ZUFuaW1hdGlv
bnNBbmRTZW5kRXZlbnRzKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBk
b20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJ
bWFnZTo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgICogbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZUNs
aWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZUNsaWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpzY2hlZHVsZUN1cnNvclVwZGF0ZSk6CisgICAgICAgICogcGFnZS9GcmFt
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3RXhwb3NlZFJl
Y3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1
cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpz
Y2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNv
bXB1dGVVbmZ1bGZpbGxlZFJlbmRlcmluZ1N0ZXBzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc29sYXRlZFVw
ZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmZpbmFsaXplUmVuZGVyaW5nVXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlOjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YXBwZWFyYW5jZURpZENoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBw
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlT3Zl
cmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdFeHBvc2VkUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlT3ZlcmxheUNvbnRyb2xsZXI6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAg
ICAqIHBhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVBbmltYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzY2hlZHVsZVRpbWVkUmVuZGVyaW5n
VXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3Rh
cnRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRp
c3BsYXlSZWZyZXNoRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyOjpzY2hlZHVsZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToK
KyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oOgorICAgICAgICAqIHBh
Z2UvUmVzaXplT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzaXplT2JzZXJ2ZXI6
Om9ic2VydmUpOgorICAgICAgICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRvcjo6c2V0VGVzdENhbGxiYWNrQW5k
U3RhcnRNb25pdG9yaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6c2NoZWR1bGVDYWxsYmFja0NoZWNrKToKKyAgICAgICAgKiBwYWdlL21hYy9TZXJ2aWNlc092
ZXJsYXlDb250cm9sbGVyLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZXNPdmVybGF5Q29u
dHJvbGxlcjo6SGlnaGxpZ2h0Ojpub3RpZnlGbHVzaFJlcXVpcmVkKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEV2ZW50VHJhY2tpbmdSZWdpb25zRGly
dHkpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hlZHVs
ZVRyZWVTdGF0ZUNvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vTG9nZ2luZy5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckVsZW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRWxlbWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisKIDIwMjAtMTAtMDIgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5nIHN1c3BlbmQoKSBvbiBhdWRpbyBjb250
ZXh0IHdpdGggbm8gbm9kZSBkb2VzIG5vdCBwcmV2ZW50IGF1dG8gdHJhbnNpdGlvbiB0byBydW5u
aW5nIHdoZW4gZmlyc3Qgbm9kZSBpcyBjcmVhdGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDAwNTRkZmQ3ODgxOWY2
ZDYzZTkwODllMjcyOTk5NTBiMDdjN2E3ODQuLjA5MGY1OGFhMzQ1ZjJjZTJhOTlhMjBjOWZjMTIx
ZjI4OWUxMmE1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDQgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50IHJl
bmRlcmluZyB1cGRhdGVzIGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBkYXRl
UmVuZGVyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNjcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFNjaGVkdWxlIGZvciBsYXllciBmbHVzaC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0dXJlTWFwcGVyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQpOgor
CiAyMDIwLTEwLTAyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgog
CiAgICAgICAgIE11bHRpcGxlIGNhbGxzIHRvIHN1c3BlbmQgbWVkaWEgcGxheWJhY2sgZm9yIHRo
ZSBzYW1lIHBhZ2UgbWF5IHJlc3VsdCBpbiByZXN1bWluZyBtZWRpYSBwbGF5YmFjayB0b28gc29v
bgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IGYwN2IwNGE3MDIyMDVkMGZiNThkZmE3
MGY4ZGE2YzQyNzkyOGIyMmUuLmM1Y2Q5ODU5NWM3MmFmMzI0ODVkN2M5Y2YwZWNmMzlkYjA2ODQx
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0x
MC0wMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZWR1bmRhbnQgcmVuZGVyaW5nIHVwZGF0ZXMgY2FuIGJlIHNjaGVkdWxlZCBmcm9tIGluc2lkZSBQ
YWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE2NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXIgaGFkIGEgYnVnIHRoYXQg
d291bGQgY2F1c2UgdGhlIHJ1bmxvb3Agb2JzZXJ2ZXIgdG8gZ2V0IGludmFsaWRhdGVkCisgICAg
ICAgIGlmIHNjaGVkdWxlKCkgd2FzIGNhbGxlZCBpbnNpZGUgdGhlIGNhbGxiYWNrOyBpbiB0aGlz
IGNhc2Ugd2UgbmVlZCB0byBrZWVwIHRoZSByZXBlYXRpbmcgcnVubG9vcCBvYnNlcnZlcgorICAg
ICAgICByZWdpc3RlcmVkIGZvciB0aGUgbmV4dCBjYWxsYmFjay4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGVGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmll
d0RhdGEuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdEYXRhLm1tOgorICAgICAgICAoV2Vi
Vmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OnNjaGVkdWxlKToKKyAgICAgICAgKFdlYlZpZXdMYXll
ckZsdXNoU2NoZWR1bGVyOjpsYXllckZsdXNoQ2FsbGJhY2spOgorCiAyMDIwLTEwLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGJhc2ljIGluZnJhc3Ry
dWN0dXJlIGZvciBBdWRpb1dvcmtsZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
VGV4dFN0cmVhbS5oIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmgKaW5kZXggZGNk
YWZiYzNmMzJhNjYxNjhhMmMwNTFjODIzZjk2NzQ5OWU0ODFmNi4uZjNkMmNmYzExMWM4OTg1M2E1
YmJmMzFlMzUxMzc5ZDUxMmQ4ZDdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9U
ZXh0U3RyZWFtLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9UZXh0U3RyZWFtLmgKQEAgLTIx
Miw4ICsyMTIsOCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBNYXJrYWJsZTxULCBUcmFpdHM+JiBpdGVtKQogICAgIHJldHVybiB0cyA8PCAidW5zZXQiOwog
fQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgVmVjdG9yPEl0ZW0+JiB2ZWN0b3IpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBJdGVtVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMD4KK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtVHlwZSwgaW5saW5lQ2FwYWNp
dHk+JiB2ZWN0b3IpCiB7CiAgICAgdHMgPDwgIlsiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggN2E4NTIxNDQ5OWRkZWJlMzIzNDQ4ZDZh
OTVjOWExNWIxMGMxNDQ5ZC4uYTUzOWVmZDBiNjBmNjM2MWJhNTEwMjJkNmIyZjI4MTRlOTY1YTkz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApA
QCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmltYXRp
b25SZXNvbHV0aW9uKCkKICAgICBpZiAoIXNob3VsZFJ1blVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5k
RXZlbnRzSWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9kb2N1bWVudC0+cGFnZSgpLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
bV9kb2N1bWVudC0+cGFnZSgpLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbnMpOwogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVk
dWxlZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlz
cGxheUxheWVyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlM
YXllckNvbnRyb2xsZXIuY3BwCmluZGV4IGYyM2FjM2RkNjc1NmY2YzNkNmY1MjY4MTRjNzg1ZDVl
ZTNkZDI2MTguLjJjYmIwZTAxZGFiZjg3MjQwYzA4YzVlYzU4NjkxYjNlYWNhZTZhMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApA
QCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgTGF5ZXJDb250cm9sbGVyOjpzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5z
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIExheWVyQ29u
dHJvbGxlcjo6ZW5zdXJlUm9vdExheWVyKEZsb2F0U2l6ZSB2aWV3U2l6ZSwgRmxvYXRTaXplIGNv
bnRlbnRTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOGU5YjIxOTBmOGUyYjFhNzQ5
ZDMzZmIzMmMxN2QwZTlmYmNkY2U0Yy4uOTQwMDBmMjNiOGQyOTFmNDdjYWY3ZjIzMmE3M2IxOTM5
ODg3YzdiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NjAsNyArNTYwLDcgQEAgRG9j
dW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIERvY3VtZW50Q2xh
c3NGbGFncyBkb2N1bWVudENsYXMKICAgICAsIG1fZnVsbHNjcmVlbk1hbmFnZXIgeyBtYWtlVW5p
cXVlUmVmPEZ1bGxzY3JlZW5NYW5hZ2VyPigqdGhpcykgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElO
VEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICAsIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlh
bFVwZGF0ZVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUpCisgICAgLCBtX2ludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lcigqdGhp
cywgJkRvY3VtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJGaXJl
ZCkKICNlbmRpZgogICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6
OmxvYWRFdmVudERlbGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpAQCAtNDA3NywxMyArNDA3NywxMyBAQCB2b2lkIERv
Y3VtZW50Ojp1cGRhdGVWaWV3cG9ydFVuaXRzT25SZXNpemUoKQogdm9pZCBEb2N1bWVudDo6c2V0
TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCgpCiB7CiAgICAgbV9uZWVkc0RPTVdpbmRvd1Jlc2l6
ZUV2ZW50ID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUp
OwogfQogCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCkKIHsK
ICAgICBtX25lZWRzVmlzdWFsVmlld3BvcnRSZXNpemVFdmVudCA9IHRydWU7Ci0gICAgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplKTsKIH0KIAogLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzc29tLXZpZXcvI3J1bi10aGUtcmVzaXplLXN0ZXBzCkBAIC00MTEzLDcgKzQx
MTMsNyBAQCB2b2lkIERvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZlbnRUYXJnZXQoQ29udGFp
bmVyTm9kZSYgdGFyZ2V0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodGFyZ2V0cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwp
OwogCiAgICAgdGFyZ2V0cy5hcHBlbmQodGFyZ2V0KTsKIH0KQEAgLTQxMjEsNyArNDEyMSw3IEBA
IHZvaWQgRG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdldChDb250YWluZXJOb2Rl
JiB0YXJnZXQpCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZl
bnQoKQogewogICAgIGlmICghbV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpCi0gICAg
ICAgIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwpOwogICAgIG1fbmVl
ZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50ID0gdHJ1ZTsKIH0KIApAQCAtNjQzNywxMCArNjQz
NywxMCBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJD
YWxsYmFja3MoKQogICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci0+cmVzdW1l
KCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxs
YmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIHRpbWVzdGFtcCkKK3ZvaWQgRG9jdW1lbnQ6
OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKQogewotICAgIGlmIChtX3Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKLSAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1w
KTsKKyAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgJiYgZG9tV2luZG93KCkp
CisgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5zZXJ2aWNlUmVxdWVzdEFu
aW1hdGlvbkZyYW1lQ2FsbGJhY2tzKGRvbVdpbmRvdygpLT5mcm96ZW5Ob3dUaW1lc3RhbXAoKSk7
CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3Bs
YXlJRCBkaXNwbGF5SUQpCkBAIC03NTMzLDEzICs3NTMzLDIzIEBAIHZvaWQgRG9jdW1lbnQ6OnJl
bW92ZUR5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2UoSFRNTEltYWdlRWxlbWVudCYgZWxl
bWVudCkKICAgICBtX2R5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2VzLnJlbW92ZShlbGVt
ZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgp
Cit2b2lkIERvY3VtZW50OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJG
aXJlZCgpCit7CisjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICBzY2hlZHVs
ZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9i
c2VydmF0aW9ucyk7CisjZW5kaWYKK30KKwordm9pZCBEb2N1bWVudDo6c2NoZWR1bGVUaW1lZFJl
bmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4gcmVxdWVzdGVkU3Rl
cHMpCiB7CiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICBtX2ludGVyc2Vj
dGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdG9wKCk7CisgICAgaWYgKG1faW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAg
bV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIuc3RvcCgpOworICAgICAg
ICByZXF1ZXN0ZWRTdGVwcy5hZGQoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50ZXJzZWN0aW9uT2Jz
ZXJ2YXRpb25zKTsKKyAgICB9CiAjZW5kaWYKICAgICBpZiAoYXV0byBwYWdlID0gdGhpcy0+cGFn
ZSgpKQotICAgICAgICBwYWdlLT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
ICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUocmVxdWVzdGVkU3RlcHMpOwog
fQogCiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKQEAgLTc3NjQsNyArNzc3NCw3
IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmF0aW9ucygpCiB2b2lk
IERvY3VtZW50OjpzY2hlZHVsZUluaXRpYWxJbnRlcnNlY3Rpb25PYnNlcnZhdGlvblVwZGF0ZSgp
CiB7CiAgICAgaWYgKG1fcmVhZHlTdGF0ZSA9PSBDb21wbGV0ZSkKLSAgICAgICAgc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBk
YXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9ucyk7CiAgICAg
ZWxzZSBpZiAoIW1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLmlzQWN0
aXZlKCkpCiAgICAgICAgIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVy
LnN0YXJ0T25lU2hvdChpbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlRGVsYXkpOwog
fQpAQCAtNzg1Niw3ICs3ODY2LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlUmVzaXplT2JzZXJ2
YXRpb25zKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGdldFBhcnNlckxvY2F0aW9uKHVybCwgbGluZSwg
Y29sdW1uKTsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCJSZXNpemVPYnNlcnZlciBsb29wIGNv
bXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlmaWNhdGlvbnMuIiwgbGluZSwgY29sdW1uLCB1
cmwsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICAvLyBTdGFydGluZyBhIG5ldyBzY2hlZHVs
ZSB0aGUgbmV4dCByb3VuZCBvZiBub3RpZnkuCi0gICAgICAgIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoKTsKKyAgICAgICAgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJp
bmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZhdGlvbnMpOwogICAgIH0KIH0KIApAQCAtODE0MCw2
ICs4MTUwLDE1IEBAIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlciYgRG9jdW1lbnQ6OmVuc3Vy
ZVRpbWVsaW5lc0NvbnRyb2xsZXIoKQogICAgIHJldHVybiAqbV90aW1lbGluZXNDb250cm9sbGVy
LmdldCgpOwogfQogCit2b2lkIERvY3VtZW50Ojp1cGRhdGVBbmltYXRpb25zQW5kU2VuZEV2ZW50
cygpCit7CisgICAgaWYgKCFkb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGF1dG8qIHRpbWVsaW5lc0NvbnRyb2xsZXIgPSB0aGlzLT50aW1lbGluZXNDb250cm9sbGVyKCkp
CisgICAgICAgIHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZl
bnRzKGRvbVdpbmRvdygpLT5mcm96ZW5Ob3dUaW1lc3RhbXAoKSk7Cit9CisKIERvY3VtZW50VGlt
ZWxpbmUmIERvY3VtZW50Ojp0aW1lbGluZSgpCiB7CiAgICAgaWYgKCFtX3RpbWVsaW5lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBjNzgyNWM1NGQ0YTkwZjMxNDAxZjI2MjA1YjExNTNjZDIwZjll
YjUzLi4yYjAwMWFhYmIyMWNhYWFiMjI3ODMwNzlmMjBiMDI1MjNjYjJmMmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMjM5LDYgKzIzOSw3IEBAIGVudW0gQ29sbGVjdGlvblR5cGU7CiAKIGVu
dW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXAgOiB1aW50MTZfdDsKIAogdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJf
dDsKIApAQCAtMTA2OSw3ICsxMDcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAKLSAgICB2b2lkIHNlcnZpY2VSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKKyAg
ICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKTsKIAogICAgIHZv
aWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIApAQCAtMTM5NSw3
ICsxMzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRHluYW1pY01lZGlhUXVlcnlEZXBlbmRl
bnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVEeW5hbWljTWVkaWFR
dWVyeURlcGVuZGVudEltYWdlKEhUTUxJbWFnZUVsZW1lbnQmKTsKIAotICAgIHZvaWQgc2NoZWR1
bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHZvaWQgc2NoZWR1bGVUaW1lZFJlbmRlcmlu
Z1VwZGF0ZShPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4pOwogCiAjaWYgRU5BQkxFKElO
VEVSU0VDVElPTl9PQlNFUlZFUikKICAgICB2b2lkIGFkZEludGVyc2VjdGlvbk9ic2VydmVyKElu
dGVyc2VjdGlvbk9ic2VydmVyJik7CkBAIC0xNDg1LDYgKzE0ODYsNyBAQCBwdWJsaWM6CiAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbnNvbGVNZXNzYWdlTGlzdGVuZXIoUmVmUHRyPFN0
cmluZ0NhbGxiYWNrPiYmKTsgLy8gRm9yIHRlc3RpbmcuCiAKKyAgICB2b2lkIHVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRG9jdW1lbnRUaW1lbGlu
ZSYgdGltZWxpbmUoKTsKICAgICBEb2N1bWVudFRpbWVsaW5lKiBleGlzdGluZ1RpbWVsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lbGluZS5nZXQoKTsgfQogICAgIFZlY3RvcjxSZWZQdHI8V2Vi
QW5pbWF0aW9uPj4gZ2V0QW5pbWF0aW9ucygpOwpAQCAtMTY0Nyw2ICsxNjQ5LDggQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgbW92ZU5vZGVJdGVyYXRvcnNUb05ld0RvY3VtZW50U2xvd0Nhc2UoTm9k
ZSYsIERvY3VtZW50Jik7CiAKKyAgICB2b2lkIGludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxV
cGRhdGVUaW1lckZpcmVkKCk7CisKICAgICB2b2lkIGxvYWRFdmVudERlbGF5VGltZXJGaXJlZCgp
OwogCiAgICAgdm9pZCBwZW5kaW5nVGFza3NUaW1lckZpcmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IDUxN2RmODAw
MjU1YTI5MWM4ZDY1NWZkNmZiMmVjZjRhZDFiZWNmMmIuLjI5NmY4MDAyZWZjMzc5NGI0OTgwZTdj
MThkOWU5NDFmYmZjNjkyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xODEsNyArMTgxLDcgQEAgdm9pZCBTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPnNj
aGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgcGFnZS0+c2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25GcmFtZUNhbGxi
YWNrcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCmluZGV4IDNmYTE4MTdhOWQ2NjY4ZmI0MzNiMWJkNDVjNjA4NjJmMGMzODdkZDYuLmE5MjVj
MzI5ZTJiNDczYjBlNTJjOTMxNTQ0NTZmYWJmMmVjODcxNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNzAzLDcgKzcwMyw3IEBAIHZvaWQgQ2Fj
aGVkSW1hZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoY29uc3QgSW1hZ2UmIGltYWdl
KQogCiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkSW1hZ2VDbGllbnQ+IHdh
bGtlcihtX2NsaWVudHMpOwogICAgIHdoaWxlIChhdXRvKiBjbGllbnQgPSB3YWxrZXIubmV4dCgp
KQotICAgICAgICBjbGllbnQtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAg
ICAgY2xpZW50LT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKCp0aGlzKTsKIH0KIAog
Ym9vbCBDYWNoZWRJbWFnZTo6Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2VDbGllbnQuaAppbmRleCAyOTVlNjU2YWIxZWJjMWI5MGZkMWFjZTc4M2QzNDE5YzJm
NjlhMDhiLi5iYTY0NDViN2VhN2VkOTYzZDYxYmZmMzBmMjhhOWE0ZWQ3ZjljMTM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2VDbGllbnQuaApAQCAtNDks
NyArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlQ2FjaGVkSW1h
Z2VDbGllbnQoQ2FjaGVkSW1hZ2UmKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlRm9ySW1hZ2UoQ2FjaGVkSW1hZ2UmKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBmOThiY2UxYmY0
NjY5OGNhMGU1ZGFkYWJkNjQ5YzVmZDc1ODBmYTI3Li42YjZiYWRiMWVlYTg1NGM3M2UyZDNlZGQ0
MmQ5N2UzZmIzNTU2YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0z
MTUzLDcgKzMxNTMsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2NoZWR1bGVDdXJzb3JVcGRhdGUo
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2hhc1NjaGVkdWxlZEN1cnNvclVwZGF0ZSA9IHRy
dWU7Ci0gICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBwYWdlLT5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJzb3JVcGRhdGUpOwog
fQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRTb29uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBhZWY2MzlhNTcxZTMwZjFhYWE3NzM2NmNm
MzUzMDkyMGMzZjAxNTVhLi5kMjI5MjkyZDhmOTY3NjJmNmFmY2VjOTRkZmVhZDRkN2QxNGMzNjA1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC01NDQ0LDcgKzU0NDQsNyBAQCB2b2lk
IEZyYW1lVmlldzo6c2V0Vmlld0V4cG9zZWRSZWN0KE9wdGlvbmFsPEZsb2F0UmVjdD4gdmlld0V4
cG9zZWRSZWN0KQogICAgIH0KIAogICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCkp
IHsKLSAgICAgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgcGFn
ZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVz
aCk7CiAgICAgICAgIHBhZ2UtPnBhZ2VPdmVybGF5Q29udHJvbGxlcigpLmRpZENoYW5nZVZpZXdF
eHBvc2VkUmVjdCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDY4ZGNjOTA1ZmZj
NGExNzljYTNiMzBkMDlmMmY4N2VkYTBkZmE0NzUuLmJlZDBiYWU4OTQxMGExZGZmNzcxMDBhOWMy
MGM3MWM2ZWE5YTIwMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTQ0LDYgKzE0NCw3IEBACiAj
aW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFN0cmVhbS5oPgogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICNp
bmNsdWRlICJIVE1MVmlkZW9FbGVtZW50LmgiCkBAIC01OTYsNyArNTk3LDcgQEAgdm9pZCBQYWdl
Ojp1cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCgpCiAgICAgICAgICAgICBzdHls
ZVJlc29sdmVyLT5pbnZhbGlkYXRlTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlKCk7CiAgICAgICAg
IGRvY3VtZW50LnNjaGVkdWxlRnVsbFN0eWxlUmVidWlsZCgpOwogICAgICAgICBkb2N1bWVudC5z
dHlsZVNjb3BlKCkuZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCk7Ci0gICAgICAgIGRv
Y3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgZG9jdW1lbnQu
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpNZWRpYVF1
ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKQEAgLTE0MDYsMjAgKzE0MDcsNDUgQEAgdm9p
ZCBQYWdlOjpsYXlvdXRJZk5lZWRlZCgpCiAgICAgICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0
eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIH0KIAotdm9pZCBQYWdlOjpzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxS
ZW5kZXJpbmdVcGRhdGVTdGVwPiByZXF1ZXN0ZWRTdGVwcykKIHsKLSAgICByZW5kZXJpbmdVcGRh
dGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIGlmIChtX3JlbmRl
cmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmlzRW1wdHkoKSkgeworICAgICAgICByZW5kZXJpbmdV
cGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJQ
YWdlICIgPDwgdGhpcyA8PCAiIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkgLSByZXF1ZXN0ZWRT
dGVwcyAiIDw8IHJlcXVlc3RlZFN0ZXBzIDw8ICIgcmVtYWluaW5nIHN0ZXBzICIgPDwgbV9yZW5k
ZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcyk7CisKKyAgICBjb21wdXRlVW5mdWxmaWxsZWRSZW5k
ZXJpbmdTdGVwcyhyZXF1ZXN0ZWRTdGVwcyk7CiB9CiAKLXZvaWQgUGFnZTo6c2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRh
dGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHJlcXVlc3RlZFN0ZXBzKQogewotICAg
IGlmIChjaHJvbWUoKS5jbGllbnQoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkpCisg
ICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJQYWdlICIgPDwgdGhpcyA8
PCAiIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKSAtIHJlcXVlc3RlZFN0ZXBzICIgPDwg
cmVxdWVzdGVkU3RlcHMgPDwgIiByZW1haW5pbmcgc3RlcHMgIiA8PCBtX3JlbmRlcmluZ1VwZGF0
ZVJlbWFpbmluZ1N0ZXBzKTsKKworICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0
ZXBzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY2hyb21lKCkuY2xpZW50KCkuc2NoZWR1bGVU
aW1lZFJlbmRlcmluZ1VwZGF0ZSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICByZW5k
ZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CiAg
ICAgICAgIHJldHVybjsKLSAgICByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKS5zY2hlZHVsZVRp
bWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgfQorCisgICAgY29tcHV0ZVVuZnVsZmlsbGVkUmVu
ZGVyaW5nU3RlcHMocmVxdWVzdGVkU3RlcHMpOworfQorCit2b2lkIFBhZ2U6OmNvbXB1dGVVbmZ1
bGZpbGxlZFJlbmRlcmluZ1N0ZXBzKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiByZXF1
ZXN0ZWRTdGVwcykKK3sKKyAgICAvLyBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzIG9u
bHkgaGFzIG1vcmUgdGhhbiBvbmUgZW50cnkgZm9yIHRoZSByZS1lbnRyYW50IHJlbmRlcmluZyB1
cGRhdGUgdHJpZ2dlcmVkIGJ5IHRlc3RpbmcuCisgICAgLy8gRm9yIHNjaGVkdWxpbmcsIHdlIG9u
bHkgY2FyZSBhYm91dCB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVudHJ5LgorICAgIGF1dG8gcmVt
YWluaW5nU3RlcHMgPSBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzWzBdOworICAgIGF1
dG8gc3RlcHNGb3JOZXh0VXBkYXRlID0gcmVxdWVzdGVkU3RlcHMgLSByZW1haW5pbmdTdGVwczsK
KyAgICBtX3VuZnVsZmlsbGVkUmVxdWVzdGVkU3RlcHMuYWRkKHN0ZXBzRm9yTmV4dFVwZGF0ZSk7
CiB9CiAKIHZvaWQgUGFnZTo6c2NoZWR1bGVJbW1lZGlhdGVSZW5kZXJpbmdVcGRhdGUoKQogewor
ICAgIExPR19XSVRIX1NUUkVBTShFdmVudExvb3AsIHN0cmVhbSA8PCAiUGFnZSAiIDw8IHRoaXMg
PDwgIiBzY2hlZHVsZUltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpIik7CisgICAgLy8gRklYTUU6
IGZsYWdzPwogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlSW1tZWRpYXRl
UmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKQEAgLTE0MzcsMTIgKzE0NjMsMTggQEAgdW5zaWduZWQg
UGFnZTo6cmVuZGVyaW5nVXBkYXRlQ291bnQoKSBjb25zdAogLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5n
CiB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiB7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQ
aGFzZVN0YWNrLmFwcGVuZChSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcp
OworICAgIExPRyhFdmVudExvb3AsICJQYWdlICVwIHVwZGF0ZVJlbmRlcmluZygpIC0gcmUtZW50
ZXJpbmcgJWQiLCB0aGlzLCAhbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5pc0VtcHR5
KCkpOworCisgICAgaWYgKG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgp
KQorICAgICAgICBtX3VuZnVsZmlsbGVkUmVxdWVzdGVkU3RlcHMgPSB7IH07CisKKyAgICBtX3Jl
bmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmFwcGVuZChhbGxSZW5kZXJpbmdVcGRhdGVTdGVw
cyk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCByZWVudHJhbnQsIGUuZy4gYSByQUYg
Y2FsbGJhY2sgbWF5IHRyaWdnZXIgYSBmb3JjZXMgcmVwYWludCBpbiB0ZXN0aW5nLgotICAgIC8v
IFRoaXMgaXMgd2h5IHdlIHRyYWNrIHVwZGF0ZVJlbmRlcmluZ1BoYXNlIGFzIGEgc3RhY2suCi0g
ICAgaWYgKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5zaXplKCkgPiAxKSB7CisgICAgLy8g
VGhpcyBpcyB3aHkgd2UgdHJhY2sgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcyBhcyBh
IHN0YWNrLgorICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLnNpemUoKSA+
IDEpIHsKICAgICAgICAgbGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgbV9yZW5kZXJpbmdVcGRh
dGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKHVwZGF0ZVJlbmRlcmluZ1N0ZXBzKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ2Niw1OCArMTQ5OCw2NCBAQCB2b2lkIFBhZ2U6
OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIGluaXRpYWxEb2N1bWVudHMuYXBwZW5kKG1ha2VX
ZWFrUHRyKCZkb2N1bWVudCkpOwogICAgIH0pOwogCi0gICAgLy8gRmx1c2ggYXV0b2ZvY3VzIGNh
bmRpZGF0ZXMKKyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0
ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1
bWVudEZ1bmN0aW9uKSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMu
bGFzdCgpLnJlbW92ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50
RnVuY3Rpb24pOworICAgIH07CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBk
b2N1bWVudCkgeworICAgIC8vIEZJWE1FOiBGbHVzaCBhdXRvZm9jdXMgY2FuZGlkYXRlcy4KKwor
ICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSwgW10gKERv
Y3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC5ydW5SZXNpemVTdGVwcygpOwog
ICAgIH0pOwogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsK
KyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwsIFtdIChE
b2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQucnVuU2Nyb2xsU3RlcHMoKTsK
ICAgICB9KTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7
CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2
YWx1YXRpb24sIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQuZXZh
bHVhdGVNZWRpYVF1ZXJpZXNBbmRSZXBvcnRDaGFuZ2VzKCk7ICAgICAgICAKICAgICB9KTsKIAot
ICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0gICAgICAgIGlm
ICghZG9jdW1lbnQuZG9tV2luZG93KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1
dG8gdGltZXN0YW1wID0gZG9jdW1lbnQuZG9tV2luZG93KCktPmZyb3plbk5vd1RpbWVzdGFtcCgp
OwotICAgICAgICBpZiAoYXV0byogdGltZWxpbmVzQ29udHJvbGxlciA9IGRvY3VtZW50LnRpbWVs
aW5lc0NvbnRyb2xsZXIoKSkKLSAgICAgICAgICAgIHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0
ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKHRpbWVzdGFtcCk7Ci0gICAgICAgIC8vIEZJWE1FOiBS
dW4gdGhlIGZ1bGxzY3JlZW4gc3RlcHMuCi0gICAgICAgIGRvY3VtZW50LnNlcnZpY2VSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1wKTsKKyAgICBydW5Qcm9jZXNzaW5nU3Rl
cChSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25zLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGRvY3VtZW50LnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7Cisg
ICAgfSk7CisKKyAgICAvLyBGSVhNRTogUnVuIHRoZSBmdWxsc2NyZWVuIHN0ZXBzLgorICAgIG1f
cmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRh
dGVTdGVwOjpGdWxsc2NyZWVuKTsKKworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OkFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgICAgIGRvY3VtZW50LnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFj
a3MoKTsKICAgICB9KTsKIAogICAgIGxheW91dElmTmVlZGVkKCk7CiAKICNpZiBFTkFCTEUoSU5U
RVJTRUNUSU9OX09CU0VSVkVSKQotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRv
Y3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50
ZXJzZWN0aW9uT2JzZXJ2YXRpb25zLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAg
IGRvY3VtZW50LnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmF0aW9ucygpOwogICAgIH0pOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQotICAgIGZvckVhY2hEb2N1bWVudChb
Jl0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9ucywgWyZdIChEb2N1bWVudCYgZG9jdW1lbnQp
IHsKICAgICAgICAgZG9jdW1lbnQudXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKCp0aGlzKTsKICAg
ICB9KTsKICNlbmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1l
bnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbWFnZXMs
IFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRv
Y3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuYWxsQ2FjaGVkU1ZHSW1hZ2VzKCkpIHsKICAg
ICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaW1hZ2UtPmludGVybmFsUGFnZSgpKQogICAgICAg
ICAgICAgICAgIHBhZ2UtPmlzb2xhdGVkVXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgICAgIH0KICAg
ICB9KTsKIAotICAgIEFTU0VSVChtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID09
IFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpJblVwZGF0ZVJlbmRlcmluZyk7Ci0KICAgICBmb3IgKGF1
dG8mIGRvY3VtZW50IDogaW5pdGlhbERvY3VtZW50cykgewogICAgICAgICBpZiAoZG9jdW1lbnQg
JiYgZG9jdW1lbnQtPmRvbVdpbmRvdygpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRvbVdpbmRv
dygpLT51bmZyZWV6ZU5vd1RpbWVzdGFtcCgpOwogICAgIH0KIAorICAgIG1fcmVuZGVyaW5nVXBk
YXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVl
bEV2ZW50TW9uaXRvckNhbGxiYWNrcyk7CisKICAgICBpZiAoVU5MSUtFTFkoaXNNb25pdG9yaW5n
V2hlZWxFdmVudHMoKSkpCiAgICAgICAgIHdoZWVsRXZlbnRUZXN0TW9uaXRvcigpLT5jaGVja1No
b3VsZEZpcmVDYWxsYmFja3MoKTsKIApAQCAtMTUyOSwyMCArMTU2NywxNyBAQCB2b2lkIFBhZ2U6
OnVwZGF0ZVJlbmRlcmluZygpCiAKICAgICBpZiAoIWlzU1ZHSW1hZ2VQYWdlKQogICAgICAgICB0
cmFjZVBvaW50KFJlbmRlcmluZ1VwZGF0ZUVuZCk7Ci0KLSAgICBBU1NFUlQobV91cGRhdGVSZW5k
ZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVS
ZW5kZXJpbmcpOwogfQogCiB2b2lkIFBhZ2U6Omlzb2xhdGVkVXBkYXRlUmVuZGVyaW5nKCkKIHsK
KyAgICBMT0coRXZlbnRMb29wLCAiUGFnZSAlcCBpc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpIiwg
dGhpcyk7CiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFz
ZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKIH0K
IAogdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKIHsKLSAgICBBU1NFUlQobV91
cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6
SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAgICAgLy8gQ29kZSBoZXJlIHNob3VsZCBkbyBvbmNlLXBl
ci1mcmFtZSB3b3JrIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFuZCBy
ZXF1aXJlcwogICAgIC8vIGxheW91dCB0byBiZSB1cC10by1kYXRlLiBJdCBzaG91bGQgbm90IHJ1
biBzY3JpcHQsIHRyaWdnZXIgbGF5b3V0LCBvciBkaXJ0eSBsYXlvdXQuCiAKQEAgLTE1NTUsNyAr
MTU5MCwxMiBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0KICNl
bmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAg
ICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwg
Y29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9u
KSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92
ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24pOwor
ICAgIH07CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJz
b3JVcGRhdGUsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtMTU3NCw2ICsxNjE0LDggQEAg
dm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgogCisg
ICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKKwogI2lmIEVOQUJMRShJT1NfVE9VQ0hf
RVZFTlRTKQogICAgIC8vIHVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCkgbmVlZHMgdG8gYmUgY2Fs
bGVkIG9ubHkgb24gdGhlIHRvcCBkb2N1bWVudC4KICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBk
b2N1bWVudCA9IG1haW5GcmFtZSgpLmRvY3VtZW50KCkpCkBAIC0xNTk2LDEzICsxNjM4LDExIEBA
IHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIEFTU0VSVCghZnJh
bWVWaWV3IHx8ICFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KICNlbmRpZgotCi0g
ICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5n
VXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjpmaW5hbGl6
ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4g
ZmxhZ3MpCiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkg
PT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKKyAgICBMT0coRXZl
bnRMb29wLCAiUGFnZSAlcCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpIiwgdGhpcyk7CiAKICAg
ICBhdXRvKiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghdmlldykKQEAgLTE2
MTEsMjMgKzE2NTEsMzYgQEAgdm9pZCBQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRp
b25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3MKICAgICBpZiAoZmxhZ3Mu
Y29udGFpbnMoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6SW52YWxpZGF0ZUltYWdlc1dp
dGhBc3luY0RlY29kZXMpKQogICAgICAgICB2aWV3LT5pbnZhbGlkYXRlSW1hZ2VzV2l0aEFzeW5j
RGVjb2RlcygpOwogCi0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJl
bmRlcmluZ1VwZGF0ZVBoYXNlOjpMYXllckZsdXNoaW5nOworICAgIG1fcmVuZGVyaW5nVXBkYXRl
UmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZs
dXNoKTsKIAogICAgIHZpZXctPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1l
cygpOwogCi0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmlu
Z1VwZGF0ZVBoYXNlOjpQb3N0TGF5ZXJGbHVzaDsKLQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1RyZWVVcGRhdGUpOworCiAgICAgaWYgKGF1dG8q
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewog
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKTsK
ICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6
OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKSkKICAgICAgICAgICAgIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLT5hcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucygpOwotICAgICAg
ICAgICAgCisKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRpZENvbXBsZXRlUmVuZGVy
aW5nVXBkYXRlKCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNl
U3RhY2sucmVtb3ZlTGFzdCgpOworICAgIEFTU0VSVChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmlu
Z1N0ZXBzLmxhc3QoKS5pc0VtcHR5KCkpOworICAgIHJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCgp
OworfQorCit2b2lkIFBhZ2U6OnJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgbV9y
ZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5yZW1vdmVMYXN0KCk7CisKKyAgICBMT0dfV0lU
SF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlBhZ2UgIiA8PCB0aGlzIDw8ICIgcmVuZGVy
aW5nVXBkYXRlQ29tcGxldGVkKCkgLSBzdGVwcyAiIDw8IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWlu
aW5nU3RlcHMgPDwgIiB1bmZ1bGZpbGxlZCBzdGVwcyAiIDw8IG1fdW5mdWxmaWxsZWRSZXF1ZXN0
ZWRTdGVwcyk7CisKKyAgICBpZiAobV91bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzKSB7CisgICAg
ICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7
CisgICAgICAgIG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwcyA9IHsgfTsKKyAgICB9CiB9CiAK
IHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCkBAIC0yOTMxLDcgKzI5ODQs
NyBAQCB2b2lkIFBhZ2U6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpCiAgICAgZm9y
RWFjaERvY3VtZW50KFtdIChhdXRvJiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC5zdHls
ZVNjb3BlKCkuZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFu
Z2UoKTsKICAgICAgICAgZG9jdW1lbnQudXBkYXRlRWxlbWVudHNBZmZlY3RlZEJ5TWVkaWFRdWVy
aWVzKCk7Ci0gICAgICAgIGRvY3VtZW50LnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKTsK
KyAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdV
cGRhdGVTdGVwOjpNZWRpYVF1ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKQEAgLTI5NDEs
NyArMjk5NCw3IEBAIHZvaWQgUGFnZTo6YXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAgICAgIGRv
Y3VtZW50LnN0eWxlU2NvcGUoKS5kaWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKTsKICAg
ICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmV2YWx1YXRlTWVkaWFRdWVyaWVzRm9yQXBwZWFy
YW5jZUNoYW5nZSgpOwogICAgICAgICBkb2N1bWVudC51cGRhdGVFbGVtZW50c0FmZmVjdGVkQnlN
ZWRpYVF1ZXJpZXMoKTsKLSAgICAgICAgZG9jdW1lbnQuc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1Vw
ZGF0ZSgpOworICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uKTsKICAgICB9KTsKIH0KIApA
QCAtMzMwNiw0ICszMzU5LDI5IEBAIHZvaWQgUGFnZTo6bWFpbkZyYW1lRGlkQ2hhbmdlVG9Ob25J
bml0aWFsRW1wdHlEb2N1bWVudCgpCiAgICAgbV91c2VyU3R5bGVTaGVldHNQZW5kaW5nSW5qZWN0
aW9uLmNsZWFyKCk7CiB9CiAKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRT
dHJlYW0mIHRzLCBSZW5kZXJpbmdVcGRhdGVTdGVwIHN0ZXApCit7CisgICAgc3dpdGNoIChzdGVw
KSB7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemU6IHRzIDw8ICJSZXNpemUi
OyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbDogdHMgPDwgIlNj
cm9sbCI7IGJyZWFrOworICAgIGNhc2UgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2
YWx1YXRpb246IHRzIDw8ICJNZWRpYVF1ZXJ5RXZhbHVhdGlvbiI7IGJyZWFrOworICAgIGNhc2Ug
UmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9uczogdHMgPDwgIkFuaW1hdGlvbnMiOyBicmVh
azsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkZ1bGxzY3JlZW46IHRzIDw8ICJGdWxs
c2NyZWVuIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25G
cmFtZUNhbGxiYWNrczogdHMgPDwgIkFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzIjsgYnJlYWs7Cisj
aWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9uczogdHMgPDwgIkludGVyc2VjdGlvbk9ic2Vy
dmF0aW9ucyI7IGJyZWFrOworI2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKKyAg
ICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9uczogdHMgPDwgIlJl
c2l6ZU9ic2VydmF0aW9ucyI7IGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpJbWFnZXM6IHRzIDw8ICJJbWFnZXMiOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzOiB0cyA8PCAiV2hlZWxFdmVu
dE1vbml0b3JDYWxsYmFja3MiOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6
OkN1cnNvclVwZGF0ZTogdHMgPDwgIkN1cnNvclVwZGF0ZSI7IGJyZWFrOworICAgIGNhc2UgUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6RXZlbnRSZWdpb25VcGRhdGU6IHRzIDw8ICJFdmVudFJlZ2lvblVw
ZGF0ZSI7IGJyZWFrOworICAgIGNhc2UgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaDog
dHMgPDwgIkxheWVyRmx1c2giOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6
OlNjcm9sbGluZ1RyZWVVcGRhdGU6IHRzIDw8ICJTY3JvbGxpbmdUcmVlVXBkYXRlIjsgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAppbmRleCAyMTE3YTIzYTg4MDJkN2ZjNzRmMDVlN2FkZTYwOGI4NGFiNTMwZjM4Li4x
MWE3YjcyMDU0OTgyMjE0NDQ0MjA4MmZjMTVhYTg4Y2RjNWNhNWI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtNzQsNiArNzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBEZWJ1Z2dlcjsKIH0KIAor
bmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFtOworfQorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIG5hbWVzcGFjZSBJREJDbGllbnQgewpAQCAtMTY5LDYgKzE3Myw1MiBAQCBlbnVtIGNs
YXNzIEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3MgOiB1aW50OF90IHsKICAgICBJbnZhbGlk
YXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcyAgICA9IDEgPDwgMSwKIH07CiAKK2VudW0gY2xhc3Mg
UmVuZGVyaW5nVXBkYXRlU3RlcCA6IHVpbnQxNl90IHsKKyAgICBSZXNpemUgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCAwLAorICAgIFNjcm9sbCAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxIDw8IDEsCisgICAgTWVkaWFRdWVyeUV2YWx1YXRpb24gICAgICAgICAgICA9IDEgPDwg
MiwKKyAgICBBbmltYXRpb25zICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAorICAgIEZ1
bGxzY3JlZW4gICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDQsCisgICAgQW5pbWF0aW9uRnJh
bWVDYWxsYmFja3MgICAgICAgICA9IDEgPDwgNSwKKyNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09C
U0VSVkVSKQorICAgIEludGVyc2VjdGlvbk9ic2VydmF0aW9ucyAgICAgICAgPSAxIDw8IDYsCisj
ZW5kaWYKKyNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQorICAgIFJlc2l6ZU9ic2VydmF0aW9u
cyAgICAgICAgICAgICAgPSAxIDw8IDcsCisjZW5kaWYKKyAgICBJbWFnZXMgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMSA8PCA4LAorICAgIFdoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzICAg
ICAgPSAxIDw8IDksCisgICAgQ3Vyc29yVXBkYXRlICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MTAsCisgICAgRXZlbnRSZWdpb25VcGRhdGUgICAgICAgICAgICAgICA9IDEgPDwgMTEsCisgICAg
TGF5ZXJGbHVzaCAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMTIsCisgICAgU2Nyb2xsaW5n
VHJlZVVwZGF0ZSAgICAgICAgICAgICA9IDEgPDwgMTMsCit9OworCitjb25zdGV4cHIgT3B0aW9u
U2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IHVwZGF0ZVJlbmRlcmluZ1N0ZXBzID0geworICAgIFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSwKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3Jv
bGwsCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2YWx1YXRpb24sCisgICAg
UmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9ucywKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVw
OjpGdWxsc2NyZWVuLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2tzLAorI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCisgICAgUmVuZGVyaW5n
VXBkYXRlU3RlcDo6SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25zLAorI2VuZGlmCisjaWYgRU5BQkxF
KFJFU0laRV9PQlNFUlZFUikKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZh
dGlvbnMsCisjZW5kaWYKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbWFnZXMsCisgICAgUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MsCisgICAgUmVuZGVy
aW5nVXBkYXRlU3RlcDo6Q3Vyc29yVXBkYXRlLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkV2
ZW50UmVnaW9uVXBkYXRlLAorfTsKKworY29uc3RleHByIGF1dG8gYWxsUmVuZGVyaW5nVXBkYXRl
U3RlcHMgPSB1cGRhdGVSZW5kZXJpbmdTdGVwcyB8IE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVT
dGVwPiB7CisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCwKKyAgICBSZW5kZXJp
bmdVcGRhdGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlLAorfTsKKworCiBjbGFzcyBQYWdlIDog
cHVibGljIFN1cHBsZW1lbnRhYmxlPFBhZ2U+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UGFnZT4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2UpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwpAQCAtNDg5LDkgKzUzOSw5IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGZpbmFsaXplUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxGaW5hbGl6ZVJlbmRlcmluZ1Vw
ZGF0ZUZsYWdzPik7CiAKICAgICAvLyBEbyBpbW1lZGlhdGUgb3IgdGltZWQgdXBkYXRlIGFzIGRp
Y3RhdGVkIGJ5IHRoZSBDaHJvbWVDbGllbnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoT3B0aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICAvLyBT
Y2hlZHVsZSBhbiB1cGRhdGUgdGhhdCBjb29yZGluYXRlcyB3aXRoIGRpc3BsYXkgcmVmcmVzaDsg
dGhlIG5vcm1hbCBraW5kIG9mIHVwZGF0ZS4KLSAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoT3B0aW9u
U2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+KTsKICAgICAvLyBTY2hlZHVsZSBhbiB1cGRhdGUgaW4g
dGhlIGN1cnJlbnQgcnVubG9vcDsgdGhpcyBpcyBhbiBlYWdlciB1cGRhdGUgdGhhdCBtYXkgdHJp
Z2dlciByZW5kZXJpbmcgbW9yZSB0aGFuIG9uY2UgcGVyIGRpc3BsYXkgcmVmcmVzaC4KICAgICB2
b2lkIHNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCk7CiAKQEAgLTc3MywxMyArODIz
LDYgQEAgcHVibGljOgogICAgIE1vbm90b25pY1RpbWUgbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJlbmRlcmluZ1VwZGF0ZVRpbWVzdGFtcDsgfQog
CiBwcml2YXRlOgotICAgIGVudW0gY2xhc3MgUmVuZGVyaW5nVXBkYXRlUGhhc2UgOiB1aW50OF90
IHsKLSAgICAgICAgT3V0c2lkZSwKLSAgICAgICAgSW5VcGRhdGVSZW5kZXJpbmcsCi0gICAgICAg
IExheWVyRmx1c2hpbmcsCi0gICAgICAgIFBvc3RMYXllckZsdXNoCi0gICAgfTsKLQogICAgIHN0
cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwogICAg
ICAgICBGcmFtZUxvYWRUeXBlIHR5cGU7CkBAIC04MTUsNiArODU4LDggQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRvbVRpbWVyQWxpZ25tZW50SW50ZXJ2YWxJbmNyZWFzZVRpbWVyRmlyZWQoKTsKIAog
ICAgIHZvaWQgZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpOworICAgIHZvaWQgcmVuZGVyaW5nVXBk
YXRlQ29tcGxldGVkKCk7CisgICAgdm9pZCBjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVw
cyhPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4pOwogCiAgICAgUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyJiByZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIoKTsKIApAQCAtMTAyNCw4ICsxMDY5
LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNFZGl0YWJsZVJlZ2lvbkVuYWJsZWQgeyBmYWxz
ZSB9OwogI2VuZGlmCiAKLSAgICBWZWN0b3I8UmVuZGVyaW5nVXBkYXRlUGhhc2UsIDI+IG1fdXBk
YXRlUmVuZGVyaW5nUGhhc2VTdGFjazsKLQorICAgIFZlY3RvcjxPcHRpb25TZXQ8UmVuZGVyaW5n
VXBkYXRlU3RlcD4sIDI+IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHM7CisgICAgT3B0
aW9uU2V0PFJlbmRlcmluZ1VwZGF0ZVN0ZXA+IG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwczsK
KyAgICAKICAgICBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbiB7IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogICAg
IAogICAgIC8vIEZvciB0ZXN0aW5nLgpAQCAtMTA4Nyw0ICsxMTMzLDYgQEAgaW5saW5lIFBhZ2VH
cm91cCYgUGFnZTo6Z3JvdXAoKQogICAgIHJldHVybiAqbV9ncm91cDsKIH0KIAorV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFJlbmRlcmluZ1VwZGF0ZVN0ZXAp
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VP
dmVybGF5Q29udHJvbGxlci5jcHAKaW5kZXggMjUyYmVmOTUwOThkZjJmY2FmMGQyMTJlNTY4Njli
OGNjMjUwZTE2ZS4uYzYyYTk4NTU0NzkwMTQ1MjYxODk3MDc0MDJiNTZkNzFjNmQ3ZDU0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcApAQCAtMzE4
LDcgKzMxOCw3IEBAIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VT
Y2FsZUZhY3RvcigpCiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3
RXhwb3NlZFJlY3QoKQogewotICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRl
KCk7CisgICAgbV9wYWdlLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBk
YXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpk
aWRTY3JvbGxGcmFtZShGcmFtZSYgZnJhbWUpCkBAIC00MTIsNyArNDEyLDcgQEAgZmxvYXQgUGFn
ZU92ZXJsYXlDb250cm9sbGVyOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgUGFn
ZU92ZXJsYXlDb250cm9sbGVyOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKQogewotICAgIG1fcGFnZS5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
bV9wYWdlLnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6
TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VP
dmVybGF5RnJhbWUoUGFnZU92ZXJsYXkmIG92ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggZmE3Y2M3NzM0NDg0ZWNjMjJh
ZmRiYzgxZDM5NDY3NmRkZDkwY2FhMS4uNzc5ZmU1NmExYWRlMDljYTMzMjQzMzllNDQ3NGE4ODVh
ZjA1NWZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2No
ZWR1bGVyLmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
IDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs2MCwxMSBAQCBib29sIFJlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVBbmltYXRpb24oRnJhbWVzUGVyU2Vjb25kIHByZWZl
cnJlZEZyYW1lcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICBzZXRQcmVmZXJy
ZWRGcmFtZXNQZXJTZWNvbmQocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKLSAgICByZXR1cm4g
RGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjaGVkdWxlQW5p
bWF0aW9uKCp0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1h
bmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlvbigqdGhpcyk7CisKKyAgICBM
T0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0ZVNjaGVk
dWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzY2hlZHVsZUFuaW1hdGlvbigiIDw8IHBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCA8PCAiZnBzKSAtIHNjaGVkdWxlZCAiIDw8IHJlc3VsdCk7
CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6YWRqdXN0UmVuZGVyaW5nVXBkYXRlRnJlcXVlbmN5KCkKQEAgLTc3LDYgKzgzLDggQEAgdm9p
ZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmFkanVzdFJlbmRlcmluZ1VwZGF0ZUZyZXF1ZW5j
eSgpCiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzY2hlZHVsZVRpbWVkUmVuZGVy
aW5nVXBkYXRlKCkKIHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwg
IlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCkgLSBhbHJlYWR5IHNjaGVkdWxlZCAiIDw8IGlzU2No
ZWR1bGVkKCkgPDwgIiBwYWdlIHZpc2libGUgIiA8PCBtX3BhZ2UuaXNWaXNpYmxlKCkpOworCiAg
ICAgaWYgKGlzU2NoZWR1bGVkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTA2LDYgKzExNCw4
IEBAIGJvb2wgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjppc1NjaGVkdWxlZCgpIGNvbnN0CiAg
ICAgCiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c3RhcnRUaW1lcihTZWNvbmRzIGRl
bGF5KQogeworICAgIExPR19XSVRIX1NUUkVBTShFdmVudExvb3AsIHN0cmVhbSA8PCAiUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyIGZvciBwYWdlICIgPDwgJm1fcGFnZSA8PCAiIHN0YXJ0VGltZXIo
IiA8PCBkZWxheSA8PCAiKSIpOworCiAgICAgQVNTRVJUKCFpc1NjaGVkdWxlZCgpKTsKICAgICBt
X3JlZnJlc2hUaW1lciA9IG1ha2VVbmlxdWU8VGltZXI+KCp0aGlzLCAmUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKTsKICAgICBtX3JlZnJlc2hUaW1lci0+c3Rh
cnRPbmVTaG90KGRlbGF5KTsKQEAgLTEzMyw2ICsxNDMsOCBAQCB2b2lkIFJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcjo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3Bs
YXlJRAogCiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJl
ZCgpCiB7CisgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIgZm9yIHBhZ2UgIiA8PCAmbV9wYWdlIDw8ICIgZGlzcGxheVJlZnJl
c2hGaXJlZCgpIik7CisKICAgICB0cmFjZVBvaW50KFRyaWdnZXJSZW5kZXJpbmdVcGRhdGUpOwog
CiAgICAgY2xlYXJTY2hlZHVsZWQoKTsKQEAgLTE0MSwxNCArMTUzLDE3IEBAIHZvaWQgUmVuZGVy
aW5nVXBkYXRlU2NoZWR1bGVyOjpkaXNwbGF5UmVmcmVzaEZpcmVkKCkKIAogdm9pZCBSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlSW1tZWRpYXRlUmVuZGVyaW5nVXBkYXRlKCkKIHsK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzY2hlZHVsZUltbWVkaWF0ZVJl
bmRlcmluZ1VwZGF0ZSgpIik7CiAgICAgbV9wYWdlLmNocm9tZSgpLmNsaWVudCgpLnNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKCk7CiB9CiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpz
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiB7Ci0gICAgaWYgKG1fcGFnZS5jaHJvbWUoKS5jbGll
bnQoKS5uZWVkc0ltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpKQotICAgICAgICBzY2hlZHVsZUlt
bWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpOwotICAgIGVsc2UKKyAgICBMT0dfV0lUSF9TVFJFQU0o
RXZlbnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlciBmb3IgcGFnZSAi
IDw8ICZtX3BhZ2UgPDwgIiBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIC0gbmVlZHMgaW1tZWRp
YXRlIHVwZGF0ZSAiIDw8IG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5uZWVkc0ltbWVkaWF0ZVJl
bmRlcmluZ1VwZGF0ZSgpKTsKKworLy8gICAgaWYgKG1fcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5u
ZWVkc0ltbWVkaWF0ZVJlbmRlcmluZ1VwZGF0ZSgpKQorLy8gICAgICAgIHNjaGVkdWxlSW1tZWRp
YXRlUmVuZGVyaW5nVXBkYXRlKCk7CisvLyAgICBlbHNlCiAgICAgICAgIHNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9S
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmgKaW5kZXggZTBlMDE3ZWJjMmY0ZmIzODRkZTk1OTVjNmM5NDQ4YTU2
MmMzNTg1NC4uMmI3NjZjZDE1OTUxZmJkYjZmODZhMmI4OGJkNzQ0Y2VjNTI4YjAwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCkBAIC02Myw5
ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhclNjaGVkdWxlZCgpOwogCiAgICAgUGFn
ZSYgbV9wYWdlOwotICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxUaW1lcj4gbV9yZWZyZXNoVGltZXI7CiAgICAgRnJhbWVzUGVyU2Vjb25kIG1fcHJl
ZmVycmVkRnJhbWVzUGVyU2Vjb25kIHsgRnVsbFNwZWVkRnJhbWVzUGVyU2Vjb25kIH07CisgICAg
Ym9vbCBtX3NjaGVkdWxlZCB7IGZhbHNlIH07CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVz
aXplT2JzZXJ2ZXIuY3BwCmluZGV4IDI1N2ZhMTFjOGM3YmZlYWI2MWEzNGVmNzEzNmNhYmJjODA1
NTYwYTAuLjZjODcyMGJhZWFkYmQxZWRmY2Q3YzhmMmQ0YmI0ZTkzOTdkZTE5NjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVzaXplT2JzZXJ2ZXIuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgUmVz
aXplT2JzZXJ2ZXI6Om9ic2VydmUoRWxlbWVudCYgdGFyZ2V0KQogCiAgICAgaWYgKG1fZG9jdW1l
bnQpIHsKICAgICAgICAgbV9kb2N1bWVudC0+YWRkUmVzaXplT2JzZXJ2ZXIoKnRoaXMpOwotICAg
ICAgICBtX2RvY3VtZW50LT5zY2hlZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAg
IG1fZG9jdW1lbnQtPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRl
U3RlcDo6UmVzaXplT2JzZXJ2YXRpb25zKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcAppbmRleCAxZDEzZmM2MTk3MTAzZmRiMDFl
ZmM5NDNmYWMxMDY1MjJjODEwNTY0Li4xNDc0MTc2ZTVmMDRmMGRiMTkxMzQwOGVjYjM0MGFmYjdj
NTgzNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9u
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3Iu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0
Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuCiAgICAgVU5VU0VE
X1BBUkFNKGV4cGVjdE1vbWVudHVtRW5kKTsKICNlbmRpZgogCi0gICAgbV9wYWdlLnNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKCk7CisgICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzKTsKIAogICAgIExP
R19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2
ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyAtIGV4cGVj
dCBlbmQvY2FuY2VsICIgPDwgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCA8PCAiLCBleHBlY3QgbW9t
ZW50dW0gZW5kICIgPDwgZXhwZWN0TW9tZW50dW1FbmQpOwogfQpAQCAtMTIxLDEzICsxMjEsMTMg
QEAgdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudChjb25zdCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNj
aGVkdWxlQ2FsbGJhY2tDaGVjaygpCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAg
ICAgIG1fcGFnZS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBtX3BhZ2Uuc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0
b3JDYWxsYmFja3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoKFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKG1fcGFnZSldIHsKICAgICAgICAg
aWYgKHdlYWtQYWdlKQotICAgICAgICAgICAgd2Vha1BhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKCk7CisgICAgICAgICAgICB3ZWFrUGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MpOwogICAgIH0pOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29u
dHJvbGxlci5tbQppbmRleCAwYjlhYmI4YzljYTg4YjQ2MjlhMjkzOTgxZGQyNTZlNzE3NWQwYzQ4
Li44ZjE3YWMxNWExZjQ3MTdmNGNkNjMzOGYzYTI0MGMxMjkzNWE5ZWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KQEAg
LTEyMSw3ICsxMjEsNyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdo
dDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheQogICAgIGlmICghbV9jb250
cm9sbGVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRyb2xsZXItPnBhZ2UoKS5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgbV9jb250cm9sbGVyLT5wYWdlKCkuc2No
ZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNo
KTsKIH0KIAogdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OnBhaW50
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKaW5kZXggMjQ5YmI5NjlmMjllODgzNjNlNzYyZTJmNDEwY2FmMDcz
NjExNDQzZS4uZjEzOTIzNzFiZGIyMzMzNThlM2I0NTNlNTM1ZWIzOWMyZTk4ZDc5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvci5jcHAKQEAgLTEyMyw2ICsxMjMsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNldEV2ZW50VHJhY2tpbmdSZWdpb25zRGlydHkoKQogewogICAgIG1fZXZl
bnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSA9IHRydWU7CiAgICAgLy8gV2UgaGF2ZSB0byBzY2hlZHVs
ZSBhIGNvbW1pdCwgYnV0IHRoZSBjb21wdXRlZCBub24tZmFzdCByZWdpb24gbWF5IG5vdCBoYXZl
IGFjdHVhbGx5IGNoYW5nZWQuCisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gZGlzYW1iaWd1
YXRlIGJldHdlZW4gZXZlbnQgcmVnaW9ucyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUsIGFuZCB0aG9z
ZSBpbiBHcmFwaGljc0xheWVycy4KICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KaW5kZXggNDYzN2I1ZDQzODUyMDdiNjViOTI4YjJlYzlj
MmQ0ZmY0N2RmNWMyMC4uYjQ5ZjEwYzlmY2MwZmFmYmQ5NThkNzJlMGEwZDY4ZGM1Mjc5YmYzZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQpAQCAtOTUsNyArOTUsOCBAQCBib29sIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRm
b3JtV2hlZWxFdgogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hlZHVsZVRyZWVT
dGF0ZUNvbW1pdCgpCiB7Ci0gICAgbV9wYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwor
ICAgIC8vIEZJWE1FOiBUaGlzIG9uZSBuZWVkcyB3b3JrLgorICAgIG1fcGFnZS0+c2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsaW5nVHJlZVVwZGF0ZSk7
CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNvbW1pdFRyZWVTdGF0ZUlmTmVl
ZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKaW5kZXggZWVmOGIzYTdmMjJjNTdk
ZDM1NDQ5ZDQ0OWRhODVkM2Y1MGE5NWY2Yy4uOGNmMDE4N2M3NzAzNDg0ODg1NzZmZGVmZWQ4N2Zi
MzMwNGNlZWI5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKQEAgLTkwLDYgKzkw
LDcgQEAgdm9pZCBpbml0aWFsaXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJp
bmc+IGxvZ0NoYW5uZWxTdHJpbmcpCiAKICAgICBTdHJpbmcgZW5hYmxlZENoYW5uZWxzU3RyaW5n
ID0gbG9nQ2hhbm5lbFN0cmluZyA/IGxvZ0NoYW5uZWxTdHJpbmcudmFsdWUoKSA6IGxvZ0xldmVs
U3RyaW5nKCk7CiAgICAgV1RGSW5pdGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKGxv
Z0NoYW5uZWxzLCBsb2dDaGFubmVsQ291bnQsIGVuYWJsZWRDaGFubmVsc1N0cmluZy51dGY4KCku
ZGF0YSgpKTsKKy8vICAgIExvZ0V2ZW50TG9vcC5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxTdGF0ZTo6
T247CiB9CiAKIFdURkxvZ0NoYW5uZWwqIGdldExvZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiBuYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IDdkNmM4ODQ2MTEzZDg1ZDNmZDFhOWRj
MzU4ZWM0YmIxZDk5NzJhMDUuLmI1MzliZGUyY2Y5MzRiMGYwMjRmOGQ2MGYxNmRmMTRjOWE1M2Y4
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIE0oRWRpdGluZykgXAogICAgIE0oRU1FKSBcCiAgICAgTShFdmVu
dHMpIFwKKyAgICBNKEV2ZW50TG9vcCkgXAogICAgIE0oRXZlbnRSZWdpb25zKSBcCiAgICAgTShG
aWxlQVBJKSBcCiAgICAgTShGaWx0ZXJzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKaW5kZXggZGZkMGJkOTkxMDNkMGM5ZDNhZDdmNzE2ZDc4YjFjZjBjN2Q0
ODAyYi4uYWYxOWQxYzg1M2JhNjhjMTI2YmQ4OTIzMWM0YTQzMjQ3M2Q4MmRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTQwMywxMCArMTQwMywx
MCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OmRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hl
ZEltYWdlJiBjYWNoZWRJbWFnZSkKICAgICAgICAgdmlldygpLnJlbW92ZVJlbmRlcmVyV2l0aFBh
dXNlZEltYWdlQW5pbWF0aW9ucygqdGhpcywgY2FjaGVkSW1hZ2UpOwogfQogCi12b2lkIFJlbmRl
ckVsZW1lbnQ6OnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUoKQordm9pZCBSZW5kZXJFbGVt
ZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKENhY2hlZEltYWdlJikKIHsKICAg
ICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5zY2hl
ZHVsZVRpbWVkUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlVGltZWRS
ZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzKTsKIH0KIAogYm9vbCBS
ZW5kZXJFbGVtZW50OjpyZXBhaW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVkZWQoY29u
c3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCmluZGV4IGJhMzQ4YjdhNTM5MDhmOTEw
OWQ3NWE0NGZlMGViYWExNzVkNTU0ODYuLjQyYzI3OGFhYTRiMGI3NDczYWNlOTIzMjgwNWI3YzBl
MWQ1YWVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAt
MzIzLDcgKzMyMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5EZXN0cm95RGVjb2RlZERhdGEo
KSBmaW5hbCB7IHJldHVybiAhaXNWaXNpYmxlSW5WaWV3cG9ydCgpOyB9CiAgICAgVmlzaWJsZUlu
Vmlld3BvcnRTdGF0ZSBpbWFnZUZyYW1lQXZhaWxhYmxlKENhY2hlZEltYWdlJiwgSW1hZ2VBbmlt
YXRpbmdTdGF0ZSwgY29uc3QgSW50UmVjdCogY2hhbmdlUmVjdCkgZmluYWw7CiAgICAgdm9pZCBk
aWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYpIGZpbmFsOwotICAgIHZvaWQg
c2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIGZpbmFsOworICAgIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGVGb3JJbWFnZShDYWNoZWRJbWFnZSYpIGZpbmFsOwogCiAgICAgYm9vbCBn
ZXRMZWFkaW5nQ29ybmVyKEZsb2F0UG9pbnQmIG91dHB1dCwgYm9vbCYgaW5zaWRlRml4ZWQpIGNv
bnN0OwogICAgIGJvb2wgZ2V0VHJhaWxpbmdDb3JuZXIoRmxvYXRQb2ludCYgb3V0cHV0LCBib29s
JiBpbnNpZGVGaXhlZCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDljYTBmOTNiYmJjMWQ1MWQ5MDBjOWZmOWY4MTA3MzY0
OTU1ZGZlMmUuLjJkYmE1YjFkN2E5MzA3OTZmNzA0MTAyODBhZDBkMTg3ZGUxZGI1YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0z
NjQ4LDExICszNjQ4LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlBbmltYXRp
b25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBTdHJpCiB7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqKQordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3Qg
R3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkucmVuZGVyVHJlZUJl
aW5nRGVzdHJveWVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21wb3NpdG9yKCkuc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKKworICAgIGNvbXBvc2l0b3IoKS5ub3RpZnlGbHVzaFJlcXVp
cmVkKGxheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoQmVm
b3JlRGlzcGxheVJlZnJlc2goY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDc1
NzVkY2E3ZWIyNGVjM2E5ZGU3MTY2MTdiZjcyMjUwMmNlYzIzZWEuLmY1YmY3YjQ4MDA1MTBiZjM3
YmIxOGUzMDE0NDk5MmYxZjQ4ZTI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBB
U1NFUlQoIW1fZmx1c2hpbmdMYXllcnMpOwogCi0gICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp2aXNpYmxlUmVjdEZvckxheWVyRmx1c2hpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGMzOTYxNDgzZjRl
ZTI2YzA1MTgwODJlN2VjMmNkOTc2NTVhNjU0MWQuLmMxNTFlMjNkMGVmNjVmZWI5OWYwNTdlNWQy
MjhlYmJmZDVjMTg1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBH
cmFwaGljc0xheWVycyBidWZmZXIgc3RhdGUsIHdoaWNoIGdldHMgcHVzaGVkIHRvIHRoZSB1bmRl
cmx5aW5nIHBsYXRmb3JtIGxheWVycwogICAgIC8vIGF0IHNwZWNpZmljIHRpbWVzLgotICAgIHZv
aWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWly
ZWQoY29uc3QgR3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hQZW5kaW5n
TGF5ZXJDaGFuZ2VzKGJvb2wgaXNGbHVzaFJvb3QgPSB0cnVlKTsKIAogICAgIC8vIENhbGxlZCB3
aGVuIHRoZSBHcmFwaGljc0xheWVyIGZvciB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgaGFzIGZsdXNo
ZWQgY2hhbmdlcyBpbnNpZGUgb2YgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkuCkBAIC0zOTYs
NyArMzk2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUNvbXBvc2l0aW5nUG9saWN5KCk7
CiAgICAgCiAgICAgLy8gR3JhcGhpY3NMYXllckNsaWVudCBpbXBsZW1lbnRhdGlvbgotICAgIHZv
aWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjdXN0b21Qb3NpdGlvbkZvclZpc2libGVSZWN0Q29tcHV0YXRpb24oY29u
c3QgR3JhcGhpY3NMYXllciosIEZsb2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29s
IGlzVHJhY2tpbmdSZXBhaW50cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUcmFja2lu
Z1JlcGFpbnRzOyB9CkBAIC00NTQsNiArNDUzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbmVl
ZHNDb21wb3NpdGluZ0ZvckNvbnRlbnRPck92ZXJsYXlzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisKICAgICB2b2lkIGVuc3VyZVJvb3RMYXllcigpOwog
ICAgIHZvaWQgZGVzdHJveVJvb3RMYXllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0
dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDc5Y2EyY2Nk
MzFkODQ1NGRlMjE0OWExY2RmMDQ2NDU3NTg4ODAwNjUuLmYxMjdkNzdlOTM2MDFiZGJjZjllNGRl
Njc3OTA2Y2YzOWI3NGQ3MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQg
TGF5ZXJUcmVlSG9zdDo6bGF5ZXJGbHVzaFRpbWVyRmlyZWQoKQogCiAgICAgLy8gSW4gY2FzZSBh
biBhbmltYXRpb24gaXMgcnVubmluZywgd2Ugc2hvdWxkIGZsdXNoIGFnYWluIHNvb24uCiAgICAg
aWYgKGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPihtX3Jvb3RMYXllci5nZXQo
KSktPmxheWVyKCkuZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkKLSAg
ICAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICAgICAgbV93ZWJQYWdlLmNvcmVQYWdlKCktPnNjaGVkdWxlVGltZWRSZW5kZXJpbmdV
cGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIExheWVyVHJlZUhv
c3Q6OkxheWVyVHJlZUhvc3QoV2ViUGFnZSYgd2ViUGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA2MjM1ZDJjMWVkNmE2MDVjNmRiMzIxMGJhZTAx
MGMwYWUyYjE1ODA0Li45OTRmMjE4NzlhYjJiNDJiOWVhYTMwZjFhZmU3YzY1Njg0NjQxMGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC05MDgwLDcg
KzkwODAsNyBAQCAtIChCT09MKV9mbHVzaENvbXBvc2l0aW5nQ2hhbmdlcwogLSAodm9pZClfc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JQZW5kaW5nVGlsZUNhY2hlUmVwYWludAogewogICAgIGlm
IChhdXRvKiBwYWdlID0gX3ByaXZhdGUtPnBhZ2UpCi0gICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFdl
YkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCAxZmRh
NzY3NjQ5YzIyNmYyMWE3ZTcyYTQ2MTc5YzNmOWVhZWI3MzViLi5kZmUyYzMwMGQ3NjYzYmM1OGYw
Y2Y4YzZiNjdiZTg1NzAwNGNkMDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3RGF0YS5oCkBAIC0xMjEsNiArMTIxLDggQEAgcHJpdmF0ZToKICAgICAKICAg
ICBMYXllckZsdXNoQ29udHJvbGxlciogbV9mbHVzaENvbnRyb2xsZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4gbV9ydW5Mb29wT2JzZXJ2ZXI7CisgICAg
Ym9vbCBtX2luc2lkZUNhbGxiYWNrIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVzY2hlZHVsZWRJ
bnNpZGVDYWxsYmFjayB7IGZhbHNlIH07CiB9OwogCiBjbGFzcyBMYXllckZsdXNoQ29udHJvbGxl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPExheWVyRmx1c2hDb250cm9sbGVyPiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5tbQppbmRleCBmY2U0YTY2NDY2
ZDhmZmI2NGI2MjEyNTkwMzAxZWIyNDNiYTg5NDY2Li5hOWE5OWE0N2YxZWJhNWU1YTNmNThmNTcz
NGI0ZjAyNzYwNDlkMDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXdEYXRhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlld0RhdGEubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRh
dGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNpbXBvcnQgPHd0Zi9S
dW5Mb29wLmg+CisjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjaW1wb3J0ICJXZWJHZW9sb2NhdGlvblByb3ZpZGVySU9TLmgiCkBAIC0xMDcs
NiArMTA4LDkgQEAgV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6On5XZWJWaWV3TGF5ZXJGbHVz
aFNjaGVkdWxlcigpCiAKIHZvaWQgV2ViVmlld0xheWVyRmx1c2hTY2hlZHVsZXI6OnNjaGVkdWxl
KCkKIHsKKyAgICBpZiAobV9pbnNpZGVDYWxsYmFjaykKKyAgICAgICAgbV9yZXNjaGVkdWxlZElu
c2lkZUNhbGxiYWNrID0gdHJ1ZTsKKwogICAgIG1fcnVuTG9vcE9ic2VydmVyLT5zY2hlZHVsZShj
dXJyZW50UnVuTG9vcCgpKTsKIH0KIApAQCAtMTE5LDcgKzEyMywxMSBAQCB2b2lkIFdlYlZpZXdM
YXllckZsdXNoU2NoZWR1bGVyOjpsYXllckZsdXNoQ2FsbGJhY2soKQogewogICAgIEBhdXRvcmVs
ZWFzZXBvb2wgewogICAgICAgICBSZWZQdHI8TGF5ZXJGbHVzaENvbnRyb2xsZXI+IHByb3RlY3Rv
ciA9IG1fZmx1c2hDb250cm9sbGVyOwotICAgICAgICBpZiAobV9mbHVzaENvbnRyb2xsZXItPmZs
dXNoTGF5ZXJzKCkpCisKKyAgICAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaW5zaWRlQ2FsbGJhY2tT
Y29wZShtX2luc2lkZUNhbGxiYWNrLCB0cnVlKTsKKyAgICAgICAgbV9yZXNjaGVkdWxlZEluc2lk
ZUNhbGxiYWNrID0gZmFsc2U7CisKKyAgICAgICAgaWYgKG1fZmx1c2hDb250cm9sbGVyLT5mbHVz
aExheWVycygpICYmICFtX3Jlc2NoZWR1bGVkSW5zaWRlQ2FsbGJhY2spCiAgICAgICAgICAgICBp
bnZhbGlkYXRlKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9hbmlt
YXRpb24vcmVxdWVzdC1hbmltYXRpb24tZnJhbWUtdGhyb3R0bGluZy1sb3dQb3dlck1vZGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvYW5pbWF0aW9uL3JlcXVlc3QtYW5pbWF0aW9uLWZyYW1lLXRo
cm90dGxpbmctbG93UG93ZXJNb2RlLmh0bWwKaW5kZXggOGY2Y2VmY2U0NDJmNTgwMmI4Y2M1NTgz
YzgyNzg1NDJlMmI5MDg2Ni4uZDkwZmI1NTBiNTY2MmRiZGE0YzAyMmY4ZDJhZWQ5MWQ3ZWZmYjA1
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9hbmltYXRpb24vcmVxdWVzdC1hbmltYXRp
b24tZnJhbWUtdGhyb3R0bGluZy1sb3dQb3dlck1vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2FuaW1hdGlvbi9yZXF1ZXN0LWFuaW1hdGlvbi1mcmFtZS10aHJvdHRsaW5nLWxvd1Bvd2Vy
TW9kZS5odG1sCkBAIC0yMCw2ICsyMCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgTG93UG93ZXJNb2RlIHRocm90dGxpbmcgaW50
ZXJ2YWwgPSAzMF9tcy4gVGhlIGZyYW1lIHJhdGUgfj0gMzMuMyBmcHMuCisgICAgICAgICAgICAg
ICAgY29uc29sZS5sb2coZnJhbWVzUGVyU2Vjb25kKQogICAgICAgICAgICAgICAgIHNob3VsZEJl
VHJ1ZSgiZnJhbWVzUGVyU2Vjb25kIDwgMzUiKTsKICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKICAgICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410665</attachid>
            <date>2020-10-06 11:17:56 -0700</date>
            <delta_ts>2020-10-06 11:32:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216726-20201006111755.patch</filename>
            <type>text/plain</type>
            <size>49213</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0YTIxZWY1NDc3NDYzNTM4MmM0ZjA3
Y2YyM2Y2MzA1ZWYzMTIyMDcuLjFjMzU3OTJlYmM5YWJkZDQ0NWRjNDk1ODcyZWE0MTRkZmE5ZDQ2
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50IHJlbmRlcmluZyB1cGRhdGVz
IGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gZHVtcCBWZWN0b3JzIHdpdGggaW5saW5lIGNhcGFjaXR5LgorCisgICAgICAgICog
d3RmL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwogMjAy
MC0xMC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFsaWduIFVSTCBzZXR0ZXJzIHdpdGggcmVhc29uYWJseSBiZWhhdmluZyBvdGhlciBi
cm93c2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyNzk1NDcxYzcyYTI2YTc0ODRhNThiZjlhY2E1YWM0MDcz
MTllMjkuLjhkMDIwZjhiNDcwZTA5MjlhNDAyMzBhNDViODk2ZjhkNjEyMGNmNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5NSBAQAorMjAyMC0xMC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1bmRhbnQgcmVuZGVyaW5nIHVwZGF0ZXMgY2Fu
IGJlIHNjaGVkdWxlZCBmcm9tIGluc2lkZSBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJhc2ljIG1vZGVs
IGZvciBzY2hlZHVsaW5nIHJlbmRlcmluZyB1cGRhdGVzIGlzIHRoYXQgY29kZSB0aGF0IG5lZWRz
IHRvIHRyaWdnZXIgYW4KKyAgICAgICAgdXBkYXRlIGp1c3QgY2FsbHMgUGFnZTo6c2NoZWR1bGVb
VGltZWRdUmVuZGVyaW5nVXBkYXRlKCkuIEhvd2V2ZXIsIGlmCisgICAgICAgIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpIGlzIGFscmVhZHkgb24gdGhlIHN0YWNrLCBhbmQgdGhlIHdvcmsgdG8gYmUg
c2NoZWR1bGVkIHdpbGwgaGFwcGVuCisgICAgICAgIGxhdGVyIGluIHRoZSBjdXJyZW50IHVwZGF0
ZSwgd2UgZG9uJ3QgaGF2ZSB0byBzY2hlZHVsZSBhIG5ldyBvbmUuCisKKyAgICAgICAgVG8gZml4
IHRoaXMgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRyYWNr
IHdoaWNoIHN0ZXBzIHJlbWFpbgorICAgICAgICBpbiB0aGUgY3VycmVudCB1cGRhdGUsIGFuZCBj
YWxsZXJzIG9mIHNjaGVkdWxlW1RpbWVkXVJlbmRlcmluZ1VwZGF0ZSgpIHBhc3MgdGhlIHVwZGF0
ZSBzdGVwcworICAgICAgICBmb3IgdGhlIHdvcmsgdGhleSBuZWVkIHRvIHRyaWdnZXIuIElmIHRo
ZSByZXF1ZXN0ZWQgc3RlcHMgYXJlIGluY2x1ZGVkIGluIHRoZSByZW1haW5pbmcgc3RlcHMKKyAg
ICAgICAgbm8gbmV3IHVwZGF0ZSBuZWVkcyB0byBiZSBzY2hlZHVsZWQuIE5vdGUgdGhhdCByZXF1
ZXN0aW5nIGEgc3RlcCB3aGlsZSB0aGF0IHN0ZXAgaXMgYmVpbmcgZXhlY3V0ZWQKKyAgICAgICAg
aGFzIHRvIHNjaGVkdWxlIGFuIHVwYXRlIChlLmcuIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpbnNp
ZGUgaXRzIG93biBjYWxsYmFjayBoYXMgdG8gc2NoZWR1bGUpLgorICAgICAgICAKKyAgICAgICAg
QXQgdGhlIGVuZCBvZiBhbiB1cGRhdGUsIGlmIHRoZXJlIGFyZSBhbnkgdW5mdWxmaWxsZWQgc3Rl
cHMsIHRoZW4gd2Ugc2NoZWR1bGUgYSBuZXcgdXBkYXRlLgorCisgICAgICAgIEFkZCBhIGxvZyBj
aGFubmVsIGZvciBFdmVudExvb3AgYW5kIGFuZCBsb2cgZnJvbSB2YXJpb3VzIHBsYWNlcy4KKwor
ICAgICAgICBJbiBteSBicmllZiB0ZXN0aW5nLCB0aGlzIHJlZHVjZXMgdGhlIG51bWJlciBvZiBj
YWxscyB0byBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKSBieSAxMC0yNSUKKyAgICAgICAgb24gc29t
ZSByZWFsIHBhZ2VzLCB3aGljaCBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHBvd2VyIHNhdmluZy4K
KworICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbik6Cisg
ICAgICAgICogZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0TmVlZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6YWRkUGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludGVyc2VjdGlvbk9ic2VydmVyc0luaXRp
YWxVcGRhdGVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1bGVJ
bml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVs
ZUFuaW1hdGlvbik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY2hlZHVsZUN1cnNvclVwZGF0ZSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3
RXhwb3NlZFJlY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp1cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjp0cmlnZ2VyUmVuZGVyaW5nVXBkYXRlRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
aXNvbGF0ZWRVcGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9BZnRl
clVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5hbGl6ZVJlbmRl
cmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgICogcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3RXhwb3NlZFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpub3RpZnlGbHVzaFJlcXVpcmVk
KToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVy
OjpzdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBwYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc2l6ZU9ic2VydmVyOjpvYnNlcnZlKToKKyAgICAgICAgKiBwYWdlL1doZWVs
RXZlbnRUZXN0TW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNjaGVkdWxlQ2FsbGJhY2tDaGVjayk6CisgICAg
ICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRFdmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvck1hYzo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQpOgorICAgICAgICAqIHBs
YXRmb3JtL0xvZ2dpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ0NoYW5u
ZWxzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisKIDIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoKSB0byBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGV2ZXJ5d2hlcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMGNlZTU1Y2VkZjcxN2NhM2RjNTQ2MGJmM2YwNzNmNDQ3M2ViYTE4YS4uMmNmMmM5
YWZhNzE5YTBmNmYxZTI4MDdjODI4OWY1MzM4ODhlYjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0xMC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWR1bmRhbnQgcmVuZGVyaW5nIHVwZGF0ZXMgY2FuIGJlIHNjaGVkdWxlZCBm
cm9tIGluc2lkZSBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NoZWR1bGUgZm9yIGxheWVyIGZsdXNoLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojps
YXllckZsdXNoVGltZXJGaXJlZCk6CisKIDIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoKSB0byBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGV2ZXJ5d2hlcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkOTRhY2QyZTM4ZDJmMjBjN2JmMzdlM2E1OWVhMzIy
OTE4NDE1MjM4Li5jNjlhMGY3ZGE5YmNiZjI2MWY0NzkzMmNmZmQ0NzdlZDVmN2MzZjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDYgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50
IHJlbmRlcmluZyB1cGRhdGVzIGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBk
YXRlUmVuZGVyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNjcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByb3ZpZGUgdGhlIGZsYWdzLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvclBlbmRpbmdU
aWxlQ2FjaGVSZXBhaW50XSk6CisKIDIwMjAtMTAtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHRoZSAidHJpZ2dlclJlbmRlcmluZ1VwZGF0
ZSIgdGVybWlub2xvZ3kgaW4gQ2hyb21lQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1RleHRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5oCmlu
ZGV4IGRjZGFmYmMzZjMyYTY2MTY4YTJjMDUxYzgyM2Y5Njc0OTllNDgxZjYuLmYzZDJjZmMxMTFj
ODk4NTNhNWJiZjMxZTM1MTM3OWQ1MTJkOGQ3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5o
CkBAIC0yMTIsOCArMjEyLDggQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgTWFya2FibGU8VCwgVHJhaXRzPiYgaXRlbSkKICAgICByZXR1cm4gdHMgPDwgInVu
c2V0IjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtPiYgdmVjdG9yKQordGVtcGxhdGU8
dHlwZW5hbWUgSXRlbVR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSA9IDA+CitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBWZWN0b3I8SXRlbVR5cGUsIGlubGlu
ZUNhcGFjaXR5PiYgdmVjdG9yKQogewogICAgIHRzIDw8ICJbIjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCmluZGV4IDExMTNiZGNlMTJjMWY4MzM2
ZWEzOGJjYTZiNGYzODM5YjM1MDBmOGYuLjk2YjQ5NjcyZDVmYmQyMWU1ZTkwMjNkODhmODk4NGNk
MzhlYzM4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRp
bWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxl
QW5pbWF0aW9uUmVzb2x1dGlvbigpCiAgICAgaWYgKCFzaG91bGRSdW5VcGRhdGVBbmltYXRpb25z
QW5kU2VuZEV2ZW50c0lnbm9yaW5nU3VzcGVuc2lvblN0YXRlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAg
ICBtX2RvY3VtZW50LT5wYWdlKCktPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OkFuaW1hdGlvbnMpOwogICAgIG1fYW5pbWF0aW9uUmVzb2x1dGlvblNjaGVkdWxl
ZCA9IHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxh
eUxheWVyQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlMYXll
ckNvbnRyb2xsZXIuY3BwCmluZGV4IGYyM2FjM2RkNjc1NmY2YzNkNmY1MjY4MTRjNzg1ZDVlZTNk
ZDI2MTguLjJjYmIwZTAxZGFiZjg3MjQwYzA4YzVlYzU4NjkxYjNlYWNhZTZhMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcApAQCAt
MTI1LDcgKzEyNSw3IEBAIHZvaWQgTGF5ZXJDb250cm9sbGVyOjpzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSgpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIExheWVyQ29udHJv
bGxlcjo6ZW5zdXJlUm9vdExheWVyKEZsb2F0U2l6ZSB2aWV3U2l6ZSwgRmxvYXRTaXplIGNvbnRl
bnRTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggM2EwYzI1MDAxYzAwOWNmYjI0MjNi
NTk0ZjE0MTUxMzA5NjNiN2ZlZC4uM2NiOGY2MzZiYTczZmU1MjM0YjE5NjE1Mzk5MmE0NWIyZWYx
NThiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC01NjAsNyArNTYwLDcgQEAgRG9jdW1l
bnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwsIERvY3VtZW50Q2xhc3NG
bGFncyBkb2N1bWVudENsYXMKICAgICAsIG1fZnVsbHNjcmVlbk1hbmFnZXIgeyBtYWtlVW5pcXVl
UmVmPEZ1bGxzY3JlZW5NYW5hZ2VyPigqdGhpcykgfQogI2VuZGlmCiAjaWYgRU5BQkxFKElOVEVS
U0VDVElPTl9PQlNFUlZFUikKLSAgICAsIG1faW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVw
ZGF0ZVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKQorICAg
ICwgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIoKnRoaXMsICZEb2N1
bWVudDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyRmlyZWQpCiAjZW5k
aWYKICAgICAsIG1fbG9hZEV2ZW50RGVsYXlUaW1lcigqdGhpcywgJkRvY3VtZW50Ojpsb2FkRXZl
bnREZWxheVRpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKQEAgLTQwNzcsMTMgKzQwNzcsMTMgQEAgdm9pZCBEb2N1bWVudDo6
dXBkYXRlVmlld3BvcnRVbml0c09uUmVzaXplKCkKIHZvaWQgRG9jdW1lbnQ6OnNldE5lZWRzRE9N
V2luZG93UmVzaXplRXZlbnQoKQogewogICAgIG1fbmVlZHNET01XaW5kb3dSZXNpemVFdmVudCA9
IHRydWU7Ci0gICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBzY2hlZHVsZVJlbmRl
cmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUpOwogfQogCiB2b2lkIERvY3Vt
ZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0UmVzaXplKCkKIHsKICAgICBtX25lZWRzVmlzdWFs
Vmlld3BvcnRSZXNpemVFdmVudCA9IHRydWU7Ci0gICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNp
emUpOwogfQogCiAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20tdmlldy8jcnVuLXRo
ZS1yZXNpemUtc3RlcHMKQEAgLTQxMTMsNyArNDExMyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZFBl
bmRpbmdTY3JvbGxFdmVudFRhcmdldChDb250YWluZXJOb2RlJiB0YXJnZXQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmICh0YXJnZXRzLmlzRW1wdHkoKSkKLSAgICAgICAgc2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5n
VXBkYXRlU3RlcDo6U2Nyb2xsKTsKIAogICAgIHRhcmdldHMuYXBwZW5kKHRhcmdldCk7CiB9CkBA
IC00MTIxLDcgKzQxMjEsNyBAQCB2b2lkIERvY3VtZW50OjphZGRQZW5kaW5nU2Nyb2xsRXZlbnRU
YXJnZXQoQ29udGFpbmVyTm9kZSYgdGFyZ2V0KQogdm9pZCBEb2N1bWVudDo6c2V0TmVlZHNWaXN1
YWxWaWV3cG9ydFNjcm9sbEV2ZW50KCkKIHsKICAgICBpZiAoIW1fbmVlZHNWaXN1YWxWaWV3cG9y
dFNjcm9sbEV2ZW50KQotICAgICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAg
ICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwpOwog
ICAgIG1fbmVlZHNWaXN1YWxWaWV3cG9ydFNjcm9sbEV2ZW50ID0gdHJ1ZTsKIH0KIApAQCAtNjQz
NywxMCArNjQzNywxMCBAQCB2b2lkIERvY3VtZW50OjpyZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXJDYWxsYmFja3MoKQogICAgICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci0+cmVzdW1lKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9u
RnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzIHRpbWVzdGFtcCkKK3ZvaWQg
RG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKQogewotICAg
IGlmIChtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcikKLSAgICAgICAgbV9zY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXItPnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3Mo
dGltZXN0YW1wKTsKKyAgICBpZiAobV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIgJiYgZG9t
V2luZG93KCkpCisgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5zZXJ2aWNl
UmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKGRvbVdpbmRvdygpLT5mcm96ZW5Ob3dUaW1l
c3RhbXAoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0
Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCkBAIC03NTMzLDEzICs3NTMzLDIzIEBAIHZvaWQgRG9j
dW1lbnQ6OnJlbW92ZUR5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2UoSFRNTEltYWdlRWxl
bWVudCYgZWxlbWVudCkKICAgICBtX2R5bmFtaWNNZWRpYVF1ZXJ5RGVwZW5kZW50SW1hZ2VzLnJl
bW92ZShlbGVtZW50KTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoKQorI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCit2b2lkIERvY3VtZW50Ojpp
bnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJGaXJlZCgpCit7CisgICAgc2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50ZXJzZWN0aW9uT2Jz
ZXJ2YXRpb25zKTsKK30KKyNlbmRpZgorCit2b2lkIERvY3VtZW50OjpzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZShPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4gcmVxdWVzdGVkU3RlcHMpCiB7
CiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKLSAgICBtX2ludGVyc2VjdGlvbk9i
c2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdG9wKCk7CisgICAgaWYgKG1faW50ZXJzZWN0aW9u
T2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpIHsKKyAgICAgICAgbV9pbnRl
cnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXIuc3RvcCgpOworICAgICAgICByZXF1
ZXN0ZWRTdGVwcy5hZGQoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50ZXJzZWN0aW9uT2JzZXJ2YXRp
b25zKTsKKyAgICB9CiAjZW5kaWYKICAgICBpZiAoYXV0byBwYWdlID0gdGhpcy0+cGFnZSgpKQot
ICAgICAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5z
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShyZXF1ZXN0ZWRTdGVwcyk7CiB9CiAKICNpZiBFTkFCTEUo
SU5URVJTRUNUSU9OX09CU0VSVkVSKQpAQCAtNzc2NCw3ICs3Nzc0LDcgQEAgdm9pZCBEb2N1bWVu
dDo6dXBkYXRlSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25zKCkKIHZvaWQgRG9jdW1lbnQ6OnNjaGVk
dWxlSW5pdGlhbEludGVyc2VjdGlvbk9ic2VydmF0aW9uVXBkYXRlKCkKIHsKICAgICBpZiAobV9y
ZWFkeVN0YXRlID09IENvbXBsZXRlKQotICAgICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgp
OworICAgICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpJ
bnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMpOwogICAgIGVsc2UgaWYgKCFtX2ludGVyc2VjdGlvbk9i
c2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2ludGVyc2Vj
dGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdGFydE9uZVNob3QoaW50ZXJzZWN0aW9u
T2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZURlbGF5KTsKIH0KQEAgLTc4NTYsNyArNzg2Niw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucyhQYWdlJiBwYWdlKQogICAgICAg
ICBnZXRQYXJzZXJMb2NhdGlvbih1cmwsIGxpbmUsIGNvbHVtbik7CiAgICAgICAgIHJlcG9ydEV4
Y2VwdGlvbigiUmVzaXplT2JzZXJ2ZXIgbG9vcCBjb21wbGV0ZWQgd2l0aCB1bmRlbGl2ZXJlZCBu
b3RpZmljYXRpb25zLiIsIGxpbmUsIGNvbHVtbiwgdXJsLCBudWxscHRyLCBudWxscHRyKTsKICAg
ICAgICAgLy8gU3RhcnRpbmcgYSBuZXcgc2NoZWR1bGUgdGhlIG5leHQgcm91bmQgb2Ygbm90aWZ5
LgotICAgICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVJl
bmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZhdGlvbnMpOwog
ICAgIH0KIH0KIApAQCAtODE0MCw2ICs4MTUwLDE1IEBAIERvY3VtZW50VGltZWxpbmVzQ29udHJv
bGxlciYgRG9jdW1lbnQ6OmVuc3VyZVRpbWVsaW5lc0NvbnRyb2xsZXIoKQogICAgIHJldHVybiAq
bV90aW1lbGluZXNDb250cm9sbGVyLmdldCgpOwogfQogCit2b2lkIERvY3VtZW50Ojp1cGRhdGVB
bmltYXRpb25zQW5kU2VuZEV2ZW50cygpCit7CisgICAgaWYgKCFkb21XaW5kb3coKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lc0NvbnRyb2xsZXIgPSB0aGlzLT50
aW1lbGluZXNDb250cm9sbGVyKCkpCisgICAgICAgIHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0
ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKGRvbVdpbmRvdygpLT5mcm96ZW5Ob3dUaW1lc3RhbXAo
KSk7Cit9CisKIERvY3VtZW50VGltZWxpbmUmIERvY3VtZW50Ojp0aW1lbGluZSgpCiB7CiAgICAg
aWYgKCFtX3RpbWVsaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1YWMyZjk5NGUxZjNjODlm
YWE1MjliMmU1OGE5MThkMzAxOTQyMjFhLi45YzhjYjBjMWViMjcyMGQ0NGMzNTE5MTE4MzVkNmU5
Y2Q2MjkzYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMjM5LDYgKzIzOSw3IEBAIGVudW0g
Q29sbGVjdGlvblR5cGU7CiAKIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhf
dDsKIGVudW0gY2xhc3MgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA6IHVpbnQ4X3Q7Citl
bnVtIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVN0ZXAgOiB1aW50MTZfdDsKIAogdXNpbmcgUGxhdGZv
cm1EaXNwbGF5SUQgPSB1aW50MzJfdDsKIApAQCAtMTA2OSw3ICsxMDcwLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwog
ICAgIHZvaWQgcmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAK
LSAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJl
c29sdXRpb25TZWNvbmRzKTsKKyAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVD
YWxsYmFja3MoKTsKIAogICAgIHZvaWQgd2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlz
cGxheUlEKTsKIApAQCAtMTM5NSw3ICsxMzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRHlu
YW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdm9p
ZCByZW1vdmVEeW5hbWljTWVkaWFRdWVyeURlcGVuZGVudEltYWdlKEhUTUxJbWFnZUVsZW1lbnQm
KTsKIAotICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPik7CiAKICNp
ZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQogICAgIHZvaWQgYWRkSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIoSW50ZXJzZWN0aW9uT2JzZXJ2ZXImKTsKQEAgLTE0ODUsNiArMTQ4Niw3IEBAIHB1
YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VMaXN0ZW5l
cihSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+JiYpOyAvLyBGb3IgdGVzdGluZy4KIAorICAgIHZvaWQg
dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1
bWVudFRpbWVsaW5lJiB0aW1lbGluZSgpOwogICAgIERvY3VtZW50VGltZWxpbmUqIGV4aXN0aW5n
VGltZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lLmdldCgpOyB9CiAgICAgVmVjdG9y
PFJlZlB0cjxXZWJBbmltYXRpb24+PiBnZXRBbmltYXRpb25zKCk7CkBAIC0xNjQ3LDYgKzE2NDks
OCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBtb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnRT
bG93Q2FzZShOb2RlJiwgRG9jdW1lbnQmKTsKIAorICAgIHZvaWQgaW50ZXJzZWN0aW9uT2JzZXJ2
ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyRmlyZWQoKTsKKwogICAgIHZvaWQgbG9hZEV2ZW50RGVsYXlU
aW1lckZpcmVkKCk7CiAKICAgICB2b2lkIHBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggYTI4ZGQyNjdlMDE1ZDg1MGQ5Yzc3MDdhODA2YWM1ZmExNjdhNTNiMy4uMzYxMmJkZjgwOWNm
OGQ4YTkyOTlmMmYwOTc1NzRkMzViMjYzMDZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCB2
b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVBbmltYXRpb24oKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAg
ICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgcGFnZS0+c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9uRnJhbWVDYWxs
YmFja3MpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMDc5
NzBjYjFjZDg4NGYyNmRhNDlhMDkwNDQ2OTJlNzVhOGI2YzgxMC4uNDkzNWI3M2UyZWY2MTVjYjVi
MmYwNzU1NGVlYTIwZDRjMDZkNjU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cApAQCAtMzE1Myw3ICszMTUzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnNjaGVkdWxlQ3Vyc29y
VXBkYXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXNTY2hlZHVsZWRDdXJzb3JVcGRh
dGUgPSB0cnVlOwotICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgcGFn
ZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6Q3Vyc29yVXBk
YXRlKTsKIH0KIAogdm9pZCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
U29vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMzU3ZDJhMTI1ZDdhNTFhNTkx
NjhhZjFmOGEyNjAxYjhjZGZjNzMyZC4uYWEwZTIxYmZkOWQ0NzZlM2E0ZjVkMmRiYTUzNDJiZmNi
Yjg5NzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNTQzNSw3ICs1NDM1LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnNldFZpZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+
IHZpZXdFeHBvc2VkUmVjdCkKICAgICB9CiAKICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lKCku
cGFnZSgpKSB7Ci0gICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
ICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Okxh
eWVyRmx1c2gpOwogICAgICAgICBwYWdlLT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFu
Z2VWaWV3RXhwb3NlZFJlY3QoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkYzkx
NWQ2ZTVlMjc4NzFmMGJlMTY0NmViMTQ0M2ViMTNmYzY4ZTQxLi41ZTA3MmM4M2U5ZTRjNDI3NDFm
ZGNmMjg5MTA2ZGY3YThjN2ZiMTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE0NCw2ICsxNDQs
NyBAQAogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
QmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJH
RVQpCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgpAQCAtNTk2LDcgKzU5Nyw3IEBAIHZv
aWQgUGFnZTo6dXBkYXRlU3R5bGVBZnRlckNoYW5nZUluRW52aXJvbm1lbnQoKQogICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+aW52YWxpZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpOwog
ICAgICAgICBkb2N1bWVudC5zY2hlZHVsZUZ1bGxTdHlsZVJlYnVpbGQoKTsKICAgICAgICAgZG9j
dW1lbnQuc3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOwotICAg
ICAgICBkb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBkb2N1bWVu
dC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpNZWRpYVF1ZXJ5
RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKQEAgLTE0MDYsMTUgKzE0MDcsMzAgQEAgdm9pZCBQ
YWdlOjpsYXlvdXRJZk5lZWRlZCgpCiAgICAgICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxl
SWZOZWVkZWRSZWN1cnNpdmUoKTsKIH0KIAotdm9pZCBQYWdlOjpzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxSZW5k
ZXJpbmdVcGRhdGVTdGVwPiByZXF1ZXN0ZWRTdGVwcykKIHsKLSAgICBpZiAoY2hyb21lKCkuY2xp
ZW50KCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSkKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZl
bnRMb29wLCBzdHJlYW0gPDwgIlBhZ2UgIiA8PCB0aGlzIDw8ICIgc2NoZWR1bGVUaW1lZFJlbmRl
cmluZ1VwZGF0ZSgpIC0gcmVxdWVzdGVkU3RlcHMgIiA8PCByZXF1ZXN0ZWRTdGVwcyA8PCAiIHJl
bWFpbmluZyBzdGVwcyAiIDw8IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMpOworICAg
IGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmlzRW1wdHkoKSkgeworICAgICAg
ICBpZiAoY2hyb21lKCkuY2xpZW50KCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCkuc2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKICAgICAgICAgcmV0dXJuOwotICAgIHJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgfQorICAgIGNvbXB1
dGVVbmZ1bGZpbGxlZFJlbmRlcmluZ1N0ZXBzKHJlcXVlc3RlZFN0ZXBzKTsKK30KKwordm9pZCBQ
YWdlOjpjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyhPcHRpb25TZXQ8UmVuZGVyaW5n
VXBkYXRlU3RlcD4gcmVxdWVzdGVkU3RlcHMpCit7CisgICAgLy8gbV9yZW5kZXJpbmdVcGRhdGVS
ZW1haW5pbmdTdGVwcyBvbmx5IGhhcyBtb3JlIHRoYW4gb25lIGVudHJ5IGZvciB0aGUgcmUtZW50
cmFudCByZW5kZXJpbmcgdXBkYXRlIHRyaWdnZXJlZCBieSB0ZXN0aW5nLgorICAgIC8vIEZvciBz
Y2hlZHVsaW5nLCB3ZSBvbmx5IGNhcmUgYWJvdXQgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbnRy
eS4KKyAgICBhdXRvIHJlbWFpbmluZ1N0ZXBzID0gbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdT
dGVwc1swXTsKKyAgICBhdXRvIHN0ZXBzRm9yTmV4dFVwZGF0ZSA9IHJlcXVlc3RlZFN0ZXBzIC0g
cmVtYWluaW5nU3RlcHM7CisgICAgbV91bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzLmFkZChzdGVw
c0Zvck5leHRVcGRhdGUpOwogfQogCiB2b2lkIFBhZ2U6OnRyaWdnZXJSZW5kZXJpbmdVcGRhdGVG
b3JUZXN0aW5nKCkKIHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwg
IlBhZ2UgIiA8PCB0aGlzIDw8ICIgdHJpZ2dlclJlbmRlcmluZ1VwZGF0ZUZvclRlc3RpbmcoKSIp
OwogICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnRyaWdnZXJSZW5kZXJpbmdVcGRhdGVG
b3JUZXN0aW5nKCk7CiB9CiAKQEAgLTE0MzIsMTIgKzE0NDgsMTggQEAgdW5zaWduZWQgUGFnZTo6
cmVuZGVyaW5nVXBkYXRlQ291bnQoKSBjb25zdAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBpcy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5nCiB2b2lk
IFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiB7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0
YWNrLmFwcGVuZChSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOworICAg
IExPRyhFdmVudExvb3AsICJQYWdlICVwIHVwZGF0ZVJlbmRlcmluZygpIC0gcmUtZW50ZXJpbmcg
JWQiLCB0aGlzLCAhbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5pc0VtcHR5KCkpOwor
CisgICAgaWYgKG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgpKQorICAg
ICAgICBtX3VuZnVsZmlsbGVkUmVxdWVzdGVkU3RlcHMgPSB7IH07CisKKyAgICBtX3JlbmRlcmlu
Z1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmFwcGVuZChhbGxSZW5kZXJpbmdVcGRhdGVTdGVwcyk7CiAK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCByZWVudHJhbnQsIGUuZy4gYSByQUYgY2FsbGJh
Y2sgbWF5IHRyaWdnZXIgYSBmb3JjZXMgcmVwYWludCBpbiB0ZXN0aW5nLgotICAgIC8vIFRoaXMg
aXMgd2h5IHdlIHRyYWNrIHVwZGF0ZVJlbmRlcmluZ1BoYXNlIGFzIGEgc3RhY2suCi0gICAgaWYg
KG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5zaXplKCkgPiAxKSB7CisgICAgLy8gVGhpcyBp
cyB3aHkgd2UgdHJhY2sgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcyBhcyBhIHN0YWNr
LgorICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLnNpemUoKSA+IDEpIHsK
ICAgICAgICAgbGF5b3V0SWZOZWVkZWQoKTsKKyAgICAgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1h
aW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKHVwZGF0ZVJlbmRlcmluZ1N0ZXBzKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTQ2MSw1OCArMTQ4Myw2NCBAQCB2b2lkIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpCiAgICAgICAgIGluaXRpYWxEb2N1bWVudHMuYXBwZW5kKG1ha2VXZWFrUHRy
KCZkb2N1bWVudCkpOwogICAgIH0pOwogCi0gICAgLy8gRmx1c2ggYXV0b2ZvY3VzIGNhbmRpZGF0
ZXMKKyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAg
c3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1
bmN0aW9uKSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgp
LnJlbW92ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rp
b24pOworICAgIH07CiAKLSAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVu
dCkgeworICAgIC8vIEZJWE1FOiBGbHVzaCBhdXRvZm9jdXMgY2FuZGlkYXRlcy4KKworICAgIHJ1
blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSwgW10gKERvY3VtZW50
JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC5ydW5SZXNpemVTdGVwcygpOwogICAgIH0p
OwogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBy
dW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGwsIFtdIChEb2N1bWVu
dCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQucnVuU2Nyb2xsU3RlcHMoKTsKICAgICB9
KTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAg
cnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2YWx1YXRp
b24sIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQuZXZhbHVhdGVN
ZWRpYVF1ZXJpZXNBbmRSZXBvcnRDaGFuZ2VzKCk7ICAgICAgICAKICAgICB9KTsKIAotICAgIGZv
ckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0gICAgICAgIGlmICghZG9j
dW1lbnQuZG9tV2luZG93KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gdGlt
ZXN0YW1wID0gZG9jdW1lbnQuZG9tV2luZG93KCktPmZyb3plbk5vd1RpbWVzdGFtcCgpOwotICAg
ICAgICBpZiAoYXV0byogdGltZWxpbmVzQ29udHJvbGxlciA9IGRvY3VtZW50LnRpbWVsaW5lc0Nv
bnRyb2xsZXIoKSkKLSAgICAgICAgICAgIHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzKHRpbWVzdGFtcCk7Ci0gICAgICAgIC8vIEZJWE1FOiBSdW4gdGhl
IGZ1bGxzY3JlZW4gc3RlcHMuCi0gICAgICAgIGRvY3VtZW50LnNlcnZpY2VSZXF1ZXN0QW5pbWF0
aW9uRnJhbWVDYWxsYmFja3ModGltZXN0YW1wKTsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5k
ZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25zLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Cisg
ICAgICAgIGRvY3VtZW50LnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7CisgICAgfSk7
CisKKyAgICAvLyBGSVhNRTogUnVuIHRoZSBmdWxsc2NyZWVuIHN0ZXBzLgorICAgIG1fcmVuZGVy
aW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVw
OjpGdWxsc2NyZWVuKTsKKworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0
ZXA6OkFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Cisg
ICAgICAgIGRvY3VtZW50LnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKTsK
ICAgICB9KTsKIAogICAgIGxheW91dElmTmVlZGVkKCk7CiAKICNpZiBFTkFCTEUoSU5URVJTRUNU
SU9OX09CU0VSVkVSKQotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50
KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50ZXJzZWN0
aW9uT2JzZXJ2YXRpb25zLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3Vt
ZW50LnVwZGF0ZUludGVyc2VjdGlvbk9ic2VydmF0aW9ucygpOwogICAgIH0pOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQotICAgIGZvckVhY2hEb2N1bWVudChbJl0gKERv
Y3VtZW50JiBkb2N1bWVudCkgeworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9ucywgWyZdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAg
ICAgICAgZG9jdW1lbnQudXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKCp0aGlzKTsKICAgICB9KTsK
ICNlbmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsK
KyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbWFnZXMsIFtdIChE
b2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRvY3VtZW50
LmNhY2hlZFJlc291cmNlTG9hZGVyKCkuYWxsQ2FjaGVkU1ZHSW1hZ2VzKCkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvKiBwYWdlID0gaW1hZ2UtPmludGVybmFsUGFnZSgpKQogICAgICAgICAgICAg
ICAgIHBhZ2UtPmlzb2xhdGVkVXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgICAgIH0KICAgICB9KTsK
IAotICAgIEFTU0VSVChtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID09IFJlbmRl
cmluZ1VwZGF0ZVBoYXNlOjpJblVwZGF0ZVJlbmRlcmluZyk7Ci0KICAgICBmb3IgKGF1dG8mIGRv
Y3VtZW50IDogaW5pdGlhbERvY3VtZW50cykgewogICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9j
dW1lbnQtPmRvbVdpbmRvdygpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT51
bmZyZWV6ZU5vd1RpbWVzdGFtcCgpOwogICAgIH0KIAorICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVt
YWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVlbEV2ZW50
TW9uaXRvckNhbGxiYWNrcyk7CisKICAgICBpZiAoVU5MSUtFTFkoaXNNb25pdG9yaW5nV2hlZWxF
dmVudHMoKSkpCiAgICAgICAgIHdoZWVsRXZlbnRUZXN0TW9uaXRvcigpLT5jaGVja1Nob3VsZEZp
cmVDYWxsYmFja3MoKTsKIApAQCAtMTUyNCwyMCArMTU1MiwxNyBAQCB2b2lkIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpCiAKICAgICBpZiAoIWlzU1ZHSW1hZ2VQYWdlKQogICAgICAgICB0cmFjZVBv
aW50KFJlbmRlcmluZ1VwZGF0ZUVuZCk7Ci0KLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQ
aGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJp
bmcpOwogfQogCiB2b2lkIFBhZ2U6Omlzb2xhdGVkVXBkYXRlUmVuZGVyaW5nKCkKIHsKKyAgICBM
T0coRXZlbnRMb29wLCAiUGFnZSAlcCBpc29sYXRlZFVwZGF0ZVJlbmRlcmluZygpIiwgdGhpcyk7
CiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNr
LnJlbW92ZUxhc3QoKTsKKyAgICByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKIH0KIAogdm9p
ZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKIHsKLSAgICBBU1NFUlQobV91cGRhdGVS
ZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRh
dGVSZW5kZXJpbmcpOwotCiAgICAgLy8gQ29kZSBoZXJlIHNob3VsZCBkbyBvbmNlLXBlci1mcmFt
ZSB3b3JrIHRoYXQgbmVlZHMgdG8gYmUgZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFuZCByZXF1aXJl
cwogICAgIC8vIGxheW91dCB0byBiZSB1cC10by1kYXRlLiBJdCBzaG91bGQgbm90IHJ1biBzY3Jp
cHQsIHRyaWdnZXIgbGF5b3V0LCBvciBkaXJ0eSBsYXlvdXQuCiAKQEAgLTE1NTAsNyArMTU3NSwx
MiBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIH0KICNlbmRpZgog
Ci0gICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBhdXRv
IHJ1blByb2Nlc3NpbmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3Qg
V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7Cisg
ICAgICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShzdGVw
KTsKKyAgICAgICAgZm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24pOworICAgIH07
CisKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJzb3JVcGRh
dGUsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRh
dGVDdXJzb3JJZk5lZWRlZCgpOwogICAgIH0pOwpAQCAtMTU2OSw2ICsxNTk5LDggQEAgdm9pZCBQ
YWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICB9KTsKICNlbmRpZgogCisgICAgbV9y
ZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlKTsKKwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQogICAgIC8vIHVwZGF0ZVRvdWNoRXZlbnRSZWdpb25zKCkgbmVlZHMgdG8gYmUgY2FsbGVkIG9u
bHkgb24gdGhlIHRvcCBkb2N1bWVudC4KICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVu
dCA9IG1haW5GcmFtZSgpLmRvY3VtZW50KCkpCkBAIC0xNTkxLDEzICsxNjIzLDExIEBAIHZvaWQg
UGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIEFTU0VSVCghZnJhbWVWaWV3
IHx8ICFmcmFtZVZpZXctPm5lZWRzTGF5b3V0KCkpOwogICAgIH0KICNlbmRpZgotCi0gICAgQVNT
RVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRl
UGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKIH0KIAogdm9pZCBQYWdlOjpmaW5hbGl6ZVJlbmRl
cmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3Mp
CiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVu
ZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5nKTsKKyAgICBMT0coRXZlbnRMb29w
LCAiUGFnZSAlcCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZSgpIiwgdGhpcyk7CiAKICAgICBhdXRv
KiB2aWV3ID0gbWFpbkZyYW1lKCkudmlldygpOwogICAgIGlmICghdmlldykKQEAgLTE2MDYsMjMg
KzE2MzYsMzYgQEAgdm9pZCBQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8
RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3MKICAgICBpZiAoZmxhZ3MuY29udGFp
bnMoRmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFnczo6SW52YWxpZGF0ZUltYWdlc1dpdGhBc3lu
Y0RlY29kZXMpKQogICAgICAgICB2aWV3LT5pbnZhbGlkYXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2Rl
cygpOwogCi0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmlu
Z1VwZGF0ZVBoYXNlOjpMYXllckZsdXNoaW5nOworICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWlu
aW5nU3RlcHMubGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNoKTsK
IAogICAgIHZpZXctPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwog
Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmluZ1VwZGF0
ZVBoYXNlOjpQb3N0TGF5ZXJGbHVzaDsKLQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisg
ICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1RyZWVVcGRhdGUpOworCiAgICAgaWYgKGF1dG8qIHNjcm9s
bGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewogICAgICAg
ICBzY3JvbGxpbmdDb29yZGluYXRvci0+Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKTsKICAgICAg
ICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZpbmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5
U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKSkKICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5hcHBseVNjcm9sbGluZ1RyZWVMYXllclBvc2l0aW9ucygpOwotICAgICAgICAgICAg
CisKICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmRpZENvbXBsZXRlUmVuZGVyaW5nVXBk
YXRlKCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2su
cmVtb3ZlTGFzdCgpOworICAgIEFTU0VSVChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBz
Lmxhc3QoKS5pc0VtcHR5KCkpOworICAgIHJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCgpOworfQor
Cit2b2lkIFBhZ2U6OnJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgbV9yZW5kZXJp
bmdVcGRhdGVSZW1haW5pbmdTdGVwcy5yZW1vdmVMYXN0KCk7CisKKyAgICBMT0dfV0lUSF9TVFJF
QU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlBhZ2UgIiA8PCB0aGlzIDw8ICIgcmVuZGVyaW5nVXBk
YXRlQ29tcGxldGVkKCkgLSBzdGVwcyAiIDw8IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3Rl
cHMgPDwgIiB1bmZ1bGZpbGxlZCBzdGVwcyAiIDw8IG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVw
cyk7CisKKyAgICBpZiAobV91bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzKSB7CisgICAgICAgIHJl
bmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAg
ICAgIG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwcyA9IHsgfTsKKyAgICB9CiB9CiAKIHZvaWQg
UGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9ucygpCkBAIC0yOTI2LDcgKzI5NjksNyBAQCB2
b2lkIFBhZ2U6OmFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpCiAgICAgZm9yRWFjaERv
Y3VtZW50KFtdIChhdXRvJiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC5zdHlsZVNjb3Bl
KCkuZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UoKTsK
ICAgICAgICAgZG9jdW1lbnQudXBkYXRlRWxlbWVudHNBZmZlY3RlZEJ5TWVkaWFRdWVyaWVzKCk7
Ci0gICAgICAgIGRvY3VtZW50LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIGRv
Y3VtZW50LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlh
UXVlcnlFdmFsdWF0aW9uKTsKICAgICB9KTsKIH0KIApAQCAtMjkzNiw3ICsyOTc5LDcgQEAgdm9p
ZCBQYWdlOjphcHBlYXJhbmNlRGlkQ2hhbmdlKCkKICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29w
ZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOwogICAgICAgICBkb2N1bWVudC5z
dHlsZVNjb3BlKCkuZXZhbHVhdGVNZWRpYVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hhbmdlKCk7CiAg
ICAgICAgIGRvY3VtZW50LnVwZGF0ZUVsZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllcygpOwot
ICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBkb2N1
bWVudC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpNZWRpYVF1
ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9CiAKQEAgLTMzMDEsNCArMzM0NCwyOSBAQCB2b2lk
IFBhZ2U6Om1haW5GcmFtZURpZENoYW5nZVRvTm9uSW5pdGlhbEVtcHR5RG9jdW1lbnQoKQogICAg
IG1fdXNlclN0eWxlU2hlZXRzUGVuZGluZ0luamVjdGlvbi5jbGVhcigpOwogfQogCitXVEY6OlRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiB0cywgUmVuZGVyaW5nVXBkYXRl
U3RlcCBzdGVwKQoreworICAgIHN3aXRjaCAoc3RlcCkgeworICAgIGNhc2UgUmVuZGVyaW5nVXBk
YXRlU3RlcDo6UmVzaXplOiB0cyA8PCAiUmVzaXplIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJp
bmdVcGRhdGVTdGVwOjpTY3JvbGw6IHRzIDw8ICJTY3JvbGwiOyBicmVhazsKKyAgICBjYXNlIFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uOiB0cyA8PCAiTWVkaWFRdWVy
eUV2YWx1YXRpb24iOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1h
dGlvbnM6IHRzIDw8ICJBbmltYXRpb25zIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpGdWxsc2NyZWVuOiB0cyA8PCAiRnVsbHNjcmVlbiI7IGJyZWFrOworICAgIGNhc2Ug
UmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9uRnJhbWVDYWxsYmFja3M6IHRzIDw8ICJBbmlt
YXRpb25GcmFtZUNhbGxiYWNrcyI7IGJyZWFrOworI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JT
RVJWRVIpCisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbnRlcnNlY3Rpb25PYnNlcnZh
dGlvbnM6IHRzIDw8ICJJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMiOyBicmVhazsKKyNlbmRpZgor
I2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVw
OjpSZXNpemVPYnNlcnZhdGlvbnM6IHRzIDw8ICJSZXNpemVPYnNlcnZhdGlvbnMiOyBicmVhazsK
KyNlbmRpZgorICAgIGNhc2UgUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzOiB0cyA8PCAiSW1h
Z2VzIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVlbEV2ZW50TW9u
aXRvckNhbGxiYWNrczogdHMgPDwgIldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzIjsgYnJlYWs7
CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJzb3JVcGRhdGU6IHRzIDw8ICJDdXJz
b3JVcGRhdGUiOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkV2ZW50UmVn
aW9uVXBkYXRlOiB0cyA8PCAiRXZlbnRSZWdpb25VcGRhdGUiOyBicmVhazsKKyAgICBjYXNlIFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2g6IHRzIDw8ICJMYXllckZsdXNoIjsgYnJlYWs7
CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlOiB0cyA8
PCAiU2Nyb2xsaW5nVHJlZVVwZGF0ZSI7IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYWNiOTcwZmNjNTFi
YmEwZjVhMGFmNmQzYWJjZjYzNmQxNzI3NzUyYS4uYTAyMGU4ODFhMjZhZTY1MWY1NTE0NjIwMTVk
ODRjZWE5NzI1YTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTc0LDYgKzc0LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgRGVidWdnZXI7CiB9CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4
dFN0cmVhbTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSURCQ2xpZW50
IHsKQEAgLTE2OSw2ICsxNzMsNTIgQEAgZW51bSBjbGFzcyBGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0
ZUZsYWdzIDogdWludDhfdCB7CiAgICAgSW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMg
ICAgPSAxIDw8IDEsCiB9OwogCitlbnVtIGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVN0ZXAgOiB1aW50
MTZfdCB7CisgICAgUmVzaXplICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAg
ICBTY3JvbGwgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAxLAorICAgIE1lZGlhUXVl
cnlFdmFsdWF0aW9uICAgICAgICAgICAgPSAxIDw8IDIsCisgICAgQW5pbWF0aW9ucyAgICAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgMywKKyAgICBGdWxsc2NyZWVuICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCA0LAorICAgIEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzICAgICAgICAgPSAxIDw8
IDUsCisjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKKyAgICBJbnRlcnNlY3Rpb25P
YnNlcnZhdGlvbnMgICAgICAgID0gMSA8PCA2LAorI2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9P
QlNFUlZFUikKKyAgICBSZXNpemVPYnNlcnZhdGlvbnMgICAgICAgICAgICAgID0gMSA8PCA3LAor
I2VuZGlmCisgICAgSW1hZ2VzICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKKyAg
ICBXaGVlbEV2ZW50TW9uaXRvckNhbGxiYWNrcyAgICAgID0gMSA8PCA5LAorICAgIEN1cnNvclVw
ZGF0ZSAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEwLAorICAgIEV2ZW50UmVnaW9uVXBkYXRl
ICAgICAgICAgICAgICAgPSAxIDw8IDExLAorICAgIExheWVyRmx1c2ggICAgICAgICAgICAgICAg
ICAgICAgPSAxIDw8IDEyLAorICAgIFNjcm9sbGluZ1RyZWVVcGRhdGUgICAgICAgICAgICAgPSAx
IDw8IDEzLAorfTsKKworY29uc3RleHByIE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiB1
cGRhdGVSZW5kZXJpbmdTdGVwcyA9IHsKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUs
CisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0
ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1h
dGlvbnMsCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6RnVsbHNjcmVlbiwKKyAgICBSZW5kZXJp
bmdVcGRhdGVTdGVwOjpBbmltYXRpb25GcmFtZUNhbGxiYWNrcywKKyNpZiBFTkFCTEUoSU5URVJT
RUNUSU9OX09CU0VSVkVSKQorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9i
c2VydmF0aW9ucywKKyNlbmRpZgorI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisgICAgUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplT2JzZXJ2YXRpb25zLAorI2VuZGlmCisgICAgUmVuZGVy
aW5nVXBkYXRlU3RlcDo6SW1hZ2VzLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZl
bnRNb25pdG9yQ2FsbGJhY2tzLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkN1cnNvclVwZGF0
ZSwKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpFdmVudFJlZ2lvblVwZGF0ZSwKK307CisKK2Nv
bnN0ZXhwciBhdXRvIGFsbFJlbmRlcmluZ1VwZGF0ZVN0ZXBzID0gdXBkYXRlUmVuZGVyaW5nU3Rl
cHMgfCBPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4geworICAgIFJlbmRlcmluZ1VwZGF0
ZVN0ZXA6OkxheWVyRmx1c2gsCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsaW5nVHJl
ZVVwZGF0ZSwKK307CisKKwogY2xhc3MgUGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdl
PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFBhZ2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQYWdlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTQ4OSw3ICs1MzksNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0
ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4pOwogCiAgICAgLy8gU2No
ZWR1bGUgYSByZXJuZGVyaW5nIHVwZGF0ZSB0aGF0IGNvb3JkaW5hdGVzIHdpdGggZGlzcGxheSBy
ZWZyZXNoLgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlv
blNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiByZXF1ZXN0ZWRTdGVwcyk7CiAgICAgLy8gVHJpZ2dl
ciBhIHJlbmRlcmluZyB1cGRhdGUgaW4gdGhlIGN1cnJlbnQgcnVubG9vcC4gT25seSB1c2VkIGZv
ciB0ZXN0aW5nLgogICAgIHZvaWQgdHJpZ2dlclJlbmRlcmluZ1VwZGF0ZUZvclRlc3RpbmcoKTsK
IApAQCAtNzcxLDEzICs4MjEsNiBAQCBwdWJsaWM6CiAgICAgTW9ub3RvbmljVGltZSBsYXN0UmVu
ZGVyaW5nVXBkYXRlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UmVuZGVyaW5nVXBk
YXRlVGltZXN0YW1wOyB9CiAKIHByaXZhdGU6Ci0gICAgZW51bSBjbGFzcyBSZW5kZXJpbmdVcGRh
dGVQaGFzZSA6IHVpbnQ4X3QgewotICAgICAgICBPdXRzaWRlLAotICAgICAgICBJblVwZGF0ZVJl
bmRlcmluZywKLSAgICAgICAgTGF5ZXJGbHVzaGluZywKLSAgICAgICAgUG9zdExheWVyRmx1c2gK
LSAgICB9OwotCiAgICAgc3RydWN0IE5hdmlnYXRpb24gewogICAgICAgICBSZWdpc3RyYWJsZURv
bWFpbiBkb21haW47CiAgICAgICAgIEZyYW1lTG9hZFR5cGUgdHlwZTsKQEAgLTgxMyw2ICs4NTYs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNl
VGltZXJGaXJlZCgpOwogCiAgICAgdm9pZCBkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCk7CisgICAg
dm9pZCByZW5kZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKKyAgICB2b2lkIGNvbXB1dGVVbmZ1bGZp
bGxlZFJlbmRlcmluZ1N0ZXBzKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPik7CiAKICAg
ICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXImIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpOwog
CkBAIC0xMDIyLDggKzEwNjcsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0VkaXRhYmxlUmVn
aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAjZW5kaWYKIAotICAgIFZlY3RvcjxSZW5kZXJpbmdVcGRh
dGVQaGFzZSwgMj4gbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrOwotCisgICAgVmVjdG9yPE9w
dGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiwgMj4gbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5p
bmdTdGVwczsKKyAgICBPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4gbV91bmZ1bGZpbGxl
ZFJlcXVlc3RlZFN0ZXBzOworICAgIAogICAgIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
bV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsgVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbjo6TFRSIH07CiAgICAgCiAgICAgLy8gRm9yIHRlc3RpbmcuCkBAIC0xMDg1LDQgKzExMzEs
NiBAQCBpbmxpbmUgUGFnZUdyb3VwJiBQYWdlOjpncm91cCgpCiAgICAgcmV0dXJuICptX2dyb3Vw
OwogfQogCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgUmVu
ZGVyaW5nVXBkYXRlU3RlcCk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcAppbmRleCA1YjQ3OGE0NTQwY2E4
ODBmYzQxMmM0ZWE4YjEyNjliZTA2OTEwMmRkLi45NjcxZmQ1MWYzODlmNWE5NmQyOTM5OWI3NTEz
YjNkNjg0YTAwZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRy
b2xsZXIuY3BwCkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6
OmRpZENoYW5nZURldmljZVNjYWxlRmFjdG9yKCkKIAogdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xs
ZXI6OmRpZENoYW5nZVZpZXdFeHBvc2VkUmVjdCgpCiB7Ci0gICAgbV9wYWdlLnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKCk7CisgICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRl
cmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJv
bGxlcjo6ZGlkU2Nyb2xsRnJhbWUoRnJhbWUmIGZyYW1lKQpAQCAtNDEyLDcgKzQxMiw3IEBAIGZs
b2F0IFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2
b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFw
aGljc0xheWVyKikKIHsKLSAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAg
ICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5
ZXJGbHVzaCk7CiB9CiAKIHZvaWQgUGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VPdmVy
bGF5RnJhbWUoUGFnZU92ZXJsYXkmIG92ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHAKaW5kZXggN2U3MjRiMGNiYTJhYjhjZGE5YjU1
MDA0MmU1NjY2MDdjMmUyMzgzNC4uNTVhNmE2ZmRhODA5MjY2YTkwMmJkOTIyM2Q0N2UzMjIzNGFj
YWVhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1
bGVyLmNwcApAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2Vy
LmgiCisjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlIDx3
dGYvU3lzdGVtVHJhY2luZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCw3ICs2MCwxMSBAQCBib29sIFJlbmRlcmluZ1Vw
ZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVBbmltYXRpb24oRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJl
ZEZyYW1lcwogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICBzZXRQcmVmZXJyZWRG
cmFtZXNQZXJTZWNvbmQocHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kKTsKLSAgICByZXR1cm4gRGlz
cGxheVJlZnJlc2hNb25pdG9yTWFuYWdlcjo6c2hhcmVkTWFuYWdlcigpLnNjaGVkdWxlQW5pbWF0
aW9uKCp0aGlzKTsKKyAgICBhdXRvIHJlc3VsdCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFn
ZXI6OnNoYXJlZE1hbmFnZXIoKS5zY2hlZHVsZUFuaW1hdGlvbigqdGhpcyk7CisKKyAgICBMT0df
V0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
ciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzY2hlZHVsZUFuaW1hdGlvbigiIDw8IHByZWZl
cnJlZEZyYW1lc1BlclNlY29uZCA8PCAiZnBzKSAtIHNjaGVkdWxlZCAiIDw8IHJlc3VsdCk7CisK
KyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6
YWRqdXN0UmVuZGVyaW5nVXBkYXRlRnJlcXVlbmN5KCkKQEAgLTc3LDYgKzgzLDggQEAgdm9pZCBS
ZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmFkanVzdFJlbmRlcmluZ1VwZGF0ZUZyZXF1ZW5jeSgp
CiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZSgpCiB7CisgICAgTE9HX1dJVEhfU1RSRUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJSZW5kZXJp
bmdVcGRhdGVTY2hlZHVsZXIgZm9yIHBhZ2UgIiA8PCAmbV9wYWdlIDw8ICIgc2NoZWR1bGVUaW1l
ZFJlbmRlcmluZ1VwZGF0ZSgpIC0gYWxyZWFkeSBzY2hlZHVsZWQgIiA8PCBpc1NjaGVkdWxlZCgp
IDw8ICIgcGFnZSB2aXNpYmxlICIgPDwgbV9wYWdlLmlzVmlzaWJsZSgpKTsKKwogICAgIGlmIChp
c1NjaGVkdWxlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNiw2ICsxMTQsOCBAQCBib29s
IFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6aXNTY2hlZHVsZWQoKSBjb25zdAogICAgIAogdm9p
ZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsK
KyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0
ZVNjaGVkdWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2UgPDwgIiBzdGFydFRpbWVyKCIgPDwgZGVs
YXkgPDwgIikiKTsKKwogICAgIEFTU0VSVCghaXNTY2hlZHVsZWQoKSk7CiAgICAgbV9yZWZyZXNo
VGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7CiAgICAgbV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hv
dChkZWxheSk7CkBAIC0xMzMsNiArMTQzLDggQEAgdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQKIAog
dm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQoKQogewor
ICAgIExPR19XSVRIX1NUUkVBTShFdmVudExvb3AsIHN0cmVhbSA8PCAiUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyIGZvciBwYWdlICIgPDwgJm1fcGFnZSA8PCAiIGRpc3BsYXlSZWZyZXNoRmlyZWQo
KSIpOworCiAgICAgdHJhY2VQb2ludChUcmlnZ2VyUmVuZGVyaW5nVXBkYXRlKTsKIAogICAgIGNs
ZWFyU2NoZWR1bGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmlu
Z1VwZGF0ZVNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaAppbmRleCAzZjAyYjE0YzIwODQ5OGY3ODgzNmZjMThkZTkzOWVlM2ZiMTg3ZTRl
Li4yMDM4YTFhNTM1ZTJmNzFiYzM3ZDNjZjMyNjEzNGVmNjQ4NGQ1ZmYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmgKQEAgLTY1LDkgKzY1LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHRyaWdnZXJSZW5kZXJpbmdVcGRhdGUoKTsKIAogICAgIFBh
Z2UmIG1fcGFnZTsKLSAgICBib29sIG1fc2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGltZXI+IG1fcmVmcmVzaFRpbWVyOwogICAgIEZyYW1lc1BlclNlY29uZCBtX3By
ZWZlcnJlZEZyYW1lc1BlclNlY29uZCB7IEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCB9OworICAg
IGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxzZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZXNpemVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c2l6ZU9ic2VydmVyLmNwcAppbmRleCA2ODBiODM4NTgwNmI3MmY0NzYzM2UzZWVmNTkxNmQ3NTA4
YzAxY2ExLi41NTAwMzZiZTUwZTc4ZTQ2NjI4NmQzMTE3ZjVmOGExZGZmY2VkMjkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJl
c2l6ZU9ic2VydmVyOjpvYnNlcnZlKEVsZW1lbnQmIHRhcmdldCkKIAogICAgIGlmIChtX2RvY3Vt
ZW50KSB7CiAgICAgICAgIG1fZG9jdW1lbnQtPmFkZFJlc2l6ZU9ic2VydmVyKCp0aGlzKTsKLSAg
ICAgICAgbV9kb2N1bWVudC0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgbV9k
b2N1bWVudC0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVz
aXplT2JzZXJ2YXRpb25zKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hl
ZWxFdmVudFRlc3RNb25pdG9yLmNwcAppbmRleCAxZDEzZmM2MTk3MTAzZmRiMDFlZmM5NDNmYWMx
MDY1MjJjODEwNTY0Li4xNDc0MTc2ZTVmMDRmMGRiMTkxMzQwOGVjYjM0MGFmYjdjNTgzNjcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCkBAIC03
Miw3ICs3Miw3IEBAIHZvaWQgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tB
bmRTdGFydE1vbml0b3JpbmcoYm9vbCBleHBlY3RXaGVlbEVuCiAgICAgVU5VU0VEX1BBUkFNKGV4
cGVjdE1vbWVudHVtRW5kKTsKICNlbmRpZgogCi0gICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKCk7CisgICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1Vw
ZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzKTsKIAogICAgIExPR19XSVRIX1NU
UkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyAtIGV4cGVjdCBlbmQvY2Fu
Y2VsICIgPDwgZXhwZWN0V2hlZWxFbmRPckNhbmNlbCA8PCAiLCBleHBlY3QgbW9tZW50dW0gZW5k
ICIgPDwgZXhwZWN0TW9tZW50dW1FbmQpOwogfQpAQCAtMTIxLDEzICsxMjEsMTMgQEAgdm9pZCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnJlY2VpdmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50KQogdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNjaGVkdWxlQ2Fs
bGJhY2tDaGVjaygpCiB7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIG1fcGFn
ZS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFj
a3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKG1fcGFnZSldIHsKICAgICAgICAgaWYgKHdlYWtQ
YWdlKQotICAgICAgICAgICAgd2Vha1BhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7Cisg
ICAgICAgICAgICB3ZWFrUGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBk
YXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5t
bQppbmRleCBjYmY0Y2Q0ZjRhOWQyY2FmN2IzNjNjMDcxMzhmY2Q1NTZiMDI5ZDhhLi4zODJhNzgy
MWQ5OTQyNDE0MWVkNTI5MmNkMjM1Yzg2OTVkZjZhZGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTEyMSw3ICsx
MjEsNyBAQCB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5
Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheQogICAgIGlmICghbV9jb250cm9sbGVyKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRyb2xsZXItPnBhZ2UoKS5zY2hlZHVsZVJlbmRl
cmluZ1VwZGF0ZSgpOworICAgIG1fY29udHJvbGxlci0+cGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogfQogCiB2b2lkIFNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFw
aGljc0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYsIEdyYXBoaWNzTGF5ZXJQYWludEJlaGF2aW9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApp
bmRleCAyNDliYjk2OWYyOWU4ODM2M2U3NjJlMmY0MTBjYWYwNzM2MTE0NDNlLi5mMTM5MjM3MWJk
YjIzMzM1OGUzYjQ1M2U1MzVlYjM5YzJlOThkNzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApA
QCAtMTIzLDYgKzEyMyw3IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0RXZl
bnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSgpCiB7CiAgICAgbV9ldmVudFRyYWNraW5nUmVnaW9uc0Rp
cnR5ID0gdHJ1ZTsKICAgICAvLyBXZSBoYXZlIHRvIHNjaGVkdWxlIGEgY29tbWl0LCBidXQgdGhl
IGNvbXB1dGVkIG5vbi1mYXN0IHJlZ2lvbiBtYXkgbm90IGhhdmUgYWN0dWFsbHkgY2hhbmdlZC4K
KyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyB0byBkaXNhbWJpZ3VhdGUgYmV0d2VlbiBldmVudCBy
ZWdpb25zIGluIHRoZSBzY3JvbGxpbmcgdHJlZSwgYW5kIHRob3NlIGluIEdyYXBoaWNzTGF5ZXJz
LgogICAgIHNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5tbQppbmRleCA0NjM3YjVkNDM4NTIwN2I2NWI5MjhiMmVjOWMyZDRmZjQ3ZGY1YzIwLi5iNDlm
MTBjOWZjYzBmYWZiZDk1OGQ3MmUwYTBkNjhkYzUyNzliZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
TWFjLm1tCkBAIC05NSw3ICs5NSw4IEBAIGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6Omhh
bmRsZVdoZWVsRXZlbnQoRnJhbWVWaWV3JiwgY29uc3QgUGxhdGZvcm1XaGVlbEV2CiAKIHZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0KCkKIHsKLSAg
ICBtX3BhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgLy8gRklYTUU6IFRoaXMg
b25lIG5lZWRzIHdvcmsuCisgICAgbV9wYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5k
ZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlKTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvck1hYzo6Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2dnaW5nLmNwcAppbmRleCBlZWY4YjNhN2YyMmM1N2RkMzU0NDlkNDQ5ZGE4NWQzZjUw
YTk1ZjZjLi44Y2YwMTg3Yzc3MDM0ODQ4ODU3NmZkZWZlZDg3ZmIzMzA0Y2VlYjk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmNwcApAQCAtOTAsNiArOTAsNyBAQCB2b2lkIGluaXRpYWxp
emVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KE9wdGlvbmFsPFN0cmluZz4gbG9nQ2hhbm5lbFN0cmlu
ZykKIAogICAgIFN0cmluZyBlbmFibGVkQ2hhbm5lbHNTdHJpbmcgPSBsb2dDaGFubmVsU3RyaW5n
ID8gbG9nQ2hhbm5lbFN0cmluZy52YWx1ZSgpIDogbG9nTGV2ZWxTdHJpbmcoKTsKICAgICBXVEZJ
bml0aWFsaXplTG9nQ2hhbm5lbFN0YXRlc0Zyb21TdHJpbmcobG9nQ2hhbm5lbHMsIGxvZ0NoYW5u
ZWxDb3VudCwgZW5hYmxlZENoYW5uZWxzU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworLy8gICAgTG9n
RXZlbnRMb29wLnN0YXRlID0gV1RGTG9nQ2hhbm5lbFN0YXRlOjpPbjsKIH0KIAogV1RGTG9nQ2hh
bm5lbCogZ2V0TG9nQ2hhbm5lbChjb25zdCBTdHJpbmcmIG5hbWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
b2dnaW5nLmgKaW5kZXggN2Q2Yzg4NDYxMTNkODVkM2ZkMWE5ZGMzNThlYzRiYjFkOTk3MmEwNS4u
YjUzOWJkZTJjZjkzNGIwZjAyNGY4ZDYwZjE2ZGYxNGM5YTUzZjg2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0xvZ2dpbmcuaApAQCAtNTYsNiArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
TShFZGl0aW5nKSBcCiAgICAgTShFTUUpIFwKICAgICBNKEV2ZW50cykgXAorICAgIE0oRXZlbnRM
b29wKSBcCiAgICAgTShFdmVudFJlZ2lvbnMpIFwKICAgICBNKEZpbGVBUEkpIFwKICAgICBNKEZp
bHRlcnMpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRl
eCAwNmZkMGIwNTAyNTBkM2I4YWUyODc5MmU5MjdmZWZmMWY3M2I5NDI3Li4wMWE2NDZjNmQ4OTNh
ZGNlNmZkZmI2Y2ZlYjc2OWE4MjM5MTE0NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVsZW1lbnQuY3BwCkBAIC0xNDA2LDcgKzE0MDYsNyBAQCB2b2lkIFJlbmRlckVsZW1l
bnQ6OmRpZFJlbW92ZUNhY2hlZEltYWdlQ2xpZW50KENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkK
IHZvaWQgUmVuZGVyRWxlbWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGVGb3JJbWFnZShDYWNo
ZWRJbWFnZSYpCiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAg
ICAgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgcGFnZS0+c2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzKTsKIH0KIAog
Ym9vbCBSZW5kZXJFbGVtZW50OjpyZXBhaW50Rm9yUGF1c2VkSW1hZ2VBbmltYXRpb25zSWZOZWVk
ZWQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIENhY2hlZEltYWdlJiBjYWNoZWRJbWFnZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5k
ZXggOWNhMGY5M2JiYmMxZDUxZDkwMGM5ZmY5ZjgxMDczNjQ5NTVkZmUyZS4uMmRiYTViMWQ3YTkz
MDc5NmY3MDQxMDI4MGFkMGQxODdkZTFkYjViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTM2NDgsMTEgKzM2NDgsMTIgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhp
Y3NMYXllciosIGNvbnN0IFN0cmkKIHsKIH0KIAotdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6Om5v
dGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciopCit2b2lkIFJlbmRlckxheWVy
QmFja2luZzo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKiBsYXllcikK
IHsKICAgICBpZiAocmVuZGVyZXIoKS5yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKICAgICAg
ICAgcmV0dXJuOwotICAgIGNvbXBvc2l0b3IoKS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwor
CisgICAgY29tcG9zaXRvcigpLm5vdGlmeUZsdXNoUmVxdWlyZWQobGF5ZXIpOwogfQogCiB2b2lk
IFJlbmRlckxheWVyQmFja2luZzo6bm90aWZ5Rmx1c2hCZWZvcmVEaXNwbGF5UmVmcmVzaChjb25z
dCBHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNmMyNDJjY2NmMDg1OWQxM2NiYmM2MGUy
Yzg3OTc2NWIzZjIwMjkzMC4uMmNjOTUzZDU5ODJiMDhhNTMzNzRkZjdiNTk0NzYzN2I0YzFmMmI0
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9z
aXRvci5jcHAKQEAgLTUyNiw3ICs1MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKQogewogICAgIEFTU0VSVCghbV9mbHVzaGluZ0xheWVy
cyk7CiAKLSAgICBwYWdlKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBwYWdlKCku
c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7
CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnZpc2libGVSZWN0Rm9yTGF5
ZXJGbHVzaGluZygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggYzM5NjE0ODNmNGVlMjZjMDUxODA4MmU3ZWMyY2Q5NzY1
NWE2NTQxZC4uYzE1MWUyM2QwZWY2NWZlYjk5ZjA1N2U1ZDIyOGViYmZkNWMxODUzMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAt
MTc4LDcgKzE3OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEdyYXBoaWNzTGF5ZXJzIGJ1ZmZlciBz
dGF0ZSwgd2hpY2ggZ2V0cyBwdXNoZWQgdG8gdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0gbGF5ZXJz
CiAgICAgLy8gYXQgc3BlY2lmaWMgdGltZXMuCi0gICAgdm9pZCBzY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSgpOworICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVy
Kikgb3ZlcnJpZGU7CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoYm9vbCBpc0Zs
dXNoUm9vdCA9IHRydWUpOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIEdyYXBoaWNzTGF5ZXIg
Zm9yIHRoZSBnaXZlbiBSZW5kZXJMYXllciBoYXMgZmx1c2hlZCBjaGFuZ2VzIGluc2lkZSBvZiBm
bHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKS4KQEAgLTM5Niw3ICszOTYsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgdXBkYXRlQ29tcG9zaXRpbmdQb2xpY3koKTsKICAgICAKICAgICAvLyBHcmFwaGlj
c0xheWVyQ2xpZW50IGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVk
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHBhaW50Q29udGVudHMo
Y29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZsb2F0UmVjdCYs
IEdyYXBoaWNzTGF5ZXJQYWludEJlaGF2aW9yKSBvdmVycmlkZTsKICAgICB2b2lkIGN1c3RvbVBv
c2l0aW9uRm9yVmlzaWJsZVJlY3RDb21wdXRhdGlvbihjb25zdCBHcmFwaGljc0xheWVyKiwgRmxv
YXRQb2ludCYpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUcmFja2luZ1JlcGFpbnRzKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc1RyYWNraW5nUmVwYWludHM7IH0KQEAgLTQ1NCw2
ICs0NTMsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBuZWVkc0NvbXBvc2l0aW5nRm9yQ29udGVu
dE9yT3ZlcmxheXMoKSBjb25zdDsKIAorICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUo
KTsKKwogICAgIHZvaWQgZW5zdXJlUm9vdExheWVyKCk7CiAgICAgdm9pZCBkZXN0cm95Um9vdExh
eWVyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVI
b3N0VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggYTA4MjY1NWZmN2UyOWY4YTQxYTBiMDZmNWRmN2Vj
MGRiOTg0MDAxZC4uMjhlMmM2ZDEwZmEwODI2NWQ4ZWRiNzQ0OTU2NWVlNTI3Zjk4MjZlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVIb3N0VGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVIb3N0VGV4dHVy
ZU1hcHBlci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBMYXllclRyZWVIb3N0OjpsYXllckZs
dXNoVGltZXJGaXJlZCgpCiAKICAgICAvLyBJbiBjYXNlIGFuIGFuaW1hdGlvbiBpcyBydW5uaW5n
LCB3ZSBzaG91bGQgZmx1c2ggYWdhaW4gc29vbi4KICAgICBpZiAoZG93bmNhc3Q8R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI+KG1fcm9vdExheWVyLmdldCgpKS0+bGF5ZXIoKS5kZXNjZW5kYW50
c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpKQotICAgICAgICBtX3dlYlBhZ2UuY29yZVBh
Z2UoKS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgbV93ZWJQYWdlLmNvcmVQ
YWdlKCktPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVy
Rmx1c2gpOwogfQogCiBMYXllclRyZWVIb3N0OjpMYXllclRyZWVIb3N0KFdlYlBhZ2UmIHdlYlBh
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggYzgx
YTY2NGQyNjkxNDUwYzIyOTE3NjgyZDNkNDdhNjY4ZDdmZmY0My4uYWEwODdhNWI0YTBjYWE2YTIx
OWIwODZhNjAyMWIzZTBhOTU4NmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQpAQCAtOTA4Miw3ICs5MDgyLDcgQEAgLSAoQk9PTClfZmx1c2hDb21wb3Np
dGluZ0NoYW5nZXMKIC0gKHZvaWQpX3NjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9yUGVuZGluZ1Rp
bGVDYWNoZVJlcGFpbnQKIHsKICAgICBpZiAoYXV0byogcGFnZSA9IF9wcml2YXRlLT5wYWdlKQot
ICAgICAgICBwYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBwYWdlLT5z
Y2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXll
ckZsdXNoKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410669</attachid>
            <date>2020-10-06 11:32:53 -0700</date>
            <delta_ts>2020-10-06 14:33:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216726-20201006113252.patch</filename>
            <type>text/plain</type>
            <size>49898</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGM0YTIxZWY1NDc3NDYzNTM4MmM0ZjA3
Y2YyM2Y2MzA1ZWYzMTIyMDcuLjFjMzU3OTJlYmM5YWJkZDQ0NWRjNDk1ODcyZWE0MTRkZmE5ZDQ2
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50IHJlbmRlcmluZyB1cGRhdGVz
IGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjcyNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gZHVtcCBWZWN0b3JzIHdpdGggaW5saW5lIGNhcGFjaXR5LgorCisgICAgICAgICog
d3RmL3RleHQvVGV4dFN0cmVhbS5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwogMjAy
MC0xMC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFsaWduIFVSTCBzZXR0ZXJzIHdpdGggcmVhc29uYWJseSBiZWhhdmluZyBvdGhlciBi
cm93c2VycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyNzk1NDcxYzcyYTI2YTc0ODRhNThiZjlhY2E1YWM0MDcz
MTllMjkuLjhkMDIwZjhiNDcwZTA5MjlhNDAyMzBhNDViODk2ZjhkNjEyMGNmNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5NSBAQAorMjAyMC0xMC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZWR1bmRhbnQgcmVuZGVyaW5nIHVwZGF0ZXMgY2Fu
IGJlIHNjaGVkdWxlZCBmcm9tIGluc2lkZSBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzI2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGJhc2ljIG1vZGVs
IGZvciBzY2hlZHVsaW5nIHJlbmRlcmluZyB1cGRhdGVzIGlzIHRoYXQgY29kZSB0aGF0IG5lZWRz
IHRvIHRyaWdnZXIgYW4KKyAgICAgICAgdXBkYXRlIGp1c3QgY2FsbHMgUGFnZTo6c2NoZWR1bGVb
VGltZWRdUmVuZGVyaW5nVXBkYXRlKCkuIEhvd2V2ZXIsIGlmCisgICAgICAgIFBhZ2U6OnVwZGF0
ZVJlbmRlcmluZygpIGlzIGFscmVhZHkgb24gdGhlIHN0YWNrLCBhbmQgdGhlIHdvcmsgdG8gYmUg
c2NoZWR1bGVkIHdpbGwgaGFwcGVuCisgICAgICAgIGxhdGVyIGluIHRoZSBjdXJyZW50IHVwZGF0
ZSwgd2UgZG9uJ3QgaGF2ZSB0byBzY2hlZHVsZSBhIG5ldyBvbmUuCisKKyAgICAgICAgVG8gZml4
IHRoaXMgUGFnZTo6dXBkYXRlUmVuZGVyaW5nKCkgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIHRyYWNr
IHdoaWNoIHN0ZXBzIHJlbWFpbgorICAgICAgICBpbiB0aGUgY3VycmVudCB1cGRhdGUsIGFuZCBj
YWxsZXJzIG9mIHNjaGVkdWxlW1RpbWVkXVJlbmRlcmluZ1VwZGF0ZSgpIHBhc3MgdGhlIHVwZGF0
ZSBzdGVwcworICAgICAgICBmb3IgdGhlIHdvcmsgdGhleSBuZWVkIHRvIHRyaWdnZXIuIElmIHRo
ZSByZXF1ZXN0ZWQgc3RlcHMgYXJlIGluY2x1ZGVkIGluIHRoZSByZW1haW5pbmcgc3RlcHMKKyAg
ICAgICAgbm8gbmV3IHVwZGF0ZSBuZWVkcyB0byBiZSBzY2hlZHVsZWQuIE5vdGUgdGhhdCByZXF1
ZXN0aW5nIGEgc3RlcCB3aGlsZSB0aGF0IHN0ZXAgaXMgYmVpbmcgZXhlY3V0ZWQKKyAgICAgICAg
aGFzIHRvIHNjaGVkdWxlIGFuIHVwYXRlIChlLmcuIHJlcXVlc3RBbmltYXRpb25GcmFtZSBpbnNp
ZGUgaXRzIG93biBjYWxsYmFjayBoYXMgdG8gc2NoZWR1bGUpLgorICAgICAgICAKKyAgICAgICAg
QXQgdGhlIGVuZCBvZiBhbiB1cGRhdGUsIGlmIHRoZXJlIGFyZSBhbnkgdW5mdWxmaWxsZWQgc3Rl
cHMsIHRoZW4gd2Ugc2NoZWR1bGUgYSBuZXcgdXBkYXRlLgorCisgICAgICAgIEFkZCBhIGxvZyBj
aGFubmVsIGZvciBFdmVudExvb3AgYW5kIGFuZCBsb2cgZnJvbSB2YXJpb3VzIHBsYWNlcy4KKwor
ICAgICAgICBJbiBteSBicmllZiB0ZXN0aW5nLCB0aGlzIHJlZHVjZXMgdGhlIG51bWJlciBvZiBj
YWxscyB0byBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKSBieSAxMC0yNSUKKyAgICAgICAgb24gc29t
ZSByZWFsIHBhZ2VzLCB3aGljaCBjb3VsZCBiZSBhIHNpZ25pZmljYW50IHBvd2VyIHNhdmluZy4K
KworICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlQW5pbWF0aW9uUmVzb2x1dGlvbik6Cisg
ICAgICAgICogZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXk6OkxheWVyQ29udHJvbGxlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6c2V0TmVlZHNET01XaW5kb3dSZXNpemVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6c2V0TmVlZHNWaXN1YWxWaWV3cG9ydFJlc2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6YWRkUGVuZGluZ1Njcm9sbEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3Mp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmludGVyc2VjdGlvbk9ic2VydmVyc0luaXRp
YWxVcGRhdGVUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2NoZWR1bGVJ
bml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OnVwZGF0ZVJlc2l6ZU9ic2VydmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVudHMpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzY2hlZHVs
ZUFuaW1hdGlvbik6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY2hlZHVsZUN1cnNvclVwZGF0ZSk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZXRWaWV3
RXhwb3NlZFJlY3QpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjp1cGRhdGVTdHlsZUFmdGVyQ2hhbmdlSW5FbnZpcm9ubWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpjb21wdXRlVW5mdWxmaWxsZWRSZW5kZXJpbmdTdGVwcyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjp0cmlnZ2VyUmVuZGVyaW5nVXBkYXRlRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjp1cGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6
aXNvbGF0ZWRVcGRhdGVSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6ZG9BZnRl
clVwZGF0ZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpmaW5hbGl6ZVJlbmRl
cmluZ1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZW5kZXJpbmdVcGRhdGVDb21w
bGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlk
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFwcGVhcmFuY2VEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgICogcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VWaWV3RXhwb3NlZFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZU92ZXJsYXlDb250cm9sbGVyOjpub3RpZnlGbHVzaFJlcXVpcmVk
KToKKyAgICAgICAgKiBwYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OnNjaGVkdWxlQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVy
OjpzdGFydFRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk6CisgICAgICAgICogcGFnZS9SZW5kZXJpbmdVcGRhdGVT
Y2hlZHVsZXIuaDoKKyAgICAgICAgKiBwYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc2l6ZU9ic2VydmVyOjpvYnNlcnZlKToKKyAgICAgICAgKiBwYWdlL1doZWVs
RXZlbnRUZXN0TW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdE1v
bml0b3I6OnNldFRlc3RDYWxsYmFja0FuZFN0YXJ0TW9uaXRvcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNjaGVkdWxlQ2FsbGJhY2tDaGVjayk6CisgICAg
ICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6bm90aWZ5Rmx1c2hS
ZXF1aXJlZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRFdmVudFRyYWNraW5nUmVnaW9uc0RpcnR5KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvck1hYzo6c2NoZWR1bGVUcmVlU3RhdGVDb21taXQpOgorICAgICAgICAqIHBs
YXRmb3JtL0xvZ2dpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlhbGl6ZUxvZ0NoYW5u
ZWxzSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL0xvZ2dpbmcuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJF
bGVtZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvckltYWdlKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6bm90aWZ5Rmx1c2hSZXF1aXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisKIDIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNjaGVkdWxlVGltZWRSZW5k
ZXJpbmdVcGRhdGUoKSB0byBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGV2ZXJ5d2hlcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggMGNlZTU1Y2VkZjcxN2NhM2RjNTQ2MGJmM2YwNzNmNDQ3M2ViYTE4YS4uMmNmMmM5
YWZhNzE5YTBmNmYxZTI4MDdjODI4OWY1MzM4ODhlYjI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0xMC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWR1bmRhbnQgcmVuZGVyaW5nIHVwZGF0ZXMgY2FuIGJlIHNjaGVkdWxlZCBm
cm9tIGluc2lkZSBQYWdlOjp1cGRhdGVSZW5kZXJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2NzI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2NoZWR1bGUgZm9yIGxheWVyIGZsdXNoLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdFRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVIb3N0Ojps
YXllckZsdXNoVGltZXJGaXJlZCk6CisKIDIwMjAtMTAtMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHNjaGVkdWxlVGltZWRSZW5kZXJp
bmdVcGRhdGUoKSB0byBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpIGV2ZXJ5d2hlcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkOTRhY2QyZTM4ZDJmMjBjN2JmMzdlM2E1OWVhMzIy
OTE4NDE1MjM4Li5jNjlhMGY3ZGE5YmNiZjI2MWY0NzkzMmNmZmQ0NzdlZDVmN2MzZjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMTAtMDYgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkdW5kYW50
IHJlbmRlcmluZyB1cGRhdGVzIGNhbiBiZSBzY2hlZHVsZWQgZnJvbSBpbnNpZGUgUGFnZTo6dXBk
YXRlUmVuZGVyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNjcyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFByb3ZpZGUgdGhlIGZsYWdzLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXZWJWaWV3IF9zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvclBlbmRpbmdU
aWxlQ2FjaGVSZXBhaW50XSk6CisKIDIwMjAtMTAtMDUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIHRoZSAidHJpZ2dlclJlbmRlcmluZ1VwZGF0
ZSIgdGVybWlub2xvZ3kgaW4gQ2hyb21lQ2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1RleHRTdHJlYW0uaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5oCmlu
ZGV4IGRjZGFmYmMzZjMyYTY2MTY4YTJjMDUxYzgyM2Y5Njc0OTllNDgxZjYuLjcyYzU0Njg3MjE1
ZTdhODY0ZDMyNjY2Y2RiMGYxYWRmZTdmMThhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvVGV4dFN0cmVhbS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvVGV4dFN0cmVhbS5o
CkBAIC0yMTIsOCArMjEyLDggQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0
cywgY29uc3QgTWFya2FibGU8VCwgVHJhaXRzPiYgaXRlbSkKICAgICByZXR1cm4gdHMgPDwgInVu
c2V0IjsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtPiYgdmVjdG9yKQordGVtcGxhdGU8
dHlwZW5hbWUgSXRlbVR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFZlY3RvcjxJdGVtVHlwZSwgaW5saW5lQ2Fw
YWNpdHk+JiB2ZWN0b3IpCiB7CiAgICAgdHMgPDwgIlsiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKaW5kZXggMTExM2JkY2UxMmMxZjgzMzZlYTM4
YmNhNmI0ZjM4MzliMzUwMGY4Zi4uOTZiNDk2NzJkNWZiZDIxZTVlOTAyM2Q4OGY4OTg0Y2QzOGVj
Mzg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNw
cApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgRG9jdW1lbnRUaW1lbGluZTo6c2NoZWR1bGVBbmlt
YXRpb25SZXNvbHV0aW9uKCkKICAgICBpZiAoIXNob3VsZFJ1blVwZGF0ZUFuaW1hdGlvbnNBbmRT
ZW5kRXZlbnRzSWdub3JpbmdTdXNwZW5zaW9uU3RhdGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9kb2N1bWVudC0+cGFnZSgpLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIG1f
ZG9jdW1lbnQtPnBhZ2UoKS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRl
U3RlcDo6QW5pbWF0aW9ucyk7CiAgICAgbV9hbmltYXRpb25SZXNvbHV0aW9uU2NoZWR1bGVkID0g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5
ZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheUxheWVyQ29u
dHJvbGxlci5jcHAKaW5kZXggZjIzYWMzZGQ2NzU2ZjZjM2Q2ZjUyNjgxNGM3ODVkNWVlM2RkMjYx
OC4uMmNiYjBlMDFkYWJmODcyNDBjMDhjNWVjNTg2OTFiM2VhY2FlNmEyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5TGF5ZXJDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlMYXllckNvbnRyb2xsZXIuY3BwCkBAIC0xMjUs
NyArMTI1LDcgQEAgdm9pZCBMYXllckNvbnRyb2xsZXI6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KCkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPnNjaGVkdWxl
UmVuZGVyaW5nVXBkYXRlKCk7CisgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgTGF5ZXJDb250cm9sbGVy
OjplbnN1cmVSb290TGF5ZXIoRmxvYXRTaXplIHZpZXdTaXplLCBGbG9hdFNpemUgY29udGVudFNp
emUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzYTBjMjUwMDFjMDA5Y2ZiMjQyM2I1OTRm
MTQxNTEzMDk2M2I3ZmVkLi4wNTJiMDViNjhkOTg3NWYyZDE2ZDgxMDA3MzZmMTdlMDNhZjk3ZmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU2MCw3ICs1NjAsNyBAQCBEb2N1bWVudDo6
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCwgRG9jdW1lbnRDbGFzc0ZsYWdz
IGRvY3VtZW50Q2xhcwogICAgICwgbV9mdWxsc2NyZWVuTWFuYWdlciB7IG1ha2VVbmlxdWVSZWY8
RnVsbHNjcmVlbk1hbmFnZXI+KCp0aGlzKSB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5URVJTRUNU
SU9OX09CU0VSVkVSKQotICAgICwgbV9pbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRl
VGltZXIoKnRoaXMsICZEb2N1bWVudDo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUpCisgICAgLCBt
X2ludGVyc2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lcigqdGhpcywgJkRvY3VtZW50
OjppbnRlcnNlY3Rpb25PYnNlcnZlcnNJbml0aWFsVXBkYXRlVGltZXJGaXJlZCkKICNlbmRpZgog
ICAgICwgbV9sb2FkRXZlbnREZWxheVRpbWVyKCp0aGlzLCAmRG9jdW1lbnQ6OmxvYWRFdmVudERl
bGF5VGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoREVWSUNF
X09SSUVOVEFUSU9OKQpAQCAtNDA3NywxMyArNDA3NywxMyBAQCB2b2lkIERvY3VtZW50Ojp1cGRh
dGVWaWV3cG9ydFVuaXRzT25SZXNpemUoKQogdm9pZCBEb2N1bWVudDo6c2V0TmVlZHNET01XaW5k
b3dSZXNpemVFdmVudCgpCiB7CiAgICAgbV9uZWVkc0RPTVdpbmRvd1Jlc2l6ZUV2ZW50ID0gdHJ1
ZTsKLSAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIHNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6
OnNldE5lZWRzVmlzdWFsVmlld3BvcnRSZXNpemUoKQogewogICAgIG1fbmVlZHNWaXN1YWxWaWV3
cG9ydFJlc2l6ZUV2ZW50ID0gdHJ1ZTsKLSAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOwor
ICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZSk7
CiB9CiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNydW4tdGhlLXJl
c2l6ZS1zdGVwcwpAQCAtNDExMyw3ICs0MTEzLDcgQEAgdm9pZCBEb2N1bWVudDo6YWRkUGVuZGlu
Z1Njcm9sbEV2ZW50VGFyZ2V0KENvbnRhaW5lck5vZGUmIHRhcmdldCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKHRhcmdldHMuaXNFbXB0eSgpKQotICAgICAgICBzY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZSgpOworICAgICAgICBzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRh
dGVTdGVwOjpTY3JvbGwpOwogCiAgICAgdGFyZ2V0cy5hcHBlbmQodGFyZ2V0KTsKIH0KQEAgLTQx
MjEsNyArNDEyMSw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZFBlbmRpbmdTY3JvbGxFdmVudFRhcmdl
dChDb250YWluZXJOb2RlJiB0YXJnZXQpCiB2b2lkIERvY3VtZW50OjpzZXROZWVkc1Zpc3VhbFZp
ZXdwb3J0U2Nyb2xsRXZlbnQoKQogewogICAgIGlmICghbV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Ny
b2xsRXZlbnQpCi0gICAgICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbCk7CiAgICAg
bV9uZWVkc1Zpc3VhbFZpZXdwb3J0U2Nyb2xsRXZlbnQgPSB0cnVlOwogfQogCkBAIC02NDM3LDEw
ICs2NDM3LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlckNhbGxiYWNrcygpCiAgICAgICAgIG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLT5y
ZXN1bWUoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrcyhSZWR1Y2VkUmVzb2x1dGlvblNlY29uZHMgdGltZXN0YW1wKQordm9pZCBEb2N1
bWVudDo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcygpCiB7Ci0gICAgaWYg
KG1fc2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKQotICAgICAgICBtX3NjcmlwdGVkQW5pbWF0
aW9uQ29udHJvbGxlci0+c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyh0aW1l
c3RhbXApOworICAgIGlmIChtX3NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlciAmJiBkb21XaW5k
b3coKSkKKyAgICAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXItPnNlcnZpY2VSZXF1
ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoZG9tV2luZG93KCktPmZyb3plbk5vd1RpbWVzdGFt
cCgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3Jt
RGlzcGxheUlEIGRpc3BsYXlJRCkKQEAgLTc1MzMsMTMgKzc1MzMsMjMgQEAgdm9pZCBEb2N1bWVu
dDo6cmVtb3ZlRHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZShIVE1MSW1hZ2VFbGVtZW50
JiBlbGVtZW50KQogICAgIG1fZHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJbWFnZXMucmVtb3Zl
KGVsZW1lbnQpOwogfQogCi12b2lkIERvY3VtZW50OjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgp
CisjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKK3ZvaWQgRG9jdW1lbnQ6OmludGVy
c2VjdGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lckZpcmVkKCkKK3sKKyAgICBzY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbnRlcnNlY3Rpb25PYnNlcnZh
dGlvbnMpOworfQorI2VuZGlmCisKK3ZvaWQgRG9jdW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBk
YXRlKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiByZXF1ZXN0ZWRTdGVwcykKIHsKICNp
ZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQotICAgIG1faW50ZXJzZWN0aW9uT2JzZXJ2
ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLnN0b3AoKTsKKyAgICBpZiAobV9pbnRlcnNlY3Rpb25PYnNl
cnZlcnNJbml0aWFsVXBkYXRlVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICBtX2ludGVyc2Vj
dGlvbk9ic2VydmVyc0luaXRpYWxVcGRhdGVUaW1lci5zdG9wKCk7CisgICAgICAgIHJlcXVlc3Rl
ZFN0ZXBzLmFkZChSZW5kZXJpbmdVcGRhdGVTdGVwOjpJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMp
OworICAgIH0KICNlbmRpZgogICAgIGlmIChhdXRvIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAg
ICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKHJlcXVlc3RlZFN0ZXBzKTsKIH0KIAogI2lmIEVOQUJMRShJTlRF
UlNFQ1RJT05fT0JTRVJWRVIpCkBAIC03NzY0LDcgKzc3NzQsNyBAQCB2b2lkIERvY3VtZW50Ojp1
cGRhdGVJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMoKQogdm9pZCBEb2N1bWVudDo6c2NoZWR1bGVJ
bml0aWFsSW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25VcGRhdGUoKQogewogICAgIGlmIChtX3JlYWR5
U3RhdGUgPT0gQ29tcGxldGUpCi0gICAgICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7Cisg
ICAgICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVy
c2VjdGlvbk9ic2VydmF0aW9ucyk7CiAgICAgZWxzZSBpZiAoIW1faW50ZXJzZWN0aW9uT2JzZXJ2
ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1faW50ZXJzZWN0aW9u
T2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyLnN0YXJ0T25lU2hvdChpbnRlcnNlY3Rpb25PYnNl
cnZlcnNJbml0aWFsVXBkYXRlRGVsYXkpOwogfQpAQCAtNzg1Niw3ICs3ODY2LDcgQEAgdm9pZCBE
b2N1bWVudDo6dXBkYXRlUmVzaXplT2JzZXJ2YXRpb25zKFBhZ2UmIHBhZ2UpCiAgICAgICAgIGdl
dFBhcnNlckxvY2F0aW9uKHVybCwgbGluZSwgY29sdW1uKTsKICAgICAgICAgcmVwb3J0RXhjZXB0
aW9uKCJSZXNpemVPYnNlcnZlciBsb29wIGNvbXBsZXRlZCB3aXRoIHVuZGVsaXZlcmVkIG5vdGlm
aWNhdGlvbnMuIiwgbGluZSwgY29sdW1uLCB1cmwsIG51bGxwdHIsIG51bGxwdHIpOwogICAgICAg
ICAvLyBTdGFydGluZyBhIG5ldyBzY2hlZHVsZSB0aGUgbmV4dCByb3VuZCBvZiBub3RpZnkuCi0g
ICAgICAgIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9ucyk7CiAgICAg
fQogfQogCkBAIC04MTQwLDYgKzgxNTAsMTYgQEAgRG9jdW1lbnRUaW1lbGluZXNDb250cm9sbGVy
JiBEb2N1bWVudDo6ZW5zdXJlVGltZWxpbmVzQ29udHJvbGxlcigpCiAgICAgcmV0dXJuICptX3Rp
bWVsaW5lc0NvbnRyb2xsZXIuZ2V0KCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUFuaW1h
dGlvbnNBbmRTZW5kRXZlbnRzKCkKK3sKKyAgICBhdXRvIGRvbVdpbmRvdyA9IHRoaXMtPmRvbVdp
bmRvdygpOworICAgIGlmICghZG9tV2luZG93KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
YXV0byogdGltZWxpbmVzQ29udHJvbGxlciA9IHRoaXMtPnRpbWVsaW5lc0NvbnRyb2xsZXIoKSkK
KyAgICAgICAgdGltZWxpbmVzQ29udHJvbGxlci0+dXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRFdmVu
dHMoZG9tV2luZG93LT5mcm96ZW5Ob3dUaW1lc3RhbXAoKSk7Cit9CisKIERvY3VtZW50VGltZWxp
bmUmIERvY3VtZW50Ojp0aW1lbGluZSgpCiB7CiAgICAgaWYgKCFtX3RpbWVsaW5lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAppbmRleCA1YWMyZjk5NGUxZjNjODlmYWE1MjliMmU1OGE5MThkMzAxOTQyMjFh
Li45YzhjYjBjMWViMjcyMGQ0NGMzNTE5MTE4MzVkNmU5Y2Q2MjkzYmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtMjM5LDYgKzIzOSw3IEBAIGVudW0gQ29sbGVjdGlvblR5cGU7CiAKIGVudW0g
Y2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdDsKIGVudW0gY2xhc3MgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIFJlbmRlcmluZ1VwZGF0
ZVN0ZXAgOiB1aW50MTZfdDsKIAogdXNpbmcgUGxhdGZvcm1EaXNwbGF5SUQgPSB1aW50MzJfdDsK
IApAQCAtMTA2OSw3ICsxMDcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZFNjcmlwdGVk
QW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIHZvaWQgcmVzdW1lU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAKLSAgICB2b2lkIHNlcnZpY2VSZXF1ZXN0
QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoUmVkdWNlZFJlc29sdXRpb25TZWNvbmRzKTsKKyAgICB2
b2lkIHNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKTsKIAogICAgIHZvaWQg
d2luZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEKTsKIApAQCAtMTM5NSw3ICsx
Mzk2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRHluYW1pY01lZGlhUXVlcnlEZXBlbmRlbnRJ
bWFnZShIVE1MSW1hZ2VFbGVtZW50Jik7CiAgICAgdm9pZCByZW1vdmVEeW5hbWljTWVkaWFRdWVy
eURlcGVuZGVudEltYWdlKEhUTUxJbWFnZUVsZW1lbnQmKTsKIAotICAgIHZvaWQgc2NoZWR1bGVS
ZW5kZXJpbmdVcGRhdGUoKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlv
blNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPik7CiAKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09C
U0VSVkVSKQogICAgIHZvaWQgYWRkSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXImKTsKQEAgLTE0ODUsNiArMTQ4Niw3IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0Q29uc29sZU1lc3NhZ2VMaXN0ZW5lcihSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+
JiYpOyAvLyBGb3IgdGVzdGluZy4KIAorICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uc0FuZFNlbmRF
dmVudHMoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudFRpbWVsaW5lJiB0aW1lbGluZSgp
OwogICAgIERvY3VtZW50VGltZWxpbmUqIGV4aXN0aW5nVGltZWxpbmUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVsaW5lLmdldCgpOyB9CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBn
ZXRBbmltYXRpb25zKCk7CkBAIC0xNjQ3LDYgKzE2NDksOCBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBtb3ZlTm9kZUl0ZXJhdG9yc1RvTmV3RG9jdW1lbnRTbG93Q2FzZShOb2RlJiwgRG9jdW1lbnQm
KTsKIAorICAgIHZvaWQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJzSW5pdGlhbFVwZGF0ZVRpbWVyRmly
ZWQoKTsKKwogICAgIHZvaWQgbG9hZEV2ZW50RGVsYXlUaW1lckZpcmVkKCk7CiAKICAgICB2b2lk
IHBlbmRpbmdUYXNrc1RpbWVyRmlyZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggYTI4ZGQyNjdlMDE1ZDg1MGQ5Yzc3
MDdhODA2YWM1ZmExNjdhNTNiMy4uMzYxMmJkZjgwOWNmOGQ4YTkyOTlmMmYwOTc1NzRkMzViMjYz
MDZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlcjo6c2NoZWR1bGVBbmltYXRpb24oKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
YXV0byogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoKTsKKyAgICAgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVy
aW5nVXBkYXRlU3RlcDo6QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMDc5NzBjYjFjZDg4NGYyNmRhNDlhMDkwNDQ2
OTJlNzVhOGI2YzgxMC4uNDkzNWI3M2UyZWY2MTVjYjViMmYwNzU1NGVlYTIwZDRjMDZkNjU0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzE1Myw3ICszMTUzLDcgQEAg
dm9pZCBFdmVudEhhbmRsZXI6OnNjaGVkdWxlQ3Vyc29yVXBkYXRlKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9oYXNTY2hlZHVsZWRDdXJzb3JVcGRhdGUgPSB0cnVlOwotICAgIHBhZ2UtPnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRh
dGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6Q3Vyc29yVXBkYXRlKTsKIH0KIAogdm9pZCBFdmVudEhh
bmRsZXI6OmRpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50U29vbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKaW5kZXggMzU3ZDJhMTI1ZDdhNTFhNTkxNjhhZjFmOGEyNjAxYjhjZGZjNzMyZC4u
YWEwZTIxYmZkOWQ0NzZlM2E0ZjVkMmRiYTUzNDJiZmNiYjg5NzA0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtNTQzNSw3ICs1NDM1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFZp
ZXdFeHBvc2VkUmVjdChPcHRpb25hbDxGbG9hdFJlY3Q+IHZpZXdFeHBvc2VkUmVjdCkKICAgICB9
CiAKICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7Ci0gICAgICAgIHBhZ2Ut
PnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gpOwogICAgICAgICBwYWdl
LT5wYWdlT3ZlcmxheUNvbnRyb2xsZXIoKS5kaWRDaGFuZ2VWaWV3RXhwb3NlZFJlY3QoKTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBkYzkxNWQ2ZTVlMjc4NzFmMGJlMTY0NmViMTQ0
M2ViMTNmYzY4ZTQxLi41ZTA3MmM4M2U5ZTRjNDI3NDFmZGNmMjg5MTA2ZGY3YThjN2ZiMTQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE0NCw2ICsxNDQsNyBAQAogI2luY2x1ZGUgPHd0Zi9TeXN0
ZW1UcmFjaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAog
I2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAjaW5jbHVkZSAiSFRNTFZpZGVv
RWxlbWVudC5oIgpAQCAtNTk2LDcgKzU5Nyw3IEBAIHZvaWQgUGFnZTo6dXBkYXRlU3R5bGVBZnRl
ckNoYW5nZUluRW52aXJvbm1lbnQoKQogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+aW52YWxp
ZGF0ZU1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSgpOwogICAgICAgICBkb2N1bWVudC5zY2hlZHVs
ZUZ1bGxTdHlsZVJlYnVpbGQoKTsKICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmRpZENo
YW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpOwotICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVJl
bmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpNZWRpYVF1ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7CiB9
CiAKQEAgLTE0MDYsMTUgKzE0MDcsMzAgQEAgdm9pZCBQYWdlOjpsYXlvdXRJZk5lZWRlZCgpCiAg
ICAgICAgIHZpZXctPnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKIH0K
IAotdm9pZCBQYWdlOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCit2b2lkIFBhZ2U6OnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiByZXF1ZXN0
ZWRTdGVwcykKIHsKLSAgICBpZiAoY2hyb21lKCkuY2xpZW50KCkuc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoKSkKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlBhZ2Ug
IiA8PCB0aGlzIDw8ICIgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIC0gcmVxdWVzdGVk
U3RlcHMgIiA8PCByZXF1ZXN0ZWRTdGVwcyA8PCAiIHJlbWFpbmluZyBzdGVwcyAiIDw8IG1fcmVu
ZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMpOworICAgIGlmIChtX3JlbmRlcmluZ1VwZGF0ZVJl
bWFpbmluZ1N0ZXBzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoY2hyb21lKCkuY2xpZW50KCku
c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
cmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKICAg
ICAgICAgcmV0dXJuOwotICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpLnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKCk7CisgICAgfQorICAgIGNvbXB1dGVVbmZ1bGZpbGxlZFJlbmRlcmluZ1N0
ZXBzKHJlcXVlc3RlZFN0ZXBzKTsKK30KKwordm9pZCBQYWdlOjpjb21wdXRlVW5mdWxmaWxsZWRS
ZW5kZXJpbmdTdGVwcyhPcHRpb25TZXQ8UmVuZGVyaW5nVXBkYXRlU3RlcD4gcmVxdWVzdGVkU3Rl
cHMpCit7CisgICAgLy8gbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcyBvbmx5IGhhcyBt
b3JlIHRoYW4gb25lIGVudHJ5IGZvciB0aGUgcmUtZW50cmFudCByZW5kZXJpbmcgdXBkYXRlIHRy
aWdnZXJlZCBieSB0ZXN0aW5nLgorICAgIC8vIEZvciBzY2hlZHVsaW5nLCB3ZSBvbmx5IGNhcmUg
YWJvdXQgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbnRyeS4KKyAgICBhdXRvIHJlbWFpbmluZ1N0
ZXBzID0gbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwc1swXTsKKyAgICBhdXRvIHN0ZXBz
Rm9yTmV4dFVwZGF0ZSA9IHJlcXVlc3RlZFN0ZXBzIC0gcmVtYWluaW5nU3RlcHM7CisgICAgbV91
bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzLmFkZChzdGVwc0Zvck5leHRVcGRhdGUpOwogfQogCiB2
b2lkIFBhZ2U6OnRyaWdnZXJSZW5kZXJpbmdVcGRhdGVGb3JUZXN0aW5nKCkKIHsKKyAgICBMT0df
V0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwgIlBhZ2UgIiA8PCB0aGlzIDw8ICIgdHJp
Z2dlclJlbmRlcmluZ1VwZGF0ZUZvclRlc3RpbmcoKSIpOwogICAgIHJlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlcigpLnRyaWdnZXJSZW5kZXJpbmdVcGRhdGVGb3JUZXN0aW5nKCk7CiB9CiAKQEAgLTE0
MzIsMTIgKzE0NDgsMTggQEAgdW5zaWduZWQgUGFnZTo6cmVuZGVyaW5nVXBkYXRlQ291bnQoKSBj
b25zdAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvd2ViYXBwYXBp
cy5odG1sI3VwZGF0ZS10aGUtcmVuZGVyaW5nCiB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygp
CiB7Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmFwcGVuZChSZW5kZXJpbmdVcGRh
dGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOworICAgIExPRyhFdmVudExvb3AsICJQYWdlICVw
IHVwZGF0ZVJlbmRlcmluZygpIC0gcmUtZW50ZXJpbmcgJWQiLCB0aGlzLCAhbV9yZW5kZXJpbmdV
cGRhdGVSZW1haW5pbmdTdGVwcy5pc0VtcHR5KCkpOworCisgICAgaWYgKG1fcmVuZGVyaW5nVXBk
YXRlUmVtYWluaW5nU3RlcHMuaXNFbXB0eSgpKQorICAgICAgICBtX3VuZnVsZmlsbGVkUmVxdWVz
dGVkU3RlcHMgPSB7IH07CisKKyAgICBtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmFw
cGVuZChhbGxSZW5kZXJpbmdVcGRhdGVTdGVwcyk7CiAKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlz
IG5vdCByZWVudHJhbnQsIGUuZy4gYSByQUYgY2FsbGJhY2sgbWF5IHRyaWdnZXIgYSBmb3JjZXMg
cmVwYWludCBpbiB0ZXN0aW5nLgotICAgIC8vIFRoaXMgaXMgd2h5IHdlIHRyYWNrIHVwZGF0ZVJl
bmRlcmluZ1BoYXNlIGFzIGEgc3RhY2suCi0gICAgaWYgKG1fdXBkYXRlUmVuZGVyaW5nUGhhc2VT
dGFjay5zaXplKCkgPiAxKSB7CisgICAgLy8gVGhpcyBpcyB3aHkgd2UgdHJhY2sgbV9yZW5kZXJp
bmdVcGRhdGVSZW1haW5pbmdTdGVwcyBhcyBhIHN0YWNrLgorICAgIGlmIChtX3JlbmRlcmluZ1Vw
ZGF0ZVJlbWFpbmluZ1N0ZXBzLnNpemUoKSA+IDEpIHsKICAgICAgICAgbGF5b3V0SWZOZWVkZWQo
KTsKKyAgICAgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5sYXN0KCkucmVtb3Zl
KHVwZGF0ZVJlbmRlcmluZ1N0ZXBzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQ2
MSw1OCArMTQ4Myw2NCBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAgICAgICAgIGlu
aXRpYWxEb2N1bWVudHMuYXBwZW5kKG1ha2VXZWFrUHRyKCZkb2N1bWVudCkpOwogICAgIH0pOwog
Ci0gICAgLy8gRmx1c2ggYXV0b2ZvY3VzIGNhbmRpZGF0ZXMKKyAgICBhdXRvIHJ1blByb2Nlc3Np
bmdTdGVwID0gWyZdKFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKERvY3VtZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CisgICAgICAgIG1fcmVu
ZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShzdGVwKTsKKyAgICAgICAg
Zm9yRWFjaERvY3VtZW50KHBlckRvY3VtZW50RnVuY3Rpb24pOworICAgIH07CiAKLSAgICBmb3JF
YWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAgIC8vIEZJWE1FOiBGbHVz
aCBhdXRvZm9jdXMgY2FuZGlkYXRlcy4KKworICAgIHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmlu
Z1VwZGF0ZVN0ZXA6OlJlc2l6ZSwgW10gKERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBk
b2N1bWVudC5ydW5SZXNpemVTdGVwcygpOwogICAgIH0pOwogCi0gICAgZm9yRWFjaERvY3VtZW50
KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJp
bmdVcGRhdGVTdGVwOjpTY3JvbGwsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAg
ZG9jdW1lbnQucnVuU2Nyb2xsU3RlcHMoKTsKICAgICB9KTsKIAotICAgIGZvckVhY2hEb2N1bWVu
dChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0ZXAoUmVuZGVy
aW5nVXBkYXRlU3RlcDo6TWVkaWFRdWVyeUV2YWx1YXRpb24sIFtdIChEb2N1bWVudCYgZG9jdW1l
bnQpIHsKICAgICAgICAgZG9jdW1lbnQuZXZhbHVhdGVNZWRpYVF1ZXJpZXNBbmRSZXBvcnRDaGFu
Z2VzKCk7ICAgICAgICAKICAgICB9KTsKIAotICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1l
bnQmIGRvY3VtZW50KSB7Ci0gICAgICAgIGlmICghZG9jdW1lbnQuZG9tV2luZG93KCkpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIGF1dG8gdGltZXN0YW1wID0gZG9jdW1lbnQuZG9tV2lu
ZG93KCktPmZyb3plbk5vd1RpbWVzdGFtcCgpOwotICAgICAgICBpZiAoYXV0byogdGltZWxpbmVz
Q29udHJvbGxlciA9IGRvY3VtZW50LnRpbWVsaW5lc0NvbnRyb2xsZXIoKSkKLSAgICAgICAgICAg
IHRpbWVsaW5lc0NvbnRyb2xsZXItPnVwZGF0ZUFuaW1hdGlvbnNBbmRTZW5kRXZlbnRzKHRpbWVz
dGFtcCk7Ci0gICAgICAgIC8vIEZJWE1FOiBSdW4gdGhlIGZ1bGxzY3JlZW4gc3RlcHMuCi0gICAg
ICAgIGRvY3VtZW50LnNlcnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3ModGltZXN0
YW1wKTsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRp
b25zLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGRvY3VtZW50LnVwZGF0ZUFu
aW1hdGlvbnNBbmRTZW5kRXZlbnRzKCk7CisgICAgfSk7CisKKyAgICAvLyBGSVhNRTogUnVuIHRo
ZSBmdWxsc2NyZWVuIHN0ZXBzLgorICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMu
bGFzdCgpLnJlbW92ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpGdWxsc2NyZWVuKTsKKworICAgIHJ1
blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbkZyYW1lQ2FsbGJh
Y2tzLCBbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgICAgIGRvY3VtZW50LnNlcnZpY2VS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MoKTsKICAgICB9KTsKIAogICAgIGxheW91dElm
TmVlZGVkKCk7CiAKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQotICAgIGZvckVh
Y2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CisgICAgcnVuUHJvY2Vzc2luZ1N0
ZXAoUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW50ZXJzZWN0aW9uT2JzZXJ2YXRpb25zLCBbXSAoRG9j
dW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZUludGVyc2VjdGlvbk9i
c2VydmF0aW9ucygpOwogICAgIH0pOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUkVTSVpFX09CU0VS
VkVSKQotICAgIGZvckVhY2hEb2N1bWVudChbJl0gKERvY3VtZW50JiBkb2N1bWVudCkgeworICAg
IHJ1blByb2Nlc3NpbmdTdGVwKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlJlc2l6ZU9ic2VydmF0aW9u
cywgWyZdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAgICAgICAgZG9jdW1lbnQudXBkYXRlUmVz
aXplT2JzZXJ2YXRpb25zKCp0aGlzKTsKICAgICB9KTsKICNlbmRpZgogCi0gICAgZm9yRWFjaERv
Y3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBydW5Qcm9jZXNzaW5nU3RlcChS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpJbWFnZXMsIFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKICAg
ICAgICAgZm9yIChhdXRvJiBpbWFnZSA6IGRvY3VtZW50LmNhY2hlZFJlc291cmNlTG9hZGVyKCku
YWxsQ2FjaGVkU1ZHSW1hZ2VzKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaW1h
Z2UtPmludGVybmFsUGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmlzb2xhdGVkVXBkYXRl
UmVuZGVyaW5nKCk7CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIEFTU0VSVChtX3VwZGF0ZVJl
bmRlcmluZ1BoYXNlU3RhY2subGFzdCgpID09IFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpJblVwZGF0
ZVJlbmRlcmluZyk7Ci0KICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogaW5pdGlhbERvY3VtZW50
cykgewogICAgICAgICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmRvbVdpbmRvdygpKQogICAg
ICAgICAgICAgZG9jdW1lbnQtPmRvbVdpbmRvdygpLT51bmZyZWV6ZU5vd1RpbWVzdGFtcCgpOwog
ICAgIH0KIAorICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92
ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVlbEV2ZW50TW9uaXRvckNhbGxiYWNrcyk7CisKICAg
ICBpZiAoVU5MSUtFTFkoaXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkpCiAgICAgICAgIHdoZWVs
RXZlbnRUZXN0TW9uaXRvcigpLT5jaGVja1Nob3VsZEZpcmVDYWxsYmFja3MoKTsKIApAQCAtMTUy
NCwyMCArMTU1MiwxNyBAQCB2b2lkIFBhZ2U6OnVwZGF0ZVJlbmRlcmluZygpCiAKICAgICBpZiAo
IWlzU1ZHSW1hZ2VQYWdlKQogICAgICAgICB0cmFjZVBvaW50KFJlbmRlcmluZ1VwZGF0ZUVuZCk7
Ci0KLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9PSBSZW5k
ZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwogfQogCiB2b2lkIFBhZ2U6Omlz
b2xhdGVkVXBkYXRlUmVuZGVyaW5nKCkKIHsKKyAgICBMT0coRXZlbnRMb29wLCAiUGFnZSAlcCBp
c29sYXRlZFVwZGF0ZVJlbmRlcmluZygpIiwgdGhpcyk7CiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7
Ci0gICAgbV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICByZW5k
ZXJpbmdVcGRhdGVDb21wbGV0ZWQoKTsKIH0KIAogdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKCkKIHsKLSAgICBBU1NFUlQobV91cGRhdGVSZW5kZXJpbmdQaGFzZVN0YWNrLmxhc3Qo
KSA9PSBSZW5kZXJpbmdVcGRhdGVQaGFzZTo6SW5VcGRhdGVSZW5kZXJpbmcpOwotCiAgICAgLy8g
Q29kZSBoZXJlIHNob3VsZCBkbyBvbmNlLXBlci1mcmFtZSB3b3JrIHRoYXQgbmVlZHMgdG8gYmUg
ZG9uZSBiZWZvcmUgcGFpbnRpbmcsIGFuZCByZXF1aXJlcwogICAgIC8vIGxheW91dCB0byBiZSB1
cC10by1kYXRlLiBJdCBzaG91bGQgbm90IHJ1biBzY3JpcHQsIHRyaWdnZXIgbGF5b3V0LCBvciBk
aXJ0eSBsYXlvdXQuCiAKQEAgLTE1NTAsNyArMTU3NSwxMiBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJV
cGRhdGVSZW5kZXJpbmcoKQogICAgIH0KICNlbmRpZgogCi0gICAgZm9yRWFjaERvY3VtZW50KFtd
IChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICBhdXRvIHJ1blByb2Nlc3NpbmdTdGVwID0gWyZd
KFJlbmRlcmluZ1VwZGF0ZVN0ZXAgc3RlcCwgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKERvY3Vt
ZW50Jik+JiBwZXJEb2N1bWVudEZ1bmN0aW9uKSB7CisgICAgICAgIG1fcmVuZGVyaW5nVXBkYXRl
UmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShzdGVwKTsKKyAgICAgICAgZm9yRWFjaERvY3Vt
ZW50KHBlckRvY3VtZW50RnVuY3Rpb24pOworICAgIH07CisKKyAgICBydW5Qcm9jZXNzaW5nU3Rl
cChSZW5kZXJpbmdVcGRhdGVTdGVwOjpDdXJzb3JVcGRhdGUsIFtdIChEb2N1bWVudCYgZG9jdW1l
bnQpIHsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkKICAgICAg
ICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS51cGRhdGVDdXJzb3JJZk5lZWRlZCgpOwogICAg
IH0pOwpAQCAtMTU2OSw2ICsxNTk5LDggQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVy
aW5nKCkKICAgICB9KTsKICNlbmRpZgogCisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdT
dGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRl
KTsKKwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIC8vIHVwZGF0ZVRvdWNoRXZl
bnRSZWdpb25zKCkgbmVlZHMgdG8gYmUgY2FsbGVkIG9ubHkgb24gdGhlIHRvcCBkb2N1bWVudC4K
ICAgICBpZiAoUmVmUHRyPERvY3VtZW50PiBkb2N1bWVudCA9IG1haW5GcmFtZSgpLmRvY3VtZW50
KCkpCkBAIC0xNTkxLDEzICsxNjIzLDExIEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJlbmRl
cmluZygpCiAgICAgICAgIEFTU0VSVCghZnJhbWVWaWV3IHx8ICFmcmFtZVZpZXctPm5lZWRzTGF5
b3V0KCkpOwogICAgIH0KICNlbmRpZgotCi0gICAgQVNTRVJUKG1fdXBkYXRlUmVuZGVyaW5nUGhh
c2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBkYXRlUmVuZGVyaW5n
KTsKIH0KIAogdm9pZCBQYWdlOjpmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8Rmlu
YWxpemVSZW5kZXJpbmdVcGRhdGVGbGFncz4gZmxhZ3MpCiB7Ci0gICAgQVNTRVJUKG1fdXBkYXRl
UmVuZGVyaW5nUGhhc2VTdGFjay5sYXN0KCkgPT0gUmVuZGVyaW5nVXBkYXRlUGhhc2U6OkluVXBk
YXRlUmVuZGVyaW5nKTsKKyAgICBMT0coRXZlbnRMb29wLCAiUGFnZSAlcCBmaW5hbGl6ZVJlbmRl
cmluZ1VwZGF0ZSgpIiwgdGhpcyk7CiAKICAgICBhdXRvKiB2aWV3ID0gbWFpbkZyYW1lKCkudmll
dygpOwogICAgIGlmICghdmlldykKQEAgLTE2MDYsMjMgKzE2MzYsMzYgQEAgdm9pZCBQYWdlOjpm
aW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5kZXJpbmdVcGRhdGVG
bGFncz4gZmxhZ3MKICAgICBpZiAoZmxhZ3MuY29udGFpbnMoRmluYWxpemVSZW5kZXJpbmdVcGRh
dGVGbGFnczo6SW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMpKQogICAgICAgICB2aWV3
LT5pbnZhbGlkYXRlSW1hZ2VzV2l0aEFzeW5jRGVjb2RlcygpOwogCi0gICAgbV91cGRhdGVSZW5k
ZXJpbmdQaGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpMYXllckZsdXNo
aW5nOworICAgIG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMubGFzdCgpLnJlbW92ZShS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNoKTsKIAogICAgIHZpZXctPmZsdXNoQ29tcG9z
aXRpbmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpOwogCi0gICAgbV91cGRhdGVSZW5kZXJpbmdQ
aGFzZVN0YWNrLmxhc3QoKSA9IFJlbmRlcmluZ1VwZGF0ZVBoYXNlOjpQb3N0TGF5ZXJGbHVzaDsK
LQogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1h
aW5pbmdTdGVwcy5sYXN0KCkucmVtb3ZlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OlNjcm9sbGluZ1Ry
ZWVVcGRhdGUpOworCiAgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+
c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+
Y29tbWl0VHJlZVN0YXRlSWZOZWVkZWQoKTsKICAgICAgICAgaWYgKGZsYWdzLmNvbnRhaW5zKEZp
bmFsaXplUmVuZGVyaW5nVXBkYXRlRmxhZ3M6OkFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRp
b25zKSkKICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5hcHBseVNjcm9sbGluZ1Ry
ZWVMYXllclBvc2l0aW9ucygpOwotICAgICAgICAgICAgCisKICAgICAgICAgc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPmRpZENvbXBsZXRlUmVuZGVyaW5nVXBkYXRlKCk7CiAgICAgfQogI2VuZGlmCiAK
LSAgICBtX3VwZGF0ZVJlbmRlcmluZ1BoYXNlU3RhY2sucmVtb3ZlTGFzdCgpOworICAgIEFTU0VS
VChtX3JlbmRlcmluZ1VwZGF0ZVJlbWFpbmluZ1N0ZXBzLmxhc3QoKS5pc0VtcHR5KCkpOworICAg
IHJlbmRlcmluZ1VwZGF0ZUNvbXBsZXRlZCgpOworfQorCit2b2lkIFBhZ2U6OnJlbmRlcmluZ1Vw
ZGF0ZUNvbXBsZXRlZCgpCit7CisgICAgbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwcy5y
ZW1vdmVMYXN0KCk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBzdHJlYW0gPDwg
IlBhZ2UgIiA8PCB0aGlzIDw8ICIgcmVuZGVyaW5nVXBkYXRlQ29tcGxldGVkKCkgLSBzdGVwcyAi
IDw8IG1fcmVuZGVyaW5nVXBkYXRlUmVtYWluaW5nU3RlcHMgPDwgIiB1bmZ1bGZpbGxlZCBzdGVw
cyAiIDw8IG1fdW5mdWxmaWxsZWRSZXF1ZXN0ZWRTdGVwcyk7CisKKyAgICBpZiAobV91bmZ1bGZp
bGxlZFJlcXVlc3RlZFN0ZXBzKSB7CisgICAgICAgIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigp
LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIG1fdW5mdWxmaWxsZWRSZXF1ZXN0
ZWRTdGVwcyA9IHsgfTsKKyAgICB9CiB9CiAKIHZvaWQgUGFnZTo6c3VzcGVuZFNjcmlwdGVkQW5p
bWF0aW9ucygpCkBAIC0yOTI2LDcgKzI5NjksNyBAQCB2b2lkIFBhZ2U6OmFjY2Vzc2liaWxpdHlT
ZXR0aW5nc0RpZENoYW5nZSgpCiAgICAgZm9yRWFjaERvY3VtZW50KFtdIChhdXRvJiBkb2N1bWVu
dCkgewogICAgICAgICBkb2N1bWVudC5zdHlsZVNjb3BlKCkuZXZhbHVhdGVNZWRpYVF1ZXJpZXNG
b3JBY2Nlc3NpYmlsaXR5U2V0dGluZ3NDaGFuZ2UoKTsKICAgICAgICAgZG9jdW1lbnQudXBkYXRl
RWxlbWVudHNBZmZlY3RlZEJ5TWVkaWFRdWVyaWVzKCk7Ci0gICAgICAgIGRvY3VtZW50LnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIGRvY3VtZW50LnNjaGVkdWxlUmVuZGVyaW5n
VXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9uKTsKICAgICB9
KTsKIH0KIApAQCAtMjkzNiw3ICsyOTc5LDcgQEAgdm9pZCBQYWdlOjphcHBlYXJhbmNlRGlkQ2hh
bmdlKCkKICAgICAgICAgZG9jdW1lbnQuc3R5bGVTY29wZSgpLmRpZENoYW5nZVN0eWxlU2hlZXRF
bnZpcm9ubWVudCgpOwogICAgICAgICBkb2N1bWVudC5zdHlsZVNjb3BlKCkuZXZhbHVhdGVNZWRp
YVF1ZXJpZXNGb3JBcHBlYXJhbmNlQ2hhbmdlKCk7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZUVs
ZW1lbnRzQWZmZWN0ZWRCeU1lZGlhUXVlcmllcygpOwotICAgICAgICBkb2N1bWVudC5zY2hlZHVs
ZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICBkb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpNZWRpYVF1ZXJ5RXZhbHVhdGlvbik7CiAgICAgfSk7
CiB9CiAKQEAgLTMzMDEsNCArMzM0NCwyOSBAQCB2b2lkIFBhZ2U6Om1haW5GcmFtZURpZENoYW5n
ZVRvTm9uSW5pdGlhbEVtcHR5RG9jdW1lbnQoKQogICAgIG1fdXNlclN0eWxlU2hlZXRzUGVuZGlu
Z0luamVjdGlvbi5jbGVhcigpOwogfQogCitXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RG
OjpUZXh0U3RyZWFtJiB0cywgUmVuZGVyaW5nVXBkYXRlU3RlcCBzdGVwKQoreworICAgIHN3aXRj
aCAoc3RlcCkgeworICAgIGNhc2UgUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplOiB0cyA8PCAi
UmVzaXplIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpTY3JvbGw6IHRz
IDw8ICJTY3JvbGwiOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlh
UXVlcnlFdmFsdWF0aW9uOiB0cyA8PCAiTWVkaWFRdWVyeUV2YWx1YXRpb24iOyBicmVhazsKKyAg
ICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbnM6IHRzIDw8ICJBbmltYXRpb25z
IjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpGdWxsc2NyZWVuOiB0cyA8
PCAiRnVsbHNjcmVlbiI7IGJyZWFrOworICAgIGNhc2UgUmVuZGVyaW5nVXBkYXRlU3RlcDo6QW5p
bWF0aW9uRnJhbWVDYWxsYmFja3M6IHRzIDw8ICJBbmltYXRpb25GcmFtZUNhbGxiYWNrcyI7IGJy
ZWFrOworI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCisgICAgY2FzZSBSZW5kZXJp
bmdVcGRhdGVTdGVwOjpJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnM6IHRzIDw8ICJJbnRlcnNlY3Rp
b25PYnNlcnZhdGlvbnMiOyBicmVhazsKKyNlbmRpZgorI2lmIEVOQUJMRShSRVNJWkVfT0JTRVJW
RVIpCisgICAgY2FzZSBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemVPYnNlcnZhdGlvbnM6IHRz
IDw8ICJSZXNpemVPYnNlcnZhdGlvbnMiOyBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgUmVuZGVy
aW5nVXBkYXRlU3RlcDo6SW1hZ2VzOiB0cyA8PCAiSW1hZ2VzIjsgYnJlYWs7CisgICAgY2FzZSBS
ZW5kZXJpbmdVcGRhdGVTdGVwOjpXaGVlbEV2ZW50TW9uaXRvckNhbGxiYWNrczogdHMgPDwgIldo
ZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpDdXJzb3JVcGRhdGU6IHRzIDw8ICJDdXJzb3JVcGRhdGUiOyBicmVhazsKKyAgICBj
YXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkV2ZW50UmVnaW9uVXBkYXRlOiB0cyA8PCAiRXZlbnRS
ZWdpb25VcGRhdGUiOyBicmVhazsKKyAgICBjYXNlIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVy
Rmx1c2g6IHRzIDw8ICJMYXllckZsdXNoIjsgYnJlYWs7CisgICAgY2FzZSBSZW5kZXJpbmdVcGRh
dGVTdGVwOjpTY3JvbGxpbmdUcmVlVXBkYXRlOiB0cyA8PCAiU2Nyb2xsaW5nVHJlZVVwZGF0ZSI7
IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKaW5kZXggYWNiOTcwZmNjNTFiYmEwZjVhMGFmNmQzYWJjZjYzNmQxNzI3
NzUyYS4uYTAyMGU4ODFhMjZhZTY1MWY1NTE0NjIwMTVkODRjZWE5NzI1YTBhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTc0LDYgKzc0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRGVidWdnZXI7
CiB9CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgVGV4dFN0cmVhbTsKK30KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKQEAgLTE2OSw2ICsxNzMsNTIgQEAg
ZW51bSBjbGFzcyBGaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZUZsYWdzIDogdWludDhfdCB7CiAgICAg
SW52YWxpZGF0ZUltYWdlc1dpdGhBc3luY0RlY29kZXMgICAgPSAxIDw8IDEsCiB9OwogCitlbnVt
IGNsYXNzIFJlbmRlcmluZ1VwZGF0ZVN0ZXAgOiB1aW50MTZfdCB7CisgICAgUmVzaXplICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKKyAgICBTY3JvbGwgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMSA8PCAxLAorICAgIE1lZGlhUXVlcnlFdmFsdWF0aW9uICAgICAgICAgICAg
PSAxIDw8IDIsCisgICAgQW5pbWF0aW9ucyAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMywK
KyAgICBGdWxsc2NyZWVuICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCA0LAorICAgIEFuaW1h
dGlvbkZyYW1lQ2FsbGJhY2tzICAgICAgICAgPSAxIDw8IDUsCisjaWYgRU5BQkxFKElOVEVSU0VD
VElPTl9PQlNFUlZFUikKKyAgICBJbnRlcnNlY3Rpb25PYnNlcnZhdGlvbnMgICAgICAgID0gMSA8
PCA2LAorI2VuZGlmCisjaWYgRU5BQkxFKFJFU0laRV9PQlNFUlZFUikKKyAgICBSZXNpemVPYnNl
cnZhdGlvbnMgICAgICAgICAgICAgID0gMSA8PCA3LAorI2VuZGlmCisgICAgSW1hZ2VzICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgOCwKKyAgICBXaGVlbEV2ZW50TW9uaXRvckNhbGxi
YWNrcyAgICAgID0gMSA8PCA5LAorICAgIEN1cnNvclVwZGF0ZSAgICAgICAgICAgICAgICAgICAg
PSAxIDw8IDEwLAorICAgIEV2ZW50UmVnaW9uVXBkYXRlICAgICAgICAgICAgICAgPSAxIDw8IDEx
LAorICAgIExheWVyRmx1c2ggICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEyLAorICAgIFNj
cm9sbGluZ1RyZWVVcGRhdGUgICAgICAgICAgICAgPSAxIDw8IDEzLAorfTsKKworY29uc3RleHBy
IE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPiB1cGRhdGVSZW5kZXJpbmdTdGVwcyA9IHsK
KyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpSZXNpemUsCisgICAgUmVuZGVyaW5nVXBkYXRlU3Rl
cDo6U2Nyb2xsLAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6Ok1lZGlhUXVlcnlFdmFsdWF0aW9u
LAorICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFuaW1hdGlvbnMsCisgICAgUmVuZGVyaW5nVXBk
YXRlU3RlcDo6RnVsbHNjcmVlbiwKKyAgICBSZW5kZXJpbmdVcGRhdGVTdGVwOjpBbmltYXRpb25G
cmFtZUNhbGxiYWNrcywKKyNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQorICAgIFJl
bmRlcmluZ1VwZGF0ZVN0ZXA6OkludGVyc2VjdGlvbk9ic2VydmF0aW9ucywKKyNlbmRpZgorI2lm
IEVOQUJMRShSRVNJWkVfT0JTRVJWRVIpCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXpl
T2JzZXJ2YXRpb25zLAorI2VuZGlmCisgICAgUmVuZGVyaW5nVXBkYXRlU3RlcDo6SW1hZ2VzLAor
ICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25pdG9yQ2FsbGJhY2tzLAorICAg
IFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkN1cnNvclVwZGF0ZSwKKyAgICBSZW5kZXJpbmdVcGRhdGVT
dGVwOjpFdmVudFJlZ2lvblVwZGF0ZSwKK307CisKK2NvbnN0ZXhwciBhdXRvIGFsbFJlbmRlcmlu
Z1VwZGF0ZVN0ZXBzID0gdXBkYXRlUmVuZGVyaW5nU3RlcHMgfCBPcHRpb25TZXQ8UmVuZGVyaW5n
VXBkYXRlU3RlcD4geworICAgIFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gsCisgICAg
UmVuZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsaW5nVHJlZVVwZGF0ZSwKK307CisKKwogY2xhc3Mg
UGFnZSA6IHB1YmxpYyBTdXBwbGVtZW50YWJsZTxQYWdlPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFBhZ2U+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlKTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKQEAgLTQ4OSw3ICs1MzksNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBmaW5hbGl6ZVJlbmRlcmluZ1VwZGF0ZShPcHRpb25TZXQ8RmluYWxpemVSZW5k
ZXJpbmdVcGRhdGVGbGFncz4pOwogCiAgICAgLy8gU2NoZWR1bGUgYSByZXJuZGVyaW5nIHVwZGF0
ZSB0aGF0IGNvb3JkaW5hdGVzIHdpdGggZGlzcGxheSByZWZyZXNoLgotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVTdGVw
PiByZXF1ZXN0ZWRTdGVwcyk7CiAgICAgLy8gVHJpZ2dlciBhIHJlbmRlcmluZyB1cGRhdGUgaW4g
dGhlIGN1cnJlbnQgcnVubG9vcC4gT25seSB1c2VkIGZvciB0ZXN0aW5nLgogICAgIHZvaWQgdHJp
Z2dlclJlbmRlcmluZ1VwZGF0ZUZvclRlc3RpbmcoKTsKIApAQCAtNzcxLDEzICs4MjEsNiBAQCBw
dWJsaWM6CiAgICAgTW9ub3RvbmljVGltZSBsYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXN0UmVuZGVyaW5nVXBkYXRlVGltZXN0YW1wOyB9CiAKIHByaXZh
dGU6Ci0gICAgZW51bSBjbGFzcyBSZW5kZXJpbmdVcGRhdGVQaGFzZSA6IHVpbnQ4X3QgewotICAg
ICAgICBPdXRzaWRlLAotICAgICAgICBJblVwZGF0ZVJlbmRlcmluZywKLSAgICAgICAgTGF5ZXJG
bHVzaGluZywKLSAgICAgICAgUG9zdExheWVyRmx1c2gKLSAgICB9OwotCiAgICAgc3RydWN0IE5h
dmlnYXRpb24gewogICAgICAgICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW47CiAgICAgICAgIEZy
YW1lTG9hZFR5cGUgdHlwZTsKQEAgLTgxMyw2ICs4NTYsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZG9tVGltZXJBbGlnbm1lbnRJbnRlcnZhbEluY3JlYXNlVGltZXJGaXJlZCgpOwogCiAgICAgdm9p
ZCBkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCk7CisgICAgdm9pZCByZW5kZXJpbmdVcGRhdGVDb21w
bGV0ZWQoKTsKKyAgICB2b2lkIGNvbXB1dGVVbmZ1bGZpbGxlZFJlbmRlcmluZ1N0ZXBzKE9wdGlv
blNldDxSZW5kZXJpbmdVcGRhdGVTdGVwPik7CiAKICAgICBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXImIHJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcigpOwogCkBAIC0xMDIyLDggKzEwNjcsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc0VkaXRhYmxlUmVnaW9uRW5hYmxlZCB7IGZhbHNlIH07CiAj
ZW5kaWYKIAotICAgIFZlY3RvcjxSZW5kZXJpbmdVcGRhdGVQaGFzZSwgMj4gbV91cGRhdGVSZW5k
ZXJpbmdQaGFzZVN0YWNrOwotCisgICAgVmVjdG9yPE9wdGlvblNldDxSZW5kZXJpbmdVcGRhdGVT
dGVwPiwgMj4gbV9yZW5kZXJpbmdVcGRhdGVSZW1haW5pbmdTdGVwczsKKyAgICBPcHRpb25TZXQ8
UmVuZGVyaW5nVXBkYXRlU3RlcD4gbV91bmZ1bGZpbGxlZFJlcXVlc3RlZFN0ZXBzOworICAgIAog
ICAgIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uIHsgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSIH07CiAgICAgCiAgICAg
Ly8gRm9yIHRlc3RpbmcuCkBAIC0xMDg1LDQgKzExMzEsNiBAQCBpbmxpbmUgUGFnZUdyb3VwJiBQ
YWdlOjpncm91cCgpCiAgICAgcmV0dXJuICptX2dyb3VwOwogfQogCitXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgUmVuZGVyaW5nVXBkYXRlU3RlcCk7CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZU92ZXJsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXlD
b250cm9sbGVyLmNwcAppbmRleCA1YjQ3OGE0NTQwY2E4ODBmYzQxMmM0ZWE4YjEyNjliZTA2OTEw
MmRkLi45NjcxZmQ1MWYzODlmNWE5NmQyOTM5OWI3NTEzYjNkNjg0YTAwZWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwCkBAIC0zMTgsNyArMzE4
LDcgQEAgdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZURldmljZVNjYWxlRmFj
dG9yKCkKIAogdm9pZCBQYWdlT3ZlcmxheUNvbnRyb2xsZXI6OmRpZENoYW5nZVZpZXdFeHBvc2Vk
UmVjdCgpCiB7Ci0gICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgbV9w
YWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1
c2gpOwogfQogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxlcjo6ZGlkU2Nyb2xsRnJhbWUoRnJh
bWUmIGZyYW1lKQpAQCAtNDEyLDcgKzQxMiw3IEBAIGZsb2F0IFBhZ2VPdmVybGF5Q29udHJvbGxl
cjo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIFBhZ2VPdmVybGF5Q29udHJvbGxl
cjo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBHcmFwaGljc0xheWVyKikKIHsKLSAgICBtX3Bh
Z2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5ZXJGbHVzaCk7CiB9CiAKIHZvaWQgUGFn
ZU92ZXJsYXlDb250cm9sbGVyOjpkaWRDaGFuZ2VPdmVybGF5RnJhbWUoUGFnZU92ZXJsYXkmIG92
ZXJsYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNj
aGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
ci5jcHAKaW5kZXggN2U3MjRiMGNiYTJhYjhjZGE5YjU1MDA0MmU1NjY2MDdjMmUyMzgzNC4uNTVh
NmE2ZmRhODA5MjY2YTkwMmJkOTIyM2Q0N2UzMjIzNGFjYWVhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyLmNwcApAQCAtMjksOCArMjksMTAg
QEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNs
dWRlICJEaXNwbGF5UmVmcmVzaE1vbml0b3JNYW5hZ2VyLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01OCw3ICs2MCwxMSBAQCBib29sIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6c2NoZWR1bGVB
bmltYXRpb24oRnJhbWVzUGVyU2Vjb25kIHByZWZlcnJlZEZyYW1lcwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKICAgICBzZXRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmQocHJlZmVycmVk
RnJhbWVzUGVyU2Vjb25kKTsKLSAgICByZXR1cm4gRGlzcGxheVJlZnJlc2hNb25pdG9yTWFuYWdl
cjo6c2hhcmVkTWFuYWdlcigpLnNjaGVkdWxlQW5pbWF0aW9uKCp0aGlzKTsKKyAgICBhdXRvIHJl
c3VsdCA9IERpc3BsYXlSZWZyZXNoTW9uaXRvck1hbmFnZXI6OnNoYXJlZE1hbmFnZXIoKS5zY2hl
ZHVsZUFuaW1hdGlvbigqdGhpcyk7CisKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZlbnRMb29wLCBz
dHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlciBmb3IgcGFnZSAiIDw8ICZtX3BhZ2Ug
PDwgIiBzY2hlZHVsZUFuaW1hdGlvbigiIDw8IHByZWZlcnJlZEZyYW1lc1BlclNlY29uZCA8PCAi
ZnBzKSAtIHNjaGVkdWxlZCAiIDw8IHJlc3VsdCk7CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
CiB2b2lkIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6YWRqdXN0UmVuZGVyaW5nVXBkYXRlRnJl
cXVlbmN5KCkKQEAgLTc3LDYgKzgzLDggQEAgdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6
OmFkanVzdFJlbmRlcmluZ1VwZGF0ZUZyZXF1ZW5jeSgpCiAKIHZvaWQgUmVuZGVyaW5nVXBkYXRl
U2NoZWR1bGVyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiB7CisgICAgTE9HX1dJVEhfU1RS
RUFNKEV2ZW50TG9vcCwgc3RyZWFtIDw8ICJSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIgZm9yIHBh
Z2UgIiA8PCAmbV9wYWdlIDw8ICIgc2NoZWR1bGVUaW1lZFJlbmRlcmluZ1VwZGF0ZSgpIC0gYWxy
ZWFkeSBzY2hlZHVsZWQgIiA8PCBpc1NjaGVkdWxlZCgpIDw8ICIgcGFnZSB2aXNpYmxlICIgPDwg
bV9wYWdlLmlzVmlzaWJsZSgpKTsKKwogICAgIGlmIChpc1NjaGVkdWxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTEwNiw2ICsxMTQsOCBAQCBib29sIFJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxl
cjo6aXNTY2hlZHVsZWQoKSBjb25zdAogICAgIAogdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVs
ZXI6OnN0YXJ0VGltZXIoU2Vjb25kcyBkZWxheSkKIHsKKyAgICBMT0dfV0lUSF9TVFJFQU0oRXZl
bnRMb29wLCBzdHJlYW0gPDwgIlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlciBmb3IgcGFnZSAiIDw8
ICZtX3BhZ2UgPDwgIiBzdGFydFRpbWVyKCIgPDwgZGVsYXkgPDwgIikiKTsKKwogICAgIEFTU0VS
VCghaXNTY2hlZHVsZWQoKSk7CiAgICAgbV9yZWZyZXNoVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVy
PigqdGhpcywgJlJlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlcjo6ZGlzcGxheVJlZnJlc2hGaXJlZCk7
CiAgICAgbV9yZWZyZXNoVGltZXItPnN0YXJ0T25lU2hvdChkZWxheSk7CkBAIC0xMzMsNiArMTQz
LDggQEAgdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXI6OndpbmRvd1NjcmVlbkRpZENoYW5n
ZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQKIAogdm9pZCBSZW5kZXJpbmdVcGRhdGVTY2hl
ZHVsZXI6OmRpc3BsYXlSZWZyZXNoRmlyZWQoKQogeworICAgIExPR19XSVRIX1NUUkVBTShFdmVu
dExvb3AsIHN0cmVhbSA8PCAiUmVuZGVyaW5nVXBkYXRlU2NoZWR1bGVyIGZvciBwYWdlICIgPDwg
Jm1fcGFnZSA8PCAiIGRpc3BsYXlSZWZyZXNoRmlyZWQoKSIpOworCiAgICAgdHJhY2VQb2ludChU
cmlnZ2VyUmVuZGVyaW5nVXBkYXRlKTsKIAogICAgIGNsZWFyU2NoZWR1bGVkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRlcmluZ1VwZGF0ZVNjaGVkdWxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9SZW5kZXJpbmdVcGRhdGVTY2hlZHVsZXIuaAppbmRleCAzZjAyYjE0
YzIwODQ5OGY3ODgzNmZjMThkZTkzOWVlM2ZiMTg3ZTRlLi4yMDM4YTFhNTM1ZTJmNzFiYzM3ZDNj
ZjMyNjEzNGVmNjQ4NGQ1ZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1JlbmRl
cmluZ1VwZGF0ZVNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVuZGVyaW5n
VXBkYXRlU2NoZWR1bGVyLmgKQEAgLTY1LDkgKzY1LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRy
aWdnZXJSZW5kZXJpbmdVcGRhdGUoKTsKIAogICAgIFBhZ2UmIG1fcGFnZTsKLSAgICBib29sIG1f
c2NoZWR1bGVkIHsgZmFsc2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fcmVmcmVz
aFRpbWVyOwogICAgIEZyYW1lc1BlclNlY29uZCBtX3ByZWZlcnJlZEZyYW1lc1BlclNlY29uZCB7
IEZ1bGxTcGVlZEZyYW1lc1BlclNlY29uZCB9OworICAgIGJvb2wgbV9zY2hlZHVsZWQgeyBmYWxz
ZSB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNpemVPYnNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2VydmVyLmNwcAppbmRleCA2
ODBiODM4NTgwNmI3MmY0NzYzM2UzZWVmNTkxNmQ3NTA4YzAxY2ExLi41NTAwMzZiZTUwZTc4ZTQ2
NjI4NmQzMTE3ZjVmOGExZGZmY2VkMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1Jlc2l6ZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc2l6ZU9ic2Vy
dmVyLmNwcApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFJlc2l6ZU9ic2VydmVyOjpvYnNlcnZlKEVs
ZW1lbnQmIHRhcmdldCkKIAogICAgIGlmIChtX2RvY3VtZW50KSB7CiAgICAgICAgIG1fZG9jdW1l
bnQtPmFkZFJlc2l6ZU9ic2VydmVyKCp0aGlzKTsKLSAgICAgICAgbV9kb2N1bWVudC0+c2NoZWR1
bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgbV9kb2N1bWVudC0+c2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6UmVzaXplT2JzZXJ2YXRpb25zKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25p
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RNb25pdG9yLmNwcApp
bmRleCAxZDEzZmM2MTk3MTAzZmRiMDFlZmM5NDNmYWMxMDY1MjJjODEwNTY0Li4xNDc0MTc2ZTVm
MDRmMGRiMTkxMzQwOGVjYjM0MGFmYjdjNTgzNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1doZWVsRXZlbnRUZXN0TW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9XaGVlbEV2ZW50VGVzdE1vbml0b3IuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHZvaWQgV2hlZWxF
dmVudFRlc3RNb25pdG9yOjpzZXRUZXN0Q2FsbGJhY2tBbmRTdGFydE1vbml0b3JpbmcoYm9vbCBl
eHBlY3RXaGVlbEVuCiAgICAgVU5VU0VEX1BBUkFNKGV4cGVjdE1vbWVudHVtRW5kKTsKICNlbmRp
ZgogCi0gICAgbV9wYWdlLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgbV9wYWdlLnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OldoZWVsRXZlbnRNb25p
dG9yQ2FsbGJhY2tzKTsKIAogICAgIExPR19XSVRIX1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0
b3IsIHN0cmVhbSA8PCAiICBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnNldFRlc3RDYWxsYmFja0Fu
ZFN0YXJ0TW9uaXRvcmluZyAtIGV4cGVjdCBlbmQvY2FuY2VsICIgPDwgZXhwZWN0V2hlZWxFbmRP
ckNhbmNlbCA8PCAiLCBleHBlY3QgbW9tZW50dW0gZW5kICIgPDwgZXhwZWN0TW9tZW50dW1FbmQp
OwogfQpAQCAtMTIxLDEzICsxMjEsMTMgQEAgdm9pZCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OnJl
Y2VpdmVkV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogdm9pZCBX
aGVlbEV2ZW50VGVzdE1vbml0b3I6OnNjaGVkdWxlQ2FsbGJhY2tDaGVjaygpCiB7CiAgICAgaWYg
KGlzTWFpblRocmVhZCgpKSB7Ci0gICAgICAgIG1fcGFnZS5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZSgpOworICAgICAgICBtX3BhZ2Uuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBk
YXRlU3RlcDo6V2hlZWxFdmVudE1vbml0b3JDYWxsYmFja3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrUGFnZSA9IG1ha2VXZWFr
UHRyKG1fcGFnZSldIHsKICAgICAgICAgaWYgKHdlYWtQYWdlKQotICAgICAgICAgICAgd2Vha1Bh
Z2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgICAgICB3ZWFrUGFnZS0+c2No
ZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVuZGVyaW5nVXBkYXRlU3RlcDo6V2hlZWxFdmVudE1vbml0
b3JDYWxsYmFja3MpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2xpbnV4L1Jlc291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9saW51eC9SZXNvdXJjZVVzYWdlT3ZlcmxheUxpbnV4LmNwcAppbmRleCBjNTg3YWRkOTMx
YzdhODI1NDcxYjU0NjEyYmFlOWMyMzBlOWIxZTJhLi4xODY0Yjk5ZmY3MDllYTg0OTQ5ZDBlNTc1
OTQwZDNmYTRiOGY4ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2xpbnV4L1Jl
c291cmNlVXNhZ2VPdmVybGF5TGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbGlu
dXgvUmVzb3VyY2VVc2FnZU92ZXJsYXlMaW51eC5jcHAKQEAgLTEyNCw3ICsxMjQsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgbV9vdmVybGF5Lm92ZXJsYXkoKS5wYWdlKCktPnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIG1fb3ZlcmxheS5vdmVybGF5KCkucGFn
ZSgpLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZs
dXNoKTsKICAgICB9CiAKICAgICBSZXNvdXJjZVVzYWdlT3ZlcmxheSYgbV9vdmVybGF5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIu
bW0KaW5kZXggY2JmNGNkNGY0YTlkMmNhZjdiMzYzYzA3MTM4ZmNkNTU2YjAyOWQ4YS4uMzgyYTc4
MjFkOTk0MjQxNDFlZDUyOTJjZDIzNWM4Njk1ZGY2YWRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tCkBAIC0xMjEsNyAr
MTIxLDcgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6Om5vdGlm
eUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXkKICAgICBpZiAoIW1fY29udHJvbGxlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250cm9sbGVyLT5wYWdlKCkuc2NoZWR1bGVSZW5k
ZXJpbmdVcGRhdGUoKTsKKyAgICBtX2NvbnRyb2xsZXItPnBhZ2UoKS5zY2hlZHVsZVJlbmRlcmlu
Z1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXllckZsdXNoKTsKIH0KIAogdm9pZCBTZXJ2
aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdobGlnaHQ6OnBhaW50Q29udGVudHMoY29uc3QgR3Jh
cGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9h
dFJlY3QmLCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAK
aW5kZXggMjQ5YmI5NjlmMjllODgzNjNlNzYyZTJmNDEwY2FmMDczNjExNDQzZS4uZjEzOTIzNzFi
ZGIyMzMzNThlM2I0NTNlNTM1ZWIzOWMyZTk4ZDc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAK
QEAgLTEyMyw2ICsxMjMsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldEV2
ZW50VHJhY2tpbmdSZWdpb25zRGlydHkoKQogewogICAgIG1fZXZlbnRUcmFja2luZ1JlZ2lvbnNE
aXJ0eSA9IHRydWU7CiAgICAgLy8gV2UgaGF2ZSB0byBzY2hlZHVsZSBhIGNvbW1pdCwgYnV0IHRo
ZSBjb21wdXRlZCBub24tZmFzdCByZWdpb24gbWF5IG5vdCBoYXZlIGFjdHVhbGx5IGNoYW5nZWQu
CisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gZGlzYW1iaWd1YXRlIGJldHdlZW4gZXZlbnQg
cmVnaW9ucyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUsIGFuZCB0aG9zZSBpbiBHcmFwaGljc0xheWVy
cy4KICAgICBzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JN
YWMubW0KaW5kZXggNDYzN2I1ZDQzODUyMDdiNjViOTI4YjJlYzljMmQ0ZmY0N2RmNWMyMC4uYjQ5
ZjEwYzlmY2MwZmFmYmQ5NThkNzJlMGEwZDY4ZGM1Mjc5YmYzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRv
ck1hYy5tbQpAQCAtOTUsNyArOTUsOCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpo
YW5kbGVXaGVlbEV2ZW50KEZyYW1lVmlldyYsIGNvbnN0IFBsYXRmb3JtV2hlZWxFdgogCiB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1pdCgpCiB7Ci0g
ICAgbV9wYWdlLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpOworICAgIC8vIEZJWE1FOiBUaGlz
IG9uZSBuZWVkcyB3b3JrLgorICAgIG1fcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoUmVu
ZGVyaW5nVXBkYXRlU3RlcDo6U2Nyb2xsaW5nVHJlZVVwZGF0ZSk7CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3JNYWM6OmNvbW1pdFRyZWVTdGF0ZUlmTmVlZGVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTG9nZ2luZy5jcHAKaW5kZXggZWVmOGIzYTdmMjJjNTdkZDM1NDQ5ZDQ0OWRhODVkM2Y1
MGE5NWY2Yy4uOGNmMDE4N2M3NzAzNDg0ODg1NzZmZGVmZWQ4N2ZiMzMwNGNlZWI5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAKQEAgLTkwLDYgKzkwLDcgQEAgdm9pZCBpbml0aWFs
aXplTG9nQ2hhbm5lbHNJZk5lY2Vzc2FyeShPcHRpb25hbDxTdHJpbmc+IGxvZ0NoYW5uZWxTdHJp
bmcpCiAKICAgICBTdHJpbmcgZW5hYmxlZENoYW5uZWxzU3RyaW5nID0gbG9nQ2hhbm5lbFN0cmlu
ZyA/IGxvZ0NoYW5uZWxTdHJpbmcudmFsdWUoKSA6IGxvZ0xldmVsU3RyaW5nKCk7CiAgICAgV1RG
SW5pdGlhbGl6ZUxvZ0NoYW5uZWxTdGF0ZXNGcm9tU3RyaW5nKGxvZ0NoYW5uZWxzLCBsb2dDaGFu
bmVsQ291bnQsIGVuYWJsZWRDaGFubmVsc1N0cmluZy51dGY4KCkuZGF0YSgpKTsKKy8vICAgIExv
Z0V2ZW50TG9vcC5zdGF0ZSA9IFdURkxvZ0NoYW5uZWxTdGF0ZTo6T247CiB9CiAKIFdURkxvZ0No
YW5uZWwqIGdldExvZ0NoYW5uZWwoY29uc3QgU3RyaW5nJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9nZ2luZy5oCmluZGV4IDdkNmM4ODQ2MTEzZDg1ZDNmZDFhOWRjMzU4ZWM0YmIxZDk5NzJhMDUu
LmI1MzliZGUyY2Y5MzRiMGYwMjRmOGQ2MGYxNmRmMTRjOWE1M2Y4NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2dnaW5nLmgKQEAgLTU2LDYgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IE0oRWRpdGluZykgXAogICAgIE0oRU1FKSBcCiAgICAgTShFdmVudHMpIFwKKyAgICBNKEV2ZW50
TG9vcCkgXAogICAgIE0oRXZlbnRSZWdpb25zKSBcCiAgICAgTShGaWxlQVBJKSBcCiAgICAgTShG
aWx0ZXJzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5k
ZXggMDZmZDBiMDUwMjUwZDNiOGFlMjg3OTJlOTI3ZmVmZjFmNzNiOTQyNy4uMDFhNjQ2YzZkODkz
YWRjZTZmZGZiNmNmZWI3NjlhODIzOTExNDVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMTQwNiw3ICsxNDA2LDcgQEAgdm9pZCBSZW5kZXJFbGVt
ZW50OjpkaWRSZW1vdmVDYWNoZWRJbWFnZUNsaWVudChDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2Up
CiB2b2lkIFJlbmRlckVsZW1lbnQ6OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlRm9ySW1hZ2UoQ2Fj
aGVkSW1hZ2UmKQogewogICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0g
ICAgICAgIHBhZ2UtPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIHBhZ2UtPnNj
aGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkltYWdlcyk7CiB9CiAK
IGJvb2wgUmVuZGVyRWxlbWVudDo6cmVwYWludEZvclBhdXNlZEltYWdlQW5pbWF0aW9uc0lmTmVl
ZGVkKGNvbnN0IEludFJlY3QmIHZpc2libGVSZWN0LCBDYWNoZWRJbWFnZSYgY2FjaGVkSW1hZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmlu
ZGV4IDljYTBmOTNiYmJjMWQ1MWQ5MDBjOWZmOWY4MTA3MzY0OTU1ZGZlMmUuLjJkYmE1YjFkN2E5
MzA3OTZmNzA0MTAyODBhZDBkMTg3ZGUxZGI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zNjQ4LDExICszNjQ4LDEyIEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBo
aWNzTGF5ZXIqLCBjb25zdCBTdHJpCiB7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpu
b3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKQordm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXllciogbGF5ZXIp
CiB7CiAgICAgaWYgKHJlbmRlcmVyKCkucmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBjb21wb3NpdG9yKCkuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsK
KworICAgIGNvbXBvc2l0b3IoKS5ub3RpZnlGbHVzaFJlcXVpcmVkKGxheWVyKTsKIH0KIAogdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeUZsdXNoQmVmb3JlRGlzcGxheVJlZnJlc2goY29u
c3QgR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDZjMjQyY2NjZjA4NTlkMTNjYmJjNjBl
MmM4Nzk3NjViM2YyMDI5MzAuLjJjYzk1M2Q1OTgyYjA4YTUzMzc0ZGY3YjU5NDc2MzdiNGMxZjJi
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuY3BwCkBAIC01MjYsNyArNTI2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCkKIHsKICAgICBBU1NFUlQoIW1fZmx1c2hpbmdMYXll
cnMpOwogCi0gICAgcGFnZSgpLnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgcGFnZSgp
LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkxheWVyRmx1c2gp
OwogfQogCiBGbG9hdFJlY3QgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp2aXNpYmxlUmVjdEZvckxh
eWVyRmx1c2hpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5oCmluZGV4IGMzOTYxNDgzZjRlZTI2YzA1MTgwODJlN2VjMmNkOTc2
NTVhNjU0MWQuLmMxNTFlMjNkMGVmNjVmZWI5OWYwNTdlNWQyMjhlYmJmZDVjMTg1MzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKQEAg
LTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBHcmFwaGljc0xheWVycyBidWZmZXIg
c3RhdGUsIHdoaWNoIGdldHMgcHVzaGVkIHRvIHRoZSB1bmRlcmx5aW5nIHBsYXRmb3JtIGxheWVy
cwogICAgIC8vIGF0IHNwZWNpZmljIHRpbWVzLgotICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdV
cGRhdGUoKTsKKyAgICB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3JhcGhpY3NMYXll
ciopIG92ZXJyaWRlOwogICAgIHZvaWQgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKGJvb2wgaXNG
bHVzaFJvb3QgPSB0cnVlKTsKIAogICAgIC8vIENhbGxlZCB3aGVuIHRoZSBHcmFwaGljc0xheWVy
IGZvciB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgaGFzIGZsdXNoZWQgY2hhbmdlcyBpbnNpZGUgb2Yg
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCkuCkBAIC0zOTYsNyArMzk2LDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIHVwZGF0ZUNvbXBvc2l0aW5nUG9saWN5KCk7CiAgICAgCiAgICAgLy8gR3JhcGhp
Y3NMYXllckNsaWVudCBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJl
ZChjb25zdCBHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBwYWludENvbnRlbnRz
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3Qm
LCBHcmFwaGljc0xheWVyUGFpbnRCZWhhdmlvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBjdXN0b21Q
b3NpdGlvbkZvclZpc2libGVSZWN0Q29tcHV0YXRpb24oY29uc3QgR3JhcGhpY3NMYXllciosIEZs
b2F0UG9pbnQmKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzVHJhY2tpbmdSZXBhaW50cygp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNUcmFja2luZ1JlcGFpbnRzOyB9CkBAIC00NTQs
NiArNDUzLDggQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbmVlZHNDb21wb3NpdGluZ0ZvckNvbnRl
bnRPck92ZXJsYXlzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRl
KCk7CisKICAgICB2b2lkIGVuc3VyZVJvb3RMYXllcigpOwogICAgIHZvaWQgZGVzdHJveVJvb3RM
YXllcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUhvc3RUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
SG9zdFRleHR1cmVNYXBwZXIuY3BwCmluZGV4IGEwODI2NTVmZjdlMjlmOGE0MWEwYjA2ZjVkZjdl
YzBkYjk4NDAwMWQuLjI4ZTJjNmQxMGZhMDgyNjVkOGVkYjc0NDk1NjVlZTUyN2Y5ODI2ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlSG9zdFRleHR1
cmVNYXBwZXIuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdDo6bGF5ZXJG
bHVzaFRpbWVyRmlyZWQoKQogCiAgICAgLy8gSW4gY2FzZSBhbiBhbmltYXRpb24gaXMgcnVubmlu
Zywgd2Ugc2hvdWxkIGZsdXNoIGFnYWluIHNvb24uCiAgICAgaWYgKGRvd25jYXN0PEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyPihtX3Jvb3RMYXllci5nZXQoKSktPmxheWVyKCkuZGVzY2VuZGFu
dHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSkKLSAgICAgICAgbV93ZWJQYWdlLmNvcmVQ
YWdlKCktPnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CisgICAgICAgIG1fd2ViUGFnZS5jb3Jl
UGFnZSgpLT5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpMYXll
ckZsdXNoKTsKIH0KIAogTGF5ZXJUcmVlSG9zdDo6TGF5ZXJUcmVlSG9zdChXZWJQYWdlJiB3ZWJQ
YWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGM4
MWE2NjRkMjY5MTQ1MGMyMjkxNzY4MmQzZDQ3YTY2OGQ3ZmZmNDMuLmFhMDg3YTViNGEwY2FhNmEy
MTliMDg2YTYwMjFiM2UwYTk1ODZmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTkwODIsNyArOTA4Miw3IEBAIC0gKEJPT0wpX2ZsdXNoQ29tcG9z
aXRpbmdDaGFuZ2VzCiAtICh2b2lkKV9zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZUZvclBlbmRpbmdU
aWxlQ2FjaGVSZXBhaW50CiB7CiAgICAgaWYgKGF1dG8qIHBhZ2UgPSBfcHJpdmF0ZS0+cGFnZSkK
LSAgICAgICAgcGFnZS0+c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKKyAgICAgICAgcGFnZS0+
c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoV2ViQ29yZTo6UmVuZGVyaW5nVXBkYXRlU3RlcDo6TGF5
ZXJGbHVzaCk7CiB9CiAjZW5kaWYKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>