<?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>226988</bug_id>
          
          <creation_ts>2021-06-14 14:06:31 -0700</creation_ts>
          <short_desc>[watchOS] Reenable modern text input UI for non-numeric text input types</short_desc>
          <delta_ts>2021-06-16 15:18:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aestes</cc>
    
    <cc>akeerthi</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>hi</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1769539</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-14 14:06:31 -0700</bug_when>
    <thetext>rdar://78102953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769582</commentid>
    <comment_count>1</comment_count>
      <attachid>431374</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-14 15:43:28 -0700</bug_when>
    <thetext>Created attachment 431374
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769587</commentid>
    <comment_count>2</comment_count>
      <attachid>431375</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-14 15:59:10 -0700</bug_when>
    <thetext>Created attachment 431375
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769589</commentid>
    <comment_count>3</comment_count>
      <attachid>431377</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-14 16:06:22 -0700</bug_when>
    <thetext>Created attachment 431377
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769592</commentid>
    <comment_count>4</comment_count>
      <attachid>431378</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-14 16:14:24 -0700</bug_when>
    <thetext>Created attachment 431378
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769900</commentid>
    <comment_count>5</comment_count>
      <attachid>431461</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-15 12:01:20 -0700</bug_when>
    <thetext>Created attachment 431461
Remove unnecesary comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769930</commentid>
    <comment_count>6</comment_count>
      <attachid>431461</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-06-15 13:10:30 -0700</bug_when>
    <thetext>Comment on attachment 431461
Remove unnecesary comment

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

&gt; Source/WebKit/UIProcess/ios/forms/WKTextInputListViewController.mm:141
&gt; +    [_contextView setFrame:CGRectMake((viewWidth - sizeThatFits.width) / 2, 0, sizeThatFits.width, sizeThatFits.height)];
&gt; +    [_contextView layoutSubviews];

I don&apos;t think `layoutSubviews` is necessary – the frame change (specifically the change to size) should trigger layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769940</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-15 13:32:40 -0700</bug_when>
    <thetext>(In reply to Aditya Keerthi from comment #6)
&gt; Comment on attachment 431461 [details]
&gt; Remove unnecesary comment
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431461&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/forms/WKTextInputListViewController.mm:141
&gt; &gt; +    [_contextView setFrame:CGRectMake((viewWidth - sizeThatFits.width) / 2, 0, sizeThatFits.width, sizeThatFits.height)];
&gt; &gt; +    [_contextView layoutSubviews];
&gt; 
&gt; I don&apos;t think `layoutSubviews` is necessary – the frame change (specifically
&gt; the change to size) should trigger layout.

Good catch! Removed this call to -layoutSubviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769942</commentid>
    <comment_count>8</comment_count>
      <attachid>431476</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-15 13:34:53 -0700</bug_when>
    <thetext>Created attachment 431476
Small adjustment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770008</commentid>
    <comment_count>9</comment_count>
      <attachid>431493</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-15 16:27:02 -0700</bug_when>
    <thetext>Created attachment 431493
Rebase after r278910</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770357</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-16 13:27:22 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 431493 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770379</commentid>
    <comment_count>11</comment_count>
      <attachid>431598</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-16 13:56:29 -0700</bug_when>
    <thetext>Created attachment 431598
Rebase on trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770391</commentid>
    <comment_count>12</comment_count>
      <attachid>431602</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-06-16 14:17:46 -0700</bug_when>
    <thetext>Created attachment 431602
Fix more conflicts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770431</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-16 15:18:45 -0700</bug_when>
    <thetext>Committed r278957 (238885@main): &lt;https://commits.webkit.org/238885@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431602.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431374</attachid>
            <date>2021-06-14 15:43:28 -0700</date>
            <delta_ts>2021-06-14 16:00:43 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226988-20210614154327.patch</filename>
            <type>text/plain</type>
            <size>54125</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYWMxNDUxNDU3MGM3MzFm
OWUzZGZkMDg5MzViODE3ODUzMGQ0OTguLmIyMTNhOWViYTQ0YjFjNjQ1MDdhNzRkYmQ3NjFlOGE5
ZDdmOTljZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgbG9naWMgb24gd2F0Y2hPUyBz
dWNoIHRoYXQgd2UncmUgYWJsZSB0byBwcmVzZW50IHRoZSBuZXcgKCJtb2Rlcm4iKSBVSSBmb3Ig
c2NyaWJibGUgdGV4dAorICAgICAgICBpbnB1dCBvbiB3YXRjaE9TIDgsIHJhdGhlciB0aGFuIGxl
Z2FjeSAoaW4tcHJvY2Vzcykgc2NyaWJibGUgVUkuIE92ZXJhbGwsIHRoaXMgcGF0Y2ggcmVtb3Zl
cworICAgICAgICBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWx0b2dldGhlci4gVGhp
cyBoYWQgdHdvIHN1YmNsYXNzZXM6IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciAodXNl
ZCBmb3IKKyAgICAgICAgZm9jdXNlZCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50
cykgYW5kIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZvciB0ZXh0IGlucHV0
IHR5cGVzKS4KKyAgICAgICAgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyIG5vdyBpbmhl
cml0cyBkaXJlY3RseSBmcm9tIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQK
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRzIGZyb20g
UFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXI7IHRoaXMgaW5oZXJpdGFuY2UgZnJv
bQorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBpbnN0ZWFkIG9m
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIGFsbG93cyB0aGUKKyAgICAgICAgV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdG8gc2hvdyB0ZXh0IHN1Z2dlc3Rpb25zIHVzaW5n
IGAtc2V0TWVzc2FnZXM6YCBvbgorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29u
dHJvbGxlciwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGN1c3RvbSBXZWJLaXQgY29kZSB0byBpbnNl
cnQgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgbW92ZSB0
aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG91dCBvZiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIsIGFuZCBpbnRvCisgICAgICAgIGVpdGhlciBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgb3IgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXI6CisKKyAg
ICAgICAgMS4gU3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCB1cGRhdGluZyBjb250ZXh0IHZpZXdz
IChpLmUuIHRoZSBkb21haW4gbmFtZSBoZWFkZXIgdmlldyBpbiBRdWlja2JvYXJkKSA9PgorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAyLiBMb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgbGFuZ3VhZ2Ugc2Vs
ZWN0aW9uIFVJID0+IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDMu
IFN1cHBvcnQgZm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbGxlY3Rpb24gdmlldyBjZWxscyBpbiBR
dWlja2JvYXJkID0+IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMgdG8gY3JlYXRlIGEgUFVJ
Q1RleHRJbnB1dENvbnRleHQgZnJvbSB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3Jt
YXRpb24gb3V0IGludG8gYSBzZXBhcmF0ZQorICAgICAgICBoZWxwZXIgbWV0aG9kLCBgLWNyZWF0
ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0YCwgYW5kIHVzZSBpdCB3aGVuIGJvdGggZGlyZWN0
bHkgbGF1bmNoaW5nIGludG8KKyAgICAgICAgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFuZCBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGZvY3VzZWRGb3JtQ29udHJvbGxlckRpZFVwZGF0ZVN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFsbG93c0xhbmd1YWdlU2VsZWN0aW9uRm9yTGlzdFZpZXdDb250cm9s
bGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRJbnB1dENvbnRleHRGb3JMaXN0
Vmlld0NvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dENvbnRlbnRU
eXBlRm9yVGVzdGluZ10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHZpZXdDb250cm9sbGVy
OmlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJl
bW92ZSB0aGlzIGRlbGVnYXRlIG1ldGhvZCwgd2hpY2ggd2FzIChlZmZlY3RpdmVseSkgdW51c2Vk
IHNpbmNlIHdlIGp1c3QgYXNrIGZvcgorICAgICAgICBgLWlucHV0Q29udGV4dFZpZXdGb3JWaWV3
Q29udHJvbGxlcjpgIGZyb20gdGhlIGlucHV0IGRlbGVnYXRlIGFueXdheXMuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYC1hbGxvd3NM
YW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjpgLgorCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdGV4dENvbnRlbnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgIFJlcGxhY2UgdGhpcyB3aXRoIGAtdGV4dElucHV0Q29udGV4dEZvckxp
c3RWaWV3Q29udHJvbGxlcjpgLCB3aGljaCByZXR1cm5zIGEgd2hvbGUgUFVJQ1RleHRJbnB1dENv
bnRleHQgaW5zdGVhZAorICAgICAgICBvZiBqdXN0IGEgdGV4dCBjb250ZW50IHR5cGUuCisKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbGlzdFZpZXdDb250cm9s
bGVyOmRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92
ZSBzZXZlcmFsIGRlbGVnYXRlIG1ldGhvZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlciB2aWV3V2lsbEFw
cGVhcjpdKToKKworICAgICAgICBSZW1vdmUgc29tZSAoZGVmdW5jdCkgbG9naWMgZm9yIG92ZXJy
aWRpbmcgdGhlIHN0YXR1cyBiYXIgd2hlbiBzaG93aW5nIFF1aWNrYm9hcmQgaW5wdXQgdmlldyBj
b250cm9sbGVycy4gVGhpcworICAgICAgICBzdGF0dXMgYmFyIG1lY2hhbmlzbSAod2hpY2ggd2Fz
IHByZXZpb3VzbHkgdXNlZCB0byBzaG93IGxhYmVsIHRleHQgZm9yIGZvcm0gY29udHJvbHMpIGhh
c24ndCB3b3JrZWQgc2luY2UKKyAgICAgICAgd2F0Y2hPUyA2LCBhbmQgd2UgbmVlZCB0byBpbXBs
ZW1lbnQgdGhpcyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgdXNlIFBVSUNTdGF0dXNCYXJHbG9iYWxD
b250ZXh0Vmlld0Fzc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tR
dWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxl
Y3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0
TWVudUl0ZW1DZWxsIHRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtX
S1NlbGVjdE1lbnVJdGVtQ2VsbCBiYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlXSk6CisgICAgICAg
ICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNlbGwgdG9wVG9MYWJlbEJhc2VsaW5l
U3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNl
bGwgYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKworICAgICAgICBTZWUgYWJv
dmUgY29tbWVudCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGluaXRXaXRoRGVsZWdhdGU6XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9hZENvbnRleHRWaWV3XSk6
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZUNvbnRleHRW
aWV3SWZOZWVkZWRdKToKKworICAgICAgICBNb3ZlIGxvZ2ljIGZvciBzaG93aW5nIGFuZCB1cGRh
dGluZyB0aGUgY29udGV4dCB2aWV3IG91dCBvZiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIsIGFuZCBpbnRvCisgICAgICAgIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLiBTZWUg
Y29tbWVudHMgYWJvdmUuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgcmVxdWlyZXNOdW1lcmljSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgYWRkaXRpb25hbFRyYXlCdXR0b25zXSk6CisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZVRleHRTdWdnZXN0aW9uczpdKToKKyAgICAgICAg
KC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVudFZpZXdIZWlnaHRd
KToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVu
dFZpZXddKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxk
U2hvd0xhbmd1YWdlQnV0dG9uXSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyIHN1cHBvcnRzRGljdGF0aW9uSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxkU2hvd1RyYXlWaWV3XSk6CisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHNob3VsZFNob3dUZXh0RmllbGRdKToKKworICAgICAg
ICBPdmVycmlkZSB0aGlzIGFuZCByZXR1cm4gWUVTIGZvciB0ZXh0IGlucHV0IHR5cGVzIHRoYXQg
ZG9uJ3QgcmVxdWlyZSBhbiBhZGRpdGlvbmFsIG51bWVyaWMgaW5wdXQgdHJheSBidXR0b24uCisg
ICAgICAgIFRoaXMgYWxsb3dzIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIHRv
IHNob3cgYSBuYXRpdmUgdGV4dCBmaWVsZCBjb250YWluaW5nIHRoZSBpbnB1dCB0ZXh0IGluc2lk
ZQorICAgICAgICBxdWlja2JvYXJkLCB3aGljaCAod2hlbiB0YXBwZWQpIHByZXNlbnRzIG1vZGVy
biB0ZXh0IGlucHV0IFVJLgorCisgICAgICAgIFNpbmNlIHNob3dpbmcgdGhlIHRleHQgZmllbGQg
aXMgYXBwYXJlbnRseSBtdXR1YWxseSBleGNsdXNpdmUgdG8gc2hvd2luZyBhIHRyYXkgdmlldywg
d2UgYWRkaXRpb25hbGx5IG92ZXJyaWRlCisgICAgICAgIGAtc2hvdWxkU2hvd1RyYXlWaWV3YCBh
bmQgcmV0dXJuIE5PIGZvciBub24tbnVtZXJpYyB0ZXh0IGlucHV0cy4KKworICAgICAgICAoLVtX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzdXBwb3J0c0Fyb3VldElucHV0XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHZpZXdEaWRMb2FkXSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHdpbGxQcmVzZW50
QXJvdWV0Vmlld0NvbnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgVGhlcmUncyBubyBu
ZWVkIHRvIG92ZXJyaWRlIHRoaXMgZGVsZWdhdGUgbWV0aG9kIGFueW1vcmUsIHNpbmNlIHRoZSBQ
VUlDVGV4dElucHV0Q29udGV4dCdzIGAtaW5pdGlhbFRleHRgIGlzCisgICAgICAgIHN1ZmZpY2ll
bnQgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcmliYmxlIHRleHQgaW5wdXQgVUkgaXMgcHJlcG9wdWxh
dGVkIHdpdGggdGhlIGZvY3VzZWQgdGV4dCBmaWVsZCdzIGluaXRpYWwgdGV4dAorICAgICAgICBj
b250ZW50LgorCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9h
ZFRleHRTdWdnZXN0aW9uc10pOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIHRvIGAt
dXBkYXRlVGV4dFN1Z2dlc3Rpb25zOmAsIGFuZCBtYWtlIGl0IHRha2UgYSBsaXN0IG9mIFVJVGV4
dFN1Z2dlc3Rpb25zLiBUaGlzIG1ha2VzIHRoZSBjb2RlIGEKKyAgICAgICAgYml0IGVhc2llciB0
byBmb2xsb3cgYW5kIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGAtdGV4dFN1Z2dlc3Rpb25zRm9y
TGlzdFZpZXdDb250cm9sbGVyOmAgZGVsZWdhdGUgbWV0aG9kLgorCisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNlbGVjdExpc3RJdGVtQXRJbmRleFBhdGg6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNl
bGVjdExpc3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciBfZGlkU2VsZWN0TGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIG51bWJlck9mTGlzdEl0ZW1zXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGhlaWdodEZvckxpc3RJ
dGVtOndpZHRoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBjZWxsRm9yTGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIGxpc3RJdGVtQ2VsbFJldXNlSWRlbnRpZmllcl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBsaXN0SXRlbUNl
bGxDbGFzc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBpdGVtQ2VsbEZvckxpc3RJdGVtOmZvckluZGV4UGF0aDpdKTogRGVsZXRlZC4KKworICAg
ICAgICBSZW1vdmUgYWxsIHRoaXMgY29kZSBmb3Igc2hvd2luZyB0ZXh0IHN1Z2dlc3Rpb25zIGlu
IFF1aWNrYm9hcmQgVUkuIFNpbmNlIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGlzIG5v
dyBhCisgICAgICAgIHN1YmNsYXNzIG9mIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9s
bGVyLCB3ZSBjYW4gbm93IHNpbXBseSB1c2UgdGhlIGAtbWVzc2FnZXNgIHByb3BlcnR5IG9mIHRv
IHBvcHVsYXRlCisgICAgICAgIHF1aWNrYm9hcmQgd2l0aCB0ZXh0IHN1Z2dlc3Rpb25zLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA2
LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFt3
YXRjaE9TXSBRdWlja2JvYXJkIFVJIGZvciBmb2N1c2VkIHNlbGVjdCBlbGVtZW50cyBzaG91bGQg
bm90IGFsbG93IHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUgaW5wdXQgbGFuZ3VhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oCmlu
ZGV4IDZhMzE3NTE1NWU1YjM5NzJlMjU1NDZmNjE0NTc1MmQ5YTk2YzJkOWMuLmE5MWVmZDFhZmJk
NjFhOTI0NmFkZTg4OTFhNjM3ZTZjOThhNGNlMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaApAQCAtMzksOSArMzksOSBA
QAogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNQaWNrZXJWaWV3X1ByaXZhdGUuaD4KICNpbXBv
cnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIuaD4K
LSNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5o
PgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
U3ViY2xhc3MuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3
U3BlY3MuaD4KKyNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUmVzb3VyY2VzLmg+
CkBAIC0yMTksMTEgKzIxOSwxNiBAQCBleHRlcm4gVUlCdXR0b25UeXBlIGNvbnN0IFBVSUNCdXR0
b25UeXBlUGlsbDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUFVJQ1RhYmxlVmll
dyAqbGlzdFZpZXc7CiBAcHJvcGVydHkgKHN0cm9uZywgbm9uYXRvbWljLCByZWFkb25seSkgUFVJ
Q1F1aWNrYm9hcmRMaXN0Vmlld1NwZWNzICpzcGVjczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSBVSVRleHRDb250ZW50VHlwZSB0ZXh0Q29udGVudFR5cGU7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgc3Ryb25nKSBQVUlDVGV4dElucHV0Q29udGV4dCAqdGV4dElucHV0Q29udGV4dDsKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8UFVJQ1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGljdGF0aW9uTW9k
ZSlkaWN0YXRpb25Nb2RlIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7CiAtICh2b2lkKXJlbG9h
ZExpc3RJdGVtczsKIC0gKHZvaWQpcmVsb2FkSGVhZGVyQ29udGVudFZpZXc7CiBAZW5kCiAKK0Bp
bnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlcgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJy
YXkgKm1lc3NhZ2VzOworQGVuZAorCiBAaW50ZXJmYWNlIFBVSUNRdWlja2JvYXJkQXJvdWV0Vmll
d0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSwgbnVsbGFibGUpIFVJVGV4dENvbnRlbnRUeXBlIHRleHRDb250ZW50VHlw
ZTsKIC0gKHZvaWQpc2V0SW5wdXRUZXh0OihudWxsYWJsZSBOU1N0cmluZyAqKWlucHV0VGV4dCBz
ZWxlY3Rpb25SYW5nZTooTlNSYW5nZSlzZWxlY3Rpb25SYW5nZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dAppbmRleCA4Y2ZjNjA3NGQwNTYyYWE1ODJjNWMwZDIzNDg4ZWU2MzZiMmM5YTljLi5iZDEwMGVi
ZmViNDEyZTAwOGRlNWNjMzgyZDRlM2NhYmJjNWU0ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CkBAIC00NTQsNyArNDU0LDYgQEAgVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQaWNr
ZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5tbQogVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXcubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tO
dW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbQotVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9h
cmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51
TGlzdFZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdD
b250cm9sbGVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjODc5ZTlkZTBkMWZkMDA5NWFiNzgwYjEy
NjNhOGY2YWJhMmFhMGRhLi44OGY1ZWUwYjE3MGYwNjcxNTZjOWYxZDdhNjhmZjk2Mjc5NjdhNDA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY0LDcgKzY0LDcgQEAKICNpbXBvcnQgIldLUHJldmlld0Fj
dGlvbkl0ZW1JZGVudGlmaWVycy5oIgogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9uSXRlbUludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmgiCi0jaW1wb3J0
ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLU2VsZWN0TWVudUxpc3RWaWV3
Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRXZWJFdmVudC5o
IgogI2ltcG9ydCAiV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKQEAgLTY2NjYsMTIg
KzY2NjYsOCBAQCAtICh2b2lkKXJlbW92ZUZvY3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAgICBb
c2VsZiBzZXRJbnB1dERlbGVnYXRlOm5pbF07CiB9CiAKLSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09O
VFJPTExFUikKLQotLSAoUmV0YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0
ZVF1aWNrYm9hcmRDb250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1ZpZXdD
b250cm9sbGVyCistIChSZXRhaW5QdHI8UFVJQ1RleHRJbnB1dENvbnRleHQ+KWNyZWF0ZVF1aWNr
Ym9hcmRUZXh0SW5wdXRDb250ZXh0CiB7Ci0gICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9
IGFkb3B0TlMoW1tQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLQogICAg
IGF1dG8gc3VnZ2VzdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4g
YWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXS5j
b3VudF0pOwogICAgIGZvciAoVUlUZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBbX2Zvcm1J
bnB1dFNlc3Npb24gc3VnZ2VzdGlvbnNdKQogICAgICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0
OnN1Z2dlc3Rpb24uaW5wdXRUZXh0XTsKQEAgLTY2ODIsNiArNjY3OCwxNSBAQCAtIChSZXRhaW5Q
dHI8UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyPilfY3JlYXRlUXVpY2tib2FyZENvbnRyb2xsZXI6
KFVJVmlld0NvbnRybwogICAgIFtjb250ZXh0IHNldEluaXRpYWxUZXh0Ol9mb2N1c2VkRWxlbWVu
dEluZm9ybWF0aW9uLnZhbHVlXTsKICAgICBbY29udGV4dCBzZXRBY2NlcHRzRW1vamk6WUVTXTsK
ICAgICBbY29udGV4dCBzZXRTaG91bGRQcmVzZW50TW9kZXJuVGV4dElucHV0VUk6WUVTXTsKKyAg
ICByZXR1cm4gY29udGV4dDsKK30KKworI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQor
CistIChSZXRhaW5QdHI8UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyPilfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6KFVJVmlld0NvbnRyb2xsZXIgKilwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIK
K3sKKyAgICBhdXRvIHF1aWNrYm9hcmRDb250cm9sbGVyID0gYWRvcHROUyhbW1BVSUNRdWlja2Jv
YXJkQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGV4dCA9IHNlbGYuY3Jl
YXRlUXVpY2tib2FyZFRleHRJbnB1dENvbnRleHQ7CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVy
IHNldFF1aWNrYm9hcmRQcmVzZW50aW5nVmlld0NvbnRyb2xsZXI6cHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyXTsKICAgICBbcXVpY2tib2FyZENvbnRyb2xsZXIgc2V0RXhjbHVkZWRGcm9tU2NyZWVu
Q2FwdHVyZTpbY29udGV4dCBpc1NlY3VyZVRleHRFbnRyeV1dOwogICAgIFtxdWlja2JvYXJkQ29u
dHJvbGxlciBzZXRUZXh0SW5wdXRDb250ZXh0OmNvbnRleHQuZ2V0KCldOwpAQCAtNjkzMSw3ICs2
OTM2LDcgQEAgLSAodm9pZClmb2N1c2VkRm9ybUNvbnRyb2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9u
czooV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3ICopdmkKICAgICBpZiAoX2lzQmx1cnJpbmdGb2N1
c2VkRWxlbWVudCB8fCAhW19wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciBp
c0tpbmRPZkNsYXNzOltXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBjbGFzc11dKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbKFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopX3By
ZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyIHJlbG9hZFRleHRTdWdnZXN0aW9u
c107CisgICAgWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxs
U2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciB1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6W19mb2N1c2Vk
Rm9ybUNvbnRyb2xWaWV3IHN1Z2dlc3Rpb25zXV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLU2Vs
ZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlCkBAIC05MTk2LDE2ICs5MjAxLDcgQEAg
LSAodm9pZClxdWlja2JvYXJkSW5wdXRDYW5jZWxsZWQ6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXIgKilxdWlja2JvYXJkCiAKICNwcmFnbWEgbWFyayAtIFdLUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyRGVsZWdhdGUKIAotLSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0Vmlld0hlaWdodEZvclNp
emU6KENHU2l6ZSlzaXplCi17Ci0gICAgaWQgPF9XS0lucHV0RGVsZWdhdGU+IGRlbGVnYXRlID0g
c2VsZi53ZWJWaWV3Ll9pbnB1dERlbGVnYXRlOwotICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Zm9jdXNlZEVsZW1lbnRDb250ZXh0Vmlld0hl
aWdodEZvckZpdHRpbmdTaXplOmlucHV0U2Vzc2lvbjopXSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICByZXR1cm4gW2RlbGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1c2VkRWxlbWVu
dENvbnRleHRWaWV3SGVpZ2h0Rm9yRml0dGluZ1NpemU6c2l6ZSBpbnB1dFNlc3Npb246X2Zvcm1J
bnB1dFNlc3Npb24uZ2V0KCldOwotfQotCi0tIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9u
TWVudUZvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAq
KWNvbnRyb2xsZXIKKy0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7CiAg
ICAgc3dpdGNoIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewogICAg
IGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKQEAgLTkyNzIsMjAgKzky
NjgsOSBAQCAtIChXS051bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9yTGlzdFZp
ZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaQogICAgIH0KIH0KIAotLSAoTlNTdHJpbmcg
Kil0ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZp
ZXdDb250cm9sbGVyICopY29udHJvbGxlcgotewotICAgIHJldHVybiBzZWxmLnRleHRDb250ZW50
VHlwZUZvclF1aWNrYm9hcmQ7Ci19Ci0KLS0gKE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAq
KXRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgcmV0dXJuIFtfZm9jdXNlZEZvcm1Db250
cm9sVmlldyBzdWdnZXN0aW9uc107Ci19Ci0KLS0gKHZvaWQpbGlzdFZpZXdDb250cm9sbGVyOihX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0VGV4dFN1
Z2dlc3Rpb246KFVJVGV4dFN1Z2dlc3Rpb24gKilzdWdnZXN0aW9uCistIChQVUlDVGV4dElucHV0
Q29udGV4dCAqKXRleHRJbnB1dENvbnRleHRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewotICAgIFtzZWxmIGluc2VydFRl
eHRTdWdnZXN0aW9uOnN1Z2dlc3Rpb25dOwotICAgIFtzZWxmIGRpc21pc3NRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXJBbmRSZXZlYWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTpjb250cm9s
bGVyXTsKKyAgICByZXR1cm4gc2VsZi5jcmVhdGVRdWlja2JvYXJkVGV4dElucHV0Q29udGV4dC5h
dXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZp
ZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgpA
QCAtOTMwMywxMCArOTI4OCw4IEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihV
SUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCi0KLQot
CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQorCiAtICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0
TWVudXNJZk5lZWRlZAogewogICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxp
Z2h0c0VuYWJsZWQoKSB8fCAhc2VsZi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNl
bGVjdGlvbklzUmFuZ2UpCkBAIC0xMDM2Myw3ICsxMDM0Niw3IEBAIC0gKE5TU3RyaW5nICopdGV4
dENvbnRlbnRUeXBlRm9yVGVzdGluZwogewogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAgICAg
aWYgKFtfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFz
czpbV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJu
IFtzZWxmIHRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xs
ZXIuZ2V0KCldOworICAgICAgICByZXR1cm4gWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciB0ZXh0SW5wdXRDb250
ZXh0XS50ZXh0Q29udGVudFR5cGU7CiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCiAg
ICAgaWYgKF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuIFtf
cHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXIgdGV4dElucHV0Q29udGV4dF0udGV4dENvbnRl
bnRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaAppbmRleCBlODFlMzQwZWU2M2FhZjY0
NzEwMmExYjI5NzlkODUyMWE2MGEyZWQ5Li43YjVmNDhkNzI4NWRlNzBkMDQ4MTdlMzEwMjFhYjU2
NjJiMTJlNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBA
QAogCiAjaWYgSEFWRShQRVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlz
dFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlLmgiCiAKIEBpbnRlcmZhY2UgV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgOiBQVUlD
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQpp
bmRleCA0NzQ4OGZkZTIyYTllOGQ5MmQxZDkzNWMxMDg3YTUwNTc1ZjE5YjM3Li5hYmQwYTc0ZjY0
MTU3NDA5M2UwNzI5OWMzMmU3NDA1Zjc1YjA2MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9s
bGVyLm1tCkBAIC0zMDYsOCArMzA2LDYgQEAgLSAodm9pZCl2aWV3V2lsbEFwcGVhcjooQk9PTClh
bmltYXRlZAogICAgIF9zdGF0dXNCYXJBc3NlcnRpb24gPSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFy
ZWRQVUlDQXBwbGljYXRpb25dIF90YWtlU3RhdHVzQmFyR2xvYmFsQ29udGV4dEFzc2VydGlvbkFu
aW1hdGVkOk5PXTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0
aW9uKSBuYW1lOlBVSUNTdGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmlj
YXRpb24gb2JqZWN0Om5pbF07CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2Vu
dGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFy
TmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2Jq
ZWN0Om5pbF07Ci0KLSAgICBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNl
bGYuZGVsZWdhdGUpOwogfQogCiAtICh2b2lkKXZpZXdEaWRBcHBlYXI6KEJPT0wpYW5pbWF0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9h
cmRMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODI5OGFkMDUxN2Q5ODQ5NmQwMzlkOGNmYjg5ZjYxOTllNWJhYWZhZi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEhBVkUoUEVQUEVSX1VJ
X0NPUkUpCi0KLSNpbXBvcnQgIlBlcHBlclVJQ29yZVNQSS5oIgotCi1AaW50ZXJmYWNlIFdLUXVp
Y2tib2FyZExpc3RJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsCi1AZW5kCi0K
LSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09MTEVDVElPTl9WSUVXUykKLUBpbnRlcmZhY2UgV0tRdWlj
a2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RDb2xs
ZWN0aW9uVmlld0l0ZW1DZWxsCi1AZW5kCi0jZW5kaWYKLQotQGNsYXNzIFdLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlcjsKLQotQHByb3RvY29sIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVy
RGVsZWdhdGUgPFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KLQotLSAoQ0dG
bG9hdCl2aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIgaW5wdXRDb250ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplOwotLSAoVUlW
aWV3ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZp
ZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKLS0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRG
b3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXI7Ci0tIChOU1N0cmluZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKLS0gKEJPT0wpc2hvdWxkRGlzcGxh
eUlucHV0Q29udGV4dFZpZXdGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlv
bk1lbnVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyOwotCi1AZW5kCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKLQotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlPilkZWxlZ2F0ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOwotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilhRGVjb2RlciBOU19VTkFWQUlMQUJMRTsKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZDxQVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2Rl
KWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4dFZp
ZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0KLUBlbmQKLQotdm9pZCBjb25maWd1cmVTdGF0
dXNCYXJGb3JDb250cm9sbGVyKFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiwgaWQgPFdL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KTsKLQotI2VuZGlmIC8vIEhBVkUoUEVQ
UEVSX1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM4ZDc3OTNmMjNjMjQ3MGFlODY5YmVhMDU3YzcyMmE5
NWUxY2JjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
ci5oIgotCi0jaWYgSEFWRShQRVBQRVJfVUlfQ09SRSkKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgotCi1zdGF0aWMgY29uc3QgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9
IDI2Owotc3RhdGljIGNvbnN0IENHRmxvYXQgaXRlbUNlbGxCYXNlbGluZVRvQm90dG9tID0gODsK
LQotQGltcGxlbWVudGF0aW9uIFdLUXVpY2tib2FyZExpc3RJdGVtQ2VsbAotCi0tIChDR0Zsb2F0
KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRv
TGFiZWxCYXNlbGluZTsKLX0KLQotLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVl
Ci17Ci0gICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0j
aWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbXBsZW1lbnRhdGlvbiBX
S1F1aWNrYm9hcmRMaXN0Q29sbGVjdGlvblZpZXdJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRv
TGFiZWxCYXNlbGluZVNwZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxC
YXNlbGluZTsKLX0KLQotLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0g
ICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jZW5kaWYg
Ly8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbnRlcmZhY2UgV0tRdWlj
a2JvYXJkTGlzdFZpZXdDb250cm9sbGVyICgpIDxQVUlDUXVpY2tib2FyZExhbmd1YWdlQ29udHJv
bGxlckRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyIHsKLSAgICBCT09MIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlOwotICAgIFJl
dGFpblB0cjxVSVZpZXc+IF9jb250ZXh0VmlldzsKLSAgICBSZXRhaW5QdHI8UFVJQ1N0YXR1c0Jh
ckdsb2JhbENvbnRleHRWaWV3QXNzZXJ0aW9uPiBfc3RhdHVzQmFyQXNzZXJ0aW9uOwotfQotCi1A
ZHluYW1pYyBkZWxlZ2F0ZTsKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlk
IDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIGlm
IChzZWxmID0gW3N1cGVyIGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQ
VUlDRGljdGF0aW9uTW9kZVRleHRdKQotICAgICAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9
IFlFUzsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3
SWZOZWVkZWQKLXsKLSAgICBpZiAoIV9jb250ZXh0Vmlld05lZWRzVXBkYXRlKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBhdXRvIHByZXZpb3VzQ29udGV4dFZpZXcgPSBfY29udGV4dFZpZXc7Ci0g
ICAgaWYgKFtzZWxmLmRlbGVnYXRlIHNob3VsZERpc3BsYXlJbnB1dENvbnRleHRWaWV3Rm9yTGlz
dFZpZXdDb250cm9sbGVyOnNlbGZdKQotICAgICAgICBfY29udGV4dFZpZXcgPSBbc2VsZi5kZWxl
Z2F0ZSBpbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgZWxzZQot
ICAgICAgICBfY29udGV4dFZpZXcgPSBuaWw7Ci0KLSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0
ZSA9IE5POwotfQotCi0tIChCT09MKXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KLXsKLSAgICByZXR1
cm4gTk87Ci19Ci0KLS0gKHZvaWQpdmlld1dpbGxBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAg
ICBbc3VwZXIgdmlld1dpbGxBcHBlYXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2Vy
dGlvbiA9IFtbUFVJQ0FwcGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0gX3Rha2VTdGF0
dXNCYXJHbG9iYWxDb250ZXh0QXNzZXJ0aW9uQW5pbWF0ZWQ6Tk9dOwotCi0gICAgTlNOb3RpZmlj
YXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5k
bGVTdGF0dXNCYXJOYXZpZ2F0aW9uKSBuYW1lOlBVSUNTdGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1
dHRvblByZXNzZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNl
cnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikg
bmFtZTpQVUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0K
LSAgICBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUp
OwotfQotCi0tICh2b2lkKXZpZXdEaWREaXNhcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBb
c3VwZXIgdmlld0RpZERpc2FwcGVhcjphbmltYXRlZF07Ci0KLSAgICBfc3RhdHVzQmFyQXNzZXJ0
aW9uID0gbmlsOwotCi0gICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVy
OnNlbGYgbmFtZTpQVUlDU3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZp
Y2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1l
OlBVSUNTdGF0dXNCYXJUaXRsZVRhcHBlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLX0KLQot
LSAodm9pZClfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbgotewotICAgIFtzZWxmLmRlbGVnYXRl
IHF1aWNrYm9hcmRJbnB1dENhbmNlbGxlZDpzZWxmXTsKLX0KLQotLSAodm9pZClyZWxvYWRDb250
ZXh0VmlldwotewotICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOwotICAgIFtzZWxm
IHJlbG9hZEhlYWRlckNvbnRlbnRWaWV3XTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfQkVHSU4KLQotLSAoUFVJQ0FjdGlvbkNvbnRyb2xsZXIgKilhY3Rpb25Db250cm9s
bGVyCi17Ci0gICAgaWYgKCFbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1l
bnVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAg
ICBQVUlDQWN0aW9uSXRlbSAqbGFuZ3VhZ2VTZWxlY3Rpb25BY3Rpb25JdGVtID0gW3NlbGYubGFu
Z3VhZ2VDb250cm9sbGVyIGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbUZvclZpZXdDb250cm9s
bGVyOnNlbGZdOwotICAgIGF1dG8gYWN0aW9uR3JvdXAgPSBhZG9wdE5TKFtbUFVJQ0FjdGlvbkdy
b3VwIGFsbG9jXSBpbml0V2l0aEFjdGlvbkl0ZW1zOkBbIGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9u
SXRlbSBdIGFjdGlvblN0eWxlOlBVSUNBY3Rpb25TdHlsZUF1dG9tYXRpY10pOwotICAgIHJldHVy
biBhZG9wdE5TKFtbUFVJQ0FjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aW9uR3Jv
dXA6YWN0aW9uR3JvdXAuZ2V0KCldKS5hdXRvcmVsZWFzZSgpOwotfQotCi1BTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKLQotI3ByYWdtYSBtYXJrIC0gUFVJQ1F1aWNrYm9hcmRM
YW5ndWFnZUNvbnRyb2xsZXJEZWxlZ2F0ZQotCi0tICh2b2lkKWxhbmd1YWdlQ29udHJvbGxlckRp
ZENoYW5nZVByaW1hcnlMYW5ndWFnZTooUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIg
KilsYW5ndWFnZUNvbnRyb2xsZXIKLXsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihxdWlja2JvYXJkOmxhbmd1YWdlRGlkQ2hhbmdlOildKQotICAg
ICAgICBbc2VsZi5kZWxlZ2F0ZSBxdWlja2JvYXJkOnNlbGYgbGFuZ3VhZ2VEaWRDaGFuZ2U6bGFu
Z3VhZ2VDb250cm9sbGVyLnByaW1hcnlMYW5ndWFnZV07Ci19Ci0KLSNwcmFnbWEgbWFyayAtIFF1
aWNrYm9hcmQgc3ViY2xhc3NpbmcKLQotLSAoQ0dGbG9hdCloZWFkZXJDb250ZW50Vmlld0hlaWdo
dAotewotICAgIFtzZWxmIHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwotCi0gICAgcmV0dXJu
IFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNpemVd
LmhlaWdodDsKLX0KLQotLSAoVUlWaWV3ICopaGVhZGVyQ29udGVudFZpZXcKLXsKLSAgICBbc2Vs
ZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKLQotICAgIENHRmxvYXQgdmlld1dpZHRoID0g
Q0dSZWN0R2V0V2lkdGgoc2VsZi5jb250ZW50Vmlldy5ib3VuZHMpOwotICAgIENHU2l6ZSBzaXpl
VGhhdEZpdHMgPSBbX2NvbnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJv
dW5kcy5zaXplXTsKLSAgICBbX2NvbnRleHRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoKHZpZXdX
aWR0aCAtIHNpemVUaGF0Rml0cy53aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZpdHMud2lkdGgsIHNp
emVUaGF0Rml0cy5oZWlnaHQpXTsKLSAgICBbX2NvbnRleHRWaWV3IGxheW91dFN1YnZpZXdzXTsK
LSAgICByZXR1cm4gX2NvbnRleHRWaWV3LmdldCgpOwotfQotCi1AZW5kCi0KLXZvaWQgY29uZmln
dXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICpj
b250cm9sbGVyLCBpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdh
dGUpCi17Ci0gICAgLy8gQW4gaW50ZXJuYWwgY2xpZW50IChlLmcuIFNhZmFyaSdzIG1vZGFsIHNo
ZWV0KSBtYXkgaGF2ZSBtb3ZlZCB0aGUgc3RhdHVzIGJhciBvZmZzY3JlZW4uCi0gICAgLy8gQmVm
b3JlIHVwZGF0aW5nIHRoZSBzdGF0dXMgYmFyLCBtYWtlIHN1cmUgdGhhdCB3ZSBicmluZyB0aGUg
c3RhdHVzIGJhciBiYWNrIHRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvbi4KLSAgICBQVUlDU3RhdHVz
QmFyICpzdGF0dXNCYXIgPSBbUFVJQ0FwcGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0u
X3B1aWNTdGF0dXNCYXI7Ci0gICAgc3RhdHVzQmFyLmZyYW1lID0gQ0dSZWN0IHsgQ0dQb2ludFpl
cm8sIHN0YXR1c0Jhci5mcmFtZS5zaXplIH07Ci0KLSAgICBQVUlDQXBwbGljYXRpb25TdGF0dXNC
YXJJdGVtICppdGVtID0gY29udHJvbGxlci5wdWljX2FwcGxpY2F0aW9uU3RhdHVzQmFySXRlbTsK
LSAgICBpdGVtLnRpdGxlID0gW2RlbGVnYXRlIGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xs
ZXI6Y29udHJvbGxlcl07Ci0gICAgaXRlbS50aXRsZUNvbG9yID0gW1VJQ29sb3Igc3lzdGVtQmx1
ZUNvbG9yXTsKLSAgICBpdGVtLm5hdlVJQmFja0J1dHRvbkRpc2FibGVkID0gTk87Ci0gICAgaXRl
bS5zaG93TmF2aWdhdGlvblVJID0gWUVTOwotICAgIGl0ZW0udGl0bGVJbnRlcmFjdGl2ZSA9IFlF
UzsKLSAgICBbaXRlbSBjb21taXRDaGFuZ2VzQW5pbWF0ZWQ6Tk9dOwotfQotCi0jZW5kaWYgLy8g
SEFWRShQRVBQRVJfVUlfQ09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmQwNGNjNWE2OTQwNGVhODUzZTVmZDVmNjBjMDI5ZmVlYmQ4MzNi
YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWYgSEFWRShQRVBQRVJfVUlfQ09SRSkKKworI2ltcG9ydCAiUGVwcGVyVUlD
b3JlU1BJLmgiCisKK0Bwcm90b2NvbCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRl
IDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+CisKKy0gKE5TU3RyaW5nICop
aW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXI7CistIChOU1N0cmluZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250
cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKworQGVu
ZAorCisjZW5kaWYgLy8gSEFWRShQRVBQRVJfVUlfQ09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmll
d0NvbnRyb2xsZXIuaAppbmRleCBjODEwMjA4NjY5YjQxNjRhNTFkOTZiNzQ5OGMxMTg4MjgyODli
ZTM1Li5lNjlmYjAxMTUzMjUzNGNlZTFmOTIxODE1NmQzMjQxZTc1ZjE1NWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2Vs
ZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZF
KFBFUFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAog
QGNsYXNzIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlcjsKIApAQCAtNDEsOSArNDEsMTEg
QEAKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciA6
IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgogCiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3
Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25N
b2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb2RlcjooTlNDb2RlciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgd2VhaykgaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRl
PiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KaW5kZXgg
MmQzMDE5ZmQ3NDNhYmU1MzA5NjcxMjYzNzllYzFlOGViYzgyYzVmZC4uNzhkNGI3MzAwZWEyM2Y0
Nzg2YzhiMWJlYmNhM2Q5Y2Y4ZGU5Mzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250
cm9sbGVyLm1tCkBAIC00Myw4ICs0MywxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQ
VUlDUXVpY2tib2FyZExpc3RTZWN0aW9uKSB7CiAgICAgUFVJQ1F1aWNrYm9hcmRMaXN0U2VjdGlv
bkNvbnRlbnRVbmF2YWlsYWJsZSwKIH07CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUg
cmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4K
LUBpbnRlcmZhY2UgV0tTZWxlY3RNZW51SXRlbUNlbGwgOiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNl
bGwKK3N0YXRpYyBjb25zdGV4cHIgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9
IDI2Oworc3RhdGljIGNvbnN0ZXhwciBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9
IDg7CisKKy8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVt
LzU3ODA3NDQ1PiBsYW5kcyBpbiBhIGJ1aWxkLgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVJdGVt
Q2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIFVJSW1hZ2VWaWV3ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTUyLDcgKzU1LDcg
QEAgQGltcGxlbWVudGF0aW9uIFdLU2VsZWN0TWVudUl0ZW1DZWxsIHsKICAgICBSZXRhaW5QdHI8
VUlJbWFnZVZpZXc+IF9pbWFnZVZpZXc7CiB9CiAKLS0gKGluc3RhbmNldHlwZSkgaW5pdFdpdGhT
dHlsZTooVUlUYWJsZVZpZXdDZWxsU3R5bGUpc3R5bGUgcmV1c2VJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKXJldXNlSWRlbnRpZmllcgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3R5bGU6KFVJVGFi
bGVWaWV3Q2VsbFN0eWxlKXN0eWxlIHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilyZXVzZUlk
ZW50aWZpZXIKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoU3R5bGU6c3R5bGUg
cmV1c2VJZGVudGlmaWVyOnJldXNlSWRlbnRpZmllcl0pKQogICAgICAgICByZXR1cm4gbmlsOwpA
QCAtNzEsMTEgKzc0LDIxIEBAIC0gKFVJSW1hZ2VWaWV3ICopaW1hZ2VWaWV3CiAgICAgcmV0dXJu
IF9pbWFnZVZpZXcuZ2V0KCk7CiB9CiAKKy0gKENHRmxvYXQpdG9wVG9MYWJlbEJhc2VsaW5lU3Bl
Y1ZhbHVlCit7CisgICAgcmV0dXJuIGl0ZW1DZWxsVG9wVG9MYWJlbEJhc2VsaW5lOworfQorCist
IChDR0Zsb2F0KWJhc2VsaW5lVG9Cb3R0b21TcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRlbUNl
bGxCYXNlbGluZVRvQm90dG9tOworfQorCiBAZW5kCiAKICNpZiBIQVZFKFFVSUNLQk9BUkRfQ09M
TEVDVElPTl9WSUVXUykKIAotQGludGVyZmFjZSBXS1NlbGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0
ZW1DZWxsIDogV0tRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKK0BpbnRlcmZh
Y2UgV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJkTGlz
dENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
VUlJbWFnZVZpZXcgKmltYWdlVmlldzsKIEBlbmQKIApAQCAtMTAyLDYgKzExNSwxNiBAQCAtIChV
SUltYWdlVmlldyAqKWltYWdlVmlldwogICAgIHJldHVybiBfaW1hZ2VWaWV3LmdldCgpOwogfQog
CistIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZQoreworICAgIHJldHVybiBp
dGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKK30KKworLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90
dG9tU3BlY1ZhbHVlCit7CisgICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKK30K
KwogQGVuZAogCiAjZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCkBA
IC0xMTUsNyArMTM4LDcgQEAgQGR5bmFtaWMgZGVsZWdhdGU7CiAKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERlbGVnYXRlOihpZCA8V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyRGVsZWdh
dGU+KWRlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVn
YXRlXTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0
aW9uTW9kZTpQVUlDRGljdGF0aW9uTW9kZVRleHRdOwogfQogCiAtICh2b2lkKXZpZXdEaWRMb2Fk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5w
dXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oCmluZGV4IGUxMjkyZmJkMzNhNTdjZjY2
N2E0N2VhNGUxMzI1MTQwMTljZWQ1NzIuLjhlYjJjMzY0MmQ4OTFjN2Q1YTAxNGMyZjZiMjJmYTU3
NTA2N2Y2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oCkBAIC0yNyw3ICsy
Nyw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9h
cmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyRGVsZWdhdGUuaCIKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJ
bnB1dE1vZGUpIHsKICAgICBXS051bWJlclBhZElucHV0TW9kZU5vbmUsCkBAIC00MSwxNyArNDEs
MjEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsK
IEBwcm90b2NvbCBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxXS1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPgogCiAtIChXS051bWJlclBhZElucHV0TW9kZSlu
dW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlwZUZv
ckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyOwotLSAoTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25z
Rm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXI7Ci0tICh2b2lkKWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRT
dWdnZXN0aW9uICopc3VnZ2VzdGlvbjsKLS0gKEJPT0wpYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyOworLSAoUFVJQ1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZp
ZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7
CistIChVSVZpZXcgKilpbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClhbGxvd3NEaWN0YXRp
b25JbnB1dEZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyOworLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RW
aWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
OworLSAoQk9PTClzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJv
bGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CiAKIEBlbmQK
IAotQGludGVyZmFjZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2Fy
ZExpc3RWaWV3Q29udHJvbGxlcgorQGludGVyZmFjZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciA6IFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyCiAKIC0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZT4pZGVsZWdhdGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKHZvaWQpcmVs
b2FkVGV4dFN1Z2dlc3Rpb25zOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlk
IDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlv
bk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyIE5TX1VOQVZBSUxB
QkxFOworLSAodm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2Vz
dGlvbiAqPiAqKXN1Z2dlc3Rpb25zOworLSAodm9pZClyZWxvYWRDb250ZXh0VmlldzsKIAogQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1t
CmluZGV4IDFiYjEyM2I5YjFiYzZkMTA3M2UwMmZlNjhlOGNiMTM5YTkxMzdhZmQuLjM0OWUxNjQ2
N2UwODFjZGNhNTI1OGJmN2YyYTY0OTdhZTdkZWM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIubW0KQEAgLTMxLDExICszMSw5IEBACiAjaW1wb3J0ICJXS051bWJlclBhZFZp
ZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLXN0YXRpYyBjb25z
dCBDR0Zsb2F0IHRleHRTdWdnZXN0aW9uQnV0dG9uSGVpZ2h0ID0gNDQ7Ci1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbiA9IDk7Ci1zdGF0aWMg
TlNTdHJpbmcgKnRleHRTdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9IEAiV2ViS2l0UXVp
Y2tib2FyZFRleHRTdWdnZXN0aW9uQ2VsbCI7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciB7CisgICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsK
KyAgICBSZXRhaW5QdHI8VUlWaWV3PiBfY29udGV4dFZpZXc7CiAgICAgUmV0YWluUHRyPFdLTnVt
YmVyUGFkVmlld0NvbnRyb2xsZXI+IF9udW1iZXJQYWRWaWV3Q29udHJvbGxlcjsKIH0KIApAQCAt
NDMsMzIgKzQxLDQyIEBAIEBkeW5hbWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEZWxlZ2F0ZTooaWQgPFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+
KWRlbGVnYXRlCiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRl
bGVnYXRlXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVn
YXRlIGRpY3RhdGlvbk1vZGU6UFVJQ0RpY3RhdGlvbk1vZGVUZXh0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKLSAgICBzZWxmLnRleHRDb250ZW50VHlwZSA9IFtzZWxmLmRlbGVnYXRlIHRleHRD
b250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKKyAgICBfY29udGV4dFZpZXdO
ZWVkc1VwZGF0ZSA9IFlFUzsKKyAgICBzZWxmLnRleHRJbnB1dENvbnRleHQgPSBbc2VsZi5kZWxl
Z2F0ZSB0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogICAgIHJl
dHVybiBzZWxmOwogfQogCi0tICh2b2lkKXZpZXdEaWRMb2FkCistICh2b2lkKXJlbG9hZENvbnRl
eHRWaWV3CiB7Ci0gICAgW3N1cGVyIHZpZXdEaWRMb2FkXTsKLQotICAgIHNlbGYuaGVhZGVyVmll
dy5oaWRkZW4gPSBZRVM7CisgICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZRVM7CisgICAg
W3NlbGYgcmVsb2FkSGVhZGVyQ29udGVudFZpZXddOwogfQogCi0tICh2b2lkKXdpbGxQcmVzZW50
QXJvdWV0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkQXJvdWV0Vmlld0NvbnRyb2xsZXIg
KilxdWlja2JvYXJkCistICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKIHsKLSAgICBO
U1N0cmluZyAqaW5pdGlhbFRleHQgPSBbc2VsZi5kZWxlZ2F0ZSBpbml0aWFsVmFsdWVGb3JWaWV3
Q29udHJvbGxlcjpzZWxmXTsKLSAgICBpZiAoaW5pdGlhbFRleHQubGVuZ3RoKQotICAgICAgICBb
cXVpY2tib2FyZCBzZXRJbnB1dFRleHQ6aW5pdGlhbFRleHQgc2VsZWN0aW9uUmFuZ2U6TlNNYWtl
UmFuZ2UoaW5pdGlhbFRleHQubGVuZ3RoLCAwKV07CisgICAgaWYgKCFfY29udGV4dFZpZXdOZWVk
c1VwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3
ID0gX2NvbnRleHRWaWV3OworICAgIGlmIChbc2VsZi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5w
dXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSkKKyAgICAgICAgX2NvbnRl
eHRWaWV3ID0gW3NlbGYuZGVsZWdhdGUgaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVy
OnNlbGZdOworICAgIGVsc2UKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gbmlsOwogCi0gICAgcXVp
Y2tib2FyZC5taW5UZXh0TGVuZ3RoRm9yRW5hYmxpbmdBY2NlcHQgPSAwOworICAgIF9jb250ZXh0
Vmlld05lZWRzVXBkYXRlID0gTk87Cit9CisKKy0gKEJPT0wpcmVxdWlyZXNOdW1lcmljSW5wdXQK
K3sKKyAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3
Q29udHJvbGxlcjpzZWxmXSAhPSBXS051bWJlclBhZElucHV0TW9kZU5vbmU7CiB9CiAKIC0gKE5T
QXJyYXkgKilhZGRpdGlvbmFsVHJheUJ1dHRvbnMKIHsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUg
bnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSA9PSBXS051bWJlclBh
ZElucHV0TW9kZU5vbmUpCisgICAgaWYgKCFzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0KQogICAg
ICAgICByZXR1cm4gQFsgXTsKIAogI2lmIEhBVkUoUFVJQ19CVVRUT05fVFlQRV9QSUxMKQpAQCAt
OTksOSArMTA3LDE0IEBAIC0gKHZvaWQpcHJlc2VudE51bWJlclBhZFZpZXdDb250cm9sbGVyCiAg
ICAgW3NlbGYgcHJlc2VudFZpZXdDb250cm9sbGVyOl9udW1iZXJQYWRWaWV3Q29udHJvbGxlci5n
ZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxdOwogfQogCi0tICh2b2lkKXJlbG9hZFRl
eHRTdWdnZXN0aW9ucworLSAodm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlU
ZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dlc3Rpb25zCiB7Ci0gICAgW3NlbGYgcmVsb2FkTGlzdEl0
ZW1zXTsKKyAgICBhdXRvIG1lc3NhZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5TQXR0
cmlidXRlZFN0cmluZyAqPiBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzdWdnZXN0aW9ucy5jb3Vu
dF0pOworICAgIGZvciAoVUlUZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBzdWdnZXN0aW9u
cykgeworICAgICAgICBhdXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpzdWdnZXN0aW9uLmRpc3BsYXlUZXh0XSk7
CisgICAgICAgIFttZXNzYWdlcyBhZGRPYmplY3Q6YXR0cmlidXRlZFN0cmluZy5nZXQoKV07Cisg
ICAgfQorICAgIHNlbGYubWVzc2FnZXMgPSBtZXNzYWdlcy5nZXQoKTsKIH0KIAogLSAodm9pZCll
bnRlclRleHQ6KE5TU3RyaW5nICopdGV4dApAQCAtMTExLDEwOSArMTI0LDQ3IEBAIC0gKHZvaWQp
ZW50ZXJUZXh0OihOU1N0cmluZyAqKXRleHQKIAogI3ByYWdtYSBtYXJrIC0gUXVpY2tib2FyZCBz
dWJjbGFzc2luZwogCi0tIChCT09MKXN1cHBvcnRzRGljdGF0aW9uSW5wdXQKKy0gKENHRmxvYXQp
aGVhZGVyQ29udGVudFZpZXdIZWlnaHQKIHsKLSAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxs
b3dzRGljdGF0aW9uSW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci19Ci0KLS0gKHZv
aWQpZGlkU2VsZWN0TGlzdEl0ZW1BdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgK
LXsKLSAgICBbc2VsZiBfZGlkU2VsZWN0TGlzdEl0ZW06aW5kZXhQYXRoLnJvd107Ci19Ci0KLS8v
IEZJWE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81
NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0ZW06KE5T
SW50ZWdlcilpdGVtTnVtYmVyCi17Ci0gICAgW3NlbGYgX2RpZFNlbGVjdExpc3RJdGVtOml0ZW1O
dW1iZXJdOwotfQotCi0tICh2b2lkKV9kaWRTZWxlY3RMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1O
dW1iZXIKLXsKLSAgICBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9u
cyA9IFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpz
ZWxmXTsKLSAgICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUlu
dGVnZXI+KGl0ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIFtzZWxmIHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRd
OwogCi0gICAgW3NlbGYuZGVsZWdhdGUgbGlzdFZpZXdDb250cm9sbGVyOnNlbGYgZGlkU2VsZWN0
VGV4dFN1Z2dlc3Rpb246W3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJd
XTsKKyAgICByZXR1cm4gW19jb250ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmll
dy5ib3VuZHMuc2l6ZV0uaGVpZ2h0OwogfQogCi0tIChOU0ludGVnZXIpbnVtYmVyT2ZMaXN0SXRl
bXMKKy0gKFVJVmlldyAqKWhlYWRlckNvbnRlbnRWaWV3CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRl
bGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXS5jb3VudDsK
LX0KKyAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKIAotLSAoQ0dGbG9hdClo
ZWlnaHRGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIgd2lkdGg6KENHRmxvYXQpd2lk
dGgKLXsKLSAgICByZXR1cm4gdGV4dFN1Z2dlc3Rpb25CdXR0b25IZWlnaHQ7CisgICAgQ0dGbG9h
dCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0aChzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcyk7Cisg
ICAgQ0dTaXplIHNpemVUaGF0Rml0cyA9IFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYu
Y29udGVudFZpZXcuYm91bmRzLnNpemVdOworICAgIFtfY29udGV4dFZpZXcgc2V0RnJhbWU6Q0dS
ZWN0TWFrZSgodmlld1dpZHRoIC0gc2l6ZVRoYXRGaXRzLndpZHRoKSAvIDIsIDAsIHNpemVUaGF0
Rml0cy53aWR0aCwgc2l6ZVRoYXRGaXRzLmhlaWdodCldOworICAgIFtfY29udGV4dFZpZXcgbGF5
b3V0U3Vidmlld3NdOworICAgIHJldHVybiBfY29udGV4dFZpZXcuZ2V0KCk7CiB9CiAKLS8vIEZJ
WE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81Nzgw
NzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLS0gKFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsICop
Y2VsbEZvckxpc3RJdGVtOihOU0ludGVnZXIpaXRlbU51bWJlcgorLSAoQk9PTClzaG91bGRTaG93
TGFuZ3VhZ2VCdXR0b24KIHsKLSAgICBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRT
dWdnZXN0aW9ucyA9IFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29u
dHJvbGxlcjpzZWxmXTsKLSAgICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19j
YXN0PE5TVUludGVnZXI+KGl0ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIFVJVGV4dFN1Z2dlc3Rpb24g
KnRleHRTdWdnZXN0aW9uID0gW3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1i
ZXJdOwotICAgIGF1dG8gcmV1c2FibGVDZWxsID0gcmV0YWluUHRyKFtzZWxmLmxpc3RWaWV3IGRl
cXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlk
ZW50aWZpZXJdKTsKLSAgICBpZiAoIXJldXNhYmxlQ2VsbCkgewotICAgICAgICByZXVzYWJsZUNl
bGwgPSBhZG9wdE5TKFtbV0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxsIGFsbG9jXSBpbml0V2l0aFN0
eWxlOlVJVGFibGVWaWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6dGV4dFN1Z2dl
c3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXSk7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxh
YmVsXS5udW1iZXJPZkxpbmVzID0gMTsKLSAgICAgICAgW3JldXNhYmxlQ2VsbCBpdGVtTGFiZWxd
LmxpbmVCcmVha01vZGUgPSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7Ci0gICAgICAgIFty
ZXVzYWJsZUNlbGwgaXRlbUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRydW5jYXRp
b24gPSBZRVM7Ci0gICAgfQotCi0gICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0
aChzZWxmLmxpc3RWaWV3LmJvdW5kcyk7Ci0gICAgW3JldXNhYmxlQ2VsbCBjb25maWd1cmVGb3JU
ZXh0OnRleHRTdWdnZXN0aW9uLmRpc3BsYXlUZXh0IHdpZHRoOnZpZXdXaWR0aF07Ci0KLSAgICAv
LyBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2Vz
IHRoZSB0ZXh0IGxhYmVsIHRvIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBB
ZGp1c3QgZm9yIHRoaXMgYnkgc2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBm
aXQgdGhlIGJvdW5kcyBvZiB0aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0u
ZnJhbWUgPSBVSVJlY3RJbnNldChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAs
IHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxh
YmVsSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZv
ckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKIH0KIAotLSAoTlNTdHJpbmcgKilsaXN0SXRlbUNl
bGxSZXVzZUlkZW50aWZpZXIKKy0gKEJPT0wpc3VwcG9ydHNEaWN0YXRpb25JbnB1dAogewotICAg
IHJldHVybiB0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7CisgICAgcmV0dXJuIFtz
ZWxmLmRlbGVnYXRlIGFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNl
bGZdOwogfQogCi0jaWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLS0gKENs
YXNzKWxpc3RJdGVtQ2VsbENsYXNzCistIChCT09MKXNob3VsZFNob3dUcmF5VmlldwogewotICAg
IHJldHVybiBbV0tRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwgY2xhc3NdOwor
ICAgIHJldHVybiBzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0tIChQVUlDUXVpY2ti
b2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsICopaXRlbUNlbGxGb3JMaXN0SXRlbTooTlNJ
bnRlZ2VyKWl0ZW1OdW1iZXIgZm9ySW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAor
LSAoQk9PTClzaG91bGRTaG93VGV4dEZpZWxkCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0
aW9uICo+ICp0ZXh0U3VnZ2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNG
b3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3Vu
dCA8PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRl
eHRTdWdnZXN0aW9uICp0ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJ
bmRleDppdGVtTnVtYmVyXTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2Vs
Zi5jb2xsZWN0aW9uVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aFJldXNlSWRlbnRpZmllcjp0
ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgZm9ySW5kZXhQYXRoOmluZGV4UGF0aF0p
OwotCi0gICAgW3JldXNhYmxlQ2VsbCBib2R5TGFiZWxdLm51bWJlck9mTGluZXMgPSAxOwotICAg
IFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRy
dW5jYXRpbmdUYWlsOwotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5hbGxvd3NEZWZhdWx0
VGlnaHRlbmluZ0ZvclRydW5jYXRpb24gPSBZRVM7Ci0gICAgW3JldXNhYmxlQ2VsbCBzZXRUZXh0
OnRleHRTdWdnZXN0aW9uLmRpc3BsYXlUZXh0XTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2
aW9yIG9mIC1jb25maWd1cmVGb3JUZXh0OndpZHRoOiBjYXVzZXMgdGhlIHRleHQgbGFiZWwgdG8g
cnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBjZWxsLgotICAgIC8vIEFkanVzdCBmb3IgdGhpcyBieSBz
aHJpbmtpbmcgdGhlIGxhYmVsIHdpZHRoIHRvIGFjdHVhbGx5IGZpdCB0aGUgYm91bmRzIG9mIHRo
ZSBjZWxsLgotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5mcmFtZSA9IFVJUmVjdEluc2V0
KFtyZXVzYWJsZUNlbGwgY29udGVudFZpZXddLmJvdW5kcywgMCwgdGV4dFN1Z2dlc3Rpb25MYWJl
bEhvcml6b250YWxNYXJnaW4sIDAsIHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2lu
KTsKLSAgICByZXR1cm4gcmV1c2FibGVDZWxsLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuICFz
ZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJE
X0NPTExFQ1RJT05fVklFV1MpCi0KIC0gKEJPT0wpc3VwcG9ydHNBcm91ZXRJbnB1dAogewotICAg
IHJldHVybiBbc2VsZi5kZWxlZ2F0ZSBudW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9s
bGVyOnNlbGZdID09IFdLTnVtYmVyUGFkSW5wdXRNb2RlTm9uZTsKKyAgICByZXR1cm4gIXNlbGYu
cmVxdWlyZXNOdW1lcmljSW5wdXQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVy
LmgKaW5kZXggNjU1OGNkZGU4MjJjYmQ5NWZiYjA3MjkzYTZkYmYzZjg2Y2NjNWZhMy4uOWE3ZWEx
MDBkZWU0MTZhOWJlNjc4YWJlNzI0NTAyOTU0MGE1ZGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250
cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAK
LSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLVGltZVBp
Y2tlclZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZTkz
MGI2YjljNzcyOWIxMDVkOWQ2MGM2Y2M4MjQyZWEyZWVmMWIyLi42YjE0NWZmOWM2NWY2YmJlNjhm
N2M1Mjc0ZjNhNzExMTQ5ZmYzODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMzgsNyArMjAzOCw3IEBACiAJCUY0Q0IwOUU1MjI1
RDVBMDkwMDg5MTQ4NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0IwOUU0MjI1RDVBMDMwMDg5MTQ4
NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCAqLzsgfTsKIAkJRjRDRjFFOUQyNUU0MERD
QzAwMEY5RDczIC8qIEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRjFFOUIyNUU0MERD
QzAwMEY5RDczIC8qIEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oICovOyB9
OwogCQlGNEQ1RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5o
ICovOyB9OwotCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyLmggKi87IH07CisJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oICovOyB9OwogCQlGNERCNTRFNjIzMTlFNzMzMDA5RTMx
NTUgLyogV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREQjU0RTQyMzE5RTczMzAwOUUz
MTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJ
RjRFQzk0RTMyMzU2Q0M1NzAwMEJCNjE0IC8qIEFwcGxpY2F0aW9uU2VydmljZXNTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDA0RTI4MjFGN0M3
M0QwMDc2NzQxRCAvKiBBcHBsaWNhdGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUY0RkUwQTNC
MjQ2MzJCNjAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29jb2FD
b2xvci5oICovOyB9OwpAQCAtNjAwNSw4ICs2MDA1LDcgQEAKIAkJRjRDRjFFOUMyNUU0MERDQzAw
MEY5RDczIC8qIEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lz
dGVuY3lFbmZvcmNlci5tbTsgcGF0aCA9IGlvcy9HZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5
RW5mb3JjZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTE5MjA2MDg3
QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOyBw
YXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTFBMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zv
cm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1RjUx
QzIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUY1MUIyMDYwODdB
MTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTQyMzE5RTczMzAwOUUz
MTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2du
aXplci5oOyBwYXRoID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTUyMzE5RTczMzAwOUUzMTU1
IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVS
ZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5QUQzMjA2NUE1Qzkw
MDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xs
ZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkxMCw3ICs3OTA5LDYgQEAKIAkJMzc1
NEQ1NDExQjNBMjk5ODAwM0E0QzdGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkzMTU1RUUwQzI2NzNGNEVGMDA4NUU1OUEgLyogVmlzaW9u
S2l0U1BJLmggKi8sCiAJCQkJRTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxp
dHlTdXBwb3J0U1BJLmggKi8sCiAJCQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0
dGVzdFNQSS5oICovLAogCQkJCTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNh
dGlvblNlcnZpY2VzQ29yZVNQSS5oICovLApAQCAtNzkyNCw2ICs3OTIyLDcgQEAKIAkJCQk1Q0I2
QUU0MzI2MDk3OTlDMDBCNkVENUEgLyogUmVhc29uU1BJLmggKi8sCiAJCQkJMEU5N0Q3NEMyMDBF
OEZGMzAwQkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oICovLAogCQkJCTQ0OEFDMjREMjY3MTM1
QTYwMEIyODkyMSAvKiBTeW5hcHNlU1BJLmggKi8sCisJCQkJMzE1NUVFMEMyNjczRjRFRjAwODVF
NTlBIC8qIFZpc2lvbktpdFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTM4Miw4ICsxMTM4MSw3IEBACiAJCQkJMkVBN0Iz
RDQyMDI2Q0YyMzAwOUNFNUFDIC8qIFdLTnVtYmVyUGFkVmlldy5tbSAqLywKIAkJCQkyRUE3QjND
RjIwMjZDRUY4MDA5Q0U1QUMgLyogV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5oICovLAogCQkJ
CTJFQTdCM0QwMjAyNkNFRjgwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1t
ICovLAotCQkJCUY0RDVGNTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmll
d0NvbnRyb2xsZXIuaCAqLywKLQkJCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlj
a2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICovLAorCQkJCUY0RDVGNTFCMjA2MDg3QTEwMDM4
QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggKi8sCiAJCQkJRjRG
NTlBRDQyMDY1QTVDQTAwNkNBQTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5o
ICovLAogCQkJCUY0RjU5QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmll
d0NvbnRyb2xsZXIubW0gKi8sCiAJCQkJRjRENUY1MTkyMDYwODdBMDAwMzhCQkE4IC8qIFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmggKi8sCkBAIC0xMjAzOCw3ICsxMjAzNiw2IEBACiAJ
CQkJOTNCMjYxNEUyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0IyNjE0RjIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZEQjIyRkI5RDQ4MDAy
Njk4NjcgLyogTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTU1
RUUwRDI2NzNGNEYwMDA4NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUE3RjJGMzEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEQ0Q3RjcxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBp
biBIZWFkZXJzICovLApAQCAtMTIzNzgsNiArMTIzNzUsNyBAQAogCQkJCTI2ODQwNTUzMThCODZF
RDYwMDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyNjg0MDU0NDE4Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENUE3MjkxRUJGMDhENTAwOUJBNTk3IC8q
IFZpc2libGVXZWJQYWdlQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE1NUVFMEQyNjcz
RjRGMDAwODVFNTlBIC8qIFZpc2lvbktpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRjI5
RTQxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNjAyMjREMThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjRDRUYwMThCQzQ4MTgwMEJDMkQzNCAvKiBWaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyMiw3ICsxMjkyMCw3
IEBACiAJCQkJNTEyRjU4RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0
aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4QUNBRUExMkFFRTZCQjAwQjA0Qjgz
IC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0RDVGNTFG
MjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQwMUJDRDE5MDVE
NTQ5MDBDOUM0NUYgLyogV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOUUzMjlCMTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5RTMyOUYxODIyRkVERDAwRjVEMDRDIC8qIFdLUmVt
b3RlT2JqZWN0Q29kZXIuaCBpbiBIZWFkZXJzICovLAo=
</data>
<flag name="commit-queue"
          id="453135"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431375</attachid>
            <date>2021-06-14 15:59:10 -0700</date>
            <delta_ts>2021-06-14 16:16:29 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226988-20210614155909.patch</filename>
            <type>text/plain</type>
            <size>54791</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYWMxNDUxNDU3MGM3MzFm
OWUzZGZkMDg5MzViODE3ODUzMGQ0OTguLmIyMTNhOWViYTQ0YjFjNjQ1MDdhNzRkYmQ3NjFlOGE5
ZDdmOTljZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgbG9naWMgb24gd2F0Y2hPUyBz
dWNoIHRoYXQgd2UncmUgYWJsZSB0byBwcmVzZW50IHRoZSBuZXcgKCJtb2Rlcm4iKSBVSSBmb3Ig
c2NyaWJibGUgdGV4dAorICAgICAgICBpbnB1dCBvbiB3YXRjaE9TIDgsIHJhdGhlciB0aGFuIGxl
Z2FjeSAoaW4tcHJvY2Vzcykgc2NyaWJibGUgVUkuIE92ZXJhbGwsIHRoaXMgcGF0Y2ggcmVtb3Zl
cworICAgICAgICBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWx0b2dldGhlci4gVGhp
cyBoYWQgdHdvIHN1YmNsYXNzZXM6IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciAodXNl
ZCBmb3IKKyAgICAgICAgZm9jdXNlZCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50
cykgYW5kIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZvciB0ZXh0IGlucHV0
IHR5cGVzKS4KKyAgICAgICAgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyIG5vdyBpbmhl
cml0cyBkaXJlY3RseSBmcm9tIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQK
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRzIGZyb20g
UFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXI7IHRoaXMgaW5oZXJpdGFuY2UgZnJv
bQorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBpbnN0ZWFkIG9m
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIGFsbG93cyB0aGUKKyAgICAgICAgV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdG8gc2hvdyB0ZXh0IHN1Z2dlc3Rpb25zIHVzaW5n
IGAtc2V0TWVzc2FnZXM6YCBvbgorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29u
dHJvbGxlciwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGN1c3RvbSBXZWJLaXQgY29kZSB0byBpbnNl
cnQgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgbW92ZSB0
aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG91dCBvZiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIsIGFuZCBpbnRvCisgICAgICAgIGVpdGhlciBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgb3IgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXI6CisKKyAg
ICAgICAgMS4gU3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCB1cGRhdGluZyBjb250ZXh0IHZpZXdz
IChpLmUuIHRoZSBkb21haW4gbmFtZSBoZWFkZXIgdmlldyBpbiBRdWlja2JvYXJkKSA9PgorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAyLiBMb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgbGFuZ3VhZ2Ugc2Vs
ZWN0aW9uIFVJID0+IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDMu
IFN1cHBvcnQgZm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbGxlY3Rpb24gdmlldyBjZWxscyBpbiBR
dWlja2JvYXJkID0+IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMgdG8gY3JlYXRlIGEgUFVJ
Q1RleHRJbnB1dENvbnRleHQgZnJvbSB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3Jt
YXRpb24gb3V0IGludG8gYSBzZXBhcmF0ZQorICAgICAgICBoZWxwZXIgbWV0aG9kLCBgLWNyZWF0
ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0YCwgYW5kIHVzZSBpdCB3aGVuIGJvdGggZGlyZWN0
bHkgbGF1bmNoaW5nIGludG8KKyAgICAgICAgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFuZCBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGZvY3VzZWRGb3JtQ29udHJvbGxlckRpZFVwZGF0ZVN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFsbG93c0xhbmd1YWdlU2VsZWN0aW9uRm9yTGlzdFZpZXdDb250cm9s
bGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRJbnB1dENvbnRleHRGb3JMaXN0
Vmlld0NvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dENvbnRlbnRU
eXBlRm9yVGVzdGluZ10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHZpZXdDb250cm9sbGVy
OmlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJl
bW92ZSB0aGlzIGRlbGVnYXRlIG1ldGhvZCwgd2hpY2ggd2FzIChlZmZlY3RpdmVseSkgdW51c2Vk
IHNpbmNlIHdlIGp1c3QgYXNrIGZvcgorICAgICAgICBgLWlucHV0Q29udGV4dFZpZXdGb3JWaWV3
Q29udHJvbGxlcjpgIGZyb20gdGhlIGlucHV0IGRlbGVnYXRlIGFueXdheXMuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYC1hbGxvd3NM
YW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjpgLgorCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdGV4dENvbnRlbnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgIFJlcGxhY2UgdGhpcyB3aXRoIGAtdGV4dElucHV0Q29udGV4dEZvckxp
c3RWaWV3Q29udHJvbGxlcjpgLCB3aGljaCByZXR1cm5zIGEgd2hvbGUgUFVJQ1RleHRJbnB1dENv
bnRleHQgaW5zdGVhZAorICAgICAgICBvZiBqdXN0IGEgdGV4dCBjb250ZW50IHR5cGUuCisKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbGlzdFZpZXdDb250cm9s
bGVyOmRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92
ZSBzZXZlcmFsIGRlbGVnYXRlIG1ldGhvZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlciB2aWV3V2lsbEFw
cGVhcjpdKToKKworICAgICAgICBSZW1vdmUgc29tZSAoZGVmdW5jdCkgbG9naWMgZm9yIG92ZXJy
aWRpbmcgdGhlIHN0YXR1cyBiYXIgd2hlbiBzaG93aW5nIFF1aWNrYm9hcmQgaW5wdXQgdmlldyBj
b250cm9sbGVycy4gVGhpcworICAgICAgICBzdGF0dXMgYmFyIG1lY2hhbmlzbSAod2hpY2ggd2Fz
IHByZXZpb3VzbHkgdXNlZCB0byBzaG93IGxhYmVsIHRleHQgZm9yIGZvcm0gY29udHJvbHMpIGhh
c24ndCB3b3JrZWQgc2luY2UKKyAgICAgICAgd2F0Y2hPUyA2LCBhbmQgd2UgbmVlZCB0byBpbXBs
ZW1lbnQgdGhpcyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgdXNlIFBVSUNTdGF0dXNCYXJHbG9iYWxD
b250ZXh0Vmlld0Fzc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tR
dWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxl
Y3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0
TWVudUl0ZW1DZWxsIHRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtX
S1NlbGVjdE1lbnVJdGVtQ2VsbCBiYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlXSk6CisgICAgICAg
ICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNlbGwgdG9wVG9MYWJlbEJhc2VsaW5l
U3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNl
bGwgYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKworICAgICAgICBTZWUgYWJv
dmUgY29tbWVudCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGluaXRXaXRoRGVsZWdhdGU6XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9hZENvbnRleHRWaWV3XSk6
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZUNvbnRleHRW
aWV3SWZOZWVkZWRdKToKKworICAgICAgICBNb3ZlIGxvZ2ljIGZvciBzaG93aW5nIGFuZCB1cGRh
dGluZyB0aGUgY29udGV4dCB2aWV3IG91dCBvZiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIsIGFuZCBpbnRvCisgICAgICAgIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLiBTZWUg
Y29tbWVudHMgYWJvdmUuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgcmVxdWlyZXNOdW1lcmljSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgYWRkaXRpb25hbFRyYXlCdXR0b25zXSk6CisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZVRleHRTdWdnZXN0aW9uczpdKToKKyAgICAgICAg
KC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVudFZpZXdIZWlnaHRd
KToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVu
dFZpZXddKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxk
U2hvd0xhbmd1YWdlQnV0dG9uXSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyIHN1cHBvcnRzRGljdGF0aW9uSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxkU2hvd1RyYXlWaWV3XSk6CisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHNob3VsZFNob3dUZXh0RmllbGRdKToKKworICAgICAg
ICBPdmVycmlkZSB0aGlzIGFuZCByZXR1cm4gWUVTIGZvciB0ZXh0IGlucHV0IHR5cGVzIHRoYXQg
ZG9uJ3QgcmVxdWlyZSBhbiBhZGRpdGlvbmFsIG51bWVyaWMgaW5wdXQgdHJheSBidXR0b24uCisg
ICAgICAgIFRoaXMgYWxsb3dzIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIHRv
IHNob3cgYSBuYXRpdmUgdGV4dCBmaWVsZCBjb250YWluaW5nIHRoZSBpbnB1dCB0ZXh0IGluc2lk
ZQorICAgICAgICBxdWlja2JvYXJkLCB3aGljaCAod2hlbiB0YXBwZWQpIHByZXNlbnRzIG1vZGVy
biB0ZXh0IGlucHV0IFVJLgorCisgICAgICAgIFNpbmNlIHNob3dpbmcgdGhlIHRleHQgZmllbGQg
aXMgYXBwYXJlbnRseSBtdXR1YWxseSBleGNsdXNpdmUgdG8gc2hvd2luZyBhIHRyYXkgdmlldywg
d2UgYWRkaXRpb25hbGx5IG92ZXJyaWRlCisgICAgICAgIGAtc2hvdWxkU2hvd1RyYXlWaWV3YCBh
bmQgcmV0dXJuIE5PIGZvciBub24tbnVtZXJpYyB0ZXh0IGlucHV0cy4KKworICAgICAgICAoLVtX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzdXBwb3J0c0Fyb3VldElucHV0XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHZpZXdEaWRMb2FkXSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHdpbGxQcmVzZW50
QXJvdWV0Vmlld0NvbnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgVGhlcmUncyBubyBu
ZWVkIHRvIG92ZXJyaWRlIHRoaXMgZGVsZWdhdGUgbWV0aG9kIGFueW1vcmUsIHNpbmNlIHRoZSBQ
VUlDVGV4dElucHV0Q29udGV4dCdzIGAtaW5pdGlhbFRleHRgIGlzCisgICAgICAgIHN1ZmZpY2ll
bnQgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcmliYmxlIHRleHQgaW5wdXQgVUkgaXMgcHJlcG9wdWxh
dGVkIHdpdGggdGhlIGZvY3VzZWQgdGV4dCBmaWVsZCdzIGluaXRpYWwgdGV4dAorICAgICAgICBj
b250ZW50LgorCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9h
ZFRleHRTdWdnZXN0aW9uc10pOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIHRvIGAt
dXBkYXRlVGV4dFN1Z2dlc3Rpb25zOmAsIGFuZCBtYWtlIGl0IHRha2UgYSBsaXN0IG9mIFVJVGV4
dFN1Z2dlc3Rpb25zLiBUaGlzIG1ha2VzIHRoZSBjb2RlIGEKKyAgICAgICAgYml0IGVhc2llciB0
byBmb2xsb3cgYW5kIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGAtdGV4dFN1Z2dlc3Rpb25zRm9y
TGlzdFZpZXdDb250cm9sbGVyOmAgZGVsZWdhdGUgbWV0aG9kLgorCisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNlbGVjdExpc3RJdGVtQXRJbmRleFBhdGg6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNl
bGVjdExpc3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciBfZGlkU2VsZWN0TGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIG51bWJlck9mTGlzdEl0ZW1zXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGhlaWdodEZvckxpc3RJ
dGVtOndpZHRoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBjZWxsRm9yTGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIGxpc3RJdGVtQ2VsbFJldXNlSWRlbnRpZmllcl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBsaXN0SXRlbUNl
bGxDbGFzc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBpdGVtQ2VsbEZvckxpc3RJdGVtOmZvckluZGV4UGF0aDpdKTogRGVsZXRlZC4KKworICAg
ICAgICBSZW1vdmUgYWxsIHRoaXMgY29kZSBmb3Igc2hvd2luZyB0ZXh0IHN1Z2dlc3Rpb25zIGlu
IFF1aWNrYm9hcmQgVUkuIFNpbmNlIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGlzIG5v
dyBhCisgICAgICAgIHN1YmNsYXNzIG9mIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9s
bGVyLCB3ZSBjYW4gbm93IHNpbXBseSB1c2UgdGhlIGAtbWVzc2FnZXNgIHByb3BlcnR5IG9mIHRv
IHBvcHVsYXRlCisgICAgICAgIHF1aWNrYm9hcmQgd2l0aCB0ZXh0IHN1Z2dlc3Rpb25zLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA2
LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFt3
YXRjaE9TXSBRdWlja2JvYXJkIFVJIGZvciBmb2N1c2VkIHNlbGVjdCBlbGVtZW50cyBzaG91bGQg
bm90IGFsbG93IHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUgaW5wdXQgbGFuZ3VhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oCmlu
ZGV4IDZhMzE3NTE1NWU1YjM5NzJlMjU1NDZmNjE0NTc1MmQ5YTk2YzJkOWMuLmU4ZDg4YTEyNjc0
YmM4NWY4M2RlZDk0ZmZkODFiNTM3ODU5ZmJkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaApAQCAtMzksOSArMzksOSBA
QAogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNQaWNrZXJWaWV3X1ByaXZhdGUuaD4KICNpbXBv
cnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIuaD4K
LSNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5o
PgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
U3ViY2xhc3MuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3
U3BlY3MuaD4KKyNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUmVzb3VyY2VzLmg+
CkBAIC0xNjksOSArMTY5LDEwIEBAIGV4dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRv
blR5cGVQaWxsOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKmluaXRp
YWxUZXh0OwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgbnVsbGFibGUpIFVJQ29sb3Ig
KnRpbnRDb2xvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFVJVGV4dENvbnRlbnRU
eXBlIHNlY29uZGFyeVRleHRDb250ZW50VHlwZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIE5TSW50ZWdlciBtaW5pbXVtTGVuZ3RoOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgVUlSZXR1cm5LZXlUeXBlIHJldHVybktleVR5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
TlNJbnRlZ2VyIG1pbmltdW1MZW5ndGg7CitAcHJvcGVydHkgKG5vbmF0b21pYykgVUlSZXR1cm5L
ZXlUeXBlIHJldHVybktleVR5cGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0F0
dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRIZWFkZXJUZXh0OworQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgYWNjZXB0c0Vtb2ppOwogCiBAZW5kCiAKQEAgLTIxOSwxMSArMjIwLDE2IEBAIGV4
dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRvblR5cGVQaWxsOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBQVUlDVGFibGVWaWV3ICpsaXN0VmlldzsKIEBwcm9wZXJ0eSAo
c3Ryb25nLCBub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDUXVpY2tib2FyZExpc3RWaWV3U3BlY3Mg
KnNwZWNzOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFVJVGV4dENvbnRlbnRUeXBlIHRl
eHRDb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFBVSUNUZXh0SW5w
dXRDb250ZXh0ICp0ZXh0SW5wdXRDb250ZXh0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVs
ZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRl
IGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfREVTSUdO
QVRFRF9JTklUSUFMSVpFUjsKIC0gKHZvaWQpcmVsb2FkTGlzdEl0ZW1zOwogLSAodm9pZClyZWxv
YWRIZWFkZXJDb250ZW50VmlldzsKIEBlbmQKIAorQGludGVyZmFjZSBQVUlDUXVpY2tib2FyZE1l
c3NhZ2VWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyCitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheSAqbWVzc2FnZXM7CitAZW5kCisKIEBp
bnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRBcm91ZXRWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2Jv
YXJkVmlld0NvbnRyb2xsZXIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJsZSkg
VUlUZXh0Q29udGVudFR5cGUgdGV4dENvbnRlbnRUeXBlOwogLSAodm9pZClzZXRJbnB1dFRleHQ6
KG51bGxhYmxlIE5TU3RyaW5nICopaW5wdXRUZXh0IHNlbGVjdGlvblJhbmdlOihOU1JhbmdlKXNl
bGVjdGlvblJhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDhjZmM2MDc0ZDA1NjJhYTU4
MmM1YzBkMjM0ODhlZTYzNmIyYzlhOWMuLmJkMTAwZWJmZWI0MTJlMDA4ZGU1Y2MzODJkNGUzY2Fi
YmM1ZTRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ1NCw3ICs0NTQsNiBAQCBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFk
Vmlldy5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1t
Ci1VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQog
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1t
CmluZGV4IGM4NzllOWRlMGQxZmQwMDk1YWI3ODBiMTI2M2E4ZjZhYmEyYWEwZGEuLjhjN2Q1MzM2
NmQ3OTVlOTJhNmM1OWIwNGMzYjU5ZDRhZTZhMTk0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNjQs
NyArNjQsNyBAQAogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9uSXRlbUlkZW50aWZpZXJzLmgiCiAj
aW1wb3J0ICJXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUHJldmll
d0VsZW1lbnRJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29u
dHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJX
S1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1dExp
c3RWaWV3Q29udHJvbGxlci5oIgpAQCAtNjY2NiwyMiArNjY2NiwyMiBAQCAtICh2b2lkKXJlbW92
ZUZvY3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAgICBbc2VsZiBzZXRJbnB1dERlbGVnYXRlOm5p
bF07CiB9CiAKLSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKLQotLSAoUmV0YWluUHRy
PFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVyOihV
SVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyCistIChSZXRhaW5QdHI8
UFVJQ1RleHRJbnB1dENvbnRleHQ+KWNyZWF0ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0CiB7
Ci0gICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0TlMoW1tQVUlDUXVpY2tib2Fy
ZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gc3VnZ2VzdGlvbnMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
W19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXS5jb3VudF0pOwotICAgIGZvciAoVUlUZXh0
U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBbX2Zvcm1JbnB1dFNlc3Npb24gc3VnZ2VzdGlvbnNd
KQotICAgICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OnN1Z2dlc3Rpb24uaW5wdXRUZXh0XTsK
LQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tQVUlDVGV4dElucHV0Q29udGV4dCBhbGxv
Y10gaW5pdF0pOwogICAgIFtzZWxmIF91cGRhdGVUZXh0SW5wdXRUcmFpdHM6Y29udGV4dC5nZXQo
KV07Ci0gICAgW2NvbnRleHQgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlvbnMuZ2V0KCldOwogICAg
IFtjb250ZXh0IHNldEluaXRpYWxUZXh0Ol9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZhbHVl
XTsKICAgICBbY29udGV4dCBzZXRBY2NlcHRzRW1vamk6WUVTXTsKICAgICBbY29udGV4dCBzZXRT
aG91bGRQcmVzZW50TW9kZXJuVGV4dElucHV0VUk6WUVTXTsKKyAgICByZXR1cm4gY29udGV4dDsK
K30KKworI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorCistIChSZXRhaW5QdHI8UFVJ
Q1F1aWNrYm9hcmRDb250cm9sbGVyPilfY3JlYXRlUXVpY2tib2FyZENvbnRyb2xsZXI6KFVJVmll
d0NvbnRyb2xsZXIgKilwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIKK3sKKyAgICBhdXRvIHF1aWNr
Ym9hcmRDb250cm9sbGVyID0gYWRvcHROUyhbW1BVSUNRdWlja2JvYXJkQ29udHJvbGxlciBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gY29udGV4dCA9IHNlbGYuY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHQ7CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldFF1aWNrYm9hcmRQcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXI6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXTsKICAgICBbcXVp
Y2tib2FyZENvbnRyb2xsZXIgc2V0RXhjbHVkZWRGcm9tU2NyZWVuQ2FwdHVyZTpbY29udGV4dCBp
c1NlY3VyZVRleHRFbnRyeV1dOwogICAgIFtxdWlja2JvYXJkQ29udHJvbGxlciBzZXRUZXh0SW5w
dXRDb250ZXh0OmNvbnRleHQuZ2V0KCldOwpAQCAtNjkzMSw3ICs2OTMxLDcgQEAgLSAodm9pZClm
b2N1c2VkRm9ybUNvbnRyb2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9uczooV0tGb2N1c2VkRm9ybUNv
bnRyb2xWaWV3ICopdmkKICAgICBpZiAoX2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAhW19w
cmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBbKFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3JlZW5J
bnB1dFZpZXdDb250cm9sbGVyIHJlbG9hZFRleHRTdWdnZXN0aW9uc107CisgICAgWyhXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29u
dHJvbGxlciB1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6W19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3IHN1
Z2dlc3Rpb25zXV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlckRlbGVnYXRlCkBAIC05MTk2LDE2ICs5MTk2LDcgQEAgLSAodm9pZClxdWlja2JvYXJk
SW5wdXRDYW5jZWxsZWQ6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJk
CiAKICNwcmFnbWEgbWFyayAtIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAot
LSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAq
KWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplCi17
Ci0gICAgaWQgPF9XS0lucHV0RGVsZWdhdGU+IGRlbGVnYXRlID0gc2VsZi53ZWJWaWV3Ll9pbnB1
dERlbGVnYXRlOwotICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6Zm9jdXNlZEVsZW1lbnRDb250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdTaXpl
OmlucHV0U2Vzc2lvbjopXSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gW2RlbGVn
YXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3SGVpZ2h0
Rm9yRml0dGluZ1NpemU6c2l6ZSBpbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCld
OwotfQotCi0tIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29u
dHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKKy0gKEJP
T0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7CiAgICAgc3dpdGNoIChfZm9jdXNl
ZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJbnB1
dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKQEAgLTkyNzIsMjAgKzkyNjMsOSBAQCAtIChXS051bWJl
clBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1Rl
eHRJbnB1dExpc3RWaQogICAgIH0KIH0KIAotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5cGVG
b3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlcgorLSAoUFVJQ1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlz
dFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXIKIHsKLSAgICByZXR1cm4gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlja2JvYXJkOwotfQot
Ci0tIChOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0
Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxl
cgotewotICAgIHJldHVybiBbX2ZvY3VzZWRGb3JtQ29udHJvbFZpZXcgc3VnZ2VzdGlvbnNdOwot
fQotCi0tICh2b2lkKWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0
aW9uICopc3VnZ2VzdGlvbgotewotICAgIFtzZWxmIGluc2VydFRleHRTdWdnZXN0aW9uOnN1Z2dl
c3Rpb25dOwotICAgIFtzZWxmIGRpc21pc3NRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJBbmRSZXZl
YWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTpjb250cm9sbGVyXTsKKyAgICByZXR1cm4g
c2VsZi5jcmVhdGVRdWlja2JvYXJkVGV4dElucHV0Q29udGV4dC5hdXRvcmVsZWFzZSgpOwogfQog
CiAtIChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlD
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgpAQCAtOTMwMywxMCArOTI4Myw4
IEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVy
ICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCi0KLQotCiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQorCiAtICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZAogewog
ICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8fCAh
c2VsZi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UpCkBA
IC0xMDM2Myw3ICsxMDM0MSw3IEBAIC0gKE5TU3RyaW5nICopdGV4dENvbnRlbnRUeXBlRm9yVGVz
dGluZwogewogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAgICAgaWYgKFtfcHJlc2VudGVkRnVs
bFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRMaXN0
Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRDb250ZW50
VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
KilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOworICAgICAg
ICByZXR1cm4gWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxs
U2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciB0ZXh0SW5wdXRDb250ZXh0XS50ZXh0Q29udGVudFR5
cGU7CiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCiAgICAgaWYgKF9wcmVzZW50ZWRR
dWlja2JvYXJkQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuIFtfcHJlc2VudGVkUXVpY2tib2Fy
ZENvbnRyb2xsZXIgdGV4dElucHV0Q29udGV4dF0udGV4dENvbnRlbnRUeXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2Vy
Vmlld0NvbnRyb2xsZXIuaAppbmRleCBlODFlMzQwZWU2M2FhZjY0NzEwMmExYjI5NzlkODUyMWE2
MGEyZWQ5Li43YjVmNDhkNzI4NWRlNzBkMDQ4MTdlMzEwMjFhYjU2NjJiMTJlNGViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0Nv
bnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRl
UGlja2VyVmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQRVBQ
RVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgi
CisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBpbnRl
cmZhY2UgV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQppbmRleCA0NzQ4OGZkZTIyYTll
OGQ5MmQxZDkzNWMxMDg3YTUwNTc1ZjE5YjM3Li5hYmQwYTc0ZjY0MTU3NDA5M2UwNzI5OWMzMmU3
NDA1Zjc1YjA2MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCkBAIC0zMDYsOCAr
MzA2LDYgQEAgLSAodm9pZCl2aWV3V2lsbEFwcGVhcjooQk9PTClhbmltYXRlZAogICAgIF9zdGF0
dXNCYXJBc3NlcnRpb24gPSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25d
IF90YWtlU3RhdHVzQmFyR2xvYmFsQ29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKICAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2Vs
ZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0aW9uKSBuYW1lOlBVSUNTdGF0
dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07
CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQ
VUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBj
b25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwogfQog
CiAtICh2b2lkKXZpZXdEaWRBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5OGFkMDUx
N2Q5ODQ5NmQwMzlkOGNmYjg5ZjYxOTllNWJhYWZhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBvcnQg
IlBlcHBlclVJQ29yZVNQSS5oIgotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RJdGVtQ2Vs
bCA6IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsCi1AZW5kCi0KLSNpZiBIQVZFKFFVSUNLQk9B
UkRfQ09MTEVDVElPTl9WSUVXUykKLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdENvbGxlY3Rp
b25WaWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxs
Ci1AZW5kCi0jZW5kaWYKLQotQGNsYXNzIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcjsK
LQotQHByb3RvY29sIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUgPFBVSUNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KLQotLSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxl
cjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0
Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplOwotLSAoVUlWaWV3ICopaW5wdXRDb250ZXh0
Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlcjsKLS0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjoo
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmluZyAq
KWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyICopY29udHJvbGxlcjsKLS0gKEJPT0wpc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZpZXdG
b3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyOwotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotCi1A
ZW5kCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIDogUFVJQ1F1
aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVs
ZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBO
U19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6
KE5TQ29kZXIgKilhRGVjb2RlciBOU19VTkFWQUlMQUJMRTsKLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERlbGVnYXRlOihpZDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRl
bGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNf
VU5BVkFJTEFCTEU7Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7Ci0KLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4g
ZGVsZWdhdGU7Ci0KLUBlbmQKLQotdm9pZCBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVy
KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiwgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyRGVsZWdhdGU+KTsKLQotI2VuZGlmIC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlz
dFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
UXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZjM4ZDc3OTNmMjNjMjQ3MGFlODY5YmVhMDU3YzcyMmE5NWUxY2JjNi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyAvZGV2
L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIK
LSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgotCi0jaWYgSEFWRShQ
RVBQRVJfVUlfQ09SRSkKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1zdGF0aWMgY29u
c3QgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Owotc3RhdGljIGNvbnN0
IENHRmxvYXQgaXRlbUNlbGxCYXNlbGluZVRvQm90dG9tID0gODsKLQotQGltcGxlbWVudGF0aW9u
IFdLUXVpY2tib2FyZExpc3RJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGlu
ZVNwZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0K
LQotLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0
ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jaWYgSEFWRShRVUlDS0JPQVJE
X0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0Q29s
bGVjdGlvblZpZXdJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNW
YWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0KLQotLSAo
Q0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0ZW1DZWxs
QmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJE
X0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyICgpIDxQVUlDUXVpY2tib2FyZExhbmd1YWdlQ29udHJvbGxlckRlbGVnYXRlPgotQGVu
ZAotCi1AaW1wbGVtZW50YXRpb24gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIHsKLSAg
ICBCT09MIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlOwotICAgIFJldGFpblB0cjxVSVZpZXc+IF9j
b250ZXh0VmlldzsKLSAgICBSZXRhaW5QdHI8UFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRWaWV3
QXNzZXJ0aW9uPiBfc3RhdHVzQmFyQXNzZXJ0aW9uOwotfQotCi1AZHluYW1pYyBkZWxlZ2F0ZTsK
LQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3
Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGlu
aXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0aW9uTW9kZVRl
eHRdKQotICAgICAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLQotICAgIHJldHVy
biBzZWxmOwotfQotCi0tICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKLXsKLSAgICBp
ZiAoIV9jb250ZXh0Vmlld05lZWRzVXBkYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRv
IHByZXZpb3VzQ29udGV4dFZpZXcgPSBfY29udGV4dFZpZXc7Ci0gICAgaWYgKFtzZWxmLmRlbGVn
YXRlIHNob3VsZERpc3BsYXlJbnB1dENvbnRleHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNl
bGZdKQotICAgICAgICBfY29udGV4dFZpZXcgPSBbc2VsZi5kZWxlZ2F0ZSBpbnB1dENvbnRleHRW
aWV3Rm9yVmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgZWxzZQotICAgICAgICBfY29udGV4dFZp
ZXcgPSBuaWw7Ci0KLSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IE5POwotfQotCi0tIChC
T09MKXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZv
aWQpdmlld1dpbGxBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld1dpbGxB
cHBlYXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlvbiA9IFtbUFVJQ0FwcGxp
Y2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0gX3Rha2VTdGF0dXNCYXJHbG9iYWxDb250ZXh0
QXNzZXJ0aW9uQW5pbWF0ZWQ6Tk9dOwotCi0gICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRl
ciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIGFk
ZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0
aW9uKSBuYW1lOlBVSUNTdGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmlj
YXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9y
OkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFy
VGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBjb25maWd1cmVTdGF0
dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwotfQotCi0tICh2b2lkKXZp
ZXdEaWREaXNhcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld0RpZERpc2Fw
cGVhcjphbmltYXRlZF07Ci0KLSAgICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gbmlsOwotCi0gICAg
TlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZh
dWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQVUlDU3Rh
dHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxd
OwotICAgIFtjZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOlBVSUNTdGF0dXNCYXJUaXRs
ZVRhcHBlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLX0KLQotLSAodm9pZClfaGFuZGxlU3Rh
dHVzQmFyTmF2aWdhdGlvbgotewotICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmRJbnB1dENh
bmNlbGxlZDpzZWxmXTsKLX0KLQotLSAodm9pZClyZWxvYWRDb250ZXh0VmlldwotewotICAgIF9j
b250ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOwotICAgIFtzZWxmIHJlbG9hZEhlYWRlckNvbnRl
bnRWaWV3XTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KLQot
LSAoUFVJQ0FjdGlvbkNvbnRyb2xsZXIgKilhY3Rpb25Db250cm9sbGVyCi17Ci0gICAgaWYgKCFb
c2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6c2VsZl0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBQVUlDQWN0aW9uSXRlbSAq
bGFuZ3VhZ2VTZWxlY3Rpb25BY3Rpb25JdGVtID0gW3NlbGYubGFuZ3VhZ2VDb250cm9sbGVyIGxh
bmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbUZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGF1
dG8gYWN0aW9uR3JvdXAgPSBhZG9wdE5TKFtbUFVJQ0FjdGlvbkdyb3VwIGFsbG9jXSBpbml0V2l0
aEFjdGlvbkl0ZW1zOkBbIGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSBdIGFjdGlvblN0eWxl
OlBVSUNBY3Rpb25TdHlsZUF1dG9tYXRpY10pOwotICAgIHJldHVybiBhZG9wdE5TKFtbUFVJQ0Fj
dGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aW9uR3JvdXA6YWN0aW9uR3JvdXAuZ2V0
KCldKS5hdXRvcmVsZWFzZSgpOwotfQotCi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQKLQotI3ByYWdtYSBtYXJrIC0gUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXJE
ZWxlZ2F0ZQotCi0tICh2b2lkKWxhbmd1YWdlQ29udHJvbGxlckRpZENoYW5nZVByaW1hcnlMYW5n
dWFnZTooUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIgKilsYW5ndWFnZUNvbnRyb2xs
ZXIKLXsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihxdWlja2JvYXJkOmxhbmd1YWdlRGlkQ2hhbmdlOildKQotICAgICAgICBbc2VsZi5kZWxlZ2F0
ZSBxdWlja2JvYXJkOnNlbGYgbGFuZ3VhZ2VEaWRDaGFuZ2U6bGFuZ3VhZ2VDb250cm9sbGVyLnBy
aW1hcnlMYW5ndWFnZV07Ci19Ci0KLSNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3ViY2xhc3Np
bmcKLQotLSAoQ0dGbG9hdCloZWFkZXJDb250ZW50Vmlld0hlaWdodAotewotICAgIFtzZWxmIHVw
ZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwotCi0gICAgcmV0dXJuIFtfY29udGV4dFZpZXcgc2l6
ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNpemVdLmhlaWdodDsKLX0KLQotLSAo
VUlWaWV3ICopaGVhZGVyQ29udGVudFZpZXcKLXsKLSAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmll
d0lmTmVlZGVkXTsKLQotICAgIENHRmxvYXQgdmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgoc2Vs
Zi5jb250ZW50Vmlldy5ib3VuZHMpOwotICAgIENHU2l6ZSBzaXplVGhhdEZpdHMgPSBbX2NvbnRl
eHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXTsKLSAgICBb
X2NvbnRleHRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoKHZpZXdXaWR0aCAtIHNpemVUaGF0Rml0
cy53aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZpdHMud2lkdGgsIHNpemVUaGF0Rml0cy5oZWlnaHQp
XTsKLSAgICBbX2NvbnRleHRWaWV3IGxheW91dFN1YnZpZXdzXTsKLSAgICByZXR1cm4gX2NvbnRl
eHRWaWV3LmdldCgpOwotfQotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29u
dHJvbGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGUpCi17Ci0gICAgLy8gQW4g
aW50ZXJuYWwgY2xpZW50IChlLmcuIFNhZmFyaSdzIG1vZGFsIHNoZWV0KSBtYXkgaGF2ZSBtb3Zl
ZCB0aGUgc3RhdHVzIGJhciBvZmZzY3JlZW4uCi0gICAgLy8gQmVmb3JlIHVwZGF0aW5nIHRoZSBz
dGF0dXMgYmFyLCBtYWtlIHN1cmUgdGhhdCB3ZSBicmluZyB0aGUgc3RhdHVzIGJhciBiYWNrIHRv
IGl0cyBvcmlnaW5hbCBwb3NpdGlvbi4KLSAgICBQVUlDU3RhdHVzQmFyICpzdGF0dXNCYXIgPSBb
UFVJQ0FwcGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0uX3B1aWNTdGF0dXNCYXI7Ci0g
ICAgc3RhdHVzQmFyLmZyYW1lID0gQ0dSZWN0IHsgQ0dQb2ludFplcm8sIHN0YXR1c0Jhci5mcmFt
ZS5zaXplIH07Ci0KLSAgICBQVUlDQXBwbGljYXRpb25TdGF0dXNCYXJJdGVtICppdGVtID0gY29u
dHJvbGxlci5wdWljX2FwcGxpY2F0aW9uU3RhdHVzQmFySXRlbTsKLSAgICBpdGVtLnRpdGxlID0g
W2RlbGVnYXRlIGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6Y29udHJvbGxlcl07Ci0g
ICAgaXRlbS50aXRsZUNvbG9yID0gW1VJQ29sb3Igc3lzdGVtQmx1ZUNvbG9yXTsKLSAgICBpdGVt
Lm5hdlVJQmFja0J1dHRvbkRpc2FibGVkID0gTk87Ci0gICAgaXRlbS5zaG93TmF2aWdhdGlvblVJ
ID0gWUVTOwotICAgIGl0ZW0udGl0bGVJbnRlcmFjdGl2ZSA9IFlFUzsKLSAgICBbaXRlbSBjb21t
aXRDaGFuZ2VzQW5pbWF0ZWQ6Tk9dOwotfQotCi0jZW5kaWYgLy8gSEFWRShQRVBQRVJfVUlfQ09S
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQwNGNjNWE2OTQwNGVhODUzZTVmZDVmNjBjMDI5ZmVlYmQ4MzNiYzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFW
RShQRVBQRVJfVUlfQ09SRSkKKworI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJLmgiCisKK0Bwcm90
b2NvbCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxQVUlDUXVpY2tib2FyZFZp
ZXdDb250cm9sbGVyRGVsZWdhdGU+CisKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JW
aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7
CistIChOU1N0cmluZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2ti
b2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKworQGVuZAorCisjZW5kaWYgLy8gSEFW
RShQRVBQRVJfVUlfQ09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaAppbmRl
eCBjODEwMjA4NjY5YjQxNjRhNTFkOTZiNzQ5OGMxMTg4MjgyODliZTM1Li5lNjlmYjAxMTUzMjUz
NGNlZTFmOTIxODE1NmQzMjQxZTc1ZjE1NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQog
Ci0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogQGNsYXNzIFdLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlcjsKIApAQCAtNDEsOSArNDEsMTEgQEAKIAogQGVuZAogCi1AaW50
ZXJmYWNlIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlcgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIg
OiBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEZWxlZ2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRl
PilkZWxlZ2F0ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+
KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUg
TlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAq
KWNvZGVyIE5TX1VOQVZBSUxBQkxFOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQg
PFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxp
c3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggMmQzMDE5ZmQ3NDNhYmU1MzA5
NjcxMjYzNzllYzFlOGViYzgyYzVmZC4uNzhkNGI3MzAwZWEyM2Y0Nzg2YzhiMWJlYmNhM2Q5Y2Y4
ZGU5Mzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
U2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC00Myw4
ICs0MywxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQVUlDUXVpY2tib2FyZExpc3RT
ZWN0aW9uKSB7CiAgICAgUFVJQ1F1aWNrYm9hcmRMaXN0U2VjdGlvbkNvbnRlbnRVbmF2YWlsYWJs
ZSwKIH07CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFy
Oi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLUBpbnRlcmZhY2UgV0tTZWxl
Y3RNZW51SXRlbUNlbGwgOiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKK3N0YXRpYyBjb25zdGV4
cHIgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Oworc3RhdGljIGNvbnN0
ZXhwciBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7CisKKy8vIEZJWE1FOiBU
aGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzU3ODA3NDQ1PiBsYW5kcyBp
biBhIGJ1aWxkLgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVJdGVtQ2VsbCA6IFBVSUNRdWlja2Jv
YXJkTGlzdEl0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJSW1hZ2VW
aWV3ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTUyLDcgKzU1LDcgQEAgQGltcGxlbWVudGF0aW9u
IFdLU2VsZWN0TWVudUl0ZW1DZWxsIHsKICAgICBSZXRhaW5QdHI8VUlJbWFnZVZpZXc+IF9pbWFn
ZVZpZXc7CiB9CiAKLS0gKGluc3RhbmNldHlwZSkgaW5pdFdpdGhTdHlsZTooVUlUYWJsZVZpZXdD
ZWxsU3R5bGUpc3R5bGUgcmV1c2VJZGVudGlmaWVyOihOU1N0cmluZyAqKXJldXNlSWRlbnRpZmll
cgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3R5bGU6KFVJVGFibGVWaWV3Q2VsbFN0eWxlKXN0
eWxlIHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilyZXVzZUlkZW50aWZpZXIKIHsKICAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoU3R5bGU6c3R5bGUgcmV1c2VJZGVudGlmaWVyOnJl
dXNlSWRlbnRpZmllcl0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzEsMTEgKzc0LDIxIEBA
IC0gKFVJSW1hZ2VWaWV3ICopaW1hZ2VWaWV3CiAgICAgcmV0dXJuIF9pbWFnZVZpZXcuZ2V0KCk7
CiB9CiAKKy0gKENHRmxvYXQpdG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlCit7CisgICAgcmV0
dXJuIGl0ZW1DZWxsVG9wVG9MYWJlbEJhc2VsaW5lOworfQorCistIChDR0Zsb2F0KWJhc2VsaW5l
VG9Cb3R0b21TcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRlbUNlbGxCYXNlbGluZVRvQm90dG9t
OworfQorCiBAZW5kCiAKICNpZiBIQVZFKFFVSUNLQk9BUkRfQ09MTEVDVElPTl9WSUVXUykKIAot
QGludGVyZmFjZSBXS1NlbGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogV0tRdWlja2Jv
YXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51Q29s
bGVjdGlvblZpZXdJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRl
bUNlbGwKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlJbWFnZVZpZXcgKmltYWdl
VmlldzsKIEBlbmQKIApAQCAtMTAyLDYgKzExNSwxNiBAQCAtIChVSUltYWdlVmlldyAqKWltYWdl
VmlldwogICAgIHJldHVybiBfaW1hZ2VWaWV3LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRvcFRv
TGFiZWxCYXNlbGluZVNwZWNWYWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxC
YXNlbGluZTsKK30KKworLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7Cisg
ICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKK30KKwogQGVuZAogCiAjZW5kaWYg
Ly8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCkBAIC0xMTUsNyArMTM4LDcgQEAg
QGR5bmFtaWMgZGVsZWdhdGU7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihp
ZCA8V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0g
ICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICByZXR1cm4g
W3N1cGVyIGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0
aW9uTW9kZVRleHRdOwogfQogCiAtICh2b2lkKXZpZXdEaWRMb2FkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlci5oCmluZGV4IGUxMjkyZmJkMzNhNTdjZjY2N2E0N2VhNGUxMzI1MTQwMTlj
ZWQ1NzIuLjhlYjJjMzY0MmQ4OTFjN2Q1YTAxNGMyZjZiMjJmYTU3NTA2N2Y2MjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBIQVZF
KFBFUFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAog
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKICAgICBX
S051bWJlclBhZElucHV0TW9kZU5vbmUsCkBAIC00MSwxNyArNDEsMjEgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKIEBwcm90b2NvbCBXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ckRlbGVnYXRlPgogCiAtIChXS051bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9y
TGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXI7Ci0tIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxl
cjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNBcnJh
eTxVSVRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9s
bGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tICh2b2lk
KWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0aW9uICopc3VnZ2Vz
dGlvbjsKLS0gKEJPT0wpYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6
KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoUFVJQ1RleHRJ
bnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CistIChVSVZpZXcgKilpbnB1
dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyOworLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3
Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwor
LSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClzaG91bGRE
aXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CiAKIEBlbmQKIAotQGludGVyZmFjZSBXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
cgorQGludGVyZmFjZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2Jv
YXJkTWVzc2FnZVZpZXdDb250cm9sbGVyCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVn
YXRlOihpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUg
TlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKHZvaWQpcmVsb2FkVGV4dFN1Z2dlc3Rpb25z
OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZp
ZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRp
b25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOworLSAodm9pZCl1cGRh
dGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dlc3Rp
b25zOworLSAodm9pZClyZWxvYWRDb250ZXh0VmlldzsKIAogQHByb3BlcnR5IChub25hdG9taWMs
IHdlYWspIGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0
ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDFiYjEyM2I5YjFi
YzZkMTA3M2UwMmZlNjhlOGNiMTM5YTkxMzdhZmQuLjM0OWUxNjQ2N2UwODFjZGNhNTI1OGJmN2Yy
YTY0OTdhZTdkZWM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KQEAg
LTMxLDExICszMSw5IEBACiAjaW1wb3J0ICJXS051bWJlclBhZFZpZXdDb250cm9sbGVyLmgiCiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHRleHRTdWdn
ZXN0aW9uQnV0dG9uSGVpZ2h0ID0gNDQ7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB0ZXh0U3VnZ2Vz
dGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbiA9IDk7Ci1zdGF0aWMgTlNTdHJpbmcgKnRleHRTdWdn
ZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9IEAiV2ViS2l0UXVpY2tib2FyZFRleHRTdWdnZXN0
aW9uQ2VsbCI7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ciB7CisgICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKKyAgICBSZXRhaW5QdHI8VUlW
aWV3PiBfY29udGV4dFZpZXc7CiAgICAgUmV0YWluUHRyPFdLTnVtYmVyUGFkVmlld0NvbnRyb2xs
ZXI+IF9udW1iZXJQYWRWaWV3Q29udHJvbGxlcjsKIH0KIApAQCAtNDMsMzIgKzQxLDQyIEBAIEBk
eW5hbWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQg
PFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0gICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXSkpCisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6
UFVJQ0RpY3RhdGlvbk1vZGVUZXh0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBzZWxm
LnRleHRDb250ZW50VHlwZSA9IFtzZWxmLmRlbGVnYXRlIHRleHRDb250ZW50VHlwZUZvckxpc3RW
aWV3Q29udHJvbGxlcjpzZWxmXTsKKyAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsK
KyAgICBzZWxmLnRleHRJbnB1dENvbnRleHQgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0SW5wdXRDb250
ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogICAgIHJldHVybiBzZWxmOwogfQogCi0t
ICh2b2lkKXZpZXdEaWRMb2FkCistICh2b2lkKXJlbG9hZENvbnRleHRWaWV3CiB7Ci0gICAgW3N1
cGVyIHZpZXdEaWRMb2FkXTsKLQotICAgIHNlbGYuaGVhZGVyVmlldy5oaWRkZW4gPSBZRVM7Cisg
ICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZRVM7CisgICAgW3NlbGYgcmVsb2FkSGVhZGVy
Q29udGVudFZpZXddOwogfQogCi0tICh2b2lkKXdpbGxQcmVzZW50QXJvdWV0Vmlld0NvbnRyb2xs
ZXI6KFBVSUNRdWlja2JvYXJkQXJvdWV0Vmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJkCistICh2
b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKIHsKLSAgICBOU1N0cmluZyAqaW5pdGlhbFRl
eHQgPSBbc2VsZi5kZWxlZ2F0ZSBpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjpzZWxmXTsK
LSAgICBpZiAoaW5pdGlhbFRleHQubGVuZ3RoKQotICAgICAgICBbcXVpY2tib2FyZCBzZXRJbnB1
dFRleHQ6aW5pdGlhbFRleHQgc2VsZWN0aW9uUmFuZ2U6TlNNYWtlUmFuZ2UoaW5pdGlhbFRleHQu
bGVuZ3RoLCAwKV07CisgICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3Owor
ICAgIGlmIChbc2VsZi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxp
c3RWaWV3Q29udHJvbGxlcjpzZWxmXSkKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYuZGVs
ZWdhdGUgaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOworICAgIGVsc2UK
KyAgICAgICAgX2NvbnRleHRWaWV3ID0gbmlsOwogCi0gICAgcXVpY2tib2FyZC5taW5UZXh0TGVu
Z3RoRm9yRW5hYmxpbmdBY2NlcHQgPSAwOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0g
Tk87Cit9CisKKy0gKEJPT0wpcmVxdWlyZXNOdW1lcmljSW5wdXQKK3sKKyAgICByZXR1cm4gW3Nl
bGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSAh
PSBXS051bWJlclBhZElucHV0TW9kZU5vbmU7CiB9CiAKIC0gKE5TQXJyYXkgKilhZGRpdGlvbmFs
VHJheUJ1dHRvbnMKIHsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZv
ckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmUpCisg
ICAgaWYgKCFzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0KQogICAgICAgICByZXR1cm4gQFsgXTsK
IAogI2lmIEhBVkUoUFVJQ19CVVRUT05fVFlQRV9QSUxMKQpAQCAtOTksOSArMTA3LDE0IEBAIC0g
KHZvaWQpcHJlc2VudE51bWJlclBhZFZpZXdDb250cm9sbGVyCiAgICAgW3NlbGYgcHJlc2VudFZp
ZXdDb250cm9sbGVyOl9udW1iZXJQYWRWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMg
Y29tcGxldGlvbjpuaWxdOwogfQogCi0tICh2b2lkKXJlbG9hZFRleHRTdWdnZXN0aW9ucworLSAo
dm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAq
KXN1Z2dlc3Rpb25zCiB7Ci0gICAgW3NlbGYgcmVsb2FkTGlzdEl0ZW1zXTsKKyAgICBhdXRvIG1l
c3NhZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5TQXR0cmlidXRlZFN0cmluZyAqPiBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzdWdnZXN0aW9ucy5jb3VudF0pOworICAgIGZvciAoVUlU
ZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBzdWdnZXN0aW9ucykgeworICAgICAgICBhdXRv
IGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpzdWdnZXN0aW9uLmRpc3BsYXlUZXh0XSk7CisgICAgICAgIFttZXNzYWdl
cyBhZGRPYmplY3Q6YXR0cmlidXRlZFN0cmluZy5nZXQoKV07CisgICAgfQorICAgIHNlbGYubWVz
c2FnZXMgPSBtZXNzYWdlcy5nZXQoKTsKIH0KIAogLSAodm9pZCllbnRlclRleHQ6KE5TU3RyaW5n
ICopdGV4dApAQCAtMTExLDEwOSArMTI0LDQ3IEBAIC0gKHZvaWQpZW50ZXJUZXh0OihOU1N0cmlu
ZyAqKXRleHQKIAogI3ByYWdtYSBtYXJrIC0gUXVpY2tib2FyZCBzdWJjbGFzc2luZwogCi0tIChC
T09MKXN1cHBvcnRzRGljdGF0aW9uSW5wdXQKKy0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZpZXdI
ZWlnaHQKIHsKLSAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dzRGljdGF0aW9uSW5wdXRG
b3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci19Ci0KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0
ZW1BdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKLXsKLSAgICBbc2VsZiBfZGlk
U2VsZWN0TGlzdEl0ZW06aW5kZXhQYXRoLnJvd107Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4g
YSBidWlsZC4KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVy
Ci17Ci0gICAgW3NlbGYgX2RpZFNlbGVjdExpc3RJdGVtOml0ZW1OdW1iZXJdOwotfQotCi0tICh2
b2lkKV9kaWRTZWxlY3RMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIKLXsKLSAgICBOU0Fy
cmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtzZWxmLmRlbGVnYXRl
IHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAgICBpZiAodGV4
dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGl0ZW1OdW1iZXIp
KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIFtzZWxmIHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwogCi0gICAgW3NlbGYuZGVs
ZWdhdGUgbGlzdFZpZXdDb250cm9sbGVyOnNlbGYgZGlkU2VsZWN0VGV4dFN1Z2dlc3Rpb246W3Rl
eHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdXTsKKyAgICByZXR1cm4gW19j
b250ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3VuZHMuc2l6ZV0uaGVp
Z2h0OwogfQogCi0tIChOU0ludGVnZXIpbnVtYmVyT2ZMaXN0SXRlbXMKKy0gKFVJVmlldyAqKWhl
YWRlckNvbnRlbnRWaWV3CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0
aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXS5jb3VudDsKLX0KKyAgICBbc2VsZiB1cGRh
dGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKIAotLSAoQ0dGbG9hdCloZWlnaHRGb3JMaXN0SXRlbToo
TlNJbnRlZ2VyKWl0ZW1OdW1iZXIgd2lkdGg6KENHRmxvYXQpd2lkdGgKLXsKLSAgICByZXR1cm4g
dGV4dFN1Z2dlc3Rpb25CdXR0b25IZWlnaHQ7CisgICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1Jl
Y3RHZXRXaWR0aChzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcyk7CisgICAgQ0dTaXplIHNpemVUaGF0
Rml0cyA9IFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRz
LnNpemVdOworICAgIFtfY29udGV4dFZpZXcgc2V0RnJhbWU6Q0dSZWN0TWFrZSgodmlld1dpZHRo
IC0gc2l6ZVRoYXRGaXRzLndpZHRoKSAvIDIsIDAsIHNpemVUaGF0Rml0cy53aWR0aCwgc2l6ZVRo
YXRGaXRzLmhlaWdodCldOworICAgIFtfY29udGV4dFZpZXcgbGF5b3V0U3Vidmlld3NdOworICAg
IHJldHVybiBfY29udGV4dFZpZXcuZ2V0KCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBj
YW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBi
dWlsZC4KLS0gKFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsICopY2VsbEZvckxpc3RJdGVtOihO
U0ludGVnZXIpaXRlbU51bWJlcgorLSAoQk9PTClzaG91bGRTaG93TGFuZ3VhZ2VCdXR0b24KIHsK
LSAgICBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtzZWxm
LmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAg
ICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGl0
ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gbmlsOwotICAgIH0KLQotICAgIFVJVGV4dFN1Z2dlc3Rpb24gKnRleHRTdWdnZXN0aW9uID0g
W3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdOwotICAgIGF1dG8gcmV1
c2FibGVDZWxsID0gcmV0YWluUHRyKFtzZWxmLmxpc3RWaWV3IGRlcXVldWVSZXVzYWJsZUNlbGxX
aXRoSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdKTsKLSAgICBp
ZiAoIXJldXNhYmxlQ2VsbCkgewotICAgICAgICByZXVzYWJsZUNlbGwgPSBhZG9wdE5TKFtbV0tR
dWlja2JvYXJkTGlzdEl0ZW1DZWxsIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3Q2Vs
bFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVu
dGlmaWVyXSk7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxhYmVsXS5udW1iZXJPZkxpbmVz
ID0gMTsKLSAgICAgICAgW3JldXNhYmxlQ2VsbCBpdGVtTGFiZWxdLmxpbmVCcmVha01vZGUgPSBO
U0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxh
YmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRydW5jYXRpb24gPSBZRVM7Ci0gICAgfQot
Ci0gICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0aChzZWxmLmxpc3RWaWV3LmJv
dW5kcyk7Ci0gICAgW3JldXNhYmxlQ2VsbCBjb25maWd1cmVGb3JUZXh0OnRleHRTdWdnZXN0aW9u
LmRpc3BsYXlUZXh0IHdpZHRoOnZpZXdXaWR0aF07Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCBiZWhh
dmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2VzIHRoZSB0ZXh0IGxhYmVsIHRv
IHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBBZGp1c3QgZm9yIHRoaXMgYnkg
c2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBmaXQgdGhlIGJvdW5kcyBvZiB0
aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0uZnJhbWUgPSBVSVJlY3RJbnNl
dChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAsIHRleHRTdWdnZXN0aW9uTGFi
ZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdp
bik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiBb
c2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxl
cjpzZWxmXTsKIH0KIAotLSAoTlNTdHJpbmcgKilsaXN0SXRlbUNlbGxSZXVzZUlkZW50aWZpZXIK
Ky0gKEJPT0wpc3VwcG9ydHNEaWN0YXRpb25JbnB1dAogewotICAgIHJldHVybiB0ZXh0U3VnZ2Vz
dGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7CisgICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIGFsbG93
c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogfQogCi0jaWYgSEFW
RShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLS0gKENsYXNzKWxpc3RJdGVtQ2VsbENs
YXNzCistIChCT09MKXNob3VsZFNob3dUcmF5VmlldwogewotICAgIHJldHVybiBbV0tRdWlja2Jv
YXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwgY2xhc3NdOworICAgIHJldHVybiBzZWxmLnJl
cXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0tIChQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0aW9u
Vmlld0l0ZW1DZWxsICopaXRlbUNlbGxGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIg
Zm9ySW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAorLSAoQk9PTClzaG91bGRTaG93
VGV4dEZpZWxkCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0U3VnZ2Vz
dGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNfY2FzdDxO
U1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRleHRTdWdnZXN0aW9uICp0ZXh0
U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVtYmVyXTsK
LSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2VsZi5jb2xsZWN0aW9uVmlldyBk
ZXF1ZXVlUmV1c2FibGVDZWxsV2l0aFJldXNlSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNlbGxS
ZXVzZUlkZW50aWZpZXIgZm9ySW5kZXhQYXRoOmluZGV4UGF0aF0pOwotCi0gICAgW3JldXNhYmxl
Q2VsbCBib2R5TGFiZWxdLm51bWJlck9mTGluZXMgPSAxOwotICAgIFtyZXVzYWJsZUNlbGwgYm9k
eUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOwotICAg
IFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRydW5j
YXRpb24gPSBZRVM7Ci0gICAgW3JldXNhYmxlQ2VsbCBzZXRUZXh0OnRleHRTdWdnZXN0aW9uLmRp
c3BsYXlUZXh0XTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIC1jb25maWd1cmVG
b3JUZXh0OndpZHRoOiBjYXVzZXMgdGhlIHRleHQgbGFiZWwgdG8gcnVuIG9mZiB0aGUgZW5kIG9m
IHRoZSBjZWxsLgotICAgIC8vIEFkanVzdCBmb3IgdGhpcyBieSBzaHJpbmtpbmcgdGhlIGxhYmVs
IHdpZHRoIHRvIGFjdHVhbGx5IGZpdCB0aGUgYm91bmRzIG9mIHRoZSBjZWxsLgotICAgIFtyZXVz
YWJsZUNlbGwgYm9keUxhYmVsXS5mcmFtZSA9IFVJUmVjdEluc2V0KFtyZXVzYWJsZUNlbGwgY29u
dGVudFZpZXddLmJvdW5kcywgMCwgdGV4dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJnaW4s
IDAsIHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luKTsKLSAgICByZXR1cm4gcmV1
c2FibGVDZWxsLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuICFzZWxmLnJlcXVpcmVzTnVtZXJp
Y0lucHV0OwogfQogCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1Mp
Ci0KIC0gKEJPT0wpc3VwcG9ydHNBcm91ZXRJbnB1dAogewotICAgIHJldHVybiBbc2VsZi5kZWxl
Z2F0ZSBudW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdID09IFdLTnVt
YmVyUGFkSW5wdXRNb2RlTm9uZTsKKyAgICByZXR1cm4gIXNlbGYucmVxdWlyZXNOdW1lcmljSW5w
dXQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKaW5kZXggNjU1OGNkZGU4
MjJjYmQ5NWZiYjA3MjkzYTZkYmYzZjg2Y2NjNWZhMy4uOWE3ZWExMDBkZWU0MTZhOWJlNjc4YWJl
NzI0NTAyOTU0MGE1ZGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAKLSNpbXBvcnQgIldLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLVGltZVBpY2tlclZpZXdDb250cm9sbGVy
IDogUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZTkzMGI2YjljNzcyOWIxMDVkOWQ2
MGM2Y2M4MjQyZWEyZWVmMWIyLi42YjE0NWZmOWM2NWY2YmJlNjhmN2M1Mjc0ZjNhNzExMTQ5ZmYz
ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIwMzgsNyArMjAzOCw3IEBACiAJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4NyAvKiBX
ZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0Q0IwOUU0MjI1RDVBMDMwMDg5MTQ4NyAvKiBXZWJzaXRlTWVkaWFT
b3VyY2VQb2xpY3kuaCAqLzsgfTsKIAkJRjRDRjFFOUQyNUU0MERDQzAwMEY5RDczIC8qIEdlc3R1
cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRjFFOUIyNUU0MERDQzAwMEY5RDczIC8qIEdlc3R1
cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oICovOyB9OwogCQlGNEQ1RjUxRDIwNjA4
N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVGNTE5MjA2MDg3QTAwMDM4
QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovOyB9OwotCQlGNEQ1RjUx
RjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUxQjIwNjA4
N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggKi87IH07CisJ
CUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5oICovOyB9OwogCQlGNERCNTRFNjIzMTlFNzMzMDA5RTMxNTUgLyogV0tIaWdobGlnaHRM
b25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJRjRFQzk0RTMyMzU2Q0M1NzAw
MEJCNjE0IC8qIEFwcGxpY2F0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDA0RTI4MjFGN0M3M0QwMDc2NzQxRCAvKiBBcHBs
aWNhdGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUY0RkUwQTNCMjQ2MzJCNjAwMDI2MzFFMSAv
KiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oICovOyB9OwpAQCAt
NjAwNSw4ICs2MDA1LDcgQEAKIAkJRjRDRjFFOUMyNUU0MERDQzAwMEY5RDczIC8qIEdlc3R1cmVS
ZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5tbTsg
cGF0aCA9IGlvcy9HZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0RDVGNTFBMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1RjUx
QjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJCQTgg
LyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tOyBw
YXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOyBwYXRoID0gaW9z
L2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0gaW9z
L1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTUyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0TG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tOyBwYXRo
ID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVj
dE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW07IHBhdGggPSBpb3Mv
Zm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzkxMCw3ICs3OTA5LDYgQEAKIAkJMzc1NEQ1NDExQjNBMjk5ODAwM0E0
QzdGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkzMTU1RUUwQzI2NzNGNEVGMDA4NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggKi8sCiAJCQkJ
RTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmggKi8s
CiAJCQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQSS5oICovLAogCQkJ
CTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29yZVNQ
SS5oICovLApAQCAtNzkyNCw2ICs3OTIyLDcgQEAKIAkJCQk1Q0I2QUU0MzI2MDk3OTlDMDBCNkVE
NUEgLyogUmVhc29uU1BJLmggKi8sCiAJCQkJMEU5N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8qIFNh
ZmVCcm93c2luZ1NQSS5oICovLAogCQkJCTQ0OEFDMjREMjY3MTM1QTYwMEIyODkyMSAvKiBTeW5h
cHNlU1BJLmggKi8sCisJCQkJMzE1NUVFMEMyNjczRjRFRjAwODVFNTlBIC8qIFZpc2lvbktpdFNQ
SS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xMTM4Miw4ICsxMTM4MSw3IEBACiAJCQkJMkVBN0IzRDQyMDI2Q0YyMzAwOUNFNUFD
IC8qIFdLTnVtYmVyUGFkVmlldy5tbSAqLywKIAkJCQkyRUE3QjNDRjIwMjZDRUY4MDA5Q0U1QUMg
LyogV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5oICovLAogCQkJCTJFQTdCM0QwMjAyNkNFRjgw
MDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1tICovLAotCQkJCUY0RDVGNTFC
MjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCAqLywK
LQkJCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyLm1tICovLAorCQkJCUY0RDVGNTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggKi8sCiAJCQkJRjRGNTlBRDQyMDY1QTVDQTAwNkNB
QTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oICovLAogCQkJCUY0RjU5QUQz
MjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8s
CiAJCQkJRjRENUY1MTkyMDYwODdBMDAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyLmggKi8sCkBAIC0xMjAzOCw3ICsxMjAzNiw2IEBACiAJCQkJOTNCMjYxNEUyMjdEMTRC
MTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0IyNjE0RjIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZEQjIyRkI5RDQ4MDAyNjk4NjcgLyogTG9jYWxTdG9y
YWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTU1RUUwRDI2NzNGNEYwMDA4NUU1
OUEgLyogVmlzaW9uS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE3RjJGMzEyNUJGODIw
MDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0Q3RjcxRDQ3RTky
QTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZE
ODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApAQCAt
MTIzNzgsNiArMTIzNzUsNyBAQAogCQkJCTI2ODQwNTUzMThCODZFRDYwMDIyQzM4QiAvKiBWaWV3
VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU0NDE4
Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkRENUE3MjkxRUJGMDhENTAwOUJBNTk3IC8qIFZpc2libGVXZWJQYWdlQ291
bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE1NUVFMEQyNjczRjRGMDAwODVFNTlBIC8qIFZp
c2lvbktpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRjI5RTQxMjBCNDQ0MjAwNTNEMUI5
IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjAyMjREMThDMTZC
OUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRjRDRUYwMThCQzQ4MTgwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyMiw3ICsxMjkyMCw3IEBACiAJCQkJNTEyRjU4RkMx
MkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNw
YWNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAv
KiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVn
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQwMUJDRDE5MDVENTQ5MDBDOUM0NUYgLyogV0tS
ZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
OUUzMjlCMTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE5RTMyOUYxODIyRkVERDAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Q29kZXIuaCBp
biBIZWFkZXJzICovLAo=
</data>
<flag name="commit-queue"
          id="453136"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431377</attachid>
            <date>2021-06-14 16:06:22 -0700</date>
            <delta_ts>2021-06-14 16:24:50 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226988-20210614160621.patch</filename>
            <type>text/plain</type>
            <size>56615</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYWMxNDUxNDU3MGM3MzFm
OWUzZGZkMDg5MzViODE3ODUzMGQ0OTguLmIyMTNhOWViYTQ0YjFjNjQ1MDdhNzRkYmQ3NjFlOGE5
ZDdmOTljZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgbG9naWMgb24gd2F0Y2hPUyBz
dWNoIHRoYXQgd2UncmUgYWJsZSB0byBwcmVzZW50IHRoZSBuZXcgKCJtb2Rlcm4iKSBVSSBmb3Ig
c2NyaWJibGUgdGV4dAorICAgICAgICBpbnB1dCBvbiB3YXRjaE9TIDgsIHJhdGhlciB0aGFuIGxl
Z2FjeSAoaW4tcHJvY2Vzcykgc2NyaWJibGUgVUkuIE92ZXJhbGwsIHRoaXMgcGF0Y2ggcmVtb3Zl
cworICAgICAgICBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWx0b2dldGhlci4gVGhp
cyBoYWQgdHdvIHN1YmNsYXNzZXM6IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciAodXNl
ZCBmb3IKKyAgICAgICAgZm9jdXNlZCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50
cykgYW5kIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZvciB0ZXh0IGlucHV0
IHR5cGVzKS4KKyAgICAgICAgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyIG5vdyBpbmhl
cml0cyBkaXJlY3RseSBmcm9tIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQK
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRzIGZyb20g
UFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXI7IHRoaXMgaW5oZXJpdGFuY2UgZnJv
bQorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBpbnN0ZWFkIG9m
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIGFsbG93cyB0aGUKKyAgICAgICAgV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdG8gc2hvdyB0ZXh0IHN1Z2dlc3Rpb25zIHVzaW5n
IGAtc2V0TWVzc2FnZXM6YCBvbgorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29u
dHJvbGxlciwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGN1c3RvbSBXZWJLaXQgY29kZSB0byBpbnNl
cnQgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgbW92ZSB0
aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG91dCBvZiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIsIGFuZCBpbnRvCisgICAgICAgIGVpdGhlciBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgb3IgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXI6CisKKyAg
ICAgICAgMS4gU3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCB1cGRhdGluZyBjb250ZXh0IHZpZXdz
IChpLmUuIHRoZSBkb21haW4gbmFtZSBoZWFkZXIgdmlldyBpbiBRdWlja2JvYXJkKSA9PgorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAyLiBMb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgbGFuZ3VhZ2Ugc2Vs
ZWN0aW9uIFVJID0+IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDMu
IFN1cHBvcnQgZm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbGxlY3Rpb24gdmlldyBjZWxscyBpbiBR
dWlja2JvYXJkID0+IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMgdG8gY3JlYXRlIGEgUFVJ
Q1RleHRJbnB1dENvbnRleHQgZnJvbSB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3Jt
YXRpb24gb3V0IGludG8gYSBzZXBhcmF0ZQorICAgICAgICBoZWxwZXIgbWV0aG9kLCBgLWNyZWF0
ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0YCwgYW5kIHVzZSBpdCB3aGVuIGJvdGggZGlyZWN0
bHkgbGF1bmNoaW5nIGludG8KKyAgICAgICAgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFuZCBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGZvY3VzZWRGb3JtQ29udHJvbGxlckRpZFVwZGF0ZVN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFsbG93c0xhbmd1YWdlU2VsZWN0aW9uRm9yTGlzdFZpZXdDb250cm9s
bGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRJbnB1dENvbnRleHRGb3JMaXN0
Vmlld0NvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dENvbnRlbnRU
eXBlRm9yVGVzdGluZ10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHZpZXdDb250cm9sbGVy
OmlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJl
bW92ZSB0aGlzIGRlbGVnYXRlIG1ldGhvZCwgd2hpY2ggd2FzIChlZmZlY3RpdmVseSkgdW51c2Vk
IHNpbmNlIHdlIGp1c3QgYXNrIGZvcgorICAgICAgICBgLWlucHV0Q29udGV4dFZpZXdGb3JWaWV3
Q29udHJvbGxlcjpgIGZyb20gdGhlIGlucHV0IGRlbGVnYXRlIGFueXdheXMuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYC1hbGxvd3NM
YW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjpgLgorCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdGV4dENvbnRlbnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgIFJlcGxhY2UgdGhpcyB3aXRoIGAtdGV4dElucHV0Q29udGV4dEZvckxp
c3RWaWV3Q29udHJvbGxlcjpgLCB3aGljaCByZXR1cm5zIGEgd2hvbGUgUFVJQ1RleHRJbnB1dENv
bnRleHQgaW5zdGVhZAorICAgICAgICBvZiBqdXN0IGEgdGV4dCBjb250ZW50IHR5cGUuCisKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbGlzdFZpZXdDb250cm9s
bGVyOmRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92
ZSBzZXZlcmFsIGRlbGVnYXRlIG1ldGhvZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlciB2aWV3V2lsbEFw
cGVhcjpdKToKKworICAgICAgICBSZW1vdmUgc29tZSAoZGVmdW5jdCkgbG9naWMgZm9yIG92ZXJy
aWRpbmcgdGhlIHN0YXR1cyBiYXIgd2hlbiBzaG93aW5nIFF1aWNrYm9hcmQgaW5wdXQgdmlldyBj
b250cm9sbGVycy4gVGhpcworICAgICAgICBzdGF0dXMgYmFyIG1lY2hhbmlzbSAod2hpY2ggd2Fz
IHByZXZpb3VzbHkgdXNlZCB0byBzaG93IGxhYmVsIHRleHQgZm9yIGZvcm0gY29udHJvbHMpIGhh
c24ndCB3b3JrZWQgc2luY2UKKyAgICAgICAgd2F0Y2hPUyA2LCBhbmQgd2UgbmVlZCB0byBpbXBs
ZW1lbnQgdGhpcyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgdXNlIFBVSUNTdGF0dXNCYXJHbG9iYWxD
b250ZXh0Vmlld0Fzc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tR
dWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxl
Y3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0
TWVudUl0ZW1DZWxsIHRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtX
S1NlbGVjdE1lbnVJdGVtQ2VsbCBiYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlXSk6CisgICAgICAg
ICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNlbGwgdG9wVG9MYWJlbEJhc2VsaW5l
U3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNl
bGwgYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKworICAgICAgICBTZWUgYWJv
dmUgY29tbWVudCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGluaXRXaXRoRGVsZWdhdGU6XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9hZENvbnRleHRWaWV3XSk6
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZUNvbnRleHRW
aWV3SWZOZWVkZWRdKToKKworICAgICAgICBNb3ZlIGxvZ2ljIGZvciBzaG93aW5nIGFuZCB1cGRh
dGluZyB0aGUgY29udGV4dCB2aWV3IG91dCBvZiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIsIGFuZCBpbnRvCisgICAgICAgIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLiBTZWUg
Y29tbWVudHMgYWJvdmUuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgcmVxdWlyZXNOdW1lcmljSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgYWRkaXRpb25hbFRyYXlCdXR0b25zXSk6CisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZVRleHRTdWdnZXN0aW9uczpdKToKKyAgICAgICAg
KC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVudFZpZXdIZWlnaHRd
KToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVu
dFZpZXddKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxk
U2hvd0xhbmd1YWdlQnV0dG9uXSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyIHN1cHBvcnRzRGljdGF0aW9uSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxkU2hvd1RyYXlWaWV3XSk6CisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHNob3VsZFNob3dUZXh0RmllbGRdKToKKworICAgICAg
ICBPdmVycmlkZSB0aGlzIGFuZCByZXR1cm4gWUVTIGZvciB0ZXh0IGlucHV0IHR5cGVzIHRoYXQg
ZG9uJ3QgcmVxdWlyZSBhbiBhZGRpdGlvbmFsIG51bWVyaWMgaW5wdXQgdHJheSBidXR0b24uCisg
ICAgICAgIFRoaXMgYWxsb3dzIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIHRv
IHNob3cgYSBuYXRpdmUgdGV4dCBmaWVsZCBjb250YWluaW5nIHRoZSBpbnB1dCB0ZXh0IGluc2lk
ZQorICAgICAgICBxdWlja2JvYXJkLCB3aGljaCAod2hlbiB0YXBwZWQpIHByZXNlbnRzIG1vZGVy
biB0ZXh0IGlucHV0IFVJLgorCisgICAgICAgIFNpbmNlIHNob3dpbmcgdGhlIHRleHQgZmllbGQg
aXMgYXBwYXJlbnRseSBtdXR1YWxseSBleGNsdXNpdmUgdG8gc2hvd2luZyBhIHRyYXkgdmlldywg
d2UgYWRkaXRpb25hbGx5IG92ZXJyaWRlCisgICAgICAgIGAtc2hvdWxkU2hvd1RyYXlWaWV3YCBh
bmQgcmV0dXJuIE5PIGZvciBub24tbnVtZXJpYyB0ZXh0IGlucHV0cy4KKworICAgICAgICAoLVtX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzdXBwb3J0c0Fyb3VldElucHV0XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHZpZXdEaWRMb2FkXSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHdpbGxQcmVzZW50
QXJvdWV0Vmlld0NvbnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgVGhlcmUncyBubyBu
ZWVkIHRvIG92ZXJyaWRlIHRoaXMgZGVsZWdhdGUgbWV0aG9kIGFueW1vcmUsIHNpbmNlIHRoZSBQ
VUlDVGV4dElucHV0Q29udGV4dCdzIGAtaW5pdGlhbFRleHRgIGlzCisgICAgICAgIHN1ZmZpY2ll
bnQgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcmliYmxlIHRleHQgaW5wdXQgVUkgaXMgcHJlcG9wdWxh
dGVkIHdpdGggdGhlIGZvY3VzZWQgdGV4dCBmaWVsZCdzIGluaXRpYWwgdGV4dAorICAgICAgICBj
b250ZW50LgorCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9h
ZFRleHRTdWdnZXN0aW9uc10pOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIHRvIGAt
dXBkYXRlVGV4dFN1Z2dlc3Rpb25zOmAsIGFuZCBtYWtlIGl0IHRha2UgYSBsaXN0IG9mIFVJVGV4
dFN1Z2dlc3Rpb25zLiBUaGlzIG1ha2VzIHRoZSBjb2RlIGEKKyAgICAgICAgYml0IGVhc2llciB0
byBmb2xsb3cgYW5kIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGAtdGV4dFN1Z2dlc3Rpb25zRm9y
TGlzdFZpZXdDb250cm9sbGVyOmAgZGVsZWdhdGUgbWV0aG9kLgorCisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNlbGVjdExpc3RJdGVtQXRJbmRleFBhdGg6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNl
bGVjdExpc3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciBfZGlkU2VsZWN0TGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIG51bWJlck9mTGlzdEl0ZW1zXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGhlaWdodEZvckxpc3RJ
dGVtOndpZHRoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBjZWxsRm9yTGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIGxpc3RJdGVtQ2VsbFJldXNlSWRlbnRpZmllcl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBsaXN0SXRlbUNl
bGxDbGFzc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBpdGVtQ2VsbEZvckxpc3RJdGVtOmZvckluZGV4UGF0aDpdKTogRGVsZXRlZC4KKworICAg
ICAgICBSZW1vdmUgYWxsIHRoaXMgY29kZSBmb3Igc2hvd2luZyB0ZXh0IHN1Z2dlc3Rpb25zIGlu
IFF1aWNrYm9hcmQgVUkuIFNpbmNlIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGlzIG5v
dyBhCisgICAgICAgIHN1YmNsYXNzIG9mIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9s
bGVyLCB3ZSBjYW4gbm93IHNpbXBseSB1c2UgdGhlIGAtbWVzc2FnZXNgIHByb3BlcnR5IG9mIHRv
IHBvcHVsYXRlCisgICAgICAgIHF1aWNrYm9hcmQgd2l0aCB0ZXh0IHN1Z2dlc3Rpb25zLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA2
LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFt3
YXRjaE9TXSBRdWlja2JvYXJkIFVJIGZvciBmb2N1c2VkIHNlbGVjdCBlbGVtZW50cyBzaG91bGQg
bm90IGFsbG93IHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUgaW5wdXQgbGFuZ3VhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oCmlu
ZGV4IDZhMzE3NTE1NWU1YjM5NzJlMjU1NDZmNjE0NTc1MmQ5YTk2YzJkOWMuLjRlODI3NDhmM2U2
Mzc2NzAzMTQ0OGJlMjkyMGIxYmVkYmU0MjEyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaApAQCAtMzksOSArMzksOSBA
QAogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNQaWNrZXJWaWV3X1ByaXZhdGUuaD4KICNpbXBv
cnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIuaD4K
LSNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5o
PgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
U3ViY2xhc3MuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3
U3BlY3MuaD4KKyNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUmVzb3VyY2VzLmg+
CkBAIC0xNjksOSArMTY5LDExIEBAIGV4dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRv
blR5cGVQaWxsOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKmluaXRp
YWxUZXh0OwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgbnVsbGFibGUpIFVJQ29sb3Ig
KnRpbnRDb2xvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFVJVGV4dENvbnRlbnRU
eXBlIHNlY29uZGFyeVRleHRDb250ZW50VHlwZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIE5TSW50ZWdlciBtaW5pbXVtTGVuZ3RoOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgVUlSZXR1cm5LZXlUeXBlIHJldHVybktleVR5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
TlNJbnRlZ2VyIG1pbmltdW1MZW5ndGg7CitAcHJvcGVydHkgKG5vbmF0b21pYykgVUlSZXR1cm5L
ZXlUeXBlIHJldHVybktleVR5cGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0F0
dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRIZWFkZXJUZXh0OworQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgYWNjZXB0c0Vtb2ppOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvdWxk
UHJlc2VudE1vZGVyblRleHRJbnB1dFVJOwogCiBAZW5kCiAKQEAgLTIxOSwxMSArMjIxLDE2IEBA
IGV4dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRvblR5cGVQaWxsOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDVGFibGVWaWV3ICpsaXN0VmlldzsKIEBwcm9wZXJ0
eSAoc3Ryb25nLCBub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDUXVpY2tib2FyZExpc3RWaWV3U3Bl
Y3MgKnNwZWNzOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFVJVGV4dENvbnRlbnRUeXBl
IHRleHRDb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFBVSUNUZXh0
SW5wdXRDb250ZXh0ICp0ZXh0SW5wdXRDb250ZXh0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVn
YXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfREVT
SUdOQVRFRF9JTklUSUFMSVpFUjsKIC0gKHZvaWQpcmVsb2FkTGlzdEl0ZW1zOwogLSAodm9pZCly
ZWxvYWRIZWFkZXJDb250ZW50VmlldzsKIEBlbmQKIAorQGludGVyZmFjZSBQVUlDUXVpY2tib2Fy
ZE1lc3NhZ2VWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheSAqbWVzc2FnZXM7CitAZW5kCisK
IEBpbnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRBcm91ZXRWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJs
ZSkgVUlUZXh0Q29udGVudFR5cGUgdGV4dENvbnRlbnRUeXBlOwogLSAodm9pZClzZXRJbnB1dFRl
eHQ6KG51bGxhYmxlIE5TU3RyaW5nICopaW5wdXRUZXh0IHNlbGVjdGlvblJhbmdlOihOU1Jhbmdl
KXNlbGVjdGlvblJhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDhjZmM2MDc0ZDA1NjJh
YTU4MmM1YzBkMjM0ODhlZTYzNmIyYzlhOWMuLmJkMTAwZWJmZWI0MTJlMDA4ZGU1Y2MzODJkNGUz
Y2FiYmM1ZTRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ1NCw3ICs0NTQsNiBAQCBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVy
UGFkVmlldy5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9sbGVy
Lm1tCi1VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5t
bQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0K
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGM4NzllOWRlMGQxZmQwMDk1YWI3ODBiMTI2M2E4ZjZhYmEyYWEwZGEuLjhjN2Q1
MzM2NmQ3OTVlOTJhNmM1OWIwNGMzYjU5ZDRhZTZhMTk0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
NjQsNyArNjQsNyBAQAogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9uSXRlbUlkZW50aWZpZXJzLmgi
CiAjaW1wb3J0ICJXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUHJl
dmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0
ICJXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlci5oIgpAQCAtNjY2NiwyMiArNjY2NiwyMiBAQCAtICh2b2lkKXJl
bW92ZUZvY3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAgICBbc2VsZiBzZXRJbnB1dERlbGVnYXRl
Om5pbF07CiB9CiAKLSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKLQotLSAoUmV0YWlu
UHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVy
OihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyCistIChSZXRhaW5Q
dHI8UFVJQ1RleHRJbnB1dENvbnRleHQ+KWNyZWF0ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0
CiB7Ci0gICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0TlMoW1tQVUlDUXVpY2ti
b2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gc3VnZ2VzdGlvbnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6W19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXS5jb3VudF0pOwotICAgIGZvciAoVUlU
ZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBbX2Zvcm1JbnB1dFNlc3Npb24gc3VnZ2VzdGlv
bnNdKQotICAgICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OnN1Z2dlc3Rpb24uaW5wdXRUZXh0
XTsKLQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tQVUlDVGV4dElucHV0Q29udGV4dCBh
bGxvY10gaW5pdF0pOwogICAgIFtzZWxmIF91cGRhdGVUZXh0SW5wdXRUcmFpdHM6Y29udGV4dC5n
ZXQoKV07Ci0gICAgW2NvbnRleHQgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlvbnMuZ2V0KCldOwog
ICAgIFtjb250ZXh0IHNldEluaXRpYWxUZXh0Ol9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZh
bHVlXTsKICAgICBbY29udGV4dCBzZXRBY2NlcHRzRW1vamk6WUVTXTsKICAgICBbY29udGV4dCBz
ZXRTaG91bGRQcmVzZW50TW9kZXJuVGV4dElucHV0VUk6WUVTXTsKKyAgICByZXR1cm4gY29udGV4
dDsKK30KKworI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorCistIChSZXRhaW5QdHI8
UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyPilfY3JlYXRlUXVpY2tib2FyZENvbnRyb2xsZXI6KFVJ
Vmlld0NvbnRyb2xsZXIgKilwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIKK3sKKyAgICBhdXRvIHF1
aWNrYm9hcmRDb250cm9sbGVyID0gYWRvcHROUyhbW1BVSUNRdWlja2JvYXJkQ29udHJvbGxlciBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGV4dCA9IHNlbGYuY3JlYXRlUXVpY2tib2FyZFRl
eHRJbnB1dENvbnRleHQ7CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldFF1aWNrYm9hcmRQ
cmVzZW50aW5nVmlld0NvbnRyb2xsZXI6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXTsKICAgICBb
cXVpY2tib2FyZENvbnRyb2xsZXIgc2V0RXhjbHVkZWRGcm9tU2NyZWVuQ2FwdHVyZTpbY29udGV4
dCBpc1NlY3VyZVRleHRFbnRyeV1dOwogICAgIFtxdWlja2JvYXJkQ29udHJvbGxlciBzZXRUZXh0
SW5wdXRDb250ZXh0OmNvbnRleHQuZ2V0KCldOwpAQCAtNjkzMSw3ICs2OTMxLDcgQEAgLSAodm9p
ZClmb2N1c2VkRm9ybUNvbnRyb2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9uczooV0tGb2N1c2VkRm9y
bUNvbnRyb2xWaWV3ICopdmkKICAgICBpZiAoX2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAh
W19wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAK
LSAgICBbKFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3Jl
ZW5JbnB1dFZpZXdDb250cm9sbGVyIHJlbG9hZFRleHRTdWdnZXN0aW9uc107CisgICAgWyhXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3
Q29udHJvbGxlciB1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6W19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3
IHN1Z2dlc3Rpb25zXV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLU2VsZWN0TWVudUxpc3RWaWV3
Q29udHJvbGxlckRlbGVnYXRlCkBAIC05MTk2LDE2ICs5MTk2LDcgQEAgLSAodm9pZClxdWlja2Jv
YXJkSW5wdXRDYW5jZWxsZWQ6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilxdWlja2Jv
YXJkCiAKICNwcmFnbWEgbWFyayAtIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUK
IAotLSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXpl
Ci17Ci0gICAgaWQgPF9XS0lucHV0RGVsZWdhdGU+IGRlbGVnYXRlID0gc2VsZi53ZWJWaWV3Ll9p
bnB1dERlbGVnYXRlOwotICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6Zm9jdXNlZEVsZW1lbnRDb250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdT
aXplOmlucHV0U2Vzc2lvbjopXSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gW2Rl
bGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3SGVp
Z2h0Rm9yRml0dGluZ1NpemU6c2l6ZSBpbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0
KCldOwotfQotCi0tIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3
Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKKy0g
KEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7CiAgICAgc3dpdGNoIChfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKQEAgLTkyNzIsMjAgKzkyNjMsOSBAQCAtIChXS051
bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOihX
S1RleHRJbnB1dExpc3RWaQogICAgIH0KIH0KIAotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5
cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlcgorLSAoUFVJQ1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9y
TGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIKIHsKLSAgICByZXR1cm4gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlja2JvYXJkOwot
fQotCi0tIChOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnNGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcgotewotICAgIHJldHVybiBbX2ZvY3VzZWRGb3JtQ29udHJvbFZpZXcgc3VnZ2VzdGlvbnNd
OwotfQotCi0tICh2b2lkKWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdn
ZXN0aW9uICopc3VnZ2VzdGlvbgotewotICAgIFtzZWxmIGluc2VydFRleHRTdWdnZXN0aW9uOnN1
Z2dlc3Rpb25dOwotICAgIFtzZWxmIGRpc21pc3NRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJBbmRS
ZXZlYWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTpjb250cm9sbGVyXTsKKyAgICByZXR1
cm4gc2VsZi5jcmVhdGVRdWlja2JvYXJkVGV4dElucHV0Q29udGV4dC5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQ
VUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgpAQCAtOTMwMywxMCArOTI4
Myw4IEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25p
emVyICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCi0KLQotCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQorCiAtICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZAog
ewogICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8
fCAhc2VsZi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2Up
CkBAIC0xMDM2Myw3ICsxMDM0MSw3IEBAIC0gKE5TU3RyaW5nICopdGV4dENvbnRlbnRUeXBlRm9y
VGVzdGluZwogewogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAgICAgaWYgKFtfcHJlc2VudGVk
RnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRDb250
ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgKilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOworICAg
ICAgICByZXR1cm4gWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRG
dWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciB0ZXh0SW5wdXRDb250ZXh0XS50ZXh0Q29udGVu
dFR5cGU7CiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCiAgICAgaWYgKF9wcmVzZW50
ZWRRdWlja2JvYXJkQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuIFtfcHJlc2VudGVkUXVpY2ti
b2FyZENvbnRyb2xsZXIgdGV4dElucHV0Q29udGV4dF0udGV4dENvbnRlbnRUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlj
a2VyVmlld0NvbnRyb2xsZXIuaAppbmRleCBlODFlMzQwZWU2M2FhZjY0NzEwMmExYjI5NzlkODUy
MWE2MGEyZWQ5Li43YjVmNDhkNzI4NWRlNzBkMDQ4MTdlMzEwMjFhYjU2NjJiMTJlNGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmll
d0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tE
YXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQ
RVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
LmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBp
bnRlcmZhY2UgV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQppbmRleCA0NzQ4OGZkZTIy
YTllOGQ5MmQxZDkzNWMxMDg3YTUwNTc1ZjE5YjM3Li5hYmQwYTc0ZjY0MTU3NDA5M2UwNzI5OWMz
MmU3NDA1Zjc1YjA2MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCkBAIC0zMDYs
OCArMzA2LDYgQEAgLSAodm9pZCl2aWV3V2lsbEFwcGVhcjooQk9PTClhbmltYXRlZAogICAgIF9z
dGF0dXNCYXJBc3NlcnRpb24gPSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRp
b25dIF90YWtlU3RhdHVzQmFyR2xvYmFsQ29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0aW9uKSBuYW1lOlBVSUNT
dGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFt
ZTpQVUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAg
ICBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwog
fQogCiAtICh2b2lkKXZpZXdEaWRBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5OGFk
MDUxN2Q5ODQ5NmQwMzlkOGNmYjg5ZjYxOTllNWJhYWZhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBv
cnQgIlBlcHBlclVJQ29yZVNQSS5oIgotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RJdGVt
Q2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsCi1AZW5kCi0KLSNpZiBIQVZFKFFVSUNL
Qk9BUkRfQ09MTEVDVElPTl9WSUVXUykKLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdENvbGxl
Y3Rpb25WaWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1D
ZWxsCi1AZW5kCi0jZW5kaWYKLQotQGNsYXNzIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
cjsKLQotQHByb3RvY29sIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUgPFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KLQotLSAoQ0dGbG9hdCl2aWV3Q29udHJv
bGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5wdXRDb250
ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplOwotLSAoVUlWaWV3ICopaW5wdXRDb250
ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlcjsKLS0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxl
cjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmlu
ZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyICopY29udHJvbGxlcjsKLS0gKEJPT0wpc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZp
ZXdGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyOwotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmll
d0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwot
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIDogUFVJ
Q1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0
ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29k
ZXI6KE5TQ29kZXIgKilhRGVjb2RlciBOU19VTkFWQUlMQUJMRTsKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERlbGVnYXRlOihpZDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+
KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUg
TlNfVU5BVkFJTEFCTEU7Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7Ci0KLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZT4gZGVsZWdhdGU7Ci0KLUBlbmQKLQotdm9pZCBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9s
bGVyKFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiwgaWQgPFdLUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyRGVsZWdhdGU+KTsKLQotI2VuZGlmIC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjM4ZDc3OTNmMjNjMjQ3MGFlODY5YmVhMDU3YzcyMmE5NWUxY2JjNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgotCi0jaWYgSEFW
RShQRVBQRVJfVUlfQ09SRSkKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1zdGF0aWMg
Y29uc3QgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Owotc3RhdGljIGNv
bnN0IENHRmxvYXQgaXRlbUNlbGxCYXNlbGluZVRvQm90dG9tID0gODsKLQotQGltcGxlbWVudGF0
aW9uIFdLUXVpY2tib2FyZExpc3RJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNl
bGluZVNwZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsK
LX0KLQotLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJu
IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jaWYgSEFWRShRVUlDS0JP
QVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0
Q29sbGVjdGlvblZpZXdJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNw
ZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0KLQot
LSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0ZW1D
ZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JP
QVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyICgpIDxQVUlDUXVpY2tib2FyZExhbmd1YWdlQ29udHJvbGxlckRlbGVnYXRlPgot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIHsK
LSAgICBCT09MIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlOwotICAgIFJldGFpblB0cjxVSVZpZXc+
IF9jb250ZXh0VmlldzsKLSAgICBSZXRhaW5QdHI8UFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRW
aWV3QXNzZXJ0aW9uPiBfc3RhdHVzQmFyQXNzZXJ0aW9uOwotfQotCi1AZHluYW1pYyBkZWxlZ2F0
ZTsKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIGlmIChzZWxmID0gW3N1cGVy
IGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0aW9uTW9k
ZVRleHRdKQotICAgICAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLQotICAgIHJl
dHVybiBzZWxmOwotfQotCi0tICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKLXsKLSAg
ICBpZiAoIV9jb250ZXh0Vmlld05lZWRzVXBkYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvIHByZXZpb3VzQ29udGV4dFZpZXcgPSBfY29udGV4dFZpZXc7Ci0gICAgaWYgKFtzZWxmLmRl
bGVnYXRlIHNob3VsZERpc3BsYXlJbnB1dENvbnRleHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVy
OnNlbGZdKQotICAgICAgICBfY29udGV4dFZpZXcgPSBbc2VsZi5kZWxlZ2F0ZSBpbnB1dENvbnRl
eHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgZWxzZQotICAgICAgICBfY29udGV4
dFZpZXcgPSBuaWw7Ci0KLSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IE5POwotfQotCi0t
IChCT09MKXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0g
KHZvaWQpdmlld1dpbGxBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld1dp
bGxBcHBlYXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlvbiA9IFtbUFVJQ0Fw
cGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0gX3Rha2VTdGF0dXNCYXJHbG9iYWxDb250
ZXh0QXNzZXJ0aW9uQW5pbWF0ZWQ6Tk9dOwotCi0gICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNl
bnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVy
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZp
Z2F0aW9uKSBuYW1lOlBVSUNTdGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3Rp
ZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVz
QmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBjb25maWd1cmVT
dGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwotfQotCi0tICh2b2lk
KXZpZXdEaWREaXNhcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld0RpZERp
c2FwcGVhcjphbmltYXRlZF07Ci0KLSAgICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gbmlsOwotCi0g
ICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQVUlD
U3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVjdDpu
aWxdOwotICAgIFtjZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOlBVSUNTdGF0dXNCYXJU
aXRsZVRhcHBlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLX0KLQotLSAodm9pZClfaGFuZGxl
U3RhdHVzQmFyTmF2aWdhdGlvbgotewotICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmRJbnB1
dENhbmNlbGxlZDpzZWxmXTsKLX0KLQotLSAodm9pZClyZWxvYWRDb250ZXh0VmlldwotewotICAg
IF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOwotICAgIFtzZWxmIHJlbG9hZEhlYWRlckNv
bnRlbnRWaWV3XTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4K
LQotLSAoUFVJQ0FjdGlvbkNvbnRyb2xsZXIgKilhY3Rpb25Db250cm9sbGVyCi17Ci0gICAgaWYg
KCFbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6c2VsZl0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBQVUlDQWN0aW9uSXRl
bSAqbGFuZ3VhZ2VTZWxlY3Rpb25BY3Rpb25JdGVtID0gW3NlbGYubGFuZ3VhZ2VDb250cm9sbGVy
IGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbUZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAg
IGF1dG8gYWN0aW9uR3JvdXAgPSBhZG9wdE5TKFtbUFVJQ0FjdGlvbkdyb3VwIGFsbG9jXSBpbml0
V2l0aEFjdGlvbkl0ZW1zOkBbIGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSBdIGFjdGlvblN0
eWxlOlBVSUNBY3Rpb25TdHlsZUF1dG9tYXRpY10pOwotICAgIHJldHVybiBhZG9wdE5TKFtbUFVJ
Q0FjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aW9uR3JvdXA6YWN0aW9uR3JvdXAu
Z2V0KCldKS5hdXRvcmVsZWFzZSgpOwotfQotCi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKLQotI3ByYWdtYSBtYXJrIC0gUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xs
ZXJEZWxlZ2F0ZQotCi0tICh2b2lkKWxhbmd1YWdlQ29udHJvbGxlckRpZENoYW5nZVByaW1hcnlM
YW5ndWFnZTooUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIgKilsYW5ndWFnZUNvbnRy
b2xsZXIKLXsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihxdWlja2JvYXJkOmxhbmd1YWdlRGlkQ2hhbmdlOildKQotICAgICAgICBbc2VsZi5kZWxl
Z2F0ZSBxdWlja2JvYXJkOnNlbGYgbGFuZ3VhZ2VEaWRDaGFuZ2U6bGFuZ3VhZ2VDb250cm9sbGVy
LnByaW1hcnlMYW5ndWFnZV07Ci19Ci0KLSNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3ViY2xh
c3NpbmcKLQotLSAoQ0dGbG9hdCloZWFkZXJDb250ZW50Vmlld0hlaWdodAotewotICAgIFtzZWxm
IHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwotCi0gICAgcmV0dXJuIFtfY29udGV4dFZpZXcg
c2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNpemVdLmhlaWdodDsKLX0KLQot
LSAoVUlWaWV3ICopaGVhZGVyQ29udGVudFZpZXcKLXsKLSAgICBbc2VsZiB1cGRhdGVDb250ZXh0
Vmlld0lmTmVlZGVkXTsKLQotICAgIENHRmxvYXQgdmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgo
c2VsZi5jb250ZW50Vmlldy5ib3VuZHMpOwotICAgIENHU2l6ZSBzaXplVGhhdEZpdHMgPSBbX2Nv
bnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXTsKLSAg
ICBbX2NvbnRleHRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoKHZpZXdXaWR0aCAtIHNpemVUaGF0
Rml0cy53aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZpdHMud2lkdGgsIHNpemVUaGF0Rml0cy5oZWln
aHQpXTsKLSAgICBbX2NvbnRleHRWaWV3IGxheW91dFN1YnZpZXdzXTsKLSAgICByZXR1cm4gX2Nv
bnRleHRWaWV3LmdldCgpOwotfQotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVzQmFyRm9y
Q29udHJvbGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8
V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGUpCi17Ci0gICAgLy8g
QW4gaW50ZXJuYWwgY2xpZW50IChlLmcuIFNhZmFyaSdzIG1vZGFsIHNoZWV0KSBtYXkgaGF2ZSBt
b3ZlZCB0aGUgc3RhdHVzIGJhciBvZmZzY3JlZW4uCi0gICAgLy8gQmVmb3JlIHVwZGF0aW5nIHRo
ZSBzdGF0dXMgYmFyLCBtYWtlIHN1cmUgdGhhdCB3ZSBicmluZyB0aGUgc3RhdHVzIGJhciBiYWNr
IHRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvbi4KLSAgICBQVUlDU3RhdHVzQmFyICpzdGF0dXNCYXIg
PSBbUFVJQ0FwcGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0uX3B1aWNTdGF0dXNCYXI7
Ci0gICAgc3RhdHVzQmFyLmZyYW1lID0gQ0dSZWN0IHsgQ0dQb2ludFplcm8sIHN0YXR1c0Jhci5m
cmFtZS5zaXplIH07Ci0KLSAgICBQVUlDQXBwbGljYXRpb25TdGF0dXNCYXJJdGVtICppdGVtID0g
Y29udHJvbGxlci5wdWljX2FwcGxpY2F0aW9uU3RhdHVzQmFySXRlbTsKLSAgICBpdGVtLnRpdGxl
ID0gW2RlbGVnYXRlIGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6Y29udHJvbGxlcl07
Ci0gICAgaXRlbS50aXRsZUNvbG9yID0gW1VJQ29sb3Igc3lzdGVtQmx1ZUNvbG9yXTsKLSAgICBp
dGVtLm5hdlVJQmFja0J1dHRvbkRpc2FibGVkID0gTk87Ci0gICAgaXRlbS5zaG93TmF2aWdhdGlv
blVJID0gWUVTOwotICAgIGl0ZW0udGl0bGVJbnRlcmFjdGl2ZSA9IFlFUzsKLSAgICBbaXRlbSBj
b21taXRDaGFuZ2VzQW5pbWF0ZWQ6Tk9dOwotfQotCi0jZW5kaWYgLy8gSEFWRShQRVBQRVJfVUlf
Q09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwNGNjNWE2OTQwNGVhODUzZTVmZDVmNjBjMDI5ZmVlYmQ4MzNiYzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
SEFWRShQRVBQRVJfVUlfQ09SRSkKKworI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJLmgiCisKK0Bw
cm90b2NvbCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxQVUlDUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+CisKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRG
b3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXI7CistIChOU1N0cmluZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKworQGVuZAorCisjZW5kaWYgLy8g
SEFWRShQRVBQRVJfVUlfQ09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaApp
bmRleCBjODEwMjA4NjY5YjQxNjRhNTFkOTZiNzQ5OGMxMTg4MjgyODliZTM1Li5lNjlmYjAxMTUz
MjUzNGNlZTFmOTIxODE1NmQzMjQxZTc1ZjE1NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3
Q29udHJvbGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JF
KQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQg
IldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogQGNsYXNzIFdLU2VsZWN0
TWVudUxpc3RWaWV3Q29udHJvbGxlcjsKIApAQCAtNDEsOSArNDEsMTEgQEAKIAogQGVuZAogCi1A
aW50ZXJmYWNlIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlcgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xs
ZXIgOiBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1v
ZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2Rl
ciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaykg
aWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggMmQzMDE5ZmQ3NDNhYmU1
MzA5NjcxMjYzNzllYzFlOGViYzgyYzVmZC4uNzhkNGI3MzAwZWEyM2Y0Nzg2YzhiMWJlYmNhM2Q5
Y2Y4ZGU5Mzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC00
Myw4ICs0MywxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQVUlDUXVpY2tib2FyZExp
c3RTZWN0aW9uKSB7CiAgICAgUFVJQ1F1aWNrYm9hcmRMaXN0U2VjdGlvbkNvbnRlbnRVbmF2YWls
YWJsZSwKIH07CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxy
ZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLUBpbnRlcmZhY2UgV0tT
ZWxlY3RNZW51SXRlbUNlbGwgOiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKK3N0YXRpYyBjb25z
dGV4cHIgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Oworc3RhdGljIGNv
bnN0ZXhwciBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7CisKKy8vIEZJWE1F
OiBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzU3ODA3NDQ1PiBsYW5k
cyBpbiBhIGJ1aWxkLgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVJdGVtQ2VsbCA6IFBVSUNRdWlj
a2JvYXJkTGlzdEl0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJSW1h
Z2VWaWV3ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTUyLDcgKzU1LDcgQEAgQGltcGxlbWVudGF0
aW9uIFdLU2VsZWN0TWVudUl0ZW1DZWxsIHsKICAgICBSZXRhaW5QdHI8VUlJbWFnZVZpZXc+IF9p
bWFnZVZpZXc7CiB9CiAKLS0gKGluc3RhbmNldHlwZSkgaW5pdFdpdGhTdHlsZTooVUlUYWJsZVZp
ZXdDZWxsU3R5bGUpc3R5bGUgcmV1c2VJZGVudGlmaWVyOihOU1N0cmluZyAqKXJldXNlSWRlbnRp
ZmllcgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3R5bGU6KFVJVGFibGVWaWV3Q2VsbFN0eWxl
KXN0eWxlIHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilyZXVzZUlkZW50aWZpZXIKIHsKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoU3R5bGU6c3R5bGUgcmV1c2VJZGVudGlmaWVy
OnJldXNlSWRlbnRpZmllcl0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzEsMTEgKzc0LDIx
IEBAIC0gKFVJSW1hZ2VWaWV3ICopaW1hZ2VWaWV3CiAgICAgcmV0dXJuIF9pbWFnZVZpZXcuZ2V0
KCk7CiB9CiAKKy0gKENHRmxvYXQpdG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlCit7CisgICAg
cmV0dXJuIGl0ZW1DZWxsVG9wVG9MYWJlbEJhc2VsaW5lOworfQorCistIChDR0Zsb2F0KWJhc2Vs
aW5lVG9Cb3R0b21TcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRlbUNlbGxCYXNlbGluZVRvQm90
dG9tOworfQorCiBAZW5kCiAKICNpZiBIQVZFKFFVSUNLQk9BUkRfQ09MTEVDVElPTl9WSUVXUykK
IAotQGludGVyZmFjZSBXS1NlbGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogV0tRdWlj
a2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51
Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3
SXRlbUNlbGwKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlJbWFnZVZpZXcgKmlt
YWdlVmlldzsKIEBlbmQKIApAQCAtMTAyLDYgKzExNSwxNiBAQCAtIChVSUltYWdlVmlldyAqKWlt
YWdlVmlldwogICAgIHJldHVybiBfaW1hZ2VWaWV3LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRv
cFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFi
ZWxCYXNlbGluZTsKK30KKworLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7
CisgICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKK30KKwogQGVuZAogCiAjZW5k
aWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCkBAIC0xMTUsNyArMTM4LDcg
QEAgQGR5bmFtaWMgZGVsZWdhdGU7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRl
OihpZCA8V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7
Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICByZXR1
cm4gW3N1cGVyIGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGlj
dGF0aW9uTW9kZVRleHRdOwogfQogCiAtICh2b2lkKXZpZXdEaWRMb2FkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExp
c3RWaWV3Q29udHJvbGxlci5oCmluZGV4IGUxMjkyZmJkMzNhNTdjZjY2N2E0N2VhNGUxMzI1MTQw
MTljZWQ1NzIuLjhlYjJjMzY0MmQ4OTFjN2Q1YTAxNGMyZjZiMjJmYTU3NTA2N2Y2MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBI
QVZFKFBFUFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRy
b2xsZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIK
IAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKICAg
ICBXS051bWJlclBhZElucHV0TW9kZU5vbmUsCkBAIC00MSwxNyArNDEsMjEgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKIEBwcm90b2NvbCBXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlPgogCiAtIChXS051bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2Rl
Rm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJv
bGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNB
cnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250
cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tICh2
b2lkKWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0aW9uICopc3Vn
Z2VzdGlvbjsKLS0gKEJPT0wpYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoUFVJQ1Rl
eHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CistIChVSVZpZXcgKilp
bnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RW
aWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
OworLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjoo
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClzaG91
bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CiAKIEBlbmQKIAotQGludGVyZmFjZSBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlcgorQGludGVyZmFjZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlj
a2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERl
bGVnYXRlOihpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdh
dGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKHZvaWQpcmVsb2FkVGV4dFN1Z2dlc3Rp
b25zOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0
YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOworLSAodm9pZCl1
cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dl
c3Rpb25zOworLSAodm9pZClyZWxvYWRDb250ZXh0VmlldzsKIAogQHByb3BlcnR5IChub25hdG9t
aWMsIHdlYWspIGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxl
Z2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDFiYjEyM2I5
YjFiYzZkMTA3M2UwMmZlNjhlOGNiMTM5YTkxMzdhZmQuLjM0OWUxNjQ2N2UwODFjZGNhNTI1OGJm
N2YyYTY0OTdhZTdkZWM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0K
QEAgLTMxLDExICszMSw5IEBACiAjaW1wb3J0ICJXS051bWJlclBhZFZpZXdDb250cm9sbGVyLmgi
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHRleHRT
dWdnZXN0aW9uQnV0dG9uSGVpZ2h0ID0gNDQ7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB0ZXh0U3Vn
Z2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbiA9IDk7Ci1zdGF0aWMgTlNTdHJpbmcgKnRleHRT
dWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9IEAiV2ViS2l0UXVpY2tib2FyZFRleHRTdWdn
ZXN0aW9uQ2VsbCI7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciB7CisgICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKKyAgICBSZXRhaW5QdHI8
VUlWaWV3PiBfY29udGV4dFZpZXc7CiAgICAgUmV0YWluUHRyPFdLTnVtYmVyUGFkVmlld0NvbnRy
b2xsZXI+IF9udW1iZXJQYWRWaWV3Q29udHJvbGxlcjsKIH0KIApAQCAtNDMsMzIgKzQxLDQyIEBA
IEBkeW5hbWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZToo
aWQgPFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0g
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXSkpCisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1v
ZGU6UFVJQ0RpY3RhdGlvbk1vZGVUZXh0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBz
ZWxmLnRleHRDb250ZW50VHlwZSA9IFtzZWxmLmRlbGVnYXRlIHRleHRDb250ZW50VHlwZUZvckxp
c3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKKyAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlF
UzsKKyAgICBzZWxmLnRleHRJbnB1dENvbnRleHQgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0SW5wdXRD
b250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogICAgIHJldHVybiBzZWxmOwogfQog
Ci0tICh2b2lkKXZpZXdEaWRMb2FkCistICh2b2lkKXJlbG9hZENvbnRleHRWaWV3CiB7Ci0gICAg
W3N1cGVyIHZpZXdEaWRMb2FkXTsKLQotICAgIHNlbGYuaGVhZGVyVmlldy5oaWRkZW4gPSBZRVM7
CisgICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZRVM7CisgICAgW3NlbGYgcmVsb2FkSGVh
ZGVyQ29udGVudFZpZXddOwogfQogCi0tICh2b2lkKXdpbGxQcmVzZW50QXJvdWV0Vmlld0NvbnRy
b2xsZXI6KFBVSUNRdWlja2JvYXJkQXJvdWV0Vmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJkCist
ICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKIHsKLSAgICBOU1N0cmluZyAqaW5pdGlh
bFRleHQgPSBbc2VsZi5kZWxlZ2F0ZSBpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjpzZWxm
XTsKLSAgICBpZiAoaW5pdGlhbFRleHQubGVuZ3RoKQotICAgICAgICBbcXVpY2tib2FyZCBzZXRJ
bnB1dFRleHQ6aW5pdGlhbFRleHQgc2VsZWN0aW9uUmFuZ2U6TlNNYWtlUmFuZ2UoaW5pdGlhbFRl
eHQubGVuZ3RoLCAwKV07CisgICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3
OworICAgIGlmIChbc2VsZi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zv
ckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSkKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYu
ZGVsZWdhdGUgaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOworICAgIGVs
c2UKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gbmlsOwogCi0gICAgcXVpY2tib2FyZC5taW5UZXh0
TGVuZ3RoRm9yRW5hYmxpbmdBY2NlcHQgPSAwOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRl
ID0gTk87Cit9CisKKy0gKEJPT0wpcmVxdWlyZXNOdW1lcmljSW5wdXQKK3sKKyAgICByZXR1cm4g
W3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxm
XSAhPSBXS051bWJlclBhZElucHV0TW9kZU5vbmU7CiB9CiAKIC0gKE5TQXJyYXkgKilhZGRpdGlv
bmFsVHJheUJ1dHRvbnMKIHsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9k
ZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmUp
CisgICAgaWYgKCFzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0KQogICAgICAgICByZXR1cm4gQFsg
XTsKIAogI2lmIEhBVkUoUFVJQ19CVVRUT05fVFlQRV9QSUxMKQpAQCAtOTksOSArMTA3LDE0IEBA
IC0gKHZvaWQpcHJlc2VudE51bWJlclBhZFZpZXdDb250cm9sbGVyCiAgICAgW3NlbGYgcHJlc2Vu
dFZpZXdDb250cm9sbGVyOl9udW1iZXJQYWRWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZ
RVMgY29tcGxldGlvbjpuaWxdOwogfQogCi0tICh2b2lkKXJlbG9hZFRleHRTdWdnZXN0aW9ucwor
LSAodm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAq
PiAqKXN1Z2dlc3Rpb25zCiB7Ci0gICAgW3NlbGYgcmVsb2FkTGlzdEl0ZW1zXTsKKyAgICBhdXRv
IG1lc3NhZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5TQXR0cmlidXRlZFN0cmluZyAq
PiBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzdWdnZXN0aW9ucy5jb3VudF0pOworICAgIGZvciAo
VUlUZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBzdWdnZXN0aW9ucykgeworICAgICAgICBh
dXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpzdWdnZXN0aW9uLmRpc3BsYXlUZXh0XSk7CisgICAgICAgIFttZXNz
YWdlcyBhZGRPYmplY3Q6YXR0cmlidXRlZFN0cmluZy5nZXQoKV07CisgICAgfQorICAgIHNlbGYu
bWVzc2FnZXMgPSBtZXNzYWdlcy5nZXQoKTsKIH0KIAogLSAodm9pZCllbnRlclRleHQ6KE5TU3Ry
aW5nICopdGV4dApAQCAtMTExLDEwOSArMTI0LDQ3IEBAIC0gKHZvaWQpZW50ZXJUZXh0OihOU1N0
cmluZyAqKXRleHQKIAogI3ByYWdtYSBtYXJrIC0gUXVpY2tib2FyZCBzdWJjbGFzc2luZwogCi0t
IChCT09MKXN1cHBvcnRzRGljdGF0aW9uSW5wdXQKKy0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZp
ZXdIZWlnaHQKIHsKLSAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dzRGljdGF0aW9uSW5w
dXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci19Ci0KLS0gKHZvaWQpZGlkU2VsZWN0TGlz
dEl0ZW1BdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKLXsKLSAgICBbc2VsZiBf
ZGlkU2VsZWN0TGlzdEl0ZW06aW5kZXhQYXRoLnJvd107Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIG1l
dGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMg
aW4gYSBidWlsZC4KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVt
YmVyCi17Ci0gICAgW3NlbGYgX2RpZFNlbGVjdExpc3RJdGVtOml0ZW1OdW1iZXJdOwotfQotCi0t
ICh2b2lkKV9kaWRTZWxlY3RMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIKLXsKLSAgICBO
U0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtzZWxmLmRlbGVn
YXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAgICBpZiAo
dGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGl0ZW1OdW1i
ZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIFtzZWxmIHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwogCi0gICAgW3NlbGYu
ZGVsZWdhdGUgbGlzdFZpZXdDb250cm9sbGVyOnNlbGYgZGlkU2VsZWN0VGV4dFN1Z2dlc3Rpb246
W3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdXTsKKyAgICByZXR1cm4g
W19jb250ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3VuZHMuc2l6ZV0u
aGVpZ2h0OwogfQogCi0tIChOU0ludGVnZXIpbnVtYmVyT2ZMaXN0SXRlbXMKKy0gKFVJVmlldyAq
KWhlYWRlckNvbnRlbnRWaWV3CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIHRleHRTdWdn
ZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXS5jb3VudDsKLX0KKyAgICBbc2VsZiB1
cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKIAotLSAoQ0dGbG9hdCloZWlnaHRGb3JMaXN0SXRl
bTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIgd2lkdGg6KENHRmxvYXQpd2lkdGgKLXsKLSAgICByZXR1
cm4gdGV4dFN1Z2dlc3Rpb25CdXR0b25IZWlnaHQ7CisgICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBD
R1JlY3RHZXRXaWR0aChzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcyk7CisgICAgQ0dTaXplIHNpemVU
aGF0Rml0cyA9IFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91
bmRzLnNpemVdOworICAgIFtfY29udGV4dFZpZXcgc2V0RnJhbWU6Q0dSZWN0TWFrZSgodmlld1dp
ZHRoIC0gc2l6ZVRoYXRGaXRzLndpZHRoKSAvIDIsIDAsIHNpemVUaGF0Rml0cy53aWR0aCwgc2l6
ZVRoYXRGaXRzLmhlaWdodCldOworICAgIFtfY29udGV4dFZpZXcgbGF5b3V0U3Vidmlld3NdOwor
ICAgIHJldHVybiBfY29udGV4dFZpZXcuZ2V0KCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4g
YSBidWlsZC4KLS0gKFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsICopY2VsbEZvckxpc3RJdGVt
OihOU0ludGVnZXIpaXRlbU51bWJlcgorLSAoQk9PTClzaG91bGRTaG93TGFuZ3VhZ2VCdXR0b24K
IHsKLSAgICBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtz
ZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsK
LSAgICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+
KGl0ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIH0KLQotICAgIFVJVGV4dFN1Z2dlc3Rpb24gKnRleHRTdWdnZXN0aW9u
ID0gW3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdOwotICAgIGF1dG8g
cmV1c2FibGVDZWxsID0gcmV0YWluUHRyKFtzZWxmLmxpc3RWaWV3IGRlcXVldWVSZXVzYWJsZUNl
bGxXaXRoSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdKTsKLSAg
ICBpZiAoIXJldXNhYmxlQ2VsbCkgewotICAgICAgICByZXVzYWJsZUNlbGwgPSBhZG9wdE5TKFtb
V0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxsIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3
Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJ
ZGVudGlmaWVyXSk7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxhYmVsXS5udW1iZXJPZkxp
bmVzID0gMTsKLSAgICAgICAgW3JldXNhYmxlQ2VsbCBpdGVtTGFiZWxdLmxpbmVCcmVha01vZGUg
PSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRl
bUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRydW5jYXRpb24gPSBZRVM7Ci0gICAg
fQotCi0gICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0aChzZWxmLmxpc3RWaWV3
LmJvdW5kcyk7Ci0gICAgW3JldXNhYmxlQ2VsbCBjb25maWd1cmVGb3JUZXh0OnRleHRTdWdnZXN0
aW9uLmRpc3BsYXlUZXh0IHdpZHRoOnZpZXdXaWR0aF07Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCBi
ZWhhdmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2VzIHRoZSB0ZXh0IGxhYmVs
IHRvIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBBZGp1c3QgZm9yIHRoaXMg
Ynkgc2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBmaXQgdGhlIGJvdW5kcyBv
ZiB0aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0uZnJhbWUgPSBVSVJlY3RJ
bnNldChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAsIHRleHRTdWdnZXN0aW9u
TGFiZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1h
cmdpbik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFzZSgpOworICAgIHJldHVy
biBbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJv
bGxlcjpzZWxmXTsKIH0KIAotLSAoTlNTdHJpbmcgKilsaXN0SXRlbUNlbGxSZXVzZUlkZW50aWZp
ZXIKKy0gKEJPT0wpc3VwcG9ydHNEaWN0YXRpb25JbnB1dAogewotICAgIHJldHVybiB0ZXh0U3Vn
Z2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7CisgICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIGFs
bG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogfQogCi0jaWYg
SEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLS0gKENsYXNzKWxpc3RJdGVtQ2Vs
bENsYXNzCistIChCT09MKXNob3VsZFNob3dUcmF5VmlldwogewotICAgIHJldHVybiBbV0tRdWlj
a2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwgY2xhc3NdOworICAgIHJldHVybiBzZWxm
LnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0tIChQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0
aW9uVmlld0l0ZW1DZWxsICopaXRlbUNlbGxGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1i
ZXIgZm9ySW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAorLSAoQk9PTClzaG91bGRT
aG93VGV4dEZpZWxkCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0U3Vn
Z2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNfY2Fz
dDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRleHRTdWdnZXN0aW9uICp0
ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVtYmVy
XTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2VsZi5jb2xsZWN0aW9uVmll
dyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aFJldXNlSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNl
bGxSZXVzZUlkZW50aWZpZXIgZm9ySW5kZXhQYXRoOmluZGV4UGF0aF0pOwotCi0gICAgW3JldXNh
YmxlQ2VsbCBib2R5TGFiZWxdLm51bWJlck9mTGluZXMgPSAxOwotICAgIFtyZXVzYWJsZUNlbGwg
Ym9keUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOwot
ICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRy
dW5jYXRpb24gPSBZRVM7Ci0gICAgW3JldXNhYmxlQ2VsbCBzZXRUZXh0OnRleHRTdWdnZXN0aW9u
LmRpc3BsYXlUZXh0XTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIC1jb25maWd1
cmVGb3JUZXh0OndpZHRoOiBjYXVzZXMgdGhlIHRleHQgbGFiZWwgdG8gcnVuIG9mZiB0aGUgZW5k
IG9mIHRoZSBjZWxsLgotICAgIC8vIEFkanVzdCBmb3IgdGhpcyBieSBzaHJpbmtpbmcgdGhlIGxh
YmVsIHdpZHRoIHRvIGFjdHVhbGx5IGZpdCB0aGUgYm91bmRzIG9mIHRoZSBjZWxsLgotICAgIFty
ZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5mcmFtZSA9IFVJUmVjdEluc2V0KFtyZXVzYWJsZUNlbGwg
Y29udGVudFZpZXddLmJvdW5kcywgMCwgdGV4dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJn
aW4sIDAsIHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luKTsKLSAgICByZXR1cm4g
cmV1c2FibGVDZWxsLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuICFzZWxmLnJlcXVpcmVzTnVt
ZXJpY0lucHV0OwogfQogCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklF
V1MpCi0KIC0gKEJPT0wpc3VwcG9ydHNBcm91ZXRJbnB1dAogewotICAgIHJldHVybiBbc2VsZi5k
ZWxlZ2F0ZSBudW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdID09IFdL
TnVtYmVyUGFkSW5wdXRNb2RlTm9uZTsKKyAgICByZXR1cm4gIXNlbGYucmVxdWlyZXNOdW1lcmlj
SW5wdXQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKaW5kZXggNjU1OGNk
ZGU4MjJjYmQ5NWZiYjA3MjkzYTZkYmYzZjg2Y2NjNWZhMy4uOWE3ZWExMDBkZWU0MTZhOWJlNjc4
YWJlNzI0NTAyOTU0MGE1ZGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKQEAgLTI1
LDcgKzI1LDcgQEAKIAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAKLSNpbXBvcnQgIldLUXVp
Y2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLVGltZVBpY2tlclZpZXdDb250cm9s
bGVyIDogUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZTkzMGI2YjljNzcyOWIxMDVk
OWQ2MGM2Y2M4MjQyZWEyZWVmMWIyLi42YjE0NWZmOWM2NWY2YmJlNjhmN2M1Mjc0ZjNhNzExMTQ5
ZmYzODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwMzgsNyArMjAzOCw3IEBACiAJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4NyAv
KiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0IwOUU0MjI1RDVBMDMwMDg5MTQ4NyAvKiBXZWJzaXRlTWVk
aWFTb3VyY2VQb2xpY3kuaCAqLzsgfTsKIAkJRjRDRjFFOUQyNUU0MERDQzAwMEY5RDczIC8qIEdl
c3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRjFFOUIyNUU0MERDQzAwMEY5RDczIC8qIEdl
c3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oICovOyB9OwogCQlGNEQ1RjUxRDIw
NjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVGNTE5MjA2MDg3QTAw
MDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovOyB9OwotCQlGNEQ1
RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUxQjIw
NjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggKi87IH07
CisJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS5oICovOyB9OwogCQlGNERCNTRFNjIzMTlFNzMzMDA5RTMxNTUgLyogV0tIaWdobGln
aHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJRjRFQzk0RTMyMzU2Q0M1
NzAwMEJCNjE0IC8qIEFwcGxpY2F0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDA0RTI4MjFGN0M3M0QwMDc2NzQxRCAvKiBB
cHBsaWNhdGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUY0RkUwQTNCMjQ2MzJCNjAwMDI2MzFF
MSAvKiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oICovOyB9OwpA
QCAtNjAwNSw4ICs2MDA1LDcgQEAKIAkJRjRDRjFFOUMyNUU0MERDQzAwMEY5RDczIC8qIEdlc3R1
cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5t
bTsgcGF0aCA9IGlvcy9HZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1z
L1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0RDVGNTFBMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1
RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2tib2FyZExpc3RWaWV3Q29u
dHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJC
QTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1t
OyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOyBwYXRoID0g
aW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0g
aW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTUyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tOyBw
YXRoID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1Nl
bGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW07IHBhdGggPSBp
b3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzkxMCw3ICs3OTA5LDYgQEAKIAkJMzc1NEQ1NDExQjNBMjk5ODAw
M0E0QzdGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQkzMTU1RUUwQzI2NzNGNEVGMDA4NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggKi8sCiAJ
CQkJRTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgg
Ki8sCiAJCQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQSS5oICovLAog
CQkJCTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29y
ZVNQSS5oICovLApAQCAtNzkyNCw2ICs3OTIyLDcgQEAKIAkJCQk1Q0I2QUU0MzI2MDk3OTlDMDBC
NkVENUEgLyogUmVhc29uU1BJLmggKi8sCiAJCQkJMEU5N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8q
IFNhZmVCcm93c2luZ1NQSS5oICovLAogCQkJCTQ0OEFDMjREMjY3MTM1QTYwMEIyODkyMSAvKiBT
eW5hcHNlU1BJLmggKi8sCisJCQkJMzE1NUVFMEMyNjczRjRFRjAwODVFNTlBIC8qIFZpc2lvbktp
dFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0xMTM4Miw4ICsxMTM4MSw3IEBACiAJCQkJMkVBN0IzRDQyMDI2Q0YyMzAwOUNF
NUFDIC8qIFdLTnVtYmVyUGFkVmlldy5tbSAqLywKIAkJCQkyRUE3QjNDRjIwMjZDRUY4MDA5Q0U1
QUMgLyogV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5oICovLAogCQkJCTJFQTdCM0QwMjAyNkNF
RjgwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1tICovLAotCQkJCUY0RDVG
NTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCAq
LywKLQkJCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyLm1tICovLAorCQkJCUY0RDVGNTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggKi8sCiAJCQkJRjRGNTlBRDQyMDY1QTVDQTAw
NkNBQTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oICovLAogCQkJCUY0RjU5
QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0g
Ki8sCiAJCQkJRjRENUY1MTkyMDYwODdBMDAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyLmggKi8sCkBAIC0xMjAzOCw3ICsxMjAzNiw2IEBACiAJCQkJOTNCMjYxNEUyMjdE
MTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0IyNjE0RjIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZEQjIyRkI5RDQ4MDAyNjk4NjcgLyogTG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTU1RUUwRDI2NzNGNEYwMDA4
NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE3RjJGMzEyNUJG
ODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0Q3RjcxRDQ3
RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMTIzNzgsNiArMTIzNzUsNyBAQAogCQkJCTI2ODQwNTUzMThCODZFRDYwMDIyQzM4QiAvKiBW
aWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU0
NDE4Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRENUE3MjkxRUJGMDhENTAwOUJBNTk3IC8qIFZpc2libGVXZWJQYWdl
Q291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE1NUVFMEQyNjczRjRGMDAwODVFNTlBIC8q
IFZpc2lvbktpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRjI5RTQxMjBCNDQ0MjAwNTNE
MUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjAyMjREMThD
MTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRjRDRUYwMThCQzQ4MTgwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyMiw3ICsxMjkyMCw3IEBACiAJCQkJNTEyRjU4
RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlv
blNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJB
OCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQwMUJDRDE5MDVENTQ5MDBDOUM0NUYgLyog
V0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOUUzMjlCMTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5RTMyOUYxODIyRkVERDAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Q29kZXIu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBi
L1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggZDJjMjBiOTU2NjIwOWM1NWM3MTAzNDJl
N2Q4OWJkMDMyYzkwYTJhYi4uOWFiN2FlNzBiMTExNGQyZWEzZjA4OWEzMmJkZmRhMDU2YmQ3ODBi
YiAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJy
YXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDYtMTQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFJlZW5hYmxl
IG1vZGVybiB0ZXh0IGlucHV0IFVJIGZvciBub24tbnVtZXJpYyB0ZXh0IGlucHV0IHR5cGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODgKKyAg
ICAgICAgcmRhcjovLzc4MTAyOTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1Bl
cHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZDoKKwogMjAyMS0wMS0wNCAgSmVm
ZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHVzZXItdmlzaWJs
ZSBjb3B5cmlnaHQgc3RyaW5ncyB0byBpbmNsdWRlIDIwMjEKZGlmZiAtLWdpdCBhL1dlYktpdExp
YnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29y
ZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2
YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVy
VUlDb3JlLnRiZAppbmRleCBmOTQxYTllYWI3NWNkMGIxNDhmNDQ5YTU3Mzk4MDJmZWNiZmE0Mjc2
Li44YWYyOWMxOWMyOGQ2OTdkOGIxZTYwOTcxMTQ1MjE5NDI3MGZhYzdhIDEwMDY0NAotLS0gYS9X
ZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvNy9QZXBw
ZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQKKysrIGIvV2ViS2l0TGlicmFyaWVz
L1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzcvUGVwcGVyVUlDb3JlLmZyYW1l
d29yay9QZXBwZXJVSUNvcmUudGJkCkBAIC04LDUgKzgsNSBAQCBleHBvcnRzOgogICAgIG9iamMt
Y2xhc3NlczogICAgWyBQVUlDUXVpY2tib2FyZExpc3RUcmF5QnV0dG9uLCBQVUlDQWN0aW9uR3Jv
dXAsIFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsLCBQVUlDQWN0aW9uQ29udHJvbGxlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgUFVJQ0Nyb3duSW5wdXRTZXF1ZW5jZXIsIFBVSUNQaWNrZXJW
aWV3LCBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbCwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0Nv
bnRyb2xsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIFBVSUNBcHBsaWNhdGlvbiwgUFVJQ1Jl
c291cmNlcywgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJQ1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFBVSUNRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXIsIFBVSUNQaWNrZXJWaWV3IF0KKyAgICAgICAgICAgICAgICAgICAgICAgUFVJ
Q1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJQ1BpY2tlclZpZXcsIFBVSUNUZXh0SW5wdXRD
b250ZXh0IF0KIC4uLgo=
</data>
<flag name="commit-queue"
          id="453139"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431378</attachid>
            <date>2021-06-14 16:14:24 -0700</date>
            <delta_ts>2021-06-15 12:01:18 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-226988-20210614161423.patch</filename>
            <type>text/plain</type>
            <size>56652</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkYWMxNDUxNDU3MGM3MzFm
OWUzZGZkMDg5MzViODE3ODUzMGQ0OTguLmIyMTNhOWViYTQ0YjFjNjQ1MDdhNzRkYmQ3NjFlOGE5
ZDdmOTljZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQwIEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgbG9naWMgb24gd2F0Y2hPUyBz
dWNoIHRoYXQgd2UncmUgYWJsZSB0byBwcmVzZW50IHRoZSBuZXcgKCJtb2Rlcm4iKSBVSSBmb3Ig
c2NyaWJibGUgdGV4dAorICAgICAgICBpbnB1dCBvbiB3YXRjaE9TIDgsIHJhdGhlciB0aGFuIGxl
Z2FjeSAoaW4tcHJvY2Vzcykgc2NyaWJibGUgVUkuIE92ZXJhbGwsIHRoaXMgcGF0Y2ggcmVtb3Zl
cworICAgICAgICBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWx0b2dldGhlci4gVGhp
cyBoYWQgdHdvIHN1YmNsYXNzZXM6IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciAodXNl
ZCBmb3IKKyAgICAgICAgZm9jdXNlZCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50
cykgYW5kIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZvciB0ZXh0IGlucHV0
IHR5cGVzKS4KKyAgICAgICAgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyIG5vdyBpbmhl
cml0cyBkaXJlY3RseSBmcm9tIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQK
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRzIGZyb20g
UFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXI7IHRoaXMgaW5oZXJpdGFuY2UgZnJv
bQorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBpbnN0ZWFkIG9m
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIGFsbG93cyB0aGUKKyAgICAgICAgV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdG8gc2hvdyB0ZXh0IHN1Z2dlc3Rpb25zIHVzaW5n
IGAtc2V0TWVzc2FnZXM6YCBvbgorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29u
dHJvbGxlciwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGN1c3RvbSBXZWJLaXQgY29kZSB0byBpbnNl
cnQgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgbW92ZSB0
aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG91dCBvZiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIsIGFuZCBpbnRvCisgICAgICAgIGVpdGhlciBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgb3IgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXI6CisKKyAg
ICAgICAgMS4gU3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCB1cGRhdGluZyBjb250ZXh0IHZpZXdz
IChpLmUuIHRoZSBkb21haW4gbmFtZSBoZWFkZXIgdmlldyBpbiBRdWlja2JvYXJkKSA9PgorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAyLiBMb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgbGFuZ3VhZ2Ugc2Vs
ZWN0aW9uIFVJID0+IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDMu
IFN1cHBvcnQgZm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbGxlY3Rpb24gdmlldyBjZWxscyBpbiBR
dWlja2JvYXJkID0+IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMgdG8gY3JlYXRlIGEgUFVJ
Q1RleHRJbnB1dENvbnRleHQgZnJvbSB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3Jt
YXRpb24gb3V0IGludG8gYSBzZXBhcmF0ZQorICAgICAgICBoZWxwZXIgbWV0aG9kLCBgLWNyZWF0
ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0YCwgYW5kIHVzZSBpdCB3aGVuIGJvdGggZGlyZWN0
bHkgbGF1bmNoaW5nIGludG8KKyAgICAgICAgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFuZCBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGZvY3VzZWRGb3JtQ29udHJvbGxlckRpZFVwZGF0ZVN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGFsbG93c0xhbmd1YWdlU2VsZWN0aW9uRm9yTGlzdFZpZXdDb250cm9s
bGVyOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRJbnB1dENvbnRleHRGb3JMaXN0
Vmlld0NvbnRyb2xsZXI6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdGV4dENvbnRlbnRU
eXBlRm9yVGVzdGluZ10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHZpZXdDb250cm9sbGVy
OmlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJl
bW92ZSB0aGlzIGRlbGVnYXRlIG1ldGhvZCwgd2hpY2ggd2FzIChlZmZlY3RpdmVseSkgdW51c2Vk
IHNpbmNlIHdlIGp1c3QgYXNrIGZvcgorICAgICAgICBgLWlucHV0Q29udGV4dFZpZXdGb3JWaWV3
Q29udHJvbGxlcjpgIGZyb20gdGhlIGlucHV0IGRlbGVnYXRlIGFueXdheXMuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYC1hbGxvd3NM
YW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjpgLgorCisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgdGV4dENvbnRlbnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgIFJlcGxhY2UgdGhpcyB3aXRoIGAtdGV4dElucHV0Q29udGV4dEZvckxp
c3RWaWV3Q29udHJvbGxlcjpgLCB3aGljaCByZXR1cm5zIGEgd2hvbGUgUFVJQ1RleHRJbnB1dENv
bnRleHQgaW5zdGVhZAorICAgICAgICBvZiBqdXN0IGEgdGV4dCBjb250ZW50IHR5cGUuCisKKyAg
ICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgbGlzdFZpZXdDb250cm9s
bGVyOmRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92
ZSBzZXZlcmFsIGRlbGVnYXRlIG1ldGhvZHMgdGhhdCBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlciB2aWV3V2lsbEFw
cGVhcjpdKToKKworICAgICAgICBSZW1vdmUgc29tZSAoZGVmdW5jdCkgbG9naWMgZm9yIG92ZXJy
aWRpbmcgdGhlIHN0YXR1cyBiYXIgd2hlbiBzaG93aW5nIFF1aWNrYm9hcmQgaW5wdXQgdmlldyBj
b250cm9sbGVycy4gVGhpcworICAgICAgICBzdGF0dXMgYmFyIG1lY2hhbmlzbSAod2hpY2ggd2Fz
IHByZXZpb3VzbHkgdXNlZCB0byBzaG93IGxhYmVsIHRleHQgZm9yIGZvcm0gY29udHJvbHMpIGhh
c24ndCB3b3JrZWQgc2luY2UKKyAgICAgICAgd2F0Y2hPUyA2LCBhbmQgd2UgbmVlZCB0byBpbXBs
ZW1lbnQgdGhpcyBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgdXNlIFBVSUNTdGF0dXNCYXJHbG9iYWxD
b250ZXh0Vmlld0Fzc2VydGlvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tR
dWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlci5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxl
Y3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLU2VsZWN0
TWVudUl0ZW1DZWxsIHRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtX
S1NlbGVjdE1lbnVJdGVtQ2VsbCBiYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlXSk6CisgICAgICAg
ICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNlbGwgdG9wVG9MYWJlbEJhc2VsaW5l
U3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNl
bGwgYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKworICAgICAgICBTZWUgYWJv
dmUgY29tbWVudCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgt
W1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGluaXRXaXRoRGVsZWdhdGU6XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9hZENvbnRleHRWaWV3XSk6
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZUNvbnRleHRW
aWV3SWZOZWVkZWRdKToKKworICAgICAgICBNb3ZlIGxvZ2ljIGZvciBzaG93aW5nIGFuZCB1cGRh
dGluZyB0aGUgY29udGV4dCB2aWV3IG91dCBvZiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIsIGFuZCBpbnRvCisgICAgICAgIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLiBTZWUg
Y29tbWVudHMgYWJvdmUuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgcmVxdWlyZXNOdW1lcmljSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgYWRkaXRpb25hbFRyYXlCdXR0b25zXSk6CisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIHVwZGF0ZVRleHRTdWdnZXN0aW9uczpdKToKKyAgICAgICAg
KC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVudFZpZXdIZWlnaHRd
KToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVhZGVyQ29udGVu
dFZpZXddKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxk
U2hvd0xhbmd1YWdlQnV0dG9uXSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyIHN1cHBvcnRzRGljdGF0aW9uSW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgc2hvdWxkU2hvd1RyYXlWaWV3XSk6CisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHNob3VsZFNob3dUZXh0RmllbGRdKToKKworICAgICAg
ICBPdmVycmlkZSB0aGlzIGFuZCByZXR1cm4gWUVTIGZvciB0ZXh0IGlucHV0IHR5cGVzIHRoYXQg
ZG9uJ3QgcmVxdWlyZSBhbiBhZGRpdGlvbmFsIG51bWVyaWMgaW5wdXQgdHJheSBidXR0b24uCisg
ICAgICAgIFRoaXMgYWxsb3dzIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIHRv
IHNob3cgYSBuYXRpdmUgdGV4dCBmaWVsZCBjb250YWluaW5nIHRoZSBpbnB1dCB0ZXh0IGluc2lk
ZQorICAgICAgICBxdWlja2JvYXJkLCB3aGljaCAod2hlbiB0YXBwZWQpIHByZXNlbnRzIG1vZGVy
biB0ZXh0IGlucHV0IFVJLgorCisgICAgICAgIFNpbmNlIHNob3dpbmcgdGhlIHRleHQgZmllbGQg
aXMgYXBwYXJlbnRseSBtdXR1YWxseSBleGNsdXNpdmUgdG8gc2hvd2luZyBhIHRyYXkgdmlldywg
d2UgYWRkaXRpb25hbGx5IG92ZXJyaWRlCisgICAgICAgIGAtc2hvdWxkU2hvd1RyYXlWaWV3YCBh
bmQgcmV0dXJuIE5PIGZvciBub24tbnVtZXJpYyB0ZXh0IGlucHV0cy4KKworICAgICAgICAoLVtX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzdXBwb3J0c0Fyb3VldElucHV0XSk6CisgICAg
ICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHZpZXdEaWRMb2FkXSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHdpbGxQcmVzZW50
QXJvdWV0Vmlld0NvbnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgVGhlcmUncyBubyBu
ZWVkIHRvIG92ZXJyaWRlIHRoaXMgZGVsZWdhdGUgbWV0aG9kIGFueW1vcmUsIHNpbmNlIHRoZSBQ
VUlDVGV4dElucHV0Q29udGV4dCdzIGAtaW5pdGlhbFRleHRgIGlzCisgICAgICAgIHN1ZmZpY2ll
bnQgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcmliYmxlIHRleHQgaW5wdXQgVUkgaXMgcHJlcG9wdWxh
dGVkIHdpdGggdGhlIGZvY3VzZWQgdGV4dCBmaWVsZCdzIGluaXRpYWwgdGV4dAorICAgICAgICBj
b250ZW50LgorCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlbG9h
ZFRleHRTdWdnZXN0aW9uc10pOiBEZWxldGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIHRvIGAt
dXBkYXRlVGV4dFN1Z2dlc3Rpb25zOmAsIGFuZCBtYWtlIGl0IHRha2UgYSBsaXN0IG9mIFVJVGV4
dFN1Z2dlc3Rpb25zLiBUaGlzIG1ha2VzIHRoZSBjb2RlIGEKKyAgICAgICAgYml0IGVhc2llciB0
byBmb2xsb3cgYW5kIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIGAtdGV4dFN1Z2dlc3Rpb25zRm9y
TGlzdFZpZXdDb250cm9sbGVyOmAgZGVsZWdhdGUgbWV0aG9kLgorCisgICAgICAgICgtW1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNlbGVjdExpc3RJdGVtQXRJbmRleFBhdGg6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGRpZFNl
bGVjdExpc3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciBfZGlkU2VsZWN0TGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIG51bWJlck9mTGlzdEl0ZW1zXSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGhlaWdodEZvckxpc3RJ
dGVtOndpZHRoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBjZWxsRm9yTGlzdEl0ZW06XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIGxpc3RJdGVtQ2VsbFJldXNlSWRlbnRpZmllcl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBsaXN0SXRlbUNl
bGxDbGFzc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBpdGVtQ2VsbEZvckxpc3RJdGVtOmZvckluZGV4UGF0aDpdKTogRGVsZXRlZC4KKworICAg
ICAgICBSZW1vdmUgYWxsIHRoaXMgY29kZSBmb3Igc2hvd2luZyB0ZXh0IHN1Z2dlc3Rpb25zIGlu
IFF1aWNrYm9hcmQgVUkuIFNpbmNlIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGlzIG5v
dyBhCisgICAgICAgIHN1YmNsYXNzIG9mIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9s
bGVyLCB3ZSBjYW4gbm93IHNpbXBseSB1c2UgdGhlIGAtbWVzc2FnZXNgIHByb3BlcnR5IG9mIHRv
IHBvcHVsYXRlCisgICAgICAgIHF1aWNrYm9hcmQgd2l0aCB0ZXh0IHN1Z2dlc3Rpb25zLgorCisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5o
OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA2
LTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFt3
YXRjaE9TXSBRdWlja2JvYXJkIFVJIGZvciBmb2N1c2VkIHNlbGVjdCBlbGVtZW50cyBzaG91bGQg
bm90IGFsbG93IHRoZSB1c2VyIHRvIGNoYW5nZSB0aGUgaW5wdXQgbGFuZ3VhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oCmlu
ZGV4IDZhMzE3NTE1NWU1YjM5NzJlMjU1NDZmNjE0NTc1MmQ5YTk2YzJkOWMuLjRlODI3NDhmM2U2
Mzc2NzAzMTQ0OGJlMjkyMGIxYmVkYmU0MjEyYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaApAQCAtMzksOSArMzksOSBA
QAogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNQaWNrZXJWaWV3X1ByaXZhdGUuaD4KICNpbXBv
cnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyLmg+CiAj
aW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIuaD4K
LSNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5o
PgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
U3ViY2xhc3MuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExpc3RWaWV3
U3BlY3MuaD4KKyNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyX1ByaXZhdGUuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUmVzb3VyY2VzLmg+
CkBAIC0xNjksOSArMTY5LDExIEBAIGV4dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRv
blR5cGVQaWxsOwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNTdHJpbmcgKmluaXRp
YWxUZXh0OwogQHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZywgbnVsbGFibGUpIFVJQ29sb3Ig
KnRpbnRDb2xvcjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFVJVGV4dENvbnRlbnRU
eXBlIHNlY29uZGFyeVRleHRDb250ZW50VHlwZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIE5TSW50ZWdlciBtaW5pbXVtTGVuZ3RoOwotQHByb3BlcnR5IChub25hdG9taWMsIGFzc2ln
bikgVUlSZXR1cm5LZXlUeXBlIHJldHVybktleVR5cGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykg
TlNJbnRlZ2VyIG1pbmltdW1MZW5ndGg7CitAcHJvcGVydHkgKG5vbmF0b21pYykgVUlSZXR1cm5L
ZXlUeXBlIHJldHVybktleVR5cGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBOU0F0
dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRIZWFkZXJUZXh0OworQHByb3BlcnR5IChub25hdG9t
aWMpIEJPT0wgYWNjZXB0c0Vtb2ppOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc2hvdWxk
UHJlc2VudE1vZGVyblRleHRJbnB1dFVJOwogCiBAZW5kCiAKQEAgLTIxOSwxMSArMjIxLDE2IEBA
IGV4dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRvblR5cGVQaWxsOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDVGFibGVWaWV3ICpsaXN0VmlldzsKIEBwcm9wZXJ0
eSAoc3Ryb25nLCBub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDUXVpY2tib2FyZExpc3RWaWV3U3Bl
Y3MgKnNwZWNzOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFVJVGV4dENvbnRlbnRUeXBl
IHRleHRDb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFBVSUNUZXh0
SW5wdXRDb250ZXh0ICp0ZXh0SW5wdXRDb250ZXh0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVn
YXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfREVT
SUdOQVRFRF9JTklUSUFMSVpFUjsKIC0gKHZvaWQpcmVsb2FkTGlzdEl0ZW1zOwogLSAodm9pZCly
ZWxvYWRIZWFkZXJDb250ZW50VmlldzsKIEBlbmQKIAorQGludGVyZmFjZSBQVUlDUXVpY2tib2Fy
ZE1lc3NhZ2VWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheSAqbWVzc2FnZXM7CitAZW5kCisK
IEBpbnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRBcm91ZXRWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJs
ZSkgVUlUZXh0Q29udGVudFR5cGUgdGV4dENvbnRlbnRUeXBlOwogLSAodm9pZClzZXRJbnB1dFRl
eHQ6KG51bGxhYmxlIE5TU3RyaW5nICopaW5wdXRUZXh0IHNlbGVjdGlvblJhbmdlOihOU1Jhbmdl
KXNlbGVjdGlvblJhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDhjZmM2MDc0ZDA1NjJh
YTU4MmM1YzBkMjM0ODhlZTYzNmIyYzlhOWMuLmJkMTAwZWJmZWI0MTJlMDA4ZGU1Y2MzODJkNGUz
Y2FiYmM1ZTRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ1NCw3ICs0NTQsNiBAQCBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVy
UGFkVmlldy5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9sbGVy
Lm1tCi1VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5t
bQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0K
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGM4NzllOWRlMGQxZmQwMDk1YWI3ODBiMTI2M2E4ZjZhYmEyYWEwZGEuLjhjN2Q1
MzM2NmQ3OTVlOTJhNmM1OWIwNGMzYjU5ZDRhZTZhMTk0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
NjQsNyArNjQsNyBAQAogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9uSXRlbUlkZW50aWZpZXJzLmgi
CiAjaW1wb3J0ICJXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUHJl
dmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0
ICJXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlci5oIgpAQCAtNjY2NiwyMiArNjY2NiwyMiBAQCAtICh2b2lkKXJl
bW92ZUZvY3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAgICBbc2VsZiBzZXRJbnB1dERlbGVnYXRl
Om5pbF07CiB9CiAKLSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKLQotLSAoUmV0YWlu
UHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVy
OihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyCistIChSZXRhaW5Q
dHI8UFVJQ1RleHRJbnB1dENvbnRleHQ+KWNyZWF0ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0
CiB7Ci0gICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0TlMoW1tQVUlDUXVpY2ti
b2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gc3VnZ2VzdGlvbnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6W19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXS5jb3VudF0pOwotICAgIGZvciAoVUlU
ZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBbX2Zvcm1JbnB1dFNlc3Npb24gc3VnZ2VzdGlv
bnNdKQotICAgICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OnN1Z2dlc3Rpb24uaW5wdXRUZXh0
XTsKLQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tQVUlDVGV4dElucHV0Q29udGV4dCBh
bGxvY10gaW5pdF0pOwogICAgIFtzZWxmIF91cGRhdGVUZXh0SW5wdXRUcmFpdHM6Y29udGV4dC5n
ZXQoKV07Ci0gICAgW2NvbnRleHQgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlvbnMuZ2V0KCldOwog
ICAgIFtjb250ZXh0IHNldEluaXRpYWxUZXh0Ol9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZh
bHVlXTsKICAgICBbY29udGV4dCBzZXRBY2NlcHRzRW1vamk6WUVTXTsKICAgICBbY29udGV4dCBz
ZXRTaG91bGRQcmVzZW50TW9kZXJuVGV4dElucHV0VUk6WUVTXTsKKyAgICByZXR1cm4gY29udGV4
dDsKK30KKworI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorCistIChSZXRhaW5QdHI8
UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyPilfY3JlYXRlUXVpY2tib2FyZENvbnRyb2xsZXI6KFVJ
Vmlld0NvbnRyb2xsZXIgKilwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIKK3sKKyAgICBhdXRvIHF1
aWNrYm9hcmRDb250cm9sbGVyID0gYWRvcHROUyhbW1BVSUNRdWlja2JvYXJkQ29udHJvbGxlciBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGV4dCA9IHNlbGYuY3JlYXRlUXVpY2tib2FyZFRl
eHRJbnB1dENvbnRleHQ7CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldFF1aWNrYm9hcmRQ
cmVzZW50aW5nVmlld0NvbnRyb2xsZXI6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXTsKICAgICBb
cXVpY2tib2FyZENvbnRyb2xsZXIgc2V0RXhjbHVkZWRGcm9tU2NyZWVuQ2FwdHVyZTpbY29udGV4
dCBpc1NlY3VyZVRleHRFbnRyeV1dOwogICAgIFtxdWlja2JvYXJkQ29udHJvbGxlciBzZXRUZXh0
SW5wdXRDb250ZXh0OmNvbnRleHQuZ2V0KCldOwpAQCAtNjkzMSw3ICs2OTMxLDcgQEAgLSAodm9p
ZClmb2N1c2VkRm9ybUNvbnRyb2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9uczooV0tGb2N1c2VkRm9y
bUNvbnRyb2xWaWV3ICopdmkKICAgICBpZiAoX2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAh
W19wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAK
LSAgICBbKFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3Jl
ZW5JbnB1dFZpZXdDb250cm9sbGVyIHJlbG9hZFRleHRTdWdnZXN0aW9uc107CisgICAgWyhXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3
Q29udHJvbGxlciB1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6W19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3
IHN1Z2dlc3Rpb25zXV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLU2VsZWN0TWVudUxpc3RWaWV3
Q29udHJvbGxlckRlbGVnYXRlCkBAIC05MTk2LDE2ICs5MTk2LDcgQEAgLSAodm9pZClxdWlja2Jv
YXJkSW5wdXRDYW5jZWxsZWQ6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilxdWlja2Jv
YXJkCiAKICNwcmFnbWEgbWFyayAtIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUK
IAotLSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXpl
Ci17Ci0gICAgaWQgPF9XS0lucHV0RGVsZWdhdGU+IGRlbGVnYXRlID0gc2VsZi53ZWJWaWV3Ll9p
bnB1dERlbGVnYXRlOwotICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXc6Zm9jdXNlZEVsZW1lbnRDb250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdT
aXplOmlucHV0U2Vzc2lvbjopXSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gW2Rl
bGVnYXRlIF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3SGVp
Z2h0Rm9yRml0dGluZ1NpemU6c2l6ZSBpbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0
KCldOwotfQotCi0tIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3
Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKKy0g
KEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7CiAgICAgc3dpdGNoIChfZm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJ
bnB1dFR5cGU6OkNvbnRlbnRFZGl0YWJsZToKQEAgLTkyNzIsMjAgKzkyNjMsOSBAQCAtIChXS051
bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOihX
S1RleHRJbnB1dExpc3RWaQogICAgIH0KIH0KIAotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5
cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlcgorLSAoUFVJQ1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9y
TGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIKIHsKLSAgICByZXR1cm4gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlja2JvYXJkOwot
fQotCi0tIChOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnNGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcgotewotICAgIHJldHVybiBbX2ZvY3VzZWRGb3JtQ29udHJvbFZpZXcgc3VnZ2VzdGlvbnNd
OwotfQotCi0tICh2b2lkKWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdn
ZXN0aW9uICopc3VnZ2VzdGlvbgotewotICAgIFtzZWxmIGluc2VydFRleHRTdWdnZXN0aW9uOnN1
Z2dlc3Rpb25dOwotICAgIFtzZWxmIGRpc21pc3NRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJBbmRS
ZXZlYWxGb2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTpjb250cm9sbGVyXTsKKyAgICByZXR1
cm4gc2VsZi5jcmVhdGVRdWlja2JvYXJkVGV4dElucHV0Q29udGV4dC5hdXRvcmVsZWFzZSgpOwog
fQogCiAtIChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQ
VUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgpAQCAtOTMwMywxMCArOTI4
Myw4IEBAIC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25p
emVyICopZ2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCi0KLQotCiAjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQorCiAtICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZAog
ewogICAgIGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8
fCAhc2VsZi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2Up
CkBAIC0xMDM2Myw3ICsxMDM0MSw3IEBAIC0gKE5TU3RyaW5nICopdGV4dENvbnRlbnRUeXBlRm9y
VGVzdGluZwogewogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAgICAgaWYgKFtfcHJlc2VudGVk
RnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRDb250
ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgKilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOworICAg
ICAgICByZXR1cm4gWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRG
dWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciB0ZXh0SW5wdXRDb250ZXh0XS50ZXh0Q29udGVu
dFR5cGU7CiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCiAgICAgaWYgKF9wcmVzZW50
ZWRRdWlja2JvYXJkQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuIFtfcHJlc2VudGVkUXVpY2ti
b2FyZENvbnRyb2xsZXIgdGV4dElucHV0Q29udGV4dF0udGV4dENvbnRlbnRUeXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlj
a2VyVmlld0NvbnRyb2xsZXIuaAppbmRleCBlODFlMzQwZWU2M2FhZjY0NzEwMmExYjI5NzlkODUy
MWE2MGEyZWQ5Li43YjVmNDhkNzI4NWRlNzBkMDQ4MTdlMzEwMjFhYjU2NjJiMTJlNGViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmll
d0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tE
YXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQ
RVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
LmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBp
bnRlcmZhY2UgV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQppbmRleCA0NzQ4OGZkZTIy
YTllOGQ5MmQxZDkzNWMxMDg3YTUwNTc1ZjE5YjM3Li5hYmQwYTc0ZjY0MTU3NDA5M2UwNzI5OWMz
MmU3NDA1Zjc1YjA2MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCkBAIC0zMDYs
OCArMzA2LDYgQEAgLSAodm9pZCl2aWV3V2lsbEFwcGVhcjooQk9PTClhbmltYXRlZAogICAgIF9z
dGF0dXNCYXJBc3NlcnRpb24gPSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRp
b25dIF90YWtlU3RhdHVzQmFyR2xvYmFsQ29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0aW9uKSBuYW1lOlBVSUNT
dGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZl
cjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFt
ZTpQVUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAg
ICBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwog
fQogCiAtICh2b2lkKXZpZXdEaWRBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5OGFk
MDUxN2Q5ODQ5NmQwMzlkOGNmYjg5ZjYxOTllNWJhYWZhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBv
cnQgIlBlcHBlclVJQ29yZVNQSS5oIgotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RJdGVt
Q2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsCi1AZW5kCi0KLSNpZiBIQVZFKFFVSUNL
Qk9BUkRfQ09MTEVDVElPTl9WSUVXUykKLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdENvbGxl
Y3Rpb25WaWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1D
ZWxsCi1AZW5kCi0jZW5kaWYKLQotQGNsYXNzIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
cjsKLQotQHByb3RvY29sIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUgPFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KLQotLSAoQ0dGbG9hdCl2aWV3Q29udHJv
bGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5wdXRDb250
ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplOwotLSAoVUlWaWV3ICopaW5wdXRDb250
ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlcjsKLS0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxl
cjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmlu
ZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyICopY29udHJvbGxlcjsKLS0gKEJPT0wpc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZp
ZXdGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyOwotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmll
d0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwot
Ci1AZW5kCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIDogUFVJ
Q1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0
ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29k
ZXI6KE5TQ29kZXIgKilhRGVjb2RlciBOU19VTkFWQUlMQUJMRTsKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERlbGVnYXRlOihpZDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+
KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUg
TlNfVU5BVkFJTEFCTEU7Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7Ci0KLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZT4gZGVsZWdhdGU7Ci0KLUBlbmQKLQotdm9pZCBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9s
bGVyKFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiwgaWQgPFdLUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyRGVsZWdhdGU+KTsKLQotI2VuZGlmIC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjM4ZDc3OTNmMjNjMjQ3MGFlODY5YmVhMDU3YzcyMmE5NWUxY2JjNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgotCi0jaWYgSEFW
RShQRVBQRVJfVUlfQ09SRSkKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1zdGF0aWMg
Y29uc3QgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Owotc3RhdGljIGNv
bnN0IENHRmxvYXQgaXRlbUNlbGxCYXNlbGluZVRvQm90dG9tID0gODsKLQotQGltcGxlbWVudGF0
aW9uIFdLUXVpY2tib2FyZExpc3RJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNl
bGluZVNwZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsK
LX0KLQotLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJu
IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jaWYgSEFWRShRVUlDS0JP
QVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0
Q29sbGVjdGlvblZpZXdJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNw
ZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0KLQot
LSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0ZW1D
ZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JP
QVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyICgpIDxQVUlDUXVpY2tib2FyZExhbmd1YWdlQ29udHJvbGxlckRlbGVnYXRlPgot
QGVuZAotCi1AaW1wbGVtZW50YXRpb24gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIHsK
LSAgICBCT09MIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlOwotICAgIFJldGFpblB0cjxVSVZpZXc+
IF9jb250ZXh0VmlldzsKLSAgICBSZXRhaW5QdHI8UFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRW
aWV3QXNzZXJ0aW9uPiBfc3RhdHVzQmFyQXNzZXJ0aW9uOwotfQotCi1AZHluYW1pYyBkZWxlZ2F0
ZTsKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIGlmIChzZWxmID0gW3N1cGVy
IGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0aW9uTW9k
ZVRleHRdKQotICAgICAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLQotICAgIHJl
dHVybiBzZWxmOwotfQotCi0tICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKLXsKLSAg
ICBpZiAoIV9jb250ZXh0Vmlld05lZWRzVXBkYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBh
dXRvIHByZXZpb3VzQ29udGV4dFZpZXcgPSBfY29udGV4dFZpZXc7Ci0gICAgaWYgKFtzZWxmLmRl
bGVnYXRlIHNob3VsZERpc3BsYXlJbnB1dENvbnRleHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVy
OnNlbGZdKQotICAgICAgICBfY29udGV4dFZpZXcgPSBbc2VsZi5kZWxlZ2F0ZSBpbnB1dENvbnRl
eHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgZWxzZQotICAgICAgICBfY29udGV4
dFZpZXcgPSBuaWw7Ci0KLSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IE5POwotfQotCi0t
IChCT09MKXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0g
KHZvaWQpdmlld1dpbGxBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld1dp
bGxBcHBlYXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlvbiA9IFtbUFVJQ0Fw
cGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0gX3Rha2VTdGF0dXNCYXJHbG9iYWxDb250
ZXh0QXNzZXJ0aW9uQW5pbWF0ZWQ6Tk9dOwotCi0gICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNl
bnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVy
IGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZp
Z2F0aW9uKSBuYW1lOlBVSUNTdGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3Rp
ZmljYXRpb24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVj
dG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVz
QmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBjb25maWd1cmVT
dGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwotfQotCi0tICh2b2lk
KXZpZXdEaWREaXNhcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld0RpZERp
c2FwcGVhcjphbmltYXRlZF07Ci0KLSAgICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gbmlsOwotCi0g
ICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBk
ZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQVUlD
U3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVjdDpu
aWxdOwotICAgIFtjZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOlBVSUNTdGF0dXNCYXJU
aXRsZVRhcHBlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLX0KLQotLSAodm9pZClfaGFuZGxl
U3RhdHVzQmFyTmF2aWdhdGlvbgotewotICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmRJbnB1
dENhbmNlbGxlZDpzZWxmXTsKLX0KLQotLSAodm9pZClyZWxvYWRDb250ZXh0VmlldwotewotICAg
IF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOwotICAgIFtzZWxmIHJlbG9hZEhlYWRlckNv
bnRlbnRWaWV3XTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4K
LQotLSAoUFVJQ0FjdGlvbkNvbnRyb2xsZXIgKilhY3Rpb25Db250cm9sbGVyCi17Ci0gICAgaWYg
KCFbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6c2VsZl0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBQVUlDQWN0aW9uSXRl
bSAqbGFuZ3VhZ2VTZWxlY3Rpb25BY3Rpb25JdGVtID0gW3NlbGYubGFuZ3VhZ2VDb250cm9sbGVy
IGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbUZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAg
IGF1dG8gYWN0aW9uR3JvdXAgPSBhZG9wdE5TKFtbUFVJQ0FjdGlvbkdyb3VwIGFsbG9jXSBpbml0
V2l0aEFjdGlvbkl0ZW1zOkBbIGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSBdIGFjdGlvblN0
eWxlOlBVSUNBY3Rpb25TdHlsZUF1dG9tYXRpY10pOwotICAgIHJldHVybiBhZG9wdE5TKFtbUFVJ
Q0FjdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aW9uR3JvdXA6YWN0aW9uR3JvdXAu
Z2V0KCldKS5hdXRvcmVsZWFzZSgpOwotfQotCi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKLQotI3ByYWdtYSBtYXJrIC0gUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xs
ZXJEZWxlZ2F0ZQotCi0tICh2b2lkKWxhbmd1YWdlQ29udHJvbGxlckRpZENoYW5nZVByaW1hcnlM
YW5ndWFnZTooUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIgKilsYW5ndWFnZUNvbnRy
b2xsZXIKLXsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihxdWlja2JvYXJkOmxhbmd1YWdlRGlkQ2hhbmdlOildKQotICAgICAgICBbc2VsZi5kZWxl
Z2F0ZSBxdWlja2JvYXJkOnNlbGYgbGFuZ3VhZ2VEaWRDaGFuZ2U6bGFuZ3VhZ2VDb250cm9sbGVy
LnByaW1hcnlMYW5ndWFnZV07Ci19Ci0KLSNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3ViY2xh
c3NpbmcKLQotLSAoQ0dGbG9hdCloZWFkZXJDb250ZW50Vmlld0hlaWdodAotewotICAgIFtzZWxm
IHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwotCi0gICAgcmV0dXJuIFtfY29udGV4dFZpZXcg
c2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNpemVdLmhlaWdodDsKLX0KLQot
LSAoVUlWaWV3ICopaGVhZGVyQ29udGVudFZpZXcKLXsKLSAgICBbc2VsZiB1cGRhdGVDb250ZXh0
Vmlld0lmTmVlZGVkXTsKLQotICAgIENHRmxvYXQgdmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgo
c2VsZi5jb250ZW50Vmlldy5ib3VuZHMpOwotICAgIENHU2l6ZSBzaXplVGhhdEZpdHMgPSBbX2Nv
bnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXTsKLSAg
ICBbX2NvbnRleHRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoKHZpZXdXaWR0aCAtIHNpemVUaGF0
Rml0cy53aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZpdHMud2lkdGgsIHNpemVUaGF0Rml0cy5oZWln
aHQpXTsKLSAgICBbX2NvbnRleHRWaWV3IGxheW91dFN1YnZpZXdzXTsKLSAgICByZXR1cm4gX2Nv
bnRleHRWaWV3LmdldCgpOwotfQotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVzQmFyRm9y
Q29udHJvbGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8
V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGUpCi17Ci0gICAgLy8g
QW4gaW50ZXJuYWwgY2xpZW50IChlLmcuIFNhZmFyaSdzIG1vZGFsIHNoZWV0KSBtYXkgaGF2ZSBt
b3ZlZCB0aGUgc3RhdHVzIGJhciBvZmZzY3JlZW4uCi0gICAgLy8gQmVmb3JlIHVwZGF0aW5nIHRo
ZSBzdGF0dXMgYmFyLCBtYWtlIHN1cmUgdGhhdCB3ZSBicmluZyB0aGUgc3RhdHVzIGJhciBiYWNr
IHRvIGl0cyBvcmlnaW5hbCBwb3NpdGlvbi4KLSAgICBQVUlDU3RhdHVzQmFyICpzdGF0dXNCYXIg
PSBbUFVJQ0FwcGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0uX3B1aWNTdGF0dXNCYXI7
Ci0gICAgc3RhdHVzQmFyLmZyYW1lID0gQ0dSZWN0IHsgQ0dQb2ludFplcm8sIHN0YXR1c0Jhci5m
cmFtZS5zaXplIH07Ci0KLSAgICBQVUlDQXBwbGljYXRpb25TdGF0dXNCYXJJdGVtICppdGVtID0g
Y29udHJvbGxlci5wdWljX2FwcGxpY2F0aW9uU3RhdHVzQmFySXRlbTsKLSAgICBpdGVtLnRpdGxl
ID0gW2RlbGVnYXRlIGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6Y29udHJvbGxlcl07
Ci0gICAgaXRlbS50aXRsZUNvbG9yID0gW1VJQ29sb3Igc3lzdGVtQmx1ZUNvbG9yXTsKLSAgICBp
dGVtLm5hdlVJQmFja0J1dHRvbkRpc2FibGVkID0gTk87Ci0gICAgaXRlbS5zaG93TmF2aWdhdGlv
blVJID0gWUVTOwotICAgIGl0ZW0udGl0bGVJbnRlcmFjdGl2ZSA9IFlFUzsKLSAgICBbaXRlbSBj
b21taXRDaGFuZ2VzQW5pbWF0ZWQ6Tk9dOwotfQotCi0jZW5kaWYgLy8gSEFWRShQRVBQRVJfVUlf
Q09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQwNGNjNWE2OTQwNGVhODUzZTVmZDVmNjBjMDI5ZmVlYmQ4MzNiYzYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYg
SEFWRShQRVBQRVJfVUlfQ09SRSkKKworI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJLmgiCisKK0Bw
cm90b2NvbCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxQVUlDUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+CisKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRG
b3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXI7CistIChOU1N0cmluZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKworQGVuZAorCisjZW5kaWYgLy8g
SEFWRShQRVBQRVJfVUlfQ09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaApp
bmRleCBjODEwMjA4NjY5YjQxNjRhNTFkOTZiNzQ5OGMxMTg4MjgyODliZTM1Li5lNjlmYjAxMTUz
MjUzNGNlZTFmOTIxODE1NmQzMjQxZTc1ZjE1NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3
Q29udHJvbGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JF
KQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQg
IldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogQGNsYXNzIFdLU2VsZWN0
TWVudUxpc3RWaWV3Q29udHJvbGxlcjsKIApAQCAtNDEsOSArNDEsMTEgQEAKIAogQGVuZAogCi1A
aW50ZXJmYWNlIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlcgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xs
ZXIgOiBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1v
ZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2Rl
ciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaykg
aWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggMmQzMDE5ZmQ3NDNhYmU1
MzA5NjcxMjYzNzllYzFlOGViYzgyYzVmZC4uNzhkNGI3MzAwZWEyM2Y0Nzg2YzhiMWJlYmNhM2Q5
Y2Y4ZGU5Mzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC00
Myw4ICs0MywxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQVUlDUXVpY2tib2FyZExp
c3RTZWN0aW9uKSB7CiAgICAgUFVJQ1F1aWNrYm9hcmRMaXN0U2VjdGlvbkNvbnRlbnRVbmF2YWls
YWJsZSwKIH07CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxy
ZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLUBpbnRlcmZhY2UgV0tT
ZWxlY3RNZW51SXRlbUNlbGwgOiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKK3N0YXRpYyBjb25z
dGV4cHIgQ0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Oworc3RhdGljIGNv
bnN0ZXhwciBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7CisKKy8vIEZJWE1F
OiBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzU3ODA3NDQ1PiBsYW5k
cyBpbiBhIGJ1aWxkLgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVJdGVtQ2VsbCA6IFBVSUNRdWlj
a2JvYXJkTGlzdEl0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJSW1h
Z2VWaWV3ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTUyLDcgKzU1LDcgQEAgQGltcGxlbWVudGF0
aW9uIFdLU2VsZWN0TWVudUl0ZW1DZWxsIHsKICAgICBSZXRhaW5QdHI8VUlJbWFnZVZpZXc+IF9p
bWFnZVZpZXc7CiB9CiAKLS0gKGluc3RhbmNldHlwZSkgaW5pdFdpdGhTdHlsZTooVUlUYWJsZVZp
ZXdDZWxsU3R5bGUpc3R5bGUgcmV1c2VJZGVudGlmaWVyOihOU1N0cmluZyAqKXJldXNlSWRlbnRp
ZmllcgorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3R5bGU6KFVJVGFibGVWaWV3Q2VsbFN0eWxl
KXN0eWxlIHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilyZXVzZUlkZW50aWZpZXIKIHsKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoU3R5bGU6c3R5bGUgcmV1c2VJZGVudGlmaWVy
OnJldXNlSWRlbnRpZmllcl0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzEsMTEgKzc0LDIx
IEBAIC0gKFVJSW1hZ2VWaWV3ICopaW1hZ2VWaWV3CiAgICAgcmV0dXJuIF9pbWFnZVZpZXcuZ2V0
KCk7CiB9CiAKKy0gKENHRmxvYXQpdG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlCit7CisgICAg
cmV0dXJuIGl0ZW1DZWxsVG9wVG9MYWJlbEJhc2VsaW5lOworfQorCistIChDR0Zsb2F0KWJhc2Vs
aW5lVG9Cb3R0b21TcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRlbUNlbGxCYXNlbGluZVRvQm90
dG9tOworfQorCiBAZW5kCiAKICNpZiBIQVZFKFFVSUNLQk9BUkRfQ09MTEVDVElPTl9WSUVXUykK
IAotQGludGVyZmFjZSBXS1NlbGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogV0tRdWlj
a2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51
Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3
SXRlbUNlbGwKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlJbWFnZVZpZXcgKmlt
YWdlVmlldzsKIEBlbmQKIApAQCAtMTAyLDYgKzExNSwxNiBAQCAtIChVSUltYWdlVmlldyAqKWlt
YWdlVmlldwogICAgIHJldHVybiBfaW1hZ2VWaWV3LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRv
cFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFi
ZWxCYXNlbGluZTsKK30KKworLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7
CisgICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKK30KKwogQGVuZAogCiAjZW5k
aWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCkBAIC0xMTUsNyArMTM4LDcg
QEAgQGR5bmFtaWMgZGVsZWdhdGU7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRl
OihpZCA8V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7
Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICByZXR1
cm4gW3N1cGVyIGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGlj
dGF0aW9uTW9kZVRleHRdOwogfQogCiAtICh2b2lkKXZpZXdEaWRMb2FkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExp
c3RWaWV3Q29udHJvbGxlci5oCmluZGV4IGUxMjkyZmJkMzNhNTdjZjY2N2E0N2VhNGUxMzI1MTQw
MTljZWQ1NzIuLjhlYjJjMzY0MmQ4OTFjN2Q1YTAxNGMyZjZiMjJmYTU3NTA2N2Y2MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBI
QVZFKFBFUFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRy
b2xsZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIK
IAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKICAg
ICBXS051bWJlclBhZElucHV0TW9kZU5vbmUsCkBAIC00MSwxNyArNDEsMjEgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKIEBwcm90b2NvbCBXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlPgogCiAtIChXS051bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2Rl
Rm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJv
bGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNB
cnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250
cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tICh2
b2lkKWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0aW9uICopc3Vn
Z2VzdGlvbjsKLS0gKEJPT0wpYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoUFVJQ1Rl
eHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CistIChVSVZpZXcgKilp
bnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RW
aWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
OworLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjoo
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClzaG91
bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CiAKIEBlbmQKIAotQGludGVyZmFjZSBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlcgorQGludGVyZmFjZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlj
a2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERl
bGVnYXRlOihpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdh
dGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKHZvaWQpcmVsb2FkVGV4dFN1Z2dlc3Rp
b25zOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0
YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOworLSAodm9pZCl1
cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dl
c3Rpb25zOworLSAodm9pZClyZWxvYWRDb250ZXh0VmlldzsKIAogQHByb3BlcnR5IChub25hdG9t
aWMsIHdlYWspIGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxl
Z2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDFiYjEyM2I5
YjFiYzZkMTA3M2UwMmZlNjhlOGNiMTM5YTkxMzdhZmQuLjM0OWUxNjQ2N2UwODFjZGNhNTI1OGJm
N2YyYTY0OTdhZTdkZWM5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0K
QEAgLTMxLDExICszMSw5IEBACiAjaW1wb3J0ICJXS051bWJlclBhZFZpZXdDb250cm9sbGVyLmgi
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHRleHRT
dWdnZXN0aW9uQnV0dG9uSGVpZ2h0ID0gNDQ7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB0ZXh0U3Vn
Z2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbiA9IDk7Ci1zdGF0aWMgTlNTdHJpbmcgKnRleHRT
dWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9IEAiV2ViS2l0UXVpY2tib2FyZFRleHRTdWdn
ZXN0aW9uQ2VsbCI7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciB7CisgICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKKyAgICBSZXRhaW5QdHI8
VUlWaWV3PiBfY29udGV4dFZpZXc7CiAgICAgUmV0YWluUHRyPFdLTnVtYmVyUGFkVmlld0NvbnRy
b2xsZXI+IF9udW1iZXJQYWRWaWV3Q29udHJvbGxlcjsKIH0KIApAQCAtNDMsMzIgKzQxLDQyIEBA
IEBkeW5hbWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZToo
aWQgPFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0g
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXSkpCisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1v
ZGU6UFVJQ0RpY3RhdGlvbk1vZGVUZXh0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBz
ZWxmLnRleHRDb250ZW50VHlwZSA9IFtzZWxmLmRlbGVnYXRlIHRleHRDb250ZW50VHlwZUZvckxp
c3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKKyAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlF
UzsKKyAgICBzZWxmLnRleHRJbnB1dENvbnRleHQgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0SW5wdXRD
b250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogICAgIHJldHVybiBzZWxmOwogfQog
Ci0tICh2b2lkKXZpZXdEaWRMb2FkCistICh2b2lkKXJlbG9hZENvbnRleHRWaWV3CiB7Ci0gICAg
W3N1cGVyIHZpZXdEaWRMb2FkXTsKLQotICAgIHNlbGYuaGVhZGVyVmlldy5oaWRkZW4gPSBZRVM7
CisgICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZRVM7CisgICAgW3NlbGYgcmVsb2FkSGVh
ZGVyQ29udGVudFZpZXddOwogfQogCi0tICh2b2lkKXdpbGxQcmVzZW50QXJvdWV0Vmlld0NvbnRy
b2xsZXI6KFBVSUNRdWlja2JvYXJkQXJvdWV0Vmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJkCist
ICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKIHsKLSAgICBOU1N0cmluZyAqaW5pdGlh
bFRleHQgPSBbc2VsZi5kZWxlZ2F0ZSBpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjpzZWxm
XTsKLSAgICBpZiAoaW5pdGlhbFRleHQubGVuZ3RoKQotICAgICAgICBbcXVpY2tib2FyZCBzZXRJ
bnB1dFRleHQ6aW5pdGlhbFRleHQgc2VsZWN0aW9uUmFuZ2U6TlNNYWtlUmFuZ2UoaW5pdGlhbFRl
eHQubGVuZ3RoLCAwKV07CisgICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3
OworICAgIGlmIChbc2VsZi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zv
ckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSkKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYu
ZGVsZWdhdGUgaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOworICAgIGVs
c2UKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gbmlsOwogCi0gICAgcXVpY2tib2FyZC5taW5UZXh0
TGVuZ3RoRm9yRW5hYmxpbmdBY2NlcHQgPSAwOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRl
ID0gTk87Cit9CisKKy0gKEJPT0wpcmVxdWlyZXNOdW1lcmljSW5wdXQKK3sKKyAgICByZXR1cm4g
W3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxm
XSAhPSBXS051bWJlclBhZElucHV0TW9kZU5vbmU7CiB9CiAKIC0gKE5TQXJyYXkgKilhZGRpdGlv
bmFsVHJheUJ1dHRvbnMKIHsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9k
ZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmUp
CisgICAgaWYgKCFzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0KQogICAgICAgICByZXR1cm4gQFsg
XTsKIAogI2lmIEhBVkUoUFVJQ19CVVRUT05fVFlQRV9QSUxMKQpAQCAtOTksOSArMTA3LDE0IEBA
IC0gKHZvaWQpcHJlc2VudE51bWJlclBhZFZpZXdDb250cm9sbGVyCiAgICAgW3NlbGYgcHJlc2Vu
dFZpZXdDb250cm9sbGVyOl9udW1iZXJQYWRWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZ
RVMgY29tcGxldGlvbjpuaWxdOwogfQogCi0tICh2b2lkKXJlbG9hZFRleHRTdWdnZXN0aW9ucwor
LSAodm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAq
PiAqKXN1Z2dlc3Rpb25zCiB7Ci0gICAgW3NlbGYgcmVsb2FkTGlzdEl0ZW1zXTsKKyAgICBhdXRv
IG1lc3NhZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5TQXR0cmlidXRlZFN0cmluZyAq
PiBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzdWdnZXN0aW9ucy5jb3VudF0pOworICAgIGZvciAo
VUlUZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBzdWdnZXN0aW9ucykgeworICAgICAgICBh
dXRvIGF0dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpzdWdnZXN0aW9uLmRpc3BsYXlUZXh0XSk7CisgICAgICAgIFttZXNz
YWdlcyBhZGRPYmplY3Q6YXR0cmlidXRlZFN0cmluZy5nZXQoKV07CisgICAgfQorICAgIHNlbGYu
bWVzc2FnZXMgPSBtZXNzYWdlcy5nZXQoKTsKIH0KIAogLSAodm9pZCllbnRlclRleHQ6KE5TU3Ry
aW5nICopdGV4dApAQCAtMTExLDEwOSArMTI0LDQ3IEBAIC0gKHZvaWQpZW50ZXJUZXh0OihOU1N0
cmluZyAqKXRleHQKIAogI3ByYWdtYSBtYXJrIC0gUXVpY2tib2FyZCBzdWJjbGFzc2luZwogCi0t
IChCT09MKXN1cHBvcnRzRGljdGF0aW9uSW5wdXQKKy0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZp
ZXdIZWlnaHQKIHsKLSAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dzRGljdGF0aW9uSW5w
dXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci19Ci0KLS0gKHZvaWQpZGlkU2VsZWN0TGlz
dEl0ZW1BdEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKLXsKLSAgICBbc2VsZiBf
ZGlkU2VsZWN0TGlzdEl0ZW06aW5kZXhQYXRoLnJvd107Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIG1l
dGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMg
aW4gYSBidWlsZC4KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVt
YmVyCi17Ci0gICAgW3NlbGYgX2RpZFNlbGVjdExpc3RJdGVtOml0ZW1OdW1iZXJdOwotfQotCi0t
ICh2b2lkKV9kaWRTZWxlY3RMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIKLXsKLSAgICBO
U0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtzZWxmLmRlbGVn
YXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAgICBpZiAo
dGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGl0ZW1OdW1i
ZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIFtzZWxmIHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwogCi0gICAgW3NlbGYu
ZGVsZWdhdGUgbGlzdFZpZXdDb250cm9sbGVyOnNlbGYgZGlkU2VsZWN0VGV4dFN1Z2dlc3Rpb246
W3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdXTsKKyAgICByZXR1cm4g
W19jb250ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3VuZHMuc2l6ZV0u
aGVpZ2h0OwogfQogCi0tIChOU0ludGVnZXIpbnVtYmVyT2ZMaXN0SXRlbXMKKy0gKFVJVmlldyAq
KWhlYWRlckNvbnRlbnRWaWV3CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIHRleHRTdWdn
ZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXS5jb3VudDsKLX0KKyAgICBbc2VsZiB1
cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKIAotLSAoQ0dGbG9hdCloZWlnaHRGb3JMaXN0SXRl
bTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIgd2lkdGg6KENHRmxvYXQpd2lkdGgKLXsKLSAgICByZXR1
cm4gdGV4dFN1Z2dlc3Rpb25CdXR0b25IZWlnaHQ7CisgICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBD
R1JlY3RHZXRXaWR0aChzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcyk7CisgICAgQ0dTaXplIHNpemVU
aGF0Rml0cyA9IFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91
bmRzLnNpemVdOworICAgIFtfY29udGV4dFZpZXcgc2V0RnJhbWU6Q0dSZWN0TWFrZSgodmlld1dp
ZHRoIC0gc2l6ZVRoYXRGaXRzLndpZHRoKSAvIDIsIDAsIHNpemVUaGF0Rml0cy53aWR0aCwgc2l6
ZVRoYXRGaXRzLmhlaWdodCldOworICAgIFtfY29udGV4dFZpZXcgbGF5b3V0U3Vidmlld3NdOwor
ICAgIHJldHVybiBfY29udGV4dFZpZXcuZ2V0KCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhv
ZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4g
YSBidWlsZC4KLS0gKFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsICopY2VsbEZvckxpc3RJdGVt
OihOU0ludGVnZXIpaXRlbU51bWJlcgorLSAoQk9PTClzaG91bGRTaG93TGFuZ3VhZ2VCdXR0b24K
IHsKLSAgICBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtz
ZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsK
LSAgICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+
KGl0ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIH0KLQotICAgIFVJVGV4dFN1Z2dlc3Rpb24gKnRleHRTdWdnZXN0aW9u
ID0gW3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdOwotICAgIGF1dG8g
cmV1c2FibGVDZWxsID0gcmV0YWluUHRyKFtzZWxmLmxpc3RWaWV3IGRlcXVldWVSZXVzYWJsZUNl
bGxXaXRoSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdKTsKLSAg
ICBpZiAoIXJldXNhYmxlQ2VsbCkgewotICAgICAgICByZXVzYWJsZUNlbGwgPSBhZG9wdE5TKFtb
V0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxsIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVWaWV3
Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJ
ZGVudGlmaWVyXSk7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxhYmVsXS5udW1iZXJPZkxp
bmVzID0gMTsKLSAgICAgICAgW3JldXNhYmxlQ2VsbCBpdGVtTGFiZWxdLmxpbmVCcmVha01vZGUg
PSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRl
bUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRydW5jYXRpb24gPSBZRVM7Ci0gICAg
fQotCi0gICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0aChzZWxmLmxpc3RWaWV3
LmJvdW5kcyk7Ci0gICAgW3JldXNhYmxlQ2VsbCBjb25maWd1cmVGb3JUZXh0OnRleHRTdWdnZXN0
aW9uLmRpc3BsYXlUZXh0IHdpZHRoOnZpZXdXaWR0aF07Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCBi
ZWhhdmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2VzIHRoZSB0ZXh0IGxhYmVs
IHRvIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBBZGp1c3QgZm9yIHRoaXMg
Ynkgc2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBmaXQgdGhlIGJvdW5kcyBv
ZiB0aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0uZnJhbWUgPSBVSVJlY3RJ
bnNldChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAsIHRleHRTdWdnZXN0aW9u
TGFiZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1h
cmdpbik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFzZSgpOworICAgIHJldHVy
biBbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJv
bGxlcjpzZWxmXTsKIH0KIAotLSAoTlNTdHJpbmcgKilsaXN0SXRlbUNlbGxSZXVzZUlkZW50aWZp
ZXIKKy0gKEJPT0wpc3VwcG9ydHNEaWN0YXRpb25JbnB1dAogewotICAgIHJldHVybiB0ZXh0U3Vn
Z2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7CisgICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIGFs
bG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogfQogCi0jaWYg
SEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLS0gKENsYXNzKWxpc3RJdGVtQ2Vs
bENsYXNzCistIChCT09MKXNob3VsZFNob3dUcmF5VmlldwogewotICAgIHJldHVybiBbV0tRdWlj
a2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwgY2xhc3NdOworICAgIHJldHVybiBzZWxm
LnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0tIChQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0
aW9uVmlld0l0ZW1DZWxsICopaXRlbUNlbGxGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1i
ZXIgZm9ySW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAorLSAoQk9PTClzaG91bGRT
aG93VGV4dEZpZWxkCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0U3Vn
Z2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNfY2Fz
dDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRleHRTdWdnZXN0aW9uICp0
ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVtYmVy
XTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2VsZi5jb2xsZWN0aW9uVmll
dyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aFJldXNlSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNl
bGxSZXVzZUlkZW50aWZpZXIgZm9ySW5kZXhQYXRoOmluZGV4UGF0aF0pOwotCi0gICAgW3JldXNh
YmxlQ2VsbCBib2R5TGFiZWxdLm51bWJlck9mTGluZXMgPSAxOwotICAgIFtyZXVzYWJsZUNlbGwg
Ym9keUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOwot
ICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRy
dW5jYXRpb24gPSBZRVM7Ci0gICAgW3JldXNhYmxlQ2VsbCBzZXRUZXh0OnRleHRTdWdnZXN0aW9u
LmRpc3BsYXlUZXh0XTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIC1jb25maWd1
cmVGb3JUZXh0OndpZHRoOiBjYXVzZXMgdGhlIHRleHQgbGFiZWwgdG8gcnVuIG9mZiB0aGUgZW5k
IG9mIHRoZSBjZWxsLgotICAgIC8vIEFkanVzdCBmb3IgdGhpcyBieSBzaHJpbmtpbmcgdGhlIGxh
YmVsIHdpZHRoIHRvIGFjdHVhbGx5IGZpdCB0aGUgYm91bmRzIG9mIHRoZSBjZWxsLgotICAgIFty
ZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5mcmFtZSA9IFVJUmVjdEluc2V0KFtyZXVzYWJsZUNlbGwg
Y29udGVudFZpZXddLmJvdW5kcywgMCwgdGV4dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJn
aW4sIDAsIHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luKTsKLSAgICByZXR1cm4g
cmV1c2FibGVDZWxsLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuICFzZWxmLnJlcXVpcmVzTnVt
ZXJpY0lucHV0OwogfQogCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklF
V1MpCi0KIC0gKEJPT0wpc3VwcG9ydHNBcm91ZXRJbnB1dAogewotICAgIHJldHVybiBbc2VsZi5k
ZWxlZ2F0ZSBudW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdID09IFdL
TnVtYmVyUGFkSW5wdXRNb2RlTm9uZTsKKyAgICByZXR1cm4gIXNlbGYucmVxdWlyZXNOdW1lcmlj
SW5wdXQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKaW5kZXggNjU1OGNk
ZGU4MjJjYmQ5NWZiYjA3MjkzYTZkYmYzZjg2Y2NjNWZhMy4uOWE3ZWExMDBkZWU0MTZhOWJlNjc4
YWJlNzI0NTAyOTU0MGE1ZGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKQEAgLTI1
LDcgKzI1LDcgQEAKIAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAKLSNpbXBvcnQgIldLUXVp
Y2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLVGltZVBpY2tlclZpZXdDb250cm9s
bGVyIDogUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkZTkzMGI2YjljNzcyOWIxMDVk
OWQ2MGM2Y2M4MjQyZWEyZWVmMWIyLi42YjE0NWZmOWM2NWY2YmJlNjhmN2M1Mjc0ZjNhNzExMTQ5
ZmYzODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTIwMzgsNyArMjAzOCw3IEBACiAJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4NyAv
KiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0IwOUU0MjI1RDVBMDMwMDg5MTQ4NyAvKiBXZWJzaXRlTWVk
aWFTb3VyY2VQb2xpY3kuaCAqLzsgfTsKIAkJRjRDRjFFOUQyNUU0MERDQzAwMEY5RDczIC8qIEdl
c3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRjFFOUIyNUU0MERDQzAwMEY5RDczIC8qIEdl
c3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oICovOyB9OwogCQlGNEQ1RjUxRDIw
NjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVGNTE5MjA2MDg3QTAw
MDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovOyB9OwotCQlGNEQ1
RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUxQjIw
NjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggKi87IH07
CisJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS5oICovOyB9OwogCQlGNERCNTRFNjIzMTlFNzMzMDA5RTMxNTUgLyogV0tIaWdobGln
aHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJRjRFQzk0RTMyMzU2Q0M1
NzAwMEJCNjE0IC8qIEFwcGxpY2F0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDA0RTI4MjFGN0M3M0QwMDc2NzQxRCAvKiBB
cHBsaWNhdGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUY0RkUwQTNCMjQ2MzJCNjAwMDI2MzFF
MSAvKiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oICovOyB9OwpA
QCAtNjAwNSw4ICs2MDA1LDcgQEAKIAkJRjRDRjFFOUMyNUU0MERDQzAwMEY5RDczIC8qIEdlc3R1
cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5t
bTsgcGF0aCA9IGlvcy9HZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1z
L1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0RDVGNTFBMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1
RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2tib2FyZExpc3RWaWV3Q29u
dHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJC
QTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1t
OyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOyBwYXRoID0g
aW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oOyBwYXRoID0g
aW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTUyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0
TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tOyBw
YXRoID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1Nl
bGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW07IHBhdGggPSBp
b3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzkxMCw3ICs3OTA5LDYgQEAKIAkJMzc1NEQ1NDExQjNBMjk5ODAw
M0E0QzdGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKLQkJCQkzMTU1RUUwQzI2NzNGNEVGMDA4NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggKi8sCiAJ
CQkJRTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgg
Ki8sCiAJCQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQSS5oICovLAog
CQkJCTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNhdGlvblNlcnZpY2VzQ29y
ZVNQSS5oICovLApAQCAtNzkyNCw2ICs3OTIyLDcgQEAKIAkJCQk1Q0I2QUU0MzI2MDk3OTlDMDBC
NkVENUEgLyogUmVhc29uU1BJLmggKi8sCiAJCQkJMEU5N0Q3NEMyMDBFOEZGMzAwQkY2NjQzIC8q
IFNhZmVCcm93c2luZ1NQSS5oICovLAogCQkJCTQ0OEFDMjREMjY3MTM1QTYwMEIyODkyMSAvKiBT
eW5hcHNlU1BJLmggKi8sCisJCQkJMzE1NUVFMEMyNjczRjRFRjAwODVFNTlBIC8qIFZpc2lvbktp
dFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0xMTM4Miw4ICsxMTM4MSw3IEBACiAJCQkJMkVBN0IzRDQyMDI2Q0YyMzAwOUNF
NUFDIC8qIFdLTnVtYmVyUGFkVmlldy5tbSAqLywKIAkJCQkyRUE3QjNDRjIwMjZDRUY4MDA5Q0U1
QUMgLyogV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5oICovLAogCQkJCTJFQTdCM0QwMjAyNkNF
RjgwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1tICovLAotCQkJCUY0RDVG
NTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCAq
LywKLQkJCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyLm1tICovLAorCQkJCUY0RDVGNTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggKi8sCiAJCQkJRjRGNTlBRDQyMDY1QTVDQTAw
NkNBQTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oICovLAogCQkJCUY0RjU5
QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0g
Ki8sCiAJCQkJRjRENUY1MTkyMDYwODdBMDAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyLmggKi8sCkBAIC0xMjAzOCw3ICsxMjAzNiw2IEBACiAJCQkJOTNCMjYxNEUyMjdE
MTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0IyNjE0RjIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZEQjIyRkI5RDQ4MDAyNjk4NjcgLyogTG9jYWxT
dG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTU1RUUwRDI2NzNGNEYwMDA4
NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUE3RjJGMzEyNUJG
ODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQ0Q3RjcxRDQ3
RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLApA
QCAtMTIzNzgsNiArMTIzNzUsNyBAQAogCQkJCTI2ODQwNTUzMThCODZFRDYwMDIyQzM4QiAvKiBW
aWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyNjg0MDU0
NDE4Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMkRENUE3MjkxRUJGMDhENTAwOUJBNTk3IC8qIFZpc2libGVXZWJQYWdl
Q291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE1NUVFMEQyNjczRjRGMDAwODVFNTlBIC8q
IFZpc2lvbktpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRjI5RTQxMjBCNDQ0MjAwNTNE
MUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjAyMjREMThD
MTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRjRDRUYwMThCQzQ4MTgwMEJDMkQzNCAvKiBWaXNpdGVkTGlua1RhYmxlQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyMiw3ICsxMjkyMCw3IEBACiAJCQkJNTEyRjU4
RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0aW9uU3BhY2VOUy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlv
blNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJB
OCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQwMUJDRDE5MDVENTQ5MDBDOUM0NUYgLyog
V0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOUUzMjlCMTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5RTMyOUYxODIyRkVERDAwRjVEMDRDIC8qIFdLUmVtb3RlT2JqZWN0Q29kZXIu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZyBi
L1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggZDJjMjBiOTU2NjIwOWM1NWM3MTAzNDJl
N2Q4OWJkMDMyYzkwYTJhYi4uOWFiN2FlNzBiMTExNGQyZWEzZjA4OWEzMmJkZmRhMDU2YmQ3ODBi
YiAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZworKysgYi9XZWJLaXRMaWJy
YXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDYtMTQgIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW3dhdGNoT1NdIFJlZW5hYmxl
IG1vZGVybiB0ZXh0IGlucHV0IFVJIGZvciBub24tbnVtZXJpYyB0ZXh0IGlucHV0IHR5cGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY5ODgKKyAg
ICAgICAgcmRhcjovLzc4MTAyOTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1Bl
cHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZDoKKwogMjAyMS0wMS0wNCAgSmVm
ZiBNaWxsZXIgIDxqZWZmbUBhcHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIHVzZXItdmlzaWJs
ZSBjb3B5cmlnaHQgc3RyaW5ncyB0byBpbmNsdWRlIDIwMjEKZGlmZiAtLWdpdCBhL1dlYktpdExp
YnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29y
ZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2
YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVy
VUlDb3JlLnRiZAppbmRleCBmOTQxYTllYWI3NWNkMGIxNDhmNDQ5YTU3Mzk4MDJmZWNiZmE0Mjc2
Li5iNzE0Nzc0MTQyMmE5ZTgwOTUyOTY3MTJjODM5ZjA1MjU1OTRjOWMyIDEwMDY0NAotLS0gYS9X
ZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvNy9QZXBw
ZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQKKysrIGIvV2ViS2l0TGlicmFyaWVz
L1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzcvUGVwcGVyVUlDb3JlLmZyYW1l
d29yay9QZXBwZXJVSUNvcmUudGJkCkBAIC04LDUgKzgsNSBAQCBleHBvcnRzOgogICAgIG9iamMt
Y2xhc3NlczogICAgWyBQVUlDUXVpY2tib2FyZExpc3RUcmF5QnV0dG9uLCBQVUlDQWN0aW9uR3Jv
dXAsIFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsLCBQVUlDQWN0aW9uQ29udHJvbGxlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgUFVJQ0Nyb3duSW5wdXRTZXF1ZW5jZXIsIFBVSUNQaWNrZXJW
aWV3LCBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbCwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0Nv
bnRyb2xsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIFBVSUNBcHBsaWNhdGlvbiwgUFVJQ1Jl
c291cmNlcywgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJQ1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFBVSUNRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXIsIFBVSUNQaWNrZXJWaWV3IF0KKyAgICAgICAgICAgICAgICAgICAgICAgUFVJ
Q1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJQ1BpY2tlclZpZXcsIFBVSUNUZXh0SW5wdXRD
b250ZXh0LCBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBdCiAuLi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431461</attachid>
            <date>2021-06-15 12:01:20 -0700</date>
            <delta_ts>2021-06-15 13:34:51 -0700</delta_ts>
            <desc>Remove unnecesary comment</desc>
            <filename>bug-226988-20210615120119.patch</filename>
            <type>text/plain</type>
            <size>57276</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZkZGM4Y2ZmNTBkMTcyMDgw
ODQzOTMxOWYxYjY3MWRmMzFjYjc1YjkuLjY3Zjk2Nzg4NmM4MDQwNDQ4Yzc3MGU1NzJhY2EzODE2
MGJlMmY2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgbG9naWMgb24gd2F0Y2hPUyBz
dWNoIHRoYXQgd2UncmUgYWJsZSB0byBwcmVzZW50IHRoZSBuZXcgKCJtb2Rlcm4iKSBVSSBmb3Ig
c2NyaWJibGUgdGV4dAorICAgICAgICBpbnB1dCBvbiB3YXRjaE9TIDgsIHJhdGhlciB0aGFuIGxl
Z2FjeSAoaW4tcHJvY2Vzcykgc2NyaWJibGUgVUkuIE92ZXJhbGwsIHRoaXMgcGF0Y2ggcmVtb3Zl
cworICAgICAgICBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWx0b2dldGhlci4gVGhp
cyBoYWQgdHdvIHN1YmNsYXNzZXM6IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciAodXNl
ZCBmb3IKKyAgICAgICAgZm9jdXNlZCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50
cykgYW5kIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZvciB0ZXh0IGlucHV0
IHR5cGVzKS4KKyAgICAgICAgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyIG5vdyBpbmhl
cml0cyBkaXJlY3RseSBmcm9tIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQK
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRzIGZyb20g
UFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXI7IHRoaXMgaW5oZXJpdGFuY2UgZnJv
bQorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBpbnN0ZWFkIG9m
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIGFsbG93cyB0aGUKKyAgICAgICAgV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdG8gc2hvdyB0ZXh0IHN1Z2dlc3Rpb25zIHVzaW5n
IGAtc2V0TWVzc2FnZXM6YCBvbgorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29u
dHJvbGxlciwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGN1c3RvbSBXZWJLaXQgY29kZSB0byBpbnNl
cnQgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgbW92ZSB0
aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG91dCBvZiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIsIGFuZCBpbnRvCisgICAgICAgIGVpdGhlciBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgb3IgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXI6CisKKyAg
ICAgICAgMS4gU3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCB1cGRhdGluZyBjb250ZXh0IHZpZXdz
IChpLmUuIHRoZSBkb21haW4gbmFtZSBoZWFkZXIgdmlldyBpbiBRdWlja2JvYXJkKSA9PgorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAyLiBMb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgbGFuZ3VhZ2Ugc2Vs
ZWN0aW9uIFVJID0+IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDMu
IFN1cHBvcnQgZm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbGxlY3Rpb24gdmlldyBjZWxscyBpbiBR
dWlja2JvYXJkID0+IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMgdG8gY3JlYXRlIGEgUFVJ
Q1RleHRJbnB1dENvbnRleHQgZnJvbSB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3Jt
YXRpb24gb3V0IGludG8gYSBzZXBhcmF0ZQorICAgICAgICBoZWxwZXIgbWV0aG9kLCBgLWNyZWF0
ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0YCwgYW5kIHVzZSBpdCB3aGVuIGJvdGggZGlyZWN0
bHkgbGF1bmNoaW5nIGludG8KKyAgICAgICAgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFuZCBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAoY2FuVXNlUXVpY2tib2Fy
ZENvbnRyb2xsZXJGb3IpOgorCisgICAgICAgIFJlbW92ZSBhIGNvbW1lbnQsIG5vdyB0aGF0IHdl
IGludGVuZCB0byBjb250aW51ZSB1c2luZyBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBm
b3Igbm9uLWtleWNoYWluLUF1dG9GaWxsLQorICAgICAgICBjb21wYXRpYmxlIHRleHQgZmllbGRz
IG1vdmluZyBmb3J3YXJkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZm9jdXNlZEZvcm1D
b250cm9sbGVyRGlkVXBkYXRlU3VnZ2VzdGlvbnM6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxl
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0Q29udGVudFR5cGVGb3JUZXN0aW5n
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdmlld0NvbnRyb2xsZXI6aW5wdXRDb250ZXh0
Vmlld0hlaWdodEZvclNpemU6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIHRoaXMgZGVs
ZWdhdGUgbWV0aG9kLCB3aGljaCB3YXMgKGVmZmVjdGl2ZWx5KSB1bnVzZWQgc2luY2Ugd2UganVz
dCBhc2sgZm9yCisgICAgICAgIGAtaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOmAg
ZnJvbSB0aGUgaW5wdXQgZGVsZWdhdGUgYW55d2F5cy4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29udHJvbGxlcjpdKTog
RGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgdGhpcyB0byBgLWFsbG93c0xhbmd1YWdlU2VsZWN0
aW9uRm9yTGlzdFZpZXdDb250cm9sbGVyOmAuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0
ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgUmVwbGFjZSB0aGlzIHdpdGggYC10ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9s
bGVyOmAsIHdoaWNoIHJldHVybnMgYSB3aG9sZSBQVUlDVGV4dElucHV0Q29udGV4dCBpbnN0ZWFk
CisgICAgICAgIG9mIGp1c3QgYSB0ZXh0IGNvbnRlbnQgdHlwZS4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBsaXN0Vmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0
VGV4dFN1Z2dlc3Rpb246XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIHNldmVyYWwgZGVs
ZWdhdGUgbWV0aG9kcyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyIHZpZXdXaWxsQXBwZWFyOl0pOgorCisg
ICAgICAgIFJlbW92ZSBzb21lIChkZWZ1bmN0KSBsb2dpYyBmb3Igb3ZlcnJpZGluZyB0aGUgc3Rh
dHVzIGJhciB3aGVuIHNob3dpbmcgUXVpY2tib2FyZCBpbnB1dCB2aWV3IGNvbnRyb2xsZXJzLiBU
aGlzCisgICAgICAgIHN0YXR1cyBiYXIgbWVjaGFuaXNtICh3aGljaCB3YXMgcHJldmlvdXNseSB1
c2VkIHRvIHNob3cgbGFiZWwgdGV4dCBmb3IgZm9ybSBjb250cm9scykgaGFzbid0IHdvcmtlZCBz
aW5jZQorICAgICAgICB3YXRjaE9TIDYsIGFuZCB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGlu
IGEgd2F5IHRoYXQgZG9lc24ndCB1c2UgUFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRWaWV3QXNz
ZXJ0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9s
bGVyLmguCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tTZWxlY3RNZW51SXRlbUNlbGwg
dG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUl0
ZW1DZWxsIGJhc2VsaW5lVG9Cb3R0b21TcGVjVmFsdWVdKToKKyAgICAgICAgKC1bV0tTZWxlY3RN
ZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCB0b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWVdKToK
KyAgICAgICAgKC1bV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCBiYXNlbGluZVRv
Qm90dG9tU3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlciBpbml0V2l0aERlbGVnYXRlOl0pOgorCisgICAgICAgIFNlZSBhYm92ZSBjb21tZW50IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgcmVsb2FkQ29udGV4dFZpZXddKToKKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF0p
OgorCisgICAgICAgIE1vdmUgbG9naWMgZm9yIHNob3dpbmcgYW5kIHVwZGF0aW5nIHRoZSBjb250
ZXh0IHZpZXcgb3V0IG9mIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciwgYW5kIGludG8K
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuIFNlZSBjb21tZW50cyBhYm92
ZS4KKworICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciByZXF1aXJlc051
bWVyaWNJbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBh
ZGRpdGlvbmFsVHJheUJ1dHRvbnNdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAoLVtXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciBoZWFkZXJDb250ZW50Vmlld0hlaWdodF0pOgorICAgICAgICAo
LVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBoZWFkZXJDb250ZW50Vmlld10pOgorICAg
ICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzaG91bGRTaG93TGFuZ3VhZ2VC
dXR0b25dKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgc3VwcG9y
dHNEaWN0YXRpb25JbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBzaG91bGRTaG93VHJheVZpZXddKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgc2hvdWxkU2hvd1RleHRGaWVsZF0pOgorCisgICAgICAgIE92ZXJyaWRlIHRo
aXMgYW5kIHJldHVybiBZRVMgZm9yIHRleHQgaW5wdXQgdHlwZXMgdGhhdCBkb24ndCByZXF1aXJl
IGFuIGFkZGl0aW9uYWwgbnVtZXJpYyBpbnB1dCB0cmF5IGJ1dHRvbi4KKyAgICAgICAgVGhpcyBh
bGxvd3MgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIgdG8gc2hvdyBhIG5hdGl2
ZSB0ZXh0IGZpZWxkIGNvbnRhaW5pbmcgdGhlIGlucHV0IHRleHQgaW5zaWRlCisgICAgICAgIHF1
aWNrYm9hcmQsIHdoaWNoICh3aGVuIHRhcHBlZCkgcHJlc2VudHMgbW9kZXJuIHRleHQgaW5wdXQg
VUkuCisKKyAgICAgICAgU2luY2Ugc2hvd2luZyB0aGUgdGV4dCBmaWVsZCBpcyBhcHBhcmVudGx5
IG11dHVhbGx5IGV4Y2x1c2l2ZSB0byBzaG93aW5nIGEgdHJheSB2aWV3LCB3ZSBhZGRpdGlvbmFs
bHkgb3ZlcnJpZGUKKyAgICAgICAgYC1zaG91bGRTaG93VHJheVZpZXdgIGFuZCByZXR1cm4gTk8g
Zm9yIG5vbi1udW1lcmljIHRleHQgaW5wdXRzLgorCisgICAgICAgICgtW1dLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyIHN1cHBvcnRzQXJvdWV0SW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdmlld0RpZExvYWRdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgd2lsbFByZXNlbnRBcm91ZXRWaWV3Q29u
dHJvbGxlcjpdKTogRGVsZXRlZC4KKworICAgICAgICBUaGVyZSdzIG5vIG5lZWQgdG8gb3ZlcnJp
ZGUgdGhpcyBkZWxlZ2F0ZSBtZXRob2QgYW55bW9yZSwgc2luY2UgdGhlIFBVSUNUZXh0SW5wdXRD
b250ZXh0J3MgYC1pbml0aWFsVGV4dGAgaXMKKyAgICAgICAgc3VmZmljaWVudCB0byBlbnN1cmUg
dGhhdCB0aGUgc2NyaWJibGUgdGV4dCBpbnB1dCBVSSBpcyBwcmVwb3B1bGF0ZWQgd2l0aCB0aGUg
Zm9jdXNlZCB0ZXh0IGZpZWxkJ3MgaW5pdGlhbCB0ZXh0CisgICAgICAgIGNvbnRlbnQuCisKKyAg
ICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgcmVsb2FkVGV4dFN1Z2dlc3Rp
b25zXSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYC11cGRhdGVUZXh0U3Vn
Z2VzdGlvbnM6YCwgYW5kIG1ha2UgaXQgdGFrZSBhIGxpc3Qgb2YgVUlUZXh0U3VnZ2VzdGlvbnMu
IFRoaXMgbWFrZXMgdGhlIGNvZGUgYQorICAgICAgICBiaXQgZWFzaWVyIHRvIGZvbGxvdyBhbmQg
YWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgYC10ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6YCBkZWxlZ2F0ZSBtZXRob2QuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgZGlkU2VsZWN0TGlzdEl0ZW1BdEluZGV4UGF0aDpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgZGlkU2VsZWN0TGlzdEl0ZW06
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIF9k
aWRTZWxlY3RMaXN0SXRlbTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0
Vmlld0NvbnRyb2xsZXIgbnVtYmVyT2ZMaXN0SXRlbXNdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVpZ2h0Rm9yTGlzdEl0ZW06d2lkdGg6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGNlbGxG
b3JMaXN0SXRlbTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgbGlzdEl0ZW1DZWxsUmV1c2VJZGVudGlmaWVyXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGxpc3RJdGVtQ2VsbENsYXNzXSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGl0ZW1DZWxs
Rm9yTGlzdEl0ZW06Zm9ySW5kZXhQYXRoOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSBh
bGwgdGhpcyBjb2RlIGZvciBzaG93aW5nIHRleHQgc3VnZ2VzdGlvbnMgaW4gUXVpY2tib2FyZCBV
SS4gU2luY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaXMgbm93IGEKKyAgICAgICAg
c3ViY2xhc3Mgb2YgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIsIHdlIGNhbiBu
b3cgc2ltcGx5IHVzZSB0aGUgYC1tZXNzYWdlc2AgcHJvcGVydHkgb2YgdG8gcG9wdWxhdGUKKyAg
ICAgICAgcXVpY2tib2FyZCB3aXRoIHRleHQgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDYtMTUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUGVybWl0IGFjY2Vz
cyB0byAncGxhdGZvcm0tbmFtZScgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaAppbmRleCA2YTMxNzUxNTVlNWIzOTcyZTI1NTQ2
ZjYxNDU3NTJkOWE5NmMyZDljLi40ZTgyNzQ4ZjNlNjM3NjcwMzE0NDhiZTI5MjBiMWJlZGJlNDIx
MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBl
clVJQ29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVw
cGVyVUlDb3JlU1BJLmgKQEAgLTM5LDkgKzM5LDkgQEAKICNpbXBvcnQgPFBlcHBlclVJQ29yZS9Q
VUlDUGlja2VyVmlld19Qcml2YXRlLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNr
Ym9hcmRBcm91ZXRWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNR
dWlja2JvYXJkTGFuZ3VhZ2VDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJ
Q1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9Q
VUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlclN1YmNsYXNzLmg+CiAjaW1wb3J0IDxQZXBw
ZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld1NwZWNzLmg+CisjaW1wb3J0IDxQZXBwZXJV
SUNvcmUvUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBl
cHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxQZXBw
ZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0
IDxQZXBwZXJVSUNvcmUvUFVJQ1Jlc291cmNlcy5oPgpAQCAtMTY5LDkgKzE2OSwxMSBAQCBleHRl
cm4gVUlCdXR0b25UeXBlIGNvbnN0IFBVSUNCdXR0b25UeXBlUGlsbDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICppbml0aWFsVGV4dDsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzdHJvbmcsIG51bGxhYmxlKSBVSUNvbG9yICp0aW50Q29sb3I7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc3Ryb25nKSBVSVRleHRDb250ZW50VHlwZSBzZWNvbmRhcnlUZXh0Q29udGVudFR5
cGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBOU0ludGVnZXIgbWluaW11bUxlbmd0
aDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5L
ZXlUeXBlOworQHByb3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBtaW5pbXVtTGVuZ3RoOwor
QHByb3BlcnR5IChub25hdG9taWMpIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5LZXlUeXBlOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
SGVhZGVyVGV4dDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFjY2VwdHNFbW9qaTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZFByZXNlbnRNb2Rlcm5UZXh0SW5wdXRVSTsK
IAogQGVuZAogCkBAIC0yMTksMTEgKzIyMSwxNiBAQCBleHRlcm4gVUlCdXR0b25UeXBlIGNvbnN0
IFBVSUNCdXR0b25UeXBlUGlsbDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUFVJ
Q1RhYmxlVmlldyAqbGlzdFZpZXc7CiBAcHJvcGVydHkgKHN0cm9uZywgbm9uYXRvbWljLCByZWFk
b25seSkgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld1NwZWNzICpzcGVjczsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSBVSVRleHRDb250ZW50VHlwZSB0ZXh0Q29udGVudFR5cGU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nKSBQVUlDVGV4dElucHV0Q29udGV4dCAqdGV4dElucHV0Q29u
dGV4dDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8UFVJQ1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGlj
dGF0aW9uTW9kZSlkaWN0YXRpb25Nb2RlIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7CiAtICh2
b2lkKXJlbG9hZExpc3RJdGVtczsKIC0gKHZvaWQpcmVsb2FkSGVhZGVyQ29udGVudFZpZXc7CiBA
ZW5kCiAKK0BpbnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIgOiBQ
VUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgorQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIE5TQXJyYXkgKm1lc3NhZ2VzOworQGVuZAorCiBAaW50ZXJmYWNlIFBVSUNRdWlja2JvYXJk
QXJvdWV0Vmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIFVJVGV4dENvbnRlbnRUeXBlIHRleHRD
b250ZW50VHlwZTsKIC0gKHZvaWQpc2V0SW5wdXRUZXh0OihudWxsYWJsZSBOU1N0cmluZyAqKWlu
cHV0VGV4dCBzZWxlY3Rpb25SYW5nZTooTlNSYW5nZSlzZWxlY3Rpb25SYW5nZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCA4Y2ZjNjA3NGQwNTYyYWE1ODJjNWMwZDIzNDg4ZWU2MzZiMmM5YTlj
Li5iZDEwMGViZmViNDEyZTAwOGRlNWNjMzgyZDRlM2NhYmJjNWU0ZGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC00NTQsNyArNDU0LDYgQEAgVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1T
ZWxlY3RQaWNrZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5t
bQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXcubW0KIFVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbQotVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tT
ZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBp
Y2tlclZpZXdDb250cm9sbGVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjODc5ZTlkZTBkMWZkMDA5
NWFiNzgwYjEyNjNhOGY2YWJhMmFhMGRhLi5lYjE5OTg2NWMwMDQwNDRiMjZiZTBiZDFlYTI2YTgw
YjViZmI4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY0LDcgKzY0LDcgQEAKICNpbXBvcnQgIldL
UHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9u
SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmgi
Ci0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRX
ZWJFdmVudC5oIgogI2ltcG9ydCAiV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKQEAg
LTY2NjYsMjIgKzY2NjYsMjIgQEAgLSAodm9pZClyZW1vdmVGb2N1c2VkRm9ybUNvbnRyb2xPdmVy
bGF5CiAgICAgW3NlbGYgc2V0SW5wdXREZWxlZ2F0ZTpuaWxdOwogfQogCi0jaWYgSEFWRShRVUlD
S0JPQVJEX0NPTlRST0xMRVIpCi0KLS0gKFJldGFpblB0cjxQVUlDUXVpY2tib2FyZENvbnRyb2xs
ZXI+KV9jcmVhdGVRdWlja2JvYXJkQ29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxlciAqKXByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcgorLSAoUmV0YWluUHRyPFBVSUNUZXh0SW5wdXRDb250ZXh0Pilj
cmVhdGVRdWlja2JvYXJkVGV4dElucHV0Q29udGV4dAogewotICAgIGF1dG8gcXVpY2tib2FyZENv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFsbG9jXSBpbml0
XSk7Ci0KLSAgICBhdXRvIHN1Z2dlc3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5T
U3RyaW5nICo+IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OltfZm9ybUlucHV0U2Vzc2lvbiBzdWdn
ZXN0aW9uc10uY291bnRdKTsKLSAgICBmb3IgKFVJVGV4dFN1Z2dlc3Rpb24gKnN1Z2dlc3Rpb24g
aW4gW19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXSkKLSAgICAgICAgW3N1Z2dlc3Rpb25z
IGFkZE9iamVjdDpzdWdnZXN0aW9uLmlucHV0VGV4dF07Ci0KICAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdE5TKFtbUFVJQ1RleHRJbnB1dENvbnRleHQgYWxsb2NdIGluaXRdKTsKICAgICBbc2VsZiBf
dXBkYXRlVGV4dElucHV0VHJhaXRzOmNvbnRleHQuZ2V0KCldOwotICAgIFtjb250ZXh0IHNldFN1
Z2dlc3Rpb25zOnN1Z2dlc3Rpb25zLmdldCgpXTsKICAgICBbY29udGV4dCBzZXRJbml0aWFsVGV4
dDpfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZV07CiAgICAgW2NvbnRleHQgc2V0QWNj
ZXB0c0Vtb2ppOllFU107CiAgICAgW2NvbnRleHQgc2V0U2hvdWxkUHJlc2VudE1vZGVyblRleHRJ
bnB1dFVJOllFU107CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKyNpZiBIQVZFKFFVSUNLQk9B
UkRfQ09OVFJPTExFUikKKworLSAoUmV0YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4p
X2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyCit7CisgICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0
TlMoW1tQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBzZWxmLmNyZWF0ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0OwogICAgIFtxdWlj
a2JvYXJkQ29udHJvbGxlciBzZXRRdWlja2JvYXJkUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyOnBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlcl07CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldEV4
Y2x1ZGVkRnJvbVNjcmVlbkNhcHR1cmU6W2NvbnRleHQgaXNTZWN1cmVUZXh0RW50cnldXTsKICAg
ICBbcXVpY2tib2FyZENvbnRyb2xsZXIgc2V0VGV4dElucHV0Q29udGV4dDpjb250ZXh0LmdldCgp
XTsKQEAgLTY2OTIsNyArNjY5Miw2IEBAIC0gKFJldGFpblB0cjxQVUlDUXVpY2tib2FyZENvbnRy
b2xsZXI+KV9jcmVhdGVRdWlja2JvYXJkQ29udHJvbGxlcjooVUlWaWV3Q29udHJvCiAKIHN0YXRp
YyBib29sIGNhblVzZVF1aWNrYm9hcmRDb250cm9sbGVyRm9yKFVJVGV4dENvbnRlbnRUeXBlIHR5
cGUpCiB7Ci0gICAgLy8gV2UgY2FuIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uIG9uY2UgUFVJQ1F1
aWNrYm9hcmRDb250cm9sbGVyIHN1cHBvcnRzIGRpc3BsYXlpbmcgdGV4dCBzdWdnZXN0aW9uIHN0
cmluZ3MgdGhhdCBhcmUgbm90IGxvZ2luIGNyZWRlbnRpYWxzLgogICAgIHJldHVybiBbdHlwZSBp
c0VxdWFsVG9TdHJpbmc6VUlUZXh0Q29udGVudFR5cGVVc2VybmFtZV0gfHwgW3R5cGUgaXNFcXVh
bFRvU3RyaW5nOlVJVGV4dENvbnRlbnRUeXBlUGFzc3dvcmRdIHx8IFt0eXBlIGlzRXF1YWxUb1N0
cmluZzpVSVRleHRDb250ZW50VHlwZUVtYWlsQWRkcmVzc107CiB9CiAKQEAgLTY5MzEsNyArNjkz
MCw3IEBAIC0gKHZvaWQpZm9jdXNlZEZvcm1Db250cm9sbGVyRGlkVXBkYXRlU3VnZ2VzdGlvbnM6
KFdLRm9jdXNlZEZvcm1Db250cm9sVmlldyAqKXZpCiAgICAgaWYgKF9pc0JsdXJyaW5nRm9jdXNl
ZEVsZW1lbnQgfHwgIVtfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNL
aW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVz
ZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciByZWxvYWRUZXh0U3VnZ2VzdGlvbnNd
OworICAgIFsoV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkRnVsbFNj
cmVlbklucHV0Vmlld0NvbnRyb2xsZXIgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOltfZm9jdXNlZEZv
cm1Db250cm9sVmlldyBzdWdnZXN0aW9uc11dOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXS1NlbGVj
dE1lbnVMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQpAQCAtOTE5NiwxNiArOTE5NSw3IEBAIC0g
KHZvaWQpcXVpY2tib2FyZElucHV0Q2FuY2VsbGVkOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyICopcXVpY2tib2FyZAogCiAjcHJhZ21hIG1hcmsgLSBXS1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlCiAKLS0gKENHRmxvYXQpdmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXpl
OihDR1NpemUpc2l6ZQotewotICAgIGlkIDxfV0tJbnB1dERlbGVnYXRlPiBkZWxlZ2F0ZSA9IHNl
bGYud2ViVmlldy5faW5wdXREZWxlZ2F0ZTsKLSAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmZvY3VzZWRFbGVtZW50Q29udGV4dFZpZXdIZWln
aHRGb3JGaXR0aW5nU2l6ZTppbnB1dFNlc3Npb246KV0pCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgcmV0dXJuIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZm9jdXNlZEVsZW1lbnRD
b250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdTaXplOnNpemUgaW5wdXRTZXNzaW9uOl9mb3JtSW5w
dXRTZXNzaW9uLmdldCgpXTsKLX0KLQotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1l
bnVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyCistIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uRm9yTGlzdFZpZXdDb250
cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewogICAg
IHN3aXRjaCAoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6CkBAIC05MjcyLDIwICs5MjYy
LDkgQEAgLSAoV0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3
Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0VmkKICAgICB9CiB9CiAKLS0gKE5TU3RyaW5nICop
dGV4dENvbnRlbnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKKy0gKFBVSUNUZXh0SW5wdXRDb250ZXh0ICopdGV4dElu
cHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyCiB7Ci0gICAgcmV0dXJuIHNlbGYudGV4dENvbnRlbnRUeXBlRm9y
UXVpY2tib2FyZDsKLX0KLQotLSAoTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1
Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIKLXsKLSAgICByZXR1cm4gW19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3
IHN1Z2dlc3Rpb25zXTsKLX0KLQotLSAodm9pZClsaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RUZXh0U3VnZ2VzdGlv
bjooVUlUZXh0U3VnZ2VzdGlvbiAqKXN1Z2dlc3Rpb24KLXsKLSAgICBbc2VsZiBpbnNlcnRUZXh0
U3VnZ2VzdGlvbjpzdWdnZXN0aW9uXTsKLSAgICBbc2VsZiBkaXNtaXNzUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyQW5kUmV2ZWFsRm9jdXNlZEZvcm1PdmVybGF5SWZOZWNlc3Nhcnk6Y29udHJvbGxl
cl07CisgICAgcmV0dXJuIHNlbGYuY3JlYXRlUXVpY2tib2FyZFRleHRJbnB1dENvbnRleHQuYXV0
b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3
Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKQEAg
LTkzMDMsMTAgKzkyODIsOCBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJlUmVjb2duaXplZDooVUlH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB9CiAjZW5kaWYKIAotCi0KLQog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKwogLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1l
bnVzSWZOZWVkZWQKIHsKICAgICBpZiAoIV9wYWdlLT5wcmVmZXJlbmNlcygpLmFwcEhpZ2hsaWdo
dHNFbmFibGVkKCkgfHwgIXNlbGYud2luZG93IHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxl
Y3Rpb25Jc1JhbmdlKQpAQCAtMTAzNjMsNyArMTAzNDAsNyBAQCAtIChOU1N0cmluZyAqKXRleHRD
b250ZW50VHlwZUZvclRlc3RpbmcKIHsKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQogICAgIGlm
IChbX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6
W1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBb
c2VsZiB0ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVy
LmdldCgpXTsKKyAgICAgICAgcmV0dXJuIFsoV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
KilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgdGV4dElucHV0Q29udGV4
dF0udGV4dENvbnRlbnRUeXBlOwogI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQogICAg
IGlmIChfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiBbX3By
ZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyIHRleHRJbnB1dENvbnRleHRdLnRleHRDb250ZW50
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Rh
dGVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKaW5kZXggZTgxZTM0MGVlNjNhYWY2NDcx
MDJhMWIyOTc5ZDg1MjFhNjBhMmVkOS4uN2I1ZjQ4ZDcyODVkZTcwZDA0ODE3ZTMxMDIxYWI1NjYy
YjEyZTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAK
IAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyIDogUFVJQ1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KaW5k
ZXggNDc0ODhmZGUyMmE5ZThkOTJkMWQ5MzVjMTA4N2E1MDU3NWYxOWIzNy4uYWJkMGE3NGY2NDE1
NzQwOTNlMDcyOTljMzJlNzQwNWY3NWIwNjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxl
ci5tbQpAQCAtMzA2LDggKzMwNiw2IEBAIC0gKHZvaWQpdmlld1dpbGxBcHBlYXI6KEJPT0wpYW5p
bWF0ZWQKICAgICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gW1tQVUlDQXBwbGljYXRpb24gc2hhcmVk
UFVJQ0FwcGxpY2F0aW9uXSBfdGFrZVN0YXR1c0Jhckdsb2JhbENvbnRleHRBc3NlcnRpb25Bbmlt
YXRlZDpOT107CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlv
bikgbmFtZTpQVUlDU3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2hhbmRsZVN0YXR1c0Jhck5h
dmlnYXRpb24pIG5hbWU6UFVJQ1N0YXR1c0JhclRpdGxlVGFwcGVkTm90aWZpY2F0aW9uIG9iamVj
dDpuaWxdOwotCi0gICAgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihzZWxmLCBzZWxm
LmRlbGVnYXRlKTsKIH0KIAogLSAodm9pZCl2aWV3RGlkQXBwZWFyOihCT09MKWFuaW1hdGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgyOThhZDA1MTdkOTg0OTZkMDM5ZDhjZmI4OWY2MTk5ZTViYWFmYWYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBIQVZFKFBFUFBFUl9VSV9D
T1JFKQotCi0jaW1wb3J0ICJQZXBwZXJVSUNvcmVTUEkuaCIKLQotQGludGVyZmFjZSBXS1F1aWNr
Ym9hcmRMaXN0SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbAotQGVuZAotCi0j
aWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi1AaW50ZXJmYWNlIFdLUXVpY2ti
b2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogUFVJQ1F1aWNrYm9hcmRMaXN0Q29sbGVj
dGlvblZpZXdJdGVtQ2VsbAotQGVuZAotI2VuZGlmCi0KLUBjbGFzcyBXS1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXI7Ci0KLUBwcm90b2NvbCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+Ci0KLS0gKENHRmxv
YXQpdmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOihDR1NpemUpc2l6ZTsKLS0gKFVJVmll
dyAqKWlucHV0Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKWlucHV0TGFiZWxUZXh0Rm9y
Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
OwotLSAoTlNTdHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChCT09MKXNob3VsZERpc3BsYXlJ
bnB1dENvbnRleHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyICopY29udHJvbGxlcjsKLS0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25N
ZW51Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlcjsKLQotQGVuZAotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RWaWV3Q29u
dHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyCi0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZT4pZGVsZWdhdGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIgTlNfVU5BVkFJTEFCTEU7Ci0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQ8UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGljdGF0aW9uTW9kZSlk
aWN0YXRpb25Nb2RlIE5TX1VOQVZBSUxBQkxFOwotCi0tICh2b2lkKXJlbG9hZENvbnRleHRWaWV3
OwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOwotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVz
QmFyRm9yQ29udHJvbGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICosIGlkIDxXS1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPik7Ci0KLSNlbmRpZiAvLyBIQVZFKFBFUFBF
Ul9VSV9DT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzOGQ3NzkzZjIzYzI0NzBhZTg2OWJlYTA1N2M3MjJhOTVl
MWNiYzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIu
aCIKLQotI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLQotc3RhdGljIGNvbnN0IENHRmxvYXQgaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxpbmUgPSAy
NjsKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7Ci0K
LUBpbXBsZW1lbnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKLQotLSAoQ0dGbG9hdCl0
b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWUKLXsKLSAgICByZXR1cm4gaXRlbUNlbGxUb3BUb0xh
YmVsQmFzZWxpbmU7Ci19Ci0KLS0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZQot
ewotICAgIHJldHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Ci19Ci0KLUBlbmQKLQotI2lm
IEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCi1AaW1wbGVtZW50YXRpb24gV0tR
dWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKLQotLSAoQ0dGbG9hdCl0b3BUb0xh
YmVsQmFzZWxpbmVTcGVjVmFsdWUKLXsKLSAgICByZXR1cm4gaXRlbUNlbGxUb3BUb0xhYmVsQmFz
ZWxpbmU7Ci19Ci0KLS0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZQotewotICAg
IHJldHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8v
IEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCi1AaW50ZXJmYWNlIFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlciAoKSA8UFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xs
ZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlciB7Ci0gICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKLSAgICBSZXRh
aW5QdHI8VUlWaWV3PiBfY29udGV4dFZpZXc7Ci0gICAgUmV0YWluUHRyPFBVSUNTdGF0dXNCYXJH
bG9iYWxDb250ZXh0Vmlld0Fzc2VydGlvbj4gX3N0YXR1c0JhckFzc2VydGlvbjsKLX0KLQotQGR5
bmFtaWMgZGVsZWdhdGU7Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8
V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBpZiAo
c2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6UFVJ
Q0RpY3RhdGlvbk1vZGVUZXh0XSkKLSAgICAgICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZ
RVM7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCl1cGRhdGVDb250ZXh0Vmlld0lm
TmVlZGVkCi17Ci0gICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3OwotICAg
IGlmIChbc2VsZi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RW
aWV3Q29udHJvbGxlcjpzZWxmXSkKLSAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYuZGVsZWdh
dGUgaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGVsc2UKLSAg
ICAgICAgX2NvbnRleHRWaWV3ID0gbmlsOwotCi0gICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUg
PSBOTzsKLX0KLQotLSAoQk9PTClwcmVmZXJzU3RhdHVzQmFySGlkZGVuCi17Ci0gICAgcmV0dXJu
IE5POwotfQotCi0tICh2b2lkKXZpZXdXaWxsQXBwZWFyOihCT09MKWFuaW1hdGVkCi17Ci0gICAg
W3N1cGVyIHZpZXdXaWxsQXBwZWFyOmFuaW1hdGVkXTsKLQotICAgIF9zdGF0dXNCYXJBc3NlcnRp
b24gPSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dIF90YWtlU3RhdHVz
QmFyR2xvYmFsQ29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKLQotICAgIE5TTm90aWZpY2F0
aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07
Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxl
U3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0
b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2hhbmRsZVN0YXR1c0Jhck5hdmlnYXRpb24pIG5h
bWU6UFVJQ1N0YXR1c0JhclRpdGxlVGFwcGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotCi0g
ICAgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihzZWxmLCBzZWxmLmRlbGVnYXRlKTsK
LX0KLQotLSAodm9pZCl2aWV3RGlkRGlzYXBwZWFyOihCT09MKWFuaW1hdGVkCi17Ci0gICAgW3N1
cGVyIHZpZXdEaWREaXNhcHBlYXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlv
biA9IG5pbDsKLQotICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgW2NlbnRlciByZW1vdmVPYnNlcnZlcjpz
ZWxmIG5hbWU6UFVJQ1N0YXR1c0Jhck5hdmlnYXRpb25CYWNrQnV0dG9uUHJlc3NlZE5vdGlmaWNh
dGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQ
VUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0KLS0g
KHZvaWQpX2hhbmRsZVN0YXR1c0Jhck5hdmlnYXRpb24KLXsKLSAgICBbc2VsZi5kZWxlZ2F0ZSBx
dWlja2JvYXJkSW5wdXRDYW5jZWxsZWQ6c2VsZl07Ci19Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4
dFZpZXcKLXsKLSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLSAgICBbc2VsZiBy
ZWxvYWRIZWFkZXJDb250ZW50Vmlld107Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0JFR0lOCi0KLS0gKFBVSUNBY3Rpb25Db250cm9sbGVyICopYWN0aW9uQ29udHJvbGxl
cgotewotICAgIGlmICghW3NlbGYuZGVsZWdhdGUgYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25NZW51
Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
UFVJQ0FjdGlvbkl0ZW0gKmxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSA9IFtzZWxmLmxhbmd1
YWdlQ29udHJvbGxlciBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0ZW1Gb3JWaWV3Q29udHJvbGxl
cjpzZWxmXTsKLSAgICBhdXRvIGFjdGlvbkdyb3VwID0gYWRvcHROUyhbW1BVSUNBY3Rpb25Hcm91
cCBhbGxvY10gaW5pdFdpdGhBY3Rpb25JdGVtczpAWyBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0
ZW0gXSBhY3Rpb25TdHlsZTpQVUlDQWN0aW9uU3R5bGVBdXRvbWF0aWNdKTsKLSAgICByZXR1cm4g
YWRvcHROUyhbW1BVSUNBY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGlvbkdyb3Vw
OmFjdGlvbkdyb3VwLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKLX0KLQotQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECi0KLSNwcmFnbWEgbWFyayAtIFBVSUNRdWlja2JvYXJkTGFu
Z3VhZ2VDb250cm9sbGVyRGVsZWdhdGUKLQotLSAodm9pZClsYW5ndWFnZUNvbnRyb2xsZXJEaWRD
aGFuZ2VQcmltYXJ5TGFuZ3VhZ2U6KFBVSUNRdWlja2JvYXJkTGFuZ3VhZ2VDb250cm9sbGVyICop
bGFuZ3VhZ2VDb250cm9sbGVyCi17Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocXVpY2tib2FyZDpsYW5ndWFnZURpZENoYW5nZTopXSkKLSAgICAg
ICAgW3NlbGYuZGVsZWdhdGUgcXVpY2tib2FyZDpzZWxmIGxhbmd1YWdlRGlkQ2hhbmdlOmxhbmd1
YWdlQ29udHJvbGxlci5wcmltYXJ5TGFuZ3VhZ2VdOwotfQotCi0jcHJhZ21hIG1hcmsgLSBRdWlj
a2JvYXJkIHN1YmNsYXNzaW5nCi0KLS0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZpZXdIZWlnaHQK
LXsKLSAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKLQotICAgIHJldHVybiBb
X2NvbnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXS5o
ZWlnaHQ7Ci19Ci0KLS0gKFVJVmlldyAqKWhlYWRlckNvbnRlbnRWaWV3Ci17Ci0gICAgW3NlbGYg
dXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF07Ci0KLSAgICBDR0Zsb2F0IHZpZXdXaWR0aCA9IENH
UmVjdEdldFdpZHRoKHNlbGYuY29udGVudFZpZXcuYm91bmRzKTsKLSAgICBDR1NpemUgc2l6ZVRo
YXRGaXRzID0gW19jb250ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3Vu
ZHMuc2l6ZV07Ci0gICAgW19jb250ZXh0VmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKCh2aWV3V2lk
dGggLSBzaXplVGhhdEZpdHMud2lkdGgpIC8gMiwgMCwgc2l6ZVRoYXRGaXRzLndpZHRoLCBzaXpl
VGhhdEZpdHMuaGVpZ2h0KV07Ci0gICAgW19jb250ZXh0VmlldyBsYXlvdXRTdWJ2aWV3c107Ci0g
ICAgcmV0dXJuIF9jb250ZXh0Vmlldy5nZXQoKTsKLX0KLQotQGVuZAotCi12b2lkIGNvbmZpZ3Vy
ZVN0YXR1c0JhckZvckNvbnRyb2xsZXIoUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqY29u
dHJvbGxlciwgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRl
KQotewotICAgIC8vIEFuIGludGVybmFsIGNsaWVudCAoZS5nLiBTYWZhcmkncyBtb2RhbCBzaGVl
dCkgbWF5IGhhdmUgbW92ZWQgdGhlIHN0YXR1cyBiYXIgb2Zmc2NyZWVuLgotICAgIC8vIEJlZm9y
ZSB1cGRhdGluZyB0aGUgc3RhdHVzIGJhciwgbWFrZSBzdXJlIHRoYXQgd2UgYnJpbmcgdGhlIHN0
YXR1cyBiYXIgYmFjayB0byBpdHMgb3JpZ2luYWwgcG9zaXRpb24uCi0gICAgUFVJQ1N0YXR1c0Jh
ciAqc3RhdHVzQmFyID0gW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dLl9w
dWljU3RhdHVzQmFyOwotICAgIHN0YXR1c0Jhci5mcmFtZSA9IENHUmVjdCB7IENHUG9pbnRaZXJv
LCBzdGF0dXNCYXIuZnJhbWUuc2l6ZSB9OwotCi0gICAgUFVJQ0FwcGxpY2F0aW9uU3RhdHVzQmFy
SXRlbSAqaXRlbSA9IGNvbnRyb2xsZXIucHVpY19hcHBsaWNhdGlvblN0YXR1c0Jhckl0ZW07Ci0g
ICAgaXRlbS50aXRsZSA9IFtkZWxlZ2F0ZSBpbnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVy
OmNvbnRyb2xsZXJdOwotICAgIGl0ZW0udGl0bGVDb2xvciA9IFtVSUNvbG9yIHN5c3RlbUJsdWVD
b2xvcl07Ci0gICAgaXRlbS5uYXZVSUJhY2tCdXR0b25EaXNhYmxlZCA9IE5POwotICAgIGl0ZW0u
c2hvd05hdmlnYXRpb25VSSA9IFlFUzsKLSAgICBpdGVtLnRpdGxlSW50ZXJhY3RpdmUgPSBZRVM7
Ci0gICAgW2l0ZW0gY29tbWl0Q2hhbmdlc0FuaW1hdGVkOk5PXTsKLX0KLQotI2VuZGlmIC8vIEhB
VkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMDRjYzVhNjk0MDRlYTg1M2U1ZmQ1ZjYwYzAyOWZlZWJkODMzYmM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaApAQCAtMCwwICsxLDM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCisKKyNpbXBvcnQgIlBlcHBlclVJQ29y
ZVNQSS5oIgorCitAcHJvdG9jb2wgV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA8
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPgorCistIChOU1N0cmluZyAqKWlu
cHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyOworLSAoTlNTdHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJv
bGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CisKK0BlbmQK
KworI2VuZGlmIC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLmgKaW5kZXggYzgxMDIwODY2OWI0MTY0YTUxZDk2Yjc0OThjMTE4ODI4Mjg5YmUz
NS4uZTY5ZmIwMTE1MzI1MzRjZWUxZjkyMTgxNTZkMzI0MWU3NWYxNTVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVj
dE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQ
RVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
LmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBj
bGFzcyBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXI7CiAKQEAgLTQxLDkgKzQxLDExIEBA
CiAKIEBlbmQKIAotQGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIgOiBX
S1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51TGlz
dFZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKIAogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1NlbGVjdE1lbnVMaXN0Vmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8UFVJQ1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGljdGF0aW9uTW9k
ZSlkaWN0YXRpb25Nb2RlIE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29kZXI6KE5TQ29kZXIgKiljb2RlciBOU19VTkFWQUlMQUJMRTsKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHdlYWspIGlkIDxXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4g
ZGVsZWdhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDJk
MzAxOWZkNzQzYWJlNTMwOTY3MTI2Mzc5ZWMxZThlYmM4MmM1ZmQuLjc4ZDRiNzMwMGVhMjNmNDc4
NmM4YjFiZWJjYTNkOWNmOGRlOTM3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlci5tbQpAQCAtNDMsOCArNDMsMTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUFVJ
Q1F1aWNrYm9hcmRMaXN0U2VjdGlvbikgewogICAgIFBVSUNRdWlja2JvYXJkTGlzdFNlY3Rpb25D
b250ZW50VW5hdmFpbGFibGUsCiB9OwogCi0vLyBGSVhNRTogVGhpcyBtZXRob2QgY2FuIGJlIHJl
bW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vNTc4MDc0NDU+IGxhbmRzIGluIGEgYnVpbGQuCi1A
aW50ZXJmYWNlIFdLU2VsZWN0TWVudUl0ZW1DZWxsIDogV0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxs
CitzdGF0aWMgY29uc3RleHByIENHRmxvYXQgaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxpbmUgPSAy
NjsKK3N0YXRpYyBjb25zdGV4cHIgQ0dGbG9hdCBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b20gPSA4
OworCisvLyBGSVhNRTogVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81
NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51SXRlbUNl
bGwgOiBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBVSUltYWdlVmlldyAqaW1hZ2VWaWV3OwogQGVuZAogCkBAIC01Miw3ICs1NSw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1NlbGVjdE1lbnVJdGVtQ2VsbCB7CiAgICAgUmV0YWluUHRyPFVJ
SW1hZ2VWaWV3PiBfaW1hZ2VWaWV3OwogfQogCi0tIChpbnN0YW5jZXR5cGUpIGluaXRXaXRoU3R5
bGU6KFVJVGFibGVWaWV3Q2VsbFN0eWxlKXN0eWxlIHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcg
KilyZXVzZUlkZW50aWZpZXIKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN0eWxlOihVSVRhYmxl
Vmlld0NlbGxTdHlsZSlzdHlsZSByZXVzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopcmV1c2VJZGVu
dGlmaWVyCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aFN0eWxlOnN0eWxlIHJl
dXNlSWRlbnRpZmllcjpyZXVzZUlkZW50aWZpZXJdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAg
LTcxLDExICs3NCwyMSBAQCAtIChVSUltYWdlVmlldyAqKWltYWdlVmlldwogICAgIHJldHVybiBf
aW1hZ2VWaWV3LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNW
YWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKK30KKworLSAo
Q0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7CisgICAgcmV0dXJuIGl0ZW1DZWxs
QmFzZWxpbmVUb0JvdHRvbTsKK30KKwogQGVuZAogCiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTExF
Q1RJT05fVklFV1MpCiAKLUBpbnRlcmZhY2UgV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVt
Q2VsbCA6IFdLUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsCitAaW50ZXJmYWNl
IFdLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RD
b2xsZWN0aW9uVmlld0l0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJ
SW1hZ2VWaWV3ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTEwMiw2ICsxMTUsMTYgQEAgLSAoVUlJ
bWFnZVZpZXcgKilpbWFnZVZpZXcKICAgICByZXR1cm4gX2ltYWdlVmlldy5nZXQoKTsKIH0KIAor
LSAoQ0dGbG9hdCl0b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRl
bUNlbGxUb3BUb0xhYmVsQmFzZWxpbmU7Cit9CisKKy0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRv
bVNwZWNWYWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Cit9CisK
IEBlbmQKIAogI2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQpAQCAt
MTE1LDcgKzEzOCw3IEBAIEBkeW5hbWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEZWxlZ2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRl
PilkZWxlZ2F0ZQogewotICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxlZ2F0
ZV07CisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlv
bk1vZGU6UFVJQ0RpY3RhdGlvbk1vZGVUZXh0XTsKIH0KIAogLSAodm9pZCl2aWV3RGlkTG9hZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaAppbmRleCBlMTI5MmZiZDMzYTU3Y2Y2Njdh
NDdlYTRlMTMyNTE0MDE5Y2VkNTcyLi44ZWIyYzM2NDJkODkxYzdkNWEwMTRjMmY2YjIyZmE1NzUw
NjdmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaApAQCAtMjcsNyArMjcs
NyBAQAogCiAjaWYgSEFWRShQRVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ckRlbGVnYXRlLmgiCiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTnVtYmVyUGFkSW5w
dXRNb2RlKSB7CiAgICAgV0tOdW1iZXJQYWRJbnB1dE1vZGVOb25lLApAQCAtNDEsMTcgKzQxLDIx
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTnVtYmVyUGFkSW5wdXRNb2RlKSB7CiBA
cHJvdG9jb2wgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA8V0tRdWlja2Jv
YXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KIAogLSAoV0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVt
ZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5cGVGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcjsKLS0gKE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXRleHRTdWdnZXN0aW9uc0Zv
ckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyOwotLSAodm9pZClsaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RUZXh0U3VnZ2VzdGlvbjooVUlUZXh0U3Vn
Z2VzdGlvbiAqKXN1Z2dlc3Rpb247Ci0tIChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlz
dFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxl
cjsKKy0gKFBVSUNUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3
Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwor
LSAoVUlWaWV3ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2ti
b2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKy0gKEJPT0wpYWxsb3dzRGljdGF0aW9u
SW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlcjsKKy0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmll
d0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsK
Ky0gKEJPT0wpc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZpZXdGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwogCiBAZW5kCiAK
LUBpbnRlcmZhY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgOiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIKK0BpbnRlcmZhY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgOiBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+KWRlbGVnYXRlIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7Ci0tICh2b2lkKXJlbG9h
ZFRleHRTdWdnZXN0aW9uczsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25N
b2RlOihQVUlDRGljdGF0aW9uTW9kZSlkaWN0YXRpb25Nb2RlIE5TX1VOQVZBSUxBQkxFOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlciBOU19VTkFWQUlMQUJM
RTsKKy0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4dFN1Z2dlc3Rp
b24gKj4gKilzdWdnZXN0aW9uczsKKy0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7CiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZT4gZGVsZWdhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQpp
bmRleCAxYmIxMjNiOWIxYmM2ZDEwNzNlMDJmZTY4ZThjYjEzOWE5MTM3YWZkLi4zNDllMTY0Njdl
MDgxY2RjYTUyNThiZjdmMmE2NDk3YWU3ZGVjOTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyLm1tCkBAIC0zMSwxMSArMzEsOSBAQAogI2ltcG9ydCAiV0tOdW1iZXJQYWRWaWV3
Q29udHJvbGxlci5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCB0ZXh0U3VnZ2VzdGlvbkJ1dHRvbkhlaWdodCA9IDQ0Owotc3RhdGljIGNvbnN0IENH
RmxvYXQgdGV4dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJnaW4gPSA5Owotc3RhdGljIE5T
U3RyaW5nICp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldlYktpdFF1aWNr
Ym9hcmRUZXh0U3VnZ2VzdGlvbkNlbGwiOwotCiBAaW1wbGVtZW50YXRpb24gV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgeworICAgIEJPT0wgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGU7Cisg
ICAgUmV0YWluUHRyPFVJVmlldz4gX2NvbnRleHRWaWV3OwogICAgIFJldGFpblB0cjxXS051bWJl
clBhZFZpZXdDb250cm9sbGVyPiBfbnVtYmVyUGFkVmlld0NvbnRyb2xsZXI7CiB9CiAKQEAgLTQz
LDMyICs0MSw0MiBAQCBAZHluYW1pYyBkZWxlZ2F0ZTsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGVsZWdhdGU6KGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPilk
ZWxlZ2F0ZQogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxl
Z2F0ZV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxlZ2F0
ZSBkaWN0YXRpb25Nb2RlOlBVSUNEaWN0YXRpb25Nb2RlVGV4dF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgc2VsZi50ZXh0Q29udGVudFR5cGUgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0Q29u
dGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07CisgICAgX2NvbnRleHRWaWV3TmVl
ZHNVcGRhdGUgPSBZRVM7CisgICAgc2VsZi50ZXh0SW5wdXRDb250ZXh0ID0gW3NlbGYuZGVsZWdh
dGUgdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAodm9pZCl2aWV3RGlkTG9hZAorLSAodm9pZClyZWxvYWRDb250ZXh0
VmlldwogewotICAgIFtzdXBlciB2aWV3RGlkTG9hZF07Ci0KLSAgICBzZWxmLmhlYWRlclZpZXcu
aGlkZGVuID0gWUVTOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOworICAgIFtz
ZWxmIHJlbG9hZEhlYWRlckNvbnRlbnRWaWV3XTsKIH0KIAotLSAodm9pZCl3aWxsUHJlc2VudEFy
b3VldFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyICop
cXVpY2tib2FyZAorLSAodm9pZCl1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkCiB7Ci0gICAgTlNT
dHJpbmcgKmluaXRpYWxUZXh0ID0gW3NlbGYuZGVsZWdhdGUgaW5pdGlhbFZhbHVlRm9yVmlld0Nv
bnRyb2xsZXI6c2VsZl07Ci0gICAgaWYgKGluaXRpYWxUZXh0Lmxlbmd0aCkKLSAgICAgICAgW3F1
aWNrYm9hcmQgc2V0SW5wdXRUZXh0OmluaXRpYWxUZXh0IHNlbGVjdGlvblJhbmdlOk5TTWFrZVJh
bmdlKGluaXRpYWxUZXh0Lmxlbmd0aCwgMCldOworICAgIGlmICghX2NvbnRleHRWaWV3TmVlZHNV
cGRhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcHJldmlvdXNDb250ZXh0VmlldyA9
IF9jb250ZXh0VmlldzsKKyAgICBpZiAoW3NlbGYuZGVsZWdhdGUgc2hvdWxkRGlzcGxheUlucHV0
Q29udGV4dFZpZXdGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0pCisgICAgICAgIF9jb250ZXh0
VmlldyA9IFtzZWxmLmRlbGVnYXRlIGlucHV0Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxlcjpz
ZWxmXTsKKyAgICBlbHNlCisgICAgICAgIF9jb250ZXh0VmlldyA9IG5pbDsKIAotICAgIHF1aWNr
Ym9hcmQubWluVGV4dExlbmd0aEZvckVuYWJsaW5nQWNjZXB0ID0gMDsKKyAgICBfY29udGV4dFZp
ZXdOZWVkc1VwZGF0ZSA9IE5POworfQorCistIChCT09MKXJlcXVpcmVzTnVtZXJpY0lucHV0Cit7
CisgICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIG51bWVyaWNJbnB1dE1vZGVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6c2VsZl0gIT0gV0tOdW1iZXJQYWRJbnB1dE1vZGVOb25lOwogfQogCiAtIChOU0Fy
cmF5ICopYWRkaXRpb25hbFRyYXlCdXR0b25zCiB7Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRlIG51
bWVyaWNJbnB1dE1vZGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0gPT0gV0tOdW1iZXJQYWRJ
bnB1dE1vZGVOb25lKQorICAgIGlmICghc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dCkKICAgICAg
ICAgcmV0dXJuIEBbIF07CiAKICNpZiBIQVZFKFBVSUNfQlVUVE9OX1RZUEVfUElMTCkKQEAgLTk5
LDkgKzEwNywxNCBAQCAtICh2b2lkKXByZXNlbnROdW1iZXJQYWRWaWV3Q29udHJvbGxlcgogICAg
IFtzZWxmIHByZXNlbnRWaWV3Q29udHJvbGxlcjpfbnVtYmVyUGFkVmlld0NvbnRyb2xsZXIuZ2V0
KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKIH0KIAotLSAodm9pZClyZWxvYWRUZXh0
U3VnZ2VzdGlvbnMKKy0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4
dFN1Z2dlc3Rpb24gKj4gKilzdWdnZXN0aW9ucwogewotICAgIFtzZWxmIHJlbG9hZExpc3RJdGVt
c107CisgICAgYXV0byBtZXNzYWdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheTxOU0F0dHJp
YnV0ZWRTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c3VnZ2VzdGlvbnMuY291bnRd
KTsKKyAgICBmb3IgKFVJVGV4dFN1Z2dlc3Rpb24gKnN1Z2dlc3Rpb24gaW4gc3VnZ2VzdGlvbnMp
IHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VnZ2VzdGlvbi5kaXNwbGF5VGV4dF0pOwor
ICAgICAgICBbbWVzc2FnZXMgYWRkT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCldOworICAg
IH0KKyAgICBzZWxmLm1lc3NhZ2VzID0gbWVzc2FnZXMuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZW50
ZXJUZXh0OihOU1N0cmluZyAqKXRleHQKQEAgLTExMSwxMDkgKzEyNCw0NyBAQCAtICh2b2lkKWVu
dGVyVGV4dDooTlNTdHJpbmcgKil0ZXh0CiAKICNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3Vi
Y2xhc3NpbmcKIAotLSAoQk9PTClzdXBwb3J0c0RpY3RhdGlvbklucHV0CistIChDR0Zsb2F0KWhl
YWRlckNvbnRlbnRWaWV3SGVpZ2h0CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIGFsbG93
c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwotfQotCi0tICh2b2lk
KWRpZFNlbGVjdExpc3RJdGVtQXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCi17
Ci0gICAgW3NlbGYgX2RpZFNlbGVjdExpc3RJdGVtOmluZGV4UGF0aC5yb3ddOwotfQotCi0vLyBG
SVhNRTogVGhpcyBtZXRob2QgY2FuIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vNTc4
MDc0NDU+IGxhbmRzIGluIGEgYnVpbGQuCi0tICh2b2lkKWRpZFNlbGVjdExpc3RJdGVtOihOU0lu
dGVnZXIpaXRlbU51bWJlcgotewotICAgIFtzZWxmIF9kaWRTZWxlY3RMaXN0SXRlbTppdGVtTnVt
YmVyXTsKLX0KLQotLSAodm9pZClfZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVt
YmVyCi17Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0U3VnZ2VzdGlvbnMg
PSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2Vs
Zl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNfY2FzdDxOU1VJbnRl
Z2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsK
IAotICAgIFtzZWxmLmRlbGVnYXRlIGxpc3RWaWV3Q29udHJvbGxlcjpzZWxmIGRpZFNlbGVjdFRl
eHRTdWdnZXN0aW9uOlt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVtYmVyXV07
CisgICAgcmV0dXJuIFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcu
Ym91bmRzLnNpemVdLmhlaWdodDsKIH0KIAotLSAoTlNJbnRlZ2VyKW51bWJlck9mTGlzdEl0ZW1z
CistIChVSVZpZXcgKiloZWFkZXJDb250ZW50VmlldwogewotICAgIHJldHVybiBbc2VsZi5kZWxl
Z2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0uY291bnQ7Ci19
CisgICAgW3NlbGYgdXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF07CiAKLS0gKENHRmxvYXQpaGVp
Z2h0Rm9yTGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyIHdpZHRoOihDR0Zsb2F0KXdpZHRo
Ci17Ci0gICAgcmV0dXJuIHRleHRTdWdnZXN0aW9uQnV0dG9uSGVpZ2h0OworICAgIENHRmxvYXQg
dmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgoc2VsZi5jb250ZW50Vmlldy5ib3VuZHMpOworICAg
IENHU2l6ZSBzaXplVGhhdEZpdHMgPSBbX2NvbnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNv
bnRlbnRWaWV3LmJvdW5kcy5zaXplXTsKKyAgICBbX2NvbnRleHRWaWV3IHNldEZyYW1lOkNHUmVj
dE1ha2UoKHZpZXdXaWR0aCAtIHNpemVUaGF0Rml0cy53aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZp
dHMud2lkdGgsIHNpemVUaGF0Rml0cy5oZWlnaHQpXTsKKyAgICBbX2NvbnRleHRWaWV3IGxheW91
dFN1YnZpZXdzXTsKKyAgICByZXR1cm4gX2NvbnRleHRWaWV3LmdldCgpOwogfQogCi0vLyBGSVhN
RTogVGhpcyBtZXRob2QgY2FuIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vNTc4MDc0
NDU+IGxhbmRzIGluIGEgYnVpbGQuCi0tIChQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbCAqKWNl
bGxGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIKKy0gKEJPT0wpc2hvdWxkU2hvd0xh
bmd1YWdlQnV0dG9uCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0U3Vn
Z2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNfY2Fz
dDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRleHRTdWdnZXN0aW9uICp0
ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVtYmVy
XTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2VsZi5saXN0VmlldyBkZXF1
ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVu
dGlmaWVyXSk7Ci0gICAgaWYgKCFyZXVzYWJsZUNlbGwpIHsKLSAgICAgICAgcmV1c2FibGVDZWxs
ID0gYWRvcHROUyhbW1dLUXVpY2tib2FyZExpc3RJdGVtQ2VsbCBhbGxvY10gaW5pdFdpdGhTdHls
ZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVyOnRleHRTdWdnZXN0
aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0pOwotICAgICAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJl
bF0ubnVtYmVyT2ZMaW5lcyA9IDE7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxhYmVsXS5s
aW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOwotICAgICAgICBbcmV1
c2FibGVDZWxsIGl0ZW1MYWJlbF0uYWxsb3dzRGVmYXVsdFRpZ2h0ZW5pbmdGb3JUcnVuY2F0aW9u
ID0gWUVTOwotICAgIH0KLQotICAgIENHRmxvYXQgdmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgo
c2VsZi5saXN0Vmlldy5ib3VuZHMpOwotICAgIFtyZXVzYWJsZUNlbGwgY29uZmlndXJlRm9yVGV4
dDp0ZXh0U3VnZ2VzdGlvbi5kaXNwbGF5VGV4dCB3aWR0aDp2aWV3V2lkdGhdOwotCi0gICAgLy8g
VGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgLWNvbmZpZ3VyZUZvclRleHQ6d2lkdGg6IGNhdXNlcyB0
aGUgdGV4dCBsYWJlbCB0byBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGNlbGwuCi0gICAgLy8gQWRq
dXN0IGZvciB0aGlzIGJ5IHNocmlua2luZyB0aGUgbGFiZWwgd2lkdGggdG8gYWN0dWFsbHkgZml0
IHRoZSBib3VuZHMgb2YgdGhlIGNlbGwuCi0gICAgW3JldXNhYmxlQ2VsbCBpdGVtTGFiZWxdLmZy
YW1lID0gVUlSZWN0SW5zZXQoW3JldXNhYmxlQ2VsbCBjb250ZW50Vmlld10uYm91bmRzLCAwLCB0
ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbiwgMCwgdGV4dFN1Z2dlc3Rpb25MYWJl
bEhvcml6b250YWxNYXJnaW4pOwotICAgIHJldHVybiByZXVzYWJsZUNlbGwuYXV0b3JlbGVhc2Uo
KTsKKyAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JM
aXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07CiB9CiAKLS0gKE5TU3RyaW5nICopbGlzdEl0ZW1DZWxs
UmV1c2VJZGVudGlmaWVyCistIChCT09MKXN1cHBvcnRzRGljdGF0aW9uSW5wdXQKIHsKLSAgICBy
ZXR1cm4gdGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyOworICAgIHJldHVybiBbc2Vs
Zi5kZWxlZ2F0ZSBhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxm
XTsKIH0KIAotI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCi0tIChDbGFz
cylsaXN0SXRlbUNlbGxDbGFzcworLSAoQk9PTClzaG91bGRTaG93VHJheVZpZXcKIHsKLSAgICBy
ZXR1cm4gW1dLUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIGNsYXNzXTsKKyAg
ICByZXR1cm4gc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dDsKIH0KIAotLSAoUFVJQ1F1aWNrYm9h
cmRMaXN0Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCAqKWl0ZW1DZWxsRm9yTGlzdEl0ZW06KE5TSW50
ZWdlcilpdGVtTnVtYmVyIGZvckluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKKy0g
KEJPT0wpc2hvdWxkU2hvd1RleHRGaWVsZAogewotICAgIE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlv
biAqPiAqdGV4dFN1Z2dlc3Rpb25zID0gW3NlbGYuZGVsZWdhdGUgdGV4dFN1Z2dlc3Rpb25zRm9y
TGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGlmICh0ZXh0U3VnZ2VzdGlvbnMuY291bnQg
PD0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oaXRlbU51bWJlcikpIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotCi0gICAgVUlUZXh0
U3VnZ2VzdGlvbiAqdGV4dFN1Z2dlc3Rpb24gPSBbdGV4dFN1Z2dlc3Rpb25zIG9iamVjdEF0SW5k
ZXg6aXRlbU51bWJlcl07Ci0gICAgYXV0byByZXVzYWJsZUNlbGwgPSByZXRhaW5QdHIoW3NlbGYu
Y29sbGVjdGlvblZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdpdGhSZXVzZUlkZW50aWZpZXI6dGV4
dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyIGZvckluZGV4UGF0aDppbmRleFBhdGhdKTsK
LQotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5udW1iZXJPZkxpbmVzID0gMTsKLSAgICBb
cmV1c2FibGVDZWxsIGJvZHlMYWJlbF0ubGluZUJyZWFrTW9kZSA9IE5TTGluZUJyZWFrQnlUcnVu
Y2F0aW5nVGFpbDsKLSAgICBbcmV1c2FibGVDZWxsIGJvZHlMYWJlbF0uYWxsb3dzRGVmYXVsdFRp
Z2h0ZW5pbmdGb3JUcnVuY2F0aW9uID0gWUVTOwotICAgIFtyZXVzYWJsZUNlbGwgc2V0VGV4dDp0
ZXh0U3VnZ2VzdGlvbi5kaXNwbGF5VGV4dF07Ci0KLSAgICAvLyBUaGUgZGVmYXVsdCBiZWhhdmlv
ciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2VzIHRoZSB0ZXh0IGxhYmVsIHRvIHJ1
biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBBZGp1c3QgZm9yIHRoaXMgYnkgc2hy
aW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBmaXQgdGhlIGJvdW5kcyBvZiB0aGUg
Y2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGJvZHlMYWJlbF0uZnJhbWUgPSBVSVJlY3RJbnNldChb
cmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAsIHRleHRTdWdnZXN0aW9uTGFiZWxI
b3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbik7
Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFzZSgpOworICAgIHJldHVybiAhc2Vs
Zi5yZXF1aXJlc051bWVyaWNJbnB1dDsKIH0KIAotI2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9D
T0xMRUNUSU9OX1ZJRVdTKQotCiAtIChCT09MKXN1cHBvcnRzQXJvdWV0SW5wdXQKIHsKLSAgICBy
ZXR1cm4gW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxl
cjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmU7CisgICAgcmV0dXJuICFzZWxmLnJl
cXVpcmVzTnVtZXJpY0lucHV0OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5o
CmluZGV4IDY1NThjZGRlODIyY2JkOTVmYmIwNzI5M2E2ZGJmM2Y4NmNjYzVmYTMuLjlhN2VhMTAw
ZGVlNDE2YTliZTY3OGFiZTcyNDUwMjk1NDBhNWRiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJv
bGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQogCi0j
aW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogQGludGVyZmFjZSBXS1RpbWVQaWNr
ZXJWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGU5MzBi
NmI5Yzc3MjliMTA1ZDlkNjBjNmNjODI0MmVhMmVlZjFiMi4uNmIxNDVmZjljNjVmNmJiZTY4Zjdj
NTI3NGYzYTcxMTE0OWZmMzgyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDM4LDcgKzIwMzgsNyBAQAogCQlGNENCMDlFNTIyNUQ1
QTA5MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNENCMDlFNDIyNUQ1QTAzMDA4OTE0ODcg
LyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggKi87IH07CiAJCUY0Q0YxRTlEMjVFNDBEQ0Mw
MDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0YxRTlCMjVFNDBEQ0Mw
MDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIuaCAqLzsgfTsK
IAkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ1
RjUxOTIwNjA4N0EwMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCAq
LzsgfTsKLQkJRjRENUY1MUYyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5oICovOyB9OworCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZFZp
ZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLzsgfTsKIAkJRjREQjU0RTYyMzE5RTczMzAwOUUzMTU1
IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0REI1NEU0MjMxOUU3MzMwMDlFMzE1
NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmggKi87IH07CiAJCUY0
RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBBcHBsaWNhdGlvblNlcnZpY2VzU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUQwNEUyODIxRjdDNzNE
MDA3Njc0MUQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5oICovOyB9OwogCQlGNEZFMEEzQjI0
NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGRTBBM0EyNDYzMkIxMDAwMjYzMUUxIC8qIENvY29hQ29s
b3IuaCAqLzsgfTsKQEAgLTYwMDUsOCArNjAwNSw3IEBACiAJCUY0Q0YxRTlDMjVFNDBEQ0MwMDBG
OUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZXN0dXJlUmVjb2duaXplckNvbnNpc3Rl
bmN5RW5mb3JjZXIubW07IHBhdGggPSBpb3MvR2VzdHVyZVJlY29nbml6ZXJDb25zaXN0ZW5jeUVu
Zm9yY2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ1RjUxOTIwNjA4N0Ew
MDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaDsgcGF0
aCA9IGlvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNEQ1RjUxQTIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5w
dXRMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9mb3Jt
cy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1F1aWNrYm9h
cmRMaXN0Vmlld0NvbnRyb2xsZXIuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRENUY1MUMy
MDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRy
b2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0RDVGNTFCMjA2MDg3QTEw
MDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGUuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0REI1NEU0MjMxOUU3MzMwMDlFMzE1
NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXIuaDsgcGF0aCA9IGlvcy9XS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0REI1NEU1MjMxOUU3MzMwMDlFMzE1NSAv
KiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplci5tbTsgcGF0aCA9IGlvcy9XS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFEMzIwNjVBNUM5MDA2
Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVy
Lm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTAsNyArNzkwOSw2IEBACiAJCTM3NTRE
NTQxMUIzQTI5OTgwMDNBNEM3RiAvKiBDb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCi0JCQkJMzE1NUVFMEMyNjczRjRFRjAwODVFNTlBIC8qIFZpc2lvbktp
dFNQSS5oICovLAogCQkJCUUzQ0FBQTQzMjQxMzI3OEEwMENFRDJFMiAvKiBBY2Nlc3NpYmlsaXR5
U3VwcG9ydFNQSS5oICovLAogCQkJCTU3MkVCQkRDMjUzOTIxODEwMDA1NTJCMyAvKiBBcHBBdHRl
c3RTUEkuaCAqLywKIAkJCQk1N0ZBQkIwRTI1ODE3Q0YwMDA1OURDOTUgLyogQXV0aGVudGljYXRp
b25TZXJ2aWNlc0NvcmVTUEkuaCAqLywKQEAgLTc5MjQsNiArNzkyMiw3IEBACiAJCQkJNUNCNkFF
NDMyNjA5Nzk5QzAwQjZFRDVBIC8qIFJlYXNvblNQSS5oICovLAogCQkJCTBFOTdENzRDMjAwRThG
RjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAqLywKIAkJCQk0NDhBQzI0RDI2NzEzNUE2
MDBCMjg5MjEgLyogU3luYXBzZVNQSS5oICovLAorCQkJCTMxNTVFRTBDMjY3M0Y0RUYwMDg1RTU5
QSAvKiBWaXNpb25LaXRTUEkuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQ29jb2E7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTEzODIsOCArMTEzODEsNyBAQAogCQkJCTJFQTdCM0Q0
MjAyNkNGMjMwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXcubW0gKi8sCiAJCQkJMkVBN0IzQ0Yy
MDI2Q0VGODAwOUNFNUFDIC8qIFdLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXIuaCAqLywKIAkJCQky
RUE3QjNEMDIwMjZDRUY4MDA5Q0U1QUMgLyogV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbSAq
LywKLQkJCQlGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyLmggKi8sCi0JCQkJRjRENUY1MUMyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5tbSAqLywKKwkJCQlGNEQ1RjUxQjIwNjA4N0ExMDAzOEJC
QTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oICovLAogCQkJCUY0RjU5
QUQ0MjA2NUE1Q0EwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCAq
LywKIAkJCQlGNEY1OUFEMzIwNjVBNUM5MDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLm1tICovLAogCQkJCUY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovLApAQCAtMTIwMzgsNyArMTIwMzYsNiBAQAogCQkJ
CTkzQjI2MTRFMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0b3JhZ2VEYXRhYmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNCMjYxNEYyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDZCRUI2REIyMkZCOUQ0ODAwMjY5
ODY3IC8qIExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzE1NUVF
MEQyNjczRjRGMDAwODVFNTlBIC8qIFZpc2lvbktpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFBN0YyRjMxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRENEN0Y3MUQ0N0U5MkEwMDlGMDhCQyAvKiBMb2dJbml0aWFsaXphdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdlLmggaW4g
SGVhZGVycyAqLywKQEAgLTEyMzc4LDYgKzEyMzc1LDcgQEAKIAkJCQkyNjg0MDU1MzE4Qjg2RUQ2
MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjY4NDA1NDQxOEI4NUE2MzAwMjJDMzhCIC8qIFZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTJERDVBNzI5MUVCRjA4RDUwMDlCQTU5NyAvKiBW
aXNpYmxlV2ViUGFnZUNvdW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNTVFRTBEMjY3M0Y0
RjAwMDg1RTU5QSAvKiBWaXNpb25LaXRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEYyOUU0
MTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTYwMjI0RDE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRlZExpbmtTdG9yZU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUY0Q0VGMDE4QkM0ODE4MDBCQzJEMzQgLyogVmlzaXRlZExp
bmtUYWJsZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTI5MjIsNyArMTI5MjAsNyBA
QAogCQkJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTI3MkQ0QzkxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlv
blNwYWNlTlMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAv
KiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNEQ1RjUxRjIw
NjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQ0QxOTA1RDU0
OTAwQzlDNDVGIC8qIFdLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTlFMzI5QjE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBOUUzMjlGMTgyMkZFREQwMEY1RDA0QyAvKiBXS1JlbW90
ZU9iamVjdENvZGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmll
cy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IGI4MDMxNzIwYjlk
NTNmNTZjYTRlNDYxY2E3MmMxNjQ5NTEzZjE3YjMuLmY3NWYzNDE4MDA3Y2ZmZjUwZDhjYjFhMmYx
YmI5NDY0OWQwZjA4NzYgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA2LTE0
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRj
aE9TXSBSZWVuYWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBp
bnB1dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2OTg4CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJz
L3dhdGNob3MvNy9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQ6CisKIDIw
MjEtMDYtMTUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAg
W2lPUyAxNV0gU3VwcG9ydCBidWlsZGluZyBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJh
cmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29yZS5m
cmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRl
RnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlD
b3JlLnRiZAppbmRleCBmOTQxYTllYWI3NWNkMGIxNDhmNDQ5YTU3Mzk4MDJmZWNiZmE0Mjc2Li5i
NzE0Nzc0MTQyMmE5ZTgwOTUyOTY3MTJjODM5ZjA1MjU1OTRjOWMyIDEwMDY0NAotLS0gYS9XZWJL
aXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvNy9QZXBwZXJV
SUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQKKysrIGIvV2ViS2l0TGlicmFyaWVzL1dl
YktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzcvUGVwcGVyVUlDb3JlLmZyYW1ld29y
ay9QZXBwZXJVSUNvcmUudGJkCkBAIC04LDUgKzgsNSBAQCBleHBvcnRzOgogICAgIG9iamMtY2xh
c3NlczogICAgWyBQVUlDUXVpY2tib2FyZExpc3RUcmF5QnV0dG9uLCBQVUlDQWN0aW9uR3JvdXAs
IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsLCBQVUlDQWN0aW9uQ29udHJvbGxlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgUFVJQ0Nyb3duSW5wdXRTZXF1ZW5jZXIsIFBVSUNQaWNrZXJWaWV3
LCBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbCwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRy
b2xsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIFBVSUNBcHBsaWNhdGlvbiwgUFVJQ1Jlc291
cmNlcywgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmll
d0NvbnRyb2xsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFBVSUNRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXIsIFBVSUNQaWNrZXJWaWV3IF0KKyAgICAgICAgICAgICAgICAgICAgICAgUFVJQ1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJQ1BpY2tlclZpZXcsIFBVSUNUZXh0SW5wdXRDb250
ZXh0LCBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBdCiAuLi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431476</attachid>
            <date>2021-06-15 13:34:53 -0700</date>
            <delta_ts>2021-06-15 16:27:00 -0700</delta_ts>
            <desc>Small adjustment</desc>
            <filename>bug-226988-20210615133452.patch</filename>
            <type>text/plain</type>
            <size>57240</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZkZGM4Y2ZmNTBkMTcyMDgw
ODQzOTMxOWYxYjY3MWRmMzFjYjc1YjkuLjY3Zjk2Nzg4NmM4MDQwNDQ4Yzc3MGU1NzJhY2EzODE2
MGJlMmY2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgbG9naWMgb24gd2F0Y2hPUyBz
dWNoIHRoYXQgd2UncmUgYWJsZSB0byBwcmVzZW50IHRoZSBuZXcgKCJtb2Rlcm4iKSBVSSBmb3Ig
c2NyaWJibGUgdGV4dAorICAgICAgICBpbnB1dCBvbiB3YXRjaE9TIDgsIHJhdGhlciB0aGFuIGxl
Z2FjeSAoaW4tcHJvY2Vzcykgc2NyaWJibGUgVUkuIE92ZXJhbGwsIHRoaXMgcGF0Y2ggcmVtb3Zl
cworICAgICAgICBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWx0b2dldGhlci4gVGhp
cyBoYWQgdHdvIHN1YmNsYXNzZXM6IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciAodXNl
ZCBmb3IKKyAgICAgICAgZm9jdXNlZCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50
cykgYW5kIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZvciB0ZXh0IGlucHV0
IHR5cGVzKS4KKyAgICAgICAgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyIG5vdyBpbmhl
cml0cyBkaXJlY3RseSBmcm9tIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQK
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRzIGZyb20g
UFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXI7IHRoaXMgaW5oZXJpdGFuY2UgZnJv
bQorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBpbnN0ZWFkIG9m
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIGFsbG93cyB0aGUKKyAgICAgICAgV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdG8gc2hvdyB0ZXh0IHN1Z2dlc3Rpb25zIHVzaW5n
IGAtc2V0TWVzc2FnZXM6YCBvbgorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29u
dHJvbGxlciwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGN1c3RvbSBXZWJLaXQgY29kZSB0byBpbnNl
cnQgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgbW92ZSB0
aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG91dCBvZiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIsIGFuZCBpbnRvCisgICAgICAgIGVpdGhlciBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgb3IgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXI6CisKKyAg
ICAgICAgMS4gU3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCB1cGRhdGluZyBjb250ZXh0IHZpZXdz
IChpLmUuIHRoZSBkb21haW4gbmFtZSBoZWFkZXIgdmlldyBpbiBRdWlja2JvYXJkKSA9PgorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAyLiBMb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgbGFuZ3VhZ2Ugc2Vs
ZWN0aW9uIFVJID0+IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDMu
IFN1cHBvcnQgZm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbGxlY3Rpb24gdmlldyBjZWxscyBpbiBR
dWlja2JvYXJkID0+IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMgdG8gY3JlYXRlIGEgUFVJ
Q1RleHRJbnB1dENvbnRleHQgZnJvbSB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3Jt
YXRpb24gb3V0IGludG8gYSBzZXBhcmF0ZQorICAgICAgICBoZWxwZXIgbWV0aG9kLCBgLWNyZWF0
ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0YCwgYW5kIHVzZSBpdCB3aGVuIGJvdGggZGlyZWN0
bHkgbGF1bmNoaW5nIGludG8KKyAgICAgICAgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFuZCBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAoY2FuVXNlUXVpY2tib2Fy
ZENvbnRyb2xsZXJGb3IpOgorCisgICAgICAgIFJlbW92ZSBhIGNvbW1lbnQsIG5vdyB0aGF0IHdl
IGludGVuZCB0byBjb250aW51ZSB1c2luZyBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBm
b3Igbm9uLWtleWNoYWluLUF1dG9GaWxsLQorICAgICAgICBjb21wYXRpYmxlIHRleHQgZmllbGRz
IG1vdmluZyBmb3J3YXJkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZm9jdXNlZEZvcm1D
b250cm9sbGVyRGlkVXBkYXRlU3VnZ2VzdGlvbnM6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxl
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0Q29udGVudFR5cGVGb3JUZXN0aW5n
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdmlld0NvbnRyb2xsZXI6aW5wdXRDb250ZXh0
Vmlld0hlaWdodEZvclNpemU6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIHRoaXMgZGVs
ZWdhdGUgbWV0aG9kLCB3aGljaCB3YXMgKGVmZmVjdGl2ZWx5KSB1bnVzZWQgc2luY2Ugd2UganVz
dCBhc2sgZm9yCisgICAgICAgIGAtaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOmAg
ZnJvbSB0aGUgaW5wdXQgZGVsZWdhdGUgYW55d2F5cy4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29udHJvbGxlcjpdKTog
RGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgdGhpcyB0byBgLWFsbG93c0xhbmd1YWdlU2VsZWN0
aW9uRm9yTGlzdFZpZXdDb250cm9sbGVyOmAuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0
ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgUmVwbGFjZSB0aGlzIHdpdGggYC10ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9s
bGVyOmAsIHdoaWNoIHJldHVybnMgYSB3aG9sZSBQVUlDVGV4dElucHV0Q29udGV4dCBpbnN0ZWFk
CisgICAgICAgIG9mIGp1c3QgYSB0ZXh0IGNvbnRlbnQgdHlwZS4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBsaXN0Vmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0
VGV4dFN1Z2dlc3Rpb246XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIHNldmVyYWwgZGVs
ZWdhdGUgbWV0aG9kcyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyIHZpZXdXaWxsQXBwZWFyOl0pOgorCisg
ICAgICAgIFJlbW92ZSBzb21lIChkZWZ1bmN0KSBsb2dpYyBmb3Igb3ZlcnJpZGluZyB0aGUgc3Rh
dHVzIGJhciB3aGVuIHNob3dpbmcgUXVpY2tib2FyZCBpbnB1dCB2aWV3IGNvbnRyb2xsZXJzLiBU
aGlzCisgICAgICAgIHN0YXR1cyBiYXIgbWVjaGFuaXNtICh3aGljaCB3YXMgcHJldmlvdXNseSB1
c2VkIHRvIHNob3cgbGFiZWwgdGV4dCBmb3IgZm9ybSBjb250cm9scykgaGFzbid0IHdvcmtlZCBz
aW5jZQorICAgICAgICB3YXRjaE9TIDYsIGFuZCB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGlu
IGEgd2F5IHRoYXQgZG9lc24ndCB1c2UgUFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRWaWV3QXNz
ZXJ0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9s
bGVyLmguCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tTZWxlY3RNZW51SXRlbUNlbGwg
dG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUl0
ZW1DZWxsIGJhc2VsaW5lVG9Cb3R0b21TcGVjVmFsdWVdKToKKyAgICAgICAgKC1bV0tTZWxlY3RN
ZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCB0b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWVdKToK
KyAgICAgICAgKC1bV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCBiYXNlbGluZVRv
Qm90dG9tU3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlciBpbml0V2l0aERlbGVnYXRlOl0pOgorCisgICAgICAgIFNlZSBhYm92ZSBjb21tZW50IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgcmVsb2FkQ29udGV4dFZpZXddKToKKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF0p
OgorCisgICAgICAgIE1vdmUgbG9naWMgZm9yIHNob3dpbmcgYW5kIHVwZGF0aW5nIHRoZSBjb250
ZXh0IHZpZXcgb3V0IG9mIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciwgYW5kIGludG8K
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuIFNlZSBjb21tZW50cyBhYm92
ZS4KKworICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciByZXF1aXJlc051
bWVyaWNJbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBh
ZGRpdGlvbmFsVHJheUJ1dHRvbnNdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAoLVtXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciBoZWFkZXJDb250ZW50Vmlld0hlaWdodF0pOgorICAgICAgICAo
LVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBoZWFkZXJDb250ZW50Vmlld10pOgorICAg
ICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzaG91bGRTaG93TGFuZ3VhZ2VC
dXR0b25dKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgc3VwcG9y
dHNEaWN0YXRpb25JbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBzaG91bGRTaG93VHJheVZpZXddKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgc2hvdWxkU2hvd1RleHRGaWVsZF0pOgorCisgICAgICAgIE92ZXJyaWRlIHRo
aXMgYW5kIHJldHVybiBZRVMgZm9yIHRleHQgaW5wdXQgdHlwZXMgdGhhdCBkb24ndCByZXF1aXJl
IGFuIGFkZGl0aW9uYWwgbnVtZXJpYyBpbnB1dCB0cmF5IGJ1dHRvbi4KKyAgICAgICAgVGhpcyBh
bGxvd3MgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIgdG8gc2hvdyBhIG5hdGl2
ZSB0ZXh0IGZpZWxkIGNvbnRhaW5pbmcgdGhlIGlucHV0IHRleHQgaW5zaWRlCisgICAgICAgIHF1
aWNrYm9hcmQsIHdoaWNoICh3aGVuIHRhcHBlZCkgcHJlc2VudHMgbW9kZXJuIHRleHQgaW5wdXQg
VUkuCisKKyAgICAgICAgU2luY2Ugc2hvd2luZyB0aGUgdGV4dCBmaWVsZCBpcyBhcHBhcmVudGx5
IG11dHVhbGx5IGV4Y2x1c2l2ZSB0byBzaG93aW5nIGEgdHJheSB2aWV3LCB3ZSBhZGRpdGlvbmFs
bHkgb3ZlcnJpZGUKKyAgICAgICAgYC1zaG91bGRTaG93VHJheVZpZXdgIGFuZCByZXR1cm4gTk8g
Zm9yIG5vbi1udW1lcmljIHRleHQgaW5wdXRzLgorCisgICAgICAgICgtW1dLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyIHN1cHBvcnRzQXJvdWV0SW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdmlld0RpZExvYWRdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgd2lsbFByZXNlbnRBcm91ZXRWaWV3Q29u
dHJvbGxlcjpdKTogRGVsZXRlZC4KKworICAgICAgICBUaGVyZSdzIG5vIG5lZWQgdG8gb3ZlcnJp
ZGUgdGhpcyBkZWxlZ2F0ZSBtZXRob2QgYW55bW9yZSwgc2luY2UgdGhlIFBVSUNUZXh0SW5wdXRD
b250ZXh0J3MgYC1pbml0aWFsVGV4dGAgaXMKKyAgICAgICAgc3VmZmljaWVudCB0byBlbnN1cmUg
dGhhdCB0aGUgc2NyaWJibGUgdGV4dCBpbnB1dCBVSSBpcyBwcmVwb3B1bGF0ZWQgd2l0aCB0aGUg
Zm9jdXNlZCB0ZXh0IGZpZWxkJ3MgaW5pdGlhbCB0ZXh0CisgICAgICAgIGNvbnRlbnQuCisKKyAg
ICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgcmVsb2FkVGV4dFN1Z2dlc3Rp
b25zXSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYC11cGRhdGVUZXh0U3Vn
Z2VzdGlvbnM6YCwgYW5kIG1ha2UgaXQgdGFrZSBhIGxpc3Qgb2YgVUlUZXh0U3VnZ2VzdGlvbnMu
IFRoaXMgbWFrZXMgdGhlIGNvZGUgYQorICAgICAgICBiaXQgZWFzaWVyIHRvIGZvbGxvdyBhbmQg
YWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgYC10ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6YCBkZWxlZ2F0ZSBtZXRob2QuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgZGlkU2VsZWN0TGlzdEl0ZW1BdEluZGV4UGF0aDpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgZGlkU2VsZWN0TGlzdEl0ZW06
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIF9k
aWRTZWxlY3RMaXN0SXRlbTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0
Vmlld0NvbnRyb2xsZXIgbnVtYmVyT2ZMaXN0SXRlbXNdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVpZ2h0Rm9yTGlzdEl0ZW06d2lkdGg6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGNlbGxG
b3JMaXN0SXRlbTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgbGlzdEl0ZW1DZWxsUmV1c2VJZGVudGlmaWVyXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGxpc3RJdGVtQ2VsbENsYXNzXSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGl0ZW1DZWxs
Rm9yTGlzdEl0ZW06Zm9ySW5kZXhQYXRoOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSBh
bGwgdGhpcyBjb2RlIGZvciBzaG93aW5nIHRleHQgc3VnZ2VzdGlvbnMgaW4gUXVpY2tib2FyZCBV
SS4gU2luY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaXMgbm93IGEKKyAgICAgICAg
c3ViY2xhc3Mgb2YgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIsIHdlIGNhbiBu
b3cgc2ltcGx5IHVzZSB0aGUgYC1tZXNzYWdlc2AgcHJvcGVydHkgb2YgdG8gcG9wdWxhdGUKKyAg
ICAgICAgcXVpY2tib2FyZCB3aXRoIHRleHQgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDYtMTUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUGVybWl0IGFjY2Vz
cyB0byAncGxhdGZvcm0tbmFtZScgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9z
cGkvd2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaAppbmRleCA2YTMxNzUxNTVlNWIzOTcyZTI1NTQ2
ZjYxNDU3NTJkOWE5NmMyZDljLi40ZTgyNzQ4ZjNlNjM3NjcwMzE0NDhiZTI5MjBiMWJlZGJlNDIx
MmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBl
clVJQ29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVw
cGVyVUlDb3JlU1BJLmgKQEAgLTM5LDkgKzM5LDkgQEAKICNpbXBvcnQgPFBlcHBlclVJQ29yZS9Q
VUlDUGlja2VyVmlld19Qcml2YXRlLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNr
Ym9hcmRBcm91ZXRWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNR
dWlja2JvYXJkTGFuZ3VhZ2VDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJ
Q1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9Q
VUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlclN1YmNsYXNzLmg+CiAjaW1wb3J0IDxQZXBw
ZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld1NwZWNzLmg+CisjaW1wb3J0IDxQZXBwZXJV
SUNvcmUvUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBl
cHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxQZXBw
ZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0
IDxQZXBwZXJVSUNvcmUvUFVJQ1Jlc291cmNlcy5oPgpAQCAtMTY5LDkgKzE2OSwxMSBAQCBleHRl
cm4gVUlCdXR0b25UeXBlIGNvbnN0IFBVSUNCdXR0b25UeXBlUGlsbDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzdHJvbmcpIE5TU3RyaW5nICppbml0aWFsVGV4dDsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzdHJvbmcsIG51bGxhYmxlKSBVSUNvbG9yICp0aW50Q29sb3I7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgc3Ryb25nKSBVSVRleHRDb250ZW50VHlwZSBzZWNvbmRhcnlUZXh0Q29udGVudFR5
cGU7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBOU0ludGVnZXIgbWluaW11bUxlbmd0
aDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5L
ZXlUeXBlOworQHByb3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBtaW5pbXVtTGVuZ3RoOwor
QHByb3BlcnR5IChub25hdG9taWMpIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5LZXlUeXBlOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVk
SGVhZGVyVGV4dDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFjY2VwdHNFbW9qaTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZFByZXNlbnRNb2Rlcm5UZXh0SW5wdXRVSTsK
IAogQGVuZAogCkBAIC0yMTksMTEgKzIyMSwxNiBAQCBleHRlcm4gVUlCdXR0b25UeXBlIGNvbnN0
IFBVSUNCdXR0b25UeXBlUGlsbDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgUFVJ
Q1RhYmxlVmlldyAqbGlzdFZpZXc7CiBAcHJvcGVydHkgKHN0cm9uZywgbm9uYXRvbWljLCByZWFk
b25seSkgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld1NwZWNzICpzcGVjczsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSBVSVRleHRDb250ZW50VHlwZSB0ZXh0Q29udGVudFR5cGU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgc3Ryb25nKSBQVUlDVGV4dElucHV0Q29udGV4dCAqdGV4dElucHV0Q29u
dGV4dDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8UFVJQ1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGlj
dGF0aW9uTW9kZSlkaWN0YXRpb25Nb2RlIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7CiAtICh2
b2lkKXJlbG9hZExpc3RJdGVtczsKIC0gKHZvaWQpcmVsb2FkSGVhZGVyQ29udGVudFZpZXc7CiBA
ZW5kCiAKK0BpbnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIgOiBQ
VUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgorQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIE5TQXJyYXkgKm1lc3NhZ2VzOworQGVuZAorCiBAaW50ZXJmYWNlIFBVSUNRdWlja2JvYXJk
QXJvdWV0Vmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSwgbnVsbGFibGUpIFVJVGV4dENvbnRlbnRUeXBlIHRleHRD
b250ZW50VHlwZTsKIC0gKHZvaWQpc2V0SW5wdXRUZXh0OihudWxsYWJsZSBOU1N0cmluZyAqKWlu
cHV0VGV4dCBzZWxlY3Rpb25SYW5nZTooTlNSYW5nZSlzZWxlY3Rpb25SYW5nZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCA4Y2ZjNjA3NGQwNTYyYWE1ODJjNWMwZDIzNDg4ZWU2MzZiMmM5YTlj
Li5iZDEwMGViZmViNDEyZTAwOGRlNWNjMzgyZDRlM2NhYmJjNWU0ZGRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC00NTQsNyArNDU0LDYgQEAgVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1T
ZWxlY3RQaWNrZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGb3JtU2VsZWN0UG9wb3Zlci5t
bQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXcubW0KIFVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbQotVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tT
ZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBp
Y2tlclZpZXdDb250cm9sbGVyLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBjODc5ZTlkZTBkMWZkMDA5
NWFiNzgwYjEyNjNhOGY2YWJhMmFhMGRhLi5lYjE5OTg2NWMwMDQwNDRiMjZiZTBiZDFlYTI2YTgw
YjViZmI4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTY0LDcgKzY0LDcgQEAKICNpbXBvcnQgIldL
UHJldmlld0FjdGlvbkl0ZW1JZGVudGlmaWVycy5oIgogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9u
SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmgi
Ci0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV0tTeW50aGV0aWNGbGFnc0NoYW5nZWRX
ZWJFdmVudC5oIgogI2ltcG9ydCAiV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKQEAg
LTY2NjYsMjIgKzY2NjYsMjIgQEAgLSAodm9pZClyZW1vdmVGb2N1c2VkRm9ybUNvbnRyb2xPdmVy
bGF5CiAgICAgW3NlbGYgc2V0SW5wdXREZWxlZ2F0ZTpuaWxdOwogfQogCi0jaWYgSEFWRShRVUlD
S0JPQVJEX0NPTlRST0xMRVIpCi0KLS0gKFJldGFpblB0cjxQVUlDUXVpY2tib2FyZENvbnRyb2xs
ZXI+KV9jcmVhdGVRdWlja2JvYXJkQ29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxlciAqKXByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcgorLSAoUmV0YWluUHRyPFBVSUNUZXh0SW5wdXRDb250ZXh0Pilj
cmVhdGVRdWlja2JvYXJkVGV4dElucHV0Q29udGV4dAogewotICAgIGF1dG8gcXVpY2tib2FyZENv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFsbG9jXSBpbml0
XSk7Ci0KLSAgICBhdXRvIHN1Z2dlc3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5T
U3RyaW5nICo+IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OltfZm9ybUlucHV0U2Vzc2lvbiBzdWdn
ZXN0aW9uc10uY291bnRdKTsKLSAgICBmb3IgKFVJVGV4dFN1Z2dlc3Rpb24gKnN1Z2dlc3Rpb24g
aW4gW19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXSkKLSAgICAgICAgW3N1Z2dlc3Rpb25z
IGFkZE9iamVjdDpzdWdnZXN0aW9uLmlucHV0VGV4dF07Ci0KICAgICBhdXRvIGNvbnRleHQgPSBh
ZG9wdE5TKFtbUFVJQ1RleHRJbnB1dENvbnRleHQgYWxsb2NdIGluaXRdKTsKICAgICBbc2VsZiBf
dXBkYXRlVGV4dElucHV0VHJhaXRzOmNvbnRleHQuZ2V0KCldOwotICAgIFtjb250ZXh0IHNldFN1
Z2dlc3Rpb25zOnN1Z2dlc3Rpb25zLmdldCgpXTsKICAgICBbY29udGV4dCBzZXRJbml0aWFsVGV4
dDpfZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi52YWx1ZV07CiAgICAgW2NvbnRleHQgc2V0QWNj
ZXB0c0Vtb2ppOllFU107CiAgICAgW2NvbnRleHQgc2V0U2hvdWxkUHJlc2VudE1vZGVyblRleHRJ
bnB1dFVJOllFU107CisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKyNpZiBIQVZFKFFVSUNLQk9B
UkRfQ09OVFJPTExFUikKKworLSAoUmV0YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4p
X2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyCit7CisgICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0
TlMoW1tQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNv
bnRleHQgPSBzZWxmLmNyZWF0ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0OwogICAgIFtxdWlj
a2JvYXJkQ29udHJvbGxlciBzZXRRdWlja2JvYXJkUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyOnBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlcl07CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldEV4
Y2x1ZGVkRnJvbVNjcmVlbkNhcHR1cmU6W2NvbnRleHQgaXNTZWN1cmVUZXh0RW50cnldXTsKICAg
ICBbcXVpY2tib2FyZENvbnRyb2xsZXIgc2V0VGV4dElucHV0Q29udGV4dDpjb250ZXh0LmdldCgp
XTsKQEAgLTY2OTIsNyArNjY5Miw2IEBAIC0gKFJldGFpblB0cjxQVUlDUXVpY2tib2FyZENvbnRy
b2xsZXI+KV9jcmVhdGVRdWlja2JvYXJkQ29udHJvbGxlcjooVUlWaWV3Q29udHJvCiAKIHN0YXRp
YyBib29sIGNhblVzZVF1aWNrYm9hcmRDb250cm9sbGVyRm9yKFVJVGV4dENvbnRlbnRUeXBlIHR5
cGUpCiB7Ci0gICAgLy8gV2UgY2FuIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uIG9uY2UgUFVJQ1F1
aWNrYm9hcmRDb250cm9sbGVyIHN1cHBvcnRzIGRpc3BsYXlpbmcgdGV4dCBzdWdnZXN0aW9uIHN0
cmluZ3MgdGhhdCBhcmUgbm90IGxvZ2luIGNyZWRlbnRpYWxzLgogICAgIHJldHVybiBbdHlwZSBp
c0VxdWFsVG9TdHJpbmc6VUlUZXh0Q29udGVudFR5cGVVc2VybmFtZV0gfHwgW3R5cGUgaXNFcXVh
bFRvU3RyaW5nOlVJVGV4dENvbnRlbnRUeXBlUGFzc3dvcmRdIHx8IFt0eXBlIGlzRXF1YWxUb1N0
cmluZzpVSVRleHRDb250ZW50VHlwZUVtYWlsQWRkcmVzc107CiB9CiAKQEAgLTY5MzEsNyArNjkz
MCw3IEBAIC0gKHZvaWQpZm9jdXNlZEZvcm1Db250cm9sbGVyRGlkVXBkYXRlU3VnZ2VzdGlvbnM6
KFdLRm9jdXNlZEZvcm1Db250cm9sVmlldyAqKXZpCiAgICAgaWYgKF9pc0JsdXJyaW5nRm9jdXNl
ZEVsZW1lbnQgfHwgIVtfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNL
aW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVz
ZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciByZWxvYWRUZXh0U3VnZ2VzdGlvbnNd
OworICAgIFsoV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkRnVsbFNj
cmVlbklucHV0Vmlld0NvbnRyb2xsZXIgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOltfZm9jdXNlZEZv
cm1Db250cm9sVmlldyBzdWdnZXN0aW9uc11dOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXS1NlbGVj
dE1lbnVMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQpAQCAtOTE5NiwxNiArOTE5NSw3IEBAIC0g
KHZvaWQpcXVpY2tib2FyZElucHV0Q2FuY2VsbGVkOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyICopcXVpY2tib2FyZAogCiAjcHJhZ21hIG1hcmsgLSBXS1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlCiAKLS0gKENHRmxvYXQpdmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXpl
OihDR1NpemUpc2l6ZQotewotICAgIGlkIDxfV0tJbnB1dERlbGVnYXRlPiBkZWxlZ2F0ZSA9IHNl
bGYud2ViVmlldy5faW5wdXREZWxlZ2F0ZTsKLSAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmZvY3VzZWRFbGVtZW50Q29udGV4dFZpZXdIZWln
aHRGb3JGaXR0aW5nU2l6ZTppbnB1dFNlc3Npb246KV0pCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgcmV0dXJuIFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZm9jdXNlZEVsZW1lbnRD
b250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdTaXplOnNpemUgaW5wdXRTZXNzaW9uOl9mb3JtSW5w
dXRTZXNzaW9uLmdldCgpXTsKLX0KLQotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1l
bnVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyCistIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uRm9yTGlzdFZpZXdDb250
cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewogICAg
IHN3aXRjaCAoX2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBj
YXNlIFdlYktpdDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6CkBAIC05MjcyLDIwICs5MjYy
LDkgQEAgLSAoV0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3
Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0VmkKICAgICB9CiB9CiAKLS0gKE5TU3RyaW5nICop
dGV4dENvbnRlbnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKKy0gKFBVSUNUZXh0SW5wdXRDb250ZXh0ICopdGV4dElu
cHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyCiB7Ci0gICAgcmV0dXJuIHNlbGYudGV4dENvbnRlbnRUeXBlRm9y
UXVpY2tib2FyZDsKLX0KLQotLSAoTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1
Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIKLXsKLSAgICByZXR1cm4gW19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3
IHN1Z2dlc3Rpb25zXTsKLX0KLQotLSAodm9pZClsaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RUZXh0U3VnZ2VzdGlv
bjooVUlUZXh0U3VnZ2VzdGlvbiAqKXN1Z2dlc3Rpb24KLXsKLSAgICBbc2VsZiBpbnNlcnRUZXh0
U3VnZ2VzdGlvbjpzdWdnZXN0aW9uXTsKLSAgICBbc2VsZiBkaXNtaXNzUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyQW5kUmV2ZWFsRm9jdXNlZEZvcm1PdmVybGF5SWZOZWNlc3Nhcnk6Y29udHJvbGxl
cl07CisgICAgcmV0dXJuIHNlbGYuY3JlYXRlUXVpY2tib2FyZFRleHRJbnB1dENvbnRleHQuYXV0
b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3
Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKQEAg
LTkzMDMsMTAgKzkyODIsOCBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJlUmVjb2duaXplZDooVUlH
ZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB9CiAjZW5kaWYKIAotCi0KLQog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKwogLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1l
bnVzSWZOZWVkZWQKIHsKICAgICBpZiAoIV9wYWdlLT5wcmVmZXJlbmNlcygpLmFwcEhpZ2hsaWdo
dHNFbmFibGVkKCkgfHwgIXNlbGYud2luZG93IHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxl
Y3Rpb25Jc1JhbmdlKQpAQCAtMTAzNjMsNyArMTAzNDAsNyBAQCAtIChOU1N0cmluZyAqKXRleHRD
b250ZW50VHlwZUZvclRlc3RpbmcKIHsKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQogICAgIGlm
IChbX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6
W1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBb
c2VsZiB0ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVy
LmdldCgpXTsKKyAgICAgICAgcmV0dXJuIFsoV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
KilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgdGV4dElucHV0Q29udGV4
dF0udGV4dENvbnRlbnRUeXBlOwogI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQogICAg
IGlmIChfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiBbX3By
ZXNlbnRlZFF1aWNrYm9hcmRDb250cm9sbGVyIHRleHRJbnB1dENvbnRleHRdLnRleHRDb250ZW50
VHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Rh
dGVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKaW5kZXggZTgxZTM0MGVlNjNhYWY2NDcx
MDJhMWIyOTc5ZDg1MjFhNjBhMmVkOS4uN2I1ZjQ4ZDcyODVkZTcwZDA0ODE3ZTMxMDIxYWI1NjYy
YjEyZTRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAK
IAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyIDogUFVJQ1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KaW5k
ZXggNDc0ODhmZGUyMmE5ZThkOTJkMWQ5MzVjMTA4N2E1MDU3NWYxOWIzNy4uYWJkMGE3NGY2NDE1
NzQwOTNlMDcyOTljMzJlNzQwNWY3NWIwNjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxl
ci5tbQpAQCAtMzA2LDggKzMwNiw2IEBAIC0gKHZvaWQpdmlld1dpbGxBcHBlYXI6KEJPT0wpYW5p
bWF0ZWQKICAgICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gW1tQVUlDQXBwbGljYXRpb24gc2hhcmVk
UFVJQ0FwcGxpY2F0aW9uXSBfdGFrZVN0YXR1c0Jhckdsb2JhbENvbnRleHRBc3NlcnRpb25Bbmlt
YXRlZDpOT107CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRP
YnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlv
bikgbmFtZTpQVUlDU3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRl
cl0gYWRkT2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2hhbmRsZVN0YXR1c0Jhck5h
dmlnYXRpb24pIG5hbWU6UFVJQ1N0YXR1c0JhclRpdGxlVGFwcGVkTm90aWZpY2F0aW9uIG9iamVj
dDpuaWxdOwotCi0gICAgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihzZWxmLCBzZWxm
LmRlbGVnYXRlKTsKIH0KIAogLSAodm9pZCl2aWV3RGlkQXBwZWFyOihCT09MKWFuaW1hdGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgyOThhZDA1MTdkOTg0OTZkMDM5ZDhjZmI4OWY2MTk5ZTViYWFmYWYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBIQVZFKFBFUFBFUl9VSV9D
T1JFKQotCi0jaW1wb3J0ICJQZXBwZXJVSUNvcmVTUEkuaCIKLQotQGludGVyZmFjZSBXS1F1aWNr
Ym9hcmRMaXN0SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbAotQGVuZAotCi0j
aWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi1AaW50ZXJmYWNlIFdLUXVpY2ti
b2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogUFVJQ1F1aWNrYm9hcmRMaXN0Q29sbGVj
dGlvblZpZXdJdGVtQ2VsbAotQGVuZAotI2VuZGlmCi0KLUBjbGFzcyBXS1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXI7Ci0KLUBwcm90b2NvbCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+Ci0KLS0gKENHRmxv
YXQpdmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOihDR1NpemUpc2l6ZTsKLS0gKFVJVmll
dyAqKWlucHV0Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKWlucHV0TGFiZWxUZXh0Rm9y
Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
OwotLSAoTlNTdHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChCT09MKXNob3VsZERpc3BsYXlJ
bnB1dENvbnRleHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyICopY29udHJvbGxlcjsKLS0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25N
ZW51Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlcjsKLQotQGVuZAotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RWaWV3Q29u
dHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyCi0KLS0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZT4pZGVsZWdhdGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvZGVyOihOU0NvZGVyICopYURlY29kZXIgTlNfVU5BVkFJTEFCTEU7Ci0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQ8UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGljdGF0aW9uTW9kZSlk
aWN0YXRpb25Nb2RlIE5TX1VOQVZBSUxBQkxFOwotCi0tICh2b2lkKXJlbG9hZENvbnRleHRWaWV3
OwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlOwotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVz
QmFyRm9yQ29udHJvbGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICosIGlkIDxXS1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPik7Ci0KLSNlbmRpZiAvLyBIQVZFKFBFUFBF
Ul9VSV9DT1JFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzOGQ3NzkzZjIzYzI0NzBhZTg2OWJlYTA1N2M3MjJhOTVl
MWNiYzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5tbQorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIu
aCIKLQotI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KLQotc3RhdGljIGNvbnN0IENHRmxvYXQgaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxpbmUgPSAy
NjsKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7Ci0K
LUBpbXBsZW1lbnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKLQotLSAoQ0dGbG9hdCl0
b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWUKLXsKLSAgICByZXR1cm4gaXRlbUNlbGxUb3BUb0xh
YmVsQmFzZWxpbmU7Ci19Ci0KLS0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZQot
ewotICAgIHJldHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Ci19Ci0KLUBlbmQKLQotI2lm
IEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCi1AaW1wbGVtZW50YXRpb24gV0tR
dWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKLQotLSAoQ0dGbG9hdCl0b3BUb0xh
YmVsQmFzZWxpbmVTcGVjVmFsdWUKLXsKLSAgICByZXR1cm4gaXRlbUNlbGxUb3BUb0xhYmVsQmFz
ZWxpbmU7Ci19Ci0KLS0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZQotewotICAg
IHJldHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8v
IEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCi1AaW50ZXJmYWNlIFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlciAoKSA8UFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xs
ZXJEZWxlZ2F0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlciB7Ci0gICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKLSAgICBSZXRh
aW5QdHI8VUlWaWV3PiBfY29udGV4dFZpZXc7Ci0gICAgUmV0YWluUHRyPFBVSUNTdGF0dXNCYXJH
bG9iYWxDb250ZXh0Vmlld0Fzc2VydGlvbj4gX3N0YXR1c0JhckFzc2VydGlvbjsKLX0KLQotQGR5
bmFtaWMgZGVsZWdhdGU7Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8
V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBpZiAo
c2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6UFVJ
Q0RpY3RhdGlvbk1vZGVUZXh0XSkKLSAgICAgICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZ
RVM7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCl1cGRhdGVDb250ZXh0Vmlld0lm
TmVlZGVkCi17Ci0gICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3OwotICAg
IGlmIChbc2VsZi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RW
aWV3Q29udHJvbGxlcjpzZWxmXSkKLSAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYuZGVsZWdh
dGUgaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGVsc2UKLSAg
ICAgICAgX2NvbnRleHRWaWV3ID0gbmlsOwotCi0gICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUg
PSBOTzsKLX0KLQotLSAoQk9PTClwcmVmZXJzU3RhdHVzQmFySGlkZGVuCi17Ci0gICAgcmV0dXJu
IE5POwotfQotCi0tICh2b2lkKXZpZXdXaWxsQXBwZWFyOihCT09MKWFuaW1hdGVkCi17Ci0gICAg
W3N1cGVyIHZpZXdXaWxsQXBwZWFyOmFuaW1hdGVkXTsKLQotICAgIF9zdGF0dXNCYXJBc3NlcnRp
b24gPSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dIF90YWtlU3RhdHVz
QmFyR2xvYmFsQ29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKLQotICAgIE5TTm90aWZpY2F0
aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07
Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxl
U3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0
b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2hhbmRsZVN0YXR1c0Jhck5hdmlnYXRpb24pIG5h
bWU6UFVJQ1N0YXR1c0JhclRpdGxlVGFwcGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotCi0g
ICAgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihzZWxmLCBzZWxmLmRlbGVnYXRlKTsK
LX0KLQotLSAodm9pZCl2aWV3RGlkRGlzYXBwZWFyOihCT09MKWFuaW1hdGVkCi17Ci0gICAgW3N1
cGVyIHZpZXdEaWREaXNhcHBlYXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlv
biA9IG5pbDsKLQotICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgW2NlbnRlciByZW1vdmVPYnNlcnZlcjpz
ZWxmIG5hbWU6UFVJQ1N0YXR1c0Jhck5hdmlnYXRpb25CYWNrQnV0dG9uUHJlc3NlZE5vdGlmaWNh
dGlvbiBvYmplY3Q6bmlsXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQ
VUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0KLS0g
KHZvaWQpX2hhbmRsZVN0YXR1c0Jhck5hdmlnYXRpb24KLXsKLSAgICBbc2VsZi5kZWxlZ2F0ZSBx
dWlja2JvYXJkSW5wdXRDYW5jZWxsZWQ6c2VsZl07Ci19Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4
dFZpZXcKLXsKLSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLSAgICBbc2VsZiBy
ZWxvYWRIZWFkZXJDb250ZW50Vmlld107Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0JFR0lOCi0KLS0gKFBVSUNBY3Rpb25Db250cm9sbGVyICopYWN0aW9uQ29udHJvbGxl
cgotewotICAgIGlmICghW3NlbGYuZGVsZWdhdGUgYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25NZW51
Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
UFVJQ0FjdGlvbkl0ZW0gKmxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSA9IFtzZWxmLmxhbmd1
YWdlQ29udHJvbGxlciBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0ZW1Gb3JWaWV3Q29udHJvbGxl
cjpzZWxmXTsKLSAgICBhdXRvIGFjdGlvbkdyb3VwID0gYWRvcHROUyhbW1BVSUNBY3Rpb25Hcm91
cCBhbGxvY10gaW5pdFdpdGhBY3Rpb25JdGVtczpAWyBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0
ZW0gXSBhY3Rpb25TdHlsZTpQVUlDQWN0aW9uU3R5bGVBdXRvbWF0aWNdKTsKLSAgICByZXR1cm4g
YWRvcHROUyhbW1BVSUNBY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGlvbkdyb3Vw
OmFjdGlvbkdyb3VwLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKLX0KLQotQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECi0KLSNwcmFnbWEgbWFyayAtIFBVSUNRdWlja2JvYXJkTGFu
Z3VhZ2VDb250cm9sbGVyRGVsZWdhdGUKLQotLSAodm9pZClsYW5ndWFnZUNvbnRyb2xsZXJEaWRD
aGFuZ2VQcmltYXJ5TGFuZ3VhZ2U6KFBVSUNRdWlja2JvYXJkTGFuZ3VhZ2VDb250cm9sbGVyICop
bGFuZ3VhZ2VDb250cm9sbGVyCi17Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IocXVpY2tib2FyZDpsYW5ndWFnZURpZENoYW5nZTopXSkKLSAgICAg
ICAgW3NlbGYuZGVsZWdhdGUgcXVpY2tib2FyZDpzZWxmIGxhbmd1YWdlRGlkQ2hhbmdlOmxhbmd1
YWdlQ29udHJvbGxlci5wcmltYXJ5TGFuZ3VhZ2VdOwotfQotCi0jcHJhZ21hIG1hcmsgLSBRdWlj
a2JvYXJkIHN1YmNsYXNzaW5nCi0KLS0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZpZXdIZWlnaHQK
LXsKLSAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKLQotICAgIHJldHVybiBb
X2NvbnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXS5o
ZWlnaHQ7Ci19Ci0KLS0gKFVJVmlldyAqKWhlYWRlckNvbnRlbnRWaWV3Ci17Ci0gICAgW3NlbGYg
dXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF07Ci0KLSAgICBDR0Zsb2F0IHZpZXdXaWR0aCA9IENH
UmVjdEdldFdpZHRoKHNlbGYuY29udGVudFZpZXcuYm91bmRzKTsKLSAgICBDR1NpemUgc2l6ZVRo
YXRGaXRzID0gW19jb250ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3Vu
ZHMuc2l6ZV07Ci0gICAgW19jb250ZXh0VmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKCh2aWV3V2lk
dGggLSBzaXplVGhhdEZpdHMud2lkdGgpIC8gMiwgMCwgc2l6ZVRoYXRGaXRzLndpZHRoLCBzaXpl
VGhhdEZpdHMuaGVpZ2h0KV07Ci0gICAgW19jb250ZXh0VmlldyBsYXlvdXRTdWJ2aWV3c107Ci0g
ICAgcmV0dXJuIF9jb250ZXh0Vmlldy5nZXQoKTsKLX0KLQotQGVuZAotCi12b2lkIGNvbmZpZ3Vy
ZVN0YXR1c0JhckZvckNvbnRyb2xsZXIoUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqY29u
dHJvbGxlciwgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRl
KQotewotICAgIC8vIEFuIGludGVybmFsIGNsaWVudCAoZS5nLiBTYWZhcmkncyBtb2RhbCBzaGVl
dCkgbWF5IGhhdmUgbW92ZWQgdGhlIHN0YXR1cyBiYXIgb2Zmc2NyZWVuLgotICAgIC8vIEJlZm9y
ZSB1cGRhdGluZyB0aGUgc3RhdHVzIGJhciwgbWFrZSBzdXJlIHRoYXQgd2UgYnJpbmcgdGhlIHN0
YXR1cyBiYXIgYmFjayB0byBpdHMgb3JpZ2luYWwgcG9zaXRpb24uCi0gICAgUFVJQ1N0YXR1c0Jh
ciAqc3RhdHVzQmFyID0gW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dLl9w
dWljU3RhdHVzQmFyOwotICAgIHN0YXR1c0Jhci5mcmFtZSA9IENHUmVjdCB7IENHUG9pbnRaZXJv
LCBzdGF0dXNCYXIuZnJhbWUuc2l6ZSB9OwotCi0gICAgUFVJQ0FwcGxpY2F0aW9uU3RhdHVzQmFy
SXRlbSAqaXRlbSA9IGNvbnRyb2xsZXIucHVpY19hcHBsaWNhdGlvblN0YXR1c0Jhckl0ZW07Ci0g
ICAgaXRlbS50aXRsZSA9IFtkZWxlZ2F0ZSBpbnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVy
OmNvbnRyb2xsZXJdOwotICAgIGl0ZW0udGl0bGVDb2xvciA9IFtVSUNvbG9yIHN5c3RlbUJsdWVD
b2xvcl07Ci0gICAgaXRlbS5uYXZVSUJhY2tCdXR0b25EaXNhYmxlZCA9IE5POwotICAgIGl0ZW0u
c2hvd05hdmlnYXRpb25VSSA9IFlFUzsKLSAgICBpdGVtLnRpdGxlSW50ZXJhY3RpdmUgPSBZRVM7
Ci0gICAgW2l0ZW0gY29tbWl0Q2hhbmdlc0FuaW1hdGVkOk5PXTsKLX0KLQotI2VuZGlmIC8vIEhB
VkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMDRjYzVhNjk0MDRlYTg1M2U1ZmQ1ZjYwYzAyOWZlZWJkODMzYmM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaApAQCAtMCwwICsxLDM3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCisKKyNpbXBvcnQgIlBlcHBlclVJQ29y
ZVNQSS5oIgorCitAcHJvdG9jb2wgV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA8
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPgorCistIChOU1N0cmluZyAqKWlu
cHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyOworLSAoTlNTdHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJv
bGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CisKK0BlbmQK
KworI2VuZGlmIC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdD
b250cm9sbGVyLmgKaW5kZXggYzgxMDIwODY2OWI0MTY0YTUxZDk2Yjc0OThjMTE4ODI4Mjg5YmUz
NS4uZTY5ZmIwMTE1MzI1MzRjZWUxZjkyMTgxNTZkMzI0MWU3NWYxNTVjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVj
dE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQ
RVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
LmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBj
bGFzcyBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXI7CiAKQEAgLTQxLDkgKzQxLDExIEBA
CiAKIEBlbmQKIAotQGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIgOiBX
S1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51TGlz
dFZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKIAogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1NlbGVjdE1lbnVMaXN0Vmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8UFVJQ1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGljdGF0aW9uTW9k
ZSlkaWN0YXRpb25Nb2RlIE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Q29kZXI6KE5TQ29kZXIgKiljb2RlciBOU19VTkFWQUlMQUJMRTsKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHdlYWspIGlkIDxXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4g
ZGVsZWdhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDJk
MzAxOWZkNzQzYWJlNTMwOTY3MTI2Mzc5ZWMxZThlYmM4MmM1ZmQuLjc4ZDRiNzMwMGVhMjNmNDc4
NmM4YjFiZWJjYTNkOWNmOGRlOTM3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlci5tbQpAQCAtNDMsOCArNDMsMTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUFVJ
Q1F1aWNrYm9hcmRMaXN0U2VjdGlvbikgewogICAgIFBVSUNRdWlja2JvYXJkTGlzdFNlY3Rpb25D
b250ZW50VW5hdmFpbGFibGUsCiB9OwogCi0vLyBGSVhNRTogVGhpcyBtZXRob2QgY2FuIGJlIHJl
bW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vNTc4MDc0NDU+IGxhbmRzIGluIGEgYnVpbGQuCi1A
aW50ZXJmYWNlIFdLU2VsZWN0TWVudUl0ZW1DZWxsIDogV0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxs
CitzdGF0aWMgY29uc3RleHByIENHRmxvYXQgaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxpbmUgPSAy
NjsKK3N0YXRpYyBjb25zdGV4cHIgQ0dGbG9hdCBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b20gPSA4
OworCisvLyBGSVhNRTogVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81
NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51SXRlbUNl
bGwgOiBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBVSUltYWdlVmlldyAqaW1hZ2VWaWV3OwogQGVuZAogCkBAIC01Miw3ICs1NSw3IEBA
IEBpbXBsZW1lbnRhdGlvbiBXS1NlbGVjdE1lbnVJdGVtQ2VsbCB7CiAgICAgUmV0YWluUHRyPFVJ
SW1hZ2VWaWV3PiBfaW1hZ2VWaWV3OwogfQogCi0tIChpbnN0YW5jZXR5cGUpIGluaXRXaXRoU3R5
bGU6KFVJVGFibGVWaWV3Q2VsbFN0eWxlKXN0eWxlIHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcg
KilyZXVzZUlkZW50aWZpZXIKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN0eWxlOihVSVRhYmxl
Vmlld0NlbGxTdHlsZSlzdHlsZSByZXVzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopcmV1c2VJZGVu
dGlmaWVyCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aFN0eWxlOnN0eWxlIHJl
dXNlSWRlbnRpZmllcjpyZXVzZUlkZW50aWZpZXJdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAg
LTcxLDExICs3NCwyMSBAQCAtIChVSUltYWdlVmlldyAqKWltYWdlVmlldwogICAgIHJldHVybiBf
aW1hZ2VWaWV3LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNW
YWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKK30KKworLSAo
Q0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7CisgICAgcmV0dXJuIGl0ZW1DZWxs
QmFzZWxpbmVUb0JvdHRvbTsKK30KKwogQGVuZAogCiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTExF
Q1RJT05fVklFV1MpCiAKLUBpbnRlcmZhY2UgV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVt
Q2VsbCA6IFdLUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsCitAaW50ZXJmYWNl
IFdLU2VsZWN0TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RD
b2xsZWN0aW9uVmlld0l0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJ
SW1hZ2VWaWV3ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTEwMiw2ICsxMTUsMTYgQEAgLSAoVUlJ
bWFnZVZpZXcgKilpbWFnZVZpZXcKICAgICByZXR1cm4gX2ltYWdlVmlldy5nZXQoKTsKIH0KIAor
LSAoQ0dGbG9hdCl0b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRl
bUNlbGxUb3BUb0xhYmVsQmFzZWxpbmU7Cit9CisKKy0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRv
bVNwZWNWYWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Cit9CisK
IEBlbmQKIAogI2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQpAQCAt
MTE1LDcgKzEzOCw3IEBAIEBkeW5hbWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhEZWxlZ2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRl
PilkZWxlZ2F0ZQogewotICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxlZ2F0
ZV07CisgICAgcmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlv
bk1vZGU6UFVJQ0RpY3RhdGlvbk1vZGVUZXh0XTsKIH0KIAogLSAodm9pZCl2aWV3RGlkTG9hZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaAppbmRleCBlMTI5MmZiZDMzYTU3Y2Y2Njdh
NDdlYTRlMTMyNTE0MDE5Y2VkNTcyLi44ZWIyYzM2NDJkODkxYzdkNWEwMTRjMmY2YjIyZmE1NzUw
NjdmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaApAQCAtMjcsNyArMjcs
NyBAQAogCiAjaWYgSEFWRShQRVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJk
TGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ckRlbGVnYXRlLmgiCiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTnVtYmVyUGFkSW5w
dXRNb2RlKSB7CiAgICAgV0tOdW1iZXJQYWRJbnB1dE1vZGVOb25lLApAQCAtNDEsMTcgKzQxLDIx
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTnVtYmVyUGFkSW5wdXRNb2RlKSB7CiBA
cHJvdG9jb2wgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA8V0tRdWlja2Jv
YXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KIAogLSAoV0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVt
ZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5cGVGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcjsKLS0gKE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXRleHRTdWdnZXN0aW9uc0Zv
ckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyOwotLSAodm9pZClsaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RUZXh0U3VnZ2VzdGlvbjooVUlUZXh0U3Vn
Z2VzdGlvbiAqKXN1Z2dlc3Rpb247Ci0tIChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlz
dFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxl
cjsKKy0gKFBVSUNUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3
Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwor
LSAoVUlWaWV3ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2ti
b2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKy0gKEJPT0wpYWxsb3dzRGljdGF0aW9u
SW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlcjsKKy0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmll
d0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsK
Ky0gKEJPT0wpc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZpZXdGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwogCiBAZW5kCiAK
LUBpbnRlcmZhY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgOiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIKK0BpbnRlcmZhY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgOiBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+KWRlbGVnYXRlIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7Ci0tICh2b2lkKXJlbG9h
ZFRleHRTdWdnZXN0aW9uczsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25N
b2RlOihQVUlDRGljdGF0aW9uTW9kZSlkaWN0YXRpb25Nb2RlIE5TX1VOQVZBSUxBQkxFOworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlciBOU19VTkFWQUlMQUJM
RTsKKy0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4dFN1Z2dlc3Rp
b24gKj4gKilzdWdnZXN0aW9uczsKKy0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7CiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZT4gZGVsZWdhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQpp
bmRleCAxYmIxMjNiOWIxYmM2ZDEwNzNlMDJmZTY4ZThjYjEzOWE5MTM3YWZkLi5kNDk5NDUzNzQ3
YTQ5MDY5Y2JmZGNjNWFkNDJkOGJlNjlmZjEzYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyLm1tCkBAIC0zMSwxMSArMzEsOSBAQAogI2ltcG9ydCAiV0tOdW1iZXJQYWRWaWV3
Q29udHJvbGxlci5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCB0ZXh0U3VnZ2VzdGlvbkJ1dHRvbkhlaWdodCA9IDQ0Owotc3RhdGljIGNvbnN0IENH
RmxvYXQgdGV4dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJnaW4gPSA5Owotc3RhdGljIE5T
U3RyaW5nICp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldlYktpdFF1aWNr
Ym9hcmRUZXh0U3VnZ2VzdGlvbkNlbGwiOwotCiBAaW1wbGVtZW50YXRpb24gV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgeworICAgIEJPT0wgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGU7Cisg
ICAgUmV0YWluUHRyPFVJVmlldz4gX2NvbnRleHRWaWV3OwogICAgIFJldGFpblB0cjxXS051bWJl
clBhZFZpZXdDb250cm9sbGVyPiBfbnVtYmVyUGFkVmlld0NvbnRyb2xsZXI7CiB9CiAKQEAgLTQz
LDMyICs0MSw0MiBAQCBAZHluYW1pYyBkZWxlZ2F0ZTsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGVsZWdhdGU6KGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPilk
ZWxlZ2F0ZQogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxl
Z2F0ZV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxlZ2F0
ZSBkaWN0YXRpb25Nb2RlOlBVSUNEaWN0YXRpb25Nb2RlVGV4dF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgc2VsZi50ZXh0Q29udGVudFR5cGUgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0Q29u
dGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07CisgICAgX2NvbnRleHRWaWV3TmVl
ZHNVcGRhdGUgPSBZRVM7CisgICAgc2VsZi50ZXh0SW5wdXRDb250ZXh0ID0gW3NlbGYuZGVsZWdh
dGUgdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKICAgICByZXR1
cm4gc2VsZjsKIH0KIAotLSAodm9pZCl2aWV3RGlkTG9hZAorLSAodm9pZClyZWxvYWRDb250ZXh0
VmlldwogewotICAgIFtzdXBlciB2aWV3RGlkTG9hZF07Ci0KLSAgICBzZWxmLmhlYWRlclZpZXcu
aGlkZGVuID0gWUVTOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOworICAgIFtz
ZWxmIHJlbG9hZEhlYWRlckNvbnRlbnRWaWV3XTsKIH0KIAotLSAodm9pZCl3aWxsUHJlc2VudEFy
b3VldFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyICop
cXVpY2tib2FyZAorLSAodm9pZCl1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkCiB7Ci0gICAgTlNT
dHJpbmcgKmluaXRpYWxUZXh0ID0gW3NlbGYuZGVsZWdhdGUgaW5pdGlhbFZhbHVlRm9yVmlld0Nv
bnRyb2xsZXI6c2VsZl07Ci0gICAgaWYgKGluaXRpYWxUZXh0Lmxlbmd0aCkKLSAgICAgICAgW3F1
aWNrYm9hcmQgc2V0SW5wdXRUZXh0OmluaXRpYWxUZXh0IHNlbGVjdGlvblJhbmdlOk5TTWFrZVJh
bmdlKGluaXRpYWxUZXh0Lmxlbmd0aCwgMCldOworICAgIGlmICghX2NvbnRleHRWaWV3TmVlZHNV
cGRhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcHJldmlvdXNDb250ZXh0VmlldyA9
IF9jb250ZXh0VmlldzsKKyAgICBpZiAoW3NlbGYuZGVsZWdhdGUgc2hvdWxkRGlzcGxheUlucHV0
Q29udGV4dFZpZXdGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0pCisgICAgICAgIF9jb250ZXh0
VmlldyA9IFtzZWxmLmRlbGVnYXRlIGlucHV0Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxlcjpz
ZWxmXTsKKyAgICBlbHNlCisgICAgICAgIF9jb250ZXh0VmlldyA9IG5pbDsKIAotICAgIHF1aWNr
Ym9hcmQubWluVGV4dExlbmd0aEZvckVuYWJsaW5nQWNjZXB0ID0gMDsKKyAgICBfY29udGV4dFZp
ZXdOZWVkc1VwZGF0ZSA9IE5POworfQorCistIChCT09MKXJlcXVpcmVzTnVtZXJpY0lucHV0Cit7
CisgICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIG51bWVyaWNJbnB1dE1vZGVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6c2VsZl0gIT0gV0tOdW1iZXJQYWRJbnB1dE1vZGVOb25lOwogfQogCiAtIChOU0Fy
cmF5ICopYWRkaXRpb25hbFRyYXlCdXR0b25zCiB7Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRlIG51
bWVyaWNJbnB1dE1vZGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0gPT0gV0tOdW1iZXJQYWRJ
bnB1dE1vZGVOb25lKQorICAgIGlmICghc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dCkKICAgICAg
ICAgcmV0dXJuIEBbIF07CiAKICNpZiBIQVZFKFBVSUNfQlVUVE9OX1RZUEVfUElMTCkKQEAgLTk5
LDkgKzEwNywxNCBAQCAtICh2b2lkKXByZXNlbnROdW1iZXJQYWRWaWV3Q29udHJvbGxlcgogICAg
IFtzZWxmIHByZXNlbnRWaWV3Q29udHJvbGxlcjpfbnVtYmVyUGFkVmlld0NvbnRyb2xsZXIuZ2V0
KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKIH0KIAotLSAodm9pZClyZWxvYWRUZXh0
U3VnZ2VzdGlvbnMKKy0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4
dFN1Z2dlc3Rpb24gKj4gKilzdWdnZXN0aW9ucwogewotICAgIFtzZWxmIHJlbG9hZExpc3RJdGVt
c107CisgICAgYXV0byBtZXNzYWdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheTxOU0F0dHJp
YnV0ZWRTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c3VnZ2VzdGlvbnMuY291bnRd
KTsKKyAgICBmb3IgKFVJVGV4dFN1Z2dlc3Rpb24gKnN1Z2dlc3Rpb24gaW4gc3VnZ2VzdGlvbnMp
IHsKKyAgICAgICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6c3VnZ2VzdGlvbi5kaXNwbGF5VGV4dF0pOwor
ICAgICAgICBbbWVzc2FnZXMgYWRkT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCldOworICAg
IH0KKyAgICBzZWxmLm1lc3NhZ2VzID0gbWVzc2FnZXMuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZW50
ZXJUZXh0OihOU1N0cmluZyAqKXRleHQKQEAgLTExMSwxMDkgKzEyNCw0NiBAQCAtICh2b2lkKWVu
dGVyVGV4dDooTlNTdHJpbmcgKil0ZXh0CiAKICNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3Vi
Y2xhc3NpbmcKIAotLSAoQk9PTClzdXBwb3J0c0RpY3RhdGlvbklucHV0CistIChDR0Zsb2F0KWhl
YWRlckNvbnRlbnRWaWV3SGVpZ2h0CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIGFsbG93
c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwotfQotCi0tICh2b2lk
KWRpZFNlbGVjdExpc3RJdGVtQXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCi17
Ci0gICAgW3NlbGYgX2RpZFNlbGVjdExpc3RJdGVtOmluZGV4UGF0aC5yb3ddOwotfQotCi0vLyBG
SVhNRTogVGhpcyBtZXRob2QgY2FuIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vNTc4
MDc0NDU+IGxhbmRzIGluIGEgYnVpbGQuCi0tICh2b2lkKWRpZFNlbGVjdExpc3RJdGVtOihOU0lu
dGVnZXIpaXRlbU51bWJlcgotewotICAgIFtzZWxmIF9kaWRTZWxlY3RMaXN0SXRlbTppdGVtTnVt
YmVyXTsKLX0KLQotLSAodm9pZClfZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVt
YmVyCi17Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0U3VnZ2VzdGlvbnMg
PSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2Vs
Zl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNfY2FzdDxOU1VJbnRl
Z2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsK
IAotICAgIFtzZWxmLmRlbGVnYXRlIGxpc3RWaWV3Q29udHJvbGxlcjpzZWxmIGRpZFNlbGVjdFRl
eHRTdWdnZXN0aW9uOlt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVtYmVyXV07
CisgICAgcmV0dXJuIFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcu
Ym91bmRzLnNpemVdLmhlaWdodDsKIH0KIAotLSAoTlNJbnRlZ2VyKW51bWJlck9mTGlzdEl0ZW1z
CistIChVSVZpZXcgKiloZWFkZXJDb250ZW50VmlldwogewotICAgIHJldHVybiBbc2VsZi5kZWxl
Z2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0uY291bnQ7Ci19
CisgICAgW3NlbGYgdXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF07CiAKLS0gKENHRmxvYXQpaGVp
Z2h0Rm9yTGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyIHdpZHRoOihDR0Zsb2F0KXdpZHRo
Ci17Ci0gICAgcmV0dXJuIHRleHRTdWdnZXN0aW9uQnV0dG9uSGVpZ2h0OworICAgIENHRmxvYXQg
dmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgoc2VsZi5jb250ZW50Vmlldy5ib3VuZHMpOworICAg
IENHU2l6ZSBzaXplVGhhdEZpdHMgPSBbX2NvbnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNv
bnRlbnRWaWV3LmJvdW5kcy5zaXplXTsKKyAgICBbX2NvbnRleHRWaWV3IHNldEZyYW1lOkNHUmVj
dE1ha2UoKHZpZXdXaWR0aCAtIHNpemVUaGF0Rml0cy53aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZp
dHMud2lkdGgsIHNpemVUaGF0Rml0cy5oZWlnaHQpXTsKKyAgICByZXR1cm4gX2NvbnRleHRWaWV3
LmdldCgpOwogfQogCi0vLyBGSVhNRTogVGhpcyBtZXRob2QgY2FuIGJlIHJlbW92ZWQgd2hlbiA8
cmRhcjovL3Byb2JsZW0vNTc4MDc0NDU+IGxhbmRzIGluIGEgYnVpbGQuCi0tIChQVUlDUXVpY2ti
b2FyZExpc3RJdGVtQ2VsbCAqKWNlbGxGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIK
Ky0gKEJPT0wpc2hvdWxkU2hvd0xhbmd1YWdlQnV0dG9uCiB7Ci0gICAgTlNBcnJheTxVSVRleHRT
dWdnZXN0aW9uICo+ICp0ZXh0U3VnZ2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2Vz
dGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9u
cy5jb3VudCA8PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAg
ICBVSVRleHRTdWdnZXN0aW9uICp0ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2Jq
ZWN0QXRJbmRleDppdGVtTnVtYmVyXTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0
cihbc2VsZi5saXN0VmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6dGV4dFN1
Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXSk7Ci0gICAgaWYgKCFyZXVzYWJsZUNlbGwpIHsK
LSAgICAgICAgcmV1c2FibGVDZWxsID0gYWRvcHROUyhbW1dLUXVpY2tib2FyZExpc3RJdGVtQ2Vs
bCBhbGxvY10gaW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJ
ZGVudGlmaWVyOnRleHRTdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0pOwotICAgICAgICBb
cmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0ubnVtYmVyT2ZMaW5lcyA9IDE7Ci0gICAgICAgIFtyZXVz
YWJsZUNlbGwgaXRlbUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRp
bmdUYWlsOwotICAgICAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0uYWxsb3dzRGVmYXVsdFRp
Z2h0ZW5pbmdGb3JUcnVuY2F0aW9uID0gWUVTOwotICAgIH0KLQotICAgIENHRmxvYXQgdmlld1dp
ZHRoID0gQ0dSZWN0R2V0V2lkdGgoc2VsZi5saXN0Vmlldy5ib3VuZHMpOwotICAgIFtyZXVzYWJs
ZUNlbGwgY29uZmlndXJlRm9yVGV4dDp0ZXh0U3VnZ2VzdGlvbi5kaXNwbGF5VGV4dCB3aWR0aDp2
aWV3V2lkdGhdOwotCi0gICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgLWNvbmZpZ3VyZUZv
clRleHQ6d2lkdGg6IGNhdXNlcyB0aGUgdGV4dCBsYWJlbCB0byBydW4gb2ZmIHRoZSBlbmQgb2Yg
dGhlIGNlbGwuCi0gICAgLy8gQWRqdXN0IGZvciB0aGlzIGJ5IHNocmlua2luZyB0aGUgbGFiZWwg
d2lkdGggdG8gYWN0dWFsbHkgZml0IHRoZSBib3VuZHMgb2YgdGhlIGNlbGwuCi0gICAgW3JldXNh
YmxlQ2VsbCBpdGVtTGFiZWxdLmZyYW1lID0gVUlSZWN0SW5zZXQoW3JldXNhYmxlQ2VsbCBjb250
ZW50Vmlld10uYm91bmRzLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbiwg
MCwgdGV4dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJnaW4pOwotICAgIHJldHVybiByZXVz
YWJsZUNlbGwuYXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dz
TGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07CiB9CiAKLS0gKE5T
U3RyaW5nICopbGlzdEl0ZW1DZWxsUmV1c2VJZGVudGlmaWVyCistIChCT09MKXN1cHBvcnRzRGlj
dGF0aW9uSW5wdXQKIHsKLSAgICByZXR1cm4gdGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlm
aWVyOworICAgIHJldHVybiBbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxp
c3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKIH0KIAotI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNU
SU9OX1ZJRVdTKQotCi0tIChDbGFzcylsaXN0SXRlbUNlbGxDbGFzcworLSAoQk9PTClzaG91bGRT
aG93VHJheVZpZXcKIHsKLSAgICByZXR1cm4gW1dLUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmll
d0l0ZW1DZWxsIGNsYXNzXTsKKyAgICByZXR1cm4gc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dDsK
IH0KIAotLSAoUFVJQ1F1aWNrYm9hcmRMaXN0Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCAqKWl0ZW1D
ZWxsRm9yTGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyIGZvckluZGV4UGF0aDooTlNJbmRl
eFBhdGggKilpbmRleFBhdGgKKy0gKEJPT0wpc2hvdWxkU2hvd1RleHRGaWVsZAogewotICAgIE5T
QXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqdGV4dFN1Z2dlc3Rpb25zID0gW3NlbGYuZGVsZWdh
dGUgdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGlmICh0
ZXh0U3VnZ2VzdGlvbnMuY291bnQgPD0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oaXRlbU51bWJl
cikpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgfQotCi0gICAgVUlUZXh0U3VnZ2VzdGlvbiAqdGV4dFN1Z2dlc3Rpb24gPSBbdGV4dFN1
Z2dlc3Rpb25zIG9iamVjdEF0SW5kZXg6aXRlbU51bWJlcl07Ci0gICAgYXV0byByZXVzYWJsZUNl
bGwgPSByZXRhaW5QdHIoW3NlbGYuY29sbGVjdGlvblZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdp
dGhSZXVzZUlkZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyIGZvcklu
ZGV4UGF0aDppbmRleFBhdGhdKTsKLQotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5udW1i
ZXJPZkxpbmVzID0gMTsKLSAgICBbcmV1c2FibGVDZWxsIGJvZHlMYWJlbF0ubGluZUJyZWFrTW9k
ZSA9IE5TTGluZUJyZWFrQnlUcnVuY2F0aW5nVGFpbDsKLSAgICBbcmV1c2FibGVDZWxsIGJvZHlM
YWJlbF0uYWxsb3dzRGVmYXVsdFRpZ2h0ZW5pbmdGb3JUcnVuY2F0aW9uID0gWUVTOwotICAgIFty
ZXVzYWJsZUNlbGwgc2V0VGV4dDp0ZXh0U3VnZ2VzdGlvbi5kaXNwbGF5VGV4dF07Ci0KLSAgICAv
LyBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2Vz
IHRoZSB0ZXh0IGxhYmVsIHRvIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBB
ZGp1c3QgZm9yIHRoaXMgYnkgc2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBm
aXQgdGhlIGJvdW5kcyBvZiB0aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGJvZHlMYWJlbF0u
ZnJhbWUgPSBVSVJlY3RJbnNldChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAs
IHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxh
YmVsSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiAhc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dDsKIH0KIAotI2VuZGlm
IC8vIEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCiAtIChCT09MKXN1cHBvcnRz
QXJvdWV0SW5wdXQKIHsKLSAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9k
ZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmU7
CisgICAgcmV0dXJuICFzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmll
d0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQ
aWNrZXJWaWV3Q29udHJvbGxlci5oCmluZGV4IDY1NThjZGRlODIyY2JkOTVmYmIwNzI5M2E2ZGJm
M2Y4NmNjYzVmYTMuLjlhN2VhMTAwZGVlNDE2YTliZTY3OGFiZTcyNDUwMjk1NDBhNWRiM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJW
aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZF
KFBFUFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xs
ZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAog
QGludGVyZmFjZSBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZGU5MzBiNmI5Yzc3MjliMTA1ZDlkNjBjNmNjODI0MmVhMmVlZjFiMi4u
NmIxNDVmZjljNjVmNmJiZTY4ZjdjNTI3NGYzYTcxMTE0OWZmMzgyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDM4LDcgKzIwMzgs
NyBAQAogCQlGNENCMDlFNTIyNUQ1QTA5MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9s
aWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNENC
MDlFNDIyNUQ1QTAzMDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggKi87IH07
CiAJCUY0Q0YxRTlEMjVFNDBEQ0MwMDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3Rl
bmN5RW5mb3JjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0Q0YxRTlCMjVFNDBEQ0MwMDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3Rl
bmN5RW5mb3JjZXIuaCAqLzsgfTsKIAkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUxOTIwNjA4N0EwMDAzOEJCQTggLyogV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKLQkJRjRENUY1MUYyMDYwODdBMTAwMzhCQkE4IC8q
IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVp
Y2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oICovOyB9OworCQlGNEQ1RjUxRjIwNjA4N0ExMDAz
OEJCQTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENUY1MUIyMDYwODdBMTAwMzhC
QkE4IC8qIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLzsgfTsKIAkJRjRE
QjU0RTYyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
REI1NEU0MjMxOUU3MzMwMDlFMzE1NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyLmggKi87IH07CiAJCUY0RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBBcHBsaWNhdGlv
blNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOUQwNEUyODIxRjdDNzNEMDA3Njc0MUQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5o
ICovOyB9OwogCQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGRTBBM0EyNDYzMkIx
MDAwMjYzMUUxIC8qIENvY29hQ29sb3IuaCAqLzsgfTsKQEAgLTYwMDUsOCArNjAwNSw3IEBACiAJ
CUY0Q0YxRTlDMjVFNDBEQ0MwMDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5
RW5mb3JjZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZXN0
dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW07IHBhdGggPSBpb3MvR2VzdHVyZVJl
Y29nbml6ZXJDb25zaXN0ZW5jeUVuZm9yY2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNEQ1RjUxOTIwNjA4N0EwMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0SW5wdXRMaXN0
Vmlld0NvbnRyb2xsZXIuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ1RjUxQTIwNjA4N0Ex
MDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8q
IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaDsgcGF0aCA9IGlvcy9m
b3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJRjRENUY1MUMyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1
aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0RDVGNTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ckRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlckRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
REI1NEU0MjMxOUU3MzMwMDlFMzE1NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSGlnaGxpZ2h0TG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS0hpZ2hsaWdodExvbmdQcmVz
c0dlc3R1cmVSZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0REI1
NEU1MjMxOUU3MzMwMDlFMzE1NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25p
emVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tIaWdobGln
aHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS0hpZ2hsaWdodExv
bmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNEY1OUFEMzIwNjVBNUM5MDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTZWxlY3RN
ZW51TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxp
c3RWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5MTAs
NyArNzkwOSw2IEBACiAJCTM3NTRENTQxMUIzQTI5OTgwMDNBNEM3RiAvKiBDb2NvYSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMzE1NUVFMEMyNjczRjRF
RjAwODVFNTlBIC8qIFZpc2lvbktpdFNQSS5oICovLAogCQkJCUUzQ0FBQTQzMjQxMzI3OEEwMENF
RDJFMiAvKiBBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oICovLAogCQkJCTU3MkVCQkRDMjUzOTIx
ODEwMDA1NTJCMyAvKiBBcHBBdHRlc3RTUEkuaCAqLywKIAkJCQk1N0ZBQkIwRTI1ODE3Q0YwMDA1
OURDOTUgLyogQXV0aGVudGljYXRpb25TZXJ2aWNlc0NvcmVTUEkuaCAqLywKQEAgLTc5MjQsNiAr
NzkyMiw3IEBACiAJCQkJNUNCNkFFNDMyNjA5Nzk5QzAwQjZFRDVBIC8qIFJlYXNvblNQSS5oICov
LAogCQkJCTBFOTdENzRDMjAwRThGRjMwMEJGNjY0MyAvKiBTYWZlQnJvd3NpbmdTUEkuaCAqLywK
IAkJCQk0NDhBQzI0RDI2NzEzNUE2MDBCMjg5MjEgLyogU3luYXBzZVNQSS5oICovLAorCQkJCTMx
NTVFRTBDMjY3M0Y0RUYwMDg1RTU5QSAvKiBWaXNpb25LaXRTUEkuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gQ29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTEzODIsOCArMTEz
ODEsNyBAQAogCQkJCTJFQTdCM0Q0MjAyNkNGMjMwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXcu
bW0gKi8sCiAJCQkJMkVBN0IzQ0YyMDI2Q0VGODAwOUNFNUFDIC8qIFdLTnVtYmVyUGFkVmlld0Nv
bnRyb2xsZXIuaCAqLywKIAkJCQkyRUE3QjNEMDIwMjZDRUY4MDA5Q0U1QUMgLyogV0tOdW1iZXJQ
YWRWaWV3Q29udHJvbGxlci5tbSAqLywKLQkJCQlGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyog
V0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggKi8sCi0JCQkJRjRENUY1MUMyMDYwODdB
MTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbSAqLywKKwkJCQlG
NEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5oICovLAogCQkJCUY0RjU5QUQ0MjA2NUE1Q0EwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIuaCAqLywKIAkJCQlGNEY1OUFEMzIwNjVBNUM5MDA2Q0FBNDYgLyog
V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tICovLAogCQkJCUY0RDVGNTE5MjA2MDg3
QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovLApAQCAtMTIw
MzgsNyArMTIwMzYsNiBAQAogCQkJCTkzQjI2MTRFMjI3RDE0QjEwMEI5N0E3NiAvKiBMb2NhbFN0
b3JhZ2VEYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNCMjYxNEYyMjdEMTRCMTAwQjk3
QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDZCRUI2REIyMkZCOUQ0ODAwMjY5ODY3IC8qIExvY2FsU3RvcmFnZU5hbWVzcGFjZS5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJMzE1NUVFMEQyNjczRjRGMDAwODVFNTlBIC8qIFZpc2lvbktpdFNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBN0YyRjMxMjVCRjgyMDAwOEFFQjFEIC8qIExvZ2dpbmcu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGRENEN0Y3MUQ0N0U5MkEwMDlGMDhCQyAvKiBMb2dJbml0
aWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RDg2QzIxREY3NTI2NTAwNzc0NUU4
IC8qIE1hY2hNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMzc4LDYgKzEyMzc1LDcgQEAK
IAkJCQkyNjg0MDU1MzE4Qjg2RUQ2MDAyMkMzOEIgLyogVmlld1VwZGF0ZURpc3BhdGNoZXJNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjY4NDA1NDQxOEI4NUE2MzAwMjJDMzhCIC8qIFZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTJERDVBNzI5
MUVCRjA4RDUwMDlCQTU5NyAvKiBWaXNpYmxlV2ViUGFnZUNvdW50ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTMxNTVFRTBEMjY3M0Y0RjAwMDg1RTU5QSAvKiBWaXNpb25LaXRTUEkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMEYyOUU0MTIwQjQ0NDIwMDUzRDFCOSAvKiBWaXNpdGVkTGlua1N0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTYwMjI0RDE4QzE2QjlGMDBDM0U4QzkgLyogVmlzaXRl
ZExpbmtTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY0Q0VGMDE4QkM0ODE4
MDBCQzJEMzQgLyogVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMTI5MjIsNyArMTI5MjAsNyBAQAogCQkJCTUxMkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBX
S1Byb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3MkQ0QzkxRTczNUYwOTAw
RUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEFD
QUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJC
QTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFEMDFCQ0QxOTA1RDU0OTAwQzlDNDVGIC8qIFdLUmVsb2FkRnJhbWVFcnJvclJlY292
ZXJ5QXR0ZW1wdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTlFMzI5QjE4MjJFMUNDMDBGNUQw
NEMgLyogV0tSZW1vdGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOUUzMjlGMTgyMkZF
REQwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdENvZGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdl
TG9nCmluZGV4IGI4MDMxNzIwYjlkNTNmNTZjYTRlNDYxY2E3MmMxNjQ5NTEzZjE3YjMuLmY3NWYz
NDE4MDA3Y2ZmZjUwZDhjYjFhMmYxYmI5NDY0OWQwZjA4NzYgMTAwNjQ0Ci0tLSBhL1dlYktpdExp
YnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDIxLTA2LTE0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVuYWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBm
b3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4CisgICAgICAgIHJkYXI6Ly83ODEwMjk1Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0
UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvNy9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1Bl
cHBlclVJQ29yZS50YmQ6CisKIDIwMjEtMDYtMTUgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRA
YXBwbGUuY29tPgogCiAgICAgICAgW2lPUyAxNV0gU3VwcG9ydCBidWlsZGluZyBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0
Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZCBiL1dlYktpdExp
YnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29y
ZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZAppbmRleCBmOTQxYTllYWI3NWNkMGIxNDhmNDQ5
YTU3Mzk4MDJmZWNiZmE0Mjc2Li5iNzE0Nzc0MTQyMmE5ZTgwOTUyOTY3MTJjODM5ZjA1MjU1OTRj
OWMyIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0
dWJzL3dhdGNob3MvNy9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQKKysr
IGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzcv
UGVwcGVyVUlDb3JlLmZyYW1ld29yay9QZXBwZXJVSUNvcmUudGJkCkBAIC04LDUgKzgsNSBAQCBl
eHBvcnRzOgogICAgIG9iamMtY2xhc3NlczogICAgWyBQVUlDUXVpY2tib2FyZExpc3RUcmF5QnV0
dG9uLCBQVUlDQWN0aW9uR3JvdXAsIFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsLCBQVUlDQWN0
aW9uQ29udHJvbGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgUFVJQ0Nyb3duSW5wdXRTZXF1
ZW5jZXIsIFBVSUNQaWNrZXJWaWV3LCBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbCwgUFVJQ1F1
aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIFBVSUNB
cHBsaWNhdGlvbiwgUFVJQ1Jlc291cmNlcywgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwg
UFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
IFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIsIFBVSUNQaWNrZXJWaWV3IF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJQ1BpY2tlclZp
ZXcsIFBVSUNUZXh0SW5wdXRDb250ZXh0LCBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJv
bGxlciBdCiAuLi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431493</attachid>
            <date>2021-06-15 16:27:02 -0700</date>
            <delta_ts>2021-06-16 13:56:27 -0700</delta_ts>
            <desc>Rebase after r278910</desc>
            <filename>bug-226988-20210615162701.patch</filename>
            <type>text/plain</type>
            <size>58482</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDliMGY2MWM5MTRmNzE1ZDJl
OTc5NjZiNzJmZDFiMDA4NTRmOTAxZTYuLmU4ODVhZDE1YzRmZTA1MDJiYzQ2ZWJjYWM1NThkNjY2
ZTMyZWQ5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yIHRleHQgaW5wdXQgbG9naWMgb24gd2F0Y2hPUyBz
dWNoIHRoYXQgd2UncmUgYWJsZSB0byBwcmVzZW50IHRoZSBuZXcgKCJtb2Rlcm4iKSBVSSBmb3Ig
c2NyaWJibGUgdGV4dAorICAgICAgICBpbnB1dCBvbiB3YXRjaE9TIDgsIHJhdGhlciB0aGFuIGxl
Z2FjeSAoaW4tcHJvY2Vzcykgc2NyaWJibGUgVUkuIE92ZXJhbGwsIHRoaXMgcGF0Y2ggcmVtb3Zl
cworICAgICAgICBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWx0b2dldGhlci4gVGhp
cyBoYWQgdHdvIHN1YmNsYXNzZXM6IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciAodXNl
ZCBmb3IKKyAgICAgICAgZm9jdXNlZCBzaW5nbGUgYW5kIG11bHRpcGxlIHNlbGVjdCBlbGVtZW50
cykgYW5kIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZvciB0ZXh0IGlucHV0
IHR5cGVzKS4KKyAgICAgICAgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyIG5vdyBpbmhl
cml0cyBkaXJlY3RseSBmcm9tIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQK
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRzIGZyb20g
UFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXI7IHRoaXMgaW5oZXJpdGFuY2UgZnJv
bQorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBpbnN0ZWFkIG9m
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIGFsbG93cyB0aGUKKyAgICAgICAgV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdG8gc2hvdyB0ZXh0IHN1Z2dlc3Rpb25zIHVzaW5n
IGAtc2V0TWVzc2FnZXM6YCBvbgorICAgICAgICBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29u
dHJvbGxlciwgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGN1c3RvbSBXZWJLaXQgY29kZSB0byBpbnNl
cnQgdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICBUaGlzIG1lYW5zIHRoYXQgd2UgbW92ZSB0
aGUgZm9sbG93aW5nIHBpZWNlcyBvZiBmdW5jdGlvbmFsaXR5IG91dCBvZiBXS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIsIGFuZCBpbnRvCisgICAgICAgIGVpdGhlciBXS1NlbGVjdE1lbnVM
aXN0Vmlld0NvbnRyb2xsZXIgb3IgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXI6CisKKyAg
ICAgICAgMS4gU3VwcG9ydCBmb3IgaW5zZXJ0aW5nIGFuZCB1cGRhdGluZyBjb250ZXh0IHZpZXdz
IChpLmUuIHRoZSBkb21haW4gbmFtZSBoZWFkZXIgdmlldyBpbiBRdWlja2JvYXJkKSA9PgorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAyLiBMb2dpYyBm
b3IgZGV0ZXJtaW5pbmcgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHNob3cgbGFuZ3VhZ2Ugc2Vs
ZWN0aW9uIFVJID0+IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDMu
IFN1cHBvcnQgZm9yIGxheWluZyBvdXQgY3VzdG9tIGNvbGxlY3Rpb24gdmlldyBjZWxscyBpbiBR
dWlja2JvYXJkID0+IFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFBsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oOgorICAgICAgICAqIFNvdXJj
ZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY3JlYXRlUXVpY2tib2FyZFRleHRJ
bnB1dENvbnRleHRdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfY3JlYXRlUXVpY2tib2Fy
ZENvbnRyb2xsZXI6XSk6CisKKyAgICAgICAgUmVmYWN0b3IgbG9naWMgdG8gY3JlYXRlIGEgUFVJ
Q1RleHRJbnB1dENvbnRleHQgZnJvbSB0aGUgY3VycmVudCBmb2N1c2VkIGVsZW1lbnQgaW5mb3Jt
YXRpb24gb3V0IGludG8gYSBzZXBhcmF0ZQorICAgICAgICBoZWxwZXIgbWV0aG9kLCBgLWNyZWF0
ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0YCwgYW5kIHVzZSBpdCB3aGVuIGJvdGggZGlyZWN0
bHkgbGF1bmNoaW5nIGludG8KKyAgICAgICAgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyIGFuZCBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4KKworICAgICAgICAoY2FuVXNlUXVpY2tib2Fy
ZENvbnRyb2xsZXJGb3IpOgorCisgICAgICAgIFJlbW92ZSBhIGNvbW1lbnQsIG5vdyB0aGF0IHdl
IGludGVuZCB0byBjb250aW51ZSB1c2luZyBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBm
b3Igbm9uLWtleWNoYWluLUF1dG9GaWxsLQorICAgICAgICBjb21wYXRpYmxlIHRleHQgZmllbGRz
IG1vdmluZyBmb3J3YXJkLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZm9jdXNlZEZvcm1D
b250cm9sbGVyRGlkVXBkYXRlU3VnZ2VzdGlvbnM6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6XSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxl
cjpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0ZXh0Q29udGVudFR5cGVGb3JUZXN0aW5n
XSk6CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgdmlld0NvbnRyb2xsZXI6aW5wdXRDb250ZXh0
Vmlld0hlaWdodEZvclNpemU6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIHRoaXMgZGVs
ZWdhdGUgbWV0aG9kLCB3aGljaCB3YXMgKGVmZmVjdGl2ZWx5KSB1bnVzZWQgc2luY2Ugd2UganVz
dCBhc2sgZm9yCisgICAgICAgIGAtaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOmAg
ZnJvbSB0aGUgaW5wdXQgZGVsZWdhdGUgYW55d2F5cy4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IGFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29udHJvbGxlcjpdKTog
RGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgdGhpcyB0byBgLWFsbG93c0xhbmd1YWdlU2VsZWN0
aW9uRm9yTGlzdFZpZXdDb250cm9sbGVyOmAuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB0
ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6XSk6IERlbGV0ZWQuCisKKyAgICAg
ICAgUmVwbGFjZSB0aGlzIHdpdGggYC10ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9s
bGVyOmAsIHdoaWNoIHJldHVybnMgYSB3aG9sZSBQVUlDVGV4dElucHV0Q29udGV4dCBpbnN0ZWFk
CisgICAgICAgIG9mIGp1c3QgYSB0ZXh0IGNvbnRlbnQgdHlwZS4KKworICAgICAgICAoLVtXS0Nv
bnRlbnRWaWV3IHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBsaXN0Vmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0
VGV4dFN1Z2dlc3Rpb246XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIHNldmVyYWwgZGVs
ZWdhdGUgbWV0aG9kcyB0aGF0IGFyZSBubyBsb25nZXIgbmVlZGVkLgorCisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyIHZpZXdXaWxsQXBwZWFyOl0pOgorCisg
ICAgICAgIFJlbW92ZSBzb21lIChkZWZ1bmN0KSBsb2dpYyBmb3Igb3ZlcnJpZGluZyB0aGUgc3Rh
dHVzIGJhciB3aGVuIHNob3dpbmcgUXVpY2tib2FyZCBpbnB1dCB2aWV3IGNvbnRyb2xsZXJzLiBU
aGlzCisgICAgICAgIHN0YXR1cyBiYXIgbWVjaGFuaXNtICh3aGljaCB3YXMgcHJldmlvdXNseSB1
c2VkIHRvIHNob3cgbGFiZWwgdGV4dCBmb3IgZm9ybSBjb250cm9scykgaGFzbid0IHdvcmtlZCBz
aW5jZQorICAgICAgICB3YXRjaE9TIDYsIGFuZCB3ZSBuZWVkIHRvIGltcGxlbWVudCB0aGlzIGlu
IGEgd2F5IHRoYXQgZG9lc24ndCB1c2UgUFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRWaWV3QXNz
ZXJ0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIubW06IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9s
bGVyLmguCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVu
dUxpc3RWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tTZWxlY3RNZW51SXRlbUNlbGwg
dG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUl0
ZW1DZWxsIGJhc2VsaW5lVG9Cb3R0b21TcGVjVmFsdWVdKToKKyAgICAgICAgKC1bV0tTZWxlY3RN
ZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCB0b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWVdKToK
KyAgICAgICAgKC1bV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCBiYXNlbGluZVRv
Qm90dG9tU3BlY1ZhbHVlXSk6CisgICAgICAgICgtW1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlciBpbml0V2l0aERlbGVnYXRlOl0pOgorCisgICAgICAgIFNlZSBhYm92ZSBjb21tZW50IGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgaW5pdFdpdGhEZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgcmVsb2FkQ29udGV4dFZpZXddKToKKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF0p
OgorCisgICAgICAgIE1vdmUgbG9naWMgZm9yIHNob3dpbmcgYW5kIHVwZGF0aW5nIHRoZSBjb250
ZXh0IHZpZXcgb3V0IG9mIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciwgYW5kIGludG8K
KyAgICAgICAgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuIFNlZSBjb21tZW50cyBhYm92
ZS4KKworICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciByZXF1aXJlc051
bWVyaWNJbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBh
ZGRpdGlvbmFsVHJheUJ1dHRvbnNdKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOl0pOgorICAgICAgICAoLVtXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciBoZWFkZXJDb250ZW50Vmlld0hlaWdodF0pOgorICAgICAgICAo
LVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBoZWFkZXJDb250ZW50Vmlld10pOgorICAg
ICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzaG91bGRTaG93TGFuZ3VhZ2VC
dXR0b25dKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgc3VwcG9y
dHNEaWN0YXRpb25JbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBzaG91bGRTaG93VHJheVZpZXddKToKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgc2hvdWxkU2hvd1RleHRGaWVsZF0pOgorCisgICAgICAgIE92ZXJyaWRlIHRo
aXMgYW5kIHJldHVybiBZRVMgZm9yIHRleHQgaW5wdXQgdHlwZXMgdGhhdCBkb24ndCByZXF1aXJl
IGFuIGFkZGl0aW9uYWwgbnVtZXJpYyBpbnB1dCB0cmF5IGJ1dHRvbi4KKyAgICAgICAgVGhpcyBh
bGxvd3MgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIgdG8gc2hvdyBhIG5hdGl2
ZSB0ZXh0IGZpZWxkIGNvbnRhaW5pbmcgdGhlIGlucHV0IHRleHQgaW5zaWRlCisgICAgICAgIHF1
aWNrYm9hcmQsIHdoaWNoICh3aGVuIHRhcHBlZCkgcHJlc2VudHMgbW9kZXJuIHRleHQgaW5wdXQg
VUkuCisKKyAgICAgICAgU2luY2Ugc2hvd2luZyB0aGUgdGV4dCBmaWVsZCBpcyBhcHBhcmVudGx5
IG11dHVhbGx5IGV4Y2x1c2l2ZSB0byBzaG93aW5nIGEgdHJheSB2aWV3LCB3ZSBhZGRpdGlvbmFs
bHkgb3ZlcnJpZGUKKyAgICAgICAgYC1zaG91bGRTaG93VHJheVZpZXdgIGFuZCByZXR1cm4gTk8g
Zm9yIG5vbi1udW1lcmljIHRleHQgaW5wdXRzLgorCisgICAgICAgICgtW1dLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyIHN1cHBvcnRzQXJvdWV0SW5wdXRdKToKKyAgICAgICAgKC1bV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgdmlld0RpZExvYWRdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgd2lsbFByZXNlbnRBcm91ZXRWaWV3Q29u
dHJvbGxlcjpdKTogRGVsZXRlZC4KKworICAgICAgICBUaGVyZSdzIG5vIG5lZWQgdG8gb3ZlcnJp
ZGUgdGhpcyBkZWxlZ2F0ZSBtZXRob2QgYW55bW9yZSwgc2luY2UgdGhlIFBVSUNUZXh0SW5wdXRD
b250ZXh0J3MgYC1pbml0aWFsVGV4dGAgaXMKKyAgICAgICAgc3VmZmljaWVudCB0byBlbnN1cmUg
dGhhdCB0aGUgc2NyaWJibGUgdGV4dCBpbnB1dCBVSSBpcyBwcmVwb3B1bGF0ZWQgd2l0aCB0aGUg
Zm9jdXNlZCB0ZXh0IGZpZWxkJ3MgaW5pdGlhbCB0ZXh0CisgICAgICAgIGNvbnRlbnQuCisKKyAg
ICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgcmVsb2FkVGV4dFN1Z2dlc3Rp
b25zXSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVuYW1lIHRoaXMgdG8gYC11cGRhdGVUZXh0U3Vn
Z2VzdGlvbnM6YCwgYW5kIG1ha2UgaXQgdGFrZSBhIGxpc3Qgb2YgVUlUZXh0U3VnZ2VzdGlvbnMu
IFRoaXMgbWFrZXMgdGhlIGNvZGUgYQorICAgICAgICBiaXQgZWFzaWVyIHRvIGZvbGxvdyBhbmQg
YWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgYC10ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6YCBkZWxlZ2F0ZSBtZXRob2QuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgZGlkU2VsZWN0TGlzdEl0ZW1BdEluZGV4UGF0aDpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgZGlkU2VsZWN0TGlzdEl0ZW06
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIF9k
aWRTZWxlY3RMaXN0SXRlbTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0
Vmlld0NvbnRyb2xsZXIgbnVtYmVyT2ZMaXN0SXRlbXNdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaGVpZ2h0Rm9yTGlzdEl0ZW06d2lkdGg6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGNlbGxG
b3JMaXN0SXRlbTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgbGlzdEl0ZW1DZWxsUmV1c2VJZGVudGlmaWVyXSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGxpc3RJdGVtQ2VsbENsYXNzXSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGl0ZW1DZWxs
Rm9yTGlzdEl0ZW06Zm9ySW5kZXhQYXRoOl0pOiBEZWxldGVkLgorCisgICAgICAgIFJlbW92ZSBh
bGwgdGhpcyBjb2RlIGZvciBzaG93aW5nIHRleHQgc3VnZ2VzdGlvbnMgaW4gUXVpY2tib2FyZCBV
SS4gU2luY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaXMgbm93IGEKKyAgICAgICAg
c3ViY2xhc3Mgb2YgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIsIHdlIGNhbiBu
b3cgc2ltcGx5IHVzZSB0aGUgYC1tZXNzYWdlc2AgcHJvcGVydHkgb2YgdG8gcG9wdWxhdGUKKyAg
ICAgICAgcXVpY2tib2FyZCB3aXRoIHRleHQgc3VnZ2VzdGlvbnMuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjEtMDYtMTUgIEpvbmF0aGFu
IEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt3YXRjaE9TIDhdIFN1cHBv
cnQgYnVpbGRpbmcgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkv
d2F0Y2hvcy9QZXBwZXJVSUNvcmVTUEkuaAppbmRleCBiZWE3MjU0ZTlmZGQyZDUzMTI4MmFiYzM1
M2JjMmQzNGI4Yzc5ZTY4Li5kOWRiNDk5ZmRjMTI1ZTljOGM3M2JjNDYzYTFjZDQ4Yzk3YWNkMjQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJ
Q29yZVNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVy
VUlDb3JlU1BJLmgKQEAgLTM5LDkgKzM5LDkgQEAKICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlD
UGlja2VyVmlld19Qcml2YXRlLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9h
cmRBcm91ZXRWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlj
a2JvYXJkTGFuZ3VhZ2VDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1
aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlD
UXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlclN1YmNsYXNzLmg+CiAjaW1wb3J0IDxQZXBwZXJV
SUNvcmUvUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld1NwZWNzLmg+CisjaW1wb3J0IDxQZXBwZXJVSUNv
cmUvUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBl
clVJQ29yZS9QVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxQZXBwZXJV
SUNvcmUvUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQ
ZXBwZXJVSUNvcmUvUFVJQ1Jlc291cmNlcy5oPgpAQCAtMTY5LDkgKzE2OSwxMSBAQCBleHRlcm4g
VUlCdXR0b25UeXBlIGNvbnN0IFBVSUNCdXR0b25UeXBlUGlsbDsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzdHJvbmcpIE5TU3RyaW5nICppbml0aWFsVGV4dDsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzdHJvbmcsIG51bGxhYmxlKSBVSUNvbG9yICp0aW50Q29sb3I7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc3Ryb25nKSBVSVRleHRDb250ZW50VHlwZSBzZWNvbmRhcnlUZXh0Q29udGVudFR5cGU7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBOU0ludGVnZXIgbWluaW11bUxlbmd0aDsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5LZXlU
eXBlOworQHByb3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBtaW5pbXVtTGVuZ3RoOworQHBy
b3BlcnR5IChub25hdG9taWMpIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5LZXlUeXBlOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHN0cm9uZykgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkSGVh
ZGVyVGV4dDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFjY2VwdHNFbW9qaTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZFByZXNlbnRNb2Rlcm5UZXh0SW5wdXRVSTsKIAog
I2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQogQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHksIG51bGxhYmxlKSBOU0FycmF5PE5TU3RyaW5nICo+ICpzdWdnZXN0aW9uczsKQEAgLTIzMiwx
MSArMjM0LDE2IEBAIGV4dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRvblR5cGVQaWxs
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDVGFibGVWaWV3ICpsaXN0Vmll
dzsKIEBwcm9wZXJ0eSAoc3Ryb25nLCBub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDUXVpY2tib2Fy
ZExpc3RWaWV3U3BlY3MgKnNwZWNzOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFVJVGV4
dENvbnRlbnRUeXBlIHRleHRDb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJv
bmcpIFBVSUNUZXh0SW5wdXRDb250ZXh0ICp0ZXh0SW5wdXRDb250ZXh0OwogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlv
bk1vZGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKIC0gKHZvaWQpcmVsb2FkTGlzdEl0ZW1z
OwogLSAodm9pZClyZWxvYWRIZWFkZXJDb250ZW50VmlldzsKIEBlbmQKIAorQGludGVyZmFjZSBQ
VUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheSAqbWVzc2Fn
ZXM7CitAZW5kCisKIEBpbnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRBcm91ZXRWaWV3Q29udHJvbGxl
ciA6IFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5LCBudWxsYWJsZSkgVUlUZXh0Q29udGVudFR5cGUgdGV4dENvbnRlbnRUeXBlOwogLSAodm9p
ZClzZXRJbnB1dFRleHQ6KG51bGxhYmxlIE5TU3RyaW5nICopaW5wdXRUZXh0IHNlbGVjdGlvblJh
bmdlOihOU1JhbmdlKXNlbGVjdGlvblJhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDhj
ZmM2MDc0ZDA1NjJhYTU4MmM1YzBkMjM0ODhlZTYzNmIyYzlhOWMuLmJkMTAwZWJmZWI0MTJlMDA4
ZGU1Y2MzODJkNGUzY2FiYmM1ZTRkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ1NCw3
ICs0NTQsNiBAQCBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLTnVtYmVyUGFkVmlldy5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZp
ZXdDb250cm9sbGVyLm1tCi1VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0Nv
bnRyb2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIu
bW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tCmluZGV4IGM4NzllOWRlMGQxZmQwMDk1YWI3ODBiMTI2M2E4ZjZhYmEy
YWEwZGEuLmViMTk5ODY1YzAwNDA0NGIyNmJlMGJkMWVhMjZhODBiNWJmYjhiOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQpAQCAtNjQsNyArNjQsNyBAQAogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9uSXRlbUlk
ZW50aWZpZXJzLmgiCiAjaW1wb3J0ICJXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVy
LmgiCiAjaW1wb3J0ICJXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmgiCiAjaW1wb3J0
ICJXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oIgpAQCAtNjY2NiwyMiArNjY2NiwyMiBA
QCAtICh2b2lkKXJlbW92ZUZvY3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAgICBbc2VsZiBzZXRJ
bnB1dERlbGVnYXRlOm5pbF07CiB9CiAKLSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikK
LQotLSAoUmV0YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1aWNrYm9h
cmRDb250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
CistIChSZXRhaW5QdHI8UFVJQ1RleHRJbnB1dENvbnRleHQ+KWNyZWF0ZVF1aWNrYm9hcmRUZXh0
SW5wdXRDb250ZXh0CiB7Ci0gICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gc3Vn
Z2VzdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGlu
aXRXaXRoQ2FwYWNpdHk6W19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXS5jb3VudF0pOwot
ICAgIGZvciAoVUlUZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBbX2Zvcm1JbnB1dFNlc3Np
b24gc3VnZ2VzdGlvbnNdKQotICAgICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OnN1Z2dlc3Rp
b24uaW5wdXRUZXh0XTsKLQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tQVUlDVGV4dElu
cHV0Q29udGV4dCBhbGxvY10gaW5pdF0pOwogICAgIFtzZWxmIF91cGRhdGVUZXh0SW5wdXRUcmFp
dHM6Y29udGV4dC5nZXQoKV07Ci0gICAgW2NvbnRleHQgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlv
bnMuZ2V0KCldOwogICAgIFtjb250ZXh0IHNldEluaXRpYWxUZXh0Ol9mb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLnZhbHVlXTsKICAgICBbY29udGV4dCBzZXRBY2NlcHRzRW1vamk6WUVTXTsKICAg
ICBbY29udGV4dCBzZXRTaG91bGRQcmVzZW50TW9kZXJuVGV4dElucHV0VUk6WUVTXTsKKyAgICBy
ZXR1cm4gY29udGV4dDsKK30KKworI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorCist
IChSZXRhaW5QdHI8UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyPilfY3JlYXRlUXVpY2tib2FyZENv
bnRyb2xsZXI6KFVJVmlld0NvbnRyb2xsZXIgKilwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIKK3sK
KyAgICBhdXRvIHF1aWNrYm9hcmRDb250cm9sbGVyID0gYWRvcHROUyhbW1BVSUNRdWlja2JvYXJk
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGV4dCA9IHNlbGYuY3JlYXRl
UXVpY2tib2FyZFRleHRJbnB1dENvbnRleHQ7CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNl
dFF1aWNrYm9hcmRQcmVzZW50aW5nVmlld0NvbnRyb2xsZXI6cHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyXTsKICAgICBbcXVpY2tib2FyZENvbnRyb2xsZXIgc2V0RXhjbHVkZWRGcm9tU2NyZWVuQ2Fw
dHVyZTpbY29udGV4dCBpc1NlY3VyZVRleHRFbnRyeV1dOwogICAgIFtxdWlja2JvYXJkQ29udHJv
bGxlciBzZXRUZXh0SW5wdXRDb250ZXh0OmNvbnRleHQuZ2V0KCldOwpAQCAtNjY5Miw3ICs2Njky
LDYgQEAgLSAoUmV0YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1aWNr
Ym9hcmRDb250cm9sbGVyOihVSVZpZXdDb250cm8KIAogc3RhdGljIGJvb2wgY2FuVXNlUXVpY2ti
b2FyZENvbnRyb2xsZXJGb3IoVUlUZXh0Q29udGVudFR5cGUgdHlwZSkKIHsKLSAgICAvLyBXZSBj
YW4gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24gb25jZSBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIg
c3VwcG9ydHMgZGlzcGxheWluZyB0ZXh0IHN1Z2dlc3Rpb24gc3RyaW5ncyB0aGF0IGFyZSBub3Qg
bG9naW4gY3JlZGVudGlhbHMuCiAgICAgcmV0dXJuIFt0eXBlIGlzRXF1YWxUb1N0cmluZzpVSVRl
eHRDb250ZW50VHlwZVVzZXJuYW1lXSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6VUlUZXh0Q29u
dGVudFR5cGVQYXNzd29yZF0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOlVJVGV4dENvbnRlbnRU
eXBlRW1haWxBZGRyZXNzXTsKIH0KIApAQCAtNjkzMSw3ICs2OTMwLDcgQEAgLSAodm9pZClmb2N1
c2VkRm9ybUNvbnRyb2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9uczooV0tGb2N1c2VkRm9ybUNvbnRy
b2xWaWV3ICopdmkKICAgICBpZiAoX2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAhW19wcmVz
ZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlciBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAKLSAgICBb
KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1
dFZpZXdDb250cm9sbGVyIHJlbG9hZFRleHRTdWdnZXN0aW9uc107CisgICAgWyhXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJv
bGxlciB1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6W19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3IHN1Z2dl
c3Rpb25zXV07CiB9CiAKICNwcmFnbWEgbWFyayAtIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlckRlbGVnYXRlCkBAIC05MTk2LDE2ICs5MTk1LDcgQEAgLSAodm9pZClxdWlja2JvYXJkSW5w
dXRDYW5jZWxsZWQ6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJkCiAK
ICNwcmFnbWEgbWFyayAtIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAotLSAo
Q0dGbG9hdCl2aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgaW5wdXRDb250ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplCi17Ci0g
ICAgaWQgPF9XS0lucHV0RGVsZWdhdGU+IGRlbGVnYXRlID0gc2VsZi53ZWJWaWV3Ll9pbnB1dERl
bGVnYXRlOwotICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6Zm9jdXNlZEVsZW1lbnRDb250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdTaXplOmlu
cHV0U2Vzc2lvbjopXSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gW2RlbGVnYXRl
IF93ZWJWaWV3OnNlbGYud2ViVmlldyBmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3SGVpZ2h0Rm9y
Rml0dGluZ1NpemU6c2l6ZSBpbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwot
fQotCi0tIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29udHJv
bGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKKy0gKEJPT0wp
YWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2Jv
YXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCiB7CiAgICAgc3dpdGNoIChfZm9jdXNlZEVs
ZW1lbnRJbmZvcm1hdGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5
cGU6OkNvbnRlbnRFZGl0YWJsZToKQEAgLTkyNzIsMjAgKzkyNjIsOSBAQCAtIChXS051bWJlclBh
ZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJ
bnB1dExpc3RWaQogICAgIH0KIH0KIAotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5cGVGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcgorLSAoUFVJQ1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZp
ZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIK
IHsKLSAgICByZXR1cm4gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlja2JvYXJkOwotfQotCi0t
IChOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmll
d0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgot
ewotICAgIHJldHVybiBbX2ZvY3VzZWRGb3JtQ29udHJvbFZpZXcgc3VnZ2VzdGlvbnNdOwotfQot
Ci0tICh2b2lkKWxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0aW9u
ICopc3VnZ2VzdGlvbgotewotICAgIFtzZWxmIGluc2VydFRleHRTdWdnZXN0aW9uOnN1Z2dlc3Rp
b25dOwotICAgIFtzZWxmIGRpc21pc3NRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJBbmRSZXZlYWxG
b2N1c2VkRm9ybU92ZXJsYXlJZk5lY2Vzc2FyeTpjb250cm9sbGVyXTsKKyAgICByZXR1cm4gc2Vs
Zi5jcmVhdGVRdWlja2JvYXJkVGV4dElucHV0Q29udGV4dC5hdXRvcmVsZWFzZSgpOwogfQogCiAt
IChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgpAQCAtOTMwMywxMCArOTI4Miw4IEBA
IC0gKHZvaWQpX2xvb2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICop
Z2VzdHVyZVJlY29nbml6ZXIKIH0KICNlbmRpZgogCi0KLQotCiAjaWYgRU5BQkxFKEFQUF9ISUdI
TElHSFRTKQorCiAtICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZAogewogICAg
IGlmICghX3BhZ2UtPnByZWZlcmVuY2VzKCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8fCAhc2Vs
Zi53aW5kb3cgfHwgIV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UpCkBAIC0x
MDM2Myw3ICsxMDM0MCw3IEBAIC0gKE5TU3RyaW5nICopdGV4dENvbnRlbnRUeXBlRm9yVGVzdGlu
ZwogewogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAgICAgaWYgKFtfcHJlc2VudGVkRnVsbFNj
cmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRDb250ZW50VHlw
ZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilf
cHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOworICAgICAgICBy
ZXR1cm4gWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2Ny
ZWVuSW5wdXRWaWV3Q29udHJvbGxlciB0ZXh0SW5wdXRDb250ZXh0XS50ZXh0Q29udGVudFR5cGU7
CiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTlRST0xMRVIpCiAgICAgaWYgKF9wcmVzZW50ZWRRdWlj
a2JvYXJkQ29udHJvbGxlcikKICAgICAgICAgcmV0dXJuIFtfcHJlc2VudGVkUXVpY2tib2FyZENv
bnRyb2xsZXIgdGV4dElucHV0Q29udGV4dF0udGV4dENvbnRlbnRUeXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmll
d0NvbnRyb2xsZXIuaAppbmRleCBlODFlMzQwZWU2M2FhZjY0NzEwMmExYjI5NzlkODUyMWE2MGEy
ZWQ5Li43YjVmNDhkNzI4NWRlNzBkMDQ4MTdlMzEwMjFhYjU2NjJiMTJlNGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlj
a2VyVmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQRVBQRVJf
VUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgiCisj
aW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBpbnRlcmZh
Y2UgV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0Rh
dGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQppbmRleCA0NzQ4OGZkZTIyYTllOGQ5
MmQxZDkzNWMxMDg3YTUwNTc1ZjE5YjM3Li5hYmQwYTc0ZjY0MTU3NDA5M2UwNzI5OWMzMmU3NDA1
Zjc1YjA2MmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCkBAIC0zMDYsOCArMzA2
LDYgQEAgLSAodm9pZCl2aWV3V2lsbEFwcGVhcjooQk9PTClhbmltYXRlZAogICAgIF9zdGF0dXNC
YXJBc3NlcnRpb24gPSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dIF90
YWtlU3RhdHVzQmFyR2xvYmFsQ29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKICAgICBbW05T
Tm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0
b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0aW9uKSBuYW1lOlBVSUNTdGF0dXNC
YXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxm
IHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlD
U3RhdHVzQmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBjb25m
aWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwogfQogCiAt
ICh2b2lkKXZpZXdEaWRBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmll
d0NvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5OGFkMDUxN2Q5
ODQ5NmQwMzlkOGNmYjg5ZjYxOTllNWJhYWZhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tR
dWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBvcnQgIlBl
cHBlclVJQ29yZVNQSS5oIgotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RJdGVtQ2VsbCA6
IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsCi1AZW5kCi0KLSNpZiBIQVZFKFFVSUNLQk9BUkRf
Q09MTEVDVElPTl9WSUVXUykKLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25W
aWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsCi1A
ZW5kCi0jZW5kaWYKLQotQGNsYXNzIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcjsKLQot
QHByb3RvY29sIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUgPFBVSUNRdWlja2Jv
YXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4KLQotLSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxlcjoo
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0Vmll
d0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplOwotLSAoVUlWaWV3ICopaW5wdXRDb250ZXh0Vmll
d0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcjsKLS0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjooUFVJ
Q1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKWlu
aXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlcjsKLS0gKEJPT0wpc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZpZXdGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyOwotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotCi1AZW5k
Ci0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNr
Ym9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdh
dGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBOU19E
RVNJR05BVEVEX0lOSVRJQUxJWkVSOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5T
Q29kZXIgKilhRGVjb2RlciBOU19VTkFWQUlMQUJMRTsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aERlbGVnYXRlOihpZDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVn
YXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5B
VkFJTEFCTEU7Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrKSBpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVs
ZWdhdGU7Ci0KLUBlbmQKLQotdm9pZCBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKFBV
SUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiwgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyRGVsZWdhdGU+KTsKLQotI2VuZGlmIC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVp
Y2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZjM4ZDc3OTNmMjNjMjQ3MGFlODY5YmVhMDU3YzcyMmE5NWUxY2JjNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyAvZGV2L251
bGwKQEAgLTEsMjAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgotCi0jaWYgSEFWRShQRVBQ
RVJfVUlfQ09SRSkKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1zdGF0aWMgY29uc3Qg
Q0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Owotc3RhdGljIGNvbnN0IENH
RmxvYXQgaXRlbUNlbGxCYXNlbGluZVRvQm90dG9tID0gODsKLQotQGltcGxlbWVudGF0aW9uIFdL
UXVpY2tib2FyZExpc3RJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNw
ZWNWYWx1ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0KLQot
LSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0ZW1D
ZWxsQmFzZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jaWYgSEFWRShRVUlDS0JPQVJEX0NP
TExFQ1RJT05fVklFV1MpCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0Q29sbGVj
dGlvblZpZXdJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1
ZQotewotICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0KLQotLSAoQ0dG
bG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0ZW1DZWxsQmFz
ZWxpbmVUb0JvdHRvbTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NP
TExFQ1RJT05fVklFV1MpCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9s
bGVyICgpIDxQVUlDUXVpY2tib2FyZExhbmd1YWdlQ29udHJvbGxlckRlbGVnYXRlPgotQGVuZAot
Ci1AaW1wbGVtZW50YXRpb24gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIHsKLSAgICBC
T09MIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlOwotICAgIFJldGFpblB0cjxVSVZpZXc+IF9jb250
ZXh0VmlldzsKLSAgICBSZXRhaW5QdHI8UFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRWaWV3QXNz
ZXJ0aW9uPiBfc3RhdHVzQmFyQXNzZXJ0aW9uOwotfQotCi1AZHluYW1pYyBkZWxlZ2F0ZTsKLQot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRX
aXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0aW9uTW9kZVRleHRd
KQotICAgICAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLQotICAgIHJldHVybiBz
ZWxmOwotfQotCi0tICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKLXsKLSAgICBpZiAo
IV9jb250ZXh0Vmlld05lZWRzVXBkYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHBy
ZXZpb3VzQ29udGV4dFZpZXcgPSBfY29udGV4dFZpZXc7Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRl
IHNob3VsZERpc3BsYXlJbnB1dENvbnRleHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZd
KQotICAgICAgICBfY29udGV4dFZpZXcgPSBbc2VsZi5kZWxlZ2F0ZSBpbnB1dENvbnRleHRWaWV3
Rm9yVmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgZWxzZQotICAgICAgICBfY29udGV4dFZpZXcg
PSBuaWw7Ci0KLSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IE5POwotfQotCi0tIChCT09M
KXByZWZlcnNTdGF0dXNCYXJIaWRkZW4KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQp
dmlld1dpbGxBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld1dpbGxBcHBl
YXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlvbiA9IFtbUFVJQ0FwcGxpY2F0
aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0gX3Rha2VTdGF0dXNCYXJHbG9iYWxDb250ZXh0QXNz
ZXJ0aW9uQW5pbWF0ZWQ6Tk9dOwotCi0gICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9
IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIGFkZE9i
c2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0aW9u
KSBuYW1lOlBVSUNTdGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmljYXRp
b24gb2JqZWN0Om5pbF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFyVGl0
bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBjb25maWd1cmVTdGF0dXNC
YXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwotfQotCi0tICh2b2lkKXZpZXdE
aWREaXNhcHBlYXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld0RpZERpc2FwcGVh
cjphbmltYXRlZF07Ci0KLSAgICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gbmlsOwotCi0gICAgTlNO
b3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0
Q2VudGVyXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQVUlDU3RhdHVz
QmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwot
ICAgIFtjZW50ZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOlBVSUNTdGF0dXNCYXJUaXRsZVRh
cHBlZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLX0KLQotLSAodm9pZClfaGFuZGxlU3RhdHVz
QmFyTmF2aWdhdGlvbgotewotICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmRJbnB1dENhbmNl
bGxlZDpzZWxmXTsKLX0KLQotLSAodm9pZClyZWxvYWRDb250ZXh0VmlldwotewotICAgIF9jb250
ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOwotICAgIFtzZWxmIHJlbG9hZEhlYWRlckNvbnRlbnRW
aWV3XTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KLQotLSAo
UFVJQ0FjdGlvbkNvbnRyb2xsZXIgKilhY3Rpb25Db250cm9sbGVyCi17Ci0gICAgaWYgKCFbc2Vs
Zi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6c2VsZl0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBQVUlDQWN0aW9uSXRlbSAqbGFu
Z3VhZ2VTZWxlY3Rpb25BY3Rpb25JdGVtID0gW3NlbGYubGFuZ3VhZ2VDb250cm9sbGVyIGxhbmd1
YWdlU2VsZWN0aW9uQWN0aW9uSXRlbUZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGF1dG8g
YWN0aW9uR3JvdXAgPSBhZG9wdE5TKFtbUFVJQ0FjdGlvbkdyb3VwIGFsbG9jXSBpbml0V2l0aEFj
dGlvbkl0ZW1zOkBbIGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSBdIGFjdGlvblN0eWxlOlBV
SUNBY3Rpb25TdHlsZUF1dG9tYXRpY10pOwotICAgIHJldHVybiBhZG9wdE5TKFtbUFVJQ0FjdGlv
bkNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQWN0aW9uR3JvdXA6YWN0aW9uR3JvdXAuZ2V0KCld
KS5hdXRvcmVsZWFzZSgpOwotfQotCi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKLQotI3ByYWdtYSBtYXJrIC0gUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXJEZWxl
Z2F0ZQotCi0tICh2b2lkKWxhbmd1YWdlQ29udHJvbGxlckRpZENoYW5nZVByaW1hcnlMYW5ndWFn
ZTooUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXIgKilsYW5ndWFnZUNvbnRyb2xsZXIK
LXsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihx
dWlja2JvYXJkOmxhbmd1YWdlRGlkQ2hhbmdlOildKQotICAgICAgICBbc2VsZi5kZWxlZ2F0ZSBx
dWlja2JvYXJkOnNlbGYgbGFuZ3VhZ2VEaWRDaGFuZ2U6bGFuZ3VhZ2VDb250cm9sbGVyLnByaW1h
cnlMYW5ndWFnZV07Ci19Ci0KLSNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3ViY2xhc3NpbmcK
LQotLSAoQ0dGbG9hdCloZWFkZXJDb250ZW50Vmlld0hlaWdodAotewotICAgIFtzZWxmIHVwZGF0
ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwotCi0gICAgcmV0dXJuIFtfY29udGV4dFZpZXcgc2l6ZVRo
YXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNpemVdLmhlaWdodDsKLX0KLQotLSAoVUlW
aWV3ICopaGVhZGVyQ29udGVudFZpZXcKLXsKLSAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lm
TmVlZGVkXTsKLQotICAgIENHRmxvYXQgdmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgoc2VsZi5j
b250ZW50Vmlldy5ib3VuZHMpOwotICAgIENHU2l6ZSBzaXplVGhhdEZpdHMgPSBbX2NvbnRleHRW
aWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXTsKLSAgICBbX2Nv
bnRleHRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoKHZpZXdXaWR0aCAtIHNpemVUaGF0Rml0cy53
aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZpdHMud2lkdGgsIHNpemVUaGF0Rml0cy5oZWlnaHQpXTsK
LSAgICBbX2NvbnRleHRWaWV3IGxheW91dFN1YnZpZXdzXTsKLSAgICByZXR1cm4gX2NvbnRleHRW
aWV3LmdldCgpOwotfQotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29udHJv
bGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGUpCi17Ci0gICAgLy8gQW4gaW50
ZXJuYWwgY2xpZW50IChlLmcuIFNhZmFyaSdzIG1vZGFsIHNoZWV0KSBtYXkgaGF2ZSBtb3ZlZCB0
aGUgc3RhdHVzIGJhciBvZmZzY3JlZW4uCi0gICAgLy8gQmVmb3JlIHVwZGF0aW5nIHRoZSBzdGF0
dXMgYmFyLCBtYWtlIHN1cmUgdGhhdCB3ZSBicmluZyB0aGUgc3RhdHVzIGJhciBiYWNrIHRvIGl0
cyBvcmlnaW5hbCBwb3NpdGlvbi4KLSAgICBQVUlDU3RhdHVzQmFyICpzdGF0dXNCYXIgPSBbUFVJ
Q0FwcGxpY2F0aW9uIHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0uX3B1aWNTdGF0dXNCYXI7Ci0gICAg
c3RhdHVzQmFyLmZyYW1lID0gQ0dSZWN0IHsgQ0dQb2ludFplcm8sIHN0YXR1c0Jhci5mcmFtZS5z
aXplIH07Ci0KLSAgICBQVUlDQXBwbGljYXRpb25TdGF0dXNCYXJJdGVtICppdGVtID0gY29udHJv
bGxlci5wdWljX2FwcGxpY2F0aW9uU3RhdHVzQmFySXRlbTsKLSAgICBpdGVtLnRpdGxlID0gW2Rl
bGVnYXRlIGlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6Y29udHJvbGxlcl07Ci0gICAg
aXRlbS50aXRsZUNvbG9yID0gW1VJQ29sb3Igc3lzdGVtQmx1ZUNvbG9yXTsKLSAgICBpdGVtLm5h
dlVJQmFja0J1dHRvbkRpc2FibGVkID0gTk87Ci0gICAgaXRlbS5zaG93TmF2aWdhdGlvblVJID0g
WUVTOwotICAgIGl0ZW0udGl0bGVJbnRlcmFjdGl2ZSA9IFlFUzsKLSAgICBbaXRlbSBjb21taXRD
aGFuZ2VzQW5pbWF0ZWQ6Tk9dOwotfQotCi0jZW5kaWYgLy8gSEFWRShQRVBQRVJfVUlfQ09SRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQw
NGNjNWE2OTQwNGVhODUzZTVmZDVmNjBjMDI5ZmVlYmQ4MzNiYzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShQ
RVBQRVJfVUlfQ09SRSkKKworI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJLmgiCisKK0Bwcm90b2Nv
bCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyRGVsZWdhdGU+CisKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JWaWV3
Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Cist
IChOU1N0cmluZyAqKWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKworQGVuZAorCisjZW5kaWYgLy8gSEFWRShQ
RVBQRVJfVUlfQ09SRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaAppbmRleCBj
ODEwMjA4NjY5YjQxNjRhNTFkOTZiNzQ5OGMxMTg4MjgyODliZTM1Li5lNjlmYjAxMTUzMjUzNGNl
ZTFmOTIxODE1NmQzMjQxZTc1ZjE1NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQogCi0j
aW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogQGNsYXNzIFdLU2VsZWN0TWVudUxp
c3RWaWV3Q29udHJvbGxlcjsKIApAQCAtNDEsOSArNDEsMTEgQEAKIAogQGVuZAogCi1AaW50ZXJm
YWNlIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlcgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIgOiBQ
VUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEZWxlZ2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPilk
ZWxlZ2F0ZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRl
bGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNf
VU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNv
ZGVyIE5TX1VOQVZBSUxBQkxFOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdL
U2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RW
aWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1Nl
bGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggMmQzMDE5ZmQ3NDNhYmU1MzA5Njcx
MjYzNzllYzFlOGViYzgyYzVmZC4uNzhkNGI3MzAwZWEyM2Y0Nzg2YzhiMWJlYmNhM2Q5Y2Y4ZGU5
Mzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2Vs
ZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC00Myw4ICs0
MywxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQVUlDUXVpY2tib2FyZExpc3RTZWN0
aW9uKSB7CiAgICAgUFVJQ1F1aWNrYm9hcmRMaXN0U2VjdGlvbkNvbnRlbnRVbmF2YWlsYWJsZSwK
IH07CiAKLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8v
cHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLUBpbnRlcmZhY2UgV0tTZWxlY3RN
ZW51SXRlbUNlbGwgOiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKK3N0YXRpYyBjb25zdGV4cHIg
Q0dGbG9hdCBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Oworc3RhdGljIGNvbnN0ZXhw
ciBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7CisKKy8vIEZJWE1FOiBUaGlz
IGNhbiBiZSByZW1vdmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzU3ODA3NDQ1PiBsYW5kcyBpbiBh
IGJ1aWxkLgorQGludGVyZmFjZSBXS1NlbGVjdE1lbnVJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJk
TGlzdEl0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJSW1hZ2VWaWV3
ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTUyLDcgKzU1LDcgQEAgQGltcGxlbWVudGF0aW9uIFdL
U2VsZWN0TWVudUl0ZW1DZWxsIHsKICAgICBSZXRhaW5QdHI8VUlJbWFnZVZpZXc+IF9pbWFnZVZp
ZXc7CiB9CiAKLS0gKGluc3RhbmNldHlwZSkgaW5pdFdpdGhTdHlsZTooVUlUYWJsZVZpZXdDZWxs
U3R5bGUpc3R5bGUgcmV1c2VJZGVudGlmaWVyOihOU1N0cmluZyAqKXJldXNlSWRlbnRpZmllcgor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU3R5bGU6KFVJVGFibGVWaWV3Q2VsbFN0eWxlKXN0eWxl
IHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilyZXVzZUlkZW50aWZpZXIKIHsKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRXaXRoU3R5bGU6c3R5bGUgcmV1c2VJZGVudGlmaWVyOnJldXNl
SWRlbnRpZmllcl0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzEsMTEgKzc0LDIxIEBAIC0g
KFVJSW1hZ2VWaWV3ICopaW1hZ2VWaWV3CiAgICAgcmV0dXJuIF9pbWFnZVZpZXcuZ2V0KCk7CiB9
CiAKKy0gKENHRmxvYXQpdG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlCit7CisgICAgcmV0dXJu
IGl0ZW1DZWxsVG9wVG9MYWJlbEJhc2VsaW5lOworfQorCistIChDR0Zsb2F0KWJhc2VsaW5lVG9C
b3R0b21TcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRlbUNlbGxCYXNlbGluZVRvQm90dG9tOwor
fQorCiBAZW5kCiAKICNpZiBIQVZFKFFVSUNLQk9BUkRfQ09MTEVDVElPTl9WSUVXUykKIAotQGlu
dGVyZmFjZSBXS1NlbGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogV0tRdWlja2JvYXJk
TGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51Q29sbGVj
dGlvblZpZXdJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNl
bGwKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlJbWFnZVZpZXcgKmltYWdlVmll
dzsKIEBlbmQKIApAQCAtMTAyLDYgKzExNSwxNiBAQCAtIChVSUltYWdlVmlldyAqKWltYWdlVmll
dwogICAgIHJldHVybiBfaW1hZ2VWaWV3LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRvcFRvTGFi
ZWxCYXNlbGluZVNwZWNWYWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNl
bGluZTsKK30KKworLSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7CisgICAg
cmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8g
SEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCkBAIC0xMTUsNyArMTM4LDcgQEAgQGR5
bmFtaWMgZGVsZWdhdGU7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8
V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0gICAg
cmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICByZXR1cm4gW3N1
cGVyIGluaXRXaXRoRGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0aW9u
TW9kZVRleHRdOwogfQogCiAtICh2b2lkKXZpZXdEaWRMb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5oCmluZGV4IGUxMjkyZmJkMzNhNTdjZjY2N2E0N2VhNGUxMzI1MTQwMTljZWQ1
NzIuLjhlYjJjMzY0MmQ4OTFjN2Q1YTAxNGMyZjZiMjJmYTU3NTA2N2Y2MjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBIQVZFKFBF
UFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIu
aCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKICAgICBXS051
bWJlclBhZElucHV0TW9kZU5vbmUsCkBAIC00MSwxNyArNDEsMjEgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKIEBwcm90b2NvbCBXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlPgogCiAtIChXS051bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9yTGlz
dFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXI7Ci0tIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjoo
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNBcnJheTxV
SVRleHRTdWdnZXN0aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVy
OihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tICh2b2lkKWxp
c3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0aW9uICopc3VnZ2VzdGlv
bjsKLS0gKEJPT0wpYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBV
SUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoUFVJQ1RleHRJbnB1
dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CistIChVSVZpZXcgKilpbnB1dENv
bnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyOworLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3Q29u
dHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAo
Qk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClzaG91bGREaXNw
bGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CiAKIEBlbmQKIAotQGludGVyZmFjZSBXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgor
QGludGVyZmFjZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJk
TWVzc2FnZVZpZXdDb250cm9sbGVyCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRl
OihpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUgTlNf
REVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKHZvaWQpcmVsb2FkVGV4dFN1Z2dlc3Rpb25zOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25N
b2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhDb2RlcjooTlNDb2RlciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOworLSAodm9pZCl1cGRhdGVU
ZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dlc3Rpb25z
OworLSAodm9pZClyZWxvYWRDb250ZXh0VmlldzsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdl
YWspIGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDFiYjEyM2I5YjFiYzZk
MTA3M2UwMmZlNjhlOGNiMTM5YTkxMzdhZmQuLmQ0OTk0NTM3NDdhNDkwNjljYmZkY2M1YWQ0MmQ4
YmU2OWZmMTNjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KQEAgLTMx
LDExICszMSw5IEBACiAjaW1wb3J0ICJXS051bWJlclBhZFZpZXdDb250cm9sbGVyLmgiCiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHRleHRTdWdnZXN0
aW9uQnV0dG9uSGVpZ2h0ID0gNDQ7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB0ZXh0U3VnZ2VzdGlv
bkxhYmVsSG9yaXpvbnRhbE1hcmdpbiA9IDk7Ci1zdGF0aWMgTlNTdHJpbmcgKnRleHRTdWdnZXN0
aW9uQ2VsbFJldXNlSWRlbnRpZmllciA9IEAiV2ViS2l0UXVpY2tib2FyZFRleHRTdWdnZXN0aW9u
Q2VsbCI7Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciB7
CisgICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3
PiBfY29udGV4dFZpZXc7CiAgICAgUmV0YWluUHRyPFdLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXI+
IF9udW1iZXJQYWRWaWV3Q29udHJvbGxlcjsKIH0KIApAQCAtNDMsMzIgKzQxLDQyIEBAIEBkeW5h
bWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0gICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXSkpCisgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6UFVJ
Q0RpY3RhdGlvbk1vZGVUZXh0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBzZWxmLnRl
eHRDb250ZW50VHlwZSA9IFtzZWxmLmRlbGVnYXRlIHRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3
Q29udHJvbGxlcjpzZWxmXTsKKyAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKKyAg
ICBzZWxmLnRleHRJbnB1dENvbnRleHQgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0SW5wdXRDb250ZXh0
Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2
b2lkKXZpZXdEaWRMb2FkCistICh2b2lkKXJlbG9hZENvbnRleHRWaWV3CiB7Ci0gICAgW3N1cGVy
IHZpZXdEaWRMb2FkXTsKLQotICAgIHNlbGYuaGVhZGVyVmlldy5oaWRkZW4gPSBZRVM7CisgICAg
X2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZRVM7CisgICAgW3NlbGYgcmVsb2FkSGVhZGVyQ29u
dGVudFZpZXddOwogfQogCi0tICh2b2lkKXdpbGxQcmVzZW50QXJvdWV0Vmlld0NvbnRyb2xsZXI6
KFBVSUNRdWlja2JvYXJkQXJvdWV0Vmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJkCistICh2b2lk
KXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKIHsKLSAgICBOU1N0cmluZyAqaW5pdGlhbFRleHQg
PSBbc2VsZi5kZWxlZ2F0ZSBpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAg
ICBpZiAoaW5pdGlhbFRleHQubGVuZ3RoKQotICAgICAgICBbcXVpY2tib2FyZCBzZXRJbnB1dFRl
eHQ6aW5pdGlhbFRleHQgc2VsZWN0aW9uUmFuZ2U6TlNNYWtlUmFuZ2UoaW5pdGlhbFRleHQubGVu
Z3RoLCAwKV07CisgICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3OworICAg
IGlmIChbc2VsZi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RW
aWV3Q29udHJvbGxlcjpzZWxmXSkKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYuZGVsZWdh
dGUgaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOworICAgIGVsc2UKKyAg
ICAgICAgX2NvbnRleHRWaWV3ID0gbmlsOwogCi0gICAgcXVpY2tib2FyZC5taW5UZXh0TGVuZ3Ro
Rm9yRW5hYmxpbmdBY2NlcHQgPSAwOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gTk87
Cit9CisKKy0gKEJPT0wpcmVxdWlyZXNOdW1lcmljSW5wdXQKK3sKKyAgICByZXR1cm4gW3NlbGYu
ZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSAhPSBX
S051bWJlclBhZElucHV0TW9kZU5vbmU7CiB9CiAKIC0gKE5TQXJyYXkgKilhZGRpdGlvbmFsVHJh
eUJ1dHRvbnMKIHsKLSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxp
c3RWaWV3Q29udHJvbGxlcjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmUpCisgICAg
aWYgKCFzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0KQogICAgICAgICByZXR1cm4gQFsgXTsKIAog
I2lmIEhBVkUoUFVJQ19CVVRUT05fVFlQRV9QSUxMKQpAQCAtOTksOSArMTA3LDE0IEBAIC0gKHZv
aWQpcHJlc2VudE51bWJlclBhZFZpZXdDb250cm9sbGVyCiAgICAgW3NlbGYgcHJlc2VudFZpZXdD
b250cm9sbGVyOl9udW1iZXJQYWRWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29t
cGxldGlvbjpuaWxdOwogfQogCi0tICh2b2lkKXJlbG9hZFRleHRTdWdnZXN0aW9ucworLSAodm9p
ZCl1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1
Z2dlc3Rpb25zCiB7Ci0gICAgW3NlbGYgcmVsb2FkTGlzdEl0ZW1zXTsKKyAgICBhdXRvIG1lc3Nh
Z2VzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5PE5TQXR0cmlidXRlZFN0cmluZyAqPiBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpzdWdnZXN0aW9ucy5jb3VudF0pOworICAgIGZvciAoVUlUZXh0
U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBzdWdnZXN0aW9ucykgeworICAgICAgICBhdXRvIGF0
dHJpYnV0ZWRTdHJpbmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpzdWdnZXN0aW9uLmRpc3BsYXlUZXh0XSk7CisgICAgICAgIFttZXNzYWdlcyBh
ZGRPYmplY3Q6YXR0cmlidXRlZFN0cmluZy5nZXQoKV07CisgICAgfQorICAgIHNlbGYubWVzc2Fn
ZXMgPSBtZXNzYWdlcy5nZXQoKTsKIH0KIAogLSAodm9pZCllbnRlclRleHQ6KE5TU3RyaW5nICop
dGV4dApAQCAtMTExLDEwOSArMTI0LDQ2IEBAIC0gKHZvaWQpZW50ZXJUZXh0OihOU1N0cmluZyAq
KXRleHQKIAogI3ByYWdtYSBtYXJrIC0gUXVpY2tib2FyZCBzdWJjbGFzc2luZwogCi0tIChCT09M
KXN1cHBvcnRzRGljdGF0aW9uSW5wdXQKKy0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZpZXdIZWln
aHQKIHsKLSAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci19Ci0KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0ZW1B
dEluZGV4UGF0aDooTlNJbmRleFBhdGggKilpbmRleFBhdGgKLXsKLSAgICBbc2VsZiBfZGlkU2Vs
ZWN0TGlzdEl0ZW06aW5kZXhQYXRoLnJvd107Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBj
YW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBi
dWlsZC4KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyCi17
Ci0gICAgW3NlbGYgX2RpZFNlbGVjdExpc3RJdGVtOml0ZW1OdW1iZXJdOwotfQotCi0tICh2b2lk
KV9kaWRTZWxlY3RMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIKLXsKLSAgICBOU0FycmF5
PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtzZWxmLmRlbGVnYXRlIHRl
eHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAgICBpZiAodGV4dFN1
Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGl0ZW1OdW1iZXIpKSB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIFtzZWxmIHVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwogCi0gICAgW3NlbGYuZGVsZWdh
dGUgbGlzdFZpZXdDb250cm9sbGVyOnNlbGYgZGlkU2VsZWN0VGV4dFN1Z2dlc3Rpb246W3RleHRT
dWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdXTsKKyAgICByZXR1cm4gW19jb250
ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3VuZHMuc2l6ZV0uaGVpZ2h0
OwogfQogCi0tIChOU0ludGVnZXIpbnVtYmVyT2ZMaXN0SXRlbXMKKy0gKFVJVmlldyAqKWhlYWRl
ckNvbnRlbnRWaWV3CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9u
c0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXS5jb3VudDsKLX0KKyAgICBbc2VsZiB1cGRhdGVD
b250ZXh0Vmlld0lmTmVlZGVkXTsKIAotLSAoQ0dGbG9hdCloZWlnaHRGb3JMaXN0SXRlbTooTlNJ
bnRlZ2VyKWl0ZW1OdW1iZXIgd2lkdGg6KENHRmxvYXQpd2lkdGgKLXsKLSAgICByZXR1cm4gdGV4
dFN1Z2dlc3Rpb25CdXR0b25IZWlnaHQ7CisgICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RH
ZXRXaWR0aChzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcyk7CisgICAgQ0dTaXplIHNpemVUaGF0Rml0
cyA9IFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNp
emVdOworICAgIFtfY29udGV4dFZpZXcgc2V0RnJhbWU6Q0dSZWN0TWFrZSgodmlld1dpZHRoIC0g
c2l6ZVRoYXRGaXRzLndpZHRoKSAvIDIsIDAsIHNpemVUaGF0Rml0cy53aWR0aCwgc2l6ZVRoYXRG
aXRzLmhlaWdodCldOworICAgIHJldHVybiBfY29udGV4dFZpZXcuZ2V0KCk7CiB9CiAKLS8vIEZJ
WE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81Nzgw
NzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLS0gKFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsICop
Y2VsbEZvckxpc3RJdGVtOihOU0ludGVnZXIpaXRlbU51bWJlcgorLSAoQk9PTClzaG91bGRTaG93
TGFuZ3VhZ2VCdXR0b24KIHsKLSAgICBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRT
dWdnZXN0aW9ucyA9IFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29u
dHJvbGxlcjpzZWxmXTsKLSAgICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19j
YXN0PE5TVUludGVnZXI+KGl0ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIFVJVGV4dFN1Z2dlc3Rpb24g
KnRleHRTdWdnZXN0aW9uID0gW3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1i
ZXJdOwotICAgIGF1dG8gcmV1c2FibGVDZWxsID0gcmV0YWluUHRyKFtzZWxmLmxpc3RWaWV3IGRl
cXVldWVSZXVzYWJsZUNlbGxXaXRoSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlk
ZW50aWZpZXJdKTsKLSAgICBpZiAoIXJldXNhYmxlQ2VsbCkgewotICAgICAgICByZXVzYWJsZUNl
bGwgPSBhZG9wdE5TKFtbV0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxsIGFsbG9jXSBpbml0V2l0aFN0
eWxlOlVJVGFibGVWaWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6dGV4dFN1Z2dl
c3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyXSk7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxh
YmVsXS5udW1iZXJPZkxpbmVzID0gMTsKLSAgICAgICAgW3JldXNhYmxlQ2VsbCBpdGVtTGFiZWxd
LmxpbmVCcmVha01vZGUgPSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7Ci0gICAgICAgIFty
ZXVzYWJsZUNlbGwgaXRlbUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRydW5jYXRp
b24gPSBZRVM7Ci0gICAgfQotCi0gICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0
aChzZWxmLmxpc3RWaWV3LmJvdW5kcyk7Ci0gICAgW3JldXNhYmxlQ2VsbCBjb25maWd1cmVGb3JU
ZXh0OnRleHRTdWdnZXN0aW9uLmRpc3BsYXlUZXh0IHdpZHRoOnZpZXdXaWR0aF07Ci0KLSAgICAv
LyBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2Vz
IHRoZSB0ZXh0IGxhYmVsIHRvIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBB
ZGp1c3QgZm9yIHRoaXMgYnkgc2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBm
aXQgdGhlIGJvdW5kcyBvZiB0aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0u
ZnJhbWUgPSBVSVJlY3RJbnNldChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAs
IHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxh
YmVsSG9yaXpvbnRhbE1hcmdpbik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFz
ZSgpOworICAgIHJldHVybiBbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZv
ckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKIH0KIAotLSAoTlNTdHJpbmcgKilsaXN0SXRlbUNl
bGxSZXVzZUlkZW50aWZpZXIKKy0gKEJPT0wpc3VwcG9ydHNEaWN0YXRpb25JbnB1dAogewotICAg
IHJldHVybiB0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7CisgICAgcmV0dXJuIFtz
ZWxmLmRlbGVnYXRlIGFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNl
bGZdOwogfQogCi0jaWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLS0gKENs
YXNzKWxpc3RJdGVtQ2VsbENsYXNzCistIChCT09MKXNob3VsZFNob3dUcmF5VmlldwogewotICAg
IHJldHVybiBbV0tRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwgY2xhc3NdOwor
ICAgIHJldHVybiBzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0tIChQVUlDUXVpY2ti
b2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsICopaXRlbUNlbGxGb3JMaXN0SXRlbTooTlNJ
bnRlZ2VyKWl0ZW1OdW1iZXIgZm9ySW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAor
LSAoQk9PTClzaG91bGRTaG93VGV4dEZpZWxkCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0
aW9uICo+ICp0ZXh0U3VnZ2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNG
b3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3Vu
dCA8PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRl
eHRTdWdnZXN0aW9uICp0ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJ
bmRleDppdGVtTnVtYmVyXTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2Vs
Zi5jb2xsZWN0aW9uVmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aFJldXNlSWRlbnRpZmllcjp0
ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgZm9ySW5kZXhQYXRoOmluZGV4UGF0aF0p
OwotCi0gICAgW3JldXNhYmxlQ2VsbCBib2R5TGFiZWxdLm51bWJlck9mTGluZXMgPSAxOwotICAg
IFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRy
dW5jYXRpbmdUYWlsOwotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5hbGxvd3NEZWZhdWx0
VGlnaHRlbmluZ0ZvclRydW5jYXRpb24gPSBZRVM7Ci0gICAgW3JldXNhYmxlQ2VsbCBzZXRUZXh0
OnRleHRTdWdnZXN0aW9uLmRpc3BsYXlUZXh0XTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2
aW9yIG9mIC1jb25maWd1cmVGb3JUZXh0OndpZHRoOiBjYXVzZXMgdGhlIHRleHQgbGFiZWwgdG8g
cnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBjZWxsLgotICAgIC8vIEFkanVzdCBmb3IgdGhpcyBieSBz
aHJpbmtpbmcgdGhlIGxhYmVsIHdpZHRoIHRvIGFjdHVhbGx5IGZpdCB0aGUgYm91bmRzIG9mIHRo
ZSBjZWxsLgotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5mcmFtZSA9IFVJUmVjdEluc2V0
KFtyZXVzYWJsZUNlbGwgY29udGVudFZpZXddLmJvdW5kcywgMCwgdGV4dFN1Z2dlc3Rpb25MYWJl
bEhvcml6b250YWxNYXJnaW4sIDAsIHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2lu
KTsKLSAgICByZXR1cm4gcmV1c2FibGVDZWxsLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuICFz
ZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJE
X0NPTExFQ1RJT05fVklFV1MpCi0KIC0gKEJPT0wpc3VwcG9ydHNBcm91ZXRJbnB1dAogewotICAg
IHJldHVybiBbc2VsZi5kZWxlZ2F0ZSBudW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9s
bGVyOnNlbGZdID09IFdLTnVtYmVyUGFkSW5wdXRNb2RlTm9uZTsKKyAgICByZXR1cm4gIXNlbGYu
cmVxdWlyZXNOdW1lcmljSW5wdXQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVy
LmgKaW5kZXggNjU1OGNkZGU4MjJjYmQ5NWZiYjA3MjkzYTZkYmYzZjg2Y2NjNWZhMy4uOWE3ZWEx
MDBkZWU0MTZhOWJlNjc4YWJlNzI0NTAyOTU0MGE1ZGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250
cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAK
LSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLVGltZVBp
Y2tlclZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0NzNh
ZTU1NTU5YzljY2EzMjk0NWQxMzBjNDM3MDUyM2RhN2M3ZjhmLi4zOTg2ODM2ODA4YjhiZmIzMGUw
NDc1ZTgwOTIwM2EzNWY2YjhhYTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwMzgsNyArMjAzOCw3IEBACiAJCUY0Q0IwOUU1MjI1
RDVBMDkwMDg5MTQ4NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0IwOUU0MjI1RDVBMDMwMDg5MTQ4
NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCAqLzsgfTsKIAkJRjRDRjFFOUQyNUU0MERD
QzAwMEY5RDczIC8qIEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRjFFOUIyNUU0MERD
QzAwMEY5RDczIC8qIEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oICovOyB9
OwogCQlGNEQ1RjUxRDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5o
ICovOyB9OwotCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyLmggKi87IH07CisJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oICovOyB9OwogCQlGNERCNTRFNjIzMTlFNzMzMDA5RTMx
NTUgLyogV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREQjU0RTQyMzE5RTczMzAwOUUz
MTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJ
RjRFQzk0RTMyMzU2Q0M1NzAwMEJCNjE0IC8qIEFwcGxpY2F0aW9uU2VydmljZXNTUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDA0RTI4MjFGN0M3
M0QwMDc2NzQxRCAvKiBBcHBsaWNhdGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUY0RkUwQTNC
MjQ2MzJCNjAwMDI2MzFFMSAvKiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29jb2FD
b2xvci5oICovOyB9OwpAQCAtNjAwNSw4ICs2MDA1LDcgQEAKIAkJRjRDRjFFOUMyNUU0MERDQzAw
MEY5RDczIC8qIEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lz
dGVuY3lFbmZvcmNlci5tbTsgcGF0aCA9IGlvcy9HZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5
RW5mb3JjZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTE5MjA2MDg3
QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOyBw
YXRoID0gaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTFBMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zv
cm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1RjUx
QzIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tRdWlja2JvYXJkTGlzdFZp
ZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUY1MUIyMDYwODdB
MTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTQyMzE5RTczMzAwOUUz
MTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2du
aXplci5oOyBwYXRoID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTUyMzE5RTczMzAwOUUzMTU1
IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVS
ZWNvZ25pemVyLm1tOyBwYXRoID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29n
bml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5QUQzMjA2NUE1Qzkw
MDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xs
ZXIubW07IHBhdGggPSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzkxMCw3ICs3OTA5LDYgQEAKIAkJMzc1
NEQ1NDExQjNBMjk5ODAwM0E0QzdGIC8qIENvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkzMTU1RUUwQzI2NzNGNEVGMDA4NUU1OUEgLyogVmlzaW9u
S2l0U1BJLmggKi8sCiAJCQkJRTNDQUFBNDMyNDEzMjc4QTAwQ0VEMkUyIC8qIEFjY2Vzc2liaWxp
dHlTdXBwb3J0U1BJLmggKi8sCiAJCQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0
dGVzdFNQSS5oICovLAogCQkJCTU3RkFCQjBFMjU4MTdDRjAwMDU5REM5NSAvKiBBdXRoZW50aWNh
dGlvblNlcnZpY2VzQ29yZVNQSS5oICovLApAQCAtNzkyNCw2ICs3OTIyLDcgQEAKIAkJCQk1Q0I2
QUU0MzI2MDk3OTlDMDBCNkVENUEgLyogUmVhc29uU1BJLmggKi8sCiAJCQkJMEU5N0Q3NEMyMDBF
OEZGMzAwQkY2NjQzIC8qIFNhZmVCcm93c2luZ1NQSS5oICovLAogCQkJCTQ0OEFDMjREMjY3MTM1
QTYwMEIyODkyMSAvKiBTeW5hcHNlU1BJLmggKi8sCisJCQkJMzE1NUVFMEMyNjczRjRFRjAwODVF
NTlBIC8qIFZpc2lvbktpdFNQSS5oICovLAogCQkJKTsKIAkJCXBhdGggPSBDb2NvYTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMTM4Miw4ICsxMTM4MSw3IEBACiAJCQkJMkVBN0Iz
RDQyMDI2Q0YyMzAwOUNFNUFDIC8qIFdLTnVtYmVyUGFkVmlldy5tbSAqLywKIAkJCQkyRUE3QjND
RjIwMjZDRUY4MDA5Q0U1QUMgLyogV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5oICovLAogCQkJ
CTJFQTdCM0QwMjAyNkNFRjgwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXdDb250cm9sbGVyLm1t
ICovLAotCQkJCUY0RDVGNTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmll
d0NvbnRyb2xsZXIuaCAqLywKLQkJCQlGNEQ1RjUxQzIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlj
a2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICovLAorCQkJCUY0RDVGNTFCMjA2MDg3QTEwMDM4
QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmggKi8sCiAJCQkJRjRG
NTlBRDQyMDY1QTVDQTAwNkNBQTQ2IC8qIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5o
ICovLAogCQkJCUY0RjU5QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmll
d0NvbnRyb2xsZXIubW0gKi8sCiAJCQkJRjRENUY1MTkyMDYwODdBMDAwMzhCQkE4IC8qIFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmggKi8sCkBAIC0xMjAzOCw3ICsxMjAzNiw2IEBACiAJ
CQkJOTNCMjYxNEUyMjdEMTRCMTAwQjk3QTc2IC8qIExvY2FsU3RvcmFnZURhdGFiYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0IyNjE0RjIyN0QxNEIxMDBCOTdBNzYgLyogTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NkJFQjZEQjIyRkI5RDQ4MDAy
Njk4NjcgLyogTG9jYWxTdG9yYWdlTmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLywKLQkJCQkzMTU1
RUUwRDI2NzNGNEYwMDA4NUU1OUEgLyogVmlzaW9uS2l0U1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MUE3RjJGMzEyNUJGODIwMDA4QUVCMUQgLyogTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEZEQ0Q3RjcxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBp
biBIZWFkZXJzICovLApAQCAtMTIzNzgsNiArMTIzNzUsNyBAQAogCQkJCTI2ODQwNTUzMThCODZF
RDYwMDIyQzM4QiAvKiBWaWV3VXBkYXRlRGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyNjg0MDU0NDE4Qjg1QTYzMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENUE3MjkxRUJGMDhENTAwOUJBNTk3IC8q
IFZpc2libGVXZWJQYWdlQ291bnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE1NUVFMEQyNjcz
RjRGMDAwODVFNTlBIC8qIFZpc2lvbktpdFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwRjI5
RTQxMjBCNDQ0MjAwNTNEMUI5IC8qIFZpc2l0ZWRMaW5rU3RvcmUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNjAyMjREMThDMTZCOUYwMEMzRThDOSAvKiBWaXNpdGVkTGlua1N0b3JlTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjRDRUYwMThCQzQ4MTgwMEJDMkQzNCAvKiBWaXNpdGVk
TGlua1RhYmxlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkyMiw3ICsxMjkyMCw3
IEBACiAJCQkJNTEyRjU4RkMxMkE4OEE1NDAwNjI5NTMwIC8qIFdLUHJvdGVjdGlvblNwYWNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MjcyRDRDOTFFNzM1RjA5MDBFQjQyOTAgLyogV0tQcm90ZWN0
aW9uU3BhY2VOUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4QUNBRUExMkFFRTZCQjAwQjA0Qjgz
IC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovLAotCQkJCUY0RDVGNTFG
MjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUQwMUJDRDE5MDVE
NTQ5MDBDOUM0NUYgLyogV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOUUzMjlCMTgyMkUxQ0MwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVj
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5RTMyOUYxODIyRkVERDAwRjVEMDRDIC8qIFdLUmVt
b3RlT2JqZWN0Q29kZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFy
aWVzL0NoYW5nZUxvZyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKaW5kZXggY2IwYWUwMGNi
MjQ1MmMzYTk4NjUyNjBhNTEzZGI1OWU0Y2M1YzY0Mi4uNjNkYTdjN2E4YjgzOTMwNjVkYzA5M2Jm
MjQwMWY3YWIzMWQzYjg0NSAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwor
KysgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDYt
MTQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW3dh
dGNoT1NdIFJlZW5hYmxlIG1vZGVybiB0ZXh0IGlucHV0IFVJIGZvciBub24tbnVtZXJpYyB0ZXh0
IGlucHV0IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjY5ODgKKyAgICAgICAgcmRhcjovLzc4MTAyOTUzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1
YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZDoKKyAg
ICAgICAgKiBXZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy84L1BlcHBlclVJQ29y
ZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZDoKKwogMjAyMS0wNi0xNSAgSm9uYXRoYW4gQmVk
YXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dhdGNoT1MgOF0gU3VwcG9ydCBi
dWlsZGluZyBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRl
RnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlD
b3JlLnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0
Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZAppbmRleCBmOTQx
YTllYWI3NWNkMGIxNDhmNDQ5YTU3Mzk4MDJmZWNiZmE0Mjc2Li5iNzE0Nzc0MTQyMmE5ZTgwOTUy
OTY3MTJjODM5ZjA1MjU1OTRjOWMyIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0
UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvNy9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1Bl
cHBlclVJQ29yZS50YmQKKysrIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdv
cmtTdHVicy93YXRjaG9zLzcvUGVwcGVyVUlDb3JlLmZyYW1ld29yay9QZXBwZXJVSUNvcmUudGJk
CkBAIC04LDUgKzgsNSBAQCBleHBvcnRzOgogICAgIG9iamMtY2xhc3NlczogICAgWyBQVUlDUXVp
Y2tib2FyZExpc3RUcmF5QnV0dG9uLCBQVUlDQWN0aW9uR3JvdXAsIFBVSUNRdWlja2JvYXJkTGlz
dEl0ZW1DZWxsLCBQVUlDQWN0aW9uQ29udHJvbGxlciwKICAgICAgICAgICAgICAgICAgICAgICAg
UFVJQ0Nyb3duSW5wdXRTZXF1ZW5jZXIsIFBVSUNQaWNrZXJWaWV3LCBQVUlDUXVpY2tib2FyZExp
c3RJdGVtQ2VsbCwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgIFBVSUNBcHBsaWNhdGlvbiwgUFVJQ1Jlc291cmNlcywgUFVJQ1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlciwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgIFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIsIFBVSUNQaWNr
ZXJWaWV3IF0KKyAgICAgICAgICAgICAgICAgICAgICAgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlciwgUFVJQ1BpY2tlclZpZXcsIFBVSUNUZXh0SW5wdXRDb250ZXh0LCBQVUlDUXVpY2tib2Fy
ZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBdCiAuLi4KZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmll
cy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy84L1BlcHBlclVJQ29yZS5mcmFt
ZXdvcmsvUGVwcGVyVUlDb3JlLnRiZCBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJh
bWV3b3JrU3R1YnMvd2F0Y2hvcy84L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3Jl
LnRiZAppbmRleCBkZWIzNmZkYzE4NTZkNDQ4MDVhNWM0NDgyNDkzN2NjNDVhYTYzNzU2Li5jNjU0
NDQ4MGQ2NWZmNGI5NzUyMGY2YzRiNWM2OGU0YTI1NDVhMDBkIDEwMDY0NAotLS0gYS9XZWJLaXRM
aWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvOC9QZXBwZXJVSUNv
cmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQKKysrIGIvV2ViS2l0TGlicmFyaWVzL1dlYktp
dFByaXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzgvUGVwcGVyVUlDb3JlLmZyYW1ld29yay9Q
ZXBwZXJVSUNvcmUudGJkCkBAIC05LDUgKzksNSBAQCBleHBvcnRzOgogICAgICAgICAgICAgICAg
ICAgICAgICBQVUlDQ3Jvd25JbnB1dFNlcXVlbmNlciwgUFVJQ1BpY2tlclZpZXcsIFBVSUNRdWlj
a2JvYXJkTGlzdEl0ZW1DZWxsLCBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciwKICAg
ICAgICAgICAgICAgICAgICAgICAgUFVJQ0FwcGxpY2F0aW9uLCBQVUlDUmVzb3VyY2VzLCBQVUlD
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyLCBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwg
UFVJQ1BpY2tlclZpZXcsIFBVSUNUZXh0SW5wdXRDb250ZXh0LCBQVUlDUXVpY2tib2FyZENvbnRy
b2xsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFBVSUNRdWlja2JvYXJkUmVtb3RlVmlld0Nv
bnRyb2xsZXIgXQorICAgICAgICAgICAgICAgICAgICAgICBQVUlDUXVpY2tib2FyZFJlbW90ZVZp
ZXdDb250cm9sbGVyLCBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciBdCiAuLi4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431598</attachid>
            <date>2021-06-16 13:56:29 -0700</date>
            <delta_ts>2021-06-16 13:58:31 -0700</delta_ts>
            <desc>Rebase on trunk</desc>
            <filename>bug-226988-20210616135628.patch</filename>
            <type>text/plain</type>
            <size>56869</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmM2U4MzExZjc1ZjFiNmZm
Yzg1NWE4MzYxMTI4ZTRhYzA2N2JhYjAuLmJjZGI0YTM4NDU1MWE5MDU3NzcxYWY2YjgxNGRmZDQz
YWY2NDg0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgUmVmYWN0b3IgdGV4dCBpbnB1dCBsb2dpYyBvbiB3YXRjaE9TIHN1Y2gg
dGhhdCB3ZSdyZSBhYmxlIHRvIHByZXNlbnQgdGhlIG5ldyAoIm1vZGVybiIpIFVJIGZvciBzY3Jp
YmJsZSB0ZXh0CisgICAgICAgIGlucHV0IG9uIHdhdGNoT1MgOCwgcmF0aGVyIHRoYW4gbGVnYWN5
IChpbi1wcm9jZXNzKSBzY3JpYmJsZSBVSS4gT3ZlcmFsbCwgdGhpcyBwYXRjaCByZW1vdmVzCisg
ICAgICAgIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciBhbHRvZ2V0aGVyLiBUaGlzIGhh
ZCB0d28gc3ViY2xhc3NlczogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZv
cgorICAgICAgICBmb2N1c2VkIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0IGVsZW1lbnRzKSBh
bmQgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKHVzZWQgZm9yIHRleHQgaW5wdXQgdHlw
ZXMpLgorICAgICAgICBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRz
IGRpcmVjdGx5IGZyb20gUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsIGFuZAorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBub3cgaW5oZXJpdHMgZnJvbSBQVUlD
UXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlcjsgdGhpcyBpbmhlcml0YW5jZSBmcm9tCisg
ICAgICAgIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIGluc3RlYWQgb2YgUFVJ
Q1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWxsb3dzIHRoZQorICAgICAgICBXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlciB0byBzaG93IHRleHQgc3VnZ2VzdGlvbnMgdXNpbmcgYC1z
ZXRNZXNzYWdlczpgIG9uCisgICAgICAgIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9s
bGVyLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gY3VzdG9tIFdlYktpdCBjb2RlIHRvIGluc2VydCB0
ZXh0IHN1Z2dlc3Rpb25zLgorCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCB3ZSBtb3ZlIHRoZSBm
b2xsb3dpbmcgcGllY2VzIG9mIGZ1bmN0aW9uYWxpdHkgb3V0IG9mIFdLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlciwgYW5kIGludG8KKyAgICAgICAgZWl0aGVyIFdLU2VsZWN0TWVudUxpc3RW
aWV3Q29udHJvbGxlciBvciBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlcjoKKworICAgICAg
ICAxLiBTdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHVwZGF0aW5nIGNvbnRleHQgdmlld3MgKGku
ZS4gdGhlIGRvbWFpbiBuYW1lIGhlYWRlciB2aWV3IGluIFF1aWNrYm9hcmQpID0+CisgICAgICAg
IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDIuIExvZ2ljIGZvciBk
ZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgc2hvdyBsYW5ndWFnZSBzZWxlY3Rp
b24gVUkgPT4gV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuCisKKyAgICAgICAgMy4gU3Vw
cG9ydCBmb3IgbGF5aW5nIG91dCBjdXN0b20gY29sbGVjdGlvbiB2aWV3IGNlbGxzIGluIFF1aWNr
Ym9hcmQgPT4gV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgICogUGxh
dGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmg6CisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjcmVhdGVRdWlja2JvYXJkVGV4dElucHV0
Q29udGV4dF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVRdWlja2JvYXJkQ29u
dHJvbGxlcjpdKToKKworICAgICAgICBSZWZhY3RvciBsb2dpYyB0byBjcmVhdGUgYSBQVUlDVGV4
dElucHV0Q29udGV4dCBmcm9tIHRoZSBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpbmZvcm1hdGlv
biBvdXQgaW50byBhIHNlcGFyYXRlCisgICAgICAgIGhlbHBlciBtZXRob2QsIGAtY3JlYXRlUXVp
Y2tib2FyZFRleHRJbnB1dENvbnRleHRgLCBhbmQgdXNlIGl0IHdoZW4gYm90aCBkaXJlY3RseSBs
YXVuY2hpbmcgaW50bworICAgICAgICBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgYW5kIFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIChjYW5Vc2VRdWlja2JvYXJkQ29u
dHJvbGxlckZvcik6CisKKyAgICAgICAgUmVtb3ZlIGEgY29tbWVudCwgbm93IHRoYXQgd2UgaW50
ZW5kIHRvIGNvbnRpbnVlIHVzaW5nIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGZvciBu
b24ta2V5Y2hhaW4tQXV0b0ZpbGwtCisgICAgICAgIGNvbXBhdGlibGUgdGV4dCBmaWVsZHMgbW92
aW5nIGZvcndhcmQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBmb2N1c2VkRm9ybUNvbnRy
b2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9uczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
bGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRDb250ZW50VHlwZUZvclRlc3RpbmddKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyB2aWV3Q29udHJvbGxlcjppbnB1dENvbnRleHRWaWV3
SGVpZ2h0Rm9yU2l6ZTpdKTogRGVsZXRlZC4KKworICAgICAgICBSZW1vdmUgdGhpcyBkZWxlZ2F0
ZSBtZXRob2QsIHdoaWNoIHdhcyAoZWZmZWN0aXZlbHkpIHVudXNlZCBzaW5jZSB3ZSBqdXN0IGFz
ayBmb3IKKyAgICAgICAgYC1pbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6YCBmcm9t
IHRoZSBpbnB1dCBkZWxlZ2F0ZSBhbnl3YXlzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
YWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25NZW51Rm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIHRvIGAtYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25G
b3JMaXN0Vmlld0NvbnRyb2xsZXI6YC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRD
b250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjpdKTogRGVsZXRlZC4KKworICAgICAgICBS
ZXBsYWNlIHRoaXMgd2l0aCBgLXRleHRJbnB1dENvbnRleHRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6
YCwgd2hpY2ggcmV0dXJucyBhIHdob2xlIFBVSUNUZXh0SW5wdXRDb250ZXh0IGluc3RlYWQKKyAg
ICAgICAgb2YganVzdCBhIHRleHQgY29udGVudCB0eXBlLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGxpc3RWaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RUZXh0
U3VnZ2VzdGlvbjpdKTogRGVsZXRlZC4KKworICAgICAgICBSZW1vdmUgc2V2ZXJhbCBkZWxlZ2F0
ZSBtZXRob2RzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgdmlld1dpbGxBcHBlYXI6XSk6CisKKyAgICAg
ICAgUmVtb3ZlIHNvbWUgKGRlZnVuY3QpIGxvZ2ljIGZvciBvdmVycmlkaW5nIHRoZSBzdGF0dXMg
YmFyIHdoZW4gc2hvd2luZyBRdWlja2JvYXJkIGlucHV0IHZpZXcgY29udHJvbGxlcnMuIFRoaXMK
KyAgICAgICAgc3RhdHVzIGJhciBtZWNoYW5pc20gKHdoaWNoIHdhcyBwcmV2aW91c2x5IHVzZWQg
dG8gc2hvdyBsYWJlbCB0ZXh0IGZvciBmb3JtIGNvbnRyb2xzKSBoYXNuJ3Qgd29ya2VkIHNpbmNl
CisgICAgICAgIHdhdGNoT1MgNiwgYW5kIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgaW4gYSB3
YXkgdGhhdCBkb2Vzbid0IHVzZSBQVUlDU3RhdHVzQmFyR2xvYmFsQ29udGV4dFZpZXdBc3NlcnRp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIu
aC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlz
dFZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVJdGVtQ2VsbCB0b3BU
b0xhYmVsQmFzZWxpbmVTcGVjVmFsdWVdKToKKyAgICAgICAgKC1bV0tTZWxlY3RNZW51SXRlbUNl
bGwgYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVD
b2xsZWN0aW9uVmlld0l0ZW1DZWxsIHRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZV0pOgorICAg
ICAgICAoLVtXS1NlbGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIGJhc2VsaW5lVG9Cb3R0
b21TcGVjVmFsdWVdKToKKyAgICAgICAgKC1bV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVy
IGluaXRXaXRoRGVsZWdhdGU6XSk6CisKKyAgICAgICAgU2VlIGFib3ZlIGNvbW1lbnQgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlciBpbml0V2l0aERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciByZWxvYWRDb250ZXh0Vmlld10pOgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXSk6CisK
KyAgICAgICAgTW92ZSBsb2dpYyBmb3Igc2hvd2luZyBhbmQgdXBkYXRpbmcgdGhlIGNvbnRleHQg
dmlldyBvdXQgb2YgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQgaW50bworICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4gU2VlIGNvbW1lbnRzIGFib3ZlLgor
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlcXVpcmVzTnVtZXJp
Y0lucHV0XSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGFkZGl0
aW9uYWxUcmF5QnV0dG9uc10pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciB1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6XSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyIGhlYWRlckNvbnRlbnRWaWV3SGVpZ2h0XSk6CisgICAgICAgICgtW1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGhlYWRlckNvbnRlbnRWaWV3XSk6CisgICAgICAg
ICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHNob3VsZFNob3dMYW5ndWFnZUJ1dHRv
bl0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzdXBwb3J0c0Rp
Y3RhdGlvbklucHV0XSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
IHNob3VsZFNob3dUcmF5Vmlld10pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBzaG91bGRTaG93VGV4dEZpZWxkXSk6CisKKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBh
bmQgcmV0dXJuIFlFUyBmb3IgdGV4dCBpbnB1dCB0eXBlcyB0aGF0IGRvbid0IHJlcXVpcmUgYW4g
YWRkaXRpb25hbCBudW1lcmljIGlucHV0IHRyYXkgYnV0dG9uLgorICAgICAgICBUaGlzIGFsbG93
cyBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciB0byBzaG93IGEgbmF0aXZlIHRl
eHQgZmllbGQgY29udGFpbmluZyB0aGUgaW5wdXQgdGV4dCBpbnNpZGUKKyAgICAgICAgcXVpY2ti
b2FyZCwgd2hpY2ggKHdoZW4gdGFwcGVkKSBwcmVzZW50cyBtb2Rlcm4gdGV4dCBpbnB1dCBVSS4K
KworICAgICAgICBTaW5jZSBzaG93aW5nIHRoZSB0ZXh0IGZpZWxkIGlzIGFwcGFyZW50bHkgbXV0
dWFsbHkgZXhjbHVzaXZlIHRvIHNob3dpbmcgYSB0cmF5IHZpZXcsIHdlIGFkZGl0aW9uYWxseSBv
dmVycmlkZQorICAgICAgICBgLXNob3VsZFNob3dUcmF5Vmlld2AgYW5kIHJldHVybiBOTyBmb3Ig
bm9uLW51bWVyaWMgdGV4dCBpbnB1dHMuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgc3VwcG9ydHNBcm91ZXRJbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciB2aWV3RGlkTG9hZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciB3aWxsUHJlc2VudEFyb3VldFZpZXdDb250cm9s
bGVyOl0pOiBEZWxldGVkLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBvdmVycmlkZSB0
aGlzIGRlbGVnYXRlIG1ldGhvZCBhbnltb3JlLCBzaW5jZSB0aGUgUFVJQ1RleHRJbnB1dENvbnRl
eHQncyBgLWluaXRpYWxUZXh0YCBpcworICAgICAgICBzdWZmaWNpZW50IHRvIGVuc3VyZSB0aGF0
IHRoZSBzY3JpYmJsZSB0ZXh0IGlucHV0IFVJIGlzIHByZXBvcHVsYXRlZCB3aXRoIHRoZSBmb2N1
c2VkIHRleHQgZmllbGQncyBpbml0aWFsIHRleHQKKyAgICAgICAgY29udGVudC4KKworICAgICAg
ICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciByZWxvYWRUZXh0U3VnZ2VzdGlvbnNd
KTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgdGhpcyB0byBgLXVwZGF0ZVRleHRTdWdnZXN0
aW9uczpgLCBhbmQgbWFrZSBpdCB0YWtlIGEgbGlzdCBvZiBVSVRleHRTdWdnZXN0aW9ucy4gVGhp
cyBtYWtlcyB0aGUgY29kZSBhCisgICAgICAgIGJpdCBlYXNpZXIgdG8gZm9sbG93IGFuZCBhbGxv
d3MgdXMgdG8gcmVtb3ZlIHRoZSBgLXRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxl
cjpgIGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBkaWRTZWxlY3RMaXN0SXRlbUF0SW5kZXhQYXRoOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBkaWRTZWxlY3RMaXN0SXRlbTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgX2RpZFNl
bGVjdExpc3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciBudW1iZXJPZkxpc3RJdGVtc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBoZWlnaHRGb3JMaXN0SXRlbTp3aWR0aDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgY2VsbEZvckxp
c3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBsaXN0SXRlbUNlbGxSZXVzZUlkZW50aWZpZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbGlzdEl0ZW1DZWxsQ2xhc3NdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaXRlbUNlbGxGb3JM
aXN0SXRlbTpmb3JJbmRleFBhdGg6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB0
aGlzIGNvZGUgZm9yIHNob3dpbmcgdGV4dCBzdWdnZXN0aW9ucyBpbiBRdWlja2JvYXJkIFVJLiBT
aW5jZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBpcyBub3cgYQorICAgICAgICBzdWJj
bGFzcyBvZiBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciwgd2UgY2FuIG5vdyBz
aW1wbHkgdXNlIHRoZSBgLW1lc3NhZ2VzYCBwcm9wZXJ0eSBvZiB0byBwb3B1bGF0ZQorICAgICAg
ICBxdWlja2JvYXJkIHdpdGggdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNi0xNiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTYW5kYm94IHByb2ZpbGVzIG5lZWQg
dG8gYWxsb3cgbG9hZGluZyBmcm9tIC91c3IvYXBwbGVpbnRlcm5hbC9saWIgb24gaW50ZXJuYWwg
YnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1Bl
cHBlclVJQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBw
ZXJVSUNvcmVTUEkuaAppbmRleCBiZWE3MjU0ZTlmZGQyZDUzMTI4MmFiYzM1M2JjMmQzNGI4Yzc5
ZTY4Li5kOWRiNDk5ZmRjMTI1ZTljOGM3M2JjNDYzYTFjZDQ4Yzk3YWNkMjQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgK
QEAgLTM5LDkgKzM5LDkgQEAKICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUGlja2VyVmlld19Q
cml2YXRlLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRBcm91ZXRWaWV3
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkTGFuZ3Vh
Z2VDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlclN1YmNsYXNzLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1
aWNrYm9hcmRMaXN0Vmlld1NwZWNzLmg+CisjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNr
Ym9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlD
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUv
UFVJQ1Jlc291cmNlcy5oPgpAQCAtMTY5LDkgKzE2OSwxMSBAQCBleHRlcm4gVUlCdXR0b25UeXBl
IGNvbnN0IFBVSUNCdXR0b25UeXBlUGlsbDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcp
IE5TU3RyaW5nICppbml0aWFsVGV4dDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcsIG51
bGxhYmxlKSBVSUNvbG9yICp0aW50Q29sb3I7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25n
KSBVSVRleHRDb250ZW50VHlwZSBzZWNvbmRhcnlUZXh0Q29udGVudFR5cGU7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBOU0ludGVnZXIgbWluaW11bUxlbmd0aDsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBhc3NpZ24pIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5LZXlUeXBlOworQHByb3Bl
cnR5IChub25hdG9taWMpIE5TSW50ZWdlciBtaW5pbXVtTGVuZ3RoOworQHByb3BlcnR5IChub25h
dG9taWMpIFVJUmV0dXJuS2V5VHlwZSByZXR1cm5LZXlUeXBlOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHN0cm9uZykgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkSGVhZGVyVGV4dDsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGFjY2VwdHNFbW9qaTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljKSBCT09MIHNob3VsZFByZXNlbnRNb2Rlcm5UZXh0SW5wdXRVSTsKIAogI2lmIEhBVkUoUVVJ
Q0tCT0FSRF9DT05UUk9MTEVSKQogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxl
KSBOU0FycmF5PE5TU3RyaW5nICo+ICpzdWdnZXN0aW9uczsKQEAgLTIzMiwxMSArMjM0LDE2IEBA
IGV4dGVybiBVSUJ1dHRvblR5cGUgY29uc3QgUFVJQ0J1dHRvblR5cGVQaWxsOwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDVGFibGVWaWV3ICpsaXN0VmlldzsKIEBwcm9wZXJ0
eSAoc3Ryb25nLCBub25hdG9taWMsIHJlYWRvbmx5KSBQVUlDUXVpY2tib2FyZExpc3RWaWV3U3Bl
Y3MgKnNwZWNzOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFVJVGV4dENvbnRlbnRUeXBl
IHRleHRDb250ZW50VHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFBVSUNUZXh0
SW5wdXRDb250ZXh0ICp0ZXh0SW5wdXRDb250ZXh0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
RGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVn
YXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfREVT
SUdOQVRFRF9JTklUSUFMSVpFUjsKIC0gKHZvaWQpcmVsb2FkTGlzdEl0ZW1zOwogLSAodm9pZCly
ZWxvYWRIZWFkZXJDb250ZW50VmlldzsKIEBlbmQKIAorQGludGVyZmFjZSBQVUlDUXVpY2tib2Fy
ZE1lc3NhZ2VWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheSAqbWVzc2FnZXM7CitAZW5kCisK
IEBpbnRlcmZhY2UgUFVJQ1F1aWNrYm9hcmRBcm91ZXRWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXIKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBudWxsYWJs
ZSkgVUlUZXh0Q29udGVudFR5cGUgdGV4dENvbnRlbnRUeXBlOwogLSAodm9pZClzZXRJbnB1dFRl
eHQ6KG51bGxhYmxlIE5TU3RyaW5nICopaW5wdXRUZXh0IHNlbGVjdGlvblJhbmdlOihOU1Jhbmdl
KXNlbGVjdGlvblJhbmdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDYzYzBiN2U4MDdmNmQ2
ODYyMzczZDM2ZjQ2M2UzNjUyNDNkZmY1MzEuLjY3ZjMyNTU5Nzk4OTYwNzU0NWZiYjY4OGUyZDI3
OWUwODg0MjY0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ1Myw3ICs0NTMsNiBAQCBV
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBpY2tlci5tbQogVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS0Zvcm1TZWxlY3RQb3BvdmVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLTnVtYmVy
UGFkVmlldy5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS051bWJlclBhZFZpZXdDb250cm9sbGVy
Lm1tCi1VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5t
bQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0K
IFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KIFVJ
UHJvY2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCmluZGV4IGM4NzllOWRlMGQxZmQwMDk1YWI3ODBiMTI2M2E4ZjZhYmEyYWEwZGEuLmViMTk5
ODY1YzAwNDA0NGIyNmJlMGJkMWVhMjZhODBiNWJmYjhiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAt
NjQsNyArNjQsNyBAQAogI2ltcG9ydCAiV0tQcmV2aWV3QWN0aW9uSXRlbUlkZW50aWZpZXJzLmgi
CiAjaW1wb3J0ICJXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLUHJl
dmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0
ICJXS1N5bnRoZXRpY0ZsYWdzQ2hhbmdlZFdlYkV2ZW50LmgiCiAjaW1wb3J0ICJXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlci5oIgpAQCAtNjY2NiwyMiArNjY2NiwyMiBAQCAtICh2b2lkKXJl
bW92ZUZvY3VzZWRGb3JtQ29udHJvbE92ZXJsYXkKICAgICBbc2VsZiBzZXRJbnB1dERlbGVnYXRl
Om5pbF07CiB9CiAKLSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJPTExFUikKLQotLSAoUmV0YWlu
UHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1aWNrYm9hcmRDb250cm9sbGVy
OihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyCistIChSZXRhaW5Q
dHI8UFVJQ1RleHRJbnB1dENvbnRleHQ+KWNyZWF0ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0
CiB7Ci0gICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0TlMoW1tQVUlDUXVpY2ti
b2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8gc3VnZ2VzdGlvbnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6W19mb3JtSW5wdXRTZXNzaW9uIHN1Z2dlc3Rpb25zXS5jb3VudF0pOwotICAgIGZvciAoVUlU
ZXh0U3VnZ2VzdGlvbiAqc3VnZ2VzdGlvbiBpbiBbX2Zvcm1JbnB1dFNlc3Npb24gc3VnZ2VzdGlv
bnNdKQotICAgICAgICBbc3VnZ2VzdGlvbnMgYWRkT2JqZWN0OnN1Z2dlc3Rpb24uaW5wdXRUZXh0
XTsKLQogICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW1tQVUlDVGV4dElucHV0Q29udGV4dCBh
bGxvY10gaW5pdF0pOwogICAgIFtzZWxmIF91cGRhdGVUZXh0SW5wdXRUcmFpdHM6Y29udGV4dC5n
ZXQoKV07Ci0gICAgW2NvbnRleHQgc2V0U3VnZ2VzdGlvbnM6c3VnZ2VzdGlvbnMuZ2V0KCldOwog
ICAgIFtjb250ZXh0IHNldEluaXRpYWxUZXh0Ol9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLnZh
bHVlXTsKICAgICBbY29udGV4dCBzZXRBY2NlcHRzRW1vamk6WUVTXTsKICAgICBbY29udGV4dCBz
ZXRTaG91bGRQcmVzZW50TW9kZXJuVGV4dElucHV0VUk6WUVTXTsKKyAgICByZXR1cm4gY29udGV4
dDsKK30KKworI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQorCistIChSZXRhaW5QdHI8
UFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyPilfY3JlYXRlUXVpY2tib2FyZENvbnRyb2xsZXI6KFVJ
Vmlld0NvbnRyb2xsZXIgKilwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIKK3sKKyAgICBhdXRvIHF1
aWNrYm9hcmRDb250cm9sbGVyID0gYWRvcHROUyhbW1BVSUNRdWlja2JvYXJkQ29udHJvbGxlciBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gY29udGV4dCA9IHNlbGYuY3JlYXRlUXVpY2tib2FyZFRl
eHRJbnB1dENvbnRleHQ7CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldFF1aWNrYm9hcmRQ
cmVzZW50aW5nVmlld0NvbnRyb2xsZXI6cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXTsKICAgICBb
cXVpY2tib2FyZENvbnRyb2xsZXIgc2V0RXhjbHVkZWRGcm9tU2NyZWVuQ2FwdHVyZTpbY29udGV4
dCBpc1NlY3VyZVRleHRFbnRyeV1dOwogICAgIFtxdWlja2JvYXJkQ29udHJvbGxlciBzZXRUZXh0
SW5wdXRDb250ZXh0OmNvbnRleHQuZ2V0KCldOwpAQCAtNjY5Miw3ICs2NjkyLDYgQEAgLSAoUmV0
YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1aWNrYm9hcmRDb250cm9s
bGVyOihVSVZpZXdDb250cm8KIAogc3RhdGljIGJvb2wgY2FuVXNlUXVpY2tib2FyZENvbnRyb2xs
ZXJGb3IoVUlUZXh0Q29udGVudFR5cGUgdHlwZSkKIHsKLSAgICAvLyBXZSBjYW4gcmVtb3ZlIHRo
aXMgcmVzdHJpY3Rpb24gb25jZSBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgc3VwcG9ydHMgZGlz
cGxheWluZyB0ZXh0IHN1Z2dlc3Rpb24gc3RyaW5ncyB0aGF0IGFyZSBub3QgbG9naW4gY3JlZGVu
dGlhbHMuCiAgICAgcmV0dXJuIFt0eXBlIGlzRXF1YWxUb1N0cmluZzpVSVRleHRDb250ZW50VHlw
ZVVzZXJuYW1lXSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6VUlUZXh0Q29udGVudFR5cGVQYXNz
d29yZF0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOlVJVGV4dENvbnRlbnRUeXBlRW1haWxBZGRy
ZXNzXTsKIH0KIApAQCAtNjkzMSw3ICs2OTMwLDcgQEAgLSAodm9pZClmb2N1c2VkRm9ybUNvbnRy
b2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9uczooV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3ICopdmkK
ICAgICBpZiAoX2lzQmx1cnJpbmdGb2N1c2VkRWxlbWVudCB8fCAhW19wcmVzZW50ZWRGdWxsU2Ny
ZWVuSW5wdXRWaWV3Q29udHJvbGxlciBpc0tpbmRPZkNsYXNzOltXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciBjbGFzc11dKQogICAgICAgICByZXR1cm47CiAKLSAgICBbKFdLVGV4dElucHV0
TGlzdFZpZXdDb250cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9s
bGVyIHJlbG9hZFRleHRTdWdnZXN0aW9uc107CisgICAgWyhXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciB1cGRhdGVU
ZXh0U3VnZ2VzdGlvbnM6W19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3IHN1Z2dlc3Rpb25zXV07CiB9
CiAKICNwcmFnbWEgbWFyayAtIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRl
CkBAIC05MTk2LDE2ICs5MTk1LDcgQEAgLSAodm9pZClxdWlja2JvYXJkSW5wdXRDYW5jZWxsZWQ6
KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJkCiAKICNwcmFnbWEgbWFy
ayAtIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUKIAotLSAoQ0dGbG9hdCl2aWV3
Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5w
dXRDb250ZXh0Vmlld0hlaWdodEZvclNpemU6KENHU2l6ZSlzaXplCi17Ci0gICAgaWQgPF9XS0lu
cHV0RGVsZWdhdGU+IGRlbGVnYXRlID0gc2VsZi53ZWJWaWV3Ll9pbnB1dERlbGVnYXRlOwotICAg
IGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Zm9j
dXNlZEVsZW1lbnRDb250ZXh0Vmlld0hlaWdodEZvckZpdHRpbmdTaXplOmlucHV0U2Vzc2lvbjop
XSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gW2RlbGVnYXRlIF93ZWJWaWV3OnNl
bGYud2ViVmlldyBmb2N1c2VkRWxlbWVudENvbnRleHRWaWV3SGVpZ2h0Rm9yRml0dGluZ1NpemU6
c2l6ZSBpbnB1dFNlc3Npb246X2Zvcm1JbnB1dFNlc3Npb24uZ2V0KCldOwotfQotCi0tIChCT09M
KWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uTWVudUZvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKKy0gKEJPT0wpYWxsb3dzTGFuZ3Vh
Z2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyCiB7CiAgICAgc3dpdGNoIChfZm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5lbGVtZW50VHlwZSkgewogICAgIGNhc2UgV2ViS2l0OjpJbnB1dFR5cGU6OkNvbnRlbnRF
ZGl0YWJsZToKQEAgLTkyNzIsMjAgKzkyNjIsOSBAQCAtIChXS051bWJlclBhZElucHV0TW9kZSlu
dW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaQog
ICAgIH0KIH0KIAotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgorLSAoUFVJ
Q1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVy
OihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKIHsKLSAgICByZXR1
cm4gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlja2JvYXJkOwotfQotCi0tIChOU0FycmF5PFVJ
VGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6
KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgotewotICAgIHJldHVy
biBbX2ZvY3VzZWRGb3JtQ29udHJvbFZpZXcgc3VnZ2VzdGlvbnNdOwotfQotCi0tICh2b2lkKWxp
c3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGRpZFNlbGVjdFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0aW9uICopc3VnZ2VzdGlv
bgotewotICAgIFtzZWxmIGluc2VydFRleHRTdWdnZXN0aW9uOnN1Z2dlc3Rpb25dOwotICAgIFtz
ZWxmIGRpc21pc3NRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJBbmRSZXZlYWxGb2N1c2VkRm9ybU92
ZXJsYXlJZk5lY2Vzc2FyeTpjb250cm9sbGVyXTsKKyAgICByZXR1cm4gc2VsZi5jcmVhdGVRdWlj
a2JvYXJkVGV4dElucHV0Q29udGV4dC5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKWFsbG93
c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyICopY29udHJvbGxlcgpAQCAtOTMwMywxMCArOTI4Miw4IEBAIC0gKHZvaWQpX2xv
b2t1cEdlc3R1cmVSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKIH0KICNlbmRpZgogCi0KLQotCiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQorCiAt
ICh2b2lkKXNldFVwQXBwSGlnaGxpZ2h0TWVudXNJZk5lZWRlZAogewogICAgIGlmICghX3BhZ2Ut
PnByZWZlcmVuY2VzKCkuYXBwSGlnaGxpZ2h0c0VuYWJsZWQoKSB8fCAhc2VsZi53aW5kb3cgfHwg
IV9wYWdlLT5lZGl0b3JTdGF0ZSgpLnNlbGVjdGlvbklzUmFuZ2UpCkBAIC0xMDM2Myw3ICsxMDM0
MCw3IEBAIC0gKE5TU3RyaW5nICopdGV4dENvbnRlbnRUeXBlRm9yVGVzdGluZwogewogI2lmIEhB
VkUoUEVQUEVSX1VJX0NPUkUpCiAgICAgaWYgKFtfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmll
d0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFzczpbV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
Y2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3
Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkRnVs
bFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIuZ2V0KCldOworICAgICAgICByZXR1cm4gWyhXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxsU2NyZWVuSW5wdXRWaWV3
Q29udHJvbGxlciB0ZXh0SW5wdXRDb250ZXh0XS50ZXh0Q29udGVudFR5cGU7CiAjaWYgSEFWRShR
VUlDS0JPQVJEX0NPTlRST0xMRVIpCiAgICAgaWYgKF9wcmVzZW50ZWRRdWlja2JvYXJkQ29udHJv
bGxlcikKICAgICAgICAgcmV0dXJuIFtfcHJlc2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXIgdGV4
dElucHV0Q29udGV4dF0udGV4dENvbnRlbnRUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIu
aAppbmRleCBlODFlMzQwZWU2M2FhZjY0NzEwMmExYjI5NzlkODUyMWE2MGEyZWQ5Li43YjVmNDhk
NzI4NWRlNzBkMDQ4MTdlMzEwMjFhYjU2NjJiMTJlNGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRy
b2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQRVBQRVJfVUlfQ09SRSkKIAot
I2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBpbnRlcmZhY2UgV0tEYXRlUGlj
a2VyVmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQ
aWNrZXJWaWV3Q29udHJvbGxlci5tbQppbmRleCA0NzQ4OGZkZTIyYTllOGQ5MmQxZDkzNWMxMDg3
YTUwNTc1ZjE5YjM3Li5hYmQwYTc0ZjY0MTU3NDA5M2UwNzI5OWMzMmU3NDA1Zjc1YjA2MmJiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2Vy
Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCkBAIC0zMDYsOCArMzA2LDYgQEAgLSAodm9p
ZCl2aWV3V2lsbEFwcGVhcjooQk9PTClhbmltYXRlZAogICAgIF9zdGF0dXNCYXJBc3NlcnRpb24g
PSBbW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dIF90YWtlU3RhdHVzQmFy
R2xvYmFsQ29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0aW9uKSBuYW1lOlBVSUNTdGF0dXNCYXJOYXZpZ2F0aW9u
QmFja0J1dHRvblByZXNzZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07CiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBz
ZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFyVGl0
bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBjb25maWd1cmVTdGF0dXNC
YXJGb3JDb250cm9sbGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwogfQogCiAtICh2b2lkKXZpZXdE
aWRBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5OGFkMDUxN2Q5ODQ5NmQwMzlkOGNm
Yjg5ZjYxOTllNWJhYWZhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlz
dFZpZXdDb250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBvcnQgIlBlcHBlclVJQ29yZVNQ
SS5oIgotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RJdGVtQ2VsbCA6IFBVSUNRdWlja2Jv
YXJkTGlzdEl0ZW1DZWxsCi1AZW5kCi0KLSNpZiBIQVZFKFFVSUNLQk9BUkRfQ09MTEVDVElPTl9W
SUVXUykKLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwg
OiBQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsCi1AZW5kCi0jZW5kaWYK
LQotQGNsYXNzIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcjsKLQotQHByb3RvY29sIFdL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUgPFBVSUNRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZT4KLQotLSAoQ0dGbG9hdCl2aWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgaW5wdXRDb250ZXh0Vmlld0hlaWdodEZvclNp
emU6KENHU2l6ZSlzaXplOwotLSAoVUlWaWV3ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250
cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKLS0gKE5T
U3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKWluaXRpYWxWYWx1ZUZv
clZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxl
cjsKLS0gKEJPT0wpc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZpZXdGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoQk9P
TClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotCi1AZW5kCi0KLUBpbnRlcmZh
Y2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRMaXN0Vmll
d0NvbnRyb2xsZXIKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBOU19ERVNJR05BVEVEX0lO
SVRJQUxJWkVSOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKilhRGVj
b2RlciBOU19VTkFWQUlMQUJMRTsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihp
ZDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlv
bk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7Ci0K
LS0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7Ci0KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFr
KSBpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7Ci0KLUBl
bmQKLQotdm9pZCBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9sbGVyKFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXIgKiwgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+
KTsKLQotI2VuZGlmIC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlci5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM4ZDc3OTNm
MjNjMjQ3MGFlODY5YmVhMDU3YzcyMmE5NWUxY2JjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjAx
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLUXVp
Y2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgotCi0jaWYgSEFWRShQRVBQRVJfVUlfQ09SRSkK
LQotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1zdGF0aWMgY29uc3QgQ0dGbG9hdCBpdGVt
Q2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Owotc3RhdGljIGNvbnN0IENHRmxvYXQgaXRlbUNl
bGxCYXNlbGluZVRvQm90dG9tID0gODsKLQotQGltcGxlbWVudGF0aW9uIFdLUXVpY2tib2FyZExp
c3RJdGVtQ2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZQotewot
ICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0KLQotLSAoQ0dGbG9hdCli
YXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVU
b0JvdHRvbTsKLX0KLQotQGVuZAotCi0jaWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklF
V1MpCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0Q29sbGVjdGlvblZpZXdJdGVt
Q2VsbAotCi0tIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZQotewotICAgIHJl
dHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKLX0KLQotLSAoQ0dGbG9hdCliYXNlbGlu
ZVRvQm90dG9tU3BlY1ZhbHVlCi17Ci0gICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRv
bTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklF
V1MpCi0KLUBpbnRlcmZhY2UgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyICgpIDxQVUlD
UXVpY2tib2FyZExhbmd1YWdlQ29udHJvbGxlckRlbGVnYXRlPgotQGVuZAotCi1AaW1wbGVtZW50
YXRpb24gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyIHsKLSAgICBCT09MIF9jb250ZXh0
Vmlld05lZWRzVXBkYXRlOwotICAgIFJldGFpblB0cjxVSVZpZXc+IF9jb250ZXh0VmlldzsKLSAg
ICBSZXRhaW5QdHI8UFVJQ1N0YXR1c0Jhckdsb2JhbENvbnRleHRWaWV3QXNzZXJ0aW9uPiBfc3Rh
dHVzQmFyQXNzZXJ0aW9uOwotfQotCi1AZHluYW1pYyBkZWxlZ2F0ZTsKLQotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZQotewotICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRXaXRoRGVsZWdhdGU6
ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0aW9uTW9kZVRleHRdKQotICAgICAgICBf
Y29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0t
ICh2b2lkKXVwZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWQKLXsKLSAgICBpZiAoIV9jb250ZXh0Vmll
d05lZWRzVXBkYXRlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHByZXZpb3VzQ29udGV4
dFZpZXcgPSBfY29udGV4dFZpZXc7Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRlIHNob3VsZERpc3Bs
YXlJbnB1dENvbnRleHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdKQotICAgICAgICBf
Y29udGV4dFZpZXcgPSBbc2VsZi5kZWxlZ2F0ZSBpbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRy
b2xsZXI6c2VsZl07Ci0gICAgZWxzZQotICAgICAgICBfY29udGV4dFZpZXcgPSBuaWw7Ci0KLSAg
ICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IE5POwotfQotCi0tIChCT09MKXByZWZlcnNTdGF0
dXNCYXJIaWRkZW4KLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKHZvaWQpdmlld1dpbGxBcHBl
YXI6KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld1dpbGxBcHBlYXI6YW5pbWF0ZWRd
OwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlvbiA9IFtbUFVJQ0FwcGxpY2F0aW9uIHNoYXJlZFBV
SUNBcHBsaWNhdGlvbl0gX3Rha2VTdGF0dXNCYXJHbG9iYWxDb250ZXh0QXNzZXJ0aW9uQW5pbWF0
ZWQ6Tk9dOwotCi0gICAgTlNOb3RpZmljYXRpb25DZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAgICBbY2VudGVyIGFkZE9ic2VydmVyOnNlbGYg
c2VsZWN0b3I6QHNlbGVjdG9yKF9oYW5kbGVTdGF0dXNCYXJOYXZpZ2F0aW9uKSBuYW1lOlBVSUNT
dGF0dXNCYXJOYXZpZ2F0aW9uQmFja0J1dHRvblByZXNzZWROb3RpZmljYXRpb24gb2JqZWN0Om5p
bF07Ci0gICAgW2NlbnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFu
ZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFyVGl0bGVUYXBwZWROb3Rp
ZmljYXRpb24gb2JqZWN0Om5pbF07Ci0KLSAgICBjb25maWd1cmVTdGF0dXNCYXJGb3JDb250cm9s
bGVyKHNlbGYsIHNlbGYuZGVsZWdhdGUpOwotfQotCi0tICh2b2lkKXZpZXdEaWREaXNhcHBlYXI6
KEJPT0wpYW5pbWF0ZWQKLXsKLSAgICBbc3VwZXIgdmlld0RpZERpc2FwcGVhcjphbmltYXRlZF07
Ci0KLSAgICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gbmlsOwotCi0gICAgTlNOb3RpZmljYXRpb25D
ZW50ZXIgKmNlbnRlciA9IFtOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXTsKLSAg
ICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQVUlDU3RhdHVzQmFyTmF2aWdhdGlv
bkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIg
cmVtb3ZlT2JzZXJ2ZXI6c2VsZiBuYW1lOlBVSUNTdGF0dXNCYXJUaXRsZVRhcHBlZE5vdGlmaWNh
dGlvbiBvYmplY3Q6bmlsXTsKLX0KLQotLSAodm9pZClfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlv
bgotewotICAgIFtzZWxmLmRlbGVnYXRlIHF1aWNrYm9hcmRJbnB1dENhbmNlbGxlZDpzZWxmXTsK
LX0KLQotLSAodm9pZClyZWxvYWRDb250ZXh0VmlldwotewotICAgIF9jb250ZXh0Vmlld05lZWRz
VXBkYXRlID0gWUVTOwotICAgIFtzZWxmIHJlbG9hZEhlYWRlckNvbnRlbnRWaWV3XTsKLX0KLQot
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfQkVHSU4KLQotLSAoUFVJQ0FjdGlvbkNv
bnRyb2xsZXIgKilhY3Rpb25Db250cm9sbGVyCi17Ci0gICAgaWYgKCFbc2VsZi5kZWxlZ2F0ZSBh
bGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0pCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBQVUlDQWN0aW9uSXRlbSAqbGFuZ3VhZ2VTZWxlY3Rp
b25BY3Rpb25JdGVtID0gW3NlbGYubGFuZ3VhZ2VDb250cm9sbGVyIGxhbmd1YWdlU2VsZWN0aW9u
QWN0aW9uSXRlbUZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGF1dG8gYWN0aW9uR3JvdXAg
PSBhZG9wdE5TKFtbUFVJQ0FjdGlvbkdyb3VwIGFsbG9jXSBpbml0V2l0aEFjdGlvbkl0ZW1zOkBb
IGxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSBdIGFjdGlvblN0eWxlOlBVSUNBY3Rpb25TdHls
ZUF1dG9tYXRpY10pOwotICAgIHJldHVybiBhZG9wdE5TKFtbUFVJQ0FjdGlvbkNvbnRyb2xsZXIg
YWxsb2NdIGluaXRXaXRoQWN0aW9uR3JvdXA6YWN0aW9uR3JvdXAuZ2V0KCldKS5hdXRvcmVsZWFz
ZSgpOwotfQotCi1BTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKLQotI3ByYWdt
YSBtYXJrIC0gUFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXJEZWxlZ2F0ZQotCi0tICh2
b2lkKWxhbmd1YWdlQ29udHJvbGxlckRpZENoYW5nZVByaW1hcnlMYW5ndWFnZTooUFVJQ1F1aWNr
Ym9hcmRMYW5ndWFnZUNvbnRyb2xsZXIgKilsYW5ndWFnZUNvbnRyb2xsZXIKLXsKLSAgICBpZiAo
W3NlbGYuZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihxdWlja2JvYXJkOmxh
bmd1YWdlRGlkQ2hhbmdlOildKQotICAgICAgICBbc2VsZi5kZWxlZ2F0ZSBxdWlja2JvYXJkOnNl
bGYgbGFuZ3VhZ2VEaWRDaGFuZ2U6bGFuZ3VhZ2VDb250cm9sbGVyLnByaW1hcnlMYW5ndWFnZV07
Ci19Ci0KLSNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3ViY2xhc3NpbmcKLQotLSAoQ0dGbG9h
dCloZWFkZXJDb250ZW50Vmlld0hlaWdodAotewotICAgIFtzZWxmIHVwZGF0ZUNvbnRleHRWaWV3
SWZOZWVkZWRdOwotCi0gICAgcmV0dXJuIFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYu
Y29udGVudFZpZXcuYm91bmRzLnNpemVdLmhlaWdodDsKLX0KLQotLSAoVUlWaWV3ICopaGVhZGVy
Q29udGVudFZpZXcKLXsKLSAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKLQot
ICAgIENHRmxvYXQgdmlld1dpZHRoID0gQ0dSZWN0R2V0V2lkdGgoc2VsZi5jb250ZW50Vmlldy5i
b3VuZHMpOwotICAgIENHU2l6ZSBzaXplVGhhdEZpdHMgPSBbX2NvbnRleHRWaWV3IHNpemVUaGF0
Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXTsKLSAgICBbX2NvbnRleHRWaWV3IHNl
dEZyYW1lOkNHUmVjdE1ha2UoKHZpZXdXaWR0aCAtIHNpemVUaGF0Rml0cy53aWR0aCkgLyAyLCAw
LCBzaXplVGhhdEZpdHMud2lkdGgsIHNpemVUaGF0Rml0cy5oZWlnaHQpXTsKLSAgICBbX2NvbnRl
eHRWaWV3IGxheW91dFN1YnZpZXdzXTsKLSAgICByZXR1cm4gX2NvbnRleHRWaWV3LmdldCgpOwot
fQotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihQVUlDUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyICpjb250cm9sbGVyLCBpZCA8V0tRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGUpCi17Ci0gICAgLy8gQW4gaW50ZXJuYWwgY2xpZW50
IChlLmcuIFNhZmFyaSdzIG1vZGFsIHNoZWV0KSBtYXkgaGF2ZSBtb3ZlZCB0aGUgc3RhdHVzIGJh
ciBvZmZzY3JlZW4uCi0gICAgLy8gQmVmb3JlIHVwZGF0aW5nIHRoZSBzdGF0dXMgYmFyLCBtYWtl
IHN1cmUgdGhhdCB3ZSBicmluZyB0aGUgc3RhdHVzIGJhciBiYWNrIHRvIGl0cyBvcmlnaW5hbCBw
b3NpdGlvbi4KLSAgICBQVUlDU3RhdHVzQmFyICpzdGF0dXNCYXIgPSBbUFVJQ0FwcGxpY2F0aW9u
IHNoYXJlZFBVSUNBcHBsaWNhdGlvbl0uX3B1aWNTdGF0dXNCYXI7Ci0gICAgc3RhdHVzQmFyLmZy
YW1lID0gQ0dSZWN0IHsgQ0dQb2ludFplcm8sIHN0YXR1c0Jhci5mcmFtZS5zaXplIH07Ci0KLSAg
ICBQVUlDQXBwbGljYXRpb25TdGF0dXNCYXJJdGVtICppdGVtID0gY29udHJvbGxlci5wdWljX2Fw
cGxpY2F0aW9uU3RhdHVzQmFySXRlbTsKLSAgICBpdGVtLnRpdGxlID0gW2RlbGVnYXRlIGlucHV0
TGFiZWxUZXh0Rm9yVmlld0NvbnRyb2xsZXI6Y29udHJvbGxlcl07Ci0gICAgaXRlbS50aXRsZUNv
bG9yID0gW1VJQ29sb3Igc3lzdGVtQmx1ZUNvbG9yXTsKLSAgICBpdGVtLm5hdlVJQmFja0J1dHRv
bkRpc2FibGVkID0gTk87Ci0gICAgaXRlbS5zaG93TmF2aWdhdGlvblVJID0gWUVTOwotICAgIGl0
ZW0udGl0bGVJbnRlcmFjdGl2ZSA9IFlFUzsKLSAgICBbaXRlbSBjb21taXRDaGFuZ2VzQW5pbWF0
ZWQ6Tk9dOwotfQotCi0jZW5kaWYgLy8gSEFWRShQRVBQRVJfVUlfQ09SRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlj
a2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNGNjNWE2OTQwNGVh
ODUzZTVmZDVmNjBjMDI5ZmVlYmQ4MzNiYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS5oCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgSEFWRShQRVBQRVJfVUlfQ09S
RSkKKworI2ltcG9ydCAiUGVwcGVyVUlDb3JlU1BJLmgiCisKK0Bwcm90b2NvbCBXS1F1aWNrYm9h
cmRWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+CisKKy0gKE5TU3RyaW5nICopaW5wdXRMYWJlbFRleHRGb3JWaWV3Q29udHJvbGxlcjoo
UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CistIChOU1N0cmluZyAq
KWluaXRpYWxWYWx1ZUZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyICopY29udHJvbGxlcjsKKworQGVuZAorCisjZW5kaWYgLy8gSEFWRShQRVBQRVJfVUlfQ09S
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVj
dE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaAppbmRleCBjODEwMjA4NjY5YjQx
NjRhNTFkOTZiNzQ5OGMxMTg4MjgyODliZTM1Li5lNjlmYjAxMTUzMjUzNGNlZTFmOTIxODE1NmQz
MjQxZTc1ZjE1NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5oCkBAIC0y
NSw3ICsyNSw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1
aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyRGVsZWdhdGUuaCIKIAogQGNsYXNzIFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJv
bGxlcjsKIApAQCAtNDEsOSArNDEsMTEgQEAKIAogQGVuZAogCi1AaW50ZXJmYWNlIFdLU2VsZWN0
TWVudUxpc3RWaWV3Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgor
QGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIgOiBQVUlDUXVpY2tib2Fy
ZExpc3RWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZToo
aWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBOU19E
RVNJR05BVEVEX0lOSVRJQUxJWkVSOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdhdGU6
KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlIGRpY3Rh
dGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlvbk1vZGUgTlNfVU5BVkFJTEFCTEU7
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyIE5TX1VOQVZB
SUxBQkxFOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLU2VsZWN0TWVudUxp
c3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxl
ci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIubW0KaW5kZXggMmQzMDE5ZmQ3NDNhYmU1MzA5NjcxMjYzNzllYzFlOGVi
YzgyYzVmZC4uNzhkNGI3MzAwZWEyM2Y0Nzg2YzhiMWJlYmNhM2Q5Y2Y4ZGU5Mzc4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RW
aWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCkBAIC00Myw4ICs0MywxMSBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBQVUlDUXVpY2tib2FyZExpc3RTZWN0aW9uKSB7CiAgICAg
UFVJQ1F1aWNrYm9hcmRMaXN0U2VjdGlvbkNvbnRlbnRVbmF2YWlsYWJsZSwKIH07CiAKLS8vIEZJ
WE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81Nzgw
NzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLUBpbnRlcmZhY2UgV0tTZWxlY3RNZW51SXRlbUNlbGwg
OiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKK3N0YXRpYyBjb25zdGV4cHIgQ0dGbG9hdCBpdGVt
Q2VsbFRvcFRvTGFiZWxCYXNlbGluZSA9IDI2Oworc3RhdGljIGNvbnN0ZXhwciBDR0Zsb2F0IGl0
ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7CisKKy8vIEZJWE1FOiBUaGlzIGNhbiBiZSByZW1v
dmVkIHdoZW4gPHJkYXI6Ly9wcm9ibGVtLzU3ODA3NDQ1PiBsYW5kcyBpbiBhIGJ1aWxkLgorQGlu
dGVyZmFjZSBXS1NlbGVjdE1lbnVJdGVtQ2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxs
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJSW1hZ2VWaWV3ICppbWFnZVZpZXc7
CiBAZW5kCiAKQEAgLTUyLDcgKzU1LDcgQEAgQGltcGxlbWVudGF0aW9uIFdLU2VsZWN0TWVudUl0
ZW1DZWxsIHsKICAgICBSZXRhaW5QdHI8VUlJbWFnZVZpZXc+IF9pbWFnZVZpZXc7CiB9CiAKLS0g
KGluc3RhbmNldHlwZSkgaW5pdFdpdGhTdHlsZTooVUlUYWJsZVZpZXdDZWxsU3R5bGUpc3R5bGUg
cmV1c2VJZGVudGlmaWVyOihOU1N0cmluZyAqKXJldXNlSWRlbnRpZmllcgorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoU3R5bGU6KFVJVGFibGVWaWV3Q2VsbFN0eWxlKXN0eWxlIHJldXNlSWRlbnRp
ZmllcjooTlNTdHJpbmcgKilyZXVzZUlkZW50aWZpZXIKIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRXaXRoU3R5bGU6c3R5bGUgcmV1c2VJZGVudGlmaWVyOnJldXNlSWRlbnRpZmllcl0p
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNzEsMTEgKzc0LDIxIEBAIC0gKFVJSW1hZ2VWaWV3
ICopaW1hZ2VWaWV3CiAgICAgcmV0dXJuIF9pbWFnZVZpZXcuZ2V0KCk7CiB9CiAKKy0gKENHRmxv
YXQpdG9wVG9MYWJlbEJhc2VsaW5lU3BlY1ZhbHVlCit7CisgICAgcmV0dXJuIGl0ZW1DZWxsVG9w
VG9MYWJlbEJhc2VsaW5lOworfQorCistIChDR0Zsb2F0KWJhc2VsaW5lVG9Cb3R0b21TcGVjVmFs
dWUKK3sKKyAgICByZXR1cm4gaXRlbUNlbGxCYXNlbGluZVRvQm90dG9tOworfQorCiBAZW5kCiAK
ICNpZiBIQVZFKFFVSUNLQk9BUkRfQ09MTEVDVElPTl9WSUVXUykKIAotQGludGVyZmFjZSBXS1Nl
bGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogV0tRdWlja2JvYXJkTGlzdENvbGxlY3Rp
b25WaWV3SXRlbUNlbGwKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVt
Q2VsbCA6IFBVSUNRdWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlJbWFnZVZpZXcgKmltYWdlVmlldzsKIEBlbmQKIApA
QCAtMTAyLDYgKzExNSwxNiBAQCAtIChVSUltYWdlVmlldyAqKWltYWdlVmlldwogICAgIHJldHVy
biBfaW1hZ2VWaWV3LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNw
ZWNWYWx1ZQoreworICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKK30KKwor
LSAoQ0dGbG9hdCliYXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7CisgICAgcmV0dXJuIGl0ZW1D
ZWxsQmFzZWxpbmVUb0JvdHRvbTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gSEFWRShRVUlDS0JP
QVJEX0NPTExFQ1RJT05fVklFV1MpCkBAIC0xMTUsNyArMTM4LDcgQEAgQGR5bmFtaWMgZGVsZWdh
dGU7CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8V0tTZWxlY3RNZW51
TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0gICAgcmV0dXJuIFtzdXBl
ciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICByZXR1cm4gW3N1cGVyIGluaXRXaXRo
RGVsZWdhdGU6ZGVsZWdhdGUgZGljdGF0aW9uTW9kZTpQVUlDRGljdGF0aW9uTW9kZVRleHRdOwog
fQogCiAtICh2b2lkKXZpZXdEaWRMb2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5o
CmluZGV4IGUxMjkyZmJkMzNhNTdjZjY2N2E0N2VhNGUxMzI1MTQwMTljZWQ1NzIuLjhlYjJjMzY0
MmQ4OTFjN2Q1YTAxNGMyZjZiMjJmYTU3NTA2N2Y2MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JF
KQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQg
IldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgV0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKICAgICBXS051bWJlclBhZElucHV0
TW9kZU5vbmUsCkBAIC00MSwxNyArNDEsMjEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
V0tOdW1iZXJQYWRJbnB1dE1vZGUpIHsKIEBwcm90b2NvbCBXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlckRlbGVnYXRlIDxXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPgogCiAt
IChXS051bWJlclBhZElucHV0TW9kZSludW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9s
bGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0
cmluZyAqKXRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNBcnJheTxVSVRleHRTdWdnZXN0
aW9uICo+ICopdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tICh2b2lkKWxpc3RWaWV3Q29udHJv
bGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVj
dFRleHRTdWdnZXN0aW9uOihVSVRleHRTdWdnZXN0aW9uICopc3VnZ2VzdGlvbjsKLS0gKEJPT0wp
YWxsb3dzRGljdGF0aW9uSW5wdXRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJk
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoUFVJQ1RleHRJbnB1dENvbnRleHQgKil0
ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CistIChVSVZpZXcgKilpbnB1dENvbnRleHRWaWV3Rm9y
Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
OworLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tU
ZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClhbGxvd3NM
YW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoQk9PTClzaG91bGREaXNwbGF5SW5wdXRDb250
ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXI7CiAKIEBlbmQKIAotQGludGVyZmFjZSBXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciA6IFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlcgorQGludGVyZmFjZSBX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdD
b250cm9sbGVyCiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8V0tUZXh0
SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUgTlNfREVTSUdOQVRFRF9J
TklUSUFMSVpFUjsKLS0gKHZvaWQpcmVsb2FkVGV4dFN1Z2dlc3Rpb25zOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+KWRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6KFBVSUNEaWN0YXRpb25Nb2RlKWRpY3RhdGlv
bk1vZGUgTlNfVU5BVkFJTEFCTEU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb2RlcjooTlND
b2RlciAqKWNvZGVyIE5TX1VOQVZBSUxBQkxFOworLSAodm9pZCl1cGRhdGVUZXh0U3VnZ2VzdGlv
bnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dlc3Rpb25zOworLSAodm9pZCly
ZWxvYWRDb250ZXh0VmlldzsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDFiYjEyM2I5YjFiYzZkMTA3M2UwMmZlNjhl
OGNiMTM5YTkxMzdhZmQuLmQ0OTk0NTM3NDdhNDkwNjljYmZkY2M1YWQ0MmQ4YmU2OWZmMTNjNWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KQEAgLTMxLDExICszMSw5IEBA
CiAjaW1wb3J0ICJXS051bWJlclBhZFZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKLXN0YXRpYyBjb25zdCBDR0Zsb2F0IHRleHRTdWdnZXN0aW9uQnV0dG9uSGVp
Z2h0ID0gNDQ7Ci1zdGF0aWMgY29uc3QgQ0dGbG9hdCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpv
bnRhbE1hcmdpbiA9IDk7Ci1zdGF0aWMgTlNTdHJpbmcgKnRleHRTdWdnZXN0aW9uQ2VsbFJldXNl
SWRlbnRpZmllciA9IEAiV2ViS2l0UXVpY2tib2FyZFRleHRTdWdnZXN0aW9uQ2VsbCI7Ci0KIEBp
bXBsZW1lbnRhdGlvbiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciB7CisgICAgQk9PTCBf
Y29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKKyAgICBSZXRhaW5QdHI8VUlWaWV3PiBfY29udGV4dFZp
ZXc7CiAgICAgUmV0YWluUHRyPFdLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXI+IF9udW1iZXJQYWRW
aWV3Q29udHJvbGxlcjsKIH0KIApAQCAtNDMsMzIgKzQxLDQyIEBAIEBkeW5hbWljIGRlbGVnYXRl
OwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFdLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6UFVJQ0RpY3RhdGlvbk1v
ZGVUZXh0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBzZWxmLnRleHRDb250ZW50VHlw
ZSA9IFtzZWxmLmRlbGVnYXRlIHRleHRDb250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjpz
ZWxmXTsKKyAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKKyAgICBzZWxmLnRleHRJ
bnB1dENvbnRleHQgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdD
b250cm9sbGVyOnNlbGZdOwogICAgIHJldHVybiBzZWxmOwogfQogCi0tICh2b2lkKXZpZXdEaWRM
b2FkCistICh2b2lkKXJlbG9hZENvbnRleHRWaWV3CiB7Ci0gICAgW3N1cGVyIHZpZXdEaWRMb2Fk
XTsKLQotICAgIHNlbGYuaGVhZGVyVmlldy5oaWRkZW4gPSBZRVM7CisgICAgX2NvbnRleHRWaWV3
TmVlZHNVcGRhdGUgPSBZRVM7CisgICAgW3NlbGYgcmVsb2FkSGVhZGVyQ29udGVudFZpZXddOwog
fQogCi0tICh2b2lkKXdpbGxQcmVzZW50QXJvdWV0Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2Jv
YXJkQXJvdWV0Vmlld0NvbnRyb2xsZXIgKilxdWlja2JvYXJkCistICh2b2lkKXVwZGF0ZUNvbnRl
eHRWaWV3SWZOZWVkZWQKIHsKLSAgICBOU1N0cmluZyAqaW5pdGlhbFRleHQgPSBbc2VsZi5kZWxl
Z2F0ZSBpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAgICBpZiAoaW5pdGlh
bFRleHQubGVuZ3RoKQotICAgICAgICBbcXVpY2tib2FyZCBzZXRJbnB1dFRleHQ6aW5pdGlhbFRl
eHQgc2VsZWN0aW9uUmFuZ2U6TlNNYWtlUmFuZ2UoaW5pdGlhbFRleHQubGVuZ3RoLCAwKV07Cisg
ICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3OworICAgIGlmIChbc2VsZi5k
ZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJvbGxl
cjpzZWxmXSkKKyAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYuZGVsZWdhdGUgaW5wdXRDb250
ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOworICAgIGVsc2UKKyAgICAgICAgX2NvbnRl
eHRWaWV3ID0gbmlsOwogCi0gICAgcXVpY2tib2FyZC5taW5UZXh0TGVuZ3RoRm9yRW5hYmxpbmdB
Y2NlcHQgPSAwOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gTk87Cit9CisKKy0gKEJP
T0wpcmVxdWlyZXNOdW1lcmljSW5wdXQKK3sKKyAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgbnVt
ZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXSAhPSBXS051bWJlclBhZElu
cHV0TW9kZU5vbmU7CiB9CiAKIC0gKE5TQXJyYXkgKilhZGRpdGlvbmFsVHJheUJ1dHRvbnMKIHsK
LSAgICBpZiAoW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJv
bGxlcjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmUpCisgICAgaWYgKCFzZWxmLnJl
cXVpcmVzTnVtZXJpY0lucHV0KQogICAgICAgICByZXR1cm4gQFsgXTsKIAogI2lmIEhBVkUoUFVJ
Q19CVVRUT05fVFlQRV9QSUxMKQpAQCAtOTksOSArMTA3LDE0IEBAIC0gKHZvaWQpcHJlc2VudE51
bWJlclBhZFZpZXdDb250cm9sbGVyCiAgICAgW3NlbGYgcHJlc2VudFZpZXdDb250cm9sbGVyOl9u
dW1iZXJQYWRWaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpuaWxd
OwogfQogCi0tICh2b2lkKXJlbG9hZFRleHRTdWdnZXN0aW9ucworLSAodm9pZCl1cGRhdGVUZXh0
U3VnZ2VzdGlvbnM6KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXN1Z2dlc3Rpb25zCiB7
Ci0gICAgW3NlbGYgcmVsb2FkTGlzdEl0ZW1zXTsKKyAgICBhdXRvIG1lc3NhZ2VzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5PE5TQXR0cmlidXRlZFN0cmluZyAqPiBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpzdWdnZXN0aW9ucy5jb3VudF0pOworICAgIGZvciAoVUlUZXh0U3VnZ2VzdGlvbiAq
c3VnZ2VzdGlvbiBpbiBzdWdnZXN0aW9ucykgeworICAgICAgICBhdXRvIGF0dHJpYnV0ZWRTdHJp
bmcgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpz
dWdnZXN0aW9uLmRpc3BsYXlUZXh0XSk7CisgICAgICAgIFttZXNzYWdlcyBhZGRPYmplY3Q6YXR0
cmlidXRlZFN0cmluZy5nZXQoKV07CisgICAgfQorICAgIHNlbGYubWVzc2FnZXMgPSBtZXNzYWdl
cy5nZXQoKTsKIH0KIAogLSAodm9pZCllbnRlclRleHQ6KE5TU3RyaW5nICopdGV4dApAQCAtMTEx
LDEwOSArMTI0LDQ2IEBAIC0gKHZvaWQpZW50ZXJUZXh0OihOU1N0cmluZyAqKXRleHQKIAogI3By
YWdtYSBtYXJrIC0gUXVpY2tib2FyZCBzdWJjbGFzc2luZwogCi0tIChCT09MKXN1cHBvcnRzRGlj
dGF0aW9uSW5wdXQKKy0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZpZXdIZWlnaHQKIHsKLSAgICBy
ZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JMaXN0Vmlld0NvbnRy
b2xsZXI6c2VsZl07Ci19Ci0KLS0gKHZvaWQpZGlkU2VsZWN0TGlzdEl0ZW1BdEluZGV4UGF0aDoo
TlNJbmRleFBhdGggKilpbmRleFBhdGgKLXsKLSAgICBbc2VsZiBfZGlkU2VsZWN0TGlzdEl0ZW06
aW5kZXhQYXRoLnJvd107Ci19Ci0KLS8vIEZJWE1FOiBUaGlzIG1ldGhvZCBjYW4gYmUgcmVtb3Zl
ZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMgaW4gYSBidWlsZC4KLS0gKHZv
aWQpZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyCi17Ci0gICAgW3NlbGYg
X2RpZFNlbGVjdExpc3RJdGVtOml0ZW1OdW1iZXJdOwotfQotCi0tICh2b2lkKV9kaWRTZWxlY3RM
aXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIKLXsKLSAgICBOU0FycmF5PFVJVGV4dFN1Z2dl
c3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9IFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9u
c0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKLSAgICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNv
dW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGl0ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIFtzZWxmIHVw
ZGF0ZUNvbnRleHRWaWV3SWZOZWVkZWRdOwogCi0gICAgW3NlbGYuZGVsZWdhdGUgbGlzdFZpZXdD
b250cm9sbGVyOnNlbGYgZGlkU2VsZWN0VGV4dFN1Z2dlc3Rpb246W3RleHRTdWdnZXN0aW9ucyBv
YmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdXTsKKyAgICByZXR1cm4gW19jb250ZXh0VmlldyBzaXpl
VGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3VuZHMuc2l6ZV0uaGVpZ2h0OwogfQogCi0tIChO
U0ludGVnZXIpbnVtYmVyT2ZMaXN0SXRlbXMKKy0gKFVJVmlldyAqKWhlYWRlckNvbnRlbnRWaWV3
CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3
Q29udHJvbGxlcjpzZWxmXS5jb3VudDsKLX0KKyAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lm
TmVlZGVkXTsKIAotLSAoQ0dGbG9hdCloZWlnaHRGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1O
dW1iZXIgd2lkdGg6KENHRmxvYXQpd2lkdGgKLXsKLSAgICByZXR1cm4gdGV4dFN1Z2dlc3Rpb25C
dXR0b25IZWlnaHQ7CisgICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0aChzZWxm
LmNvbnRlbnRWaWV3LmJvdW5kcyk7CisgICAgQ0dTaXplIHNpemVUaGF0Rml0cyA9IFtfY29udGV4
dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNpemVdOworICAgIFtf
Y29udGV4dFZpZXcgc2V0RnJhbWU6Q0dSZWN0TWFrZSgodmlld1dpZHRoIC0gc2l6ZVRoYXRGaXRz
LndpZHRoKSAvIDIsIDAsIHNpemVUaGF0Rml0cy53aWR0aCwgc2l6ZVRoYXRGaXRzLmhlaWdodCld
OworICAgIHJldHVybiBfY29udGV4dFZpZXcuZ2V0KCk7CiB9CiAKLS8vIEZJWE1FOiBUaGlzIG1l
dGhvZCBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4gbGFuZHMg
aW4gYSBidWlsZC4KLS0gKFBVSUNRdWlja2JvYXJkTGlzdEl0ZW1DZWxsICopY2VsbEZvckxpc3RJ
dGVtOihOU0ludGVnZXIpaXRlbU51bWJlcgorLSAoQk9PTClzaG91bGRTaG93TGFuZ3VhZ2VCdXR0
b24KIHsKLSAgICBOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKnRleHRTdWdnZXN0aW9ucyA9
IFtzZWxmLmRlbGVnYXRlIHRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxm
XTsKLSAgICBpZiAodGV4dFN1Z2dlc3Rpb25zLmNvdW50IDw9IHN0YXRpY19jYXN0PE5TVUludGVn
ZXI+KGl0ZW1OdW1iZXIpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIH0KLQotICAgIFVJVGV4dFN1Z2dlc3Rpb24gKnRleHRTdWdnZXN0
aW9uID0gW3RleHRTdWdnZXN0aW9ucyBvYmplY3RBdEluZGV4Oml0ZW1OdW1iZXJdOwotICAgIGF1
dG8gcmV1c2FibGVDZWxsID0gcmV0YWluUHRyKFtzZWxmLmxpc3RWaWV3IGRlcXVldWVSZXVzYWJs
ZUNlbGxXaXRoSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXJdKTsK
LSAgICBpZiAoIXJldXNhYmxlQ2VsbCkgewotICAgICAgICByZXVzYWJsZUNlbGwgPSBhZG9wdE5T
KFtbV0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxsIGFsbG9jXSBpbml0V2l0aFN0eWxlOlVJVGFibGVW
aWV3Q2VsbFN0eWxlRGVmYXVsdCByZXVzZUlkZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25DZWxsUmV1
c2VJZGVudGlmaWVyXSk7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwgaXRlbUxhYmVsXS5udW1iZXJP
ZkxpbmVzID0gMTsKLSAgICAgICAgW3JldXNhYmxlQ2VsbCBpdGVtTGFiZWxdLmxpbmVCcmVha01v
ZGUgPSBOU0xpbmVCcmVha0J5VHJ1bmNhdGluZ1RhaWw7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwg
aXRlbUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0ZvclRydW5jYXRpb24gPSBZRVM7Ci0g
ICAgfQotCi0gICAgQ0dGbG9hdCB2aWV3V2lkdGggPSBDR1JlY3RHZXRXaWR0aChzZWxmLmxpc3RW
aWV3LmJvdW5kcyk7Ci0gICAgW3JldXNhYmxlQ2VsbCBjb25maWd1cmVGb3JUZXh0OnRleHRTdWdn
ZXN0aW9uLmRpc3BsYXlUZXh0IHdpZHRoOnZpZXdXaWR0aF07Ci0KLSAgICAvLyBUaGUgZGVmYXVs
dCBiZWhhdmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2VzIHRoZSB0ZXh0IGxh
YmVsIHRvIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBBZGp1c3QgZm9yIHRo
aXMgYnkgc2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBmaXQgdGhlIGJvdW5k
cyBvZiB0aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0uZnJhbWUgPSBVSVJl
Y3RJbnNldChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAsIHRleHRTdWdnZXN0
aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRh
bE1hcmdpbik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFzZSgpOworICAgIHJl
dHVybiBbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29u
dHJvbGxlcjpzZWxmXTsKIH0KIAotLSAoTlNTdHJpbmcgKilsaXN0SXRlbUNlbGxSZXVzZUlkZW50
aWZpZXIKKy0gKEJPT0wpc3VwcG9ydHNEaWN0YXRpb25JbnB1dAogewotICAgIHJldHVybiB0ZXh0
U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXI7CisgICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRl
IGFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwogfQogCi0j
aWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi0KLS0gKENsYXNzKWxpc3RJdGVt
Q2VsbENsYXNzCistIChCT09MKXNob3VsZFNob3dUcmF5VmlldwogewotICAgIHJldHVybiBbV0tR
dWlja2JvYXJkTGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwgY2xhc3NdOworICAgIHJldHVybiBz
ZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCi0tIChQVUlDUXVpY2tib2FyZExpc3RDb2xs
ZWN0aW9uVmlld0l0ZW1DZWxsICopaXRlbUNlbGxGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1O
dW1iZXIgZm9ySW5kZXhQYXRoOihOU0luZGV4UGF0aCAqKWluZGV4UGF0aAorLSAoQk9PTClzaG91
bGRTaG93VGV4dEZpZWxkCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0
U3VnZ2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNf
Y2FzdDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRleHRTdWdnZXN0aW9u
ICp0ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVt
YmVyXTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2VsZi5jb2xsZWN0aW9u
VmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aFJldXNlSWRlbnRpZmllcjp0ZXh0U3VnZ2VzdGlv
bkNlbGxSZXVzZUlkZW50aWZpZXIgZm9ySW5kZXhQYXRoOmluZGV4UGF0aF0pOwotCi0gICAgW3Jl
dXNhYmxlQ2VsbCBib2R5TGFiZWxdLm51bWJlck9mTGluZXMgPSAxOwotICAgIFtyZXVzYWJsZUNl
bGwgYm9keUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWls
OwotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5hbGxvd3NEZWZhdWx0VGlnaHRlbmluZ0Zv
clRydW5jYXRpb24gPSBZRVM7Ci0gICAgW3JldXNhYmxlQ2VsbCBzZXRUZXh0OnRleHRTdWdnZXN0
aW9uLmRpc3BsYXlUZXh0XTsKLQotICAgIC8vIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIC1jb25m
aWd1cmVGb3JUZXh0OndpZHRoOiBjYXVzZXMgdGhlIHRleHQgbGFiZWwgdG8gcnVuIG9mZiB0aGUg
ZW5kIG9mIHRoZSBjZWxsLgotICAgIC8vIEFkanVzdCBmb3IgdGhpcyBieSBzaHJpbmtpbmcgdGhl
IGxhYmVsIHdpZHRoIHRvIGFjdHVhbGx5IGZpdCB0aGUgYm91bmRzIG9mIHRoZSBjZWxsLgotICAg
IFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5mcmFtZSA9IFVJUmVjdEluc2V0KFtyZXVzYWJsZUNl
bGwgY29udGVudFZpZXddLmJvdW5kcywgMCwgdGV4dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxN
YXJnaW4sIDAsIHRleHRTdWdnZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luKTsKLSAgICByZXR1
cm4gcmV1c2FibGVDZWxsLmF1dG9yZWxlYXNlKCk7CisgICAgcmV0dXJuICFzZWxmLnJlcXVpcmVz
TnVtZXJpY0lucHV0OwogfQogCi0jZW5kaWYgLy8gSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05f
VklFV1MpCi0KIC0gKEJPT0wpc3VwcG9ydHNBcm91ZXRJbnB1dAogewotICAgIHJldHVybiBbc2Vs
Zi5kZWxlZ2F0ZSBudW1lcmljSW5wdXRNb2RlRm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdID09
IFdLTnVtYmVyUGFkSW5wdXRNb2RlTm9uZTsKKyAgICByZXR1cm4gIXNlbGYucmVxdWlyZXNOdW1l
cmljSW5wdXQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKaW5kZXggNjU1
OGNkZGU4MjJjYmQ5NWZiYjA3MjkzYTZkYmYzZjg2Y2NjNWZhMy4uOWE3ZWExMDBkZWU0MTZhOWJl
Njc4YWJlNzI0NTAyOTU0MGE1ZGIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGltZVBpY2tlclZpZXdDb250cm9sbGVyLmgKQEAg
LTI1LDcgKzI1LDcgQEAKIAogI2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCiAKLSNpbXBvcnQgIldL
UXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIgogCiBAaW50ZXJmYWNlIFdLVGltZVBpY2tlclZpZXdDb250
cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlcgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1OTljMWZlOTgzYWZiZThm
YjVhYzMyZDdiMTQ4NDY2ZjUzNzk0ODdmLi45Mjc1MjUzNjgxMTYzMjA4NzE0YzdiNGFmMjJkNTlh
MWZhYTQwNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTIwMzcsNyArMjAzNyw3IEBACiAJCUY0Q0IwOUU1MjI1RDVBMDkwMDg5MTQ4
NyAvKiBXZWJzaXRlTWVkaWFTb3VyY2VQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0IwOUU0MjI1RDVBMDMwMDg5MTQ4NyAvKiBXZWJzaXRl
TWVkaWFTb3VyY2VQb2xpY3kuaCAqLzsgfTsKIAkJRjRDRjFFOUQyNUU0MERDQzAwMEY5RDczIC8q
IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRjFFOUIyNUU0MERDQzAwMEY5RDczIC8q
IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5oICovOyB9OwogCQlGNEQ1RjUx
RDIwNjA4N0ExMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVGNTE5MjA2MDg3
QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovOyB9OwotCQlG
NEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEQ1RjUx
QjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggKi87
IH07CisJCUY0RDVGNTFGMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS5oICovOyB9OwogCQlGNERCNTRFNjIzMTlFNzMzMDA5RTMxNTUgLyogV0tIaWdo
bGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKIAkJRjRFQzk0RTMyMzU2
Q0M1NzAwMEJCNjE0IC8qIEFwcGxpY2F0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RDA0RTI4MjFGN0M3M0QwMDc2NzQxRCAv
KiBBcHBsaWNhdGlvblNlcnZpY2VzU1BJLmggKi87IH07CiAJCUY0RkUwQTNCMjQ2MzJCNjAwMDI2
MzFFMSAvKiBDb2NvYUNvbG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEZFMEEzQTI0NjMyQjEwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oICovOyB9
OwpAQCAtNjAwMSw4ICs2MDAxLDcgQEAKIAkJRjRDRjFFOUMyNUU0MERDQzAwMEY5RDczIC8qIEdl
c3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdlc3R1cmVSZWNvZ25pemVyQ29uc2lzdGVuY3lFbmZvcmNl
ci5tbTsgcGF0aCA9IGlvcy9HZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAv
KiBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zv
cm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0RDVGNTFBMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlG
NEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNEQ1RjUxQzIwNjA4N0ExMDAz
OEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
Lm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8q
IFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oOyBwYXRo
ID0gaW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTQyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGln
aGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tIaWdobGlnaHRMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5oOyBwYXRo
ID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjREQjU0RTUyMzE5RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxp
Z2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1t
OyBwYXRoID0gaW9zL1dLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RjU5QUQzMjA2NUE1QzkwMDZDQUE0NiAvKiBX
S1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW07IHBhdGgg
PSBpb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTEzNzMsOCArMTEzNzIsNyBAQAogCQkJCTJFQTdCM0Q0MjAy
NkNGMjMwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXcubW0gKi8sCiAJCQkJMkVBN0IzQ0YyMDI2
Q0VGODAwOUNFNUFDIC8qIFdLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXIuaCAqLywKIAkJCQkyRUE3
QjNEMDIwMjZDRUY4MDA5Q0U1QUMgLyogV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxlci5tbSAqLywK
LQkJCQlGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyLmggKi8sCi0JCQkJRjRENUY1MUMyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2Fy
ZExpc3RWaWV3Q29udHJvbGxlci5tbSAqLywKKwkJCQlGNEQ1RjUxQjIwNjA4N0ExMDAzOEJCQTgg
LyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oICovLAogCQkJCUY0RjU5QUQ0
MjA2NUE1Q0EwMDZDQUE0NiAvKiBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCAqLywK
IAkJCQlGNEY1OUFEMzIwNjVBNUM5MDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250
cm9sbGVyLm1tICovLAogCQkJCUY0RDVGNTE5MjA2MDg3QTAwMDM4QkJBOCAvKiBXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlci5oICovLApAQCAtMTI5MTIsNyArMTI5MTAsNyBAQAogCQkJCTUx
MkY1OEZDMTJBODhBNTQwMDYyOTUzMCAvKiBXS1Byb3RlY3Rpb25TcGFjZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTI3MkQ0QzkxRTczNUYwOTAwRUI0MjkwIC8qIFdLUHJvdGVjdGlvblNwYWNlTlMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3Rl
Y3Rpb25TcGFjZVR5cGVzLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNEQ1RjUxRjIwNjA4N0ExMDAz
OEJCQTggLyogV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyogV0tRdWlja2JvYXJkVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMDFCQ0QxOTA1RDU0OTAwQzlDNDVG
IC8qIFdLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTlFMzI5QjE4MjJFMUNDMDBGNUQwNEMgLyogV0tSZW1vdGVPYmplY3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBOUUzMjlGMTgyMkZFREQwMEY1RDA0QyAvKiBXS1JlbW90ZU9iamVjdENv
ZGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VM
b2cgYi9XZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nCmluZGV4IGM5ZDFiNTljN2I3ZmIyMjViNjVl
YWQ3MjQ4NzQwZDU4YjE2M2JmZWUuLjBhNDY2MmY1ZDYwYmFjNDI1N2ZjMmE2YTlhMTgwYTI4ODFm
ZDczYmIgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
TGlicmFyaWVzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgKiBXZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1Bl
cHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZDoKKyAgICAgICAgKiBXZWJLaXRQ
cml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy84L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVw
cGVyVUlDb3JlLnRiZDoKKwogMjAyMS0wNi0xNSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW3R2T1MgMTVdIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0CmRp
ZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dh
dGNob3MvNy9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQgYi9XZWJLaXRM
aWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvNy9QZXBwZXJVSUNv
cmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQKaW5kZXggZjk0MWE5ZWFiNzVjZDBiMTQ4ZjQ0
OWE1NzM5ODAyZmVjYmZhNDI3Ni4uYjcxNDc3NDE0MjJhOWU4MDk1Mjk2NzEyYzgzOWYwNTI1NTk0
YzljMiAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtT
dHVicy93YXRjaG9zLzcvUGVwcGVyVUlDb3JlLmZyYW1ld29yay9QZXBwZXJVSUNvcmUudGJkCisr
KyBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83
L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZApAQCAtOCw1ICs4LDUgQEAg
ZXhwb3J0czoKICAgICBvYmpjLWNsYXNzZXM6ICAgIFsgUFVJQ1F1aWNrYm9hcmRMaXN0VHJheUJ1
dHRvbiwgUFVJQ0FjdGlvbkdyb3VwLCBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbCwgUFVJQ0Fj
dGlvbkNvbnRyb2xsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIFBVSUNDcm93bklucHV0U2Vx
dWVuY2VyLCBQVUlDUGlja2VyVmlldywgUFVJQ1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwsIFBVSUNR
dWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLAogICAgICAgICAgICAgICAgICAgICAgICBQVUlD
QXBwbGljYXRpb24sIFBVSUNSZXNvdXJjZXMsIFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIs
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyLCBQVUlDUGlja2VyVmlldyBdCisgICAgICAg
ICAgICAgICAgICAgICAgIFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIsIFBVSUNQaWNrZXJW
aWV3LCBQVUlDVGV4dElucHV0Q29udGV4dCwgUFVJQ1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRy
b2xsZXIgXQogLi4uCmRpZmYgLS1naXQgYS9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZy
YW1ld29ya1N0dWJzL3dhdGNob3MvOC9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29y
ZS50YmQgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNo
b3MvOC9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQKaW5kZXggZGViMzZm
ZGMxODU2ZDQ0ODA1YTVjNDQ4MjQ5MzdjYzQ1YWE2Mzc1Ni4uYzY1NDQ0ODBkNjVmZjRiOTc1MjBm
NmM0YjVjNjhlNGEyNTQ1YTAwZCAxMDA2NDQKLS0tIGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFBy
aXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzgvUGVwcGVyVUlDb3JlLmZyYW1ld29yay9QZXBw
ZXJVSUNvcmUudGJkCisrKyBiL1dlYktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3Jr
U3R1YnMvd2F0Y2hvcy84L1BlcHBlclVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZApA
QCAtOSw1ICs5LDUgQEAgZXhwb3J0czoKICAgICAgICAgICAgICAgICAgICAgICAgUFVJQ0Nyb3du
SW5wdXRTZXF1ZW5jZXIsIFBVSUNQaWNrZXJWaWV3LCBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2Vs
bCwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgIFBVSUNBcHBsaWNhdGlvbiwgUFVJQ1Jlc291cmNlcywgUFVJQ1F1aWNrYm9hcmRWaWV3Q29u
dHJvbGxlciwgUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgIFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIsIFBVSUNQaWNrZXJWaWV3LCBQ
VUlDVGV4dElucHV0Q29udGV4dCwgUFVJQ1F1aWNrYm9hcmRDb250cm9sbGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICBQVUlDUXVpY2tib2FyZFJlbW90ZVZpZXdDb250cm9sbGVyIF0KKyAgICAg
ICAgICAgICAgICAgICAgICAgUFVJQ1F1aWNrYm9hcmRSZW1vdGVWaWV3Q29udHJvbGxlciwgUFVJ
Q1F1aWNrYm9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIgXQogLi4uCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431602</attachid>
            <date>2021-06-16 14:17:46 -0700</date>
            <delta_ts>2021-06-16 15:18:46 -0700</delta_ts>
            <desc>Fix more conflicts</desc>
            <filename>bug-226988-20210616141745.patch</filename>
            <type>text/plain</type>
            <size>56150</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmM2U4MzExZjc1ZjFiNmZm
Yzg1NWE4MzYxMTI4ZTRhYzA2N2JhYjAuLmJjZGI0YTM4NDU1MWE5MDU3NzcxYWY2YjgxNGRmZDQz
YWY2NDg0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ1IEBACisyMDIxLTA2LTE0ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFt3YXRjaE9TXSBSZWVu
YWJsZSBtb2Rlcm4gdGV4dCBpbnB1dCBVSSBmb3Igbm9uLW51bWVyaWMgdGV4dCBpbnB1dCB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTg4
CisgICAgICAgIHJkYXI6Ly83ODEwMjk1MworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgUmVmYWN0b3IgdGV4dCBpbnB1dCBsb2dpYyBvbiB3YXRjaE9TIHN1Y2gg
dGhhdCB3ZSdyZSBhYmxlIHRvIHByZXNlbnQgdGhlIG5ldyAoIm1vZGVybiIpIFVJIGZvciBzY3Jp
YmJsZSB0ZXh0CisgICAgICAgIGlucHV0IG9uIHdhdGNoT1MgOCwgcmF0aGVyIHRoYW4gbGVnYWN5
IChpbi1wcm9jZXNzKSBzY3JpYmJsZSBVSS4gT3ZlcmFsbCwgdGhpcyBwYXRjaCByZW1vdmVzCisg
ICAgICAgIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciBhbHRvZ2V0aGVyLiBUaGlzIGhh
ZCB0d28gc3ViY2xhc3NlczogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyICh1c2VkIGZv
cgorICAgICAgICBmb2N1c2VkIHNpbmdsZSBhbmQgbXVsdGlwbGUgc2VsZWN0IGVsZW1lbnRzKSBh
bmQgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKHVzZWQgZm9yIHRleHQgaW5wdXQgdHlw
ZXMpLgorICAgICAgICBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIgbm93IGluaGVyaXRz
IGRpcmVjdGx5IGZyb20gUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIsIGFuZAorICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBub3cgaW5oZXJpdHMgZnJvbSBQVUlD
UXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlcjsgdGhpcyBpbmhlcml0YW5jZSBmcm9tCisg
ICAgICAgIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIGluc3RlYWQgb2YgUFVJ
Q1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIgYWxsb3dzIHRoZQorICAgICAgICBXS1RleHRJ
bnB1dExpc3RWaWV3Q29udHJvbGxlciB0byBzaG93IHRleHQgc3VnZ2VzdGlvbnMgdXNpbmcgYC1z
ZXRNZXNzYWdlczpgIG9uCisgICAgICAgIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9s
bGVyLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gY3VzdG9tIFdlYktpdCBjb2RlIHRvIGluc2VydCB0
ZXh0IHN1Z2dlc3Rpb25zLgorCisgICAgICAgIFRoaXMgbWVhbnMgdGhhdCB3ZSBtb3ZlIHRoZSBm
b2xsb3dpbmcgcGllY2VzIG9mIGZ1bmN0aW9uYWxpdHkgb3V0IG9mIFdLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlciwgYW5kIGludG8KKyAgICAgICAgZWl0aGVyIFdLU2VsZWN0TWVudUxpc3RW
aWV3Q29udHJvbGxlciBvciBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlcjoKKworICAgICAg
ICAxLiBTdXBwb3J0IGZvciBpbnNlcnRpbmcgYW5kIHVwZGF0aW5nIGNvbnRleHQgdmlld3MgKGku
ZS4gdGhlIGRvbWFpbiBuYW1lIGhlYWRlciB2aWV3IGluIFF1aWNrYm9hcmQpID0+CisgICAgICAg
IFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIDIuIExvZ2ljIGZvciBk
ZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB3ZSBzaG91bGQgc2hvdyBsYW5ndWFnZSBzZWxlY3Rp
b24gVUkgPT4gV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuCisKKyAgICAgICAgMy4gU3Vw
cG9ydCBmb3IgbGF5aW5nIG91dCBjdXN0b20gY29sbGVjdGlvbiB2aWV3IGNlbGxzIGluIFF1aWNr
Ym9hcmQgPT4gV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgICogUGxh
dGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmg6CisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBjcmVhdGVRdWlja2JvYXJkVGV4dElucHV0
Q29udGV4dF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9jcmVhdGVRdWlja2JvYXJkQ29u
dHJvbGxlcjpdKToKKworICAgICAgICBSZWZhY3RvciBsb2dpYyB0byBjcmVhdGUgYSBQVUlDVGV4
dElucHV0Q29udGV4dCBmcm9tIHRoZSBjdXJyZW50IGZvY3VzZWQgZWxlbWVudCBpbmZvcm1hdGlv
biBvdXQgaW50byBhIHNlcGFyYXRlCisgICAgICAgIGhlbHBlciBtZXRob2QsIGAtY3JlYXRlUXVp
Y2tib2FyZFRleHRJbnB1dENvbnRleHRgLCBhbmQgdXNlIGl0IHdoZW4gYm90aCBkaXJlY3RseSBs
YXVuY2hpbmcgaW50bworICAgICAgICBQVUlDUXVpY2tib2FyZENvbnRyb2xsZXIgYW5kIFdLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLgorCisgICAgICAgIChjYW5Vc2VRdWlja2JvYXJkQ29u
dHJvbGxlckZvcik6CisKKyAgICAgICAgUmVtb3ZlIGEgY29tbWVudCwgbm93IHRoYXQgd2UgaW50
ZW5kIHRvIGNvbnRpbnVlIHVzaW5nIFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGZvciBu
b24ta2V5Y2hhaW4tQXV0b0ZpbGwtCisgICAgICAgIGNvbXBhdGlibGUgdGV4dCBmaWVsZHMgbW92
aW5nIGZvcndhcmQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBmb2N1c2VkRm9ybUNvbnRy
b2xsZXJEaWRVcGRhdGVTdWdnZXN0aW9uczpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBh
bGxvd3NMYW5ndWFnZVNlbGVjdGlvbkZvckxpc3RWaWV3Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyB0ZXh0SW5wdXRDb250ZXh0Rm9yTGlzdFZpZXdDb250cm9sbGVyOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRDb250ZW50VHlwZUZvclRlc3RpbmddKToK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyB2aWV3Q29udHJvbGxlcjppbnB1dENvbnRleHRWaWV3
SGVpZ2h0Rm9yU2l6ZTpdKTogRGVsZXRlZC4KKworICAgICAgICBSZW1vdmUgdGhpcyBkZWxlZ2F0
ZSBtZXRob2QsIHdoaWNoIHdhcyAoZWZmZWN0aXZlbHkpIHVudXNlZCBzaW5jZSB3ZSBqdXN0IGFz
ayBmb3IKKyAgICAgICAgYC1pbnB1dENvbnRleHRWaWV3Rm9yVmlld0NvbnRyb2xsZXI6YCBmcm9t
IHRoZSBpbnB1dCBkZWxlZ2F0ZSBhbnl3YXlzLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcg
YWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25NZW51Rm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxl
dGVkLgorCisgICAgICAgIFJlbmFtZSB0aGlzIHRvIGAtYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25G
b3JMaXN0Vmlld0NvbnRyb2xsZXI6YC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IHRleHRD
b250ZW50VHlwZUZvckxpc3RWaWV3Q29udHJvbGxlcjpdKTogRGVsZXRlZC4KKworICAgICAgICBS
ZXBsYWNlIHRoaXMgd2l0aCBgLXRleHRJbnB1dENvbnRleHRGb3JMaXN0Vmlld0NvbnRyb2xsZXI6
YCwgd2hpY2ggcmV0dXJucyBhIHdob2xlIFBVSUNUZXh0SW5wdXRDb250ZXh0IGluc3RlYWQKKyAg
ICAgICAgb2YganVzdCBhIHRleHQgY29udGVudCB0eXBlLgorCisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgdGV4dFN1Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVyOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGxpc3RWaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RUZXh0
U3VnZ2VzdGlvbjpdKTogRGVsZXRlZC4KKworICAgICAgICBSZW1vdmUgc2V2ZXJhbCBkZWxlZ2F0
ZSBtZXRob2RzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbToKKyAgICAgICAg
KC1bV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIgdmlld1dpbGxBcHBlYXI6XSk6CisKKyAgICAg
ICAgUmVtb3ZlIHNvbWUgKGRlZnVuY3QpIGxvZ2ljIGZvciBvdmVycmlkaW5nIHRoZSBzdGF0dXMg
YmFyIHdoZW4gc2hvd2luZyBRdWlja2JvYXJkIGlucHV0IHZpZXcgY29udHJvbGxlcnMuIFRoaXMK
KyAgICAgICAgc3RhdHVzIGJhciBtZWNoYW5pc20gKHdoaWNoIHdhcyBwcmV2aW91c2x5IHVzZWQg
dG8gc2hvdyBsYWJlbCB0ZXh0IGZvciBmb3JtIGNvbnRyb2xzKSBoYXNuJ3Qgd29ya2VkIHNpbmNl
CisgICAgICAgIHdhdGNoT1MgNiwgYW5kIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgaW4gYSB3
YXkgdGhhdCBkb2Vzbid0IHVzZSBQVUlDU3RhdHVzQmFyR2xvYmFsQ29udGV4dFZpZXdBc3NlcnRp
b24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3
Q29udHJvbGxlci5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIu
aC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlz
dFZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVJdGVtQ2VsbCB0b3BU
b0xhYmVsQmFzZWxpbmVTcGVjVmFsdWVdKToKKyAgICAgICAgKC1bV0tTZWxlY3RNZW51SXRlbUNl
bGwgYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZV0pOgorICAgICAgICAoLVtXS1NlbGVjdE1lbnVD
b2xsZWN0aW9uVmlld0l0ZW1DZWxsIHRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZV0pOgorICAg
ICAgICAoLVtXS1NlbGVjdE1lbnVDb2xsZWN0aW9uVmlld0l0ZW1DZWxsIGJhc2VsaW5lVG9Cb3R0
b21TcGVjVmFsdWVdKToKKyAgICAgICAgKC1bV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVy
IGluaXRXaXRoRGVsZWdhdGU6XSk6CisKKyAgICAgICAgU2VlIGFib3ZlIGNvbW1lbnQgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4
dElucHV0TGlzdFZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RW
aWV3Q29udHJvbGxlciBpbml0V2l0aERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciByZWxvYWRDb250ZXh0Vmlld10pOgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXSk6CisK
KyAgICAgICAgTW92ZSBsb2dpYyBmb3Igc2hvd2luZyBhbmQgdXBkYXRpbmcgdGhlIGNvbnRleHQg
dmlldyBvdXQgb2YgV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLCBhbmQgaW50bworICAg
ICAgICBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci4gU2VlIGNvbW1lbnRzIGFib3ZlLgor
CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHJlcXVpcmVzTnVtZXJp
Y0lucHV0XSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGFkZGl0
aW9uYWxUcmF5QnV0dG9uc10pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciB1cGRhdGVUZXh0U3VnZ2VzdGlvbnM6XSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyIGhlYWRlckNvbnRlbnRWaWV3SGVpZ2h0XSk6CisgICAgICAgICgtW1dL
VGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIGhlYWRlckNvbnRlbnRWaWV3XSk6CisgICAgICAg
ICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyIHNob3VsZFNob3dMYW5ndWFnZUJ1dHRv
bl0pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBzdXBwb3J0c0Rp
Y3RhdGlvbklucHV0XSk6CisgICAgICAgICgtW1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
IHNob3VsZFNob3dUcmF5Vmlld10pOgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBzaG91bGRTaG93VGV4dEZpZWxkXSk6CisKKyAgICAgICAgT3ZlcnJpZGUgdGhpcyBh
bmQgcmV0dXJuIFlFUyBmb3IgdGV4dCBpbnB1dCB0eXBlcyB0aGF0IGRvbid0IHJlcXVpcmUgYW4g
YWRkaXRpb25hbCBudW1lcmljIGlucHV0IHRyYXkgYnV0dG9uLgorICAgICAgICBUaGlzIGFsbG93
cyBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciB0byBzaG93IGEgbmF0aXZlIHRl
eHQgZmllbGQgY29udGFpbmluZyB0aGUgaW5wdXQgdGV4dCBpbnNpZGUKKyAgICAgICAgcXVpY2ti
b2FyZCwgd2hpY2ggKHdoZW4gdGFwcGVkKSBwcmVzZW50cyBtb2Rlcm4gdGV4dCBpbnB1dCBVSS4K
KworICAgICAgICBTaW5jZSBzaG93aW5nIHRoZSB0ZXh0IGZpZWxkIGlzIGFwcGFyZW50bHkgbXV0
dWFsbHkgZXhjbHVzaXZlIHRvIHNob3dpbmcgYSB0cmF5IHZpZXcsIHdlIGFkZGl0aW9uYWxseSBv
dmVycmlkZQorICAgICAgICBgLXNob3VsZFNob3dUcmF5Vmlld2AgYW5kIHJldHVybiBOTyBmb3Ig
bm9uLW51bWVyaWMgdGV4dCBpbnB1dHMuCisKKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmll
d0NvbnRyb2xsZXIgc3VwcG9ydHNBcm91ZXRJbnB1dF0pOgorICAgICAgICAoLVtXS1RleHRJbnB1
dExpc3RWaWV3Q29udHJvbGxlciB2aWV3RGlkTG9hZF0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciB3aWxsUHJlc2VudEFyb3VldFZpZXdDb250cm9s
bGVyOl0pOiBEZWxldGVkLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gbmVlZCB0byBvdmVycmlkZSB0
aGlzIGRlbGVnYXRlIG1ldGhvZCBhbnltb3JlLCBzaW5jZSB0aGUgUFVJQ1RleHRJbnB1dENvbnRl
eHQncyBgLWluaXRpYWxUZXh0YCBpcworICAgICAgICBzdWZmaWNpZW50IHRvIGVuc3VyZSB0aGF0
IHRoZSBzY3JpYmJsZSB0ZXh0IGlucHV0IFVJIGlzIHByZXBvcHVsYXRlZCB3aXRoIHRoZSBmb2N1
c2VkIHRleHQgZmllbGQncyBpbml0aWFsIHRleHQKKyAgICAgICAgY29udGVudC4KKworICAgICAg
ICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciByZWxvYWRUZXh0U3VnZ2VzdGlvbnNd
KTogRGVsZXRlZC4KKworICAgICAgICBSZW5hbWUgdGhpcyB0byBgLXVwZGF0ZVRleHRTdWdnZXN0
aW9uczpgLCBhbmQgbWFrZSBpdCB0YWtlIGEgbGlzdCBvZiBVSVRleHRTdWdnZXN0aW9ucy4gVGhp
cyBtYWtlcyB0aGUgY29kZSBhCisgICAgICAgIGJpdCBlYXNpZXIgdG8gZm9sbG93IGFuZCBhbGxv
d3MgdXMgdG8gcmVtb3ZlIHRoZSBgLXRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3Q29udHJvbGxl
cjpgIGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29u
dHJvbGxlciBkaWRTZWxlY3RMaXN0SXRlbUF0SW5kZXhQYXRoOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBkaWRTZWxlY3RMaXN0SXRlbTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgX2RpZFNl
bGVjdExpc3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3
Q29udHJvbGxlciBudW1iZXJPZkxpc3RJdGVtc10pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1Rl
eHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBoZWlnaHRGb3JMaXN0SXRlbTp3aWR0aDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgY2VsbEZvckxp
c3RJdGVtOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1RleHRJbnB1dExpc3RWaWV3Q29udHJv
bGxlciBsaXN0SXRlbUNlbGxSZXVzZUlkZW50aWZpZXJdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgbGlzdEl0ZW1DZWxsQ2xhc3NdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgaXRlbUNlbGxGb3JM
aXN0SXRlbTpmb3JJbmRleFBhdGg6XSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIGFsbCB0
aGlzIGNvZGUgZm9yIHNob3dpbmcgdGV4dCBzdWdnZXN0aW9ucyBpbiBRdWlja2JvYXJkIFVJLiBT
aW5jZSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciBpcyBub3cgYQorICAgICAgICBzdWJj
bGFzcyBvZiBQVUlDUXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlciwgd2UgY2FuIG5vdyBz
aW1wbHkgdXNlIHRoZSBgLW1lc3NhZ2VzYCBwcm9wZXJ0eSBvZiB0byBwb3B1bGF0ZQorICAgICAg
ICBxdWlja2JvYXJkIHdpdGggdGV4dCBzdWdnZXN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNi0xNiAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTYW5kYm94IHByb2ZpbGVzIG5lZWQg
dG8gYWxsb3cgbG9hZGluZyBmcm9tIC91c3IvYXBwbGVpbnRlcm5hbC9saWIgb24gaW50ZXJuYWwg
YnVpbGRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1Bl
cHBlclVJQ29yZVNQSS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvd2F0Y2hvcy9QZXBw
ZXJVSUNvcmVTUEkuaAppbmRleCBiZWE3MjU0ZTlmZGQyZDUzMTI4MmFiYzM1M2JjMmQzNGI4Yzc5
ZTY4Li4yODhiYzFkZjc1N2IyZmQ2ZjcxN2FjMzQ1NmUzNjM1NDE0NzViYjg2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS93YXRjaG9zL1BlcHBlclVJQ29yZVNQSS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL3dhdGNob3MvUGVwcGVyVUlDb3JlU1BJLmgK
QEAgLTM5LDkgKzM5LDkgQEAKICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUGlja2VyVmlld19Q
cml2YXRlLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRBcm91ZXRWaWV3
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8UGVwcGVyVUlDb3JlL1BVSUNRdWlja2JvYXJkTGFuZ3Vh
Z2VDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNrYm9hcmRMaXN0
Vmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlDUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlclN1YmNsYXNzLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1
aWNrYm9hcmRMaXN0Vmlld1NwZWNzLmg+CisjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1aWNr
Ym9hcmRNZXNzYWdlVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFBlcHBlclVJQ29yZS9QVUlD
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUvUFVJQ1F1
aWNrYm9hcmRWaWV3Q29udHJvbGxlcl9Qcml2YXRlLmg+CiAjaW1wb3J0IDxQZXBwZXJVSUNvcmUv
UFVJQ1Jlc291cmNlcy5oPgpAQCAtMjMyLDExICsyMzIsMTYgQEAgZXh0ZXJuIFVJQnV0dG9uVHlw
ZSBjb25zdCBQVUlDQnV0dG9uVHlwZVBpbGw7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIFBVSUNUYWJsZVZpZXcgKmxpc3RWaWV3OwogQHByb3BlcnR5IChzdHJvbmcsIG5vbmF0b21p
YywgcmVhZG9ubHkpIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdTcGVjcyAqc3BlY3M7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgVUlUZXh0Q29udGVudFR5cGUgdGV4dENvbnRlbnRUeXBlOwor
QHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgUFVJQ1RleHRJbnB1dENvbnRleHQgKnRleHRJ
bnB1dENvbnRleHQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQgPFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUgZGljdGF0aW9uTW9kZToo
UFVJQ0RpY3RhdGlvbk1vZGUpZGljdGF0aW9uTW9kZSBOU19ERVNJR05BVEVEX0lOSVRJQUxJWkVS
OwogLSAodm9pZClyZWxvYWRMaXN0SXRlbXM7CiAtICh2b2lkKXJlbG9hZEhlYWRlckNvbnRlbnRW
aWV3OwogQGVuZAogCitAaW50ZXJmYWNlIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9s
bGVyIDogUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBOU0FycmF5ICptZXNzYWdlczsKK0BlbmQKKwogQGludGVyZmFjZSBQVUlDUXVp
Y2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
cgogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBVSVRleHRDb250ZW50VHlw
ZSB0ZXh0Q29udGVudFR5cGU7CiAtICh2b2lkKXNldElucHV0VGV4dDoobnVsbGFibGUgTlNTdHJp
bmcgKilpbnB1dFRleHQgc2VsZWN0aW9uUmFuZ2U6KE5TUmFuZ2Upc2VsZWN0aW9uUmFuZ2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNjNjMGI3ZTgwN2Y2ZDY4NjIzNzNkMzZmNDYzZTM2NTI0
M2RmZjUzMS4uNjdmMzI1NTk3OTg5NjA3NTQ1ZmJiNjg4ZTJkMjc5ZTA4ODQyNjQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNDUzLDcgKzQ1Myw2IEBAIFVJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tGb3JtU2VsZWN0UGlja2VyLm1tCiBVSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRm9ybVNlbGVjdFBv
cG92ZXIubW0KIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tOdW1iZXJQYWRWaWV3Lm1tCiBVSVByb2Nl
c3MvaW9zL2Zvcm1zL1dLTnVtYmVyUGFkVmlld0NvbnRyb2xsZXIubW0KLVVJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLm1tCiBVSVByb2Nlc3MvaW9zL2Zv
cm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQogVUlQcm9jZXNzL2lvcy9mb3Jtcy9X
S1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYzg3OWU5ZGUw
ZDFmZDAwOTVhYjc4MGIxMjYzYThmNmFiYTJhYTBkYS4uNTQ1NGQ2MjZlZTdkNTg3N2VkY2Q5NDRl
ZTMxYzQ3N2NlYTk0NDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02NCw3ICs2NCw3IEBACiAjaW1w
b3J0ICJXS1ByZXZpZXdBY3Rpb25JdGVtSWRlbnRpZmllcnMuaCIKICNpbXBvcnQgIldLUHJldmll
d0FjdGlvbkl0ZW1JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQcmV2aWV3RWxlbWVudEluZm9JbnRl
cm5hbC5oIgotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1w
b3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXS1Nl
bGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLU3ludGhldGljRmxhZ3ND
aGFuZ2VkV2ViRXZlbnQuaCIKICNpbXBvcnQgIldLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
LmgiCkBAIC02NjY2LDIyICs2NjY2LDI0IEBAIC0gKHZvaWQpcmVtb3ZlRm9jdXNlZEZvcm1Db250
cm9sT3ZlcmxheQogICAgIFtzZWxmIHNldElucHV0RGVsZWdhdGU6bmlsXTsKIH0KIAotI2lmIEhB
VkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQotCi0tIChSZXRhaW5QdHI8UFVJQ1F1aWNrYm9hcmRD
b250cm9sbGVyPilfY3JlYXRlUXVpY2tib2FyZENvbnRyb2xsZXI6KFVJVmlld0NvbnRyb2xsZXIg
KilwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIKKy0gKFJldGFpblB0cjxQVUlDVGV4dElucHV0Q29u
dGV4dD4pY3JlYXRlUXVpY2tib2FyZFRleHRJbnB1dENvbnRleHQKIHsKLSAgICBhdXRvIHF1aWNr
Ym9hcmRDb250cm9sbGVyID0gYWRvcHROUyhbW1BVSUNRdWlja2JvYXJkQ29udHJvbGxlciBhbGxv
Y10gaW5pdF0pOwotCi0gICAgYXV0byBzdWdnZXN0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheTxOU1N0cmluZyAqPiBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpbX2Zvcm1JbnB1dFNlc3Np
b24gc3VnZ2VzdGlvbnNdLmNvdW50XSk7Ci0gICAgZm9yIChVSVRleHRTdWdnZXN0aW9uICpzdWdn
ZXN0aW9uIGluIFtfZm9ybUlucHV0U2Vzc2lvbiBzdWdnZXN0aW9uc10pCi0gICAgICAgIFtzdWdn
ZXN0aW9ucyBhZGRPYmplY3Q6c3VnZ2VzdGlvbi5pbnB1dFRleHRdOwotCiAgICAgYXV0byBjb250
ZXh0ID0gYWRvcHROUyhbW1BVSUNUZXh0SW5wdXRDb250ZXh0IGFsbG9jXSBpbml0XSk7CiAgICAg
W3NlbGYgX3VwZGF0ZVRleHRJbnB1dFRyYWl0czpjb250ZXh0LmdldCgpXTsKLSAgICBbY29udGV4
dCBzZXRTdWdnZXN0aW9uczpzdWdnZXN0aW9ucy5nZXQoKV07CiAgICAgW2NvbnRleHQgc2V0SW5p
dGlhbFRleHQ6X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24udmFsdWVdOworI2lmIEhBVkUoUVVJ
Q0tCT0FSRF9DT05UUk9MTEVSKQogICAgIFtjb250ZXh0IHNldEFjY2VwdHNFbW9qaTpZRVNdOwog
ICAgIFtjb250ZXh0IHNldFNob3VsZFByZXNlbnRNb2Rlcm5UZXh0SW5wdXRVSTpZRVNdOworI2Vu
ZGlmCisgICAgcmV0dXJuIGNvbnRleHQ7Cit9CisKKyNpZiBIQVZFKFFVSUNLQk9BUkRfQ09OVFJP
TExFUikKKworLSAoUmV0YWluUHRyPFBVSUNRdWlja2JvYXJkQ29udHJvbGxlcj4pX2NyZWF0ZVF1
aWNrYm9hcmRDb250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyCit7CisgICAgYXV0byBxdWlja2JvYXJkQ29udHJvbGxlciA9IGFkb3B0TlMoW1tQVUlD
UXVpY2tib2FyZENvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGNvbnRleHQgPSBz
ZWxmLmNyZWF0ZVF1aWNrYm9hcmRUZXh0SW5wdXRDb250ZXh0OwogICAgIFtxdWlja2JvYXJkQ29u
dHJvbGxlciBzZXRRdWlja2JvYXJkUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyOnByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcl07CiAgICAgW3F1aWNrYm9hcmRDb250cm9sbGVyIHNldEV4Y2x1ZGVkRnJv
bVNjcmVlbkNhcHR1cmU6W2NvbnRleHQgaXNTZWN1cmVUZXh0RW50cnldXTsKICAgICBbcXVpY2ti
b2FyZENvbnRyb2xsZXIgc2V0VGV4dElucHV0Q29udGV4dDpjb250ZXh0LmdldCgpXTsKQEAgLTY2
OTIsNyArNjY5NCw2IEBAIC0gKFJldGFpblB0cjxQVUlDUXVpY2tib2FyZENvbnRyb2xsZXI+KV9j
cmVhdGVRdWlja2JvYXJkQ29udHJvbGxlcjooVUlWaWV3Q29udHJvCiAKIHN0YXRpYyBib29sIGNh
blVzZVF1aWNrYm9hcmRDb250cm9sbGVyRm9yKFVJVGV4dENvbnRlbnRUeXBlIHR5cGUpCiB7Ci0g
ICAgLy8gV2UgY2FuIHJlbW92ZSB0aGlzIHJlc3RyaWN0aW9uIG9uY2UgUFVJQ1F1aWNrYm9hcmRD
b250cm9sbGVyIHN1cHBvcnRzIGRpc3BsYXlpbmcgdGV4dCBzdWdnZXN0aW9uIHN0cmluZ3MgdGhh
dCBhcmUgbm90IGxvZ2luIGNyZWRlbnRpYWxzLgogICAgIHJldHVybiBbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6VUlUZXh0Q29udGVudFR5cGVVc2VybmFtZV0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5n
OlVJVGV4dENvbnRlbnRUeXBlUGFzc3dvcmRdIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmluZzpVSVRl
eHRDb250ZW50VHlwZUVtYWlsQWRkcmVzc107CiB9CiAKQEAgLTY5MzEsNyArNjkzMiw3IEBAIC0g
KHZvaWQpZm9jdXNlZEZvcm1Db250cm9sbGVyRGlkVXBkYXRlU3VnZ2VzdGlvbnM6KFdLRm9jdXNl
ZEZvcm1Db250cm9sVmlldyAqKXZpCiAgICAgaWYgKF9pc0JsdXJyaW5nRm9jdXNlZEVsZW1lbnQg
fHwgIVtfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgaXNLaW5kT2ZDbGFz
czpbV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgWyhXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKV9wcmVzZW50ZWRGdWxs
U2NyZWVuSW5wdXRWaWV3Q29udHJvbGxlciByZWxvYWRUZXh0U3VnZ2VzdGlvbnNdOworICAgIFso
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilfcHJlc2VudGVkRnVsbFNjcmVlbklucHV0
Vmlld0NvbnRyb2xsZXIgdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOltfZm9jdXNlZEZvcm1Db250cm9s
VmlldyBzdWdnZXN0aW9uc11dOwogfQogCiAjcHJhZ21hIG1hcmsgLSBXS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQpAQCAtOTE5NiwxNiArOTE5Nyw3IEBAIC0gKHZvaWQpcXVp
Y2tib2FyZElucHV0Q2FuY2VsbGVkOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopcXVp
Y2tib2FyZAogCiAjcHJhZ21hIG1hcmsgLSBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVn
YXRlCiAKLS0gKENHRmxvYXQpdmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyIGlucHV0Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOihDR1NpemUp
c2l6ZQotewotICAgIGlkIDxfV0tJbnB1dERlbGVnYXRlPiBkZWxlZ2F0ZSA9IHNlbGYud2ViVmll
dy5faW5wdXREZWxlZ2F0ZTsKLSAgICBpZiAoIVtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OmZvY3VzZWRFbGVtZW50Q29udGV4dFZpZXdIZWlnaHRGb3JGaXR0
aW5nU2l6ZTppbnB1dFNlc3Npb246KV0pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJu
IFtkZWxlZ2F0ZSBfd2ViVmlldzpzZWxmLndlYlZpZXcgZm9jdXNlZEVsZW1lbnRDb250ZXh0Vmll
d0hlaWdodEZvckZpdHRpbmdTaXplOnNpemUgaW5wdXRTZXNzaW9uOl9mb3JtSW5wdXRTZXNzaW9u
LmdldCgpXTsKLX0KLQotLSAoQk9PTClhbGxvd3NMYW5ndWFnZVNlbGVjdGlvbk1lbnVGb3JMaXN0
Vmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
CistIChCT09MKWFsbG93c0xhbmd1YWdlU2VsZWN0aW9uRm9yTGlzdFZpZXdDb250cm9sbGVyOihQ
VUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgogewogICAgIHN3aXRjaCAo
X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uZWxlbWVudFR5cGUpIHsKICAgICBjYXNlIFdlYktp
dDo6SW5wdXRUeXBlOjpDb250ZW50RWRpdGFibGU6CkBAIC05MjcyLDIwICs5MjY0LDkgQEAgLSAo
V0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVtZXJpY0lucHV0TW9kZUZvckxpc3RWaWV3Q29udHJvbGxl
cjooV0tUZXh0SW5wdXRMaXN0VmkKICAgICB9CiB9CiAKLS0gKE5TU3RyaW5nICopdGV4dENvbnRl
bnRUeXBlRm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIKLXsKLSAgICByZXR1cm4gc2VsZi50ZXh0Q29udGVudFR5cGVGb3JRdWlj
a2JvYXJkOwotfQotCi0tIChOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKil0ZXh0U3VnZ2Vz
dGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlcgorLSAoUFVJQ1RleHRJbnB1dENvbnRleHQgKil0ZXh0SW5wdXRDb250ZXh0
Rm9yTGlzdFZpZXdDb250cm9sbGVyOihXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIKIHsKLSAgICByZXR1cm4gW19mb2N1c2VkRm9ybUNvbnRyb2xWaWV3IHN1Z2dlc3Rp
b25zXTsKLX0KLQotLSAodm9pZClsaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZp
ZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RUZXh0U3VnZ2VzdGlvbjooVUlUZXh0
U3VnZ2VzdGlvbiAqKXN1Z2dlc3Rpb24KLXsKLSAgICBbc2VsZiBpbnNlcnRUZXh0U3VnZ2VzdGlv
bjpzdWdnZXN0aW9uXTsKLSAgICBbc2VsZiBkaXNtaXNzUXVpY2tib2FyZFZpZXdDb250cm9sbGVy
QW5kUmV2ZWFsRm9jdXNlZEZvcm1PdmVybGF5SWZOZWNlc3Nhcnk6Y29udHJvbGxlcl07CisgICAg
cmV0dXJuIHNlbGYuY3JlYXRlUXVpY2tib2FyZFRleHRJbnB1dENvbnRleHQuYXV0b3JlbGVhc2Uo
KTsKIH0KIAogLSAoQk9PTClhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3Q29udHJvbGxl
cjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKQEAgLTkzMDMsMTAg
KzkyODQsOCBAQCAtICh2b2lkKV9sb29rdXBHZXN0dXJlUmVjb2duaXplZDooVUlHZXN0dXJlUmVj
b2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB9CiAjZW5kaWYKIAotCi0KLQogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKKwogLSAodm9pZClzZXRVcEFwcEhpZ2hsaWdodE1lbnVzSWZOZWVk
ZWQKIHsKICAgICBpZiAoIV9wYWdlLT5wcmVmZXJlbmNlcygpLmFwcEhpZ2hsaWdodHNFbmFibGVk
KCkgfHwgIXNlbGYud2luZG93IHx8ICFfcGFnZS0+ZWRpdG9yU3RhdGUoKS5zZWxlY3Rpb25Jc1Jh
bmdlKQpAQCAtMTAzNjMsNyArMTAzNDIsNyBAQCAtIChOU1N0cmluZyAqKXRleHRDb250ZW50VHlw
ZUZvclRlc3RpbmcKIHsKICNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQogICAgIGlmIChbX3ByZXNl
bnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyIGlzS2luZE9mQ2xhc3M6W1dLVGV4dElu
cHV0TGlzdFZpZXdDb250cm9sbGVyIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0
Q29udGVudFR5cGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250
cm9sbGVyICopX3ByZXNlbnRlZEZ1bGxTY3JlZW5JbnB1dFZpZXdDb250cm9sbGVyLmdldCgpXTsK
KyAgICAgICAgcmV0dXJuIFsoV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKilfcHJlc2Vu
dGVkRnVsbFNjcmVlbklucHV0Vmlld0NvbnRyb2xsZXIgdGV4dElucHV0Q29udGV4dF0udGV4dENv
bnRlbnRUeXBlOwogI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT05UUk9MTEVSKQogICAgIGlmIChfcHJl
c2VudGVkUXVpY2tib2FyZENvbnRyb2xsZXIpCiAgICAgICAgIHJldHVybiBbX3ByZXNlbnRlZFF1
aWNrYm9hcmRDb250cm9sbGVyIHRleHRJbnB1dENvbnRleHRdLnRleHRDb250ZW50VHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJW
aWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0
ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKaW5kZXggZTgxZTM0MGVlNjNhYWY2NDcxMDJhMWIyOTc5
ZDg1MjFhNjBhMmVkOS4uN2I1ZjQ4ZDcyODVkZTcwZDA0ODE3ZTMxMDIxYWI1NjYyYjEyZTRlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRGF0ZVBpY2tl
clZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1z
L1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lmIEhB
VkUoUEVQUEVSX1VJX0NPUkUpCiAKLSNpbXBvcnQgIldLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5oIgorI2ltcG9ydCAiV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIgog
CiBAaW50ZXJmYWNlIFdLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tEYXRlUGlja2VyVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNDc0ODhm
ZGUyMmE5ZThkOTJkMWQ5MzVjMTA4N2E1MDU3NWYxOWIzNy4uYWJkMGE3NGY2NDE1NzQwOTNlMDcy
OTljMzJlNzQwNWY3NWIwNjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL2Zvcm1zL1dLRGF0ZVBpY2tlclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0RhdGVQaWNrZXJWaWV3Q29udHJvbGxlci5tbQpAQCAt
MzA2LDggKzMwNiw2IEBAIC0gKHZvaWQpdmlld1dpbGxBcHBlYXI6KEJPT0wpYW5pbWF0ZWQKICAg
ICBfc3RhdHVzQmFyQXNzZXJ0aW9uID0gW1tQVUlDQXBwbGljYXRpb24gc2hhcmVkUFVJQ0FwcGxp
Y2F0aW9uXSBfdGFrZVN0YXR1c0Jhckdsb2JhbENvbnRleHRBc3NlcnRpb25BbmltYXRlZDpOT107
CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjpz
ZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFyTmF2aWdhdGlvbikgbmFtZTpQ
VUlDU3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2VkTm90aWZpY2F0aW9uIG9iamVj
dDpuaWxdOwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2Jz
ZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2hhbmRsZVN0YXR1c0Jhck5hdmlnYXRpb24p
IG5hbWU6UFVJQ1N0YXR1c0JhclRpdGxlVGFwcGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwot
Ci0gICAgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihzZWxmLCBzZWxmLmRlbGVnYXRl
KTsKIH0KIAogLSAodm9pZCl2aWV3RGlkQXBwZWFyOihCT09MKWFuaW1hdGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tRdWlja2Jv
YXJkTGlzdFZpZXdDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgy
OThhZDA1MTdkOTg0OTZkMDM5ZDhjZmI4OWY2MTk5ZTViYWFmYWYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oCisrKyAvZGV2L251bGwKQEAg
LTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZiBIQVZFKFBFUFBFUl9VSV9DT1JFKQotCi0j
aW1wb3J0ICJQZXBwZXJVSUNvcmVTUEkuaCIKLQotQGludGVyZmFjZSBXS1F1aWNrYm9hcmRMaXN0
SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RJdGVtQ2VsbAotQGVuZAotCi0jaWYgSEFWRShR
VUlDS0JPQVJEX0NPTExFQ1RJT05fVklFV1MpCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RD
b2xsZWN0aW9uVmlld0l0ZW1DZWxsIDogUFVJQ1F1aWNrYm9hcmRMaXN0Q29sbGVjdGlvblZpZXdJ
dGVtQ2VsbAotQGVuZAotI2VuZGlmCi0KLUBjbGFzcyBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRy
b2xsZXI7Ci0KLUBwcm90b2NvbCBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlIDxQ
VUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+Ci0KLS0gKENHRmxvYXQpdmlld0Nv
bnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGlucHV0
Q29udGV4dFZpZXdIZWlnaHRGb3JTaXplOihDR1NpemUpc2l6ZTsKLS0gKFVJVmlldyAqKWlucHV0
Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXI7Ci0tIChOU1N0cmluZyAqKWlucHV0TGFiZWxUZXh0Rm9yVmlld0NvbnRy
b2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwotLSAoTlNT
dHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjooUFVJQ1F1aWNrYm9hcmRWaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7Ci0tIChCT09MKXNob3VsZERpc3BsYXlJbnB1dENvbnRl
eHRWaWV3Rm9yTGlzdFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlcjsKLS0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25NZW51Rm9yTGlz
dFZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxl
cjsKLQotQGVuZAotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciA6
IFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyCi0KLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aERlbGVnYXRlOihpZCA8V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVs
ZWdhdGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aENvZGVyOihOU0NvZGVyICopYURlY29kZXIgTlNfVU5BVkFJTEFCTEU7Ci0tIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhEZWxlZ2F0ZTooaWQ8UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVn
YXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGljdGF0aW9uTW9kZSlkaWN0YXRpb25N
b2RlIE5TX1VOQVZBSUxBQkxFOwotCi0tICh2b2lkKXJlbG9hZENvbnRleHRWaWV3OwotCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVs
ZWdhdGU+IGRlbGVnYXRlOwotCi1AZW5kCi0KLXZvaWQgY29uZmlndXJlU3RhdHVzQmFyRm9yQ29u
dHJvbGxlcihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICosIGlkIDxXS1F1aWNrYm9hcmRW
aWV3Q29udHJvbGxlckRlbGVnYXRlPik7Ci0KLSNlbmRpZiAvLyBIQVZFKFBFUFBFUl9VSV9DT1JF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0KZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGYzOGQ3NzkzZjIzYzI0NzBhZTg2OWJlYTA1N2M3MjJhOTVlMWNiYzYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5tbQor
KysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKLQotI2lm
IEhBVkUoUEVQUEVSX1VJX0NPUkUpCi0KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotc3Rh
dGljIGNvbnN0IENHRmxvYXQgaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxpbmUgPSAyNjsKLXN0YXRp
YyBjb25zdCBDR0Zsb2F0IGl0ZW1DZWxsQmFzZWxpbmVUb0JvdHRvbSA9IDg7Ci0KLUBpbXBsZW1l
bnRhdGlvbiBXS1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwKLQotLSAoQ0dGbG9hdCl0b3BUb0xhYmVs
QmFzZWxpbmVTcGVjVmFsdWUKLXsKLSAgICByZXR1cm4gaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxp
bmU7Ci19Ci0KLS0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZQotewotICAgIHJl
dHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Ci19Ci0KLUBlbmQKLQotI2lmIEhBVkUoUVVJ
Q0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCi1AaW1wbGVtZW50YXRpb24gV0tRdWlja2JvYXJk
TGlzdENvbGxlY3Rpb25WaWV3SXRlbUNlbGwKLQotLSAoQ0dGbG9hdCl0b3BUb0xhYmVsQmFzZWxp
bmVTcGVjVmFsdWUKLXsKLSAgICByZXR1cm4gaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxpbmU7Ci19
Ci0KLS0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1ZQotewotICAgIHJldHVybiBp
dGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEhBVkUoUVVJ
Q0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCi1AaW50ZXJmYWNlIFdLUXVpY2tib2FyZExpc3RW
aWV3Q29udHJvbGxlciAoKSA8UFVJQ1F1aWNrYm9hcmRMYW5ndWFnZUNvbnRyb2xsZXJEZWxlZ2F0
ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxl
ciB7Ci0gICAgQk9PTCBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZTsKLSAgICBSZXRhaW5QdHI8VUlW
aWV3PiBfY29udGV4dFZpZXc7Ci0gICAgUmV0YWluUHRyPFBVSUNTdGF0dXNCYXJHbG9iYWxDb250
ZXh0Vmlld0Fzc2VydGlvbj4gX3N0YXR1c0JhckFzc2VydGlvbjsKLX0KLQotQGR5bmFtaWMgZGVs
ZWdhdGU7Ci0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8V0tRdWlja2Jv
YXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKLXsKLSAgICBpZiAoc2VsZiA9IFtz
dXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6UFVJQ0RpY3RhdGlv
bk1vZGVUZXh0XSkKLSAgICAgICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBZRVM7Ci0KLSAg
ICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZCl1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkCi17
Ci0gICAgaWYgKCFfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBwcmV2aW91c0NvbnRleHRWaWV3ID0gX2NvbnRleHRWaWV3OwotICAgIGlmIChbc2Vs
Zi5kZWxlZ2F0ZSBzaG91bGREaXNwbGF5SW5wdXRDb250ZXh0Vmlld0Zvckxpc3RWaWV3Q29udHJv
bGxlcjpzZWxmXSkKLSAgICAgICAgX2NvbnRleHRWaWV3ID0gW3NlbGYuZGVsZWdhdGUgaW5wdXRD
b250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGVsc2UKLSAgICAgICAgX2Nv
bnRleHRWaWV3ID0gbmlsOwotCi0gICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUgPSBOTzsKLX0K
LQotLSAoQk9PTClwcmVmZXJzU3RhdHVzQmFySGlkZGVuCi17Ci0gICAgcmV0dXJuIE5POwotfQot
Ci0tICh2b2lkKXZpZXdXaWxsQXBwZWFyOihCT09MKWFuaW1hdGVkCi17Ci0gICAgW3N1cGVyIHZp
ZXdXaWxsQXBwZWFyOmFuaW1hdGVkXTsKLQotICAgIF9zdGF0dXNCYXJBc3NlcnRpb24gPSBbW1BV
SUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dIF90YWtlU3RhdHVzQmFyR2xvYmFs
Q29udGV4dEFzc2VydGlvbkFuaW1hdGVkOk5PXTsKLQotICAgIE5TTm90aWZpY2F0aW9uQ2VudGVy
ICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgW2Nl
bnRlciBhZGRPYnNlcnZlcjpzZWxmIHNlbGVjdG9yOkBzZWxlY3RvcihfaGFuZGxlU3RhdHVzQmFy
TmF2aWdhdGlvbikgbmFtZTpQVUlDU3RhdHVzQmFyTmF2aWdhdGlvbkJhY2tCdXR0b25QcmVzc2Vk
Tm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotICAgIFtjZW50ZXIgYWRkT2JzZXJ2ZXI6c2VsZiBz
ZWxlY3RvcjpAc2VsZWN0b3IoX2hhbmRsZVN0YXR1c0Jhck5hdmlnYXRpb24pIG5hbWU6UFVJQ1N0
YXR1c0JhclRpdGxlVGFwcGVkTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwotCi0gICAgY29uZmln
dXJlU3RhdHVzQmFyRm9yQ29udHJvbGxlcihzZWxmLCBzZWxmLmRlbGVnYXRlKTsKLX0KLQotLSAo
dm9pZCl2aWV3RGlkRGlzYXBwZWFyOihCT09MKWFuaW1hdGVkCi17Ci0gICAgW3N1cGVyIHZpZXdE
aWREaXNhcHBlYXI6YW5pbWF0ZWRdOwotCi0gICAgX3N0YXR1c0JhckFzc2VydGlvbiA9IG5pbDsK
LQotICAgIE5TTm90aWZpY2F0aW9uQ2VudGVyICpjZW50ZXIgPSBbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl07Ci0gICAgW2NlbnRlciByZW1vdmVPYnNlcnZlcjpzZWxmIG5hbWU6
UFVJQ1N0YXR1c0Jhck5hdmlnYXRpb25CYWNrQnV0dG9uUHJlc3NlZE5vdGlmaWNhdGlvbiBvYmpl
Y3Q6bmlsXTsKLSAgICBbY2VudGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgbmFtZTpQVUlDU3RhdHVz
QmFyVGl0bGVUYXBwZWROb3RpZmljYXRpb24gb2JqZWN0Om5pbF07Ci19Ci0KLS0gKHZvaWQpX2hh
bmRsZVN0YXR1c0Jhck5hdmlnYXRpb24KLXsKLSAgICBbc2VsZi5kZWxlZ2F0ZSBxdWlja2JvYXJk
SW5wdXRDYW5jZWxsZWQ6c2VsZl07Ci19Ci0KLS0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXcKLXsK
LSAgICBfY29udGV4dFZpZXdOZWVkc1VwZGF0ZSA9IFlFUzsKLSAgICBbc2VsZiByZWxvYWRIZWFk
ZXJDb250ZW50Vmlld107Ci19Ci0KLUFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0JF
R0lOCi0KLS0gKFBVSUNBY3Rpb25Db250cm9sbGVyICopYWN0aW9uQ29udHJvbGxlcgotewotICAg
IGlmICghW3NlbGYuZGVsZWdhdGUgYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25NZW51Rm9yTGlzdFZp
ZXdDb250cm9sbGVyOnNlbGZdKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgUFVJQ0FjdGlv
bkl0ZW0gKmxhbmd1YWdlU2VsZWN0aW9uQWN0aW9uSXRlbSA9IFtzZWxmLmxhbmd1YWdlQ29udHJv
bGxlciBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0ZW1Gb3JWaWV3Q29udHJvbGxlcjpzZWxmXTsK
LSAgICBhdXRvIGFjdGlvbkdyb3VwID0gYWRvcHROUyhbW1BVSUNBY3Rpb25Hcm91cCBhbGxvY10g
aW5pdFdpdGhBY3Rpb25JdGVtczpAWyBsYW5ndWFnZVNlbGVjdGlvbkFjdGlvbkl0ZW0gXSBhY3Rp
b25TdHlsZTpQVUlDQWN0aW9uU3R5bGVBdXRvbWF0aWNdKTsKLSAgICByZXR1cm4gYWRvcHROUyhb
W1BVSUNBY3Rpb25Db250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEFjdGlvbkdyb3VwOmFjdGlvbkdy
b3VwLmdldCgpXSkuYXV0b3JlbGVhc2UoKTsKLX0KLQotQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECi0KLSNwcmFnbWEgbWFyayAtIFBVSUNRdWlja2JvYXJkTGFuZ3VhZ2VDb250
cm9sbGVyRGVsZWdhdGUKLQotLSAodm9pZClsYW5ndWFnZUNvbnRyb2xsZXJEaWRDaGFuZ2VQcmlt
YXJ5TGFuZ3VhZ2U6KFBVSUNRdWlja2JvYXJkTGFuZ3VhZ2VDb250cm9sbGVyICopbGFuZ3VhZ2VD
b250cm9sbGVyCi17Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IocXVpY2tib2FyZDpsYW5ndWFnZURpZENoYW5nZTopXSkKLSAgICAgICAgW3NlbGYu
ZGVsZWdhdGUgcXVpY2tib2FyZDpzZWxmIGxhbmd1YWdlRGlkQ2hhbmdlOmxhbmd1YWdlQ29udHJv
bGxlci5wcmltYXJ5TGFuZ3VhZ2VdOwotfQotCi0jcHJhZ21hIG1hcmsgLSBRdWlja2JvYXJkIHN1
YmNsYXNzaW5nCi0KLS0gKENHRmxvYXQpaGVhZGVyQ29udGVudFZpZXdIZWlnaHQKLXsKLSAgICBb
c2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKLQotICAgIHJldHVybiBbX2NvbnRleHRW
aWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3LmJvdW5kcy5zaXplXS5oZWlnaHQ7Ci19
Ci0KLS0gKFVJVmlldyAqKWhlYWRlckNvbnRlbnRWaWV3Ci17Ci0gICAgW3NlbGYgdXBkYXRlQ29u
dGV4dFZpZXdJZk5lZWRlZF07Ci0KLSAgICBDR0Zsb2F0IHZpZXdXaWR0aCA9IENHUmVjdEdldFdp
ZHRoKHNlbGYuY29udGVudFZpZXcuYm91bmRzKTsKLSAgICBDR1NpemUgc2l6ZVRoYXRGaXRzID0g
W19jb250ZXh0VmlldyBzaXplVGhhdEZpdHM6c2VsZi5jb250ZW50Vmlldy5ib3VuZHMuc2l6ZV07
Ci0gICAgW19jb250ZXh0VmlldyBzZXRGcmFtZTpDR1JlY3RNYWtlKCh2aWV3V2lkdGggLSBzaXpl
VGhhdEZpdHMud2lkdGgpIC8gMiwgMCwgc2l6ZVRoYXRGaXRzLndpZHRoLCBzaXplVGhhdEZpdHMu
aGVpZ2h0KV07Ci0gICAgW19jb250ZXh0VmlldyBsYXlvdXRTdWJ2aWV3c107Ci0gICAgcmV0dXJu
IF9jb250ZXh0Vmlldy5nZXQoKTsKLX0KLQotQGVuZAotCi12b2lkIGNvbmZpZ3VyZVN0YXR1c0Jh
ckZvckNvbnRyb2xsZXIoUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqY29udHJvbGxlciwg
aWQgPFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGU+IGRlbGVnYXRlKQotewotICAg
IC8vIEFuIGludGVybmFsIGNsaWVudCAoZS5nLiBTYWZhcmkncyBtb2RhbCBzaGVldCkgbWF5IGhh
dmUgbW92ZWQgdGhlIHN0YXR1cyBiYXIgb2Zmc2NyZWVuLgotICAgIC8vIEJlZm9yZSB1cGRhdGlu
ZyB0aGUgc3RhdHVzIGJhciwgbWFrZSBzdXJlIHRoYXQgd2UgYnJpbmcgdGhlIHN0YXR1cyBiYXIg
YmFjayB0byBpdHMgb3JpZ2luYWwgcG9zaXRpb24uCi0gICAgUFVJQ1N0YXR1c0JhciAqc3RhdHVz
QmFyID0gW1BVSUNBcHBsaWNhdGlvbiBzaGFyZWRQVUlDQXBwbGljYXRpb25dLl9wdWljU3RhdHVz
QmFyOwotICAgIHN0YXR1c0Jhci5mcmFtZSA9IENHUmVjdCB7IENHUG9pbnRaZXJvLCBzdGF0dXNC
YXIuZnJhbWUuc2l6ZSB9OwotCi0gICAgUFVJQ0FwcGxpY2F0aW9uU3RhdHVzQmFySXRlbSAqaXRl
bSA9IGNvbnRyb2xsZXIucHVpY19hcHBsaWNhdGlvblN0YXR1c0Jhckl0ZW07Ci0gICAgaXRlbS50
aXRsZSA9IFtkZWxlZ2F0ZSBpbnB1dExhYmVsVGV4dEZvclZpZXdDb250cm9sbGVyOmNvbnRyb2xs
ZXJdOwotICAgIGl0ZW0udGl0bGVDb2xvciA9IFtVSUNvbG9yIHN5c3RlbUJsdWVDb2xvcl07Ci0g
ICAgaXRlbS5uYXZVSUJhY2tCdXR0b25EaXNhYmxlZCA9IE5POwotICAgIGl0ZW0uc2hvd05hdmln
YXRpb25VSSA9IFlFUzsKLSAgICBpdGVtLnRpdGxlSW50ZXJhY3RpdmUgPSBZRVM7Ci0gICAgW2l0
ZW0gY29tbWl0Q2hhbmdlc0FuaW1hdGVkOk5PXTsKLX0KLQotI2VuZGlmIC8vIEhBVkUoUEVQUEVS
X1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMv
V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kMDRjYzVhNjk0MDRlYTg1M2U1ZmQ1ZjYwYzAyOWZlZWJkODMzYmM2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLUXVpY2tib2Fy
ZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmIEhBVkUoUEVQUEVSX1VJX0NPUkUpCisKKyNpbXBvcnQgIlBlcHBlclVJQ29yZVNQSS5oIgor
CitAcHJvdG9jb2wgV0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA8UFVJQ1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPgorCistIChOU1N0cmluZyAqKWlucHV0TGFiZWxU
ZXh0Rm9yVmlld0NvbnRyb2xsZXI6KFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyOworLSAoTlNTdHJpbmcgKilpbml0aWFsVmFsdWVGb3JWaWV3Q29udHJvbGxlcjooUFVJ
Q1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXI7CisKK0BlbmQKKworI2VuZGlm
IC8vIEhBVkUoUEVQUEVSX1VJX0NPUkUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVy
LmgKaW5kZXggYzgxMDIwODY2OWI0MTY0YTUxZDk2Yjc0OThjMTE4ODI4Mjg5YmUzNS4uZTY5ZmIw
MTE1MzI1MzRjZWUxZjkyMTgxNTZkMzI0MWU3NWYxNTVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVjdE1lbnVMaXN0
Vmlld0NvbnRyb2xsZXIuaApAQCAtMjUsNyArMjUsNyBAQAogCiAjaWYgSEFWRShQRVBQRVJfVUlf
Q09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVyLmgiCisjaW1w
b3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlLmgiCiAKIEBjbGFzcyBXS1Nl
bGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXI7CiAKQEAgLTQxLDkgKzQxLDExIEBACiAKIEBlbmQK
IAotQGludGVyZmFjZSBXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIgOiBXS1F1aWNrYm9h
cmRMaXN0Vmlld0NvbnRyb2xsZXIKK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51TGlzdFZpZXdDb250
cm9sbGVyIDogUFVJQ1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIKIAogLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoRGVsZWdhdGU6KGlkIDxXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZT4pZGVsZWdhdGUgTlNfREVTSUdOQVRFRF9JTklUSUFMSVpFUjsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8UFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRl
bGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlDRGljdGF0aW9uTW9kZSlkaWN0YXRp
b25Nb2RlIE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29kZXI6KE5T
Q29kZXIgKiljb2RlciBOU19VTkFWQUlMQUJMRTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdl
YWspIGlkIDxXS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1NlbGVj
dE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Zm9ybXMvV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tCmluZGV4IDJkMzAxOWZkNzQz
YWJlNTMwOTY3MTI2Mzc5ZWMxZThlYmM4MmM1ZmQuLjc4ZDRiNzMwMGVhMjNmNDc4NmM4YjFiZWJj
YTNkOWNmOGRlOTM3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9m
b3Jtcy9XS1NlbGVjdE1lbnVMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbQpA
QCAtNDMsOCArNDMsMTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgUFVJQ1F1aWNrYm9h
cmRMaXN0U2VjdGlvbikgewogICAgIFBVSUNRdWlja2JvYXJkTGlzdFNlY3Rpb25Db250ZW50VW5h
dmFpbGFibGUsCiB9OwogCi0vLyBGSVhNRTogVGhpcyBtZXRob2QgY2FuIGJlIHJlbW92ZWQgd2hl
biA8cmRhcjovL3Byb2JsZW0vNTc4MDc0NDU+IGxhbmRzIGluIGEgYnVpbGQuCi1AaW50ZXJmYWNl
IFdLU2VsZWN0TWVudUl0ZW1DZWxsIDogV0tRdWlja2JvYXJkTGlzdEl0ZW1DZWxsCitzdGF0aWMg
Y29uc3RleHByIENHRmxvYXQgaXRlbUNlbGxUb3BUb0xhYmVsQmFzZWxpbmUgPSAyNjsKK3N0YXRp
YyBjb25zdGV4cHIgQ0dGbG9hdCBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b20gPSA4OworCisvLyBG
SVhNRTogVGhpcyBjYW4gYmUgcmVtb3ZlZCB3aGVuIDxyZGFyOi8vcHJvYmxlbS81NzgwNzQ0NT4g
bGFuZHMgaW4gYSBidWlsZC4KK0BpbnRlcmZhY2UgV0tTZWxlY3RNZW51SXRlbUNlbGwgOiBQVUlD
UXVpY2tib2FyZExpc3RJdGVtQ2VsbAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBV
SUltYWdlVmlldyAqaW1hZ2VWaWV3OwogQGVuZAogCkBAIC01Miw3ICs1NSw3IEBAIEBpbXBsZW1l
bnRhdGlvbiBXS1NlbGVjdE1lbnVJdGVtQ2VsbCB7CiAgICAgUmV0YWluUHRyPFVJSW1hZ2VWaWV3
PiBfaW1hZ2VWaWV3OwogfQogCi0tIChpbnN0YW5jZXR5cGUpIGluaXRXaXRoU3R5bGU6KFVJVGFi
bGVWaWV3Q2VsbFN0eWxlKXN0eWxlIHJldXNlSWRlbnRpZmllcjooTlNTdHJpbmcgKilyZXVzZUlk
ZW50aWZpZXIKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN0eWxlOihVSVRhYmxlVmlld0NlbGxT
dHlsZSlzdHlsZSByZXVzZUlkZW50aWZpZXI6KE5TU3RyaW5nICopcmV1c2VJZGVudGlmaWVyCiB7
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aFN0eWxlOnN0eWxlIHJldXNlSWRlbnRp
ZmllcjpyZXVzZUlkZW50aWZpZXJdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTcxLDExICs3
NCwyMSBAQCAtIChVSUltYWdlVmlldyAqKWltYWdlVmlldwogICAgIHJldHVybiBfaW1hZ2VWaWV3
LmdldCgpOwogfQogCistIChDR0Zsb2F0KXRvcFRvTGFiZWxCYXNlbGluZVNwZWNWYWx1ZQorewor
ICAgIHJldHVybiBpdGVtQ2VsbFRvcFRvTGFiZWxCYXNlbGluZTsKK30KKworLSAoQ0dGbG9hdCli
YXNlbGluZVRvQm90dG9tU3BlY1ZhbHVlCit7CisgICAgcmV0dXJuIGl0ZW1DZWxsQmFzZWxpbmVU
b0JvdHRvbTsKK30KKwogQGVuZAogCiAjaWYgSEFWRShRVUlDS0JPQVJEX0NPTExFQ1RJT05fVklF
V1MpCiAKLUBpbnRlcmZhY2UgV0tTZWxlY3RNZW51Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCA6IFdL
UXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxsCitAaW50ZXJmYWNlIFdLU2VsZWN0
TWVudUNvbGxlY3Rpb25WaWV3SXRlbUNlbGwgOiBQVUlDUXVpY2tib2FyZExpc3RDb2xsZWN0aW9u
Vmlld0l0ZW1DZWxsCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJSW1hZ2VWaWV3
ICppbWFnZVZpZXc7CiBAZW5kCiAKQEAgLTEwMiw2ICsxMTUsMTYgQEAgLSAoVUlJbWFnZVZpZXcg
KilpbWFnZVZpZXcKICAgICByZXR1cm4gX2ltYWdlVmlldy5nZXQoKTsKIH0KIAorLSAoQ0dGbG9h
dCl0b3BUb0xhYmVsQmFzZWxpbmVTcGVjVmFsdWUKK3sKKyAgICByZXR1cm4gaXRlbUNlbGxUb3BU
b0xhYmVsQmFzZWxpbmU7Cit9CisKKy0gKENHRmxvYXQpYmFzZWxpbmVUb0JvdHRvbVNwZWNWYWx1
ZQoreworICAgIHJldHVybiBpdGVtQ2VsbEJhc2VsaW5lVG9Cb3R0b207Cit9CisKIEBlbmQKIAog
I2VuZGlmIC8vIEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQpAQCAtMTE1LDcgKzEz
OCw3IEBAIEBkeW5hbWljIGRlbGVnYXRlOwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEZWxl
Z2F0ZTooaWQgPFdLU2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0
ZQogewotICAgIHJldHVybiBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAg
cmV0dXJuIFtzdXBlciBpbml0V2l0aERlbGVnYXRlOmRlbGVnYXRlIGRpY3RhdGlvbk1vZGU6UFVJ
Q0RpY3RhdGlvbk1vZGVUZXh0XTsKIH0KIAogLSAodm9pZCl2aWV3RGlkTG9hZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5w
dXRMaXN0Vmlld0NvbnRyb2xsZXIuaAppbmRleCBlMTI5MmZiZDMzYTU3Y2Y2NjdhNDdlYTRlMTMy
NTE0MDE5Y2VkNTcyLi44ZWIyYzM2NDJkODkxYzdkNWEwMTRjMmY2YjIyZmE1NzUwNjdmNjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRM
aXN0Vmlld0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaApAQCAtMjcsNyArMjcsNyBAQAogCiAj
aWYgSEFWRShQRVBQRVJfVUlfQ09SRSkKIAotI2ltcG9ydCAiV0tRdWlja2JvYXJkTGlzdFZpZXdD
b250cm9sbGVyLmgiCisjaW1wb3J0ICJXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRl
LmgiCiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTnVtYmVyUGFkSW5wdXRNb2RlKSB7
CiAgICAgV0tOdW1iZXJQYWRJbnB1dE1vZGVOb25lLApAQCAtNDEsMTcgKzQxLDIxIEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTnVtYmVyUGFkSW5wdXRNb2RlKSB7CiBAcHJvdG9jb2wg
V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA8V0tRdWlja2JvYXJkVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZT4KIAogLSAoV0tOdW1iZXJQYWRJbnB1dE1vZGUpbnVtZXJpY0lucHV0
TW9kZUZvckxpc3RWaWV3Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyOwotLSAoTlNTdHJpbmcgKil0ZXh0Q29udGVudFR5cGVGb3JMaXN0Vmlld0Nv
bnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKLS0g
KE5TQXJyYXk8VUlUZXh0U3VnZ2VzdGlvbiAqPiAqKXRleHRTdWdnZXN0aW9uc0Zvckxpc3RWaWV3
Q29udHJvbGxlcjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwot
LSAodm9pZClsaXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlciBkaWRTZWxlY3RUZXh0U3VnZ2VzdGlvbjooVUlUZXh0U3VnZ2VzdGlvbiAq
KXN1Z2dlc3Rpb247Ci0tIChCT09MKWFsbG93c0RpY3RhdGlvbklucHV0Rm9yTGlzdFZpZXdDb250
cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKy0gKFBV
SUNUZXh0SW5wdXRDb250ZXh0ICopdGV4dElucHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxl
cjooV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOworLSAoVUlWaWV3
ICopaW5wdXRDb250ZXh0Vmlld0ZvclZpZXdDb250cm9sbGVyOihQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyICopY29udHJvbGxlcjsKKy0gKEJPT0wpYWxsb3dzRGljdGF0aW9uSW5wdXRGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcjsKKy0gKEJPT0wpYWxsb3dzTGFuZ3VhZ2VTZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xs
ZXI6KFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyICopY29udHJvbGxlcjsKKy0gKEJPT0wp
c2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZpZXdGb3JMaXN0Vmlld0NvbnRyb2xsZXI6KFBVSUNR
dWlja2JvYXJkVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyOwogCiBAZW5kCiAKLUBpbnRlcmZh
Y2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgOiBXS1F1aWNrYm9hcmRMaXN0Vmlld0Nv
bnRyb2xsZXIKK0BpbnRlcmZhY2UgV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIgOiBQVUlD
UXVpY2tib2FyZE1lc3NhZ2VWaWV3Q29udHJvbGxlcgogCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhEZWxlZ2F0ZTooaWQgPFdLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRl
bGVnYXRlIE5TX0RFU0lHTkFURURfSU5JVElBTElaRVI7Ci0tICh2b2lkKXJlbG9hZFRleHRTdWdn
ZXN0aW9uczsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERlbGVnYXRlOihpZCA8UFVJQ1F1aWNr
Ym9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZSBkaWN0YXRpb25Nb2RlOihQVUlD
RGljdGF0aW9uTW9kZSlkaWN0YXRpb25Nb2RlIE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlciBOU19VTkFWQUlMQUJMRTsKKy0gKHZv
aWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4dFN1Z2dlc3Rpb24gKj4gKilz
dWdnZXN0aW9uczsKKy0gKHZvaWQpcmVsb2FkQ29udGV4dFZpZXc7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrKSBpZCA8V0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4g
ZGVsZWdhdGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jt
cy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbQppbmRleCAxYmIx
MjNiOWIxYmM2ZDEwNzNlMDJmZTY4ZThjYjEzOWE5MTM3YWZkLi5kNDk5NDUzNzQ3YTQ5MDY5Y2Jm
ZGNjNWFkNDJkOGJlNjlmZjEzYzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvZm9ybXMvV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLVGV4dElucHV0TGlzdFZpZXdDb250cm9sbGVy
Lm1tCkBAIC0zMSwxMSArMzEsOSBAQAogI2ltcG9ydCAiV0tOdW1iZXJQYWRWaWV3Q29udHJvbGxl
ci5oIgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1zdGF0aWMgY29uc3QgQ0dGbG9hdCB0
ZXh0U3VnZ2VzdGlvbkJ1dHRvbkhlaWdodCA9IDQ0Owotc3RhdGljIGNvbnN0IENHRmxvYXQgdGV4
dFN1Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJnaW4gPSA5Owotc3RhdGljIE5TU3RyaW5nICp0
ZXh0U3VnZ2VzdGlvbkNlbGxSZXVzZUlkZW50aWZpZXIgPSBAIldlYktpdFF1aWNrYm9hcmRUZXh0
U3VnZ2VzdGlvbkNlbGwiOwotCiBAaW1wbGVtZW50YXRpb24gV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIgeworICAgIEJPT0wgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGU7CisgICAgUmV0YWlu
UHRyPFVJVmlldz4gX2NvbnRleHRWaWV3OwogICAgIFJldGFpblB0cjxXS051bWJlclBhZFZpZXdD
b250cm9sbGVyPiBfbnVtYmVyUGFkVmlld0NvbnRyb2xsZXI7CiB9CiAKQEAgLTQzLDMyICs0MSw0
MiBAQCBAZHluYW1pYyBkZWxlZ2F0ZTsKIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRGVsZWdh
dGU6KGlkIDxXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQog
ewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxlZ2F0ZV0pKQor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhEZWxlZ2F0ZTpkZWxlZ2F0ZSBkaWN0YXRp
b25Nb2RlOlBVSUNEaWN0YXRpb25Nb2RlVGV4dF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgc2VsZi50ZXh0Q29udGVudFR5cGUgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0Q29udGVudFR5cGVG
b3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07CisgICAgX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUg
PSBZRVM7CisgICAgc2VsZi50ZXh0SW5wdXRDb250ZXh0ID0gW3NlbGYuZGVsZWdhdGUgdGV4dElu
cHV0Q29udGV4dEZvckxpc3RWaWV3Q29udHJvbGxlcjpzZWxmXTsKICAgICByZXR1cm4gc2VsZjsK
IH0KIAotLSAodm9pZCl2aWV3RGlkTG9hZAorLSAodm9pZClyZWxvYWRDb250ZXh0Vmlldwogewot
ICAgIFtzdXBlciB2aWV3RGlkTG9hZF07Ci0KLSAgICBzZWxmLmhlYWRlclZpZXcuaGlkZGVuID0g
WUVTOworICAgIF9jb250ZXh0Vmlld05lZWRzVXBkYXRlID0gWUVTOworICAgIFtzZWxmIHJlbG9h
ZEhlYWRlckNvbnRlbnRWaWV3XTsKIH0KIAotLSAodm9pZCl3aWxsUHJlc2VudEFyb3VldFZpZXdD
b250cm9sbGVyOihQVUlDUXVpY2tib2FyZEFyb3VldFZpZXdDb250cm9sbGVyICopcXVpY2tib2Fy
ZAorLSAodm9pZCl1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkCiB7Ci0gICAgTlNTdHJpbmcgKmlu
aXRpYWxUZXh0ID0gW3NlbGYuZGVsZWdhdGUgaW5pdGlhbFZhbHVlRm9yVmlld0NvbnRyb2xsZXI6
c2VsZl07Ci0gICAgaWYgKGluaXRpYWxUZXh0Lmxlbmd0aCkKLSAgICAgICAgW3F1aWNrYm9hcmQg
c2V0SW5wdXRUZXh0OmluaXRpYWxUZXh0IHNlbGVjdGlvblJhbmdlOk5TTWFrZVJhbmdlKGluaXRp
YWxUZXh0Lmxlbmd0aCwgMCldOworICAgIGlmICghX2NvbnRleHRWaWV3TmVlZHNVcGRhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcHJldmlvdXNDb250ZXh0VmlldyA9IF9jb250ZXh0
VmlldzsKKyAgICBpZiAoW3NlbGYuZGVsZWdhdGUgc2hvdWxkRGlzcGxheUlucHV0Q29udGV4dFZp
ZXdGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0pCisgICAgICAgIF9jb250ZXh0VmlldyA9IFtz
ZWxmLmRlbGVnYXRlIGlucHV0Q29udGV4dFZpZXdGb3JWaWV3Q29udHJvbGxlcjpzZWxmXTsKKyAg
ICBlbHNlCisgICAgICAgIF9jb250ZXh0VmlldyA9IG5pbDsKIAotICAgIHF1aWNrYm9hcmQubWlu
VGV4dExlbmd0aEZvckVuYWJsaW5nQWNjZXB0ID0gMDsKKyAgICBfY29udGV4dFZpZXdOZWVkc1Vw
ZGF0ZSA9IE5POworfQorCistIChCT09MKXJlcXVpcmVzTnVtZXJpY0lucHV0Cit7CisgICAgcmV0
dXJuIFtzZWxmLmRlbGVnYXRlIG51bWVyaWNJbnB1dE1vZGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6
c2VsZl0gIT0gV0tOdW1iZXJQYWRJbnB1dE1vZGVOb25lOwogfQogCiAtIChOU0FycmF5ICopYWRk
aXRpb25hbFRyYXlCdXR0b25zCiB7Ci0gICAgaWYgKFtzZWxmLmRlbGVnYXRlIG51bWVyaWNJbnB1
dE1vZGVGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0gPT0gV0tOdW1iZXJQYWRJbnB1dE1vZGVO
b25lKQorICAgIGlmICghc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dCkKICAgICAgICAgcmV0dXJu
IEBbIF07CiAKICNpZiBIQVZFKFBVSUNfQlVUVE9OX1RZUEVfUElMTCkKQEAgLTk5LDkgKzEwNywx
NCBAQCAtICh2b2lkKXByZXNlbnROdW1iZXJQYWRWaWV3Q29udHJvbGxlcgogICAgIFtzZWxmIHBy
ZXNlbnRWaWV3Q29udHJvbGxlcjpfbnVtYmVyUGFkVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb246bmlsXTsKIH0KIAotLSAodm9pZClyZWxvYWRUZXh0U3VnZ2VzdGlv
bnMKKy0gKHZvaWQpdXBkYXRlVGV4dFN1Z2dlc3Rpb25zOihOU0FycmF5PFVJVGV4dFN1Z2dlc3Rp
b24gKj4gKilzdWdnZXN0aW9ucwogewotICAgIFtzZWxmIHJlbG9hZExpc3RJdGVtc107CisgICAg
YXV0byBtZXNzYWdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheTxOU0F0dHJpYnV0ZWRTdHJp
bmcgKj4gYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c3VnZ2VzdGlvbnMuY291bnRdKTsKKyAgICBm
b3IgKFVJVGV4dFN1Z2dlc3Rpb24gKnN1Z2dlc3Rpb24gaW4gc3VnZ2VzdGlvbnMpIHsKKyAgICAg
ICAgYXV0byBhdHRyaWJ1dGVkU3RyaW5nID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6c3VnZ2VzdGlvbi5kaXNwbGF5VGV4dF0pOworICAgICAgICBb
bWVzc2FnZXMgYWRkT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmcuZ2V0KCldOworICAgIH0KKyAgICBz
ZWxmLm1lc3NhZ2VzID0gbWVzc2FnZXMuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZW50ZXJUZXh0OihO
U1N0cmluZyAqKXRleHQKQEAgLTExMSwxMDkgKzEyNCw0NiBAQCAtICh2b2lkKWVudGVyVGV4dDoo
TlNTdHJpbmcgKil0ZXh0CiAKICNwcmFnbWEgbWFyayAtIFF1aWNrYm9hcmQgc3ViY2xhc3NpbmcK
IAotLSAoQk9PTClzdXBwb3J0c0RpY3RhdGlvbklucHV0CistIChDR0Zsb2F0KWhlYWRlckNvbnRl
bnRWaWV3SGVpZ2h0CiB7Ci0gICAgcmV0dXJuIFtzZWxmLmRlbGVnYXRlIGFsbG93c0RpY3RhdGlv
bklucHV0Rm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwotfQotCi0tICh2b2lkKWRpZFNlbGVj
dExpc3RJdGVtQXRJbmRleFBhdGg6KE5TSW5kZXhQYXRoICopaW5kZXhQYXRoCi17Ci0gICAgW3Nl
bGYgX2RpZFNlbGVjdExpc3RJdGVtOmluZGV4UGF0aC5yb3ddOwotfQotCi0vLyBGSVhNRTogVGhp
cyBtZXRob2QgY2FuIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3Byb2JsZW0vNTc4MDc0NDU+IGxh
bmRzIGluIGEgYnVpbGQuCi0tICh2b2lkKWRpZFNlbGVjdExpc3RJdGVtOihOU0ludGVnZXIpaXRl
bU51bWJlcgotewotICAgIFtzZWxmIF9kaWRTZWxlY3RMaXN0SXRlbTppdGVtTnVtYmVyXTsKLX0K
LQotLSAodm9pZClfZGlkU2VsZWN0TGlzdEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyCi17Ci0g
ICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9uICo+ICp0ZXh0U3VnZ2VzdGlvbnMgPSBbc2VsZi5k
ZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAg
aWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihpdGVt
TnVtYmVyKSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBbc2VsZiB1cGRhdGVDb250ZXh0Vmlld0lmTmVlZGVkXTsKIAotICAgIFtz
ZWxmLmRlbGVnYXRlIGxpc3RWaWV3Q29udHJvbGxlcjpzZWxmIGRpZFNlbGVjdFRleHRTdWdnZXN0
aW9uOlt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRleDppdGVtTnVtYmVyXV07CisgICAgcmV0
dXJuIFtfY29udGV4dFZpZXcgc2l6ZVRoYXRGaXRzOnNlbGYuY29udGVudFZpZXcuYm91bmRzLnNp
emVdLmhlaWdodDsKIH0KIAotLSAoTlNJbnRlZ2VyKW51bWJlck9mTGlzdEl0ZW1zCistIChVSVZp
ZXcgKiloZWFkZXJDb250ZW50VmlldwogewotICAgIHJldHVybiBbc2VsZi5kZWxlZ2F0ZSB0ZXh0
U3VnZ2VzdGlvbnNGb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl0uY291bnQ7Ci19CisgICAgW3Nl
bGYgdXBkYXRlQ29udGV4dFZpZXdJZk5lZWRlZF07CiAKLS0gKENHRmxvYXQpaGVpZ2h0Rm9yTGlz
dEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyIHdpZHRoOihDR0Zsb2F0KXdpZHRoCi17Ci0gICAg
cmV0dXJuIHRleHRTdWdnZXN0aW9uQnV0dG9uSGVpZ2h0OworICAgIENHRmxvYXQgdmlld1dpZHRo
ID0gQ0dSZWN0R2V0V2lkdGgoc2VsZi5jb250ZW50Vmlldy5ib3VuZHMpOworICAgIENHU2l6ZSBz
aXplVGhhdEZpdHMgPSBbX2NvbnRleHRWaWV3IHNpemVUaGF0Rml0czpzZWxmLmNvbnRlbnRWaWV3
LmJvdW5kcy5zaXplXTsKKyAgICBbX2NvbnRleHRWaWV3IHNldEZyYW1lOkNHUmVjdE1ha2UoKHZp
ZXdXaWR0aCAtIHNpemVUaGF0Rml0cy53aWR0aCkgLyAyLCAwLCBzaXplVGhhdEZpdHMud2lkdGgs
IHNpemVUaGF0Rml0cy5oZWlnaHQpXTsKKyAgICByZXR1cm4gX2NvbnRleHRWaWV3LmdldCgpOwog
fQogCi0vLyBGSVhNRTogVGhpcyBtZXRob2QgY2FuIGJlIHJlbW92ZWQgd2hlbiA8cmRhcjovL3By
b2JsZW0vNTc4MDc0NDU+IGxhbmRzIGluIGEgYnVpbGQuCi0tIChQVUlDUXVpY2tib2FyZExpc3RJ
dGVtQ2VsbCAqKWNlbGxGb3JMaXN0SXRlbTooTlNJbnRlZ2VyKWl0ZW1OdW1iZXIKKy0gKEJPT0wp
c2hvdWxkU2hvd0xhbmd1YWdlQnV0dG9uCiB7Ci0gICAgTlNBcnJheTxVSVRleHRTdWdnZXN0aW9u
ICo+ICp0ZXh0U3VnZ2VzdGlvbnMgPSBbc2VsZi5kZWxlZ2F0ZSB0ZXh0U3VnZ2VzdGlvbnNGb3JM
aXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07Ci0gICAgaWYgKHRleHRTdWdnZXN0aW9ucy5jb3VudCA8
PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihpdGVtTnVtYmVyKSkgewotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0KLSAgICBVSVRleHRT
dWdnZXN0aW9uICp0ZXh0U3VnZ2VzdGlvbiA9IFt0ZXh0U3VnZ2VzdGlvbnMgb2JqZWN0QXRJbmRl
eDppdGVtTnVtYmVyXTsKLSAgICBhdXRvIHJldXNhYmxlQ2VsbCA9IHJldGFpblB0cihbc2VsZi5s
aXN0VmlldyBkZXF1ZXVlUmV1c2FibGVDZWxsV2l0aElkZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25D
ZWxsUmV1c2VJZGVudGlmaWVyXSk7Ci0gICAgaWYgKCFyZXVzYWJsZUNlbGwpIHsKLSAgICAgICAg
cmV1c2FibGVDZWxsID0gYWRvcHROUyhbW1dLUXVpY2tib2FyZExpc3RJdGVtQ2VsbCBhbGxvY10g
aW5pdFdpdGhTdHlsZTpVSVRhYmxlVmlld0NlbGxTdHlsZURlZmF1bHQgcmV1c2VJZGVudGlmaWVy
OnRleHRTdWdnZXN0aW9uQ2VsbFJldXNlSWRlbnRpZmllcl0pOwotICAgICAgICBbcmV1c2FibGVD
ZWxsIGl0ZW1MYWJlbF0ubnVtYmVyT2ZMaW5lcyA9IDE7Ci0gICAgICAgIFtyZXVzYWJsZUNlbGwg
aXRlbUxhYmVsXS5saW5lQnJlYWtNb2RlID0gTlNMaW5lQnJlYWtCeVRydW5jYXRpbmdUYWlsOwot
ICAgICAgICBbcmV1c2FibGVDZWxsIGl0ZW1MYWJlbF0uYWxsb3dzRGVmYXVsdFRpZ2h0ZW5pbmdG
b3JUcnVuY2F0aW9uID0gWUVTOwotICAgIH0KLQotICAgIENHRmxvYXQgdmlld1dpZHRoID0gQ0dS
ZWN0R2V0V2lkdGgoc2VsZi5saXN0Vmlldy5ib3VuZHMpOwotICAgIFtyZXVzYWJsZUNlbGwgY29u
ZmlndXJlRm9yVGV4dDp0ZXh0U3VnZ2VzdGlvbi5kaXNwbGF5VGV4dCB3aWR0aDp2aWV3V2lkdGhd
OwotCi0gICAgLy8gVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgLWNvbmZpZ3VyZUZvclRleHQ6d2lk
dGg6IGNhdXNlcyB0aGUgdGV4dCBsYWJlbCB0byBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlIGNlbGwu
Ci0gICAgLy8gQWRqdXN0IGZvciB0aGlzIGJ5IHNocmlua2luZyB0aGUgbGFiZWwgd2lkdGggdG8g
YWN0dWFsbHkgZml0IHRoZSBib3VuZHMgb2YgdGhlIGNlbGwuCi0gICAgW3JldXNhYmxlQ2VsbCBp
dGVtTGFiZWxdLmZyYW1lID0gVUlSZWN0SW5zZXQoW3JldXNhYmxlQ2VsbCBjb250ZW50Vmlld10u
Ym91bmRzLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpvbnRhbE1hcmdpbiwgMCwgdGV4dFN1
Z2dlc3Rpb25MYWJlbEhvcml6b250YWxNYXJnaW4pOwotICAgIHJldHVybiByZXVzYWJsZUNlbGwu
YXV0b3JlbGVhc2UoKTsKKyAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgYWxsb3dzTGFuZ3VhZ2VT
ZWxlY3Rpb25Gb3JMaXN0Vmlld0NvbnRyb2xsZXI6c2VsZl07CiB9CiAKLS0gKE5TU3RyaW5nICop
bGlzdEl0ZW1DZWxsUmV1c2VJZGVudGlmaWVyCistIChCT09MKXN1cHBvcnRzRGljdGF0aW9uSW5w
dXQKIHsKLSAgICByZXR1cm4gdGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyOworICAg
IHJldHVybiBbc2VsZi5kZWxlZ2F0ZSBhbGxvd3NEaWN0YXRpb25JbnB1dEZvckxpc3RWaWV3Q29u
dHJvbGxlcjpzZWxmXTsKIH0KIAotI2lmIEhBVkUoUVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdT
KQotCi0tIChDbGFzcylsaXN0SXRlbUNlbGxDbGFzcworLSAoQk9PTClzaG91bGRTaG93VHJheVZp
ZXcKIHsKLSAgICByZXR1cm4gW1dLUXVpY2tib2FyZExpc3RDb2xsZWN0aW9uVmlld0l0ZW1DZWxs
IGNsYXNzXTsKKyAgICByZXR1cm4gc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dDsKIH0KIAotLSAo
UFVJQ1F1aWNrYm9hcmRMaXN0Q29sbGVjdGlvblZpZXdJdGVtQ2VsbCAqKWl0ZW1DZWxsRm9yTGlz
dEl0ZW06KE5TSW50ZWdlcilpdGVtTnVtYmVyIGZvckluZGV4UGF0aDooTlNJbmRleFBhdGggKilp
bmRleFBhdGgKKy0gKEJPT0wpc2hvdWxkU2hvd1RleHRGaWVsZAogewotICAgIE5TQXJyYXk8VUlU
ZXh0U3VnZ2VzdGlvbiAqPiAqdGV4dFN1Z2dlc3Rpb25zID0gW3NlbGYuZGVsZWdhdGUgdGV4dFN1
Z2dlc3Rpb25zRm9yTGlzdFZpZXdDb250cm9sbGVyOnNlbGZdOwotICAgIGlmICh0ZXh0U3VnZ2Vz
dGlvbnMuY291bnQgPD0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oaXRlbU51bWJlcikpIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQot
Ci0gICAgVUlUZXh0U3VnZ2VzdGlvbiAqdGV4dFN1Z2dlc3Rpb24gPSBbdGV4dFN1Z2dlc3Rpb25z
IG9iamVjdEF0SW5kZXg6aXRlbU51bWJlcl07Ci0gICAgYXV0byByZXVzYWJsZUNlbGwgPSByZXRh
aW5QdHIoW3NlbGYuY29sbGVjdGlvblZpZXcgZGVxdWV1ZVJldXNhYmxlQ2VsbFdpdGhSZXVzZUlk
ZW50aWZpZXI6dGV4dFN1Z2dlc3Rpb25DZWxsUmV1c2VJZGVudGlmaWVyIGZvckluZGV4UGF0aDpp
bmRleFBhdGhdKTsKLQotICAgIFtyZXVzYWJsZUNlbGwgYm9keUxhYmVsXS5udW1iZXJPZkxpbmVz
ID0gMTsKLSAgICBbcmV1c2FibGVDZWxsIGJvZHlMYWJlbF0ubGluZUJyZWFrTW9kZSA9IE5TTGlu
ZUJyZWFrQnlUcnVuY2F0aW5nVGFpbDsKLSAgICBbcmV1c2FibGVDZWxsIGJvZHlMYWJlbF0uYWxs
b3dzRGVmYXVsdFRpZ2h0ZW5pbmdGb3JUcnVuY2F0aW9uID0gWUVTOwotICAgIFtyZXVzYWJsZUNl
bGwgc2V0VGV4dDp0ZXh0U3VnZ2VzdGlvbi5kaXNwbGF5VGV4dF07Ci0KLSAgICAvLyBUaGUgZGVm
YXVsdCBiZWhhdmlvciBvZiAtY29uZmlndXJlRm9yVGV4dDp3aWR0aDogY2F1c2VzIHRoZSB0ZXh0
IGxhYmVsIHRvIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgY2VsbC4KLSAgICAvLyBBZGp1c3QgZm9y
IHRoaXMgYnkgc2hyaW5raW5nIHRoZSBsYWJlbCB3aWR0aCB0byBhY3R1YWxseSBmaXQgdGhlIGJv
dW5kcyBvZiB0aGUgY2VsbC4KLSAgICBbcmV1c2FibGVDZWxsIGJvZHlMYWJlbF0uZnJhbWUgPSBV
SVJlY3RJbnNldChbcmV1c2FibGVDZWxsIGNvbnRlbnRWaWV3XS5ib3VuZHMsIDAsIHRleHRTdWdn
ZXN0aW9uTGFiZWxIb3Jpem9udGFsTWFyZ2luLCAwLCB0ZXh0U3VnZ2VzdGlvbkxhYmVsSG9yaXpv
bnRhbE1hcmdpbik7Ci0gICAgcmV0dXJuIHJldXNhYmxlQ2VsbC5hdXRvcmVsZWFzZSgpOworICAg
IHJldHVybiAhc2VsZi5yZXF1aXJlc051bWVyaWNJbnB1dDsKIH0KIAotI2VuZGlmIC8vIEhBVkUo
UVVJQ0tCT0FSRF9DT0xMRUNUSU9OX1ZJRVdTKQotCiAtIChCT09MKXN1cHBvcnRzQXJvdWV0SW5w
dXQKIHsKLSAgICByZXR1cm4gW3NlbGYuZGVsZWdhdGUgbnVtZXJpY0lucHV0TW9kZUZvckxpc3RW
aWV3Q29udHJvbGxlcjpzZWxmXSA9PSBXS051bWJlclBhZElucHV0TW9kZU5vbmU7CisgICAgcmV0
dXJuICFzZWxmLnJlcXVpcmVzTnVtZXJpY0lucHV0OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tUaW1lUGlja2VyVmlld0NvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3
Q29udHJvbGxlci5oCmluZGV4IDY1NThjZGRlODIyY2JkOTVmYmIwNzI5M2E2ZGJmM2Y4NmNjYzVm
YTMuLjlhN2VhMTAwZGVlNDE2YTliZTY3OGFiZTcyNDUwMjk1NDBhNWRiM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNrZXJWaWV3Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS1RpbWVQaWNr
ZXJWaWV3Q29udHJvbGxlci5oCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpZiBIQVZFKFBFUFBFUl9V
SV9DT1JFKQogCi0jaW1wb3J0ICJXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaCIKKyNp
bXBvcnQgIldLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCIKIAogQGludGVyZmFj
ZSBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlciA6IFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xs
ZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNTk5YzFmZTk4M2FmYmU4ZmI1YWMzMmQ3YjE0ODQ2NmY1Mzc5NDg3Zi4uOTI3NTI1MzY4
MTE2MzIwODcxNGM3YjRhZjIyZDU5YTFmYWE0MDUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDM3LDcgKzIwMzcsNyBAQAogCQlG
NENCMDlFNTIyNUQ1QTA5MDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNENCMDlFNDIyNUQ1
QTAzMDA4OTE0ODcgLyogV2Vic2l0ZU1lZGlhU291cmNlUG9saWN5LmggKi87IH07CiAJCUY0Q0Yx
RTlEMjVFNDBEQ0MwMDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3Jj
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Q0Yx
RTlCMjVFNDBEQ0MwMDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3Jj
ZXIuaCAqLzsgfTsKIAkJRjRENUY1MUQyMDYwODdBMTAwMzhCQkE4IC8qIFdLVGV4dElucHV0TGlz
dFZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEQ1RjUxOTIwNjA4N0EwMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0Nv
bnRyb2xsZXIuaCAqLzsgfTsKLQkJRjRENUY1MUYyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExp
c3RWaWV3Q29udHJvbGxlci5oICovOyB9OworCQlGNEQ1RjUxRjIwNjA4N0ExMDAzOEJCQTggLyog
V0tRdWlja2JvYXJkVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCAqLzsgfTsKIAkJRjREQjU0RTYyMzE5
RTczMzAwOUUzMTU1IC8qIFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0REI1NEU0MjMx
OUU3MzMwMDlFMzE1NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmgg
Ki87IH07CiAJCUY0RUM5NEUzMjM1NkNDNTcwMDBCQjYxNCAvKiBBcHBsaWNhdGlvblNlcnZpY2Vz
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUQw
NEUyODIxRjdDNzNEMDA3Njc0MUQgLyogQXBwbGljYXRpb25TZXJ2aWNlc1NQSS5oICovOyB9Owog
CQlGNEZFMEEzQjI0NjMyQjYwMDAyNjMxRTEgLyogQ29jb2FDb2xvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRGRTBBM0EyNDYzMkIxMDAwMjYzMUUx
IC8qIENvY29hQ29sb3IuaCAqLzsgfTsKQEAgLTYwMDEsOCArNjAwMSw3IEBACiAJCUY0Q0YxRTlD
MjVFNDBEQ0MwMDBGOUQ3MyAvKiBHZXN0dXJlUmVjb2duaXplckNvbnNpc3RlbmN5RW5mb3JjZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHZXN0dXJlUmVjb2du
aXplckNvbnNpc3RlbmN5RW5mb3JjZXIubW07IHBhdGggPSBpb3MvR2VzdHVyZVJlY29nbml6ZXJD
b25zaXN0ZW5jeUVuZm9yY2VyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ1
RjUxOTIwNjA4N0EwMDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRy
b2xsZXIuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEQ1RjUxQTIwNjA4N0ExMDAzOEJCQTgg
LyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBXS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbTsgcGF0
aCA9IGlvcy9mb3Jtcy9XS1RleHRJbnB1dExpc3RWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1
aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJRjRENUY1MUMyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLUXVpY2ti
b2FyZExpc3RWaWV3Q29udHJvbGxlci5tbTsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1aWNrYm9hcmRM
aXN0Vmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0RDVG
NTFCMjA2MDg3QTEwMDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlckRlbGVnYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLUXVpY2tib2FyZFZpZXdDb250
cm9sbGVyRGVsZWdhdGUuaDsgcGF0aCA9IGlvcy9mb3Jtcy9XS1F1aWNrYm9hcmRWaWV3Q29udHJv
bGxlckRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0REI1NEU0MjMx
OUU3MzMwMDlFMzE1NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSGlnaGxpZ2h0TG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIuaDsgcGF0aCA9IGlvcy9XS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVS
ZWNvZ25pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0REI1NEU1MjMxOUU3
MzMwMDlFMzE1NSAvKiBXS0hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tIaWdobGlnaHRMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplci5tbTsgcGF0aCA9IGlvcy9XS0hpZ2hsaWdodExvbmdQcmVzc0dl
c3R1cmVSZWNvZ25pemVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNEY1OUFE
MzIwNjVBNUM5MDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlzdFZpZXdDb250cm9sbGVyLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTZWxlY3RNZW51TGlzdFZp
ZXdDb250cm9sbGVyLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLU2VsZWN0TWVudUxpc3RWaWV3Q29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMzczLDggKzExMzcy
LDcgQEAKIAkJCQkyRUE3QjNENDIwMjZDRjIzMDA5Q0U1QUMgLyogV0tOdW1iZXJQYWRWaWV3Lm1t
ICovLAogCQkJCTJFQTdCM0NGMjAyNkNFRjgwMDlDRTVBQyAvKiBXS051bWJlclBhZFZpZXdDb250
cm9sbGVyLmggKi8sCiAJCQkJMkVBN0IzRDAyMDI2Q0VGODAwOUNFNUFDIC8qIFdLTnVtYmVyUGFk
Vmlld0NvbnRyb2xsZXIubW0gKi8sCi0JCQkJRjRENUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdL
UXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlci5oICovLAotCQkJCUY0RDVGNTFDMjA2MDg3QTEw
MDM4QkJBOCAvKiBXS1F1aWNrYm9hcmRMaXN0Vmlld0NvbnRyb2xsZXIubW0gKi8sCisJCQkJRjRE
NUY1MUIyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdh
dGUuaCAqLywKIAkJCQlGNEY1OUFENDIwNjVBNUNBMDA2Q0FBNDYgLyogV0tTZWxlY3RNZW51TGlz
dFZpZXdDb250cm9sbGVyLmggKi8sCiAJCQkJRjRGNTlBRDMyMDY1QTVDOTAwNkNBQTQ2IC8qIFdL
U2VsZWN0TWVudUxpc3RWaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQlGNEQ1RjUxOTIwNjA4N0Ew
MDAzOEJCQTggLyogV0tUZXh0SW5wdXRMaXN0Vmlld0NvbnRyb2xsZXIuaCAqLywKQEAgLTEyOTEy
LDcgKzEyOTEwLDcgQEAKIAkJCQk1MTJGNThGQzEyQTg4QTU0MDA2Mjk1MzAgLyogV0tQcm90ZWN0
aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNzJENEM5MUU3MzVGMDkwMEVCNDI5MCAv
KiBXS1Byb3RlY3Rpb25TcGFjZU5TLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MThBQ0FFQTEyQUVF
NkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRjRENUY1MUYyMDYwODdBMTAwMzhCQkE4IC8qIFdLUXVpY2tib2FyZExpc3RWaWV3Q29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjRENUY1MUYyMDYwODdBMTAwMzhCQkE4IC8qIFdL
UXVpY2tib2FyZFZpZXdDb250cm9sbGVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RDAxQkNEMTkwNUQ1NDkwMEM5QzQ1RiAvKiBXS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVt
cHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5RTMyOUIxODIyRTFDQzAwRjVEMDRDIC8qIFdL
UmVtb3RlT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTlFMzI5RjE4MjJGRUREMDBGNUQw
NEMgLyogV0tSZW1vdGVPYmplY3RDb2Rlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9X
ZWJLaXRMaWJyYXJpZXMvQ2hhbmdlTG9nIGIvV2ViS2l0TGlicmFyaWVzL0NoYW5nZUxvZwppbmRl
eCBjOWQxYjU5YzdiN2ZiMjI1YjY1ZWFkNzI0ODc0MGQ1OGIxNjNiZmVlLi4wYTQ2NjJmNWQ2MGJh
YzQyNTdmYzJhNmE5YTE4MGEyODgxZmQ3M2JiIDEwMDY0NAotLS0gYS9XZWJLaXRMaWJyYXJpZXMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdExpYnJhcmllcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAyMS0wNi0xNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbd2F0Y2hPU10gUmVlbmFibGUgbW9kZXJuIHRleHQgaW5wdXQgVUkgZm9yIG5vbi1u
dW1lcmljIHRleHQgaW5wdXQgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyNjk4OAorICAgICAgICByZGFyOi8vNzgxMDI5NTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogV2ViS2l0UHJpdmF0ZUZyYW1l
d29ya1N0dWJzL3dhdGNob3MvNy9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50
YmQ6CisgICAgICAgICogV2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvOC9QZXBw
ZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29yZS50YmQ6CisKIDIwMjEtMDYtMTUgIEpvbmF0
aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIFt0dk9TIDE1XSBTdXBw
b3J0IGJ1aWxkaW5nIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0TGlicmFyaWVzL1dlYktpdFBy
aXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzcvUGVwcGVyVUlDb3JlLmZyYW1ld29yay9QZXBw
ZXJVSUNvcmUudGJkIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVi
cy93YXRjaG9zLzcvUGVwcGVyVUlDb3JlLmZyYW1ld29yay9QZXBwZXJVSUNvcmUudGJkCmluZGV4
IGY5NDFhOWVhYjc1Y2QwYjE0OGY0NDlhNTczOTgwMmZlY2JmYTQyNzYuLmI3MTQ3NzQxNDIyYTll
ODA5NTI5NjcxMmM4MzlmMDUyNTU5NGM5YzIgMTAwNjQ0Ci0tLSBhL1dlYktpdExpYnJhcmllcy9X
ZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy83L1BlcHBlclVJQ29yZS5mcmFtZXdv
cmsvUGVwcGVyVUlDb3JlLnRiZAorKysgYi9XZWJLaXRMaWJyYXJpZXMvV2ViS2l0UHJpdmF0ZUZy
YW1ld29ya1N0dWJzL3dhdGNob3MvNy9QZXBwZXJVSUNvcmUuZnJhbWV3b3JrL1BlcHBlclVJQ29y
ZS50YmQKQEAgLTgsNSArOCw1IEBAIGV4cG9ydHM6CiAgICAgb2JqYy1jbGFzc2VzOiAgICBbIFBV
SUNRdWlja2JvYXJkTGlzdFRyYXlCdXR0b24sIFBVSUNBY3Rpb25Hcm91cCwgUFVJQ1F1aWNrYm9h
cmRMaXN0SXRlbUNlbGwsIFBVSUNBY3Rpb25Db250cm9sbGVyLAogICAgICAgICAgICAgICAgICAg
ICAgICBQVUlDQ3Jvd25JbnB1dFNlcXVlbmNlciwgUFVJQ1BpY2tlclZpZXcsIFBVSUNRdWlja2Jv
YXJkTGlzdEl0ZW1DZWxsLCBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgUFVJQ0FwcGxpY2F0aW9uLCBQVUlDUmVzb3VyY2VzLCBQVUlDUXVp
Y2tib2FyZFZpZXdDb250cm9sbGVyLCBQVUlDUXVpY2tib2FyZExpc3RWaWV3Q29udHJvbGxlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgUFVJQ1F1aWNrYm9hcmRWaWV3Q29udHJvbGxlciwgUFVJ
Q1BpY2tlclZpZXcgXQorICAgICAgICAgICAgICAgICAgICAgICBQVUlDUXVpY2tib2FyZFZpZXdD
b250cm9sbGVyLCBQVUlDUGlja2VyVmlldywgUFVJQ1RleHRJbnB1dENvbnRleHQsIFBVSUNRdWlj
a2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIF0KIC4uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0TGli
cmFyaWVzL1dlYktpdFByaXZhdGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzgvUGVwcGVyVUlDb3Jl
LmZyYW1ld29yay9QZXBwZXJVSUNvcmUudGJkIGIvV2ViS2l0TGlicmFyaWVzL1dlYktpdFByaXZh
dGVGcmFtZXdvcmtTdHVicy93YXRjaG9zLzgvUGVwcGVyVUlDb3JlLmZyYW1ld29yay9QZXBwZXJV
SUNvcmUudGJkCmluZGV4IGRlYjM2ZmRjMTg1NmQ0NDgwNWE1YzQ0ODI0OTM3Y2M0NWFhNjM3NTYu
LmM2NTQ0NDgwZDY1ZmY0Yjk3NTIwZjZjNGI1YzY4ZTRhMjU0NWEwMGQgMTAwNjQ0Ci0tLSBhL1dl
YktpdExpYnJhcmllcy9XZWJLaXRQcml2YXRlRnJhbWV3b3JrU3R1YnMvd2F0Y2hvcy84L1BlcHBl
clVJQ29yZS5mcmFtZXdvcmsvUGVwcGVyVUlDb3JlLnRiZAorKysgYi9XZWJLaXRMaWJyYXJpZXMv
V2ViS2l0UHJpdmF0ZUZyYW1ld29ya1N0dWJzL3dhdGNob3MvOC9QZXBwZXJVSUNvcmUuZnJhbWV3
b3JrL1BlcHBlclVJQ29yZS50YmQKQEAgLTksNSArOSw1IEBAIGV4cG9ydHM6CiAgICAgICAgICAg
ICAgICAgICAgICAgIFBVSUNDcm93bklucHV0U2VxdWVuY2VyLCBQVUlDUGlja2VyVmlldywgUFVJ
Q1F1aWNrYm9hcmRMaXN0SXRlbUNlbGwsIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250cm9sbGVy
LAogICAgICAgICAgICAgICAgICAgICAgICBQVUlDQXBwbGljYXRpb24sIFBVSUNSZXNvdXJjZXMs
IFBVSUNRdWlja2JvYXJkVmlld0NvbnRyb2xsZXIsIFBVSUNRdWlja2JvYXJkTGlzdFZpZXdDb250
cm9sbGVyLAogICAgICAgICAgICAgICAgICAgICAgICBQVUlDUXVpY2tib2FyZFZpZXdDb250cm9s
bGVyLCBQVUlDUGlja2VyVmlldywgUFVJQ1RleHRJbnB1dENvbnRleHQsIFBVSUNRdWlja2JvYXJk
Q29udHJvbGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgUFVJQ1F1aWNrYm9hcmRSZW1vdGVW
aWV3Q29udHJvbGxlciBdCisgICAgICAgICAgICAgICAgICAgICAgIFBVSUNRdWlja2JvYXJkUmVt
b3RlVmlld0NvbnRyb2xsZXIsIFBVSUNRdWlja2JvYXJkTWVzc2FnZVZpZXdDb250cm9sbGVyIF0K
IC4uLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>