<?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>197238</bug_id>
          
          <creation_ts>2019-04-24 12:26:34 -0700</creation_ts>
          <short_desc>Age out unconverted Ad Click Attributions after one week.</short_desc>
          <delta_ts>2019-04-24 14:28:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1530085</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-24 12:26:34 -0700</bug_when>
    <thetext>Unconverted Ad Click Attributions should be aged out after a week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530086</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-24 12:27:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/50177349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530089</commentid>
    <comment_count>2</comment_count>
      <attachid>368158</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-24 12:34:56 -0700</bug_when>
    <thetext>Created attachment 368158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530094</commentid>
    <comment_count>3</comment_count>
      <attachid>368158</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-24 12:43:10 -0700</bug_when>
    <thetext>Comment on attachment 368158
Patch

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

&gt; Source/WebCore/loader/AdClickAttribution.cpp:99
&gt; +    m_timeOfAdClick = m_timeOfAdClick - maxAge - 1_s;

cannot we use m_timeOfAdClick = {} ? Then the time would be epoch, which I bet would be considered as expired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530095</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-24 12:44:54 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; Comment on attachment 368158 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=368158&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/AdClickAttribution.cpp:99
&gt; &gt; +    m_timeOfAdClick = m_timeOfAdClick - maxAge - 1_s;
&gt; 
&gt; cannot we use m_timeOfAdClick = {} ? Then the time would be epoch, which I
&gt; bet would be considered as expired.

Oh, I&apos;ll try that. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530127</commentid>
    <comment_count>5</comment_count>
      <attachid>368171</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2019-04-24 13:49:24 -0700</bug_when>
    <thetext>Created attachment 368171
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530154</commentid>
    <comment_count>6</comment_count>
      <attachid>368171</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-24 14:28:48 -0700</bug_when>
    <thetext>Comment on attachment 368171
Patch for landing

Clearing flags on attachment: 368171

Committed r244614: &lt;https://trac.webkit.org/changeset/244614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1530155</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-24 14:28:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368158</attachid>
            <date>2019-04-24 12:34:56 -0700</date>
            <delta_ts>2019-04-24 13:49:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197238-20190424123456.patch</filename>
            <type>text/plain</type>
            <size>25748</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVhODE3OWY0ZDJlNjU2
Zjk0MDgwZTBjYzFmMWIyZjBhOGM2ODcxMi4uNTJiOTg4MWM0MWViNTYxMTVmZWRkMWE2MGVlZTg1
NTNhODZiOTJjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTI0ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFnZSBvdXQgdW5jb252
ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zIGFmdGVyIG9uZSB3ZWVrLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MjM4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81MDE3NzM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHR3byBmdW5jdGlvbnMgQWRDbGlja0F0
dHJpYnV0aW9uOjptYXJrQXNFeHBpcmVkKCkKKyAgICAgICAgYW5kIEFkQ2xpY2tBdHRyaWJ1dGlv
bjo6aGFzRXhwaXJlZCgpIHdoaWNoIG1ha2UgdXNlIG9mIHRoZSBleGlzdGluZworICAgICAgICBt
X3RpbWVPZkFkQ2xpY2sgbWVtYmVyLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYWRDbGlj
a0F0dHJpYnV0aW9uL2V4cGlyZWQtYXR0cmlidXRpb25zLXJlbW92ZWQuaHRtbAorCisgICAgICAg
ICogbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENs
aWNrQXR0cmlidXRpb246Om1hcmtBc0V4cGlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWRDbGlj
a0F0dHJpYnV0aW9uOjpoYXNFeHBpcmVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvQWRDbGlj
a0F0dHJpYnV0aW9uLmg6CisKIDIwMTktMDQtMjQgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFdpdGggYXN5bmMgc2Nyb2xsaW5nIGVuYWJsZWQsIHRoaXMgTWF0
aE1MIHRlc3QgYXNzZXJ0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNmFjZTM5YTQ0ZmUxMzQyM2EwMDMwZGRhMzdl
OGYyMjExMTM4MmNjLi5mNmVlMmVmNDhiYWMxZTRjODI1Yjg3ZDc3ZWQ0Yjk1ZDcwM2MwMjQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA0LTI0ICBKb2huIFdpbGFuZGVyICA8d2ls
YW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFnZSBvdXQgdW5jb252ZXJ0ZWQgQWQgQ2xpY2sg
QXR0cmlidXRpb25zIGFmdGVyIG9uZSB3ZWVrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MjM4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDE3
NzM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpzdG9yZVVuY29udmVydGVkKCkgYW5kCisgICAgICAg
IEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNvbnZlcnQoKSBub3cgc3RhcnQgYnkgY2FsbGlu
ZyB0aGUgbmV3CisgICAgICAgIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyRXhwaXJl
ZCgpIGZ1bmN0aW9uIHRvIHJlbW92ZSBhbnkKKyAgICAgICAgZXhwaXJlZCwgdW5jb252ZXJ0ZWQg
YXR0cmlidXRpb25zIGJlZm9yZSBjb250aW51aW5nLgorCisgICAgICAgIFRoZSByZXN0IG9mIHRo
ZSBwYXRjaCBpcyBpbmZyYXN0cnVjdHVyZSB0byBhbGxvdyB0ZXN0cyB0byBleHBpcmUKKyAgICAg
ICAgYWxsIHVuY29udmVydGVkIGF0dHJpYnV0aW9ucyBlYXJseS4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpzdG9yZVVuY29udmVydGVkKToKKyAgICAgICAg
KFdlYktpdDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6Y29udmVydCk6CisgICAgICAgIChX
ZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyRXhwaXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6Om1hcmtBbGxVbmNvbnZlcnRlZEFz
RXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRy
aWJ1dGlvbk1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjptYXJrQWRDbGlja0F0dHJp
YnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6bWFya0FkQ2xpY2tBdHRyaWJ1dGlv
bnNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAg
ICAoV0tQYWdlU2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcpOgor
ICAgICAgICAoV0tQYWdlTWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5n
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Om1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE5LTA0LTI0ICBEYXZpZCBLaWx6ZXIg
IDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGR1ZSB0byBtaXNzaW5n
IFNQSSBkZWNsYXJhdGlvbiBvZiBrQVhTRnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZE5vdGlmaWNh
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAppbmRl
eCAzMjIyYzg5YWM5YzIxMDFhNjM0NzA1OGUyZTZlOWYyZDdkYzZiOGQxLi5kODhlNDQ0NzljOGZl
ZDQ1NWFiZDQ4YmJjYWQzNDUyNWQ1OGQ1NzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
QWRDbGlja0F0dHJpYnV0aW9uLmNwcApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBzdGF0aWMgY29uc3QgY2hhciBhZENsaWNrQXR0cmlidXRpb25QYXRoUHJlZml4W10gPSAi
Ly53ZWxsLWtub3duL2FkLWNsaWNrLWF0dHJpYnV0aW9uLyI7CiBjb25zdCBzaXplX3QgYWRDbGlj
a0NvbnZlcnNpb25EYXRhUGF0aFNlZ21lbnRTaXplID0gMjsKIGNvbnN0IHNpemVfdCBhZENsaWNr
UHJpb3JpdHlQYXRoU2VnbWVudFNpemUgPSAyOworY29uc3QgU2Vjb25kcyBtYXhBZ2UgeyAyNF9o
ICogNyB9OwogCiBib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aXNWYWxpZCgpIGNvbnN0CiB7CkBA
IC05Myw2ICs5NCwxNiBAQCBPcHRpb25hbDxTZWNvbmRzPiBBZENsaWNrQXR0cmlidXRpb246OmNv
bnZlcnRBbmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoQ29udmVyc2lvbgogICAgIHJldHVybiBzZWNv
bmRzOwogfQogCit2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6bWFya0FzRXhwaXJlZCgpCit7Cisg
ICAgbV90aW1lT2ZBZENsaWNrID0gbV90aW1lT2ZBZENsaWNrIC0gbWF4QWdlIC0gMV9zOworfQor
Citib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aGFzRXhwaXJlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFdhbGxUaW1lOjpub3coKSA+IG1fdGltZU9mQWRDbGljayArIG1heEFnZTsKK30KKwogYm9v
bCBBZENsaWNrQXR0cmlidXRpb246Omhhc0hpZ2hlclByaW9yaXR5VGhhbihjb25zdCBBZENsaWNr
QXR0cmlidXRpb24mIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXIubV9jb252ZXJzaW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oCmluZGV4IDVjNjc5
MzhkOGJhYzhmMWM5ZDEzMThmYzI5ZjEyOTY4NWU2MGNkYTQuLjNlMWFjNzQ1OTI2ZGZiOGUxYmU3
N2Y5NmY5NTkzN2FiNTMwYTE0MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9B
ZENsaWNrQXR0cmlidXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0
dHJpYnV0aW9uLmgKQEAgLTI0OCw2ICsyNDgsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU291cmNl
JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfTsKICAgICBjb25zdCBEZXN0aW5h
dGlvbiYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9OwogICAg
IE9wdGlvbmFsPFdhbGxUaW1lPiBlYXJsaWVzdFRpbWVUb1NlbmQoKSBjb25zdCB7IHJldHVybiBt
X2VhcmxpZXN0VGltZVRvU2VuZDsgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtBc0V4
cGlyZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGhhc0V4cGlyZWQoKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtDb252ZXJzaW9uQXNTZW50KCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCB3YXNDb252ZXJzaW9uU2VudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2Vy
LmNwcAppbmRleCBiNmVkNDIyZDczMjNkY2QxMTYxOGI0M2Q2MmU5NTgwMjEyYTIxMWUxLi4wOGIw
MGZiOTI2MjM5NmZiYzQxZjYwNDQxZmE1MDcxNDBhYTg5ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5j
cHAKQEAgLTQ1LDYgKzQ1LDggQEAgdXNpbmcgQ29udmVyc2lvbiA9IEFkQ2xpY2tBdHRyaWJ1dGlv
bjo6Q29udmVyc2lvbjsKIAogdm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjpzdG9yZVVu
Y29udmVydGVkKEFkQ2xpY2tBdHRyaWJ1dGlvbiYmIGF0dHJpYnV0aW9uKQogeworICAgIGNsZWFy
RXhwaXJlZCgpOworICAgIAogICAgIG1fdW5jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAu
c2V0KHN0ZDo6bWFrZV9wYWlyKGF0dHJpYnV0aW9uLnNvdXJjZSgpLCBhdHRyaWJ1dGlvbi5kZXN0
aW5hdGlvbigpKSwgV1RGTW92ZShhdHRyaWJ1dGlvbikpOwogfQogCkBAIC01NSw2ICs1Nyw4IEBA
IHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6c3RhcnRUaW1lcihTZWNvbmRzIHNlY29u
ZHMpCiAKIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6Y29udmVydChjb25zdCBTb3Vy
Y2UmIHNvdXJjZSwgY29uc3QgRGVzdGluYXRpb24mIGRlc3RpbmF0aW9uLCBDb252ZXJzaW9uJiYg
Y29udmVyc2lvbikKIHsKKyAgICBjbGVhckV4cGlyZWQoKTsKKwogICAgIGlmICghY29udmVyc2lv
bi5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTg3LDYgKzE5MSwxMyBAQCB2b2lk
IEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4oY29u
c3QgUmVnaXN0cmFibGVEb21haQogICAgIH0pOwogfQogCit2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlv
bk1hbmFnZXI6OmNsZWFyRXhwaXJlZCgpCit7CisgICAgbV91bmNvbnZlcnRlZEFkQ2xpY2tBdHRy
aWJ1dGlvbk1hcC5yZW1vdmVJZihbXShhdXRvJiBrZXlBbmRWYWx1ZSkgeworICAgICAgICByZXR1
cm4ga2V5QW5kVmFsdWUudmFsdWUuaGFzRXhwaXJlZCgpOworICAgIH0pOworfQorCiB2b2lkIEFk
Q2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnRvU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBpZiAobV91bmNvbnZl
cnRlZEFkQ2xpY2tBdHRyaWJ1dGlvbk1hcC5pc0VtcHR5KCkgJiYgbV9jb252ZXJ0ZWRBZENsaWNr
QXR0cmlidXRpb25NYXAuaXNFbXB0eSgpKQpAQCAtMjMwLDQgKzI0MSwxMCBAQCB2b2lkIEFkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFVSTCYmIHRl
c3RVUkwpCiAgICAgICAgIG1fY29udmVyc2lvbkJhc2VVUkxGb3JUZXN0aW5nID0gV1RGTW92ZSh0
ZXN0VVJMKTsKIH0KIAordm9pZCBBZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyOjptYXJrQWxsVW5j
b252ZXJ0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sKKyAgICBmb3IgKGF1dG8mIGF0dHJpYnV0
aW9uIDogbV91bmNvbnZlcnRlZEFkQ2xpY2tBdHRyaWJ1dGlvbk1hcC52YWx1ZXMoKSkKKyAgICAg
ICAgYXR0cmlidXRpb24ubWFya0FzRXhwaXJlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJp
YnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggN2RkZDFmYWFhM2QzNjBjMGJjYzlhYzRiMTFlMzFiYThl
NTVhYTE5Zi4uMjUwNzQ4YzA1ODQ1NTk5OWU3MjkxYjA5ODExY2RlYTdkZjc5ZGI3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRp
b25NYW5hZ2VyLmgKQEAgLTYzLDExICs2MywxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQaW5n
TG9hZEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpPiYmKT4mJiBwaW5nTG9hZEZ1bmN0aW9u
KSB7IG1fcGluZ0xvYWRGdW5jdGlvbiA9IFdURk1vdmUocGluZ0xvYWRGdW5jdGlvbik7IH0KICAg
ICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5p
bmdUZXN0ID0gdmFsdWU7IH0KICAgICB2b2lkIHNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFVS
TCYmKTsKKyAgICB2b2lkIG1hcmtBbGxVbmNvbnZlcnRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VGltZXIoU2Vjb25kcyk7CiAgICAgdm9pZCBmaXJl
Q29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0dHJpYnV0aW9uJik7CiAgICAgdm9pZCBm
aXJlUGVuZGluZ0NvbnZlcnNpb25SZXF1ZXN0cygpOworICAgIHZvaWQgY2xlYXJFeHBpcmVkKCk7
CiAKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTb3VyY2UsIERlc3RpbmF0aW9uPiwgQWRDbGlja0F0
dHJpYnV0aW9uPiBtX3VuY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwOwogICAgIEhhc2hN
YXA8c3RkOjpwYWlyPFNvdXJjZSwgRGVzdGluYXRpb24+LCBBZENsaWNrQXR0cmlidXRpb24+IG1f
Y29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAyODA3OGY0YjY0NGU1NWQ0ZDk4ZDk4
NWE5OGE1NmIwZjFmYjk2NWZjLi45MzBiMTgzMDU3NDg5NTMxYTkzMjA5MjU5ZTgwOTE0NTQ2Y2Fl
ZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMjU0OCw0ICsyNTQ4LDEyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFkQ2xp
Y2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklECiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6bWFya0FkQ2xp
Y2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkKKyAgICAgICAg
c2Vzc2lvbi0+bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisK
KyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBkMjM0
YmUzOTUxYzEwM2Y0ZjA2MTM2ZTIzYmRmYzlmZWI4MmViY2E4Li4xMzI0MjEyNDY3NzE4OTVhNmI4
YTgyZDczNjk2OTU3MThkYzViMWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMzAsNiArMzMwLDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJBZENsaWNrQXR0cmlidXRpb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVy
Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxG
b3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBVUkwmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKKyAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGlu
ZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIFdl
YkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXImIHN0b3JhZ2VRdW90YU1hbmFnZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdpbiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRl
eCA1NjhkYmY4NzI5MWM3ZjAzNDk1NmY4ZGI2YTk2MmY4MTI5NTBmNWU2Li45NjJhZTJlZTc5Mjdk
MWQwYTJkZjJiZmU4OTE4ZjQzM2UyMzlhYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE3MSw1ICsx
NzEsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
Q2xlYXJBZENsaWNrQXR0cmlidXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYwogICAgIFNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSkgLT4gKCkgQXN5bmMKICAgICBTZXRB
ZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFVSTCB1cmwpIC0+ICgpIEFzeW5jCisgICAgTWFya0FkQ2xpY2tBdHRyaWJ1dGlv
bnNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5
bmMKICAgICBSZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6OkNyZWRlbnRpYWwgY3JlZGVudGlhbCwg
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rpb25TcGFjZSkgLT4gKCkgQXN5bmMKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5k
ZXggMzM3YWQ5MWJkNGU0ZTg4MTljMDhmYjNmNGJmNTY4OTFjYzFlNDcxMy4uNDI2MWI2YTQyM2Yz
NzI5ZmJhMWUzZDViMjFiZjZjNjQ3MzU2NWNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTE3OCw0ICsxNzgsOSBAQCB2b2lkIE5l
dHdvcmtTZXNzaW9uOjpzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGlu
ZyhVUkwmJiB1cmwpCiAgICAgbV9hZENsaWNrQXR0cmlidXRpb24tPnNldENvbnZlcnNpb25VUkxG
b3JUZXN0aW5nKFdURk1vdmUodXJsKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Nlc3Npb246Om1hcmtB
ZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpCit7CisgICAgbV9hZENsaWNr
QXR0cmlidXRpb24tPm1hcmtBbGxVbmNvbnZlcnRlZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKaW5kZXggNDE0MTM0OWY3Zjc5OTNkMDRjMzBhNzljMGRiZTlkZDZl
M2E4OWZmMy4uMzJlMTUyMjJjZDdiMTQ5ODVhMTg3ZmMwNTQxOTg0NTI4Y2JkMTUxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtODYsNiAr
ODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYpOwogICAgIHZvaWQgc2V0
QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSk7CiAg
ICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhVUkwm
Jik7CisgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3Rpbmco
KTsKIAogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiwgUEFM
OjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5k
ZXggNDE0ZGM0OTZmNzU5MzMzYWY0NmFhOWYzOTIzNTc1NGUwMTVkMzk5Mi4uZWQ4NjM1ODIwMWI0
Y2VmNWIzZjZiMWEyZjcwZmNiOTNlZmI3NjRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCkBAIC0yNzQ2LDkgKzI3NDYsMTYgQEAgdm9pZCBXS1BhZ2VTZXRBZENs
aWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9v
bCB2YWwKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VTZXRBZENsaWNrQXR0cmlidXRpb25Db252
ZXJzaW9uVVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgVVJMUmVmLCBXS1Bh
Z2VTZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNh
bGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2b2lkIFdLUGFnZVNldEFkQ2xpY2tBdHRy
aWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBV
UkxSZWYsIFdLUGFnZVNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5n
RnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNrQ29udGV4dCkKIHsKICAgICB0b0ltcGwo
cGFnZSktPnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFVSTChV
UkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAo
KSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CiAgICAgfSk7CiB9CisKK3Zv
aWQgV0tQYWdlTWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFn
ZVJlZiBwYWdlLCBXS1BhZ2VNYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3Rp
bmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KQoreworICAgIHRvSW1w
bChwYWdlKS0+bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxs
YmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29u
dGV4dCk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2VQcml2YXRlLmgKaW5kZXggYzk5ZjczMmE2MjdkN2NkNjkxNGJlZGM0OTI1ZDhmMGIwMzRkM2Q3
Zi4uM2Q5NTlmZjg4OWRjY2NmZmM1ZTliMzIyMmFiNTQ2YjZkMDFjNDlkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaApAQCAtMTkxLDYgKzE5MSw4
IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGlt
ZXJGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRBZENs
aWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9v
bCB2YWx1ZSwgV0tQYWdlU2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJhY2tDb250ZXh0KTsKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZVNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nRnVu
Y3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRB
ZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwg
V0tVUkxSZWYgdXJsU3RyaW5nLCBXS1BhZ2VTZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9u
VVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpOwor
dHlwZWRlZiB2b2lkICgqV0tQYWdlTWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JU
ZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBX
S1BhZ2VNYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoV0tQYWdlUmVm
IHBhZ2UsIFdLUGFnZU1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZ0Z1
bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpOwogCiAjaWZkZWYgX19jcGx1
c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDQz
YmI3OTU5NWY4NjFmMzk1ZjAyMTJkM2E2ZjdkYzM2ZWZkYTMxMWYuLjQyNTBiZjk5MDIzMWM3ODgy
NjJlMjkyNDlmM2MyZDdhNzBlNWNhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcApAQCAtODk0Niw2ICs4OTQ2LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRB
ZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhjb25zdCBVUkwmIHVybCwK
ICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjptYXJrQWRDbGlja0F0dHJpYnV0aW9uc0Fz
RXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgIGlmICghbmV0d29ya1Byb2Nl
c3MtPmNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmV0d29ya1Byb2Nlc3Mt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Ok1hcmtBZENsaWNr
QXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyhtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Np
b25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0KK30KKwogI2lmIEVO
QUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogV2ViUGFnZVByb3h5OjpTcGVlY2hTeW50aGVzaXNEYXRh
JiBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0RhdGEoKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyNDEzOTU0MjEzNTk4NDdiMTZjYjE3MGQxMDVlZDE4
OWNhYzI3YWI3Li41NzBkMWRiNzkzNGJlODFmZDY4OTYxNTgwMjAzMzQwYmU5NWY2NzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTUwNyw2ICsxNTA3LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY2xlYXJBZENsaWNrQXR0cmlidXRpb24oQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGlt
ZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhjb25z
dCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgbWFya0FkQ2xp
Y2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJUykKICAgICB2b2lkIHNwZWVjaFN5
bnRoZXNpc1ZvaWNlTGlzdChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJTcGVlY2hT
eW50aGVzaXNWb2ljZT4mJik+JiYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGE4NjE3ZTRmN2U4ZGQ4YjM4NTZiOTNhZGE4NWNiMDlhODllMTcx
MGMuLjQ2Y2QwY2I0NjVhMGViMDQ2Yzc1NmViNjI4MjNlYmFhYzY1ZDc1ZjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAor
MjAxOS0wNC0yNCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZ2Ugb3V0IHVuY29udmVydGVkIEFkIENsaWNrIEF0dHJpYnV0aW9ucyBhZnRlciBvbmUgd2Vl
ay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzIz
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTAxNzczNDk+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGluZnJhc3RydWN0
dXJlIHRvIGFsbG93IHRlc3RzIHRvIGV4cGlyZSBhbGwgdW5jb252ZXJ0ZWQKKyAgICAgICAgYXR0
cmlidXRpb25zIGVhcmx5LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjptYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxl
KToKKwogMjAxOS0wNC0yNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEFkZCB1bml0IHRlc3QgZm9yIHIyMzkzMjIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCmluZGV4IGY1OGYwN2ZkZDMzN2EyMmE3YWM1ZjZmZjgwNDQ3ZGQxNDc2Mzc3YjEu
LmVkNDk2N2FlN2NlMWUxNDMwZTQyYjRiYTcxOGNmOWJhN2FkYzI5M2QgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5p
ZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbApAQCAtMzg5LDQgKzM4OSw1IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICB2b2lkIGNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Rocm91Z2hXZWJzaXRlRGF0YVJlbW92
YWwoKTsKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0
aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVy
c2lvblVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7CisgICAgdm9pZCBtYXJrQWRDbGlja0F0
dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBiZWU5ZGFm
Y2ZkZTg0ZjQyMTEwYzZiMmRiZDA2ZThkNTUxZDg1NzFkLi41YTNjZWUzMWVlODVmMzllNTgyN2Mw
M2FiYWQzMjIyNmQ4NmViNGY5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTI4OTcsNCArMjg5NywxMCBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5n
KEpTU3RyaW5nUmVmIHVybFN0cgogICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3Nh
Z2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwg
bWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAordm9p
ZCBUZXN0UnVubmVyOjptYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3Rpbmco
KQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNF
eHBpcmVkRm9yVGVzdGluZyIpKTsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNz
YWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCmluZGV4IDI2OWM2OWIyYzA5NDU3ODVhNjEwZmIyZWU4NTc1ODE5Y2UwYWQxMzku
LjJjYWZmOWFjOTlhZmM5MTUyMDNmMzZlYTZlOTVhZWM2OGVhOTM2OWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC01MDMs
NiArNTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhy
b3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9u
T3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRBZENsaWNr
QXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhKU1N0cmluZ1JlZik7CisgICAgdm9p
ZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAogcHJpdmF0
ZToKICAgICBUZXN0UnVubmVyKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IGI4MTFlNTllNDY0NWFhM2YxODQ5ZDY4MTI0ZTVmYmJlZWJlODgyNjcuLjBl
MTU3M2I4YTg0MmRhNDJmNjc5OWRmZTQwYjkzNmVkOGZjMmE5YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNjI3LDQgKzM2MjcsMTEgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6c2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3Rp
bmcoV0tVUkxSZWYgdXJsKQogICAgIHJ1blVudGlsKGNhbGxiYWNrQ29udGV4dC5kb25lLCBub1Rp
bWVvdXQpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjptYXJrQWRDbGlja0F0dHJpYnV0aW9u
c0FzRXhwaXJlZEZvclRlc3RpbmcoKQoreworICAgIEFkQ2xpY2tBdHRyaWJ1dGlvblZvaWRDYWxs
YmFja0NvbnRleHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsKKyAgICBXS1BhZ2VNYXJrQWRDbGlj
a0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcobV9tYWluV2ViVmlldy0+cGFnZSgpLCBh
ZENsaWNrQXR0cmlidXRpb25Wb2lkQ2FsbGJhY2ssICZjYWxsYmFja0NvbnRleHQpOworICAgIHJ1
blVudGlsKGNhbGxiYWNrQ29udGV4dC5kb25lLCBub1RpbWVvdXQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBmMjY5
YjM5ODFlMzhiNGE1ODkwMzkzOTA5YTVhNjQ0NjM4M2U4NzI4Li4wYmMxMGEyZGNkMDA3MjgyYjJh
YzQ3NThlZTg5OWQ2OTMwMWExYWMyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oCkBAIC0zMTcsNiArMzE3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBZENsaWNr
QXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwogICAgIHZvaWQgc2V0QWRD
bGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSk7CiAgICAg
dm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhXS1VSTFJl
Zik7CisgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3Rpbmco
KTsKIAogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBn
ZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDg2MmI5YTUyZjQxMDgyMDhlMDA1
MGU0Mzg3ZWJkYzQ5MzFjZjg2YzYuLjZmZmFiM2FhYTFkNWM5YTk3OGQzNzZiMDE4ZDU4YzFkZGM2
YmYwOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0x
NjYyLDcgKzE2NjIsMTIgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxG
b3JUZXN0aW5nKHVybCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KLSAgICAKKwor
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiTWFya0Fk
Q2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nIikpIHsKKyAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLm1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9y
VGVzdGluZygpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNGQ5YWNlN2Nh
NzU5YzdjNWUwMzllZWEwMjdkMjlhYzdiOWU4OWM5Li5jY2E0MjgzYmI1OTU4ZjliMjliZjkyNzRk
MzJmZWQ2NTY5ZTk4MzA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDQtMjQgIEpvaG4g
V2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgQWdlIG91dCB1bmNvbnZl
cnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnMgYWZ0ZXIgb25lIHdlZWsuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTcyMzgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzUwMTc3MzQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vZXhwaXJlZC1hdHRy
aWJ1dGlvbnMtcmVtb3ZlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvYWRDbGlja0F0dHJpYnV0aW9uL2V4cGlyZWQtYXR0cmlidXRpb25zLXJlbW92ZWQuaHRtbDog
QWRkZWQuCisKIDIwMTktMDQtMjQgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFdpdGggYXN5bmMgc2Nyb2xsaW5nIGVuYWJsZWQsIHRoaXMgTWF0aE1MIHRlc3Qg
YXNzZXJ0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmli
dXRpb24vZXhwaXJlZC1hdHRyaWJ1dGlvbnMtcmVtb3ZlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9leHBpcmVkLWF0dHJpYnV0aW9ucy1y
ZW1vdmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTdhZWRkMWZmNjY4MWNkOGY3MGQwZjg0
ODQ5MTM2NDRhNjU2YzEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hZENsaWNrQXR0cmlidXRpb24vZXhwaXJlZC1hdHRyaWJ1dGlvbnMtcmVtb3ZlZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0cyBleHBpcmF0aW9uIG9mIGFkIGNsaWNrIGF0dHJp
YnV0aW9uLgorCisKKworTm8gc3RvcmVkIEFkIENsaWNrIEF0dHJpYnV0aW9uIGRhdGEuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9leHBpcmVk
LWF0dHJpYnV0aW9ucy1yZW1vdmVkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xp
Y2tBdHRyaWJ1dGlvbi9leHBpcmVkLWF0dHJpYnV0aW9ucy1yZW1vdmVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2EzNTkzMTY2ZTJlZDM0ZWIxODhkYmM5YjAzYWMyY2MzZThkNDI4OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2V4cGlyZWQt
YXR0cmlidXRpb25zLXJlbW92ZWQuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUgaHRt
bD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZpZXdwb3J0PXRydWUgXSAt
LT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4K
KyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBp
bml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAgIDxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJzZXRU
aW1lb3V0KHJ1blRlc3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UZXN0cyBleHBpcmF0
aW9uIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uLjwvZGl2PgorPGEgaWQ9InRhcmdldExpbmsiIGhy
ZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmlidXRpb24vZXhwaXJlZC1hdHRy
aWJ1dGlvbnMtcmVtb3ZlZC5odG1sP3N0ZXBUd28iIGFkY2FtcGFpZ25pZD0iMyIgYWRkZXN0aW5h
dGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5MaW5rPC9hPjxicj4KKzxkaXYgaWQ9Im91dHB1
dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIHByZXBhcmVUZXN0KCk7CisKKyAgICBmdW5jdGlvbiBh
Y3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAgdmFyIGNlbnRlclggPSBlbGVt
ZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICAgICAgdmFyIGNl
bnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IC8gMjsKKyAg
ICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50ZXJZKS50aGVuKAorICAgICAg
ICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iiku
aW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOworICAgICAgICAgICAgICAgIHRl
YXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICk7CisgICAgfQorCisg
ICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaCA9PT0gIj9zdGVwVHdvIikg
eworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4
cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgICAgICAgICAgICAgbGV0IGltYWdlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAgICAgICAgIGltYWdlRWxlbWVu
dC5zcmMgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNrQXR0cmlidXRpb24vcmVzb3Vy
Y2VzL3JlZGlyZWN0VG9Db252ZXJzaW9uLnBocD9jb252ZXJzaW9uRGF0YT0xMiI7CisgICAgICAg
ICAgICAgICAgaW1hZ2VFbGVtZW50LmlkID0gInBpeGVsIjsKKyAgICAgICAgICAgICAgICBpbWFn
ZUVsZW1lbnQub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0TGlu
ayIpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7CisgICAgICAgICAgICAgICAgICAgIHRlYXJE
b3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFyZ2V0TGluayIpOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRlc3RSdW5uZXIuIjsKKyAgICAg
ICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>368171</attachid>
            <date>2019-04-24 13:49:24 -0700</date>
            <delta_ts>2019-04-24 14:28:48 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-197238-20190424134923.patch</filename>
            <type>text/plain</type>
            <size>25709</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0NTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGVhODE3OWY0ZDJlNjU2
Zjk0MDgwZTBjYzFmMWIyZjBhOGM2ODcxMi4uODA4ZjAxYjQ5YzY5MGIzOTE1MjZjNWM1NjBhNzA2
ZmVjZDVkMmNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE5LTA0LTI0ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFnZSBvdXQgdW5jb252
ZXJ0ZWQgQWQgQ2xpY2sgQXR0cmlidXRpb25zIGFmdGVyIG9uZSB3ZWVrLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MjM4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81MDE3NzM0OT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4K
KworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHR3byBmdW5jdGlvbnMgQWRDbGlja0F0dHJp
YnV0aW9uOjptYXJrQXNFeHBpcmVkKCkKKyAgICAgICAgYW5kIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6
aGFzRXhwaXJlZCgpIHdoaWNoIG1ha2UgdXNlIG9mIHRoZSBleGlzdGluZworICAgICAgICBtX3Rp
bWVPZkFkQ2xpY2sgbWVtYmVyLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvYWRDbGlja0F0
dHJpYnV0aW9uL2V4cGlyZWQtYXR0cmlidXRpb25zLXJlbW92ZWQuaHRtbAorCisgICAgICAgICog
bG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBZENsaWNr
QXR0cmlidXRpb246Om1hcmtBc0V4cGlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWRDbGlja0F0
dHJpYnV0aW9uOjpoYXNFeHBpcmVkIGNvbnN0KToKKyAgICAgICAgKiBsb2FkZXIvQWRDbGlja0F0
dHJpYnV0aW9uLmg6CisKIDIwMTktMDQtMjQgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFdpdGggYXN5bmMgc2Nyb2xsaW5nIGVuYWJsZWQsIHRoaXMgTWF0aE1M
IHRlc3QgYXNzZXJ0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhNmFjZTM5YTQ0ZmUxMzQyM2EwMDMwZGRhMzdlOGYy
MjExMTM4MmNjLi45OGQxOGRjODY2NDYwNzA5ODZlNTZmZGM5NTE3YmU2ZjM2ZTI0ODBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE5LTA0LTI0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFnZSBvdXQgdW5jb252ZXJ0ZWQgQWQgQ2xpY2sgQXR0
cmlidXRpb25zIGFmdGVyIG9uZSB3ZWVrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTk3MjM4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDE3NzM0
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBBZENsaWNr
QXR0cmlidXRpb25NYW5hZ2VyOjpzdG9yZVVuY29udmVydGVkKCkgYW5kCisgICAgICAgIEFkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNvbnZlcnQoKSBub3cgc3RhcnQgYnkgY2FsbGluZyB0aGUg
bmV3CisgICAgICAgIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyRXhwaXJlZCgpIGZ1
bmN0aW9uIHRvIHJlbW92ZSBhbnkKKyAgICAgICAgZXhwaXJlZCwgdW5jb252ZXJ0ZWQgYXR0cmli
dXRpb25zIGJlZm9yZSBjb250aW51aW5nLgorCisgICAgICAgIFRoZSByZXN0IG9mIHRoZSBwYXRj
aCBpcyBpbmZyYXN0cnVjdHVyZSB0byBhbGxvdyB0ZXN0cyB0byBleHBpcmUKKyAgICAgICAgYWxs
IHVuY29udmVydGVkIGF0dHJpYnV0aW9ucyBlYXJseS4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL0FkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBZENs
aWNrQXR0cmlidXRpb25NYW5hZ2VyOjpzdG9yZVVuY29udmVydGVkKToKKyAgICAgICAgKFdlYktp
dDo6QWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6Y29udmVydCk6CisgICAgICAgIChXZWJLaXQ6
OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyRXhwaXJlZCk6CisgICAgICAgIChXZWJL
aXQ6OkFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6Om1hcmtBbGxVbmNvbnZlcnRlZEFzRXhwaXJl
ZEZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRyaWJ1dGlv
bk1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjptYXJrQWRDbGlja0F0dHJpYnV0aW9u
c0FzRXhwaXJlZEZvclRlc3RpbmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4
cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQ
YWdlU2V0QWRDbGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcpOgorICAgICAg
ICAoV0tQYWdlTWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1h
cmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE5LTA0LTI0ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGR1ZSB0byBtaXNzaW5nIFNQSSBk
ZWNsYXJhdGlvbiBvZiBrQVhTRnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZE5vdGlmaWNhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmNwcAppbmRleCAzMjIy
Yzg5YWM5YzIxMDFhNjM0NzA1OGUyZTZlOWYyZDdkYzZiOGQxLi41ODEwMDk0ZjgwNjY0ZTg3YzQz
MWM4MmVlYTM4YTM5OWQxYTk0ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
QWRDbGlja0F0dHJpYnV0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQWRDbGlj
a0F0dHJpYnV0aW9uLmNwcApAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBz
dGF0aWMgY29uc3QgY2hhciBhZENsaWNrQXR0cmlidXRpb25QYXRoUHJlZml4W10gPSAiLy53ZWxs
LWtub3duL2FkLWNsaWNrLWF0dHJpYnV0aW9uLyI7CiBjb25zdCBzaXplX3QgYWRDbGlja0NvbnZl
cnNpb25EYXRhUGF0aFNlZ21lbnRTaXplID0gMjsKIGNvbnN0IHNpemVfdCBhZENsaWNrUHJpb3Jp
dHlQYXRoU2VnbWVudFNpemUgPSAyOworY29uc3QgU2Vjb25kcyBtYXhBZ2UgeyAyNF9oICogNyB9
OwogCiBib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aXNWYWxpZCgpIGNvbnN0CiB7CkBAIC05Myw2
ICs5NCwxNiBAQCBPcHRpb25hbDxTZWNvbmRzPiBBZENsaWNrQXR0cmlidXRpb246OmNvbnZlcnRB
bmRHZXRFYXJsaWVzdFRpbWVUb1NlbmQoQ29udmVyc2lvbgogICAgIHJldHVybiBzZWNvbmRzOwog
fQogCit2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6bWFya0FzRXhwaXJlZCgpCit7CisgICAgbV90
aW1lT2ZBZENsaWNrID0geyB9OworfQorCitib29sIEFkQ2xpY2tBdHRyaWJ1dGlvbjo6aGFzRXhw
aXJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdhbGxUaW1lOjpub3coKSA+IG1fdGltZU9mQWRD
bGljayArIG1heEFnZTsKK30KKwogYm9vbCBBZENsaWNrQXR0cmlidXRpb246Omhhc0hpZ2hlclBy
aW9yaXR5VGhhbihjb25zdCBBZENsaWNrQXR0cmlidXRpb24mIG90aGVyKSBjb25zdAogewogICAg
IGlmICghb3RoZXIubV9jb252ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0FkQ2xpY2tBdHRyaWJ1dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0FkQ2xpY2tB
dHRyaWJ1dGlvbi5oCmluZGV4IDVjNjc5MzhkOGJhYzhmMWM5ZDEzMThmYzI5ZjEyOTY4NWU2MGNk
YTQuLjNlMWFjNzQ1OTI2ZGZiOGUxYmU3N2Y5NmY5NTkzN2FiNTMwYTE0MGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9BZENsaWNrQXR0cmlidXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQWRDbGlja0F0dHJpYnV0aW9uLmgKQEAgLTI0OCw2ICsyNDgsOCBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU291cmNlJiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZTsgfTsKICAgICBjb25zdCBEZXN0aW5hdGlvbiYgZGVzdGluYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2Rlc3RpbmF0aW9uOyB9OwogICAgIE9wdGlvbmFsPFdhbGxUaW1lPiBlYXJsaWVzdFRpbWVU
b1NlbmQoKSBjb25zdCB7IHJldHVybiBtX2VhcmxpZXN0VGltZVRvU2VuZDsgfTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIG1hcmtBc0V4cGlyZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0V4cGlyZWQoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hcmtDb252ZXJz
aW9uQXNTZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB3YXNDb252ZXJzaW9uU2VudCgp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xp
Y2tBdHRyaWJ1dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9B
ZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmNwcAppbmRleCBiNmVkNDIyZDczMjNkY2QxMTYxOGI0
M2Q2MmU5NTgwMjEyYTIxMWUxLi4wOGIwMGZiOTI2MjM5NmZiYzQxZjYwNDQxZmE1MDcxNDBhYTg5
ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0FkQ2xpY2tBdHRy
aWJ1dGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQWRD
bGlja0F0dHJpYnV0aW9uTWFuYWdlci5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgdXNpbmcgQ29udmVy
c2lvbiA9IEFkQ2xpY2tBdHRyaWJ1dGlvbjo6Q29udmVyc2lvbjsKIAogdm9pZCBBZENsaWNrQXR0
cmlidXRpb25NYW5hZ2VyOjpzdG9yZVVuY29udmVydGVkKEFkQ2xpY2tBdHRyaWJ1dGlvbiYmIGF0
dHJpYnV0aW9uKQogeworICAgIGNsZWFyRXhwaXJlZCgpOworICAgIAogICAgIG1fdW5jb252ZXJ0
ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuc2V0KHN0ZDo6bWFrZV9wYWlyKGF0dHJpYnV0aW9uLnNv
dXJjZSgpLCBhdHRyaWJ1dGlvbi5kZXN0aW5hdGlvbigpKSwgV1RGTW92ZShhdHRyaWJ1dGlvbikp
OwogfQogCkBAIC01NSw2ICs1Nyw4IEBAIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlcjo6
c3RhcnRUaW1lcihTZWNvbmRzIHNlY29uZHMpCiAKIHZvaWQgQWRDbGlja0F0dHJpYnV0aW9uTWFu
YWdlcjo6Y29udmVydChjb25zdCBTb3VyY2UmIHNvdXJjZSwgY29uc3QgRGVzdGluYXRpb24mIGRl
c3RpbmF0aW9uLCBDb252ZXJzaW9uJiYgY29udmVyc2lvbikKIHsKKyAgICBjbGVhckV4cGlyZWQo
KTsKKwogICAgIGlmICghY29udmVyc2lvbi5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTg3LDYgKzE5MSwxMyBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFy
Rm9yUmVnaXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIH0pOwogfQog
Cit2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OmNsZWFyRXhwaXJlZCgpCit7CisgICAg
bV91bmNvbnZlcnRlZEFkQ2xpY2tBdHRyaWJ1dGlvbk1hcC5yZW1vdmVJZihbXShhdXRvJiBrZXlB
bmRWYWx1ZSkgeworICAgICAgICByZXR1cm4ga2V5QW5kVmFsdWUudmFsdWUuaGFzRXhwaXJlZCgp
OworICAgIH0pOworfQorCiB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnRvU3RyaW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29u
c3QKIHsKICAgICBpZiAobV91bmNvbnZlcnRlZEFkQ2xpY2tBdHRyaWJ1dGlvbk1hcC5pc0VtcHR5
KCkgJiYgbV9jb252ZXJ0ZWRBZENsaWNrQXR0cmlidXRpb25NYXAuaXNFbXB0eSgpKQpAQCAtMjMw
LDQgKzI0MSwxMCBAQCB2b2lkIEFkQ2xpY2tBdHRyaWJ1dGlvbk1hbmFnZXI6OnNldENvbnZlcnNp
b25VUkxGb3JUZXN0aW5nKFVSTCYmIHRlc3RVUkwpCiAgICAgICAgIG1fY29udmVyc2lvbkJhc2VV
UkxGb3JUZXN0aW5nID0gV1RGTW92ZSh0ZXN0VVJMKTsKIH0KIAordm9pZCBBZENsaWNrQXR0cmli
dXRpb25NYW5hZ2VyOjptYXJrQWxsVW5jb252ZXJ0ZWRBc0V4cGlyZWRGb3JUZXN0aW5nKCkKK3sK
KyAgICBmb3IgKGF1dG8mIGF0dHJpYnV0aW9uIDogbV91bmNvbnZlcnRlZEFkQ2xpY2tBdHRyaWJ1
dGlvbk1hcC52YWx1ZXMoKSkKKyAgICAgICAgYXR0cmlidXRpb24ubWFya0FzRXhwaXJlZCgpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQWRDbGlja0F0dHJpYnV0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKaW5kZXggN2RkZDFmYWFh
M2QzNjBjMGJjYzlhYzRiMTFlMzFiYThlNTVhYTE5Zi4uMjUwNzQ4YzA1ODQ1NTk5OWU3MjkxYjA5
ODExY2RlYTdkZjc5ZGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9BZENsaWNrQXR0cmlidXRpb25NYW5hZ2VyLmgKQEAgLTYzLDExICs2MywxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRQaW5nTG9hZEZ1bmN0aW9uKEZ1bmN0aW9uPHZvaWQoTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYp
PiYmKT4mJiBwaW5nTG9hZEZ1bmN0aW9uKSB7IG1fcGluZ0xvYWRGdW5jdGlvbiA9IFdURk1vdmUo
cGluZ0xvYWRGdW5jdGlvbik7IH0KICAgICB2b2lkIHNldE92ZXJyaWRlVGltZXJGb3JUZXN0aW5n
KGJvb2wgdmFsdWUpIHsgbV9pc1J1bm5pbmdUZXN0ID0gdmFsdWU7IH0KICAgICB2b2lkIHNldENv
bnZlcnNpb25VUkxGb3JUZXN0aW5nKFVSTCYmKTsKKyAgICB2b2lkIG1hcmtBbGxVbmNvbnZlcnRl
ZEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VGltZXIo
U2Vjb25kcyk7CiAgICAgdm9pZCBmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgQWRDbGlja0F0
dHJpYnV0aW9uJik7CiAgICAgdm9pZCBmaXJlUGVuZGluZ0NvbnZlcnNpb25SZXF1ZXN0cygpOwor
ICAgIHZvaWQgY2xlYXJFeHBpcmVkKCk7CiAKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjxTb3VyY2Us
IERlc3RpbmF0aW9uPiwgQWRDbGlja0F0dHJpYnV0aW9uPiBtX3VuY29udmVydGVkQWRDbGlja0F0
dHJpYnV0aW9uTWFwOwogICAgIEhhc2hNYXA8c3RkOjpwYWlyPFNvdXJjZSwgRGVzdGluYXRpb24+
LCBBZENsaWNrQXR0cmlidXRpb24+IG1fY29udmVydGVkQWRDbGlja0F0dHJpYnV0aW9uTWFwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRl
eCAyODA3OGY0YjY0NGU1NWQ0ZDk4ZDk4NWE5OGE1NmIwZjFmYjk2NWZjLi45MzBiMTgzMDU3NDg5
NTMxYTkzMjA5MjU5ZTgwOTE0NTQ2Y2FlZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjU0OCw0ICsyNTQ4LDEyIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklECiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Np
b24oc2Vzc2lvbklEKSkKKyAgICAgICAgc2Vzc2lvbi0+bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNB
c0V4cGlyZWRGb3JUZXN0aW5nKCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAppbmRleCBkMjM0YmUzOTUxYzEwM2Y0ZjA2MTM2ZTIzYmRmYzlmZWI4MmVi
Y2E4Li4xMzI0MjEyNDY3NzE4OTVhNmI4YTgyZDczNjk2OTU3MThkYzViMWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zMzAsNiArMzMw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBZENsaWNrQXR0cmlidXRpb24oUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRBZENsaWNr
QXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgYm9vbCB2
YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEFkQ2xpY2tB
dHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBVUkwmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIG1hcmtBZENsaWNrQXR0cmli
dXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKIAogICAgIFdlYkNvcmU6OlN0b3JhZ2VRdW90YU1hbmFnZXImIHN0b3Jh
Z2VRdW90YU1hbmFnZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OkNsaWVudE9yaWdp
biYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA1NjhkYmY4NzI5MWM3ZjAzNDk1NmY4ZGI2YTk2MmY4
MTI5NTBmNWU2Li45NjJhZTJlZTc5MjdkMWQwYTJkZjJiZmU4OTE4ZjQzM2UyMzlhYzc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTE3MSw1ICsxNzEsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2xlYXJBZENsaWNrQXR0cmlidXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFNldEFkQ2xpY2tBdHRyaWJ1dGlvbk92
ZXJyaWRlVGltZXJGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1
ZSkgLT4gKCkgQXN5bmMKICAgICBTZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwpIC0+ICgpIEFzeW5jCisg
ICAgTWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAgICBSZW1vdmVDcmVkZW50aWFsKFdlYkNvcmU6
OkNyZWRlbnRpYWwgY3JlZGVudGlhbCwgV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlIHByb3RlY3Rp
b25TcGFjZSkgLT4gKCkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggMzM3YWQ5MWJkNGU0ZTg4MTljMDhmYjNmNGJmNTY4
OTFjYzFlNDcxMy4uNDI2MWI2YTQyM2YzNzI5ZmJhMWUzZDViMjFiZjZjNjQ3MzU2NWNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAg
LTE3OCw0ICsxNzgsOSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjpzZXRBZENsaWNrQXR0cmlidXRp
b25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhVUkwmJiB1cmwpCiAgICAgbV9hZENsaWNrQXR0cmli
dXRpb24tPnNldENvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFdURk1vdmUodXJsKSk7CiB9CiAKK3Zv
aWQgTmV0d29ya1Nlc3Npb246Om1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVz
dGluZygpCit7CisgICAgbV9hZENsaWNrQXR0cmlidXRpb24tPm1hcmtBbGxVbmNvbnZlcnRlZEFz
RXhwaXJlZEZvclRlc3RpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggNDE0MTM0OWY3
Zjc5OTNkMDRjMzBhNzljMGRiZTlkZDZlM2E4OWZmMy4uMzJlMTUyMjJjZDdiMTQ5ODVhMTg3ZmMw
NTQxOTg0NTI4Y2JkMTUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckFk
Q2xpY2tBdHRyaWJ1dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYpOwogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZv
clRlc3RpbmcoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252
ZXJzaW9uVVJMRm9yVGVzdGluZyhVUkwmJik7CisgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0
aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAogcHJvdGVjdGVkOgogICAgIE5ldHdvcmtTZXNz
aW9uKE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggNDE0ZGM0OTZmNzU5MzMzYWY0NmFhOWYzOTIzNTc1
NGUwMTVkMzk5Mi4uZWQ4NjM1ODIwMWI0Y2VmNWIzZjZiMWEyZjcwZmNiOTNlZmI3NjRmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0yNzQ2LDkgKzI3NDYs
MTYgQEAgdm9pZCBXS1BhZ2VTZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVz
dGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCB2YWwKICAgICB9KTsKIH0KIAotdm9pZCBXS1BhZ2VT
ZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhXS1BhZ2VSZWYgcGFn
ZSwgV0tVUkxSZWYgVVJMUmVmLCBXS1BhZ2VTZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRp
bWVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0NvbnRleHQpCit2
b2lkIFdLUGFnZVNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKFdL
UGFnZVJlZiBwYWdlLCBXS1VSTFJlZiBVUkxSZWYsIFdLUGFnZVNldEFkQ2xpY2tBdHRyaWJ1dGlv
bkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNhbGxiYWNr
Q29udGV4dCkKIHsKICAgICB0b0ltcGwocGFnZSktPnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZl
cnNpb25VUkxGb3JUZXN0aW5nKFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoVVJMUmVmKSksIFtjYWxs
YmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CiAgICAgICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29u
dGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV0tQYWdlTWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNB
c0V4cGlyZWRGb3JUZXN0aW5nKFdLUGFnZVJlZiBwYWdlLCBXS1BhZ2VNYXJrQWRDbGlja0F0dHJp
YnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KQoreworICAgIHRvSW1wbChwYWdlKS0+bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNB
c0V4cGlyZWRGb3JUZXN0aW5nKFtjYWxsYmFja0NvbnRleHQsIGNhbGxiYWNrXSAoKSB7CisgICAg
ICAgIGNhbGxiYWNrKGNhbGxiYWNrQ29udGV4dCk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VQcml2YXRlLmgKaW5kZXggYzk5ZjczMmE2MjdkN2Nk
NjkxNGJlZGM0OTI1ZDhmMGIwMzRkM2Q3Zi4uM2Q5NTlmZjg4OWRjY2NmZmM1ZTliMzIyMmFiNTQ2
YjZkMDFjNDlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVBy
aXZhdGUuaApAQCAtMTkxLDYgKzE5MSw4IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNldEFkQ2xp
Y2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqCiBXS19F
WFBPUlQgdm9pZCBXS1BhZ2VTZXRBZENsaWNrQXR0cmlidXRpb25PdmVycmlkZVRpbWVyRm9yVGVz
dGluZyhXS1BhZ2VSZWYgcGFnZSwgYm9vbCB2YWx1ZSwgV0tQYWdlU2V0QWRDbGlja0F0dHJpYnV0
aW9uT3ZlcnJpZGVUaW1lckZvclRlc3RpbmdGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY2FsbGJh
Y2tDb250ZXh0KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZVNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNv
bnZlcnNpb25VUkxGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBX
S19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9y
VGVzdGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZWYgdXJsU3RyaW5nLCBXS1BhZ2VTZXRBZENs
aWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2
b2lkKiBjYWxsYmFja0NvbnRleHQpOwordHlwZWRlZiB2b2lkICgqV0tQYWdlTWFya0FkQ2xpY2tB
dHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29u
dGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VNYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhw
aXJlZEZvclRlc3RpbmcoV0tQYWdlUmVmIHBhZ2UsIFdLUGFnZU1hcmtBZENsaWNrQXR0cmlidXRp
b25zQXNFeHBpcmVkRm9yVGVzdGluZ0Z1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjYWxsYmFja0Nv
bnRleHQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IDQzYmI3OTU5NWY4NjFmMzk1ZjAyMTJkM2E2ZjdkYzM2ZWZk
YTMxMWYuLjQyNTBiZjk5MDIzMWM3ODgyNjJlMjkyNDlmM2MyZDdhNzBlNWNhMWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtODk0Niw2ICs4OTQ2LDE3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9y
VGVzdGluZyhjb25zdCBVUkwmIHVybCwKICAgICB9CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpt
YXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmIChhdXRvKiBuZXR3b3Jr
UHJvY2VzcyA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKSB7Cisg
ICAgICAgIGlmICghbmV0d29ya1Byb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6Ok1hcmtBZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyht
X3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIH0KK30KKwogI2lmIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogV2ViUGFnZVBy
b3h5OjpTcGVlY2hTeW50aGVzaXNEYXRhJiBXZWJQYWdlUHJveHk6OnNwZWVjaFN5bnRoZXNpc0Rh
dGEoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyNDEzOTU0
MjEzNTk4NDdiMTZjYjE3MGQxMDVlZDE4OWNhYzI3YWI3Li41NzBkMWRiNzkzNGJlODFmZDY4OTYx
NTgwMjAzMzQwYmU5NWY2NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTUwNyw2ICsxNTA3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJBZENsaWNrQXR0
cmlidXRpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEFkQ2xp
Y2tBdHRyaWJ1dGlvbk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2wgdmFsdWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252
ZXJzaW9uVVJMRm9yVGVzdGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOworICAgIHZvaWQgbWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICNpZiBFTkFCTEUoU1BFRUNIX1NZTlRI
RVNJUykKICAgICB2b2lkIHNwZWVjaFN5bnRoZXNpc1ZvaWNlTGlzdChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxXZWJTcGVlY2hTeW50aGVzaXNWb2ljZT4mJik+JiYpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE4NjE3ZTRmN2U4ZGQ4
YjM4NTZiOTNhZGE4NWNiMDlhODllMTcxMGMuLmQyMTJmYzQ5N2Q2ZWRhYmI4MmQ4MmM2MmQxNzFi
YmRmZGY5MTRmOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOS0wNC0yNCAgSm9obiBXaWxhbmRlciAgPHdpbGFu
ZGVyQGFwcGxlLmNvbT4KKworICAgICAgICBBZ2Ugb3V0IHVuY29udmVydGVkIEFkIENsaWNrIEF0
dHJpYnV0aW9ucyBhZnRlciBvbmUgd2Vlay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5NzIzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTAxNzcz
NDk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhZGRzIGluZnJhc3RydWN0dXJlIHRvIGFsbG93IHRlc3RzIHRvIGV4cGlyZSBhbGwgdW5j
b252ZXJ0ZWQKKyAgICAgICAgYXR0cmlidXRpb25zIGVhcmx5LgorCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjptYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZv
clRlc3RpbmcpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNB
c0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNz
YWdlRnJvbUluamVjdGVkQnVuZGxlKToKKwogMjAxOS0wNC0yNCAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCB1bml0IHRlc3QgZm9yIHIy
MzkzMjIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGY1OGYwN2ZkZDMzN2EyMmE3YWM1
ZjZmZjgwNDQ3ZGQxNDc2Mzc3YjEuLmVkNDk2N2FlN2NlMWUxNDMwZTQyYjRiYTcxOGNmOWJhN2Fk
YzI5M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzg5LDQgKzM4OSw1IEBAIGlu
dGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIGNsZWFyQWRDbGlja0F0dHJpYnV0aW9uc1Ro
cm91Z2hXZWJzaXRlRGF0YVJlbW92YWwoKTsKICAgICB2b2lkIHNldEFkQ2xpY2tBdHRyaWJ1dGlv
bk92ZXJyaWRlVGltZXJGb3JUZXN0aW5nKGJvb2xlYW4gdmFsdWUpOwogICAgIHZvaWQgc2V0QWRD
bGlja0F0dHJpYnV0aW9uQ29udmVyc2lvblVSTEZvclRlc3RpbmcoRE9NU3RyaW5nIHVybCk7Cisg
ICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIH07
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAppbmRleCBiZWU5ZGFmY2ZkZTg0ZjQyMTEwYzZiMmRiZDA2ZThkNTUxZDg1NzFkLi41
YTNjZWUzMWVlODVmMzllNTgyN2MwM2FiYWQzMjIyNmQ4NmViNGY5IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTI4
OTcsNCArMjg5NywxMCBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEFkQ2xpY2tBdHRyaWJ1dGlvbkNv
bnZlcnNpb25VUkxGb3JUZXN0aW5nKEpTU3RyaW5nUmVmIHVybFN0cgogICAgIFdLQnVuZGxlUGFn
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgp
LCBudWxscHRyKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjptYXJrQWRDbGlja0F0dHJpYnV0aW9u
c0FzRXhwaXJlZEZvclRlc3RpbmcoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1hcmtB
ZENsaWNrQXR0cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZyIpKTsKKyAgICBXS0J1bmRsZVBh
Z2VQb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xl
dG9uKCkucGFnZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCBudWxscHRy
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDI2OWM2OWIyYzA5NDU3ODVhNjEw
ZmIyZWU4NTc1ODE5Y2UwYWQxMzkuLjJjYWZmOWFjOTlhZmM5MTUyMDNmMzZlYTZlOTVhZWM2OGVh
OTM2OWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5oCkBAIC01MDMsNiArNTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJB
ZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbCgpOwogICAgIHZvaWQg
c2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3RpbmcoYm9vbCB2YWx1ZSk7
CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9uVVJMRm9yVGVzdGluZyhK
U1N0cmluZ1JlZik7CisgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZv
clRlc3RpbmcoKTsKIAogcHJpdmF0ZToKICAgICBUZXN0UnVubmVyKCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGI4MTFlNTllNDY0NWFhM2YxODQ5ZDY4
MTI0ZTVmYmJlZWJlODgyNjcuLjBlMTU3M2I4YTg0MmRhNDJmNjc5OWRmZTQwYjkzNmVkOGZjMmE5
YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zNjI3
LDQgKzM2MjcsMTEgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0QWRDbGlja0F0dHJpYnV0aW9u
Q29udmVyc2lvblVSTEZvclRlc3RpbmcoV0tVUkxSZWYgdXJsKQogICAgIHJ1blVudGlsKGNhbGxi
YWNrQ29udGV4dC5kb25lLCBub1RpbWVvdXQpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpt
YXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcoKQoreworICAgIEFkQ2xp
Y2tBdHRyaWJ1dGlvblZvaWRDYWxsYmFja0NvbnRleHQgY2FsbGJhY2tDb250ZXh0KCp0aGlzKTsK
KyAgICBXS1BhZ2VNYXJrQWRDbGlja0F0dHJpYnV0aW9uc0FzRXhwaXJlZEZvclRlc3RpbmcobV9t
YWluV2ViVmlldy0+cGFnZSgpLCBhZENsaWNrQXR0cmlidXRpb25Wb2lkQ2FsbGJhY2ssICZjYWxs
YmFja0NvbnRleHQpOworICAgIHJ1blVudGlsKGNhbGxiYWNrQ29udGV4dC5kb25lLCBub1RpbWVv
dXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAppbmRleCBmMjY5YjM5ODFlMzhiNGE1ODkwMzkzOTA5YTVhNjQ0NjM4M2U4NzI4
Li4wYmMxMGEyZGNkMDA3MjgyYjJhYzQ3NThlZTg5OWQ2OTMwMWExYWMyIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zMTcsNiArMzE3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJBZENsaWNrQXR0cmlidXRpb25zVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3Zh
bCgpOwogICAgIHZvaWQgc2V0QWRDbGlja0F0dHJpYnV0aW9uT3ZlcnJpZGVUaW1lckZvclRlc3Rp
bmcoYm9vbCB2YWx1ZSk7CiAgICAgdm9pZCBzZXRBZENsaWNrQXR0cmlidXRpb25Db252ZXJzaW9u
VVJMRm9yVGVzdGluZyhXS1VSTFJlZik7CisgICAgdm9pZCBtYXJrQWRDbGlja0F0dHJpYnV0aW9u
c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIAogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RP
cHRpb25zJik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IDg2MmI5YTUyZjQxMDgyMDhlMDA1MGU0Mzg3ZWJkYzQ5MzFjZjg2YzYuLjZmZmFiM2FhYTFkNWM5
YTk3OGQzNzZiMDE4ZDU4YzFkZGM2YmYwOWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCkBAIC0xNjYyLDcgKzE2NjIsMTIgQEAgV0tSZXRhaW5QdHI8V0tUeXBl
UmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21Jbmpl
Y3RlZEIKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEFkQ2xpY2tBdHRy
aWJ1dGlvbkNvbnZlcnNpb25VUkxGb3JUZXN0aW5nKHVybCk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KLSAgICAKKworICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiTWFya0FkQ2xpY2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5n
IikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1hcmtBZENsaWNrQXR0
cmlidXRpb25zQXNFeHBpcmVkRm9yVGVzdGluZygpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICB9CisKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBjNGQ5YWNlN2NhNzU5YzdjNWUwMzllZWEwMjdkMjlhYzdiOWU4OWM5Li5hMjBj
ZjkyOGIwZGEyYzZiZWQzNmFiNGMwYmY3MDIxM2Y3MzhhNGJiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTktMDQtMjQgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWdlIG91dCB1bmNvbnZlcnRlZCBBZCBDbGljayBBdHRyaWJ1dGlvbnMgYWZ0ZXIgb25l
IHdlZWsuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTcyMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwMTc3MzQ5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogaHR0cC90ZXN0cy9hZENsaWNrQXR0cmli
dXRpb24vZXhwaXJlZC1hdHRyaWJ1dGlvbnMtcmVtb3ZlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvYWRDbGlja0F0dHJpYnV0aW9uL2V4cGlyZWQtYXR0cmlidXRp
b25zLXJlbW92ZWQuaHRtbDogQWRkZWQuCisKIDIwMTktMDQtMjQgIEZyZWRlcmljIFdhbmcgIDxm
d2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFdpdGggYXN5bmMgc2Nyb2xsaW5nIGVuYWJsZWQs
IHRoaXMgTWF0aE1MIHRlc3QgYXNzZXJ0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vZXhwaXJlZC1hdHRyaWJ1dGlvbnMtcmVtb3ZlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9leHBp
cmVkLWF0dHJpYnV0aW9ucy1yZW1vdmVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTdhZWRk
MWZmNjY4MWNkOGY3MGQwZjg0ODQ5MTM2NDRhNjU2YzEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9hZENsaWNrQXR0cmlidXRpb24vZXhwaXJlZC1hdHRyaWJ1dGlv
bnMtcmVtb3ZlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0cyBleHBpcmF0aW9u
IG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uLgorCisKKworTm8gc3RvcmVkIEFkIENsaWNrIEF0dHJp
YnV0aW9uIGRhdGEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FkQ2xpY2tB
dHRyaWJ1dGlvbi9leHBpcmVkLWF0dHJpYnV0aW9ucy1yZW1vdmVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FkQ2xpY2tBdHRyaWJ1dGlvbi9leHBpcmVkLWF0dHJpYnV0aW9ucy1yZW1v
dmVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2EzNTkzMTY2ZTJlZDM0ZWIxODhkYmM5YjAzYWMyY2MzZThk
NDI4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYWRDbGlja0F0
dHJpYnV0aW9uL2V4cGlyZWQtYXR0cmlidXRpb25zLXJlbW92ZWQuaHRtbApAQCAtMCwwICsxLDUz
IEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJs
ZVZpZXdwb3J0PXRydWUgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lk
dGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iPgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJzZXRUaW1lb3V0KHJ1blRlc3QsIDApIj4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj5UZXN0cyBleHBpcmF0aW9uIG9mIGFkIGNsaWNrIGF0dHJpYnV0aW9uLjwvZGl2PgorPGEg
aWQ9InRhcmdldExpbmsiIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9hZENsaWNrQXR0cmli
dXRpb24vZXhwaXJlZC1hdHRyaWJ1dGlvbnMtcmVtb3ZlZC5odG1sP3N0ZXBUd28iIGFkY2FtcGFp
Z25pZD0iMyIgYWRkZXN0aW5hdGlvbj0iaHR0cDovL2xvY2FsaG9zdDo4MDAwIj5MaW5rPC9hPjxi
cj4KKzxkaXYgaWQ9Im91dHB1dCI+PC9kaXY+Cis8c2NyaXB0PgorICAgIHByZXBhcmVUZXN0KCk7
CisKKyAgICBmdW5jdGlvbiBhY3RpdmF0ZUVsZW1lbnQoZWxlbWVudElEKSB7CisgICAgICAgIHZh
ciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElEKTsKKyAgICAgICAg
dmFyIGNlbnRlclggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8g
MjsKKyAgICAgICAgdmFyIGNlbnRlclkgPSBlbGVtZW50Lm9mZnNldFRvcCArIGVsZW1lbnQub2Zm
c2V0SGVpZ2h0IC8gMjsKKyAgICAgICAgVUlIZWxwZXIuYWN0aXZhdGVBdChjZW50ZXJYLCBjZW50
ZXJZKS50aGVuKAorICAgICAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgib3V0cHV0IikuaW5uZXJUZXh0ID0gIkZBSUwgUHJvbWlzZSByZWplY3RlZC4iOwor
ICAgICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJj
aCA9PT0gIj9zdGVwVHdvIikgeworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubWFya0FkQ2xp
Y2tBdHRyaWJ1dGlvbnNBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CisgICAgICAgICAgICAgICAgbGV0
IGltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOworICAgICAgICAg
ICAgICAgIGltYWdlRWxlbWVudC5zcmMgPSAiaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9hZENsaWNr
QXR0cmlidXRpb24vcmVzb3VyY2VzL3JlZGlyZWN0VG9Db252ZXJzaW9uLnBocD9jb252ZXJzaW9u
RGF0YT0xMiI7CisgICAgICAgICAgICAgICAgaW1hZ2VFbGVtZW50LmlkID0gInBpeGVsIjsKKyAg
ICAgICAgICAgICAgICBpbWFnZUVsZW1lbnQub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBZENsaWNrQXR0cmlidXRpb24oKTsKKyAgICAg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidGFyZ2V0TGluayIpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGl4ZWwiKSk7CisgICAgICAg
ICAgICAgICAgICAgIHRlYXJEb3duQW5kRmluaXNoKCk7CisgICAgICAgICAgICAgICAgfTsKKyAg
ICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGltYWdlRWxlbWVudCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFjdGl2YXRlRWxlbWVudCgidGFy
Z2V0TGluayIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmlubmVyVGV4dCA9ICJGQUlMIE5vIHRl
c3RSdW5uZXIuIjsKKyAgICAgICAgfQorICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>