<?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>207173</bug_id>
          
          <creation_ts>2020-02-03 18:03:43 -0800</creation_ts>
          <short_desc>Defer ending AppSSO sheets til NSWindowDidDeminiaturize or NSApplicationDidUnhide</short_desc>
          <delta_ts>2020-02-05 14:49:52 -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>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="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1614330</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-03 18:03:43 -0800</bug_when>
    <thetext>Defer ending AppSSO sheets til NSWindowDidDeminiaturize or NSApplicationDidUnhide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614331</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-03 18:03:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/55669065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614334</commentid>
    <comment_count>2</comment_count>
      <attachid>389611</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-03 18:16:00 -0800</bug_when>
    <thetext>Created attachment 389611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614336</commentid>
    <comment_count>3</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-03 18:21:13 -0800</bug_when>
    <thetext>Just realized this has a dependency on Bug 207079. Will upload a rebased patch once Bug 207079 is landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614424</commentid>
    <comment_count>4</comment_count>
      <attachid>389631</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-03 22:31:10 -0800</bug_when>
    <thetext>Created attachment 389631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614681</commentid>
    <comment_count>5</comment_count>
      <attachid>389631</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-04 12:41:36 -0800</bug_when>
    <thetext>Comment on attachment 389631
Patch

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

r=me

&gt; Source/WebKit/ChangeLog:14
&gt; +        or NSApplicationDidUnhide is received.

What happens if the application is exited? Is everything cleaned up properly with these deferred observers? (I assume so).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614811</commentid>
    <comment_count>6</comment_count>
      <attachid>389631</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-04 15:52:53 -0800</bug_when>
    <thetext>Comment on attachment 389631
Patch

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

Thanks Brent for r+ this patch.

&gt;&gt; Source/WebKit/ChangeLog:14
&gt;&gt; +        or NSApplicationDidUnhide is received.
&gt; 
&gt; What happens if the application is exited? Is everything cleaned up properly with these deferred observers? (I assume so).

Yes, the notification center is bound to the app. However, you do remind me to examine what happens if the session is destroyed during miniaturization/hiding. I have made some changes to address that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614819</commentid>
    <comment_count>7</comment_count>
      <attachid>389730</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-04 16:07:29 -0800</bug_when>
    <thetext>Created attachment 389730
Patch for Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1614825</commentid>
    <comment_count>8</comment_count>
      <attachid>389733</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-04 16:16:39 -0800</bug_when>
    <thetext>Created attachment 389733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615270</commentid>
    <comment_count>9</comment_count>
      <attachid>389733</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-05 14:01:31 -0800</bug_when>
    <thetext>Comment on attachment 389733
Patch

The api-ios bot is taking forever. cq+ regardless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615293</commentid>
    <comment_count>10</comment_count>
      <attachid>389733</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 14:49:50 -0800</bug_when>
    <thetext>Comment on attachment 389733
Patch

Clearing flags on attachment: 389733

Committed r255862: &lt;https://trac.webkit.org/changeset/255862&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1615295</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-05 14:49:52 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389611</attachid>
            <date>2020-02-03 18:16:00 -0800</date>
            <delta_ts>2020-02-03 22:31:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207173-20200203181600.patch</filename>
            <type>text/plain</type>
            <size>14730</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NDgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJiMTgyOTE5ODg2YWNmODc2
YTU3NjI2ZTY5OGFmYmRlMGU3OWU4ZGEuLjI5ODFkMTk0ZTU4NzcyNTA2YmJjMjk4NzE2M2NhMjQ4
MjQ2ODdlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDItMDMgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEZWZlciBlbmRpbmcgQXBwU1NP
IHNoZWV0cyB0aWwgTlNXaW5kb3dEaWREZW1pbmlhdHVyaXplIG9yIE5TQXBwbGljYXRpb25EaWRV
bmhpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzE3MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NjkwNjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwS2l0IGhhcyBhIGJ1ZyB0aGF0IFtt
X3NoZWV0V2luZG93IHNoZWV0UGFyZW50XSBpcyBudWxsIGlmIHRoZSBwYXJlbnQgaXMgbWluaW1p
emVkIG9yIHRoZSBob3N0IGFwcCBpcyBoaWRkZW4uCisgICAgICAgIFNoZWV0UGFyZW50IGlzIHVz
ZWQgdG8gZW5kU2hlZXQuIFRoZXJlZm9yZSwgV2ViS2l0IGNhbm5vdCBkaXNtaXNzIEFwcFNTTyBV
SXMgaW4gdGhlIGFib3ZlIHR3byBjYXNlcyBpZiBhc2tlZAorICAgICAgICBieSBleHRlbnNpb25z
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIHdvcmthcm91bmQgdG8gZGV0ZWN0
IHRob3NlIHR3byBjYXNlcyBhbmQgZGVmZXIgdGhlIGVuZFNoZWV0IHRpbCBOU1dpbmRvd0RpZERl
bWluaWF0dXJpemUKKyAgICAgICAgb3IgTlNBcHBsaWNhdGlvbkRpZFVuaGlkZSBpcyByZWNlaXZl
ZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1Zp
ZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6U3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydEludGVybmFsKToKKyAgICAgICAgVHJl
YXQgYWJvcnQgbGlrZSBmYWxsaW5nIGJhY2sgdG8gdGhlIHdlYiBwYXRoIGZvciBzdWIgZnJhbWUg
Y2FzZSBnaXZlbiBkaXNwbGF5aW5nIGFuIGVtcHR5CisgICAgICAgIGlmcmFtZSBhZnRlciBhYm9y
dGluZyBzZWVtcyBiYWQuCisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgbG9nZ2luZyB0byBzaG93IHRoZSBmbG93IG9mIEFwcFNT
TwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKaW5kZXggMmE2MjBj
NTE5MzJiZGZmYjM0OWZkZTI3MTFiMTU1ZWMxMzJiNGU0OS4uMzVjMDliY2ZhMmRkYzRhYTY1ZTY4
N2EwOTFiMWU0OGY1MGRlNWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9u
U2Vzc2lvbi5oCkBAIC0xMTMsNiArMTEzLDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMp
CiAgICAgUmV0YWluUHRyPE5TV2luZG93PiBtX3NoZWV0V2luZG93OwogICAgIFJldGFpblB0cjxO
U09iamVjdD4gbV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyOworICAgIFJldGFpblB0cjxO
U09iamVjdD4gbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVyOworICAg
IFJldGFpblB0cjxOU09iamVjdD4gbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyOwogI2Vu
ZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmlu
ZGV4IGM5NWMzMzYwZmFmYTY1NDFkOWY1Yjk4YzI5OGRmNTM2ZmUwMTc2ZmYuLjhjYTAwMzYwZDM0
NTU2ZmQyMTRmYWE4OGUxNDQzNDk1MzBjNGI3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1
dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0yNzUsNiArMjc1LDM2IEBAIHZvaWQgU09BdXRob3Jp
emF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCkKICNpZiBQTEFURk9STShNQUMp
CiAgICAgQVNTRVJUKG1fc2hlZXRXaW5kb3cgJiYgbV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2Vy
dmVyKTsKIAorICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhbiBBcHBLaXQgaXNzdWU6
IDxyZGFyOi8vcHJvYmxlbS81OTEyNTMyOT4uCisgICAgLy8gW21fc2hlZXRXaW5kb3cgc2hlZXRQ
YXJlbnRdIGlzIG51bGwgaWYgdGhlIHBhcmVudCBpcyBtaW5pbWl6ZWQgb3IgdGhlIGhvc3QgYXBw
IGlzIGhpZGRlbi4KKyAgICBpZiAoYXV0byAqcHJlc2VudGluZ1dpbmRvdyA9IG1fcGFnZS0+cGxh
dGZvcm1XaW5kb3coKSkgeworICAgICAgICBpZiAocHJlc2VudGluZ1dpbmRvdy5taW5pYXR1cml6
ZWQpIHsKKyAgICAgICAgICAgIEFTU0VSVCghbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1
cml6ZU9ic2VydmVyKTsKKyAgICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0
dXJpemVPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRk
T2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93RGlkRGVtaW5pYXR1cml6ZU5vdGlmaWNhdGlvbiBvYmpl
Y3Q6cHJlc2VudGluZ1dpbmRvdyBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHRoaXNdIChOU05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAg
ICAgIGRpc21pc3NWaWV3Q29udHJvbGxlcigpOworICAgICAgICAgICAgfV07CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlh
dHVyaXplT2JzZXJ2ZXIuZ2V0KCldOworICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0
dXJpemVPYnNlcnZlciA9IG51bGxwdHI7CisKKyAgICBpZiAoTlNBcHAuaGlkZGVuKSB7CisgICAg
ICAgIEFTU0VSVCghbV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyKTsKKyAgICAgICAgbV9h
cHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFVuaGlkZU5vdGlm
aWNhdGlvbiBvYmplY3Q6TlNBcHAgcXVldWU6bmlsIHVzaW5nQmxvY2s6W3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCB0aGlzXSAoTlNOb3RpZmljYXRpb24gKikgeworICAgICAgICAgICAg
aWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKQorICAgICAgICAgICAgICAgIGRpc21pc3NWaWV3
Q29udHJvbGxlcigpOworICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fYXBw
bGljYXRpb25EaWRVbmhpZGVPYnNlcnZlci5nZXQoKV07CisgICAgbV9hcHBsaWNhdGlvbkRpZFVu
aGlkZU9ic2VydmVyID0gbnVsbHB0cjsKKwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVm
YXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVy
LmdldCgpXTsKICAgICBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXIgPSBudWxscHRyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbQppbmRleCAzYjUzODBlM2ViZjkzMDMwY2IyZTVjZTgzMzQyNDBkYWE5OWM2Y2I3Li4yNjU4
OThjZmQ4ZjViN2Y3MDczM2RjNTE4ODhiNTYwOGQ4YjM3YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6
YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTgzLDYgKzgz
LDcgQEAgdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmZhbGxCYWNrVG9XZWJQ
YXRoSW50ZXJuYWwoKQogCiB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YWJv
cnRJbnRlcm5hbCgpCiB7CisgICAgZmFsbEJhY2tUb1dlYlBhdGhJbnRlcm5hbCgpOwogfQogCiB2
b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tcGxldGVJbnRlcm5hbChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgTlNEYXRhICpkYXRhKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU4MTgxYTg4
ZTFmZmI4NGUzMWJhMWU0N2E5Y2ZjNGIzNzY5MDY0NzMuLmM0NGMyMmVmOGQyNGNhZWU5MWJjYTVl
YzU4OTI3NmY3MTQ3NDRmY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0wMi0wMyAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIERlZmVyIGVuZGluZyBBcHBTU08gc2hlZXRz
IHRpbCBOU1dpbmRvd0RpZERlbWluaWF0dXJpemUgb3IgTlNBcHBsaWNhdGlvbkRpZFVuaGlkZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MTczCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTY2OTA2NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bVGVzdFdLV2ViVmlldyBfc2V0VXBUZXN0V2luZG93Ol0pOgorICAgICAgICBNYWtlIHRo
ZSBUZXN0V0tXZWJWaWV3SG9zdFdpbmRvdyBtaW5pYXR1cml6YWJsZSB0byBlbmFibGUgdGhlIHRl
c3QuCisKIDIwMjAtMDEtMzAgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBhbm90aGVyIHNwZWN1bGF0aXZlIHRlc3QgZml4IGFmdGVyIHIy
NTUwNDEKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VGVzdFNPQXV0aG9yaXphdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbQppbmRleCA3ZTBhMmMyZGViZjcwODM2ZDA1ODk4
ODQ5YmFlMjdjMmE0NzEyOTZjLi5mN2NlYzk4MjljMzk5ZjU0ODM3NTM0ZjIwYjg5YzZkNzk5NDJk
ZjEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
c3RTT0F1dGhvcml6YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCkBAIC0xMzg0LDYgKzEzODQsOTAgQEAgVEVT
VChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgTlNOb3RpZmljYXRpb25DZW50ZXIpCiAgICAgZ05v
dGlmaWNhdGlvbkNhbGxiYWNrKG51bGxwdHIpOwogICAgIEVYUEVDVF9GQUxTRSh1aVNob3dlZCk7
CiB9CisKK1RFU1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ01pbmlh
dHVyaXphdGlvbikKK3sKKyAgICByZXNldFN0YXRlKCk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxl
ciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2Fu
UGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9j
YXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVTZXREZWxlZ2F0ZSkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIz
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+
KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVj
dG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0
aFVSTCkpOworCisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVz
dFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJlU09B
dXRob3JpemF0aW9uV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBkZWxlZ2F0ZS5nZXQoKSwgT3BlbkV4
dGVybmFsU2NoZW1lc1BvbGljeTo6QWxsb3cpOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6
cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKworICAgIGF1dG8gdmlld0NvbnRyb2xsZXIg
PSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU1plcm9SZWN0XSk7CisgICAgW3ZpZXdDb250cm9sbGVyIHNldFZpZXc6dmlldy5nZXQoKV07
CisKKyAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24gcHJlc2VudFZp
ZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyLmdldCgpIHdpdGhDb21wbGV0aW9uOl4oQk9PTCBz
dWNjZXNzLCBOU0Vycm9yICopIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAg
fV07CisgICAgVXRpbDo6cnVuKCZ1aVNob3dlZCk7CisKKyAgICBib29sIGRpZEVuZFNoZWV0ID0g
ZmFsc2U7CisgICAgYXV0byAqaG9zdFdpbmRvdyA9IFt3ZWJWaWV3IGhvc3RXaW5kb3ddOworICAg
IGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93RGlkRW5kU2hlZXROb3RpZmljYXRpb24g
b2JqZWN0Omhvc3RXaW5kb3cgcXVldWU6bmlsIHVzaW5nQmxvY2s6WyZkaWRFbmRTaGVldF0gKE5T
Tm90aWZpY2F0aW9uICopIHsKKyAgICAgICAgZGlkRW5kU2hlZXQgPSB0cnVlOworICAgIH1dKTsK
KyAgICBbaG9zdFdpbmRvdyBtaW5pYXR1cml6ZTpob3N0V2luZG93XTsKKworICAgIC8vIERpbWlz
cyB0aGUgVUkKKyAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb25EaWRDYW5jZWw6Z0F1dGhvcml6
YXRpb25dOworICAgIEVYUEVDVF9GQUxTRShkaWRFbmRTaGVldCk7CisKKyAgICAvLyBVSSBpcyBv
bmx5IGRpbWlzc2VkIGFmdGVyIHRoZSBob3N0V2luZG93IGlzIGRlbWluaW1pemVkLgorICAgIFto
b3N0V2luZG93IGRlbWluaWF0dXJpemU6aG9zdFdpbmRvd107CisgICAgRVhQRUNUX1RSVUUoZGlk
RW5kU2hlZXQpOworfQorCitURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBEaXNtaXNzVUlE
dXJpbmdIaWRpbmcpCit7CisgICAgcmVzZXRTdGF0ZSgpOworICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyZVNP
QXV0aG9yaXphdGlvbldlYlZpZXcod2ViVmlldy5nZXQoKSwgZGVsZWdhdGUuZ2V0KCksIE9wZW5F
eHRlcm5hbFNjaGVtZXNQb2xpY3k6OkFsbG93KTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6
OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisKKyAgICBhdXRvIHZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdF0pOworICAgIFt2aWV3Q29udHJvbGxlciBzZXRWaWV3OnZpZXcuZ2V0KCld
OworCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uOmdBdXRob3JpemF0aW9uIHByZXNlbnRW
aWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKSB3aXRoQ29tcGxldGlvbjpeKEJPT0wg
c3VjY2VzcywgTlNFcnJvciAqKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAg
IH1dOworICAgIFV0aWw6OnJ1bigmdWlTaG93ZWQpOworCisgICAgYm9vbCBkaWRFbmRTaGVldCA9
IGZhbHNlOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93RGlkRW5kU2hlZXRO
b3RpZmljYXRpb24gb2JqZWN0Olt3ZWJWaWV3IGhvc3RXaW5kb3ddIHF1ZXVlOm5pbCB1c2luZ0Js
b2NrOlsmZGlkRW5kU2hlZXRdIChOU05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgIGRpZEVuZFNo
ZWV0ID0gdHJ1ZTsKKyAgICB9XSk7CisKKyAgICBbTlNBcHAgaGlkZTpOU0FwcF07CisKKyAgICAv
LyBEaW1pc3MgdGhlIFVJCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ2FuY2VsOmdB
dXRob3JpemF0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkRW5kU2hlZXQpOworCisgICAgLy8g
VUkgaXMgb25seSBkaW1pc3NlZCBhZnRlciB0aGUgaG9zdEFwcCBpcyB1bmhpZGRlbi4KKyAgICBb
TlNBcHAgdW5oaWRlOk5TQXBwXTsKKyAgICBFWFBFQ1RfVFJVRShkaWRFbmRTaGVldCk7Cit9CiAj
ZW5kaWYKIAogVEVTVChTT0F1dGhvcml6YXRpb25Qb3BVcCwgTm9JbnRlcmNlcHRpb25zKQpAQCAt
MjAzMSw2ICsyMTE1LDM4IEBAIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2Vw
dGlvbkVycm9yKQogICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgZmluYWxVUkwpOwogfQogCitURVNU
KFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25DYW5jZWwpCit7CisgICAgcmVz
ZXRTdGF0ZSgpOworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0
aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVy
Zm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBz
d2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVs
ZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAg
ICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlv
bkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJz
Omh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXph
dGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRo
b3JpemF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVk
RG9tYWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3du
ZWREb21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6Omdl
dFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKKworICAgIFJldGFpblB0cjxO
U1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJz
aW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxl
IG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiR2V0U2Vzc2lvbkNvb2tpZSIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Cisg
ICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgdGVzdFVSTC5n
ZXQoKS5hYnNvbHV0ZVN0cmluZyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvbkRl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJlU09BdXRob3JpemF0aW9uV2ViVmll
dyh3ZWJWaWV3LmdldCgpLCBkZWxlZ2F0ZS5nZXQoKSk7CisKKyAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzp0ZXN0SHRtbCBiYXNlVVJMOmJhc2VVUkwuZ2V0KCldOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAibnVsbCJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU09B
dXRob3JpemF0aW9uRGlkU3RhcnQiXTsKKyAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZh
bHNlLCAiZmlsZTovLyIsIDIpOworCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ2Fu
Y2VsOmdBdXRob3JpemF0aW9uXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm51bGwi
XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlNPQXV0aG9yaXphdGlvbkRpZENhbmNl
bCJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiIl07CisgICAgLy8gVHJ5cyB0byB3
YWl0IHVudGlsIHRoZSBpZnJhbWUgbG9hZCBpcyBmaW5pc2hlZC4KKyAgICBVdGlsOjpzbGVlcCgw
LjUpOworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBsb2FkIHRoZSByZXF1ZXN0IG9mIHRoZSBp
ZnJhbWUgdG8gdGhlIG1haW4gZnJhbWUuCisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBmaW5hbFVS
TCk7Cit9CisKIFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvblN1Y2Nl
c3MpCiB7CiAgICAgcmVzZXRTdGF0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3Lm1tCmluZGV4IGVmNjFhZGIyMjE1MTM1YTZhN2IwYjZmMzQwMWM2NzlkZGFhZjhk
N2YuLjQzOWI5Y2M3YTMwMTY2MzIxYjYzNmM4MTBlZDY3MDFjMDIyMmQ5ZjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTM5NCw3ICszOTQsNyBAQCAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246
KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogLSAodm9pZClfc2V0VXBUZXN0V2luZG93OihOU1JlY3Qp
ZnJhbWUKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgX2hvc3RXaW5kb3cgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlld0hvc3RXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUg
c3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFja2luZ1N0
b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBfaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3SG9zdFdpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBzdHls
ZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVzcyB8IE5TV2luZG93U3R5bGVNYXNrTWlu
aWF0dXJpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwog
ICAgIFtfaG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpOU01ha2VQb2ludCgwLCAwKV07CiAgICAg
W19ob3N0V2luZG93IHNldElzVmlzaWJsZTpZRVNdOwogICAgIFtfaG9zdFdpbmRvdyBjb250ZW50
Vmlld10ud2FudHNMYXllciA9IFlFUzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389631</attachid>
            <date>2020-02-03 22:31:10 -0800</date>
            <delta_ts>2020-02-04 16:16:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207173-20200203223109.patch</filename>
            <type>text/plain</type>
            <size>14811</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmZlOWE2MjZmZjMzZjJk
YjIyYzgzYjkxYTZlMTE1ZTE1ZjM3M2UuLjU2YWM1OGRhYmRkMWFlOTY0ZjA1ZWJkOTE4MzYzMGM5
M2U3MzNjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDItMDMgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEZWZlciBlbmRpbmcgQXBwU1NP
IHNoZWV0cyB0aWwgTlNXaW5kb3dEaWREZW1pbmlhdHVyaXplIG9yIE5TQXBwbGljYXRpb25EaWRV
bmhpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzE3MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NjkwNjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXBwS2l0IGhhcyBhIGJ1ZyB0aGF0IFtt
X3NoZWV0V2luZG93IHNoZWV0UGFyZW50XSBpcyBudWxsIGlmIHRoZSBwYXJlbnQgaXMgbWluaW1p
emVkIG9yIHRoZSBob3N0IGFwcCBpcyBoaWRkZW4uCisgICAgICAgIFNoZWV0UGFyZW50IGlzIHVz
ZWQgdG8gZW5kU2hlZXQuIFRoZXJlZm9yZSwgV2ViS2l0IGNhbm5vdCBkaXNtaXNzIEFwcFNTTyBV
SXMgaW4gdGhlIGFib3ZlIHR3byBjYXNlcyBpZiBhc2tlZAorICAgICAgICBieSBleHRlbnNpb25z
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIHdvcmthcm91bmQgdG8gZGV0ZWN0
IHRob3NlIHR3byBjYXNlcyBhbmQgZGVmZXIgdGhlIGVuZFNoZWV0IHRpbCBOU1dpbmRvd0RpZERl
bWluaWF0dXJpemUKKyAgICAgICAgb3IgTlNBcHBsaWNhdGlvbkRpZFVuaGlkZSBpcyByZWNlaXZl
ZC4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbToKKyAgICAgICAgKFdlYktpdDo6U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZGlzbWlzc1Zp
ZXdDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdlYktpdDo6U3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydEludGVybmFsKToKKyAgICAgICAgVHJl
YXQgYWJvcnQgbGlrZSBmYWxsaW5nIGJhY2sgdG8gdGhlIHdlYiBwYXRoIGZvciBzdWIgZnJhbWUg
Y2FzZSBnaXZlbiBkaXNwbGF5aW5nIGFuIGVtcHR5CisgICAgICAgIGlmcmFtZSBhZnRlciBhYm9y
dGluZyBzZWVtcyBiYWQuCisKIDIwMjAtMDItMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgV2ViS2l0QWRkaXRpb25zIGhvb2sgdG8gcHJv
dmlkZSBhZGRpdGlvbmFsIGN1c3RvbWl6YXRpb25zIHRvIFVJRHJhZ0ludGVyYWN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09B
dXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24uaAppbmRleCAyM2UyNzA3NWZmNjM1
ZTFkYjFmYTI0YWJjMDdjOTExNDBiMmU4MzBmLi5jNmJhN2UyYTY4YWU2MmY2M2Q4MzdkOWFhMWRl
NWNiNzg4MzkyYTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9u
LmgKQEAgLTExNyw2ICsxMTcsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBS
ZXRhaW5QdHI8TlNXaW5kb3c+IG1fc2hlZXRXaW5kb3c7CiAgICAgUmV0YWluUHRyPE5TT2JqZWN0
PiBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0
PiBtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXI7CisgICAgUmV0YWlu
UHRyPE5TT2JqZWN0PiBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXI7CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggYzM3
MzRiZWQzZmI3ODM1OTA5OTI3MzdiYmUxNWUxN2Q4MzA3YmMzOS4uOTFiMWI3ZjYxY2NiOTJiN2I2
ZWIwY2JjYjdlNWMwMGQ4ZmVmNTE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXph
dGlvblNlc3Npb24ubW0KQEAgLTI5Niw2ICsyOTYsMzYgQEAgdm9pZCBTT0F1dGhvcml6YXRpb25T
ZXNzaW9uOjpkaXNtaXNzVmlld0NvbnRyb2xsZXIoKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBB
U1NFUlQobV9zaGVldFdpbmRvdyAmJiBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXIpOwog
CisgICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGFuIEFwcEtpdCBpc3N1ZTogPHJkYXI6
Ly9wcm9ibGVtLzU5MTI1MzI5Pi4KKyAgICAvLyBbbV9zaGVldFdpbmRvdyBzaGVldFBhcmVudF0g
aXMgbnVsbCBpZiB0aGUgcGFyZW50IGlzIG1pbmltaXplZCBvciB0aGUgaG9zdCBhcHAgaXMgaGlk
ZGVuLgorICAgIGlmIChhdXRvICpwcmVzZW50aW5nV2luZG93ID0gbV9wYWdlLT5wbGF0Zm9ybVdp
bmRvdygpKSB7CisgICAgICAgIGlmIChwcmVzZW50aW5nV2luZG93Lm1pbmlhdHVyaXplZCkgewor
ICAgICAgICAgICAgQVNTRVJUKCFtX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2Jz
ZXJ2ZXIpOworICAgICAgICAgICAgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9i
c2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
ckZvck5hbWU6TlNXaW5kb3dEaWREZW1pbmlhdHVyaXplTm90aWZpY2F0aW9uIG9iamVjdDpwcmVz
ZW50aW5nV2luZG93IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOlt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgdGhpc10gKE5TTm90aWZpY2F0aW9uICopIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkKKyAgICAgICAgICAgICAgICAgICAgZGlz
bWlzc1ZpZXdDb250cm9sbGVyKCk7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVP
YnNlcnZlci5nZXQoKV07CisgICAgbV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9i
c2VydmVyID0gbnVsbHB0cjsKKworICAgIGlmIChOU0FwcC5oaWRkZW4pIHsKKyAgICAgICAgQVNT
RVJUKCFtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2ZXIpOworICAgICAgICBtX2FwcGxpY2F0
aW9uRGlkVW5oaWRlT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0aW9uRGlkVW5oaWRlTm90aWZpY2F0aW9u
IG9iamVjdDpOU0FwcCBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cigqdGhpcyksIHRoaXNdIChOU05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpDb21wbGV0ZWQpCisgICAgICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9s
bGVyKCk7CisgICAgICAgIH1dOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hcHBsaWNhdGlv
bkRpZFVuaGlkZU9ic2VydmVyLmdldCgpXTsKKyAgICBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2Jz
ZXJ2ZXIgPSBudWxscHRyOworCiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSByZW1vdmVPYnNlcnZlcjptX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXIuZ2V0KCld
OwogICAgIG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlciA9IG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCmlu
ZGV4IDNiNTM4MGUzZWJmOTMwMzBjYjJlNWNlODMzNDI0MGRhYTk5YzZjYjcuLjI2NTg5OGNmZDhm
NWI3ZjcwNzMzZGM1MTg4OGI1NjA4ZDhiMzdiYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtODMsNiArODMsNyBAQCB2
b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6ZmFsbEJhY2tUb1dlYlBhdGhJbnRl
cm5hbCgpCiAKIHZvaWQgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjphYm9ydEludGVy
bmFsKCkKIHsKKyAgICBmYWxsQmFja1RvV2ViUGF0aEludGVybmFsKCk7CiB9CiAKIHZvaWQgU3Vi
RnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0ZUludGVybmFsKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBOU0RhdGEgKmRhdGEpCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDM1MzdjMmEyMzU3N2I3
NjM3NDg1ZmM4NTlmMzkyNTdiZDgwZWQ1Ni4uYjNhNWIxMzM2ZjAwYTY5ZDAzNjZhZDFiYmFmY2Ri
ODVjNWEwOTcxNSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTAzICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgRGVmZXIgZW5kaW5nIEFwcFNTTyBzaGVldHMgdGlsIE5T
V2luZG93RGlkRGVtaW5pYXR1cml6ZSBvciBOU0FwcGxpY2F0aW9uRGlkVW5oaWRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDcxNzMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU1NjY5MDY1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0
U09BdXRob3JpemF0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtU
ZXN0V0tXZWJWaWV3IF9zZXRVcFRlc3RXaW5kb3c6XSk6CisgICAgICAgIE1ha2UgdGhlIFRlc3RX
S1dlYlZpZXdIb3N0V2luZG93IG1pbmlhdHVyaXphYmxlIHRvIGVuYWJsZSB0aGUgdGVzdC4KKwog
MjAyMC0wMi0wMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFBhc3MgYSBoaW50IGZyb20gdGhlIGV4dGVuc2lvbiB0byBkZWNpZGVQb2xpY3lGb3JTT0F1dGhv
cml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQb2xpY3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbQppbmRl
eCA5NzMwYWM1OGZhNmU4ODNiOGE4YTcxYzUzNWExZTExYjhkOGQxZTJmLi5hOGE0YWJjNjkxNjUz
MWIzMjE2Yzc4YzgyMzJmZjZhYTlkOGQwYWI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCkBA
IC0xNDI3LDYgKzE0MjcsOTAgQEAgVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgTlNOb3Rp
ZmljYXRpb25DZW50ZXIpCiAgICAgZ05vdGlmaWNhdGlvbkNhbGxiYWNrKG51bGxwdHIpOwogICAg
IEVYUEVDVF9GQUxTRSh1aVNob3dlZCk7CiB9CisKK1RFU1QoU09BdXRob3JpemF0aW9uUmVkaXJl
Y3QsIERpc21pc3NVSUR1cmluZ01pbmlhdHVyaXphdGlvbikKK3sKKyAgICByZXNldFN0YXRlKCk7
CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3Bv
bnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9y
aXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQ
QUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCBy
ZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVS
TCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRo
b3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6
cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRl
R2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOworCisgICAgUmV0YWluUHRyPE5TVVJMPiB0
ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIg
d2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CisgICAgY29uZmlndXJlU09BdXRob3JpemF0aW9uV2ViVmlldyh3ZWJWaWV3LmdldCgp
LCBkZWxlZ2F0ZS5nZXQoKSwgT3BlbkV4dGVybmFsU2NoZW1lc1BvbGljeTo6QWxsb3cpOworCisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0
VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKwor
ICAgIGF1dG8gdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB2aWV3ID0gYWRvcHROUyhbW05T
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0XSk7CisgICAgW3ZpZXdDb250cm9s
bGVyIHNldFZpZXc6dmlldy5nZXQoKV07CisKKyAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb246
Z0F1dGhvcml6YXRpb24gcHJlc2VudFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyLmdldCgp
IHdpdGhDb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZ1aVNob3dlZCk7CisK
KyAgICBib29sIGRpZEVuZFNoZWV0ID0gZmFsc2U7CisgICAgYXV0byAqaG9zdFdpbmRvdyA9IFt3
ZWJWaWV3IGhvc3RXaW5kb3ddOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93
RGlkRW5kU2hlZXROb3RpZmljYXRpb24gb2JqZWN0Omhvc3RXaW5kb3cgcXVldWU6bmlsIHVzaW5n
QmxvY2s6WyZkaWRFbmRTaGVldF0gKE5TTm90aWZpY2F0aW9uICopIHsKKyAgICAgICAgZGlkRW5k
U2hlZXQgPSB0cnVlOworICAgIH1dKTsKKyAgICBbaG9zdFdpbmRvdyBtaW5pYXR1cml6ZTpob3N0
V2luZG93XTsKKworICAgIC8vIERpbWlzcyB0aGUgVUkKKyAgICBbZ0RlbGVnYXRlIGF1dGhvcml6
YXRpb25EaWRDYW5jZWw6Z0F1dGhvcml6YXRpb25dOworICAgIEVYUEVDVF9GQUxTRShkaWRFbmRT
aGVldCk7CisKKyAgICAvLyBVSSBpcyBvbmx5IGRpbWlzc2VkIGFmdGVyIHRoZSBob3N0V2luZG93
IGlzIGRlbWluaW1pemVkLgorICAgIFtob3N0V2luZG93IGRlbWluaWF0dXJpemU6aG9zdFdpbmRv
d107CisgICAgRVhQRUNUX1RSVUUoZGlkRW5kU2hlZXQpOworfQorCitURVNUKFNPQXV0aG9yaXph
dGlvblJlZGlyZWN0LCBEaXNtaXNzVUlEdXJpbmdIaWRpbmcpCit7CisgICAgcmVzZXRTdGF0ZSgp
OworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0
aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNw
b25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwg
cmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAgICBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCks
IEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhV
UkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0
aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJM
OnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlk
ZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4g
dGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIGNvbmZpZ3VyZVNPQXV0aG9yaXphdGlvbldlYlZpZXcod2ViVmlldy5nZXQo
KSwgZGVsZWdhdGUuZ2V0KCksIE9wZW5FeHRlcm5hbFNjaGVtZXNQb2xpY3k6OkFsbG93KTsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVz
dFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisK
KyAgICBhdXRvIHZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tO
U1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOworICAgIFt2aWV3Q29udHJv
bGxlciBzZXRWaWV3OnZpZXcuZ2V0KCldOworCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9u
OmdBdXRob3JpemF0aW9uIHByZXNlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQo
KSB3aXRoQ29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmdWlTaG93ZWQpOwor
CisgICAgYm9vbCBkaWRFbmRTaGVldCA9IGZhbHNlOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9w
dE5TKFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JO
YW1lOk5TV2luZG93RGlkRW5kU2hlZXROb3RpZmljYXRpb24gb2JqZWN0Olt3ZWJWaWV3IGhvc3RX
aW5kb3ddIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOlsmZGlkRW5kU2hlZXRdIChOU05vdGlmaWNhdGlv
biAqKSB7CisgICAgICAgIGRpZEVuZFNoZWV0ID0gdHJ1ZTsKKyAgICB9XSk7CisKKyAgICBbTlNB
cHAgaGlkZTpOU0FwcF07CisKKyAgICAvLyBEaW1pc3MgdGhlIFVJCisgICAgW2dEZWxlZ2F0ZSBh
dXRob3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRob3JpemF0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0Uo
ZGlkRW5kU2hlZXQpOworCisgICAgLy8gVUkgaXMgb25seSBkaW1pc3NlZCBhZnRlciB0aGUgaG9z
dEFwcCBpcyB1bmhpZGRlbi4KKyAgICBbTlNBcHAgdW5oaWRlOk5TQXBwXTsKKyAgICBFWFBFQ1Rf
VFJVRShkaWRFbmRTaGVldCk7Cit9CiAjZW5kaWYKIAogVEVTVChTT0F1dGhvcml6YXRpb25Qb3BV
cCwgTm9JbnRlcmNlcHRpb25zKQpAQCAtMjA5Miw2ICsyMTc2LDM4IEBAIFRFU1QoU09BdXRob3Jp
emF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvbkVycm9yKQogICAgIEVYUEVDVF9XS19TVFJFUSgi
IiwgZmluYWxVUkwpOwogfQogCitURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNl
cHRpb25DYW5jZWwpCit7CisgICAgcmVzZXRTdGF0ZSgpOworICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBDbGFzc01ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxlciBjbGFzc10sIEBzZWxl
Y3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhV
UkwpKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBSZXRhaW5QdHI8TlNV
Ukw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiR2V0
U2Vzc2lvbkNvb2tpZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgYXV0byB0ZXN0SHRtbCA9IGdlbmVyYXRlSHRtbChw
YXJlbnRUZW1wbGF0ZSwgdGVzdFVSTC5nZXQoKS5hYnNvbHV0ZVN0cmluZyk7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmln
dXJlU09BdXRob3JpemF0aW9uV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBkZWxlZ2F0ZS5nZXQoKSk7
CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0SHRtbCBiYXNlVVJMOmJhc2VVUkwu
Z2V0KCldOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibnVsbCJdOworICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3RhcnQiXTsKKyAgICBjaGVj
a0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiZmlsZTovLyIsIDIpOworCisgICAgW2dEZWxl
Z2F0ZSBhdXRob3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRob3JpemF0aW9uXTsKKyAgICBbd2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAIm51bGwiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpA
IlNPQXV0aG9yaXphdGlvbkRpZENhbmNlbCJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdl
OkAiIl07CisgICAgLy8gVHJ5cyB0byB3YWl0IHVudGlsIHRoZSBpZnJhbWUgbG9hZCBpcyBmaW5p
c2hlZC4KKyAgICBVdGlsOjpzbGVlcCgwLjUpOworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBs
b2FkIHRoZSByZXF1ZXN0IG9mIHRoZSBpZnJhbWUgdG8gdGhlIG1haW4gZnJhbWUuCisgICAgRVhQ
RUNUX1dLX1NUUkVRKCIiLCBmaW5hbFVSTCk7Cit9CisKIFRFU1QoU09BdXRob3JpemF0aW9uU3Vi
RnJhbWUsIEludGVyY2VwdGlvblN1Y2Nlc3MpCiB7CiAgICAgcmVzZXRTdGF0ZSgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IGVmNjFhZGIyMjE1MTM1
YTZhN2IwYjZmMzQwMWM2NzlkZGFhZjhkN2YuLjQzOWI5Y2M3YTMwMTY2MzIxYjYzNmM4MTBlZDY3
MDFjMDIyMmQ5ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KQEAgLTM5NCw3ICszOTQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dS
ZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpbwogLSAodm9pZClf
c2V0VXBUZXN0V2luZG93OihOU1JlY3QpZnJhbWUKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAg
X2hvc3RXaW5kb3cgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlld0hvc3RXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNrOk5TV2luZG93U3R5bGVNYXNrQm9yZGVy
bGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBfaG9z
dFdpbmRvdyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3SG9zdFdpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDpmcmFtZSBzdHlsZU1hc2s6KE5TV2luZG93U3R5bGVNYXNrQm9yZGVybGVz
cyB8IE5TV2luZG93U3R5bGVNYXNrTWluaWF0dXJpemFibGUpIGJhY2tpbmc6TlNCYWNraW5nU3Rv
cmVCdWZmZXJlZCBkZWZlcjpOT10pOwogICAgIFtfaG9zdFdpbmRvdyBzZXRGcmFtZU9yaWdpbjpO
U01ha2VQb2ludCgwLCAwKV07CiAgICAgW19ob3N0V2luZG93IHNldElzVmlzaWJsZTpZRVNdOwog
ICAgIFtfaG9zdFdpbmRvdyBjb250ZW50Vmlld10ud2FudHNMYXllciA9IFlFUzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389730</attachid>
            <date>2020-02-04 16:07:29 -0800</date>
            <delta_ts>2020-02-04 16:08:49 -0800</delta_ts>
            <desc>Patch for Landing</desc>
            <filename>bug-207173-20200204160728.patch</filename>
            <type>text/plain</type>
            <size>19614</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmZlOWE2MjZmZjMzZjJk
YjIyYzgzYjkxYTZlMTE1ZTE1ZjM3M2UuLjNiMjNkMzQ4ODEzOWQxOGJhNGRlYTMxYzIxMTFiZDNh
NGFiNTA0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDItMDMgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEZWZlciBlbmRpbmcgQXBwU1NP
IHNoZWV0cyB0aWwgTlNXaW5kb3dEaWREZW1pbmlhdHVyaXplIG9yIE5TQXBwbGljYXRpb25EaWRV
bmhpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzE3MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NjkwNjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBBcHBLaXQgaGFzIGEgYnVnIHRoYXQgW21f
c2hlZXRXaW5kb3cgc2hlZXRQYXJlbnRdIGlzIG51bGwgaWYgdGhlIHBhcmVudCBpcyBtaW5pbWl6
ZWQgb3IgdGhlIGhvc3QgYXBwIGlzIGhpZGRlbi4KKyAgICAgICAgU2hlZXRQYXJlbnQgaXMgdXNl
ZCB0byBlbmRTaGVldC4gVGhlcmVmb3JlLCBXZWJLaXQgY2Fubm90IGRpc21pc3MgQXBwU1NPIFVJ
cyBpbiB0aGUgYWJvdmUgdHdvIGNhc2VzIGlmIGFza2VkCisgICAgICAgIGJ5IGV4dGVuc2lvbnMu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgd29ya2Fyb3VuZCB0byBkZXRlY3Qg
dGhvc2UgdHdvIGNhc2VzIGFuZCBkZWZlciB0aGUgZW5kU2hlZXQgdGlsIE5TV2luZG93RGlkRGVt
aW5pYXR1cml6ZQorICAgICAgICBvciBOU0FwcGxpY2F0aW9uRGlkVW5oaWRlIGlzIHJlY2VpdmVk
LgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmll
d0NvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmFib3J0SW50ZXJuYWwpOgorICAgICAgICBUcmVh
dCBhYm9ydCBsaWtlIGZhbGxpbmcgYmFjayB0byB0aGUgd2ViIHBhdGggZm9yIHN1YiBmcmFtZSBj
YXNlIGdpdmVuIGRpc3BsYXlpbmcgYW4gZW1wdHkKKyAgICAgICAgaWZyYW1lIGFmdGVyIGFib3J0
aW5nIHNlZW1zIGJhZC4KKwogMjAyMC0wMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXZWJLaXRBZGRpdGlvbnMgaG9vayB0byBwcm92
aWRlIGFkZGl0aW9uYWwgY3VzdG9taXphdGlvbnMgdG8gVUlEcmFnSW50ZXJhY3Rpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDIzZTI3MDc1ZmY2MzVl
MWRiMWZhMjRhYmMwN2M5MTE0MGIyZTgzMGYuLmM2YmE3ZTJhNjhhZTYyZjYzZDgzN2Q5YWExZGU1
Y2I3ODgzOTJhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24u
aApAQCAtMTE3LDYgKzExNyw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJl
dGFpblB0cjxOU1dpbmRvdz4gbV9zaGVldFdpbmRvdzsKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+
IG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+
IG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlcjsKKyAgICBSZXRhaW5Q
dHI8TlNPYmplY3Q+IG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlcjsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCBjMzcz
NGJlZDNmYjc4MzU5MDk5MjczN2JiZTE1ZTE3ZDgzMDdiYzM5Li4zYzMwZWQzNTJiNzU0NGUyZThj
Yjc4MzRlYjMxNDMxNWM5ZjY5MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbQpAQCAtMjk2LDYgKzI5NiwyOCBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNl
c3Npb246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEFT
U0VSVChtX3NoZWV0V2luZG93ICYmIG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcik7CiAK
KyAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gQXBwS2l0IGlzc3VlOiA8cmRhcjov
L3Byb2JsZW0vNTkxMjUzMjk+LgorICAgIC8vIFttX3NoZWV0V2luZG93IHNoZWV0UGFyZW50XSBp
cyBudWxsIGlmIHRoZSBwYXJlbnQgaXMgbWluaW1pemVkIG9yIHRoZSBob3N0IGFwcCBpcyBoaWRk
ZW4uCisgICAgaWYgKGF1dG8gKnByZXNlbnRpbmdXaW5kb3cgPSBtX3BhZ2UtPnBsYXRmb3JtV2lu
ZG93KCkpIHsKKyAgICAgICAgaWYgKHByZXNlbnRpbmdXaW5kb3cubWluaWF0dXJpemVkICYmICFt
X3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIpIHsKKyAgICAgICAgICAg
IG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlciA9IFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93RGlk
RGVtaW5pYXR1cml6ZU5vdGlmaWNhdGlvbiBvYmplY3Q6cHJlc2VudGluZ1dpbmRvdyBxdWV1ZTpu
aWwgdXNpbmdCbG9jazpbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChO
U05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9sbGVy
KCk7CisgICAgICAgICAgICAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSByZW1vdmVPYnNlcnZlcjptX3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2
ZXIuZ2V0KCldOworICAgICAgICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0
dXJpemVPYnNlcnZlciA9IG51bGxwdHI7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChOU0FwcC5oaWRkZW4gJiYgIW1fYXBw
bGljYXRpb25EaWRVbmhpZGVPYnNlcnZlcikgeworICAgICAgICBtX2FwcGxpY2F0aW9uRGlkVW5o
aWRlT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9i
c2VydmVyRm9yTmFtZTpOU0FwcGxpY2F0aW9uRGlkVW5oaWRlTm90aWZpY2F0aW9uIG9iamVjdDpO
U0FwcCBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXNdIChOU05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgICAgICBkaXNtaXNzVmlld0Nv
bnRyb2xsZXIoKTsKKyAgICAgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hcHBsaWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyLmdldCgp
XTsKKyAgICAgICAgICAgIG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlciA9IG51bGxwdHI7
CisgICAgICAgIH1dOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX3NoZWV0V2luZG93V2ls
bENsb3NlT2JzZXJ2ZXIuZ2V0KCldOwogICAgIG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZl
ciA9IG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhv
cml6YXRpb25TZXNzaW9uLm1tCmluZGV4IDNiNTM4MGUzZWJmOTMwMzBjYjJlNWNlODMzNDI0MGRh
YTk5YzZjYjcuLjI2NTg5OGNmZDhmNWI3ZjcwNzMzZGM1MTg4OGI1NjA4ZDhiMzdiYzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5t
bQpAQCAtODMsNiArODMsNyBAQCB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbjo6
ZmFsbEJhY2tUb1dlYlBhdGhJbnRlcm5hbCgpCiAKIHZvaWQgU3ViRnJhbWVTT0F1dGhvcml6YXRp
b25TZXNzaW9uOjphYm9ydEludGVybmFsKCkKIHsKKyAgICBmYWxsQmFja1RvV2ViUGF0aEludGVy
bmFsKCk7CiB9CiAKIHZvaWQgU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb21wbGV0
ZUludGVybmFsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBOU0Rh
dGEgKmRhdGEpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNDM1MzdjMmEyMzU3N2I3NjM3NDg1ZmM4NTlmMzkyNTdiZDgwZWQ1Ni4uNTMyNTE0ZWI5
ODA4ZTBhYTNlNzlhNDRkNzIyZmUwOTBlOTk4NjgxMyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTAyLTAzICBK
aWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRGVmZXIgZW5kaW5n
IEFwcFNTTyBzaGVldHMgdGlsIE5TV2luZG93RGlkRGVtaW5pYXR1cml6ZSBvciBOU0FwcGxpY2F0
aW9uRGlkVW5oaWRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDcxNzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NjY5MDY1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgX3NldFVwVGVzdFdpbmRvdzpdKToKKyAg
ICAgICAgTWFrZSB0aGUgVGVzdFdLV2ViVmlld0hvc3RXaW5kb3cgbWluaWF0dXJpemFibGUgdG8g
ZW5hYmxlIHRoZSB0ZXN0LgorCiAyMDIwLTAyLTAzICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUGFzcyBhIGhpbnQgZnJvbSB0aGUgZXh0ZW5zaW9uIHRvIGRl
Y2lkZVBvbGljeUZvclNPQXV0aG9yaXphdGlvbkxvYWRXaXRoQ3VycmVudFBvbGljeQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3Jp
emF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09B
dXRob3JpemF0aW9uLm1tCmluZGV4IDk3MzBhYzU4ZmE2ZTg4M2I4YThhNzFjNTM1YTFlMTFiOGQ4
ZDFlMmYuLmY5YjMwNjM2MzU4ZDM2MmY0ODNmMjM3NDM0NTk3NmQwN2IyNDdmMjkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXph
dGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RT
T0F1dGhvcml6YXRpb24ubW0KQEAgLTE0MjcsNiArMTQyNywxODQgQEAgVEVTVChTT0F1dGhvcml6
YXRpb25SZWRpcmVjdCwgTlNOb3RpZmljYXRpb25DZW50ZXIpCiAgICAgZ05vdGlmaWNhdGlvbkNh
bGxiYWNrKG51bGxwdHIpOwogICAgIEVYUEVDVF9GQUxTRSh1aVNob3dlZCk7CiB9CisKK1RFU1Qo
U09BdXRob3JpemF0aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ01pbmlhdHVyaXphdGlvbikK
K3sKKyAgICByZXNldFN0YXRlKCk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjEo
UEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoY2FuUGVyZm9ybUF1dGhv
cml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3Zl
cnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVTZXREZWxl
Z2F0ZSkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIzKFBBTDo6Z2V0U09B
dXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkw6
aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQmVn
aW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGdldEF1dGhv
cml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBsZXRpb246KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTCkpOworCisg
ICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxG
b3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpA
IlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXph
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJlU09BdXRob3JpemF0aW9u
V2ViVmlldyh3ZWJWaWV3LmdldCgpLCBkZWxlZ2F0ZS5nZXQoKSwgT3BlbkV4dGVybmFsU2NoZW1l
c1BvbGljeTo6QWxsb3cpOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZhdXRob3Jp
emF0aW9uUGVyZm9ybWVkKTsKKworICAgIGF1dG8gdmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
VGVzdFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0
byB2aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU1plcm9SZWN0
XSk7CisgICAgW3ZpZXdDb250cm9sbGVyIHNldFZpZXc6dmlldy5nZXQoKV07CisKKyAgICBbZ0Rl
bGVnYXRlIGF1dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24gcHJlc2VudFZpZXdDb250cm9sbGVy
OnZpZXdDb250cm9sbGVyLmdldCgpIHdpdGhDb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzLCBOU0Vy
cm9yICopIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgfV07CisgICAgVXRp
bDo6cnVuKCZ1aVNob3dlZCk7CisKKyAgICBib29sIGRpZEVuZFNoZWV0ID0gZmFsc2U7CisgICAg
YXV0byAqaG9zdFdpbmRvdyA9IFt3ZWJWaWV3IGhvc3RXaW5kb3ddOworICAgIGF1dG8gb2JzZXJ2
ZXIgPSBhZG9wdE5TKFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXJGb3JOYW1lOk5TV2luZG93RGlkRW5kU2hlZXROb3RpZmljYXRpb24gb2JqZWN0Omhvc3RX
aW5kb3cgcXVldWU6bmlsIHVzaW5nQmxvY2s6WyZkaWRFbmRTaGVldF0gKE5TTm90aWZpY2F0aW9u
ICopIHsKKyAgICAgICAgZGlkRW5kU2hlZXQgPSB0cnVlOworICAgIH1dKTsKKyAgICBbaG9zdFdp
bmRvdyBtaW5pYXR1cml6ZTpob3N0V2luZG93XTsKKworICAgIC8vIERpbWlzcyB0aGUgVUkKKyAg
ICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb25EaWRDYW5jZWw6Z0F1dGhvcml6YXRpb25dOworICAg
IEVYUEVDVF9GQUxTRShkaWRFbmRTaGVldCk7CisKKyAgICAvLyBVSSBpcyBvbmx5IGRpbWlzc2Vk
IGFmdGVyIHRoZSBob3N0V2luZG93IGlzIGRlbWluaW1pemVkLgorICAgIFtob3N0V2luZG93IGRl
bWluaWF0dXJpemU6aG9zdFdpbmRvd107CisgICAgRVhQRUNUX1RSVUUoZGlkRW5kU2hlZXQpOwor
fQorCitURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBEaXNtaXNzVUlEdXJpbmdIaWRpbmcp
Cit7CisgICAgcmVzZXRTdGF0ZSgpOworICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIx
KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRo
b3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVs
ZWdhdGUpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJM
Omh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJl
Z2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3
aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRo
b3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKKwor
ICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJM
Rm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6
YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyZVNPQXV0aG9yaXphdGlv
bldlYlZpZXcod2ViVmlldy5nZXQoKSwgZGVsZWdhdGUuZ2V0KCksIE9wZW5FeHRlcm5hbFNjaGVt
ZXNQb2xpY3k6OkFsbG93KTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmYXV0aG9y
aXphdGlvblBlcmZvcm1lZCk7CisKKyAgICBhdXRvIHZpZXdDb250cm9sbGVyID0gYWRvcHROUyhb
W1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVj
dF0pOworICAgIFt2aWV3Q29udHJvbGxlciBzZXRWaWV3OnZpZXcuZ2V0KCldOworCisgICAgW2dE
ZWxlZ2F0ZSBhdXRob3JpemF0aW9uOmdBdXRob3JpemF0aW9uIHByZXNlbnRWaWV3Q29udHJvbGxl
cjp2aWV3Q29udHJvbGxlci5nZXQoKSB3aXRoQ29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcywgTlNF
cnJvciAqKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH1dOworICAgIFV0
aWw6OnJ1bigmdWlTaG93ZWQpOworCisgICAgYm9vbCBkaWRFbmRTaGVldCA9IGZhbHNlOworICAg
IGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5TKFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93RGlkRW5kU2hlZXROb3RpZmljYXRpb24g
b2JqZWN0Olt3ZWJWaWV3IGhvc3RXaW5kb3ddIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOlsmZGlkRW5k
U2hlZXRdIChOU05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgIGRpZEVuZFNoZWV0ID0gdHJ1ZTsK
KyAgICB9XSk7CisKKyAgICBbTlNBcHAgaGlkZTpOU0FwcF07CisKKyAgICAvLyBEaW1pc3MgdGhl
IFVJCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRob3JpemF0aW9u
XTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkRW5kU2hlZXQpOworCisgICAgLy8gVUkgaXMgb25seSBk
aW1pc3NlZCBhZnRlciB0aGUgaG9zdEFwcCBpcyB1bmhpZGRlbi4KKyAgICBbTlNBcHAgdW5oaWRl
Ok5TQXBwXTsKKyAgICBFWFBFQ1RfVFJVRShkaWRFbmRTaGVldCk7Cit9CisKK1RFU1QoU09BdXRo
b3JpemF0aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ01pbmlhdHVyaXphdGlvblRoZW5Bbm90
aGVyKQoreworICAgIHJlc2V0U3RhdGUoKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6
bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3Jt
QXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNl
dERlbGVnYXRlKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpn
ZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0
aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxl
ciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0
QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWlu
dGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7
CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0U09BdXRo
b3JpemF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmVTT0F1dGhvcml6
YXRpb25XZWJWaWV3KHdlYlZpZXcuZ2V0KCksIGRlbGVnYXRlLmdldCgpLCBPcGVuRXh0ZXJuYWxT
Y2hlbWVzUG9saWN5OjpBbGxvdyk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJmF1
dGhvcml6YXRpb25QZXJmb3JtZWQpOworCisgICAgYXV0byB2aWV3Q29udHJvbGxlcjEgPSBhZG9w
dE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byB2aWV3MSA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNa
ZXJvUmVjdF0pOworICAgIFt2aWV3Q29udHJvbGxlcjEgc2V0Vmlldzp2aWV3MS5nZXQoKV07CisK
KyAgICBbZ0RlbGVnYXRlIGF1dGhvcml6YXRpb246Z0F1dGhvcml6YXRpb24gcHJlc2VudFZpZXdD
b250cm9sbGVyOnZpZXdDb250cm9sbGVyMS5nZXQoKSB3aXRoQ29tcGxldGlvbjpeKEJPT0wgc3Vj
Y2VzcywgTlNFcnJvciAqKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH1d
OworICAgIFV0aWw6OnJ1bigmdWlTaG93ZWQpOworCisgICAgYm9vbCBkaWRFbmRTaGVldCA9IGZh
bHNlOworICAgIGF1dG8gKmhvc3RXaW5kb3cgPSBbd2ViVmlldyBob3N0V2luZG93XTsKKyAgICBh
dXRvIG9ic2VydmVyID0gYWRvcHROUyhbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50
ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRvd0RpZEVuZFNoZWV0Tm90aWZpY2F0aW9uIG9i
amVjdDpob3N0V2luZG93IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOlsmZGlkRW5kU2hlZXRdIChOU05v
dGlmaWNhdGlvbiAqKSB7CisgICAgICAgIGRpZEVuZFNoZWV0ID0gdHJ1ZTsKKyAgICB9XSk7Cisg
ICAgW2hvc3RXaW5kb3cgbWluaWF0dXJpemU6aG9zdFdpbmRvd107CisKKyAgICAvLyBEaW1pc3Mg
dGhlIFVJCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRob3JpemF0
aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkRW5kU2hlZXQpOworCisgICAgLy8gTG9hZCBhbm90
aGVyIEFwcFNTTyByZXF1ZXN0LgorICAgIGF1dGhvcml6YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRl
c3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOwor
CisgICAgLy8gVUkgaXMgb25seSBkaW1pc3NlZCBhZnRlciB0aGUgaG9zdEFwcCBpcyB1bmhpZGRl
bi4KKyAgICBbaG9zdFdpbmRvdyBkZW1pbmlhdHVyaXplOmhvc3RXaW5kb3ddOworICAgIEVYUEVD
VF9UUlVFKGRpZEVuZFNoZWV0KTsKK30KKworVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwg
RGlzbWlzc1VJRHVyaW5nSGlkaW5nVGhlbkFub3RoZXIpCit7CisgICAgcmVzZXRTdGF0ZSgpOwor
ICAgIENsYXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25z
ZUNvZGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6
YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVp
bnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAgICBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBz
ZWxlY3RvcihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5Oiks
IHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwp
KTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJl
c3BvbnNlQ29kZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdl
dEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkwpKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gdGVz
dFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOworICAgIGNvbmZpZ3VyZVNPQXV0aG9yaXphdGlvbldlYlZpZXcod2ViVmlldy5nZXQoKSwg
ZGVsZWdhdGUuZ2V0KCksIE9wZW5FeHRlcm5hbFNjaGVtZXNQb2xpY3k6OkFsbG93KTsKKworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVS
TC5nZXQoKV1dOworICAgIFV0aWw6OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisKKyAg
ICBhdXRvIHZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNaZXJvUmVjdF0pOworICAgIFt2aWV3Q29udHJvbGxl
ciBzZXRWaWV3OnZpZXcuZ2V0KCldOworCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uOmdB
dXRob3JpemF0aW9uIHByZXNlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKSB3
aXRoQ29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqKSB7CisgICAgICAgIEVYUEVD
VF9UUlVFKHN1Y2Nlc3MpOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmdWlTaG93ZWQpOworCisg
ICAgYm9vbCBkaWRFbmRTaGVldCA9IGZhbHNlOworICAgIGF1dG8gb2JzZXJ2ZXIgPSBhZG9wdE5T
KFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1l
Ok5TV2luZG93RGlkRW5kU2hlZXROb3RpZmljYXRpb24gb2JqZWN0Olt3ZWJWaWV3IGhvc3RXaW5k
b3ddIHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOlsmZGlkRW5kU2hlZXRdIChOU05vdGlmaWNhdGlvbiAq
KSB7CisgICAgICAgIGRpZEVuZFNoZWV0ID0gdHJ1ZTsKKyAgICB9XSk7CisKKyAgICBbTlNBcHAg
aGlkZTpOU0FwcF07CisKKyAgICAvLyBEaW1pc3MgdGhlIFVJCisgICAgW2dEZWxlZ2F0ZSBhdXRo
b3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRob3JpemF0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlk
RW5kU2hlZXQpOworCisgICAgLy8gTG9hZCBhbm90aGVyIEFwcFNTTyByZXF1ZXN0LgorICAgIGF1
dGhvcml6YXRpb25QZXJmb3JtZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpy
dW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworCisgICAgLy8gVUkgaXMgb25seSBkaW1pc3Nl
ZCBhZnRlciB0aGUgaG9zdEFwcCBpcyB1bmhpZGRlbi4KKyAgICBbTlNBcHAgdW5oaWRlOk5TQXBw
XTsKKyAgICBFWFBFQ1RfVFJVRShkaWRFbmRTaGVldCk7Cit9CiAjZW5kaWYKIAogVEVTVChTT0F1
dGhvcml6YXRpb25Qb3BVcCwgTm9JbnRlcmNlcHRpb25zKQpAQCAtMjA5Miw2ICsyMjcwLDM4IEBA
IFRFU1QoU09BdXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvbkVycm9yKQogICAgIEVY
UEVDVF9XS19TVFJFUSgiIiwgZmluYWxVUkwpOwogfQogCitURVNUKFNPQXV0aG9yaXphdGlvblN1
YkZyYW1lLCBJbnRlcmNlcHRpb25DYW5jZWwpCit7CisgICAgcmVzZXRTdGF0ZSgpOworICAgIENs
YXNzTWV0aG9kU3dpenpsZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3Mo
KSwgQHNlbGVjdG9yKGNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6
KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25X
aXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRT
T0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnBy
ZXRfY2FzdDxJTVA+KG92ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIHN3aXp6bGVyMyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rv
cihiZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50
ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAg
ICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNChbQUtBdXRob3JpemF0aW9uQ29udHJvbGxl
ciBjbGFzc10sIEBzZWxlY3Rvcihpc1VSTEZyb21BcHBsZU93bmVkRG9tYWluOiksIHJlaW50ZXJw
cmV0X2Nhc3Q8SU1QPihvdmVycmlkZUlzVVJMRnJvbUFwcGxlT3duZWREb21haW4pKTsKKyAgICBJ
bnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyNShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNs
YXNzKCksIEBzZWxlY3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29k
ZTpjb21wbGV0aW9uOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6
YXRpb25IaW50c1dpdGhVUkwpKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gYmFzZVVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAg
ICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiR2V0U2Vzc2lvbkNvb2tpZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgYXV0byB0ZXN0SHRtbCA9
IGdlbmVyYXRlSHRtbChwYXJlbnRUZW1wbGF0ZSwgdGVzdFVSTC5nZXQoKS5hYnNvbHV0ZVN0cmlu
Zyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CisgICAgY29uZmlndXJlU09BdXRob3JpemF0aW9uV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBk
ZWxlZ2F0ZS5nZXQoKSk7CisKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzp0ZXN0SHRtbCBi
YXNlVVJMOmJhc2VVUkwuZ2V0KCldOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibnVs
bCJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAiU09BdXRob3JpemF0aW9uRGlkU3Rh
cnQiXTsKKyAgICBjaGVja0F1dGhvcml6YXRpb25PcHRpb25zKGZhbHNlLCAiZmlsZTovLyIsIDIp
OworCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRob3JpemF0aW9u
XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIm51bGwiXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTWVzc2FnZTpAIlNPQXV0aG9yaXphdGlvbkRpZENhbmNlbCJdOworICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAiIl07CisgICAgLy8gVHJ5cyB0byB3YWl0IHVudGlsIHRoZSBpZnJh
bWUgbG9hZCBpcyBmaW5pc2hlZC4KKyAgICBVdGlsOjpzbGVlcCgwLjUpOworICAgIC8vIE1ha2Ug
c3VyZSB3ZSBkb24ndCBsb2FkIHRoZSByZXF1ZXN0IG9mIHRoZSBpZnJhbWUgdG8gdGhlIG1haW4g
ZnJhbWUuCisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBmaW5hbFVSTCk7Cit9CisKIFRFU1QoU09B
dXRob3JpemF0aW9uU3ViRnJhbWUsIEludGVyY2VwdGlvblN1Y2Nlc3MpCiB7CiAgICAgcmVzZXRT
dGF0ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4
IGVmNjFhZGIyMjE1MTM1YTZhN2IwYjZmMzQwMWM2NzlkZGFhZjhkN2YuLjQzOWI5Y2M3YTMwMTY2
MzIxYjYzNmM4MTBlZDY3MDFjMDIyMmQ5ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcubW0KQEAgLTM5NCw3ICszOTQsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIGNvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3Vy
YXRpbwogLSAodm9pZClfc2V0VXBUZXN0V2luZG93OihOU1JlY3QpZnJhbWUKIHsKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgX2hvc3RXaW5kb3cgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlld0hvc3RX
aW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNrOk5TV2luZG93
U3R5bGVNYXNrQm9yZGVybGVzcyBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
Tk9dKTsKKyAgICBfaG9zdFdpbmRvdyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3SG9zdFdpbmRv
dyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpmcmFtZSBzdHlsZU1hc2s6KE5TV2luZG93U3R5
bGVNYXNrQm9yZGVybGVzcyB8IE5TV2luZG93U3R5bGVNYXNrTWluaWF0dXJpemFibGUpIGJhY2tp
bmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwogICAgIFtfaG9zdFdpbmRvdyBz
ZXRGcmFtZU9yaWdpbjpOU01ha2VQb2ludCgwLCAwKV07CiAgICAgW19ob3N0V2luZG93IHNldElz
VmlzaWJsZTpZRVNdOwogICAgIFtfaG9zdFdpbmRvdyBjb250ZW50Vmlld10ud2FudHNMYXllciA9
IFlFUzsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389733</attachid>
            <date>2020-02-04 16:16:39 -0800</date>
            <delta_ts>2020-02-05 14:49:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207173-20200204161638.patch</filename>
            <type>text/plain</type>
            <size>19684</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ3YmZlOWE2MjZmZjMzZjJk
YjIyYzgzYjkxYTZlMTE1ZTE1ZjM3M2UuLjNiMjNkMzQ4ODEzOWQxOGJhNGRlYTMxYzIxMTFiZDNh
NGFiNTA0MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDItMDMgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEZWZlciBlbmRpbmcgQXBwU1NP
IHNoZWV0cyB0aWwgTlNXaW5kb3dEaWREZW1pbmlhdHVyaXplIG9yIE5TQXBwbGljYXRpb25EaWRV
bmhpZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
NzE3MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTU2NjkwNjU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBBcHBLaXQgaGFzIGEgYnVnIHRoYXQgW21f
c2hlZXRXaW5kb3cgc2hlZXRQYXJlbnRdIGlzIG51bGwgaWYgdGhlIHBhcmVudCBpcyBtaW5pbWl6
ZWQgb3IgdGhlIGhvc3QgYXBwIGlzIGhpZGRlbi4KKyAgICAgICAgU2hlZXRQYXJlbnQgaXMgdXNl
ZCB0byBlbmRTaGVldC4gVGhlcmVmb3JlLCBXZWJLaXQgY2Fubm90IGRpc21pc3MgQXBwU1NPIFVJ
cyBpbiB0aGUgYWJvdmUgdHdvIGNhc2VzIGlmIGFza2VkCisgICAgICAgIGJ5IGV4dGVuc2lvbnMu
CisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgd29ya2Fyb3VuZCB0byBkZXRlY3Qg
dGhvc2UgdHdvIGNhc2VzIGFuZCBkZWZlciB0aGUgZW5kU2hlZXQgdGlsIE5TV2luZG93RGlkRGVt
aW5pYXR1cml6ZQorICAgICAgICBvciBOU0FwcGxpY2F0aW9uRGlkVW5oaWRlIGlzIHJlY2VpdmVk
LgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgorCisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9u
Lm1tOgorICAgICAgICAoV2ViS2l0OjpTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpkaXNtaXNzVmll
d0NvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
U3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpTdWJG
cmFtZVNPQXV0aG9yaXphdGlvblNlc3Npb246OmFib3J0SW50ZXJuYWwpOgorICAgICAgICBUcmVh
dCBhYm9ydCBsaWtlIGZhbGxpbmcgYmFjayB0byB0aGUgd2ViIHBhdGggZm9yIHN1YiBmcmFtZSBj
YXNlIGdpdmVuIGRpc3BsYXlpbmcgYW4gZW1wdHkKKyAgICAgICAgaWZyYW1lIGFmdGVyIGFib3J0
aW5nIHNlZW1zIGJhZC4KKwogMjAyMC0wMi0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXZWJLaXRBZGRpdGlvbnMgaG9vayB0byBwcm92
aWRlIGFkZGl0aW9uYWwgY3VzdG9taXphdGlvbnMgdG8gVUlEcmFnSW50ZXJhY3Rpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCmluZGV4IDIzZTI3MDc1ZmY2MzVl
MWRiMWZhMjRhYmMwN2M5MTE0MGIyZTgzMGYuLmM2YmE3ZTJhNjhhZTYyZjYzZDgzN2Q5YWExZGU1
Y2I3ODgzOTJhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24u
aApAQCAtMTE3LDYgKzExNyw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJl
dGFpblB0cjxOU1dpbmRvdz4gbV9zaGVldFdpbmRvdzsKICAgICBSZXRhaW5QdHI8TlNPYmplY3Q+
IG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcjsKKyAgICBSZXRhaW5QdHI8TlNPYmplY3Q+
IG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlcjsKKyAgICBSZXRhaW5Q
dHI8TlNPYmplY3Q+IG1fYXBwbGljYXRpb25EaWRVbmhpZGVPYnNlcnZlcjsKICNlbmRpZgogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1NPQXV0aG9yaXphdGlvblNlc3Npb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCBjMzcz
NGJlZDNmYjc4MzU5MDk5MjczN2JiZTE1ZTE3ZDgzMDdiYzM5Li4yNzNiNTkxMTEzNGNmZDE1MTkw
YmU5MGI5NzNiMWU2MDliNmNkMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbQpAQCAtMjk2LDYgKzI5NiwzMiBAQCB2b2lkIFNPQXV0aG9yaXphdGlvblNl
c3Npb246OmRpc21pc3NWaWV3Q29udHJvbGxlcigpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIEFT
U0VSVChtX3NoZWV0V2luZG93ICYmIG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlcik7CiAK
KyAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgYW4gQXBwS2l0IGlzc3VlOiA8cmRhcjov
L3Byb2JsZW0vNTkxMjUzMjk+LgorICAgIC8vIFttX3NoZWV0V2luZG93IHNoZWV0UGFyZW50XSBp
cyBudWxsIGlmIHRoZSBwYXJlbnQgaXMgbWluaW1pemVkIG9yIHRoZSBob3N0IGFwcCBpcyBoaWRk
ZW4uCisgICAgaWYgKGF1dG8gKnByZXNlbnRpbmdXaW5kb3cgPSBtX3BhZ2UtPnBsYXRmb3JtV2lu
ZG93KCkpIHsKKyAgICAgICAgaWYgKHByZXNlbnRpbmdXaW5kb3cubWluaWF0dXJpemVkKSB7Cisg
ICAgICAgICAgICBpZiAobV9wcmVzZW50aW5nV2luZG93RGlkRGVtaW5pYXR1cml6ZU9ic2VydmVy
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRv
d0RpZERlbWluaWF0dXJpemVPYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOk5TV2luZG93RGlkRGVtaW5pYXR1cml6ZU5vdGlm
aWNhdGlvbiBvYmplY3Q6cHJlc2VudGluZ1dpbmRvdyBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIChOU05vdGlmaWNhdGlvbiAqKSB7
CisgICAgICAgICAgICAgICAgZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CisgICAgICAgICAgICAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjpt
X3ByZXNlbnRpbmdXaW5kb3dEaWREZW1pbmlhdHVyaXplT2JzZXJ2ZXIuZ2V0KCldOworICAgICAg
ICAgICAgICAgIG1fcHJlc2VudGluZ1dpbmRvd0RpZERlbWluaWF0dXJpemVPYnNlcnZlciA9IG51
bGxwdHI7CisgICAgICAgICAgICB9XTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGlmIChOU0FwcC5oaWRkZW4pIHsKKyAgICAgICAgaWYgKG1fYXBwbGljYXRp
b25EaWRVbmhpZGVPYnNlcnZlcikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9hcHBs
aWNhdGlvbkRpZFVuaGlkZU9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNBcHBsaWNhdGlvbkRpZFVuaGlkZU5vdGlmaWNh
dGlvbiBvYmplY3Q6TlNBcHAgcXVldWU6bmlsIHVzaW5nQmxvY2s6W3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCB0aGlzXSAoTlNOb3RpZmljYXRpb24gKikgeworICAgICAgICAgICAg
ZGlzbWlzc1ZpZXdDb250cm9sbGVyKCk7CisgICAgICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fYXBwbGljYXRpb25EaWRVbmhpZGVP
YnNlcnZlci5nZXQoKV07CisgICAgICAgICAgICBtX2FwcGxpY2F0aW9uRGlkVW5oaWRlT2JzZXJ2
ZXIgPSBudWxscHRyOworICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9z
aGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyLmdldCgpXTsKICAgICBtX3NoZWV0V2luZG93V2ls
bENsb3NlT2JzZXJ2ZXIgPSBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNz
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1N1
YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAzYjUzODBlM2ViZjkzMDMwY2Iy
ZTVjZTgzMzQyNDBkYWE5OWM2Y2I3Li4yNjU4OThjZmQ4ZjViN2Y3MDczM2RjNTE4ODhiNTYwOGQ4
YjM3YmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vU3ViRnJhbWVTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TdWJGcmFtZVNPQXV0aG9yaXph
dGlvblNlc3Npb24ubW0KQEAgLTgzLDYgKzgzLDcgQEAgdm9pZCBTdWJGcmFtZVNPQXV0aG9yaXph
dGlvblNlc3Npb246OmZhbGxCYWNrVG9XZWJQYXRoSW50ZXJuYWwoKQogCiB2b2lkIFN1YkZyYW1l
U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6YWJvcnRJbnRlcm5hbCgpCiB7CisgICAgZmFsbEJhY2tU
b1dlYlBhdGhJbnRlcm5hbCgpOwogfQogCiB2b2lkIFN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vz
c2lvbjo6Y29tcGxldGVJbnRlcm5hbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgTlNEYXRhICpkYXRhKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDQzNTM3YzJhMjM1NzdiNzYzNzQ4NWZjODU5ZjM5MjU3YmQ4MGVk
NTYuLjUzMjUxNGViOTgwOGUwYWEzZTc5YTQ0ZDcyMmZlMDkwZTk5ODY4MTMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAyMC0wMi0wMyAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgorCisgICAgICAg
IERlZmVyIGVuZGluZyBBcHBTU08gc2hlZXRzIHRpbCBOU1dpbmRvd0RpZERlbWluaWF0dXJpemUg
b3IgTlNBcHBsaWNhdGlvbkRpZFVuaGlkZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3MTczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTY2OTA2
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IF9zZXRVcFRlc3RX
aW5kb3c6XSk6CisgICAgICAgIE1ha2UgdGhlIFRlc3RXS1dlYlZpZXdIb3N0V2luZG93IG1pbmlh
dHVyaXphYmxlIHRvIGVuYWJsZSB0aGUgdGVzdC4KKwogMjAyMC0wMi0wMyAgSmlld2VuIFRhbiAg
PGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFBhc3MgYSBoaW50IGZyb20gdGhlIGV4
dGVuc2lvbiB0byBkZWNpZGVQb2xpY3lGb3JTT0F1dGhvcml6YXRpb25Mb2FkV2l0aEN1cnJlbnRQ
b2xpY3kKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VGVzdFNPQXV0aG9yaXphdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbQppbmRleCA5NzMwYWM1OGZhNmU4ODNiOGE4YTcx
YzUzNWExZTExYjhkOGQxZTJmLi5mOWIzMDYzNjM1OGQzNjJmNDgzZjIzNzQzNDU5NzZkMDdiMjQ3
ZjI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
c3RTT0F1dGhvcml6YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCkBAIC0xNDI3LDYgKzE0MjcsMTg0IEBAIFRF
U1QoU09BdXRob3JpemF0aW9uUmVkaXJlY3QsIE5TTm90aWZpY2F0aW9uQ2VudGVyKQogICAgIGdO
b3RpZmljYXRpb25DYWxsYmFjayhudWxscHRyKTsKICAgICBFWFBFQ1RfRkFMU0UodWlTaG93ZWQp
OwogfQorCitURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBEaXNtaXNzVUlEdXJpbmdNaW5p
YXR1cml6YXRpb24pCit7CisgICAgcmVzZXRTdGF0ZSgpOworICAgIENsYXNzTWV0aG9kU3dpenps
ZXIgc3dpenpsZXIxKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGNh
blBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTDpyZXNwb25zZUNvZGU6KSwgcmVpbnRlcnByZXRf
Y2FzdDxJTVA+KG92ZXJyaWRlQ2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAg
SW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjIoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25D
bGFzcygpLCBAc2VsZWN0b3Ioc2V0RGVsZWdhdGU6KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92
ZXJyaWRlU2V0RGVsZWdhdGUpKTsKKyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVy
MyhQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihiZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMOmh0dHBIZWFkZXJzOmh0dHBCb2R5OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1Q
PihvdmVycmlkZUJlZ2luQXV0aG9yaXphdGlvbldpdGhVUkwpKTsKKyAgICBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyIHN3aXp6bGVyNChQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxl
Y3RvcihnZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMOnJlc3BvbnNlQ29kZTpjb21wbGV0aW9u
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUdldEF1dGhvcml6YXRpb25IaW50c1dp
dGhVUkwpKTsKKworICAgIFJldGFpblB0cjxOU1VSTD4gdGVzdFVSTCA9IFtbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyZVNP
QXV0aG9yaXphdGlvbldlYlZpZXcod2ViVmlldy5nZXQoKSwgZGVsZWdhdGUuZ2V0KCksIE9wZW5F
eHRlcm5hbFNjaGVtZXNQb2xpY3k6OkFsbG93KTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOworICAgIFV0aWw6
OnJ1bigmYXV0aG9yaXphdGlvblBlcmZvcm1lZCk7CisKKyAgICBhdXRvIHZpZXdDb250cm9sbGVy
ID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gdmlldyA9IGFkb3B0TlMoW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNaZXJvUmVjdF0pOworICAgIFt2aWV3Q29udHJvbGxlciBzZXRWaWV3OnZpZXcuZ2V0KCld
OworCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uOmdBdXRob3JpemF0aW9uIHByZXNlbnRW
aWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKSB3aXRoQ29tcGxldGlvbjpeKEJPT0wg
c3VjY2VzcywgTlNFcnJvciAqKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAg
IH1dOworICAgIFV0aWw6OnJ1bigmdWlTaG93ZWQpOworCisgICAgYm9vbCBkaWRFbmRTaGVldCA9
IGZhbHNlOworICAgIGF1dG8gKmhvc3RXaW5kb3cgPSBbd2ViVmlldyBob3N0V2luZG93XTsKKyAg
ICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRvd0RpZEVuZFNoZWV0Tm90aWZpY2F0aW9u
IG9iamVjdDpob3N0V2luZG93IHF1ZXVlOm5pbCB1c2luZ0Jsb2NrOlsmZGlkRW5kU2hlZXRdIChO
U05vdGlmaWNhdGlvbiAqKSB7CisgICAgICAgIGRpZEVuZFNoZWV0ID0gdHJ1ZTsKKyAgICB9XSk7
CisgICAgW2hvc3RXaW5kb3cgbWluaWF0dXJpemU6aG9zdFdpbmRvd107CisKKyAgICAvLyBEaW1p
c3MgdGhlIFVJCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uRGlkQ2FuY2VsOmdBdXRob3Jp
emF0aW9uXTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkRW5kU2hlZXQpOworCisgICAgLy8gVUkgaXMg
b25seSBkaW1pc3NlZCBhZnRlciB0aGUgaG9zdFdpbmRvdyBpcyBkZW1pbmltaXplZC4KKyAgICBb
aG9zdFdpbmRvdyBkZW1pbmlhdHVyaXplOmhvc3RXaW5kb3ddOworICAgIEVYUEVDVF9UUlVFKGRp
ZEVuZFNoZWV0KTsKK30KKworVEVTVChTT0F1dGhvcml6YXRpb25SZWRpcmVjdCwgRGlzbWlzc1VJ
RHVyaW5nSGlkaW5nKQoreworICAgIHJlc2V0U3RhdGUoKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6
bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3Rvcihj
YW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0
X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAg
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9u
Q2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihv
dmVycmlkZVNldERlbGVnYXRlKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxl
cjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3Jp
emF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRo
b2RTd2l6emxlciBzd2l6emxlcjQoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2Vs
ZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlv
bjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNX
aXRoVVJMKSk7CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmVT
T0F1dGhvcml6YXRpb25XZWJWaWV3KHdlYlZpZXcuZ2V0KCksIGRlbGVnYXRlLmdldCgpLCBPcGVu
RXh0ZXJuYWxTY2hlbWVzUG9saWN5OjpBbGxvdyk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGls
OjpydW4oJmF1dGhvcml6YXRpb25QZXJmb3JtZWQpOworCisgICAgYXV0byB2aWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TWmVyb1JlY3RdKTsKKyAgICBbdmlld0NvbnRyb2xsZXIgc2V0Vmlldzp2aWV3LmdldCgp
XTsKKworICAgIFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbjpnQXV0aG9yaXphdGlvbiBwcmVzZW50
Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXIuZ2V0KCkgd2l0aENvbXBsZXRpb246XihCT09M
IHN1Y2Nlc3MsIE5TRXJyb3IgKikgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAg
ICB9XTsKKyAgICBVdGlsOjpydW4oJnVpU2hvd2VkKTsKKworICAgIGJvb2wgZGlkRW5kU2hlZXQg
PSBmYWxzZTsKKyAgICBhdXRvIG9ic2VydmVyID0gYWRvcHROUyhbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpOU1dpbmRvd0RpZEVuZFNoZWV0
Tm90aWZpY2F0aW9uIG9iamVjdDpbd2ViVmlldyBob3N0V2luZG93XSBxdWV1ZTpuaWwgdXNpbmdC
bG9jazpbJmRpZEVuZFNoZWV0XSAoTlNOb3RpZmljYXRpb24gKikgeworICAgICAgICBkaWRFbmRT
aGVldCA9IHRydWU7CisgICAgfV0pOworCisgICAgW05TQXBwIGhpZGU6TlNBcHBdOworCisgICAg
Ly8gRGltaXNzIHRoZSBVSQorICAgIFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbkRpZENhbmNlbDpn
QXV0aG9yaXphdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKGRpZEVuZFNoZWV0KTsKKworICAgIC8v
IFVJIGlzIG9ubHkgZGltaXNzZWQgYWZ0ZXIgdGhlIGhvc3RBcHAgaXMgdW5oaWRkZW4uCisgICAg
W05TQXBwIHVuaGlkZTpOU0FwcF07CisgICAgRVhQRUNUX1RSVUUoZGlkRW5kU2hlZXQpOworfQor
CitURVNUKFNPQXV0aG9yaXphdGlvblJlZGlyZWN0LCBEaXNtaXNzVUlEdXJpbmdNaW5pYXR1cml6
YXRpb25UaGVuQW5vdGhlcikKK3sKKyAgICByZXNldFN0YXRlKCk7CisgICAgQ2xhc3NNZXRob2RT
d2l6emxlciBzd2l6emxlcjEoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0
b3IoY2FuUGVyZm9ybUF1dGhvcml6YXRpb25XaXRoVVJMOnJlc3BvbnNlQ29kZTopLCByZWludGVy
cHJldF9jYXN0PElNUD4ob3ZlcnJpZGVDYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkwpKTsK
KyAgICBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMihQQUw6OmdldFNPQXV0aG9yaXph
dGlvbkNsYXNzKCksIEBzZWxlY3RvcihzZXREZWxlZ2F0ZTopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVTZXREZWxlZ2F0ZSkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dp
enpsZXIzKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKGJlZ2luQXV0
aG9yaXphdGlvbldpdGhVUkw6aHR0cEhlYWRlcnM6aHR0cEJvZHk6KSwgcmVpbnRlcnByZXRfY2Fz
dDxJTVA+KG92ZXJyaWRlQmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNl
TWV0aG9kU3dpenpsZXIgc3dpenpsZXI0KFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwg
QHNlbGVjdG9yKGdldEF1dGhvcml6YXRpb25IaW50c1dpdGhVUkw6cmVzcG9uc2VDb2RlOmNvbXBs
ZXRpb246KSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KG92ZXJyaWRlR2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTCkpOworCisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZSIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbVGVzdFNPQXV0aG9yaXphdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmln
dXJlU09BdXRob3JpemF0aW9uV2ViVmlldyh3ZWJWaWV3LmdldCgpLCBkZWxlZ2F0ZS5nZXQoKSwg
T3BlbkV4dGVybmFsU2NoZW1lc1BvbGljeTo6QWxsb3cpOworCisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAg
VXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKworICAgIGF1dG8gdmlld0NvbnRy
b2xsZXIxID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gdmlldzEgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKyAgICBbdmlld0NvbnRyb2xsZXIxIHNldFZpZXc6dmll
dzEuZ2V0KCldOworCisgICAgW2dEZWxlZ2F0ZSBhdXRob3JpemF0aW9uOmdBdXRob3JpemF0aW9u
IHByZXNlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcjEuZ2V0KCkgd2l0aENvbXBsZXRp
b246XihCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgeworICAgICAgICBFWFBFQ1RfVFJVRShzdWNj
ZXNzKTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJnVpU2hvd2VkKTsKKworICAgIGJvb2wgZGlk
RW5kU2hlZXQgPSBmYWxzZTsKKyAgICBhdXRvICpob3N0V2luZG93ID0gW3dlYlZpZXcgaG9zdFdp
bmRvd107CisgICAgYXV0byBvYnNlcnZlciA9IGFkb3B0TlMoW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlckZvck5hbWU6TlNXaW5kb3dEaWRFbmRTaGVldE5v
dGlmaWNhdGlvbiBvYmplY3Q6aG9zdFdpbmRvdyBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbJmRpZEVu
ZFNoZWV0XSAoTlNOb3RpZmljYXRpb24gKikgeworICAgICAgICBkaWRFbmRTaGVldCA9IHRydWU7
CisgICAgfV0pOworICAgIFtob3N0V2luZG93IG1pbmlhdHVyaXplOmhvc3RXaW5kb3ddOworCisg
ICAgLy8gRGltaXNzIHRoZSBVSQorICAgIFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbkRpZENhbmNl
bDpnQXV0aG9yaXphdGlvbl07CisgICAgRVhQRUNUX0ZBTFNFKGRpZEVuZFNoZWV0KTsKKworICAg
IC8vIExvYWQgYW5vdGhlciBBcHBTU08gcmVxdWVzdC4KKyAgICBhdXRob3JpemF0aW9uUGVyZm9y
bWVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CisgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9u
UGVyZm9ybWVkKTsKKworICAgIC8vIFVJIGlzIG9ubHkgZGltaXNzZWQgYWZ0ZXIgdGhlIGhvc3RB
cHAgaXMgdW5oaWRkZW4uCisgICAgW2hvc3RXaW5kb3cgZGVtaW5pYXR1cml6ZTpob3N0V2luZG93
XTsKKyAgICBFWFBFQ1RfVFJVRShkaWRFbmRTaGVldCk7Cit9CisKK1RFU1QoU09BdXRob3JpemF0
aW9uUmVkaXJlY3QsIERpc21pc3NVSUR1cmluZ0hpZGluZ1RoZW5Bbm90aGVyKQoreworICAgIHJl
c2V0U3RhdGUoKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNP
QXV0aG9yaXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldp
dGhVUkw6cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBl
cmZvcm1BdXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIg
c3dpenpsZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERl
bGVnYXRlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7Cisg
ICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRp
b25DbGFzcygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVy
czpodHRwQm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6
YXRpb25XaXRoVVJMKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjQoUEFM
OjpnZXRTT0F1dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhp
bnRzV2l0aFVSTDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElN
UD4ob3ZlcnJpZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CisKKyAgICBSZXRhaW5Q
dHI8TlNVUkw+IHRlc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0U09BdXRob3JpemF0aW9uRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmVTT0F1dGhvcml6YXRpb25XZWJWaWV3KHdl
YlZpZXcuZ2V0KCksIGRlbGVnYXRlLmdldCgpLCBPcGVuRXh0ZXJuYWxTY2hlbWVzUG9saWN5OjpB
bGxvdyk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnRlc3RVUkwuZ2V0KCldXTsKKyAgICBVdGlsOjpydW4oJmF1dGhvcml6YXRpb25QZXJm
b3JtZWQpOworCisgICAgYXV0byB2aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tUZXN0U09BdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHZpZXcgPSBh
ZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TWmVyb1JlY3RdKTsKKyAgICBb
dmlld0NvbnRyb2xsZXIgc2V0Vmlldzp2aWV3LmdldCgpXTsKKworICAgIFtnRGVsZWdhdGUgYXV0
aG9yaXphdGlvbjpnQXV0aG9yaXphdGlvbiBwcmVzZW50Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRy
b2xsZXIuZ2V0KCkgd2l0aENvbXBsZXRpb246XihCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKikgewor
ICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJnVp
U2hvd2VkKTsKKworICAgIGJvb2wgZGlkRW5kU2hlZXQgPSBmYWxzZTsKKyAgICBhdXRvIG9ic2Vy
dmVyID0gYWRvcHROUyhbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9i
c2VydmVyRm9yTmFtZTpOU1dpbmRvd0RpZEVuZFNoZWV0Tm90aWZpY2F0aW9uIG9iamVjdDpbd2Vi
VmlldyBob3N0V2luZG93XSBxdWV1ZTpuaWwgdXNpbmdCbG9jazpbJmRpZEVuZFNoZWV0XSAoTlNO
b3RpZmljYXRpb24gKikgeworICAgICAgICBkaWRFbmRTaGVldCA9IHRydWU7CisgICAgfV0pOwor
CisgICAgW05TQXBwIGhpZGU6TlNBcHBdOworCisgICAgLy8gRGltaXNzIHRoZSBVSQorICAgIFtn
RGVsZWdhdGUgYXV0aG9yaXphdGlvbkRpZENhbmNlbDpnQXV0aG9yaXphdGlvbl07CisgICAgRVhQ
RUNUX0ZBTFNFKGRpZEVuZFNoZWV0KTsKKworICAgIC8vIExvYWQgYW5vdGhlciBBcHBTU08gcmVx
dWVzdC4KKyAgICBhdXRob3JpemF0aW9uUGVyZm9ybWVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07
CisgICAgVXRpbDo6cnVuKCZhdXRob3JpemF0aW9uUGVyZm9ybWVkKTsKKworICAgIC8vIFVJIGlz
IG9ubHkgZGltaXNzZWQgYWZ0ZXIgdGhlIGhvc3RBcHAgaXMgdW5oaWRkZW4uCisgICAgW05TQXBw
IHVuaGlkZTpOU0FwcF07CisgICAgRVhQRUNUX1RSVUUoZGlkRW5kU2hlZXQpOworfQogI2VuZGlm
CiAKIFRFU1QoU09BdXRob3JpemF0aW9uUG9wVXAsIE5vSW50ZXJjZXB0aW9ucykKQEAgLTIwOTIs
NiArMjI3MCwzOCBAQCBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25F
cnJvcikKICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIGZpbmFsVVJMKTsKIH0KIAorVEVTVChTT0F1
dGhvcml6YXRpb25TdWJGcmFtZSwgSW50ZXJjZXB0aW9uQ2FuY2VsKQoreworICAgIHJlc2V0U3Rh
dGUoKTsKKyAgICBDbGFzc01ldGhvZFN3aXp6bGVyIHN3aXp6bGVyMShQQUw6OmdldFNPQXV0aG9y
aXphdGlvbkNsYXNzKCksIEBzZWxlY3RvcihjYW5QZXJmb3JtQXV0aG9yaXphdGlvbldpdGhVUkw6
cmVzcG9uc2VDb2RlOiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZUNhblBlcmZvcm1B
dXRob3JpemF0aW9uV2l0aFVSTCkpOworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgc3dpenps
ZXIyKFBBTDo6Z2V0U09BdXRob3JpemF0aW9uQ2xhc3MoKSwgQHNlbGVjdG9yKHNldERlbGVnYXRl
OiksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihvdmVycmlkZVNldERlbGVnYXRlKSk7CisgICAgSW5z
dGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjMoUEFMOjpnZXRTT0F1dGhvcml6YXRpb25DbGFz
cygpLCBAc2VsZWN0b3IoYmVnaW5BdXRob3JpemF0aW9uV2l0aFVSTDpodHRwSGVhZGVyczpodHRw
Qm9keTopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVCZWdpbkF1dGhvcml6YXRpb25X
aXRoVVJMKSk7CisgICAgQ2xhc3NNZXRob2RTd2l6emxlciBzd2l6emxlcjQoW0FLQXV0aG9yaXph
dGlvbkNvbnRyb2xsZXIgY2xhc3NdLCBAc2VsZWN0b3IoaXNVUkxGcm9tQXBwbGVPd25lZERvbWFp
bjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJpZGVJc1VSTEZyb21BcHBsZU93bmVkRG9t
YWluKSk7CisgICAgSW5zdGFuY2VNZXRob2RTd2l6emxlciBzd2l6emxlcjUoUEFMOjpnZXRTT0F1
dGhvcml6YXRpb25DbGFzcygpLCBAc2VsZWN0b3IoZ2V0QXV0aG9yaXphdGlvbkhpbnRzV2l0aFVS
TDpyZXNwb25zZUNvZGU6Y29tcGxldGlvbjopLCByZWludGVycHJldF9jYXN0PElNUD4ob3ZlcnJp
ZGVHZXRBdXRob3JpemF0aW9uSGludHNXaXRoVVJMKSk7CisKKyAgICBSZXRhaW5QdHI8TlNVUkw+
IGJhc2VVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxl
MiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl07CisgICAgUmV0YWluUHRyPE5TVVJMPiB0ZXN0VVJMID0gW1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIkdldFNlc3Npb25Db29raWUiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIGF1
dG8gdGVzdEh0bWwgPSBnZW5lcmF0ZUh0bWwocGFyZW50VGVtcGxhdGUsIHRlc3RVUkwuZ2V0KCku
YWJzb2x1dGVTdHJpbmcpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RTT0F1dGhvcml6YXRpb25EZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyZVNPQXV0aG9yaXphdGlvbldlYlZpZXcod2Vi
Vmlldy5nZXQoKSwgZGVsZWdhdGUuZ2V0KCkpOworCisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6dGVzdEh0bWwgYmFzZVVSTDpiYXNlVVJMLmdldCgpXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9y
TWVzc2FnZTpAIm51bGwiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlNPQXV0aG9y
aXphdGlvbkRpZFN0YXJ0Il07CisgICAgY2hlY2tBdXRob3JpemF0aW9uT3B0aW9ucyhmYWxzZSwg
ImZpbGU6Ly8iLCAyKTsKKworICAgIFtnRGVsZWdhdGUgYXV0aG9yaXphdGlvbkRpZENhbmNlbDpn
QXV0aG9yaXphdGlvbl07CisgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJudWxsIl07Cisg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTT0F1dGhvcml6YXRpb25EaWRDYW5jZWwiXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIiJdOworICAgIC8vIFRyeXMgdG8gd2FpdCB1
bnRpbCB0aGUgaWZyYW1lIGxvYWQgaXMgZmluaXNoZWQuCisgICAgVXRpbDo6c2xlZXAoMC41KTsK
KyAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgbG9hZCB0aGUgcmVxdWVzdCBvZiB0aGUgaWZyYW1l
IHRvIHRoZSBtYWluIGZyYW1lLgorICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgZmluYWxVUkwpOwor
fQorCiBURVNUKFNPQXV0aG9yaXphdGlvblN1YkZyYW1lLCBJbnRlcmNlcHRpb25TdWNjZXNzKQog
ewogICAgIHJlc2V0U3RhdGUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQppbmRleCBlZjYxYWRiMjIxNTEzNWE2YTdiMGI2ZjM0MDFjNjc5ZGRhYWY4ZDdmLi40
MzliOWNjN2EzMDE2NjMyMWI2MzZjODEwZWQ2NzAxYzAyMjJkOWYyIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0zOTQsNyArMzk0LDcgQEAgLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoRnJhbWU6KENHUmVjdClmcmFtZSBjb25maWd1cmF0aW9uOihXS1dl
YlZpZXdDb25maWd1cmF0aW8KIC0gKHZvaWQpX3NldFVwVGVzdFdpbmRvdzooTlNSZWN0KWZyYW1l
CiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIF9ob3N0V2luZG93ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXdIb3N0V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OmZyYW1lIHN0eWxl
TWFzazpOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1
ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgX2hvc3RXaW5kb3cgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
Vmlld0hvc3RXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6ZnJhbWUgc3R5bGVNYXNr
OihOU1dpbmRvd1N0eWxlTWFza0JvcmRlcmxlc3MgfCBOU1dpbmRvd1N0eWxlTWFza01pbmlhdHVy
aXphYmxlKSBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKICAgICBb
X2hvc3RXaW5kb3cgc2V0RnJhbWVPcmlnaW46TlNNYWtlUG9pbnQoMCwgMCldOwogICAgIFtfaG9z
dFdpbmRvdyBzZXRJc1Zpc2libGU6WUVTXTsKICAgICBbX2hvc3RXaW5kb3cgY29udGVudFZpZXdd
LndhbnRzTGF5ZXIgPSBZRVM7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>