<?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>236220</bug_id>
          
          <creation_ts>2022-02-07 01:17:29 -0800</creation_ts>
          <short_desc>Refactor RenderLayer::scrollRectToVisible</short_desc>
          <delta_ts>2022-07-19 03:00:31 -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>Scrolling</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="Martin Robinson">mrobinson</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>annulen</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1838028</commentid>
    <comment_count>0</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-07 01:17:29 -0800</bug_when>
    <thetext>RenderLayer::scrollRectToVisible has three different paths including one for RenderLayers that scroll, one for top-level FrameViews, and one for child FrameViews. The combined complexity of the three paths makes the method quite large and hard to understand. This bug tracks refactoring the logic so that it&apos;s easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838124</commentid>
    <comment_count>1</comment_count>
      <attachid>451093</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-07 07:12:35 -0800</bug_when>
    <thetext>Created attachment 451093
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838177</commentid>
    <comment_count>2</comment_count>
      <attachid>451109</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-07 08:31:30 -0800</bug_when>
    <thetext>Created attachment 451109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838560</commentid>
    <comment_count>3</comment_count>
      <attachid>451219</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-08 01:09:35 -0800</bug_when>
    <thetext>Created attachment 451219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1838766</commentid>
    <comment_count>4</comment_count>
      <attachid>451275</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-08 10:51:44 -0800</bug_when>
    <thetext>Created attachment 451275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839102</commentid>
    <comment_count>5</comment_count>
      <attachid>451362</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-09 05:27:37 -0800</bug_when>
    <thetext>Created attachment 451362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1839625</commentid>
    <comment_count>6</comment_count>
      <attachid>451362</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-02-10 06:30:01 -0800</bug_when>
    <thetext>Comment on attachment 451362
Patch

Okay. After fighting with the CI, I think this patch is ready for review. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841163</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-14 01:18:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/88893284&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1872282</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2022-05-27 01:20:21 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/1088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885049</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-07-19 03:00:25 -0700</bug_when>
    <thetext>Committed 252595@main (ba34b343955e): &lt;https://commits.webkit.org/252595@main&gt;

Reviewed commits have been landed. Closing PR #1088 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451093</attachid>
            <date>2022-02-07 07:12:35 -0800</date>
            <delta_ts>2022-02-07 08:34:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236220-20220207161234.patch</filename>
            <type>text/plain</type>
            <size>89510</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUyMmRhMmQ4ZmYyNWJk
NmZiY2Y0NjNkN2M0OGFjYTJmYzRiZjM3Ni4uZmJmZGU3NDE4ZjUxM2YzMDlmOTgwODM5MmY1OTMx
MDY0NGI3OTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAyLTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWZhY3RvciBS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBub3QgY2hh
bmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1vdmUgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUgdG8gYSBzdGF0aWMgbWV0aG9kIGluIEZyYW1lVmlldyBhbmQgY29tYmluZSBpdCB3aXRo
CisgICAgICAgIFJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4gVGhpcyBhbHNvIHNw
bGl0cyBvdXQgdGhlIHRocmVlIGNvZGUgcGF0aHMgaW4gdGhpcyBtZXRob2QKKyAgICAgICAgaW50
byB0aHJlZSBzZXBhcmF0ZSBtZXRob2RzLCB0d28gb2YgdGhlbSBvbiBGcmFtZVZpZXcgYW5kIG9u
ZSBvZiB0aGVtIG9uCisgICAgICAgIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAg
ICAgSW4gYWRkaXRpb25zLCB2YXJpb3VzIG1ldGhvZHMgYXJlIG1vdmVkIGFuZCByZW5hbWVkIHRv
IG1ha2UgdGhlbSBtb3JlCisgICAgICAgIHVuZGVyc3RhbmRhYmxlLiBTY3JvbGxBbGlnbm1lbnQg
bXVzdCBtb3ZlIHRvIHBsYXRmb3JtLCBiZWNhdXNlIGdldFJlY3RUb0V4cG9zZSBtb3ZlcyB0bwor
ICAgICAgICBTY3JvbGxhYmxlQXJlYSBhbmQgaXMgcmVuYW1lZCB0byBnZXRSZWN0VG9FeHBvc2VG
b3JTY3JvbGxJbnRvVmlldy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOb3RWaXNpYmxlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24pOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Ny
b2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxQb3NpdGlv
bkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpnZXRQb3NzaWJseUZpeGVkUmVjdFRvRXhwb3NlIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
Z2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNj
cm9sbEludG9WaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRv
c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJn
ZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpmcmFtZUVsZW1lbnRBbmRWaWV3UGVybWl0U2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjphbGxvd3NDdXJyZW50U2Nyb2xsIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xs
UG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorCiAyMDIyLTAyLTA3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBTdXBwcmVzcyBub24tZm9yZWdyb3VuZCBw
YWludCBwaGFzZXMgZm9yIFNWRyBzaGFwZXMgJiBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwppbmRleCBiNjdkYmNjYjMxNjZkZTY3MzgxODA1ODdlMjg4MTkzODFlNWVkOGQ2Li4wNGJi
NmU5YzMyMGUzY2MxYTgwMzFmMWU1MzdmZmMyZDlkZTgwMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMDcgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIFJlbmRlckxheWVyOjpz
Y3JvbGxSZWN0VG9WaXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
Y3JvbGxET01SYW5nZVRvVmlzaWJsZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3Njcm9sbERP
TVJhbmdlVG9WaXNpYmxlOndpdGhJbnNldDpdKToKKwogMjAyMi0wMi0wNiAgVHlsZXIgV2lsY29j
ayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBZGQgaW50ZXJuYWwtb25seSBm
bGFnIHRvIGVuYWJsZSBXSVAgZGlzcGxheTogY29udGVudHMgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggODIxNjVmZGM4MDhkMDNmNzk5YjAzYWE3ZWY3MzUyZTA4ODhjZGRlZi4uZDNmZTY4
Nzk2ZGMzZTRlMDE4M2NjMzgwZDQ2MTJmNDE1NzhmY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMzEzLDYgKzEzMTMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmgKICAgICBwbGF0Zm9ybS9TY3JlZW5Qcm9w
ZXJ0aWVzLmgKICAgICBwbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
CisgICAgcGxhdGZvcm0vU2Nyb2xsQWxpZ25tZW50LmgKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25Nb21lbnR1bS5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAogICAgIHBsYXRm
b3JtL1Njcm9sbFR5cGVzLmgKQEAgLTE4NTUsNyArMTg1Niw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAogICAgIHJl
bmRlcmluZy9SZW5kZXJWaWV3LmgKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKLSAgICBy
ZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKICAgICByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmgKICAgICByZW5kZXJpbmcvVGV4dEJveFNlbGVjdGFibGVSYW5nZS5oCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggOThiMDM1NzkxYTZlYmIwZDlmMTU3MWE1N2E0MmVjZDVmMTU1
Y2ZiOS4uOWE2MTFkNTk1OGM4OGIyMmIwYTUyNzllNDYzMWRjM2IyMzZiODE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTU2Myw2ICs1NjMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuaAogICAgIHBsYXRmb3JtL1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmgKICAgICBwbGF0
Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorICAgIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVu
dC5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKICAgICBwbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4MTRhYTRmZGI4YmQ0ZWYxZWM2YWZjMDViMGU4NDBjZjhm
ZGVlMzAzLi4xZjYyODU0ZWYyM2QyNmRhZDNhN2UyOTJmNmE1YmM2MzY3YzZjNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTg5OCw2ICsxODk4LDcgQEAgcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3Bw
CiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCiBwbGF0Zm9ybS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuY3BwCiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuY3BwCitwbGF0Zm9y
bS9TY3JvbGxBbGlnbm1lbnQuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uY3BwCiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW0uY3BwCkBAIC0yMzk0LDcgKzIzOTUsNiBAQCByZW5kZXJpbmcvUmVuZGVyVlRUQ3Vl
LmNwcAogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAotcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5j
cHAKIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCiByZW5kZXJpbmcvU3R5bGVkTWFy
a2VkVGV4dC5jcHAKIHJlbmRlcmluZy9UYWJsZUxheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTc4ZWE5ZTRkOWRi
MTM3MWRhN2Y1NGZlMjRmZGU1MzcwYmU4MzVkLi5hYTQ2MjEwMTMzNjlkYmMzNWIzZGI4MGY0ZjVm
MDQxZmNhOTcxMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMDQzLDYgKzIwNDMsNyBAQAogCQk1OUMyODA0NjEzOERDMjQx
MDA3OUI3RTIgLyogWE1MRXJyb3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUMyODA0NDEzOERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmggKi87
IH07CiAJCTVBNTc0RjI1MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUE1NzRGMjMxMzFEQjkzOTAw
NDcxQjg4IC8qIFJlbmRlclF1b3RlLmggKi87IH07CiAJCTVBNTc0RjI5MTMxREI5NkQwMDQ3MUI4
OCAvKiBRdW90ZXNEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QTU3NEYyNzEzMURCOTZEMDA0NzFCODggLyogUXVvdGVzRGF0YS5oICovOyB9Owor
CQk1QjJENzY3MjI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjJENzY3MDI3QjE0NjA4MDBG
OUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJh
d0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCMzA2OTVCMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggKi87IH07CiAJ
CTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0NjY1NUYy
NUQxNEMwOTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUI0NjY1NjQyNUQxNEMw
QTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjQ2NjU2MDI1RDE0QzBBMDAwQ0ZFMTQgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjA3Nyw3ICsyMDc4LDYgQEAKIAkJNUNFRUU0MzYxRjVGOEYy
MTAwMTRBNUY1IC8qIFJlY3RFZGdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVEMjFBODAz
MTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEMjFBODAxMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJW
VFRQYXJzZXIuaCAqLzsgfTsKIAkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZl
cnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVE
NTk3NUIxMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNUQ5MjVCNjgwRjY0RDRERDAwQjg0
N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUQ5MjVCNjYwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEFsaWdubWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVE
QTVFMEZEMTAyQjk1MzgwMDA4OENGOSAvKiBKU1dlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURBNUUwRkIxMDJCOTUzODAwMDg4Q0Y5IC8q
IEpTV2ViU29ja2V0LmggKi87IH07CiAJCTVEQjFCQzZBMTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFu
c2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLzsgfTsK
IAkJNURGN0Y1QzIwRjAxRjkyQTAwNTI2QjRCIC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NjU4MEVGMDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggKi87IH07CkBAIC0x
MDU2MSw2ICsxMDU2MSw4IEBACiAJCTVBNTc0RjI3MTMxREI5NkQwMDQ3MUI4OCAvKiBRdW90ZXNE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3Rlc0RhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUE5MTQ2OUU4RTlGODQ4NUMzN0EyODc2IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVCMUUwRTQzMjVEMTYyOUIwMDI3MjI4MSAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjJENzY2RTI3QjE0NjA3MDBGOUJBM0Mg
LyogU2Nyb2xsQWxpZ25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcm9sbEFsaWdubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVC
MkQ3NjcwMjdCMTQ2MDgwMEY5QkEzQyAvKiBTY3JvbGxBbGlnbm1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVCMzA2OTVBMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMRHJhd0J1ZmZl
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjMwNjk1QjE4QjNEMzQ1MDA5
OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHTERyYXdCdWZmZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVC
MzA2OTVDMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHTERyYXdCdWZmZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwNjY4LDggKzEwNjcwLDYgQEAKIAkJNUQyMUE4MDExM0VDRTVERjAwQkI3MDY0
IC8qIFdlYlZUVFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJW
VFRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1OTc1QjExOTYzNUYx
MTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3lzdGVtVmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDU5
NzVCMjE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVZlcnNpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsQWxpZ25t
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUQ5MjVCNjYwRjY0RDRERDAw
Qjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxBbGlnbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURB
NUUwRkExMDJCOTUzODAwMDg4Q0Y5IC8qIEpTV2ViU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNURBNUUwRkIxMDJCOTUzODAwMDg4Q0Y5IC8qIEpTV2ViU29ja2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViU29ja2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNmb3JtU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDA2Miw2ICszMDA2Miw4IEBACiAJ
CQkJNDExMjIzQjgyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLmggKi8sCiAJCQkJQkM4QUUzNEMxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVB
cmVhLmNwcCAqLywKIAkJCQlCQzhBRTM0RDEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFy
ZWEuaCAqLywKKwkJCQk1QjJENzY2RTI3QjE0NjA3MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50
LmNwcCAqLywKKwkJCQk1QjJENzY3MDI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50
LmggKi8sCiAJCQkJMEY2RUFENjYyNkZFNzI4MDAwMDY0RDAzIC8qIFNjcm9sbEFuaW1hdGlvbi5j
cHAgKi8sCiAJCQkJMEZBNjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5o
ICovLAogCQkJCTBGQzY5MkJDMjU3QzBGNDEwMDk4RTNGOSAvKiBTY3JvbGxBbmltYXRpb25LaW5l
dGljLmNwcCAqLywKQEAgLTMyMTU4LDggKzMyMTYwLDYgQEAKIAkJCQlCRTIwNTA3QzE4QTQ1OEIx
MDA4MDY0N0UgLyogUmVuZGVyVlRUQ3VlLmggKi8sCiAJCQkJQTg3MURGRTEwQTE1Mzc2QjAwQjEy
QTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi8sCiAJCQkJQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4
IC8qIFJlbmRlcldpZGdldC5oICovLAotCQkJCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxBbGlnbm1lbnQuY3BwICovLAotCQkJCTVEOTI1QjY2MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxBbGlnbm1lbnQuaCAqLywKIAkJCQk0NEIzOEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLywKIAkJCQk0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1OEQgLyog
U2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8sCiAJCQkJRTQ0MEZENTQyNUE0QUZFRTAwRjdDODQ5IC8q
IFN0eWxlZE1hcmtlZFRleHQuY3BwICovLApAQCAtMzcwNjcsNyArMzcwNjcsNyBAQAogCQkJCTIy
OEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xs
YWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLAotCQkJCTVEOTI1QjY4MEY2NEQ0REQwMEI4NDdGMCAv
KiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMkQ3NjcyMjdCMTQ2MDgw
MEY5QkEzQyAvKiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTYxQjBF
MjZGNDMyMTMwMDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEUwMDlDMjZGOTJEODQwMEFDRTlDNiAvKiBTY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1h
dG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGVkMWM2NWI2MWMwZWVkMWJlMzVjOGQy
ZDY2NDE4ODdjNzRjYWZkODAuLjBkZDk4Y2RkYTI0M2ZkMTEwZTAwZDllMjUxYTFmYmUzMGU0ZGRj
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMzI2Niw3ICszMjY2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25z
JgogICAgICAgICBwYXJlbnRPYmplY3QoKS0+c2Nyb2xsVG9NYWtlVmlzaWJsZSgpOwogCiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIt
PnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRpbmdCb3hSZWN0KCksIGZhbHNlLCBvcHRpb25zKTsK
KyAgICAgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kaW5nQm94UmVjdCgp
LCAqcmVuZGVyZXIsIGZhbHNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1YmZv
Y3VzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKaW5kZXggNGQz
Y2ZiNzViYTYwNjE4NDJmMmE2MTMxZmUwNzllNDU2NzUwNGQwMi4uNmIyMjY2NDJiODMyZDBiYTgy
NzFiNDY4ZjY5YWM3MTM1MDAxNzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRz
cGkuY3BwCkBAIC05OTMsNyArOTkzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OnNjcm9sbFRvTWFrZVZpc2libGUoaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2UKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9jb3JlT2JqZWN0LT5yZW5kZXJlcigpLT5zY3JvbGxS
ZWN0VG9WaXNpYmxlKHJlY3QsIGZhbHNlLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwg
YWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9KTsK
KyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgKm1fY29yZU9iamVjdC0+
cmVuZGVyZXIoKSwgZmFsc2UsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgs
IGFsaWduWSwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODUyMWMyNDAxOTExYzI2
MzFhNjc2NTk0ZDE5MjNlZTQ1MGU0ZGY0NC4uNzYyYjU0MTZlNGI2NmE5ZTc1ZDczMjc5ODBhMzM2
MGI4MDA0Y2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5LDcgQEAg
dm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxi
b29sLCBTY3JvbGxJbnRvVmlld09wdGkKICAgICAgICAgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6Tm8sCiAgICAgICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVo
YXZpb3I6OkF1dG8pCiAgICAgfTsKLSAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxl
KGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgdmlzaWJsZU9wdGlvbnMpOworICAgIEZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyKCksIGlu
c2lkZUZpeGVkLCB2aXNpYmxlT3B0aW9ucyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50
b1ZpZXcoYm9vbCBhbGlnblRvVG9wKSAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHZvaWQgRWxlbWVu
dDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKQogICAgIGF1dG8gYWxpZ25YID0gU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkOwogICAgIGFsaWduWC5kaXNhYmxlTGVn
YWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKTsKIAotICAgIHJlbmRlcmVyKCktPnNj
cm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlv
blJldmVhbE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmln
aW5TY3JvbGxpbmc6Ok5vIH0pOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShh
YnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVh
bE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3Jv
bGxpbmc6Ok5vIH0pOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOZWVkZWQo
Ym9vbCBjZW50ZXJJZk5lZWRlZCkKQEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgRWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29sIGNlbnRlcklmTmVlZGVkKQogICAgIGF1dG8gYWxp
Z25YID0gY2VudGVySWZOZWVkZWQgPyBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVk
ZWQgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQ7CiAgICAgYWxpZ25YLmRp
c2FibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZCgpOwogCi0gICAgcmVuZGVy
ZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRlRml4ZWQsIHsg
U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgsIGFsaWduWSwgU2hvdWxkQWxsb3dD
cm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CisgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9W
aXNpYmxlKGFic29sdXRlQm91bmRzLCAqcmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0
aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgsIGFsaWduWSwgU2hvdWxkQWxsb3dDcm9zc09y
aWdpblNjcm9sbGluZzo6Tm8gfSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJ
Zk5vdFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUpCkBAIC0xMDc2LDEwICsxMDc2LDgg
QEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShib29sIGNlbnRlcklm
Tm90VmlzaWJsZSkKICAgICAKICAgICBib29sIGluc2lkZUZpeGVkOwogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xs
TWFyZ2luKCZpbnNpZGVGaXhlZCk7Ci0gICAgaWYgKGNlbnRlcklmTm90VmlzaWJsZSkKLSAgICAg
ICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRl
Rml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduQ2VudGVySWZOb3RWaXNpYmxlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RW
aXNpYmxlLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMs
IGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25t
ZW50OjphbGlnblRvRWRnZUlmTm90VmlzaWJsZSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTm90VmlzaWJsZSwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7Cisg
ICAgYXV0byBhbGlnbiA9IGNlbnRlcklmTm90VmlzaWJsZSA/IFNjcm9sbEFsaWdubWVudDo6YWxp
Z25DZW50ZXJJZk5vdFZpc2libGUgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOb3RW
aXNpYmxlOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5k
cywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVh
bCwgYWxpZ24sIGFsaWduLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGFkYWI5
ZDFhOGNjN2MwOWRjZjlkNjc4NjhlM2ZlMDg5NzIzNGRiZmYuLjdjMTRhNzM4MDUyMjdmNjNhOTNh
M2JlNjBjODU4ZDU2MjcyMGI5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCkBAIC0yNDU3LDI0ICsyNDU3LDI0IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJl
dmVhbFNlbGVjdGlvbihTZWxlY3Rpb25SZXZlYWxNb2RlIHJldmVhbE1vZGUsIGNvbnN0IFNjcm9s
CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgQVNTRVJU
KHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpOwotICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgp
ICYmIHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoIXN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCkgfHwgIXN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkp
CisgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlm
IChSZW5kZXJMYXllciogbGF5ZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
LT5lbmNsb3NpbmdMYXllcigpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nU3VwcHJl
c3NDb3VudCkgewotICAgICAgICAgICAgICAgIGxheWVyLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJl
Y3QsIGluc2lkZUZpeGVkLCB7IHJldmVhbE1vZGUsIGFsaWdubWVudCwgYWxpZ25tZW50LCBTaG91
bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMsIHNjcm9sbEJlaGF2aW9yfSk7Ci0gICAg
ICAgICAgICAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX2Rv
Y3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkubm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb25CeVNjcm9sbGluZ0ZyYW1l
KCptX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vsc2UK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBvbmx5IGhhbmRsZXMgc2Nyb2xsaW5nIHRoZSBz
dGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKLSAgICAgICAgLy8gdGhlIHNlbGVjdGlvbiByZWN0
IGNvdWxkIGludGVyc2VjdCBtb3JlIHRoYW4ganVzdCB0aGF0LgotICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzQ3OTk4OTk+LgotICAgICAgICBpZiAoc3RhcnQuZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyBy
ZXZlYWxNb2RlLCBhbGlnbm1lbnQsIGFsaWdubWVudCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6WWVzLCBzY3JvbGxCZWhhdmlvcn0pKQotICAgICAgICAgICAgdXBkYXRlQXBwZWFy
YW5jZSgpOworICAgIGlmIChtX3Njcm9sbGluZ1N1cHByZXNzQ291bnQpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoaXMgY29kZSBvbmx5IGhhbmRsZXMgc2Nyb2xs
aW5nIHRoZSBzdGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKKyAgICAvLyB0aGUgc2VsZWN0aW9u
IHJlY3QgY291bGQgaW50ZXJzZWN0IG1vcmUgdGhhbiBqdXN0IHRoYXQuCisgICAgLy8gU2VlIDxy
ZGFyOi8vcHJvYmxlbS80Nzk5ODk5Pi4KKyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2li
bGUocmVjdCwgKnN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCksIGluc2lkZUZpeGVk
LCB7IHJldmVhbE1vZGUsIGFsaWdubWVudCwgYWxpZ25tZW50LCBTaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nOjpZZXMsIHNjcm9sbEJlaGF2aW9yIH0pOworICAgIHVwZGF0ZUFwcGVhcmFu
Y2UoKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKG1fZG9jdW1lbnQtPnBh
Z2UoKSkKKyAgICAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ub3Rp
ZnlSZXZlYWxlZFNlbGVjdGlvbkJ5U2Nyb2xsaW5nRnJhbWUoKm1fZG9jdW1lbnQtPmZyYW1lKCkp
OwogI2VuZGlmCi0gICAgfQogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25G
cm9tTm9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTZiMWUyMjk0ZjQ2N2Vh
M2YwZjA3NjcyNGJkMGMwODcwNDhmZWVlNi4uYTE3ZWI1MWYyMTU4NGZjZGY4YTJmMDViZjIwYzVi
YWQ5NDk4NmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTAxLDYgKzEwMSw3
IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhl
bHBlcnMuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlz
YWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIK
QEAgLTI0NDEsNyArMjQ0MiwxNDUgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvRm9jdXNlZEVs
ZW1lbnRJbnRlcm5hbCgpCiAKICAgICBib29sIGluc2lkZUZpeGVkOwogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlci0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhl
ZCk7Ci0gICAgcmVuZGVyZXItPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGlu
c2lkZUZpeGVkLCB7IG1fc2VsZWN0aW9uUmV2ZWFsTW9kZUZvckZvY3VzZWRFbGVtZW50LCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25D
ZW50ZXJJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7Cisg
ICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCAqcmVuZGVy
ZXIsIGluc2lkZUZpeGVkLCB7IG1fc2VsZWN0aW9uUmV2ZWFsTW9kZUZvckZvY3VzZWRFbGVtZW50
LCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8g
fSk7Cit9CisKK2Jvb2wgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91
dFJlY3QmIGFic29sdXRlUmVjdCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgYm9vbCBp
bnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05v
dFJldmVhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyTGF5ZXIqIGxheWVy
ID0gcmVuZGVyZXIuZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byB1c2UgUmVu
ZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllciBoZXJlLCBidXQgdGhhdCBzZWVtcyB0
byBza2lwIG92ZXJmbG93OmhpZGRlbiBsYXllcnMuCisgICAgTGF5b3V0UmVjdCBhZGp1c3RlZFJl
Y3QgPSBhYnNvbHV0ZVJlY3Q7CisgICAgZm9yICg7IGxheWVyOyBsYXllciA9IGxheWVyLT5lbmNs
b3NpbmdDb250YWluaW5nQmxvY2tMYXllcihDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8pKSB7Cisg
ICAgICAgIGlmIChsYXllci0+c2hvdWxkVHJ5VG9TY3JvbGxGb3JTY3JvbGxJbnRvVmlldygpKQor
ICAgICAgICAgICAgYWRqdXN0ZWRSZWN0ID0gbGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFy
ZWEoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhZGp1c3RlZFJlY3QsIG9wdGlvbnMpOworICAgIH0K
KworICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyLnZpZXcoKS5mcmFtZVZpZXcoKTsKKyAg
ICBjb25zdCBhdXRvKiBvd25lckVsZW1lbnQgPSBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgp
ID8gZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkgOiBudWxscHRy
OworICAgIGlmIChvd25lckVsZW1lbnQgJiYgb3duZXJFbGVtZW50LT5yZW5kZXJlcigpKQorICAg
ICAgICBmcmFtZVZpZXcuc2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KGFkanVzdGVkUmVj
dCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMsIG93bmVyRWxlbWVudCk7CisgICAgZnJhbWVWaWV3LnNj
cm9sbFJlY3RUb1Zpc2libGVJblRvcExldmVsVmlldyhhZGp1c3RlZFJlY3QsIGluc2lkZUZpeGVk
LCBvcHRpb25zKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFNjcm9sbFBvc2l0aW9u
Q2hhbmdlT3B0aW9ucyBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KGNvbnN0
IEZyYW1lVmlldyYgZnJhbWVWaWV3LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JvbGxSZWN0
VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0
aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7
CisgICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5hdXRvc2Nyb2xsSW5Q
cm9ncmVzcygpICYmIGVsZW1lbnQgJiYgdXNlU21vb3RoU2Nyb2xsaW5nKG9wdGlvbnMuYmVoYXZp
b3IsIGVsZW1lbnQpKQorICAgICAgICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBT
Y3JvbGxJc0FuaW1hdGVkOjpZZXM7CisgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uT3B0aW9uczsK
K307CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlSW5DaGlsZFZpZXcoY29u
c3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3Jv
bGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQpCit7CisgICAgY29uc3QgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZy
YW1lRWxlbWVudEJhc2UgPSBudWxscHRyOworICAgIGlmIChpczxIVE1MRnJhbWVFbGVtZW50QmFz
ZT4oKm93bmVyRWxlbWVudCkpCisgICAgICAgIGZyYW1lRWxlbWVudEJhc2UgPSBkb3duY2FzdDxI
VE1MRnJhbWVFbGVtZW50QmFzZT4ob3duZXJFbGVtZW50KTsKKworICAgIC8vIElmIHNjcm9sbGJh
cnMgYXJlbid0IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBwZXJtaXQgc2Nyb2xsaW5nLgorICAgIGlm
IChmcmFtZUVsZW1lbnRCYXNlICYmIGZyYW1lRWxlbWVudEJhc2UtPnNjcm9sbGluZ01vZGUoKSA9
PSBTY3JvbGxiYXJNb2RlOjpBbHdheXNPZmYpIHsKKyAgICAgICAgLy8gSWYgc2Nyb2xsYmFycyBh
cmUgZm9yYmlkZGVuLCB1c2VyIGluaXRpYXRlZCBzY3JvbGxzIHNob3VsZCBvYnZpb3VzbHkgYmUg
aWdub3JlZC4KKyAgICAgICAgaWYgKHdhc1Njcm9sbGVkQnlVc2VyKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIC8vIEZvcmJpZCBhdXRvc2Nyb2xscyB3aGVuIHNjcm9sbGJhcnMgYXJl
IG9mZiwgYnV0IHBlcm1pdHMgb3RoZXIgcHJvZ3JhbW1hdGljIHNjcm9sbHMsIGxpa2UgbmF2aWdh
dGlvbiB0byBhbiBhbmNob3IuCisgICAgICAgIGlmIChmcmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1
dG9zY3JvbGxJblByb2dyZXNzKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKG9wdGlvbnMuc2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZyAhPSBTaG91bGRBbGxv
d0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgJiYgIXNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFy
ZW50KCkpIAorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGlzIGFzc2VydGlvbiBmaXJl
cyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIG93bmVyRWxlbWVudCBmcm9tIGJlaW5nIGRlc3Ryb3ll
ZC4KKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxv
d2VkU2NvcGU7CisgICAgYXV0byB2aWV3UmVjdCA9IHZpc2libGVDb250ZW50UmVjdChTY3JvbGxh
YmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7CisKKyAgICAvLyBzY3JvbGwt
cGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSBy
ZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVsYXRl
IHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1
cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCB0
aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAgICBh
dXRvIHRhcmdldFJlY3QgPSBhYnNvbHV0ZVJlY3Q7CisgICAgYXV0byogZWxlbWVudCA9IG93bmVy
RWxlbWVudC0+Y29udGVudERvY3VtZW50KCkgPyBvd25lckVsZW1lbnQtPmNvbnRlbnREb2N1bWVu
dCgpLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gZWxlbWVudCA/IGVsZW1lbnQtPnJlbmRlckJveCgpIDogbnVsbHB0cikKKyAgICAgICAgdGFy
Z2V0UmVjdC5leHBhbmQocmVuZGVyZXItPnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qodmll
d1JlY3QpKTsKKworICAgIGF1dG8gcmV2ZWFsUmVjdCA9IGdldFBvc3NpYmx5Rml4ZWRSZWN0VG9F
eHBvc2Uodmlld1JlY3QsIHRhcmdldFJlY3QsIGluc2lkZUZpeGVkLCBvcHRpb25zLmFsaWduWCwg
b3B0aW9ucy5hbGlnblkpOworICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKHJvdW5kZWRJbnRQ
b2ludChyZXZlYWxSZWN0LmxvY2F0aW9uKCkpKTsKKworICAgIC8vIEFkanVzdCBvZmZzZXRzIGlm
IHRoZXkncmUgb3V0c2lkZSBvZiB0aGUgYWxsb3dhYmxlIHJhbmdlLgorICAgIHNjcm9sbFBvc2l0
aW9uID0gc2Nyb2xsUG9zaXRpb24uY29uc3RyYWluZWRCZXR3ZWVuKEludFBvaW50KCksIEludFBv
aW50KGNvbnRlbnRzU2l6ZSgpKSk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHVzZSBjb250
ZW50RG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgpPworICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDU5CisgICAgc2V0U2Nyb2xsUG9zaXRp
b24oc2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVsZW1lbnQo
KnRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpKTsKKworICAgIC8vIEZJWE1FOiBpZGVhbGx5IG5lZWQg
dG8gZGV0ZXJtaW5lIGlmIHRoaXMgPGlmcmFtZT4gaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkLgor
ICAgIGlmIChhdXRvKiBvd25lclJlbmRlcmVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpKQor
ICAgICAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnRlbnRzVG9Db250YWluaW5nVmlld0NvbnRl
bnRzKGVuY2xvc2luZ0ludFJlY3QodGFyZ2V0UmVjdCkpLCAqb3duZXJSZW5kZXJlciwgZmFsc2Ug
LyogaW5zaWRlRml4ZWQgKi8sIG9wdGlvbnMpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xs
UmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVj
dCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmIG9w
dGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxN
b2RlOjpSZXZlYWxVcFRvTWFpbkZyYW1lICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBT
ZWxlY3Rpb25SZXZlYWxNb2RlOjpEZWxlZ2F0ZU1haW5GcmFtZVNjcm9sbCAmJiBmcmFtZSgpLmlz
TWFpbkZyYW1lKCkpIHsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuc2Nyb2xsTWFpbkZyYW1lVG9S
ZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVjdCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBtaW5TY3JvbGxQb3NpdGlvbiA9IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpOworICAgIGF1dG8gbWF4U2Nyb2xsUG9zaXRpb24gPSBtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKTsKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gdmlld1JlY3QgPSB2
aXNpYmxlQ29udGVudFJlY3QoKTsKKyNlbHNlCisgICAgLy8gRklYTUU6IENvbnRlbnRJbnNldHMg
c2hvdWxkIGJlIHRha2VuIGNhcmUgb2YgaW4gVUkgcHJvY2VzcyBzaWRlLiB3ZWJraXQub3JnL2Iv
MTk5NjgyCisgICAgLy8gVG8gZG8gdGhhdCwgZ2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1Zp
ZXcgbmVlZHMgdG8gcmV0dXJuIHRoZSBhZGRpdGlvbmFsIHNjcm9sbGluZyB0byBkbyBiZXlvbmQg
Y29udGVudCByZWN0LgorICAgIGF1dG8gdmlld1JlY3QgPSB2aWV3UmVjdEV4cGFuZGVkQnlDb250
ZW50SW5zZXRzKCk7CisKKyAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9iLzE5OTY4MyBGcmFtZVZp
ZXc6OnZpc2libGVDb250ZW50UmVjdCBpcyB3cm9uZyB3aGVuIGNvbnRlbnQgaW5zZXRzIGFyZSBw
cmVzZW50CisgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbkZyb21PZmZzZXQo
U2Nyb2xsUG9zaXRpb24odG90YWxDb250ZW50c1NpemUoKSAtIGZsb29yZWRJbnRTaXplKHZpZXdS
ZWN0LnNpemUoKSkpKTsKKworICAgIGF1dG8gY29udGVudEluc2V0cyA9IHBhZ2UuY29udGVudElu
c2V0cygpOworICAgIG1pblNjcm9sbFBvc2l0aW9uLm1vdmUoLWNvbnRlbnRJbnNldHMubGVmdCgp
LCAtY29udGVudEluc2V0cy50b3AoKSk7CisgICAgbWF4U2Nyb2xsUG9zaXRpb24ubW92ZShjb250
ZW50SW5zZXRzLnJpZ2h0KCksIGNvbnRlbnRJbnNldHMuYm90dG9tKCkpOworI2VuZGlmCisgICAg
Ly8gTW92ZSB0aGUgdGFyZ2V0IHJlY3QgaW50byAic2Nyb2xsVmlldyBjb250ZW50cyIgY29vcmRp
bmF0ZXMuCisgICAgYXV0byB0YXJnZXRSZWN0ID0gYWJzb2x1dGVSZWN0OworICAgIHRhcmdldFJl
Y3QubW92ZSgwLCBoZWFkZXJIZWlnaHQoKSk7CisKKyAgICAvLyBzY3JvbGwtcGFkZGluZyBhcHBs
aWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSByZWN0YW5nbGUgdGhh
dCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVsYXRlIHBhZGRpbmcgdGhl
IHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1cCB0aGUgdHJlZSBv
ZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCB0aGUgcGFkZGluZyBv
biB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAgICBhdXRvKiBlbGVtZW50
ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJlbmRlckJveCA9IGVsZW1lbnQgPyBlbGVt
ZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHIpCisgICAgICAgIHRhcmdldFJlY3QuZXhwYW5kKHJl
bmRlckJveC0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOworCisgICAg
TGF5b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UG9zc2libHlGaXhlZFJlY3RUb0V4cG9zZSh2aWV3
UmVjdCwgdGFyZ2V0UmVjdCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMuYWxpZ25YLCBvcHRpb25zLmFs
aWduWSk7CisKKyAgICAvLyBBdm9pZCBzY3JvbGxpbmcgdG8gdGhlIHJvdW5kZWQgdmFsdWUgb2Yg
cmV2ZWFsUmVjdC5sb2NhdGlvbigpIGlmIHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gc2Nyb2xs
CisgICAgaWYgKHJldmVhbFJlY3QgIT0gdmlld1JlY3QpIHsKKyAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSB1c2UgZG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgpPworICAgICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA1OQorICAgICAg
ICBTY3JvbGxPZmZzZXQgY2xhbXBlZFNjcm9sbFBvc2l0aW9uID0gcm91bmRlZEludFBvaW50KHJl
dmVhbFJlY3QubG9jYXRpb24oKSkuY29uc3RyYWluZWRCZXR3ZWVuKG1pblNjcm9sbFBvc2l0aW9u
LCBtYXhTY3JvbGxQb3NpdGlvbik7CisgICAgICAgIHNldFNjcm9sbFBvc2l0aW9uKGNsYW1wZWRT
Y3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zRm9yRWxlbWVudCgqdGhp
cywgZWxlbWVudCwgb3B0aW9ucykpOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgdGhlIG91dGVy
bW9zdCB2aWV3IG9mIGEgd2ViIHBhZ2UsIHNvIGFmdGVyIHNjcm9sbGluZyB0aGlzIHZpZXcgd2UK
KyAgICAvLyBzY3JvbGwgaXRzIGNvbnRhaW5lciBieSBjYWxsaW5nIFBhZ2U6OnNjcm9sbE1haW5G
cmFtZVRvUmV2ZWFsUmVjdC4KKyAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0aGUg
TWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucworICAgIC8vIHRoYXQgcHV0IHdlYiB2aWV3cyBp
bnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCisgICAgLy8g
VGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVyIGFsc28ga25vd3MgYWJv
dXQgdGhpcy4KKyAgICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxDb250YWluaW5nU2Nyb2xsVmlld3NU
b1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVSZWN0KSk7CiB9CiAKIHZvaWQgRnJh
bWVWaWV3Ojpjb250ZW50c1Jlc2l6ZWQoKQpAQCAtMzI4NCwxMSArMzQyMywxMSBAQCB2b2lkIEZy
YW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoKQogICAgIC8vIFNjcm9sbCBuZXN0ZWQgbGF5ZXJzIGFu
ZCBmcmFtZXMgdG8gcmV2ZWFsIHRoZSBhbmNob3IuCiAgICAgLy8gQWxpZ24gdG8gdGhlIHRvcCBh
bmQgdG8gdGhlIGNsb3Nlc3Qgc2lkZSAodGhpcyBtYXRjaGVzIG90aGVyIGJyb3dzZXJzKS4KICAg
ICBpZiAoYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5n
TW9kZSgpKQotICAgICAgICBhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNp
YmxlKHJlY3QsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWdu
VG9wQWx3YXlzLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKKyAgICAg
ICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCAqYW5jaG9yTm9kZS0+cmVuZGVyZXIoKSwgaW5z
aWRlRml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMsIFNo
b3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UgaWYgKGFuY2hv
ck5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkK
LSAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0
LCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25SaWdodEFsd2F5cywgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVl
ZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKKyAgICAgICAgc2Ny
b2xsUmVjdFRvVmlzaWJsZShyZWN0LCAqYW5jaG9yTm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRlRml4
ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWdu
UmlnaHRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxk
QWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CiAgICAgZWxzZQotICAgICAgICBhbmNo
b3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsIGluc2lkZUZpeGVk
LCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkxl
ZnRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxs
b3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CisgICAgICAgIHNjcm9sbFJlY3RUb1Zpc2li
bGUocmVjdCwgKmFuY2hvck5vZGUtPnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlv
blJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkxlZnRBbHdheXMsIFNj
cm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdp
blNjcm9sbGluZzo6Tm8gfSk7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBmcmFt
ZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAgICBjYWNoZS0+
aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihhbmNob3JOb2RlLmdldCgpKTsKQEAgLTU3NzMsNiArNTkx
Miw0NCBAQCBPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxC
ZWhhdmlvcigpICBjb25zdAogICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2JqZWN0LT5zdHlsZSgp
Lm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKICAgICByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpB
dXRvOwogfQorCitMYXlvdXRSZWN0IEZyYW1lVmlldzo6Z2V0UG9zc2libHlGaXhlZFJlY3RUb0V4
cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhw
b3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgs
IGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAoreworICAgIGlmICghaW5zaWRl
Rml4ZWQpCisgICAgICAgIHJldHVybiBnZXRSZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmlldyh2
aXNpYmxlUmVjdCwgZXhwb3NlUmVjdCwgYWxpZ25YLCBhbGlnblkpOworCisgICAgLy8gSWYgdGhl
IGVsZW1lbnQgaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkIGFuZCB3ZSdyZSBub3Qgc2NhbGVkLCBu
byBhbW91bnQgb2Ygc2Nyb2xsaW5nIGlzIGdvaW5nIHRvIG1vdmUgdGhpbmdzIGFyb3VuZC4KKyAg
ICBpZiAoZnJhbWVTY2FsZUZhY3RvcigpID09IDEpCisgICAgICAgIHJldHVybiB2aXNpYmxlUmVj
dDsKKworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyByZXR1cm4gdmlzaWJsZVJlY3QgYXMg
d2VsbD8KKyAgICBpZiAoIWZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEVuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuIGdldFJlY3RUb0V4cG9zZUZvclNjcm9sbEludG9WaWV3KHZpc2li
bGVSZWN0LCBleHBvc2VSZWN0LCBhbGlnblgsIGFsaWduWSk7CisKKyAgICAvLyBleHBvc2VSZWN0
IGlzIGluIGFic29sdXRlIGNvb3JkcywgYWZmZWN0ZWQgYnkgcGFnZSBzY2FsZS4gVW5zY2FsZSBp
dC4KKyAgICBhdXRvIHVuc2NhbGVkRXhwb3NlUmVjdCA9IGV4cG9zZVJlY3Q7CisgICAgdW5zY2Fs
ZWRFeHBvc2VSZWN0LnNjYWxlKDEgLyBmcmFtZVNjYWxlRmFjdG9yKCkpOworICAgIHVuc2NhbGVk
RXhwb3NlUmVjdC5tb3ZlKDAsIC1oZWFkZXJIZWlnaHQoKSk7CisKKyAgICAvLyBUaGVzZSBhcmUg
Ym90aCBpbiB1bnNjYWxlZCBjb29yZGluYXRlcy4KKyAgICBhdXRvIGxheW91dFZpZXdwb3J0ID0g
bGF5b3V0Vmlld3BvcnRSZWN0KCk7CisgICAgYXV0byB2aXN1YWxWaWV3cG9ydCA9IHZpc3VhbFZp
ZXdwb3J0UmVjdCgpOworCisgICAgLy8gVGhlIHJlY3QgdG8gZXhwb3NlIG1heSBiZSBwYXJ0aWFs
bHkgb2Zmc2NyZWVuLCB3aGljaCB3ZSBjYW4ndCBkbyBhbnl0aGluZyBhYm91dCB3aXRoIHBvc2l0
aW9uOmZpeGVkLgorICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5pbnRlcnNlY3QobGF5b3V0Vmlld3Bv
cnQpOworCisgICAgLy8gTWFrZSBzdXJlIGl0J3Mgbm90IGxhcmdlciB0aGFuIHRoZSB2aXN1YWwg
dmlld3BvcnQ7IGlmIHNvLCB3ZSdsbCBqdXN0IG1vdmUgdG8gdGhlIHRvcCBsZWZ0LgorICAgIHVu
c2NhbGVkRXhwb3NlUmVjdC5zZXRTaXplKHVuc2NhbGVkRXhwb3NlUmVjdC5zaXplKCkuc2hydW5r
VG8odmlzdWFsVmlld3BvcnQuc2l6ZSgpKSk7CisKKyAgICAvLyBDb21wdXRlIGhvdyBtdWNoIHdl
IGhhdmUgdG8gbW92ZSB0aGUgdmlzdWFsVmlld3BvcnQgdG8gcmV2ZWFsIHRoZSBwYXJ0IG9mIHRo
ZSBsYXlvdXRWaWV3cG9ydCB0aGF0IGNvbnRhaW5zIGV4cG9zZVJlY3QuCisgICAgYXV0byByZXF1
aXJlZFZpc3VhbFZpZXdwb3J0ID0gZ2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXcodmlz
dWFsVmlld3BvcnQsIHVuc2NhbGVkRXhwb3NlUmVjdCwgYWxpZ25YLCBhbGlnblkpOworCisgICAg
Ly8gU2NhbGUgaXQgYmFjayB1cC4KKyAgICByZXF1aXJlZFZpc3VhbFZpZXdwb3J0LnNjYWxlKGZy
YW1lU2NhbGVGYWN0b3IoKSk7CisgICAgcmVxdWlyZWRWaXN1YWxWaWV3cG9ydC5tb3ZlKDAsIGhl
YWRlckhlaWdodCgpKTsKKyAgICByZXR1cm4gcmVxdWlyZWRWaXN1YWxWaWV3cG9ydDsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjdW5kZWYgUEFHRV9JRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmgKaW5kZXggNjAyZDYwYzljOTcwNTVmNjQ4Y2E0OGZmZmJmOWM0MmI1YzE2ZjkzMy4uZDUw
OGU2MDJkMjQ4NmZjZjdiZDZjMzZhNzU2ZGM1MDBiMTYzNjIxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5oCkBAIC0yNTQsNiArMjU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsVG9Gb2N1
c2VkRWxlbWVudEltbWVkaWF0ZWx5SWZOZWVkZWQoKTsKICAgICB2b2lkIHVwZGF0ZUxheWVyUG9z
aXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5n
TGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBmaW5hbDsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwg
Y29uc3QgUmVuZGVyT2JqZWN0JiwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRv
VmlzaWJsZU9wdGlvbnMmKTsKIAogICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRl
KGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6OlVzZXIsIFNj
cm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIGZpbmFsOwogICAgIGJvb2wg
cmVxdWVzdEFuaW1hdGVkU2Nyb2xsVG9Qb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYsIFNj
cm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIGZpbmFsOwpAQCAtODgzLDYg
Kzg4NCwxMCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIE1vbm90b25pY1RpbWUgc0N1cnJlbnRQ
YWludFRpbWVTdGFtcDsgLy8gdXNlZCBmb3IgZGV0ZWN0aW5nIGRlY29kZWQgcmVzb3VyY2UgdGhy
YXNoIGluIHRoZSBjYWNoZQogCisgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlSW5DaGlsZFZp
ZXcoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25z
dCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYsIGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVu
dCopOworICAgIHZvaWQgc2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KGNvbnN0IExh
eW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVj
dFRvVmlzaWJsZU9wdGlvbnMmKTsKKyAgICBMYXlvdXRSZWN0IGdldFBvc3NpYmx5Rml4ZWRSZWN0
VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3Qm
IGV4cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkgY29uc3Q7CisKICAgICBjb25zdCBS
ZWY8RnJhbWU+IG1fZnJhbWU7CiAgICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCBtX2xheW91dENv
bnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFsaWdu
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUzMzVmY2ZkZTYwNTdjNWU5Y2M3MDhlNDk0YzUxNzViMjY4Y2I2ZWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuY3Bw
CkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBvcnRpb25zIGFy
ZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24u
CisgKgorICogT3RoZXIgY29udHJpYnV0b3JzOgorICogICBSb2JlcnQgTydDYWxsYWhhbiA8cm9j
K0Bjcy5jbXUuZWR1PgorICogICBEYXZpZCBCYXJvbiA8ZGJhcm9uQGZhcy5oYXJ2YXJkLmVkdT4K
KyAqICAgQ2hyaXN0aWFuIEJpZXNpbmdlciA8Y2JpZXNpbmdlckB3ZWIuZGU+CisgKiAgIFJhbmRh
bGwgSmVzdXAgPHJqZXN1cEB3Z2F0ZS5jb20+CisgKiAgIFJvbGFuZCBNYWlueiA8cm9sYW5kLm1h
aW56QGluZm9ybWF0aWsubWVkLnVuaS1naWVzc2VuLmRlPgorICogICBKb3NoIFNvcmVmIDx0aW1l
bGVzc0BtYWMuY29tPgorICogICBCb3JpcyBaYmFyc2t5IDxiemJhcnNreUBtaXQuZWR1PgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKgorICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIGVpdGhlciB0aGUgTW96aWxs
YSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKKyAqIGh0dHA6Ly93d3cubW96
aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQv
Z3BsLmh0bWwKKyAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9m
IHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKKyAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBh
Ym92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCisgKiB2ZXJzaW9uIG9mIHRo
aXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCisgKiBsaWNl
bnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2Ug
eW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlv
dXIgZGVjaXNpb24gYnkKKyAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxh
Y2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kCisgKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVk
IGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgorICogSWYgeW91IGRv
IG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91
cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBM
IG9yIHRoZSBHUEwuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9s
bEFsaWdubWVudC5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBTY3JvbGxBbGln
bm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTm90VmlzaWJsZSA9IHsgQmVoYXZp
b3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpOb1Njcm9sbCB9
OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5v
dFZpc2libGUgPSB7IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0
RWRnZSwgQmVoYXZpb3I6Ok5vU2Nyb2xsIH07Citjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJl
aGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSB9OworV0VC
Q09SRV9FWFBPUlQgY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZCA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25Ub0Ns
b3Nlc3RFZGdlLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlIH07CitXRUJDT1JFX0VYUE9S
VCBjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5
cyA9IHsgQmVoYXZpb3I6OkFsaWduQ2VudGVyLCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2
aW9yOjpBbGlnbkNlbnRlciB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25Ub3BBbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnblRvcCwgQmVoYXZpb3I6OkFsaWdu
VG9wLCBCZWhhdmlvcjo6QWxpZ25Ub3AgfTsKK2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduUmlnaHRBbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnblJpZ2h0LCBCZWhh
dmlvcjo6QWxpZ25SaWdodCwgQmVoYXZpb3I6OkFsaWduUmlnaHQgfTsKK2NvbnN0IFNjcm9sbEFs
aWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduTGVmdEFsd2F5cyA9IHsgQmVoYXZpb3I6OkFs
aWduTGVmdCwgQmVoYXZpb3I6OkFsaWduTGVmdCwgQmVoYXZpb3I6OkFsaWduTGVmdCB9OworY29u
c3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Cb3R0b21BbHdheXMgPSB7
IEJlaGF2aW9yOjpBbGlnbkJvdHRvbSwgQmVoYXZpb3I6OkFsaWduQm90dG9tLCBCZWhhdmlvcjo6
QWxpZ25Cb3R0b20gfTsKKyAgICAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3IgYikKK3sKKyAgICBzd2l0Y2ggKGIpIHsKKyAg
ICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsOgorICAgICAgICByZXR1
cm4gdHMgPDwgIk5vU2Nyb2xsIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6
OkFsaWduQ2VudGVyOgorICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduQ2VudGVyIjsKKyAgICBj
YXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9wOgorICAgICAgICByZXR1cm4g
dHMgPDwgIkFsaWduVG9wIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFs
aWduQm90dG9tOgorICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduQm90dG9tIjsKKyAgICBjYXNl
IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduTGVmdDoKKyAgICAgICAgcmV0dXJuIHRz
IDw8ICJBbGlnbkxlZnQiOworICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxp
Z25SaWdodDoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnblJpZ2h0IjsKKyAgICBjYXNlIFNj
cm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZToKKyAgICAgICAgcmV0
dXJuIHRzIDw8ICJBbGlnblRvQ2xvc2VzdEVkZ2UiOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9
CisgICAgCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3Jv
bGxBbGlnbm1lbnQmIHMpCit7CisgICAgcmV0dXJuIHRzIDw8ICJTY3JvbGxBbGlnbm1lbnQ6IHZp
c2libGU6ICIgPDwgcy5tX3JlY3RWaXNpYmxlIDw8ICIgaGlkZGVuOiAiIDw8IHMubV9yZWN0SGlk
ZGVuIDw8ICIgcGFydGlhbDogIiA8PCBzLm1fcmVjdFBhcnRpYWw7Cit9CisKK307IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxB
bGlnbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAxYmI2ZWY5ZTIyZTdjNTk1NTg4YWI4YjMxMjc5MmEwODUzM2FlYWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaApA
QCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA5LCAyMDE2IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUG9ydGlvbnMgYXJlIENvcHly
aWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqCisg
KiBPdGhlciBjb250cmlidXRvcnM6CisgKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNzLmNt
dS5lZHU+CisgKiAgIERhdmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgorICogICBD
aHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KKyAqICAgUmFuZGFsbCBKZXN1
cCA8cmplc3VwQHdnYXRlLmNvbT4KKyAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpAaW5m
b3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+CisgKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNzQG1h
Yy5jb20+CisgKiAgIEJvcmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+CisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1h
eSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1Ymxp
YyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAorICogaHR0cDovL3d3dy5tb3ppbGxhLm9y
Zy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
VmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRt
bAorICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1Q
TCBvciB0aGUgR1BMIGFyZQorICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAg
SWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxl
IG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KKyAqIGxpY2Vuc2VzICh0
aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCisg
KiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNp
c2lvbiBieQorICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVt
IHdpdGggdGhlIG5vdGljZSBhbmQKKyAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhl
IE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCisgKiBJZiB5b3UgZG8gbm90IGRl
bGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCisgKiB2
ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhl
IEdQTC4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0
U3RyZWFtOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTY3JvbGxBbGlnbm1l
bnQgeworCisgICAgZW51bSBjbGFzcyBCZWhhdmlvciB7CisgICAgICAgIE5vU2Nyb2xsLAorICAg
ICAgICBBbGlnbkNlbnRlciwKKyAgICAgICAgQWxpZ25Ub3AsCisgICAgICAgIEFsaWduQm90dG9t
LAorICAgICAgICBBbGlnbkxlZnQsCisgICAgICAgIEFsaWduUmlnaHQsCisgICAgICAgIEFsaWdu
VG9DbG9zZXN0RWRnZQorICAgIH07CisKKyAgICBCZWhhdmlvciBnZXRWaXNpYmxlQmVoYXZpb3Io
KSBjb25zdCB7IHJldHVybiBtX3JlY3RWaXNpYmxlOyB9CisgICAgQmVoYXZpb3IgZ2V0UGFydGlh
bEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0UGFydGlhbDsgfQorICAgIEJlaGF2aW9y
IGdldEhpZGRlbkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0SGlkZGVuOyB9CisgICAg
dm9pZCBkaXNhYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKSB7IG1fZW5h
YmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgPSBmYWxzZTsgfQorICAgIGJv
b2wgbGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmFibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZDsgfQorCisg
ICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlcklmTm90VmlzaWJsZTsK
KyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOb3RWaXNpYmxl
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25D
ZW50ZXJJZk5lZWRlZDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xsQWxp
Z25tZW50IGFsaWduVG9FZGdlSWZOZWVkZWQ7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNv
bnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlckFsd2F5czsKKyAgICBzdGF0aWMgY29uc3Qg
U2Nyb2xsQWxpZ25tZW50IGFsaWduVG9wQWx3YXlzOworICAgIHN0YXRpYyBjb25zdCBTY3JvbGxB
bGlnbm1lbnQgYWxpZ25SaWdodEFsd2F5czsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25t
ZW50IGFsaWduTGVmdEFsd2F5czsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFs
aWduQm90dG9tQWx3YXlzOworCisgICAgQmVoYXZpb3IgbV9yZWN0VmlzaWJsZTsKKyAgICBCZWhh
dmlvciBtX3JlY3RIaWRkZW47CisgICAgQmVoYXZpb3IgbV9yZWN0UGFydGlhbDsKKyAgICBib29s
IG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgeyB0cnVlIH07Cit9
OworICAgIAorV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6
VGV4dFN0cmVhbSYsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQg
V1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNjcm9s
bEFsaWdubWVudCYpOworCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDllNjFiZDdlZWRmYzUwNGZjNmM4ZWVi
MTEyNTgyNjQ1YjYwZDFiY2YuLjY2MzIwYjUwYzk4ZmU4ZTQ1MjAyYzkzOWU3NzNlMzExZjFiNjQ2
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgw
MSw2ICs4MDEsODEgQEAgc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBTY3JvbGxhYmxlQXJlYTo6dGFy
Z2V0U2lkZUZvclNjcm9sbERlbHRhKEZsb2F0U2l6ZSBkZWx0YSwKICAgICByZXR1cm4geyB9Owog
fQogCitMYXlvdXRSZWN0IFNjcm9sbGFibGVBcmVhOjpnZXRSZWN0VG9FeHBvc2VGb3JTY3JvbGxJ
bnRvVmlldyhjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
ZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgYWxpZ25ZKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWluSW50ZXJz
ZWN0Rm9yUmV2ZWFsID0gMzI7CisKKyAgICAvLyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIFgg
YmVoYXZpb3IuCisgICAgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvciBzY3JvbGxYOworICAgIExh
eW91dFJlY3QgZXhwb3NlUmVjdFgoZXhwb3NlUmVjdC54KCksIHZpc2libGVSZWN0LnkoKSwgZXhw
b3NlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBp
bnRlcnNlY3RXaWR0aCA9IGludGVyc2VjdGlvbih2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdFgpLndp
ZHRoKCk7CisgICAgaWYgKGludGVyc2VjdFdpZHRoID09IGV4cG9zZVJlY3Qud2lkdGgoKSB8fCAo
YWxpZ25YLmxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkRW5hYmxlZCgpICYmIGlu
dGVyc2VjdFdpZHRoID49IG1pbkludGVyc2VjdEZvclJldmVhbCkpIHsKKyAgICAgICAgLy8gSWYg
dGhlIHJlY3RhbmdsZSBpcyBmdWxseSB2aXNpYmxlLCB1c2UgdGhlIHNwZWNpZmllZCB2aXNpYmxl
IGJlaGF2aW9yLgorICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIHBhcnRpYWxseSB2aXNp
YmxlLCBidXQgb3ZlciBhIGNlcnRhaW4gdGhyZXNob2xkLAorICAgICAgICAvLyB0aGVuIHRyZWF0
IGl0IGFzIGZ1bGx5IHZpc2libGUgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaG9yaXpvbnRhbCBzY3Jv
bGxpbmcKKyAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKKyAg
ICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID09IHZpc2libGVSZWN0LndpZHRoKCkpIHsKKyAg
ICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgZG9u
J3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3JrLgor
ICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFZpc2libGVCZWhhdmlvcigpOworICAgICAgICBp
ZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKKyAg
ICAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9sbDsK
KyAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID4gMCkKKyAgICAgICAgLy8gSWYgdGhlIHJl
Y3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgYnV0IG5vdCBhYm92ZSB0aGUgbWluaW11bSB0
aHJlc2hvbGQsIHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRpYWwgYmVoYXZpb3IKKyAgICAgICAgc2Ny
b2xsWCA9IGFsaWduWC5nZXRQYXJ0aWFsQmVoYXZpb3IoKTsKKyAgICBlbHNlCisgICAgICAgIHNj
cm9sbFggPSBhbGlnblguZ2V0SGlkZGVuQmVoYXZpb3IoKTsKKyAgICAvLyBJZiB3ZSdyZSB0cnlp
bmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0IGlzIGZ1
cnRoZXIgcmlnaHQKKyAgICAvLyB0aGFuIHRoZSB2aXNpYmxlUmVjdCwgYW5kIG5vdCBiaWdnZXIg
dGhhbiB0aGUgdmlzaWJsZSBhcmVhLCB0aGVuIGFsaWduIHdpdGggdGhlIHJpZ2h0LgorICAgIGlm
IChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRn
ZSAmJiBleHBvc2VSZWN0Lm1heFgoKSA+IHZpc2libGVSZWN0Lm1heFgoKSAmJiBleHBvc2VSZWN0
LndpZHRoKCkgPCB2aXNpYmxlUmVjdC53aWR0aCgpKQorICAgICAgICBzY3JvbGxYID0gU2Nyb2xs
QWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodDsKKworICAgIC8vIEdpdmVuIHRoZSBYIGJl
aGF2aW9yLCBjb21wdXRlIHRoZSBYIGNvb3JkaW5hdGUuCisgICAgTGF5b3V0VW5pdCB4OworICAg
IGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsKQorICAg
ICAgICB4ID0gdmlzaWJsZVJlY3QueCgpOworICAgIGVsc2UgaWYgKHNjcm9sbFggPT0gU2Nyb2xs
QWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodCkKKyAgICAgICAgeCA9IGV4cG9zZVJlY3Qu
bWF4WCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKTsKKyAgICBlbHNlIGlmIChzY3JvbGxYID09IFNj
cm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQorICAgICAgICB4ID0gZXhwb3Nl
UmVjdC54KCkgKyAoZXhwb3NlUmVjdC53aWR0aCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKSkgLyAy
OworICAgIGVsc2UKKyAgICAgICAgeCA9IGV4cG9zZVJlY3QueCgpOworCisgICAgLy8gRGV0ZXJt
aW5lIHRoZSBhcHByb3ByaWF0ZSBZIGJlaGF2aW9yLgorICAgIFNjcm9sbEFsaWdubWVudDo6QmVo
YXZpb3Igc2Nyb2xsWTsKKyAgICBMYXlvdXRSZWN0IGV4cG9zZVJlY3RZKHZpc2libGVSZWN0Lngo
KSwgZXhwb3NlUmVjdC55KCksIHZpc2libGVSZWN0LndpZHRoKCksIGV4cG9zZVJlY3QuaGVpZ2h0
KCkpOworICAgIExheW91dFVuaXQgaW50ZXJzZWN0SGVpZ2h0ID0gaW50ZXJzZWN0aW9uKHZpc2li
bGVSZWN0LCBleHBvc2VSZWN0WSkuaGVpZ2h0KCk7CisgICAgaWYgKGludGVyc2VjdEhlaWdodCA9
PSBleHBvc2VSZWN0LmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMg
ZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KKyAgICAg
ICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKKyAgICB9IGVsc2UgaWYg
KGludGVyc2VjdEhlaWdodCA9PSB2aXNpYmxlUmVjdC5oZWlnaHQoKSkgeworICAgICAgICAvLyBJ
ZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIg
dHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsuCisgICAgICAgIHNj
cm9sbFkgPSBhbGlnblkuZ2V0VmlzaWJsZUJlaGF2aW9yKCk7CisgICAgICAgIGlmIChzY3JvbGxZ
ID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQorICAgICAgICAgICAg
c2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsOworICAgIH0gZWxz
ZSBpZiAoaW50ZXJzZWN0SGVpZ2h0ID4gMCkKKyAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBp
cyBwYXJ0aWFsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgcGFydGlhbCBiZWhhdmlvcgor
ICAgICAgICBzY3JvbGxZID0gYWxpZ25ZLmdldFBhcnRpYWxCZWhhdmlvcigpOworICAgIGVsc2UK
KyAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRIaWRkZW5CZWhhdmlvcigpOworICAgIC8vIElm
IHdlJ3JlIHRyeWluZyB0byBhbGlnbiB0byB0aGUgY2xvc2VzdCBlZGdlLCBhbmQgdGhlIGV4cG9z
ZVJlY3QgaXMgZnVydGhlciBkb3duCisgICAgLy8gdGhhbiB0aGUgdmlzaWJsZVJlY3QsIGFuZCBu
b3QgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgdGhlbiBhbGlnbiB3aXRoIHRoZSBib3R0
b20uCisgICAgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25U
b0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3QubWF4WSgpID4gdmlzaWJsZVJlY3QubWF4WSgpICYm
IGV4cG9zZVJlY3QuaGVpZ2h0KCkgPCB2aXNpYmxlUmVjdC5oZWlnaHQoKSkKKyAgICAgICAgc2Ny
b2xsWSA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQm90dG9tOworCisgICAgLy8g
R2l2ZW4gdGhlIFkgYmVoYXZpb3IsIGNvbXB1dGUgdGhlIFkgY29vcmRpbmF0ZS4KKyAgICBMYXlv
dXRVbml0IHk7CisgICAgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6
Tm9TY3JvbGwpCisgICAgICAgIHkgPSB2aXNpYmxlUmVjdC55KCk7CisgICAgZWxzZSBpZiAoc2Ny
b2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkJvdHRvbSkKKyAgICAgICAg
eSA9IGV4cG9zZVJlY3QubWF4WSgpIC0gdmlzaWJsZVJlY3QuaGVpZ2h0KCk7CisgICAgZWxzZSBp
ZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKKyAg
ICAgICAgeSA9IGV4cG9zZVJlY3QueSgpICsgKGV4cG9zZVJlY3QuaGVpZ2h0KCkgLSB2aXNpYmxl
UmVjdC5oZWlnaHQoKSkgLyAyOworICAgIGVsc2UKKyAgICAgICAgeSA9IGV4cG9zZVJlY3QueSgp
OworCisgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoeCwgeSksIHZpc2libGVSZWN0
LnNpemUoKSk7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICB0cyA8PCBzY3JvbGxh
YmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuaAppbmRleCAyYmRjMThhMTk4ODAwNGZhZmMyMzc1NzJkYWYyOTI3MjkxZWQ4ZGVm
Li4wODQxNzQ5MWM0NzI5MjZiYzZmNGQ2N2YyZGViNjI5MDQ4YWRkMjFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiUmVjdEVkZ2VzLmgiCisjaW5jbHVkZSAiU2Nyb2xsQWxpZ25tZW50
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xs
VHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKQEAgLTM5OSw2ICs0MDAsOCBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBib29sIGhhc0xheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAKKyAg
ICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4cG9zZUZvclNjcm9sbEludG9WaWV3KGNvbnN0IExheW91
dFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBleHBvc2VSZWN0LCBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW50UmVjdCB2aXNp
YmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJh
cnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbFBv
c2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggYTAxNDUwNzA3ODAzOTNjNmIyNjhiYzAxNzk3MWQz
ZjI2MzFmY2UzYi4uNzY5OTk4NGMzMjNkMmE1YmEyMGY1MzQ1MTQ4NTY2MDcxZjNjZjNiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMjEsNyArMTIxLDYg
QEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKICNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNj
cmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBA
IC0xNDMsOCArMTQyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi0jZGVmaW5lIE1JTl9JTlRFUlNFQ1RfRk9SX1JF
VkVBTCAzMgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CkBAIC01NjcsMTYgKzU2NCw2IEBAIHN0YXRpYyBib29sIGNhbkNyZWF0ZVN0YWNraW5nQ29u
dGV4dChjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpCiAgICAgICAgIHx8IGxheWVyLmVzdGFibGlz
aGVzVG9wTGF5ZXIoKTsKIH0KIAotc3RhdGljIHZvaWQgZXhwYW5kU2Nyb2xsUmVjdFRvVmlzaWJs
ZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQYWRkaW5nKFJlbmRlckJveCogcmVuZGVyQm94LCBj
b25zdCBMYXlvdXRSZWN0JiB2aWV3UmVjdCwgTGF5b3V0UmVjdCYgdGFyZ2V0UmVjdCkKLXsKLSAg
ICBpZiAoIXJlbmRlckJveCkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIHNjcm9sbC1wYWRkaW5n
IGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250YWluZXIsIGJ1dCBleHBhbmQgdGhlIHJlY3Rhbmds
ZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGluIG9yZGVyCi0gICAgLy8gc2ltdWxhdGUgcGFkZGlu
ZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhpcyByZWN0YW5nbGUgaXMgcGFzc2VkIHVwIHRoZSB0
cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0bwotICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBwYWRk
aW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBtYWludGFpbmVkLgotICAgIHRhcmdldFJl
Y3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVj
dCkpOwotfQotCiBib29sIFJlbmRlckxheWVyOjpzaG91bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29u
c3QKIHsKICAgICBpZiAoY2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KCp0aGlzKSkKQEAgLTI0MTgs
MjIgKzI0MDUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckxheWVyOjpvZmZzZXRGcm9tQW5jZXN0b3Io
Y29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIENvbAogICAgIHJldHVybiB0b0xheW91
dFNpemUoY29udmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgTGF5b3V0UG9pbnQoKSwg
YWRqdXN0Rm9yQ29sdW1ucykpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgZnJhbWVFbGVtZW50
QW5kVmlld1Blcm1pdFNjcm9sbChIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJhbWVFbGVtZW50QmFz
ZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCi17Ci0gICAgLy8gSWYgc2Nyb2xsYmFycyBhcmVuJ3Qg
ZXhwbGljaXRseSBmb3JiaWRkZW4sIHBlcm1pdCBzY3JvbGxpbmcuCi0gICAgaWYgKGZyYW1lRWxl
bWVudEJhc2UgJiYgZnJhbWVFbGVtZW50QmFzZS0+c2Nyb2xsaW5nTW9kZSgpICE9IFNjcm9sbGJh
ck1vZGU6OkFsd2F5c09mZikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBzY3Jv
bGxiYXJzIGFyZSBmb3JiaWRkZW4sIHVzZXIgaW5pdGlhdGVkIHNjcm9sbHMgc2hvdWxkIG9idmlv
dXNseSBiZSBpZ25vcmVkLgotICAgIGlmIChmcmFtZVZpZXcud2FzU2Nyb2xsZWRCeVVzZXIoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRm9yYmlkIGF1dG9zY3JvbGxzIHdoZW4g
c2Nyb2xsYmFycyBhcmUgb2ZmLCBidXQgcGVybWl0cyBvdGhlciBwcm9ncmFtbWF0aWMgc2Nyb2xs
cywKLSAgICAvLyBsaWtlIG5hdmlnYXRpb24gdG8gYW4gYW5jaG9yLgotICAgIHJldHVybiAhZnJh
bWVWaWV3LmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKTsKLX0K
LQotYm9vbCBSZW5kZXJMYXllcjo6YWxsb3dzQ3VycmVudFNjcm9sbCgpIGNvbnN0Citib29sIFJl
bmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNjcm9sbEludG9WaWV3KCkgY29uc3QKIHsK
ICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzTm9uVmlzaWJsZU92ZXJmbG93KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI0NDYsOSArMjQxOCw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFsbG93
c0N1cnJlbnRTY3JvbGwoKSBjb25zdAogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7
CiAgICAgQVNTRVJUKGJveCk7IC8vIE9ubHkgYm94ZXMgY2FuIGhhdmUgb3ZlcmZsb3dDbGlwIHNl
dC4KIAorICAgIC8vIFdoZW4gYXV0b3Njcm9sbGluZywgc2tpcCAib3ZlcmZsb3c6IGhpZGRlbiIu
IFRoZSAicHJvZ3JhbW1hdGljYWxseSIgaGVyZSBpcworICAgIC8vIG1pc2xlYWRpbmc7IHRoaXMg
YXNrcyB3aGV0aGVyIHRoZSBib3ggaGFzICJvdmVyZmxvdzogc2Nyb2xsIiBvciAib3ZlcmZsb3c6
IGF1dG8uIgogICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MoKSkgewotICAgICAgICAvLyBUaGUgInByb2dyYW1tYXRpY2FsbHkiIGhl
cmUgaXMgbWlzbGVhZGluZzsgdGhpcyBhc2tzIHdoZXRoZXIgdGhlIGJveCBoYXMgc2Nyb2xsYWJs
ZSBvdmVyZmxvdywKLSAgICAgICAgLy8gb3IgaXMgYSBzcGVjaWFsIGNhc2UgbGlrZSBhIGZvcm0g
Y29udHJvbC4KICAgICAgICAgcmV0dXJuIGJveC0+Y2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxl
ZCgpOwogICAgIH0KIApAQCAtMjQ1NiwyNDggKzI0MjgsMTAgQEAgYm9vbCBSZW5kZXJMYXllcjo6
YWxsb3dzQ3VycmVudFNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIGJveC0+aGFzSG9yaXpvbnRh
bE92ZXJmbG93KCkgfHwgYm94LT5oYXNWZXJ0aWNhbE92ZXJmbG93KCk7CiB9CiAKLXZvaWQgUmVu
ZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVS
ZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYg
b3B0aW9ucykKLXsKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkxh
eWVyICIgPDwgdGhpcyA8PCAiIHNjcm9sbFJlY3RUb1Zpc2libGUgIiA8PCBhYnNvbHV0ZVJlY3Qp
OwotCi0gICAgTGF5b3V0UmVjdCBuZXdSZWN0ID0gYWJzb2x1dGVSZWN0OwotICAgIEZyYW1lVmll
dyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAgYXV0byog
cGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdDb250YWluaW5nQmxvY2tMYXllcihDcm9zc0ZyYW1lQm91
bmRhcmllczo6Tm8pOwotCi0gICAgYXV0byBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JF
bGVtZW50ID0gW3RoaXMsIG9wdGlvbnNdKEVsZW1lbnQqIGVsZW1lbnQpCi0gICAgewotICAgICAg
ICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
czo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIoKS5mcmFtZSgp
LmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxJblByb2dyZXNzKCkgJiYgZWxlbWVudCAmJiB1c2VT
bW9vdGhTY3JvbGxpbmcob3B0aW9ucy5iZWhhdmlvciwgZWxlbWVudCkpCi0gICAgICAgICAgICBz
Y3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBTY3JvbGxJc0FuaW1hdGVkOjpZZXM7Ci0g
ICAgICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbk9wdGlvbnM7Ci0gICAgfTsKLQotICAgIGlmIChh
bGxvd3NDdXJyZW50U2Nyb2xsKCkpIHsKLSAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBl
bnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7Ci0KLSAgICAgICAgLy8gRG9uJ3Qgc2Nyb2xsIHRv
IHJldmVhbCBhbiBvdmVyZmxvdyBsYXllciB0aGF0IGlzIHJlc3RyaWN0ZWQgYnkgdGhlIC13ZWJr
aXQtbGluZS1jbGFtcCBwcm9wZXJ0eS4KLSAgICAgICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgdXMg
ZnJvbSByZXZlYWxpbmcgdGV4dCBoaWRkZW4gYnkgdGhlIHNsaWRlciBpbiBTYWZhcmkgUlNTLgot
ICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwotICAgICAgICBBU1NFUlQoYm94
KTsKLSAgICAgICAgTGF5b3V0UmVjdCBsb2NhbEV4cG9zZVJlY3QoYm94LT5hYnNvbHV0ZVRvTG9j
YWxRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QoYWJzb2x1dGVSZWN0KSkpLmJvdW5kaW5nQm94KCkp
OwotCi0gICAgICAgIC8vIGxvY2FsRXhwb3NlZFJlY3QgaXMgbm93IHRoZSBhYnNvbHV0ZSByZWN0
IGluIGxvY2FsIGNvb3JkaW5hdGVzLCBidXQgcmVsYXRpdmUgdG8gdGhlCi0gICAgICAgIC8vIGJv
cmRlciBlZGdlLiBNYWtlIHRoZSByZWN0YW5nbGUgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGFibGUg
YXJlYS4KLSAgICAgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQoYm94LT5i
b3JkZXJMZWZ0KCksIGJveC0+Ym9yZGVyVG9wKCkpKTsKLQotICAgICAgICBpZiAoYm94LT5zaG91
bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpIHsKLSAgICAgICAgICAgIC8vIEZvciBg
ZGlyZWN0aW9uOiBydGw7IHdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC17dGIsYnR9YCBhbmQgYHdy
aXRpbmctbW9kZTogdmVydGljYWwtcmxgCi0gICAgICAgICAgICAvLyBib3hlcywgdGhlIHNjcm9s
bCBiYXIgaXMgb24gdGhlIGxlZnQgc2lkZS4gVGhlIHZpc2libGUgcmVjdCBzdGFydHMgZnJvbSB0
aGUgcmlnaHQgc2lkZQotICAgICAgICAgICAgLy8gb2YgdGhlIHNjcm9sbCBiYXIuIFNvIHRoZSB4
IG9mIGxvY2FsRXhwb3NlUmVjdCBzaG91bGQgc3RhcnQgZnJvbSB0aGUgc2FtZSBwb3NpdGlvbiB0
b28uCi0gICAgICAgICAgICBsb2NhbEV4cG9zZVJlY3QubW92ZUJ5KExheW91dFBvaW50KC1zY3Jv
bGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXJXaWR0aCgpLCAwKSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kcygwX2x1LCAwX2x1LCBib3gtPmNsaWVudFdpZHRo
KCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOwotICAgICAgICBleHBhbmRTY3JvbGxSZWN0VG9WaXNp
YmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcoYm94LCBsYXllckJvdW5kcywgbG9j
YWxFeHBvc2VSZWN0KTsKLSAgICAgICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UmVjdFRv
RXhwb3NlKGxheWVyQm91bmRzLCBsb2NhbEV4cG9zZVJlY3QsIGluc2lkZUZpeGVkLCBvcHRpb25z
LmFsaWduWCwgb3B0aW9ucy5hbGlnblkpOwotCi0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IHNj
cm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbkNoYW5nZU9w
dGlvbnNGb3JFbGVtZW50KGJveC0+ZWxlbWVudCgpKSwgcmV2ZWFsUmVjdCwgbG9jYWxFeHBvc2VS
ZWN0KSkKLSAgICAgICAgICAgIG5ld1JlY3QgPSByZXN1bHQudmFsdWUoKTsKLSAgICB9IGVsc2Ug
aWYgKCFwYXJlbnRMYXllcikgewotICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKTsKLQotICAgICAg
ICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAg
ICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lRWxlbWVudEJhc2UgPSBudWxscHRyOwot
Ci0gICAgICAgICAgICBpZiAoaXM8SFRNTEZyYW1lRWxlbWVudEJhc2U+KCpvd25lckVsZW1lbnQp
KQotICAgICAgICAgICAgICAgIGZyYW1lRWxlbWVudEJhc2UgPSBkb3duY2FzdDxIVE1MRnJhbWVF
bGVtZW50QmFzZT4ob3duZXJFbGVtZW50KTsKLQotICAgICAgICAgICAgaWYgKGZyYW1lRWxlbWVu
dEFuZFZpZXdQZXJtaXRTY3JvbGwoZnJhbWVFbGVtZW50QmFzZSwgZnJhbWVWaWV3KSkgewotICAg
ICAgICAgICAgICAgIC8vIElmIHRoaXMgYXNzZXJ0aW9uIGZpcmVzIHdlIG5lZWQgdG8gcHJvdGVj
dCB0aGUgb3duZXJFbGVtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkLgotICAgICAgICAgICAgICAg
IFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29w
ZTsKLQotICAgICAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlz
aWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVS
ZWN0KTsKLQotICAgICAgICAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBvd25lckVsZW1lbnQtPmNv
bnRlbnREb2N1bWVudCgpID8gb3duZXJFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCkgOiBudWxscHRyOwotICAgICAgICAgICAgICAgIFJlbmRlckJveCogcmVuZGVy
ZXIgPSBlbGVtZW50ID8gZWxlbWVudC0+cmVuZGVyQm94KCkgOiBudWxscHRyOwotICAgICAgICAg
ICAgICAgIGV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJnZXRSZWN0VG9JbmNsdWRlU2Nyb2xs
UGFkZGluZyhyZW5kZXJlciwgdmlld1JlY3QsIG5ld1JlY3QpOwotCi0gICAgICAgICAgICAgICAg
TGF5b3V0UmVjdCBleHBvc2VSZWN0ID0gZ2V0UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCBuZXdSZWN0
LCBpbnNpZGVGaXhlZCwgb3B0aW9ucy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsKLSAgICAgICAg
ICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoZXhwb3NlUmVj
dC5sb2NhdGlvbigpKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBBZGp1c3Qgb2Zmc2V0cyBpZiB0
aGV5J3JlIG91dHNpZGUgb2YgdGhlIGFsbG93YWJsZSByYW5nZS4KLSAgICAgICAgICAgICAgICBz
Y3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQb2lu
dCgpLCBJbnRQb2ludChmcmFtZVZpZXcuY29udGVudHNTaXplKCkpKTsKLQotICAgICAgICAgICAg
ICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdXNlIGNvbnRlbnREb2N1bWVudCgpLT5zY3JvbGxpbmdF
bGVtZW50KCk/Ci0gICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDUwNTkKLSAgICAgICAgICAgICAgICBmcmFtZVZpZXcuc2V0U2Ny
b2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0Zv
ckVsZW1lbnQoZWxlbWVudCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxk
QWxsb3dDcm9zc09yaWdpblNjcm9sbGluZyA9PSBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xs
aW5nOjpZZXMgfHwgZnJhbWVWaWV3LnNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGVuY2xvc2luZ0xheWVyID0gb3duZXJFbGVt
ZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdMYXllci0+ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVy
KEluY2x1ZGVTZWxmT3JOb3Q6OkluY2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8p
OwotICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSByZWN0IGludG8gdGhlIGNvb3Jk
aW5hdGUgc3BhY2Ugb2YgdGhlIHBhcmVudCBmcmFtZSdzIGRvY3VtZW50LgotICAgICAgICAgICAg
ICAgICAgICBuZXdSZWN0ID0gZnJhbWVWaWV3LmNvbnRlbnRzVG9Db250YWluaW5nVmlld0NvbnRl
bnRzKGVuY2xvc2luZ0ludFJlY3QobmV3UmVjdCkpOwotICAgICAgICAgICAgICAgICAgICBpbnNp
ZGVGaXhlZCA9IGZhbHNlOyAvLyBGSVhNRTogaWRlYWxseSBuZWVkIHRvIGRldGVybWluZSBpZiB0
aGlzIDxpZnJhbWU+IGlzIGluc2lkZSBwb3NpdGlvbjpmaXhlZC4KLSAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBudWxscHRyOwotICAgICAg
ICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG9wdGlvbnMucmV2ZWFs
TW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWxVcFRvTWFpbkZyYW1lICYmIGZyYW1l
Vmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6
OkRlbGVnYXRlTWFpbkZyYW1lU2Nyb2xsICYmIGZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1l
KCkpIHsKLSAgICAgICAgICAgICAgICBwYWdlKCkuY2hyb21lKCkuc2Nyb2xsTWFpbkZyYW1lVG9S
ZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVjdCkpOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBtaW5TY3JvbGxQb3Np
dGlvbiA9IGZyYW1lVmlldy5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKTsKLSAgICAgICAgICAgIGF1
dG8gbWF4U2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXcubWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7
Ci0KLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgICAgIExheW91dFJlY3Qgdmll
d1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0jZWxzZQotICAgICAgICAg
ICAgLy8gRklYTUU6IENvbnRlbnRJbnNldHMgc2hvdWxkIGJlIHRha2VuIGNhcmUgb2YgaW4gVUkg
cHJvY2VzcyBzaWRlLiB3ZWJraXQub3JnL2IvMTk5NjgyCi0gICAgICAgICAgICAvLyBUbyBkbyB0
aGF0LCBnZXRSZWN0VG9FeHBvc2UgbmVlZHMgdG8gcmV0dXJuIHRoZSBhZGRpdGlvbmFsIHNjcm9s
bGluZyB0byBkbyBiZXlvbmQgY29udGVudCByZWN0LgotICAgICAgICAgICAgTGF5b3V0UmVjdCB2
aWV3UmVjdCA9IGZyYW1lVmlldy52aWV3UmVjdEV4cGFuZGVkQnlDb250ZW50SW5zZXRzKCk7Ci0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiB3ZWJraXQub3JnL2IvMTk5NjgzIEZyYW1lVmlldzo6dmlz
aWJsZUNvbnRlbnRSZWN0IGlzIHdyb25nIHdoZW4gY29udGVudCBpbnNldHMgYXJlIHByZXNlbnQK
LSAgICAgICAgICAgIG1heFNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9u
RnJvbU9mZnNldChTY3JvbGxQb3NpdGlvbihmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUoKSAt
IGZsb29yZWRJbnRTaXplKHZpZXdSZWN0LnNpemUoKSkpKTsKLQotICAgICAgICAgICAgYXV0byBj
b250ZW50SW5zZXRzID0gcGFnZSgpLmNvbnRlbnRJbnNldHMoKTsKLSAgICAgICAgICAgIG1pblNj
cm9sbFBvc2l0aW9uLm1vdmUoLWNvbnRlbnRJbnNldHMubGVmdCgpLCAtY29udGVudEluc2V0cy50
b3AoKSk7Ci0gICAgICAgICAgICBtYXhTY3JvbGxQb3NpdGlvbi5tb3ZlKGNvbnRlbnRJbnNldHMu
cmlnaHQoKSwgY29udGVudEluc2V0cy5ib3R0b20oKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIC8v
IE1vdmUgdGhlIHRhcmdldCByZWN0IGludG8gInNjcm9sbFZpZXcgY29udGVudHMiIGNvb3JkaW5h
dGVzLgotICAgICAgICAgICAgTGF5b3V0UmVjdCB0YXJnZXRSZWN0ID0gYWJzb2x1dGVSZWN0Owot
ICAgICAgICAgICAgdGFyZ2V0UmVjdC5tb3ZlKDAsIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSk7
Ci0KLSAgICAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVu
dCgpID8gZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBu
dWxscHRyOwotICAgICAgICAgICAgUmVuZGVyQm94KiByZW5kZXJlciA9IGVsZW1lbnQgPyBlbGVt
ZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBleHBhbmRTY3JvbGxSZWN0
VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcocmVuZGVyZXIsIHZpZXdS
ZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgICAgICAgICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0ID0g
Z2V0UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCB0YXJnZXRSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9u
cy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsKLSAgICAgICAgICAgIC8vIEF2b2lkIHNjcm9sbGlu
ZyB0byB0aGUgcm91bmRlZCB2YWx1ZSBvZiByZXZlYWxSZWN0LmxvY2F0aW9uKCkgaWYgd2UgZG9u
J3QgYWN0dWFsbHkgbmVlZCB0byBzY3JvbGwKLSAgICAgICAgICAgIGlmIChyZXZlYWxSZWN0ICE9
IHZpZXdSZWN0KSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2UgZG9j
dW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgpPwotICAgICAgICAgICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDU5Ci0gICAgICAgICAgICAg
ICAgU2Nyb2xsT2Zmc2V0IGNsYW1wZWRTY3JvbGxQb3NpdGlvbiA9IHJvdW5kZWRJbnRQb2ludChy
ZXZlYWxSZWN0LmxvY2F0aW9uKCkpLmNvbnN0cmFpbmVkQmV0d2VlbihtaW5TY3JvbGxQb3NpdGlv
biwgbWF4U2Nyb2xsUG9zaXRpb24pOwotICAgICAgICAgICAgICAgIGZyYW1lVmlldy5zZXRTY3Jv
bGxQb3NpdGlvbihjbGFtcGVkU2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0
aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBUaGlzIGlzIHRoZSBvdXRlcm1vc3QgdmlldyBvZiBhIHdlYiBwYWdlLCBzbyBhZnRlciBzY3Jv
bGxpbmcgdGhpcyB2aWV3IHdlCi0gICAgICAgICAgICAvLyBzY3JvbGwgaXRzIGNvbnRhaW5lciBi
eSBjYWxsaW5nIFBhZ2U6OnNjcm9sbE1haW5GcmFtZVRvUmV2ZWFsUmVjdC4KLSAgICAgICAgICAg
IC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGlj
YXRpb25zCi0gICAgICAgICAgICAvLyB0aGF0IHB1dCB3ZWIgdmlld3MgaW50byBzY3JvbGxpbmcg
Y29udGFpbmVycywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgotICAgICAgICAgICAgLy8gVGhlIGNh
bkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVyIGFsc28ga25vd3MgYWJvdXQgdGhp
cy4KLSAgICAgICAgICAgIHBhZ2UoKS5jaHJvbWUoKS5zY3JvbGxDb250YWluaW5nU2Nyb2xsVmll
d3NUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVSZWN0KSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcmVudExheWVyKQotICAgICAgICBwYXJlbnRMYXllci0+
c2Nyb2xsUmVjdFRvVmlzaWJsZShuZXdSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucyk7Ci19Ci0K
LUxheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0
JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVG
aXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVu
dCYgYWxpZ25ZKSBjb25zdAotewotICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIo
KS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkg
JiYgaW5zaWRlRml4ZWQpIHsKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW5zaWRlIHBv
c2l0aW9uOmZpeGVkIGFuZCB3ZSdyZSBub3Qgc2NhbGVkLCBubyBhbW91bnQgb2Ygc2Nyb2xsaW5n
IGlzIGdvaW5nIHRvIG1vdmUgdGhpbmdzIGFyb3VuZC4KLSAgICAgICAgaWYgKGZyYW1lVmlldy5m
cmFtZVNjYWxlRmFjdG9yKCkgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiB2aXNpYmxlUmVjdDsK
LQotICAgICAgICBpZiAocmVuZGVyZXIoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxl
ZCgpKSB7Ci0gICAgICAgICAgICAvLyBleHBvc2VSZWN0IGlzIGluIGFic29sdXRlIGNvb3Jkcywg
YWZmZWN0ZWQgYnkgcGFnZSBzY2FsZS4gVW5zY2FsZSBpdC4KLSAgICAgICAgICAgIExheW91dFJl
Y3QgdW5zY2FsZWRFeHBvc2VSZWN0ID0gZXhwb3NlUmVjdDsKLSAgICAgICAgICAgIHVuc2NhbGVk
RXhwb3NlUmVjdC5zY2FsZSgxIC8gZnJhbWVWaWV3LmZyYW1lU2NhbGVGYWN0b3IoKSk7Ci0gICAg
ICAgICAgICB1bnNjYWxlZEV4cG9zZVJlY3QubW92ZSgwLCAtZnJhbWVWaWV3LmhlYWRlckhlaWdo
dCgpKTsKLQotICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGJvdGggaW4gdW5zY2FsZWQgY29vcmRp
bmF0ZXMuCi0gICAgICAgICAgICBMYXlvdXRSZWN0IGxheW91dFZpZXdwb3J0ID0gZnJhbWVWaWV3
LmxheW91dFZpZXdwb3J0UmVjdCgpOwotICAgICAgICAgICAgTGF5b3V0UmVjdCB2aXN1YWxWaWV3
cG9ydCA9IGZyYW1lVmlldy52aXN1YWxWaWV3cG9ydFJlY3QoKTsKLQotICAgICAgICAgICAgLy8g
VGhlIHJlY3QgdG8gZXhwb3NlIG1heSBiZSBwYXJ0aWFsbHkgb2Zmc2NyZWVuLCB3aGljaCB3ZSBj
YW4ndCBkbyBhbnl0aGluZyBhYm91dCB3aXRoIHBvc2l0aW9uOmZpeGVkLgotICAgICAgICAgICAg
dW5zY2FsZWRFeHBvc2VSZWN0LmludGVyc2VjdChsYXlvdXRWaWV3cG9ydCk7Ci0gICAgICAgICAg
ICAvLyBNYWtlIHN1cmUgaXQncyBub3QgbGFyZ2VyIHRoYW4gdGhlIHZpc3VhbCB2aWV3cG9ydDsg
aWYgc28sIHdlJ2xsIGp1c3QgbW92ZSB0byB0aGUgdG9wIGxlZnQuCi0gICAgICAgICAgICB1bnNj
YWxlZEV4cG9zZVJlY3Quc2V0U2l6ZSh1bnNjYWxlZEV4cG9zZVJlY3Quc2l6ZSgpLnNocnVua1Rv
KHZpc3VhbFZpZXdwb3J0LnNpemUoKSkpOwotCi0gICAgICAgICAgICAvLyBDb21wdXRlIGhvdyBt
dWNoIHdlIGhhdmUgdG8gbW92ZSB0aGUgdmlzdWFsVmlld3BvcnQgdG8gcmV2ZWFsIHRoZSBwYXJ0
IG9mIHRoZSBsYXlvdXRWaWV3cG9ydCB0aGF0IGNvbnRhaW5zIGV4cG9zZVJlY3QuCi0gICAgICAg
ICAgICBMYXlvdXRSZWN0IHJlcXVpcmVkVmlzdWFsVmlld3BvcnQgPSBnZXRSZWN0VG9FeHBvc2Uo
dmlzdWFsVmlld3BvcnQsIHVuc2NhbGVkRXhwb3NlUmVjdCwgZmFsc2UsIGFsaWduWCwgYWxpZ25Z
KTsKLSAgICAgICAgICAgIC8vIFNjYWxlIGl0IGJhY2sgdXAuCi0gICAgICAgICAgICByZXF1aXJl
ZFZpc3VhbFZpZXdwb3J0LnNjYWxlKGZyYW1lVmlldy5mcmFtZVNjYWxlRmFjdG9yKCkpOwotICAg
ICAgICAgICAgcmVxdWlyZWRWaXN1YWxWaWV3cG9ydC5tb3ZlKDAsIGZyYW1lVmlldy5oZWFkZXJI
ZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWlyZWRWaXN1YWxWaWV3cG9ydDsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIC8vIERldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgWCBiZWhh
dmlvci4KLSAgICBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yIHNjcm9sbFg7Ci0gICAgTGF5b3V0
UmVjdCBleHBvc2VSZWN0WChleHBvc2VSZWN0LngoKSwgdmlzaWJsZVJlY3QueSgpLCBleHBvc2VS
ZWN0LndpZHRoKCksIHZpc2libGVSZWN0LmhlaWdodCgpKTsKLSAgICBMYXlvdXRVbml0IGludGVy
c2VjdFdpZHRoID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0LCBleHBvc2VSZWN0WCkud2lkdGgo
KTsKLSAgICBpZiAoaW50ZXJzZWN0V2lkdGggPT0gZXhwb3NlUmVjdC53aWR0aCgpIHx8IChhbGln
blgubGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVkKCkgJiYgaW50ZXJz
ZWN0V2lkdGggPj0gTUlOX0lOVEVSU0VDVF9GT1JfUkVWRUFMKSkgewotICAgICAgICAvLyBJZiB0
aGUgcmVjdGFuZ2xlIGlzIGZ1bGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHZpc2libGUg
YmVoYXZpb3IuCi0gICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZpc2li
bGUsIGJ1dCBvdmVyIGEgY2VydGFpbiB0aHJlc2hvbGQsCi0gICAgICAgIC8vIHRoZW4gdHJlYXQg
aXQgYXMgZnVsbHkgdmlzaWJsZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBob3Jpem9udGFsIHNjcm9s
bGluZwotICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFZpc2libGVCZWhhdmlvcigpOwotICAg
IH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGggPT0gdmlzaWJsZVJlY3Qud2lkdGgoKSkgewotICAg
ICAgICAvLyBJZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBkb24n
dCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsuCi0g
ICAgICAgIHNjcm9sbFggPSBhbGlnblguZ2V0VmlzaWJsZUJlaGF2aW9yKCk7Ci0gICAgICAgIGlm
IChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQotICAg
ICAgICAgICAgc2Nyb2xsWCA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsOwot
ICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGggPiAwKQotICAgICAgICAvLyBJZiB0aGUgcmVj
dGFuZ2xlIGlzIHBhcnRpYWxseSB2aXNpYmxlLCBidXQgbm90IGFib3ZlIHRoZSBtaW5pbXVtIHRo
cmVzaG9sZCwgdXNlIHRoZSBzcGVjaWZpZWQgcGFydGlhbCBiZWhhdmlvcgotICAgICAgICBzY3Jv
bGxYID0gYWxpZ25YLmdldFBhcnRpYWxCZWhhdmlvcigpOwotICAgIGVsc2UKLSAgICAgICAgc2Ny
b2xsWCA9IGFsaWduWC5nZXRIaWRkZW5CZWhhdmlvcigpOwotICAgIC8vIElmIHdlJ3JlIHRyeWlu
ZyB0byBhbGlnbiB0byB0aGUgY2xvc2VzdCBlZGdlLCBhbmQgdGhlIGV4cG9zZVJlY3QgaXMgZnVy
dGhlciByaWdodAotICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90IGJpZ2dlciB0
aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0aGUgcmlnaHQuCi0gICAgaWYg
KHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdl
ICYmIGV4cG9zZVJlY3QubWF4WCgpID4gdmlzaWJsZVJlY3QubWF4WCgpICYmIGV4cG9zZVJlY3Qu
d2lkdGgoKSA8IHZpc2libGVSZWN0LndpZHRoKCkpCi0gICAgICAgIHNjcm9sbFggPSBTY3JvbGxB
bGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0OwotCi0gICAgLy8gR2l2ZW4gdGhlIFggYmVo
YXZpb3IsIGNvbXB1dGUgdGhlIFggY29vcmRpbmF0ZS4KLSAgICBMYXlvdXRVbml0IHg7Ci0gICAg
aWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGwpCi0gICAg
ICAgIHggPSB2aXNpYmxlUmVjdC54KCk7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxB
bGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0KQotICAgICAgICB4ID0gZXhwb3NlUmVjdC5t
YXhYKCkgLSB2aXNpYmxlUmVjdC53aWR0aCgpOwotICAgIGVsc2UgaWYgKHNjcm9sbFggPT0gU2Ny
b2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXIpCi0gICAgICAgIHggPSBleHBvc2VS
ZWN0LngoKSArIChleHBvc2VSZWN0LndpZHRoKCkgLSB2aXNpYmxlUmVjdC53aWR0aCgpKSAvIDI7
Ci0gICAgZWxzZQotICAgICAgICB4ID0gZXhwb3NlUmVjdC54KCk7Ci0KLSAgICAvLyBEZXRlcm1p
bmUgdGhlIGFwcHJvcHJpYXRlIFkgYmVoYXZpb3IuCi0gICAgU2Nyb2xsQWxpZ25tZW50OjpCZWhh
dmlvciBzY3JvbGxZOwotICAgIExheW91dFJlY3QgZXhwb3NlUmVjdFkodmlzaWJsZVJlY3QueCgp
LCBleHBvc2VSZWN0LnkoKSwgdmlzaWJsZVJlY3Qud2lkdGgoKSwgZXhwb3NlUmVjdC5oZWlnaHQo
KSk7Ci0gICAgTGF5b3V0VW5pdCBpbnRlcnNlY3RIZWlnaHQgPSBpbnRlcnNlY3Rpb24odmlzaWJs
ZVJlY3QsIGV4cG9zZVJlY3RZKS5oZWlnaHQoKTsKLSAgICBpZiAoaW50ZXJzZWN0SGVpZ2h0ID09
IGV4cG9zZVJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVs
bHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KLSAgICAgICAg
c2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKLSAgICBlbHNlIGlmIChpbnRl
cnNlY3RIZWlnaHQgPT0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIHsKLSAgICAgICAgLy8gSWYgdGhl
IHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgZG9uJ3QgYm90aGVyIHRyeWlu
ZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3JrLgotICAgICAgICBzY3JvbGxZ
ID0gYWxpZ25ZLmdldFZpc2libGVCZWhhdmlvcigpOwotICAgICAgICBpZiAoc2Nyb2xsWSA9PSBT
Y3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKLSAgICAgICAgICAgIHNjcm9s
bFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9sbDsKLSAgICB9IGVsc2UgaWYg
KGludGVyc2VjdEhlaWdodCA+IDApCi0gICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgcGFy
dGlhbGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRpYWwgYmVoYXZpb3IKLSAgICAg
ICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRQYXJ0aWFsQmVoYXZpb3IoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0SGlkZGVuQmVoYXZpb3IoKTsKLSAgICAvLyBJZiB3ZSdy
ZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0
IGlzIGZ1cnRoZXIgZG93bgotICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90IGJp
Z2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0aGUgYm90dG9tLgot
ICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9z
ZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFkoKSA+IHZpc2libGVSZWN0Lm1heFkoKSAmJiBleHBv
c2VSZWN0LmhlaWdodCgpIDwgdmlzaWJsZVJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHNjcm9sbFkg
PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkJvdHRvbTsKLQotICAgIC8vIEdpdmVu
IHRoZSBZIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBZIGNvb3JkaW5hdGUuCi0gICAgTGF5b3V0VW5p
dCB5OwotICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Ny
b2xsKQotICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgpOwotICAgIGVsc2UgaWYgKHNjcm9sbFkg
PT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Cb3R0b20pCi0gICAgICAgIHkgPSBl
eHBvc2VSZWN0Lm1heFkoKSAtIHZpc2libGVSZWN0LmhlaWdodCgpOwotICAgIGVsc2UgaWYgKHNj
cm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXIpCi0gICAgICAg
IHkgPSBleHBvc2VSZWN0LnkoKSArIChleHBvc2VSZWN0LmhlaWdodCgpIC0gdmlzaWJsZVJlY3Qu
aGVpZ2h0KCkpIC8gMjsKLSAgICBlbHNlCi0gICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKTsKLQot
ICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KHgsIHkpLCB2aXNpYmxlUmVjdC5zaXpl
KCkpOwotfQotCiB2b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50JiBw
b3NpdGlvbkluV2luZG93KQogewogICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9u
ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkud2luZG93VG9Db250ZW50cyhwb3NpdGlv
bkluV2luZG93KTsKLSAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKExheW91dFJlY3QoY3VycmVudERv
Y3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCBmYWxzZSwgeyBTZWxlY3Rpb25SZXZl
YWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2lu
U2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKExh
eW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCByZW5k
ZXJlcigpLCBmYWxzZSwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlm
TmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CiB9CiAKIGJv
b2wgUmVuZGVyTGF5ZXI6OmNhblJlc2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCmluZGV4IGU1ZTVlYzk0ODRkNjFjYTdkOTllYWU1ZWY1ZDRlNjU4MmRjOWVi
ZTUuLjM1YmYxNmQzZGFiOWY2YjUwZjIyNDMyYTE4OWU3YjY3NjY2YTBjYTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00NTksOCArNDU5LDYgQEAgcHVibGljOgog
ICAgIC8vIEZJWE1FOiBUaGlzIGNhbiByZXR1cm4gdGhlIFJlbmRlclZpZXcncyBsYXllciB3aGVu
IGNhbGxlcnMgcHJvYmFibHkgd2FudCB0aGUgRnJhbWVWaWV3IGFzIGEgU2Nyb2xsYWJsZUFyZWEu
CiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9y
Tm90LCBDcm9zc0ZyYW1lQm91bmRhcmllcykgY29uc3Q7CiAKLSAgICAvLyAiYWJzb2x1dGVSZWN0
IiBpcyBpbiBzY2FsZWQgZG9jdW1lbnQgY29vcmRpbmF0ZXMuCi0gICAgdm9pZCBzY3JvbGxSZWN0
VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZGVGaXhl
ZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKTsKICAgICAvLyBSZXR1cm5zIHRy
dWUgd2hlbiB0aGUgbGF5ZXIgY291bGQgZG8gdG91Y2ggc2Nyb2xsaW5nLCBidXQgZG9lc24ndCBs
b29rIGF0IHdoZXRoZXIgdGhlcmUgaXMgYWN0dWFsbHkgc2Nyb2xsYWJsZSBvdmVyZmxvdy4KICAg
ICBib29sIGNhblVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdDsKICAgICAvLyBSZXR1cm5z
IHRydWUgd2hlbiB0aGVyZSBpcyBhY3R1YWxseSBzY3JvbGxhYmxlIG92ZXJmbG93IChyZXF1aXJl
cyBsYXlvdXQgdG8gYmUgdXAtdG8tZGF0ZSkuCkBAIC00NzQsNiArNDcyLDggQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCB1cGRhdGVT
Y3JvbGxiYXJTdGVwcygpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgUmVuZGVyTGF5
ZXIgaXMgYSBjYW5kaWRhdGUgZm9yIHNjcm9sbGluZyBkdXJpbmcgc2Nyb2xsSW50b1ZpZXcgb3Bl
cmF0aW9ucy4KKyAgICBib29sIHNob3VsZFRyeVRvU2Nyb2xsRm9yU2Nyb2xsSW50b1ZpZXcoKSBj
b25zdDsKICAgICB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIGJvb2wg
Y2FuUmVzaXplKCkgY29uc3Q7CkBAIC0xMDM0LDggKzEwMzQsNiBAQCBwcml2YXRlOgogCiAgICAg
Ym9vbCBzaG91bGRCZVNlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7CiAKLSAgICBib29sIGFsbG93
c0N1cnJlbnRTY3JvbGwoKSBjb25zdDsKLQogICAgIHZvaWQgZGlydHlBbmNlc3RvckNoYWluVmlz
aWJsZURlc2NlbmRhbnRTdGF0dXMoKTsKICAgICB2b2lkIHNldEFuY2VzdG9yQ2hhaW5IYXNWaXNp
YmxlRGVzY2VuZGFudCgpOwogICAgIApAQCAtMTA3MCw4ICsxMDY4LDYgQEAgcHJpdmF0ZToKIAog
ICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdUcmFuc2Zvcm1lZEFuY2VzdG9yKCkgY29uc3Q7CiAK
LSAgICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxl
UmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29u
c3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25Z
KSBjb25zdDsKLQogICAgIC8vIENvbnZlcnQgYSBwb2ludCBpbiBhYnNvbHV0ZSBjb29yZHMgaW50
byBsYXllciBjb29yZHMsIHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudAogICAgIExheW91
dFBvaW50IGFic29sdXRlVG9Db250ZW50cyhjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxl
QXJlYS5jcHAKaW5kZXggNGQ3ZTE2MzA3MzFmYjAyZDczMDAyM2MxMzcwYzA2YWEwZmFiZTZjNC4u
MGQzNjI0NDkxMjY2NDEzNGViYzY3NTE1YzEwMzg4YzM4YzcwYTAyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApA
QCAtMTc1OCwyNSArMTc1OCw1NCBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnBh
blNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgc291cmNlUG9pbnQpCiAgICAgc2Nyb2xs
QnlSZWN1cnNpdmVseShhZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRhKSk7CiB9CiAKLXN0ZDo6b3B0
aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xs
UG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zJiBvcHRpb25zLCBjb25z
dCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJl
Y3QpCitMYXlvdXRSZWN0IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RUb1Zp
c2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBjb25zdCBTY3JvbGxSZWN0VG9W
aXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBBU1NFUlQobV9sYXllci5hbGxvd3NDdXJy
ZW50U2Nyb2xsKCkpOworICAgIFJlbmRlckJveCogYm94ID0gbGF5ZXIoKS5yZW5kZXJCb3goKTsK
KyAgICBBU1NFUlQoYm94KTsKKyAgICBMYXlvdXRSZWN0IGxvY2FsRXhwb3NlUmVjdChib3gtPmFi
c29sdXRlVG9Mb2NhbFF1YWQoRmxvYXRRdWFkKEZsb2F0UmVjdChhYnNvbHV0ZVJlY3QpKSkuYm91
bmRpbmdCb3goKSk7CisKKyAgICAvLyBsb2NhbEV4cG9zZWRSZWN0IGlzIG5vdyB0aGUgYWJzb2x1
dGUgcmVjdCBpbiBsb2NhbCBjb29yZGluYXRlcywgYnV0IHJlbGF0aXZlIHRvIHRoZQorICAgIC8v
IGJvcmRlciBlZGdlLiBNYWtlIHRoZSByZWN0YW5nbGUgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGFi
bGUgYXJlYS4KKyAgICBsb2NhbEV4cG9zZVJlY3QubW92ZUJ5KC1MYXlvdXRQb2ludChib3gtPmJv
cmRlckxlZnQoKSwgYm94LT5ib3JkZXJUb3AoKSkpOworCisgICAgaWYgKGJveC0+c2hvdWxkUGxh
Y2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpKSB7CisgICAgICAgIC8vIEZvciBgZGlyZWN0aW9u
OiBydGw7IHdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC17dGIsYnR9YCBhbmQgYHdyaXRpbmctbW9k
ZTogdmVydGljYWwtcmxgCisgICAgICAgIC8vIGJveGVzLCB0aGUgc2Nyb2xsIGJhciBpcyBvbiB0
aGUgbGVmdCBzaWRlLiBUaGUgdmlzaWJsZSByZWN0IHN0YXJ0cyBmcm9tIHRoZSByaWdodCBzaWRl
CisgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwgYmFyLiBTbyB0aGUgeCBvZiBsb2NhbEV4cG9zZVJl
Y3Qgc2hvdWxkIHN0YXJ0IGZyb20gdGhlIHNhbWUgcG9zaXRpb24gdG9vLgorICAgICAgICBsb2Nh
bEV4cG9zZVJlY3QubW92ZUJ5KExheW91dFBvaW50KC12ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCks
IDApKTsKKyAgICB9CisKKyAgICAvLyBzY3JvbGwtcGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3Jv
bGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSByZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4
cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVsYXRlIHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWlu
ZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxl
bWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCB0aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBj
b250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzKDBfbHUs
IDBfbHUsIGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5jbGllbnRIZWlnaHQoKSk7CisgICAgbG9j
YWxFeHBvc2VSZWN0LmV4cGFuZChib3gtPnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3QobGF5
ZXJCb3VuZHMpKTsKIAorICAgIGF1dG8gcmV2ZWFsUmVjdCA9IGdldFJlY3RUb0V4cG9zZUZvclNj
cm9sbEludG9WaWV3KGxheWVyQm91bmRzLCBsb2NhbEV4cG9zZVJlY3QsIG9wdGlvbnMuYWxpZ25Y
LCBvcHRpb25zLmFsaWduWSk7CisKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9IFNj
cm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7CisgICAgaWYg
KCFib3gtPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBi
b3gtPmVsZW1lbnQoKSAmJiB1c2VTbW9vdGhTY3JvbGxpbmcob3B0aW9ucy5iZWhhdmlvciwgYm94
LT5lbGVtZW50KCkpKQorICAgICAgICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBT
Y3JvbGxJc0FuaW1hdGVkOjpZZXM7CisgICAgaWYgKGF1dG8gcmVzdWx0ID0gdXBkYXRlU2Nyb2xs
UG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyhzY3JvbGxQb3NpdGlvbk9wdGlvbnMsIHJldmVhbFJl
Y3QsIGxvY2FsRXhwb3NlUmVjdCkpCisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKKyAg
ICByZXR1cm4gYWJzb2x1dGVSZWN0OworfQorc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkZvclNjcm9sbEludG9W
aWV3KGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgTGF5
b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxFeHBvc2VSZWN0KQor
ewogICAgIFJlbmRlckJveCogYm94ID0gbV9sYXllci5yZW5kZXJCb3goKTsKICAgICBBU1NFUlQo
Ym94KTsKIAogICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xsT2Zmc2V0ID0gY2xhbXBTY3Jv
bGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCkgKyB0b0ludFNpemUocm91bmRlZEludFJlY3QocmV2ZWFs
UmVjdCkubG9jYXRpb24oKSkpOwotICAgIGlmIChjbGFtcGVkU2Nyb2xsT2Zmc2V0ICE9IHNjcm9s
bE9mZnNldCgpIHx8IHNjcm9sbEFuaW1hdGlvblN0YXR1cygpICE9IFNjcm9sbEFuaW1hdGlvblN0
YXR1czo6Tm90QW5pbWF0aW5nKSB7Ci0gICAgICAgIFNjcm9sbE9mZnNldCBvbGRTY3JvbGxPZmZz
ZXQgPSBzY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgU2Nyb2xsT2Zmc2V0IHJlYWxTY3JvbGxPZmZz
ZXQgPSBzY3JvbGxUb09mZnNldChjbGFtcGVkU2Nyb2xsT2Zmc2V0LCBvcHRpb25zKTsKLQotICAg
ICAgICBJbnRTaXplIHNjcm9sbE9mZnNldERpZmZlcmVuY2UgPSByZWFsU2Nyb2xsT2Zmc2V0IC0g
b2xkU2Nyb2xsT2Zmc2V0OwotICAgICAgICBhdXRvIGxvY2FsRXhwb3NlUmVjdFNjcm9sbGVkID0g
bG9jYWxFeHBvc2VSZWN0OwotICAgICAgICBsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZC5tb3ZlKC1z
Y3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIExheW91dFJlY3QoYm94LT5s
b2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QobG9jYWxFeHBvc2VSZWN0U2Ny
b2xsZWQpKSwgVXNlVHJhbnNmb3JtcykuYm91bmRpbmdCb3goKSk7Ci0gICAgfQorICAgIGlmIChj
bGFtcGVkU2Nyb2xsT2Zmc2V0ID09IHNjcm9sbE9mZnNldCgpICYmIHNjcm9sbEFuaW1hdGlvblN0
YXR1cygpID09IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90QW5pbWF0aW5nKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU2Nyb2xsT2Zmc2V0IG9sZFNjcm9sbE9mZnNldCA9
IHNjcm9sbE9mZnNldCgpOworICAgIFNjcm9sbE9mZnNldCByZWFsU2Nyb2xsT2Zmc2V0ID0gc2Ny
b2xsVG9PZmZzZXQoY2xhbXBlZFNjcm9sbE9mZnNldCwgb3B0aW9ucyk7CiAKLSAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0RGlmZmVyZW5jZSA9IHJlYWxT
Y3JvbGxPZmZzZXQgLSBvbGRTY3JvbGxPZmZzZXQ7CisgICAgYXV0byBsb2NhbEV4cG9zZVJlY3RT
Y3JvbGxlZCA9IGxvY2FsRXhwb3NlUmVjdDsKKyAgICBsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZC5t
b3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdChib3gt
PmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKEZsb2F0UmVjdChsb2NhbEV4cG9zZVJlY3RT
Y3JvbGxlZCkpLCBVc2VUcmFuc2Zvcm1zKS5ib3VuZGluZ0JveCgpKTsKIH0KIAogdm9pZCBSZW5k
ZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGNvbnN0IEludFNpemUm
IGRlbHRhLCBTY3JvbGxhYmxlQXJlYSoqIHNjcm9sbGVkQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IGJmMjdl
ZGMxNTI2NzQ0ODNmYzc5Nzc3YjY5YTllYzFiZGRhMTZhNjMuLjg5OTU4MjhiMjY0YjAwYmFiZmI3
ZDY0MjgxODFjNmRlMTJhM2YwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMjM2LDcgKzIzNiw4IEBAIHB1Ymxp
YzoKIAogICAgIEludFNpemUgc2Nyb2xsYmFyT2Zmc2V0KGNvbnN0IFNjcm9sbGJhciYpIGNvbnN0
OwogCi0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlvbihj
b25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0JiByZXZl
YWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpOworICAgIExheW91dFJl
Y3Qgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGNv
bnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlvbkZvclNjcm9sbEludG9WaWV3KGNvbnN0IFNjcm9s
bFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYsIGNvbnN0IExheW91dFJlY3QmIHJldmVhbFJlY3QsIGNv
bnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3NlUmVjdCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBo
YXNIb3Jpem9udGFsT3ZlcmZsb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKaW5kZXggYjRiNjcxMDJkZmU3NGRmNWVhYjE1YzIwZmU0ZWRjNTYxNTJh
YzNmMy4uNjk3MzkyZjE2NWY1YmQ1ZjM3YTAzMTY4MGQ3MzYyYjdiMjQ1NzYxMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQ0OSwxOSArNDQ5LDYgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlck9iamVjdDo6ZW5jbG9zaW5nTGF5ZXIoKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1ib29sIFJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlzaWJs
ZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0
IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlmIChvcHRpb25z
LnJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6RG9Ob3RSZXZlYWwpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdMYXllciA9IHRoaXMt
PmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgaWYgKCFlbmNsb3NpbmdMYXllcikKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgZW5jbG9zaW5nTGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJz
b2x1dGVSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
IFJlbmRlckJveCYgUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdCb3goKSBjb25zdAogewogICAgIHJl
dHVybiAqbGluZWFnZU9mVHlwZTxSZW5kZXJCb3g+KGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4o
KnRoaXMpKS5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmlu
ZGV4IDZmZjIwMjEyYmE5Yzk4MWJjODdmZTFmNGI3ZjJiNTA4Y2VjMzNkMzcuLmEzYWIzZDg0MGZj
OGU2NDI3MmRlMjE5ZGZjODQ3M2I0ZmE2ODQ0ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKQEAgLTE1NCw5ICsxNTQsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JF
X0VYUE9SVCBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5ZXIoKSBjb25zdDsKIAotICAgIC8vIFNj
cm9sbGluZyBpcyBhIFJlbmRlckJveCBjb25jZXB0LCBob3dldmVyIHNvbWUgY29kZSBqdXN0IGNh
cmVzIGFib3V0IHJlY3Vyc2l2ZWx5IHNjcm9sbGluZyBvdXIgZW5jbG9zaW5nIFNjcm9sbGFibGVB
cmVhKHMpLgotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25z
dCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9s
bFJlY3RUb1Zpc2libGVPcHRpb25zJik7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJCb3gm
IGVuY2xvc2luZ0JveCgpIGNvbnN0OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBlbmNsb3Np
bmdCb3hNb2RlbE9iamVjdCgpIGNvbnN0OwogICAgIFJlbmRlckJveCogZW5jbG9zaW5nU2Nyb2xs
YWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TY3JvbGxBbGlnbm1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
MzM1ZmNmZGU2MDU3YzVlOWNjNzA4ZTQ5NGM1MTc1YjI2OGNiNmVkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
Y3JvbGxBbGlnbm1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRz
Y2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAqCi0gKiBPdGhlciBjb250cmlidXRv
cnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNzLmNtdS5lZHU+Ci0gKiAgIERhdmlk
IEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgotICogICBDaHJpc3RpYW4gQmllc2luZ2Vy
IDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAgUmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRlLmNv
bT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5pLWdp
ZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNzQG1hYy5jb20+Ci0gKiAgIEJvcmlz
IFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBBbHRl
cm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRo
ZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24g
MS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIp
IG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5k
IGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BMIiks
IGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQot
ICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxs
b3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRl
cm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwp
IGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMg
ZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQotICogZGVsZXRp
bmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBh
bmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBh
cyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9u
cyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmls
ZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsQWxpZ25tZW50LmgiCi0KLSNpbmNsdWRl
ICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduQ2VudGVySWZOb3RWaXNpYmxlID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpB
bGlnbkNlbnRlciwgQmVoYXZpb3I6Ok5vU2Nyb2xsIH07Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQg
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTm90VmlzaWJsZSA9IHsgQmVoYXZpb3I6Ok5v
U2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlLCBCZWhhdmlvcjo6Tm9TY3JvbGwg
fTsKLWNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZO
ZWVkZWQgPSB7IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVoYXZpb3I6OkFsaWduQ2VudGVyLCBCZWhh
dmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlIH07Ci1XRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxB
bGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkID0geyBCZWhhdmlv
cjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnblRvQ2xvc2VzdEVkZ2UsIEJlaGF2aW9yOjpBbGln
blRvQ2xvc2VzdEVkZ2UgfTsKLVdFQkNPUkVfRVhQT1JUIGNvbnN0IFNjcm9sbEFsaWdubWVudCBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVyQWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25DZW50
ZXIsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6OkFsaWduQ2VudGVyIH07Ci1jb25z
dCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA9IHsgQmVo
YXZpb3I6OkFsaWduVG9wLCBCZWhhdmlvcjo6QWxpZ25Ub3AsIEJlaGF2aW9yOjpBbGlnblRvcCB9
OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25SaWdodEFsd2F5
cyA9IHsgQmVoYXZpb3I6OkFsaWduUmlnaHQsIEJlaGF2aW9yOjpBbGlnblJpZ2h0LCBCZWhhdmlv
cjo6QWxpZ25SaWdodCB9OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25MZWZ0QWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25MZWZ0LCBCZWhhdmlvcjo6QWxpZ25M
ZWZ0LCBCZWhhdmlvcjo6QWxpZ25MZWZ0IH07Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkJvdHRvbUFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduQm90dG9tLCBC
ZWhhdmlvcjo6QWxpZ25Cb3R0b20sIEJlaGF2aW9yOjpBbGlnbkJvdHRvbSB9OwotICAgIAotVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU2Nyb2xsQWxpZ25tZW50OjpCZWhh
dmlvciBiKQotewotICAgIHN3aXRjaCAoYikgewotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpC
ZWhhdmlvcjo6Tm9TY3JvbGw6Ci0gICAgICAgIHJldHVybiB0cyA8PCAiTm9TY3JvbGwiOwotICAg
IGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXI6Ci0gICAgICAgIHJl
dHVybiB0cyA8PCAiQWxpZ25DZW50ZXIiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhh
dmlvcjo6QWxpZ25Ub3A6Ci0gICAgICAgIHJldHVybiB0cyA8PCAiQWxpZ25Ub3AiOwotICAgIGNh
c2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Cb3R0b206Ci0gICAgICAgIHJldHVy
biB0cyA8PCAiQWxpZ25Cb3R0b20iOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlv
cjo6QWxpZ25MZWZ0OgotICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduTGVmdCI7Ci0gICAgY2Fz
ZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0OgotICAgICAgICByZXR1cm4g
dHMgPDwgIkFsaWduUmlnaHQiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6
QWxpZ25Ub0Nsb3Nlc3RFZGdlOgotICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduVG9DbG9zZXN0
RWRnZSI7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLSAgICAKLVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgcykKLXsKLSAgICBy
ZXR1cm4gdHMgPDwgIlNjcm9sbEFsaWdubWVudDogdmlzaWJsZTogIiA8PCBzLm1fcmVjdFZpc2li
bGUgPDwgIiBoaWRkZW46ICIgPDwgcy5tX3JlY3RIaWRkZW4gPDwgIiBwYXJ0aWFsOiAiIDw8IHMu
bV9yZWN0UGFydGlhbDsKLX0KLQotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDFiYjZlZjllMjJlN2M1OTU1ODhhYjhiMzEyNzkyYTA4NTMzYWVhZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRz
Y2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAqCi0gKiBPdGhlciBjb250cmlidXRv
cnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNzLmNtdS5lZHU+Ci0gKiAgIERhdmlk
IEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgotICogICBDaHJpc3RpYW4gQmllc2luZ2Vy
IDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAgUmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRlLmNv
bT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5pLWdp
ZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNzQG1hYy5jb20+Ci0gKiAgIEJvcmlz
IFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv
IHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBBbHRl
cm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRo
ZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24g
MS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIp
IG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5k
IGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BMIiks
IGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQot
ICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxs
b3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRl
cm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwp
IGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMg
ZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQotICogZGVsZXRp
bmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBh
bmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBh
cyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9u
cyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmls
ZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTY3JvbGxBbGlnbm1lbnQgewotCi0gICAgZW51bSBj
bGFzcyBCZWhhdmlvciB7Ci0gICAgICAgIE5vU2Nyb2xsLAotICAgICAgICBBbGlnbkNlbnRlciwK
LSAgICAgICAgQWxpZ25Ub3AsCi0gICAgICAgIEFsaWduQm90dG9tLAotICAgICAgICBBbGlnbkxl
ZnQsCi0gICAgICAgIEFsaWduUmlnaHQsCi0gICAgICAgIEFsaWduVG9DbG9zZXN0RWRnZQotICAg
IH07Ci0KLSAgICBCZWhhdmlvciBnZXRWaXNpYmxlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBt
X3JlY3RWaXNpYmxlOyB9Ci0gICAgQmVoYXZpb3IgZ2V0UGFydGlhbEJlaGF2aW9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0UGFydGlhbDsgfQotICAgIEJlaGF2aW9yIGdldEhpZGRlbkJlaGF2aW9y
KCkgY29uc3QgeyByZXR1cm4gbV9yZWN0SGlkZGVuOyB9Ci0gICAgdm9pZCBkaXNhYmxlTGVnYWN5
SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKSB7IG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRh
bFZpc2liaWxpdHlUaHJlc2hvbGQgPSBmYWxzZTsgfQotICAgIGJvb2wgbGVnYWN5SG9yaXpvbnRh
bFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVMZWdh
Y3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZDsgfQotCi0gICAgc3RhdGljIGNvbnN0IFNj
cm9sbEFsaWdubWVudCBhbGlnbkNlbnRlcklmTm90VmlzaWJsZTsKLSAgICBzdGF0aWMgY29uc3Qg
U2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOb3RWaXNpYmxlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25DZW50ZXJJZk5lZWRlZDsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdl
SWZOZWVkZWQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVu
dCBhbGlnbkNlbnRlckFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFs
aWduVG9wQWx3YXlzOwotICAgIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25SaWdo
dEFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduTGVmdEFsd2F5
czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduQm90dG9tQWx3YXlzOwot
Ci0gICAgQmVoYXZpb3IgbV9yZWN0VmlzaWJsZTsKLSAgICBCZWhhdmlvciBtX3JlY3RIaWRkZW47
Ci0gICAgQmVoYXZpb3IgbV9yZWN0UGFydGlhbDsKLSAgICBib29sIG1fZW5hYmxlTGVnYWN5SG9y
aXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgeyB0cnVlIH07Ci19OwotICAgIAotV0VCQ09SRV9F
WFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9s
bEFsaWdubWVudDo6QmVoYXZpb3IpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYpOwotCi19
OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0KaW5kZXggZGZkYzNhOWM4YjJmZGViODNhZDNhZWU5NDlmY2QxZmYxNTVmNzMz
ZC4uMjIxZmQ5Nzc1MjdmY2UyZWU1MWYyNzYzN2VkZjI0N2Q4ZWJmZWZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MSw2ICs4MSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lU2VsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgorI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250
ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtNzI4LDExICs3MjksMTEgQEAgLSAodm9pZClf
c2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICopcmFuZ2UKICAgICAgICAgCiAgICAg
aWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPnJlbmRlcmVyKCkpIHsKICNpZiAhUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgc3RhcnROb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9W
aXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VSZWN0KSwgaW5zaWRlRml4ZWQs
IHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6
YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9s
bGluZzo6WWVzIH0pOworICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zp
c2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCAqc3RhcnROb2RlLT5y
ZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpS
ZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2Vi
Q29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91
bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CiAjZWxzZQogICAgICAgICBhdXRv
KiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAg
ICAgaWYgKGxheWVyKSB7Ci0gICAgICAgICAgICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNjcm9s
bFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCBpbnNp
ZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6
OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXc6OnNj
cm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCBz
dGFydE5vZGUtPnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFdlYkNvcmU6OlNlbGVjdGlvblJl
dmVhbE1vZGU6OlJldmVhbCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlm
TmVlZGVkLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdl
YkNvcmU6OlNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9KTsKICAgICAgICAg
ICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNldENhcmV0UmVjdE5lZWRzVXBk
YXRlKCk7CiAgICAgICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS51cGRh
dGVBcHBlYXJhbmNlKCk7CiAgICAgICAgIH0KQEAgLTc1MCw3ICs3NTEsNyBAQCAtICh2b2lkKV9z
Y3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFuZ2UgKilyYW5nZSB3aXRoSW5zZXQ6KENHRmxv
YXQpaW5zZXQKICAgICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkgewog
ICAgICAgICBhdXRvKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5
ZXIoKTsKICAgICAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgICAgICBzdGFydE5vZGUtPnJlbmRl
cmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5n
ZVJlY3QpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZl
YWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29y
ZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRB
bGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXN9KTsKKyAgICAgICAgICAgIFdlYkNvcmU6OkZy
YW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJh
bmdlUmVjdCksICpzdGFydE5vZGUtPnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFdlYkNvcmU6
OlNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50Ojph
bGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdl
SWZOZWVkZWQsIFdlYkNvcmU6OlNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9
KTsKIAogICAgICAgICAgICAgYXV0byBjb3JlRnJhbWUgPSBjb3JlKHNlbGYpOwogICAgICAgICAg
ICAgaWYgKGNvcmVGcmFtZSkgewo=
</data>
<flag name="commit-queue"
          id="477732"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451109</attachid>
            <date>2022-02-07 08:31:30 -0800</date>
            <delta_ts>2022-02-08 01:09:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236220-20220207173128.patch</filename>
            <type>text/plain</type>
            <size>89518</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUyMmRhMmQ4ZmYyNWJk
NmZiY2Y0NjNkN2M0OGFjYTJmYzRiZjM3Ni4uZmJmZGU3NDE4ZjUxM2YzMDlmOTgwODM5MmY1OTMx
MDY0NGI3OTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAyLTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWZhY3RvciBS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBub3QgY2hh
bmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1vdmUgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUgdG8gYSBzdGF0aWMgbWV0aG9kIGluIEZyYW1lVmlldyBhbmQgY29tYmluZSBpdCB3aXRo
CisgICAgICAgIFJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4gVGhpcyBhbHNvIHNw
bGl0cyBvdXQgdGhlIHRocmVlIGNvZGUgcGF0aHMgaW4gdGhpcyBtZXRob2QKKyAgICAgICAgaW50
byB0aHJlZSBzZXBhcmF0ZSBtZXRob2RzLCB0d28gb2YgdGhlbSBvbiBGcmFtZVZpZXcgYW5kIG9u
ZSBvZiB0aGVtIG9uCisgICAgICAgIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAg
ICAgSW4gYWRkaXRpb25zLCB2YXJpb3VzIG1ldGhvZHMgYXJlIG1vdmVkIGFuZCByZW5hbWVkIHRv
IG1ha2UgdGhlbSBtb3JlCisgICAgICAgIHVuZGVyc3RhbmRhYmxlLiBTY3JvbGxBbGlnbm1lbnQg
bXVzdCBtb3ZlIHRvIHBsYXRmb3JtLCBiZWNhdXNlIGdldFJlY3RUb0V4cG9zZSBtb3ZlcyB0bwor
ICAgICAgICBTY3JvbGxhYmxlQXJlYSBhbmQgaXMgcmVuYW1lZCB0byBnZXRSZWN0VG9FeHBvc2VG
b3JTY3JvbGxJbnRvVmlldy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOb3RWaXNpYmxlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24pOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Ny
b2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxQb3NpdGlv
bkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpnZXRQb3NzaWJseUZpeGVkUmVjdFRvRXhwb3NlIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
Z2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNj
cm9sbEludG9WaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRv
c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJn
ZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpmcmFtZUVsZW1lbnRBbmRWaWV3UGVybWl0U2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjphbGxvd3NDdXJyZW50U2Nyb2xsIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xs
UG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorCiAyMDIyLTAyLTA3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBTdXBwcmVzcyBub24tZm9yZWdyb3VuZCBw
YWludCBwaGFzZXMgZm9yIFNWRyBzaGFwZXMgJiBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwppbmRleCBiNjdkYmNjYjMxNjZkZTY3MzgxODA1ODdlMjg4MTkzODFlNWVkOGQ2Li4wNGJi
NmU5YzMyMGUzY2MxYTgwMzFmMWU1MzdmZmMyZDlkZTgwMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMDcgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIFJlbmRlckxheWVyOjpz
Y3JvbGxSZWN0VG9WaXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
Y3JvbGxET01SYW5nZVRvVmlzaWJsZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3Njcm9sbERP
TVJhbmdlVG9WaXNpYmxlOndpdGhJbnNldDpdKToKKwogMjAyMi0wMi0wNiAgVHlsZXIgV2lsY29j
ayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBZGQgaW50ZXJuYWwtb25seSBm
bGFnIHRvIGVuYWJsZSBXSVAgZGlzcGxheTogY29udGVudHMgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggODIxNjVmZGM4MDhkMDNmNzk5YjAzYWE3ZWY3MzUyZTA4ODhjZGRlZi4uZDNmZTY4
Nzk2ZGMzZTRlMDE4M2NjMzgwZDQ2MTJmNDE1NzhmY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMzEzLDYgKzEzMTMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmgKICAgICBwbGF0Zm9ybS9TY3JlZW5Qcm9w
ZXJ0aWVzLmgKICAgICBwbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
CisgICAgcGxhdGZvcm0vU2Nyb2xsQWxpZ25tZW50LmgKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25Nb21lbnR1bS5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAogICAgIHBsYXRm
b3JtL1Njcm9sbFR5cGVzLmgKQEAgLTE4NTUsNyArMTg1Niw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAogICAgIHJl
bmRlcmluZy9SZW5kZXJWaWV3LmgKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKLSAgICBy
ZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKICAgICByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmgKICAgICByZW5kZXJpbmcvVGV4dEJveFNlbGVjdGFibGVSYW5nZS5oCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggOThiMDM1NzkxYTZlYmIwZDlmMTU3MWE1N2E0MmVjZDVmMTU1
Y2ZiOS4uOWE2MTFkNTk1OGM4OGIyMmIwYTUyNzllNDYzMWRjM2IyMzZiODE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTU2Myw2ICs1NjMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuaAogICAgIHBsYXRmb3JtL1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmgKICAgICBwbGF0
Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorICAgIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVu
dC5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKICAgICBwbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4MTRhYTRmZGI4YmQ0ZWYxZWM2YWZjMDViMGU4NDBjZjhm
ZGVlMzAzLi4xZjYyODU0ZWYyM2QyNmRhZDNhN2UyOTJmNmE1YmM2MzY3YzZjNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTg5OCw2ICsxODk4LDcgQEAgcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3Bw
CiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCiBwbGF0Zm9ybS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuY3BwCiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuY3BwCitwbGF0Zm9y
bS9TY3JvbGxBbGlnbm1lbnQuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uY3BwCiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW0uY3BwCkBAIC0yMzk0LDcgKzIzOTUsNiBAQCByZW5kZXJpbmcvUmVuZGVyVlRUQ3Vl
LmNwcAogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAotcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5j
cHAKIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCiByZW5kZXJpbmcvU3R5bGVkTWFy
a2VkVGV4dC5jcHAKIHJlbmRlcmluZy9UYWJsZUxheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTc4ZWE5ZTRkOWRi
MTM3MWRhN2Y1NGZlMjRmZGU1MzcwYmU4MzVkLi5hYTQ2MjEwMTMzNjlkYmMzNWIzZGI4MGY0ZjVm
MDQxZmNhOTcxMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMDQzLDYgKzIwNDMsNyBAQAogCQk1OUMyODA0NjEzOERDMjQx
MDA3OUI3RTIgLyogWE1MRXJyb3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUMyODA0NDEzOERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmggKi87
IH07CiAJCTVBNTc0RjI1MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUE1NzRGMjMxMzFEQjkzOTAw
NDcxQjg4IC8qIFJlbmRlclF1b3RlLmggKi87IH07CiAJCTVBNTc0RjI5MTMxREI5NkQwMDQ3MUI4
OCAvKiBRdW90ZXNEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QTU3NEYyNzEzMURCOTZEMDA0NzFCODggLyogUXVvdGVzRGF0YS5oICovOyB9Owor
CQk1QjJENzY3MjI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjJENzY3MDI3QjE0NjA4MDBG
OUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJh
d0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCMzA2OTVCMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggKi87IH07CiAJ
CTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0NjY1NUYy
NUQxNEMwOTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUI0NjY1NjQyNUQxNEMw
QTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjQ2NjU2MDI1RDE0QzBBMDAwQ0ZFMTQgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjA3Nyw3ICsyMDc4LDYgQEAKIAkJNUNFRUU0MzYxRjVGOEYy
MTAwMTRBNUY1IC8qIFJlY3RFZGdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVEMjFBODAz
MTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEMjFBODAxMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJW
VFRQYXJzZXIuaCAqLzsgfTsKIAkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZl
cnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVE
NTk3NUIxMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNUQ5MjVCNjgwRjY0RDRERDAwQjg0
N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUQ5MjVCNjYwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEFsaWdubWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVE
QTVFMEZEMTAyQjk1MzgwMDA4OENGOSAvKiBKU1dlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURBNUUwRkIxMDJCOTUzODAwMDg4Q0Y5IC8q
IEpTV2ViU29ja2V0LmggKi87IH07CiAJCTVEQjFCQzZBMTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFu
c2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLzsgfTsK
IAkJNURGN0Y1QzIwRjAxRjkyQTAwNTI2QjRCIC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NjU4MEVGMDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggKi87IH07CkBAIC0x
MDU2MSw2ICsxMDU2MSw4IEBACiAJCTVBNTc0RjI3MTMxREI5NkQwMDQ3MUI4OCAvKiBRdW90ZXNE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3Rlc0RhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUE5MTQ2OUU4RTlGODQ4NUMzN0EyODc2IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVCMUUwRTQzMjVEMTYyOUIwMDI3MjI4MSAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjJENzY2RTI3QjE0NjA3MDBGOUJBM0Mg
LyogU2Nyb2xsQWxpZ25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcm9sbEFsaWdubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVC
MkQ3NjcwMjdCMTQ2MDgwMEY5QkEzQyAvKiBTY3JvbGxBbGlnbm1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVCMzA2OTVBMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMRHJhd0J1ZmZl
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjMwNjk1QjE4QjNEMzQ1MDA5
OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHTERyYXdCdWZmZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVC
MzA2OTVDMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHTERyYXdCdWZmZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwNjY4LDggKzEwNjcwLDYgQEAKIAkJNUQyMUE4MDExM0VDRTVERjAwQkI3MDY0
IC8qIFdlYlZUVFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJW
VFRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1OTc1QjExOTYzNUYx
MTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3lzdGVtVmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDU5
NzVCMjE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVZlcnNpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsQWxpZ25t
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUQ5MjVCNjYwRjY0RDRERDAw
Qjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxBbGlnbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURB
NUUwRkExMDJCOTUzODAwMDg4Q0Y5IC8qIEpTV2ViU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNURBNUUwRkIxMDJCOTUzODAwMDg4Q0Y5IC8qIEpTV2ViU29ja2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViU29ja2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNmb3JtU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDA2Miw2ICszMDA2Miw4IEBACiAJ
CQkJNDExMjIzQjgyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLmggKi8sCiAJCQkJQkM4QUUzNEMxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVB
cmVhLmNwcCAqLywKIAkJCQlCQzhBRTM0RDEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFy
ZWEuaCAqLywKKwkJCQk1QjJENzY2RTI3QjE0NjA3MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50
LmNwcCAqLywKKwkJCQk1QjJENzY3MDI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50
LmggKi8sCiAJCQkJMEY2RUFENjYyNkZFNzI4MDAwMDY0RDAzIC8qIFNjcm9sbEFuaW1hdGlvbi5j
cHAgKi8sCiAJCQkJMEZBNjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5o
ICovLAogCQkJCTBGQzY5MkJDMjU3QzBGNDEwMDk4RTNGOSAvKiBTY3JvbGxBbmltYXRpb25LaW5l
dGljLmNwcCAqLywKQEAgLTMyMTU4LDggKzMyMTYwLDYgQEAKIAkJCQlCRTIwNTA3QzE4QTQ1OEIx
MDA4MDY0N0UgLyogUmVuZGVyVlRUQ3VlLmggKi8sCiAJCQkJQTg3MURGRTEwQTE1Mzc2QjAwQjEy
QTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi8sCiAJCQkJQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4
IC8qIFJlbmRlcldpZGdldC5oICovLAotCQkJCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxBbGlnbm1lbnQuY3BwICovLAotCQkJCTVEOTI1QjY2MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxBbGlnbm1lbnQuaCAqLywKIAkJCQk0NEIzOEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLywKIAkJCQk0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1OEQgLyog
U2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8sCiAJCQkJRTQ0MEZENTQyNUE0QUZFRTAwRjdDODQ5IC8q
IFN0eWxlZE1hcmtlZFRleHQuY3BwICovLApAQCAtMzcwNjcsNyArMzcwNjcsNyBAQAogCQkJCTIy
OEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xs
YWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLAotCQkJCTVEOTI1QjY4MEY2NEQ0REQwMEI4NDdGMCAv
KiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMkQ3NjcyMjdCMTQ2MDgw
MEY5QkEzQyAvKiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTYxQjBF
MjZGNDMyMTMwMDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEUwMDlDMjZGOTJEODQwMEFDRTlDNiAvKiBTY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1h
dG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGVkMWM2NWI2MWMwZWVkMWJlMzVjOGQy
ZDY2NDE4ODdjNzRjYWZkODAuLjBkZDk4Y2RkYTI0M2ZkMTEwZTAwZDllMjUxYTFmYmUzMGU0ZGRj
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMzI2Niw3ICszMjY2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25z
JgogICAgICAgICBwYXJlbnRPYmplY3QoKS0+c2Nyb2xsVG9NYWtlVmlzaWJsZSgpOwogCiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIt
PnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRpbmdCb3hSZWN0KCksIGZhbHNlLCBvcHRpb25zKTsK
KyAgICAgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kaW5nQm94UmVjdCgp
LCAqcmVuZGVyZXIsIGZhbHNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1YmZv
Y3VzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKaW5kZXggNGQz
Y2ZiNzViYTYwNjE4NDJmMmE2MTMxZmUwNzllNDU2NzUwNGQwMi4uNmIyMjY2NDJiODMyZDBiYTgy
NzFiNDY4ZjY5YWM3MTM1MDAxNzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRz
cGkuY3BwCkBAIC05OTMsNyArOTkzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OnNjcm9sbFRvTWFrZVZpc2libGUoaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2UKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9jb3JlT2JqZWN0LT5yZW5kZXJlcigpLT5zY3JvbGxS
ZWN0VG9WaXNpYmxlKHJlY3QsIGZhbHNlLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwg
YWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9KTsK
KyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgKm1fY29yZU9iamVjdC0+
cmVuZGVyZXIoKSwgZmFsc2UsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgs
IGFsaWduWSwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODUyMWMyNDAxOTExYzI2
MzFhNjc2NTk0ZDE5MjNlZTQ1MGU0ZGY0NC4uNzYyYjU0MTZlNGI2NmE5ZTc1ZDczMjc5ODBhMzM2
MGI4MDA0Y2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5LDcgQEAg
dm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxi
b29sLCBTY3JvbGxJbnRvVmlld09wdGkKICAgICAgICAgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6Tm8sCiAgICAgICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVo
YXZpb3I6OkF1dG8pCiAgICAgfTsKLSAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxl
KGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgdmlzaWJsZU9wdGlvbnMpOworICAgIEZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyKCksIGlu
c2lkZUZpeGVkLCB2aXNpYmxlT3B0aW9ucyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50
b1ZpZXcoYm9vbCBhbGlnblRvVG9wKSAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHZvaWQgRWxlbWVu
dDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKQogICAgIGF1dG8gYWxpZ25YID0gU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkOwogICAgIGFsaWduWC5kaXNhYmxlTGVn
YWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKTsKIAotICAgIHJlbmRlcmVyKCktPnNj
cm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlv
blJldmVhbE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmln
aW5TY3JvbGxpbmc6Ok5vIH0pOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShh
YnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVh
bE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3Jv
bGxpbmc6Ok5vIH0pOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOZWVkZWQo
Ym9vbCBjZW50ZXJJZk5lZWRlZCkKQEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgRWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29sIGNlbnRlcklmTmVlZGVkKQogICAgIGF1dG8gYWxp
Z25YID0gY2VudGVySWZOZWVkZWQgPyBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVk
ZWQgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQ7CiAgICAgYWxpZ25YLmRp
c2FibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZCgpOwogCi0gICAgcmVuZGVy
ZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRlRml4ZWQsIHsg
U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgsIGFsaWduWSwgU2hvdWxkQWxsb3dD
cm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CisgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9W
aXNpYmxlKGFic29sdXRlQm91bmRzLCAqcmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0
aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgsIGFsaWduWSwgU2hvdWxkQWxsb3dDcm9zc09y
aWdpblNjcm9sbGluZzo6Tm8gfSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJ
Zk5vdFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUpCkBAIC0xMDc2LDEwICsxMDc2LDgg
QEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShib29sIGNlbnRlcklm
Tm90VmlzaWJsZSkKICAgICAKICAgICBib29sIGluc2lkZUZpeGVkOwogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xs
TWFyZ2luKCZpbnNpZGVGaXhlZCk7Ci0gICAgaWYgKGNlbnRlcklmTm90VmlzaWJsZSkKLSAgICAg
ICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRl
Rml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduQ2VudGVySWZOb3RWaXNpYmxlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RW
aXNpYmxlLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMs
IGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25t
ZW50OjphbGlnblRvRWRnZUlmTm90VmlzaWJsZSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTm90VmlzaWJsZSwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7Cisg
ICAgYXV0byBhbGlnbiA9IGNlbnRlcklmTm90VmlzaWJsZSA/IFNjcm9sbEFsaWdubWVudDo6YWxp
Z25DZW50ZXJJZk5vdFZpc2libGUgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOb3RW
aXNpYmxlOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5k
cywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVh
bCwgYWxpZ24sIGFsaWduLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGFkYWI5
ZDFhOGNjN2MwOWRjZjlkNjc4NjhlM2ZlMDg5NzIzNGRiZmYuLjdjMTRhNzM4MDUyMjdmNjNhOTNh
M2JlNjBjODU4ZDU2MjcyMGI5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCkBAIC0yNDU3LDI0ICsyNDU3LDI0IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJl
dmVhbFNlbGVjdGlvbihTZWxlY3Rpb25SZXZlYWxNb2RlIHJldmVhbE1vZGUsIGNvbnN0IFNjcm9s
CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgQVNTRVJU
KHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpOwotICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgp
ICYmIHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoIXN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCkgfHwgIXN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkp
CisgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlm
IChSZW5kZXJMYXllciogbGF5ZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
LT5lbmNsb3NpbmdMYXllcigpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nU3VwcHJl
c3NDb3VudCkgewotICAgICAgICAgICAgICAgIGxheWVyLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJl
Y3QsIGluc2lkZUZpeGVkLCB7IHJldmVhbE1vZGUsIGFsaWdubWVudCwgYWxpZ25tZW50LCBTaG91
bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMsIHNjcm9sbEJlaGF2aW9yfSk7Ci0gICAg
ICAgICAgICAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX2Rv
Y3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkubm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb25CeVNjcm9sbGluZ0ZyYW1l
KCptX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vsc2UK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBvbmx5IGhhbmRsZXMgc2Nyb2xsaW5nIHRoZSBz
dGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKLSAgICAgICAgLy8gdGhlIHNlbGVjdGlvbiByZWN0
IGNvdWxkIGludGVyc2VjdCBtb3JlIHRoYW4ganVzdCB0aGF0LgotICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzQ3OTk4OTk+LgotICAgICAgICBpZiAoc3RhcnQuZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyBy
ZXZlYWxNb2RlLCBhbGlnbm1lbnQsIGFsaWdubWVudCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6WWVzLCBzY3JvbGxCZWhhdmlvcn0pKQotICAgICAgICAgICAgdXBkYXRlQXBwZWFy
YW5jZSgpOworICAgIGlmIChtX3Njcm9sbGluZ1N1cHByZXNzQ291bnQpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoaXMgY29kZSBvbmx5IGhhbmRsZXMgc2Nyb2xs
aW5nIHRoZSBzdGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKKyAgICAvLyB0aGUgc2VsZWN0aW9u
IHJlY3QgY291bGQgaW50ZXJzZWN0IG1vcmUgdGhhbiBqdXN0IHRoYXQuCisgICAgLy8gU2VlIDxy
ZGFyOi8vcHJvYmxlbS80Nzk5ODk5Pi4KKyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2li
bGUocmVjdCwgKnN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCksIGluc2lkZUZpeGVk
LCB7IHJldmVhbE1vZGUsIGFsaWdubWVudCwgYWxpZ25tZW50LCBTaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nOjpZZXMsIHNjcm9sbEJlaGF2aW9yIH0pOworICAgIHVwZGF0ZUFwcGVhcmFu
Y2UoKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKG1fZG9jdW1lbnQtPnBh
Z2UoKSkKKyAgICAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ub3Rp
ZnlSZXZlYWxlZFNlbGVjdGlvbkJ5U2Nyb2xsaW5nRnJhbWUoKm1fZG9jdW1lbnQtPmZyYW1lKCkp
OwogI2VuZGlmCi0gICAgfQogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25G
cm9tTm9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTZiMWUyMjk0ZjQ2N2Vh
M2YwZjA3NjcyNGJkMGMwODcwNDhmZWVlNi4uMjAwOWUyNzEyZWU0NTVhYTI1NDQxMmYwZDYyNWZm
NTQxNDE4NTY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTAxLDYgKzEwMSw3
IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhl
bHBlcnMuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlz
YWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIK
QEAgLTI0NDEsNyArMjQ0MiwxNDUgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvRm9jdXNlZEVs
ZW1lbnRJbnRlcm5hbCgpCiAKICAgICBib29sIGluc2lkZUZpeGVkOwogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlci0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhl
ZCk7Ci0gICAgcmVuZGVyZXItPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGlu
c2lkZUZpeGVkLCB7IG1fc2VsZWN0aW9uUmV2ZWFsTW9kZUZvckZvY3VzZWRFbGVtZW50LCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25D
ZW50ZXJJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7Cisg
ICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCAqcmVuZGVy
ZXIsIGluc2lkZUZpeGVkLCB7IG1fc2VsZWN0aW9uUmV2ZWFsTW9kZUZvckZvY3VzZWRFbGVtZW50
LCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8g
fSk7Cit9CisKK2Jvb2wgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91
dFJlY3QmIGFic29sdXRlUmVjdCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgYm9vbCBp
bnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05v
dFJldmVhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyTGF5ZXIqIGxheWVy
ID0gcmVuZGVyZXIuZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byB1c2UgUmVu
ZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllciBoZXJlLCBidXQgdGhhdCBzZWVtcyB0
byBza2lwIG92ZXJmbG93OmhpZGRlbiBsYXllcnMuCisgICAgTGF5b3V0UmVjdCBhZGp1c3RlZFJl
Y3QgPSBhYnNvbHV0ZVJlY3Q7CisgICAgZm9yICg7IGxheWVyOyBsYXllciA9IGxheWVyLT5lbmNs
b3NpbmdDb250YWluaW5nQmxvY2tMYXllcihDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8pKSB7Cisg
ICAgICAgIGlmIChsYXllci0+c2hvdWxkVHJ5VG9TY3JvbGxGb3JTY3JvbGxJbnRvVmlldygpKQor
ICAgICAgICAgICAgYWRqdXN0ZWRSZWN0ID0gbGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFy
ZWEoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhZGp1c3RlZFJlY3QsIG9wdGlvbnMpOworICAgIH0K
KworICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyLnZpZXcoKS5mcmFtZVZpZXcoKTsKKyAg
ICBjb25zdCBhdXRvKiBvd25lckVsZW1lbnQgPSBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgp
ID8gZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkgOiBudWxscHRy
OworICAgIGlmIChvd25lckVsZW1lbnQgJiYgb3duZXJFbGVtZW50LT5yZW5kZXJlcigpKQorICAg
ICAgICBmcmFtZVZpZXcuc2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KGFkanVzdGVkUmVj
dCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMsIG93bmVyRWxlbWVudCk7CisgICAgZnJhbWVWaWV3LnNj
cm9sbFJlY3RUb1Zpc2libGVJblRvcExldmVsVmlldyhhZGp1c3RlZFJlY3QsIGluc2lkZUZpeGVk
LCBvcHRpb25zKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFNjcm9sbFBvc2l0aW9u
Q2hhbmdlT3B0aW9ucyBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KGNvbnN0
IEZyYW1lVmlldyYgZnJhbWVWaWV3LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JvbGxSZWN0
VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0
aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7
CisgICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5hdXRvc2Nyb2xsSW5Q
cm9ncmVzcygpICYmIGVsZW1lbnQgJiYgdXNlU21vb3RoU2Nyb2xsaW5nKG9wdGlvbnMuYmVoYXZp
b3IsIGVsZW1lbnQpKQorICAgICAgICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBT
Y3JvbGxJc0FuaW1hdGVkOjpZZXM7CisgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uT3B0aW9uczsK
K307CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlSW5DaGlsZFZpZXcoY29u
c3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3Jv
bGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQpCit7CisgICAgY29uc3QgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZy
YW1lRWxlbWVudEJhc2UgPSBudWxscHRyOworICAgIGlmIChpczxIVE1MRnJhbWVFbGVtZW50QmFz
ZT4oKm93bmVyRWxlbWVudCkpCisgICAgICAgIGZyYW1lRWxlbWVudEJhc2UgPSBkb3duY2FzdDxI
VE1MRnJhbWVFbGVtZW50QmFzZT4ob3duZXJFbGVtZW50KTsKKworICAgIC8vIElmIHNjcm9sbGJh
cnMgYXJlbid0IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBwZXJtaXQgc2Nyb2xsaW5nLgorICAgIGlm
IChmcmFtZUVsZW1lbnRCYXNlICYmIGZyYW1lRWxlbWVudEJhc2UtPnNjcm9sbGluZ01vZGUoKSA9
PSBTY3JvbGxiYXJNb2RlOjpBbHdheXNPZmYpIHsKKyAgICAgICAgLy8gSWYgc2Nyb2xsYmFycyBh
cmUgZm9yYmlkZGVuLCB1c2VyIGluaXRpYXRlZCBzY3JvbGxzIHNob3VsZCBvYnZpb3VzbHkgYmUg
aWdub3JlZC4KKyAgICAgICAgaWYgKHdhc1Njcm9sbGVkQnlVc2VyKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIC8vIEZvcmJpZCBhdXRvc2Nyb2xscyB3aGVuIHNjcm9sbGJhcnMgYXJl
IG9mZiwgYnV0IHBlcm1pdHMgb3RoZXIgcHJvZ3JhbW1hdGljIHNjcm9sbHMsIGxpa2UgbmF2aWdh
dGlvbiB0byBhbiBhbmNob3IuCisgICAgICAgIGlmIChmcmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1
dG9zY3JvbGxJblByb2dyZXNzKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
aWYgKG9wdGlvbnMuc2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZyAhPSBTaG91bGRBbGxv
d0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgJiYgIXNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFy
ZW50KCkpIAorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiB0aGlzIGFzc2VydGlvbiBmaXJl
cyB3ZSBuZWVkIHRvIHByb3RlY3QgdGhlIG93bmVyRWxlbWVudCBmcm9tIGJlaW5nIGRlc3Ryb3ll
ZC4KKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxv
d2VkU2NvcGU7CisgICAgYXV0byB2aWV3UmVjdCA9IHZpc2libGVDb250ZW50UmVjdChTY3JvbGxh
YmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCk7CisKKyAgICAvLyBzY3JvbGwt
cGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSBy
ZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVsYXRl
IHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1
cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCB0
aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAgICBh
dXRvIHRhcmdldFJlY3QgPSBhYnNvbHV0ZVJlY3Q7CisgICAgYXV0byogZWxlbWVudCA9IG93bmVy
RWxlbWVudC0+Y29udGVudERvY3VtZW50KCkgPyBvd25lckVsZW1lbnQtPmNvbnRlbnREb2N1bWVu
dCgpLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gZWxlbWVudCA/IGVsZW1lbnQtPnJlbmRlckJveCgpIDogbnVsbHB0cikKKyAgICAgICAgdGFy
Z2V0UmVjdC5leHBhbmQocmVuZGVyZXItPnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qodmll
d1JlY3QpKTsKKworICAgIGF1dG8gcmV2ZWFsUmVjdCA9IGdldFBvc3NpYmx5Rml4ZWRSZWN0VG9F
eHBvc2Uodmlld1JlY3QsIHRhcmdldFJlY3QsIGluc2lkZUZpeGVkLCBvcHRpb25zLmFsaWduWCwg
b3B0aW9ucy5hbGlnblkpOworICAgIEludFBvaW50IHNjcm9sbFBvc2l0aW9uKHJvdW5kZWRJbnRQ
b2ludChyZXZlYWxSZWN0LmxvY2F0aW9uKCkpKTsKKworICAgIC8vIEFkanVzdCBvZmZzZXRzIGlm
IHRoZXkncmUgb3V0c2lkZSBvZiB0aGUgYWxsb3dhYmxlIHJhbmdlLgorICAgIHNjcm9sbFBvc2l0
aW9uID0gc2Nyb2xsUG9zaXRpb24uY29uc3RyYWluZWRCZXR3ZWVuKEludFBvaW50KCksIEludFBv
aW50KGNvbnRlbnRzU2l6ZSgpKSk7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHVzZSBjb250
ZW50RG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgpPworICAgIC8vIFNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDU5CisgICAgc2V0U2Nyb2xsUG9zaXRp
b24oc2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVsZW1lbnQo
KnRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpKTsKKworICAgIC8vIEZJWE1FOiBpZGVhbGx5IG5lZWQg
dG8gZGV0ZXJtaW5lIGlmIHRoaXMgPGlmcmFtZT4gaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkLgor
ICAgIGlmIChhdXRvKiBvd25lclJlbmRlcmVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpKQor
ICAgICAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnRlbnRzVG9Db250YWluaW5nVmlld0NvbnRl
bnRzKGVuY2xvc2luZ0ludFJlY3QodGFyZ2V0UmVjdCkpLCAqb3duZXJSZW5kZXJlciwgZmFsc2Ug
LyogaW5zaWRlRml4ZWQgKi8sIG9wdGlvbnMpOworfQorCit2b2lkIEZyYW1lVmlldzo6c2Nyb2xs
UmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVj
dCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmIG9w
dGlvbnMpCit7CisgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxN
b2RlOjpSZXZlYWxVcFRvTWFpbkZyYW1lICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byogcGFnZSA9IGZyYW1lKCkucGFnZSgpOworICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBT
ZWxlY3Rpb25SZXZlYWxNb2RlOjpEZWxlZ2F0ZU1haW5GcmFtZVNjcm9sbCAmJiBmcmFtZSgpLmlz
TWFpbkZyYW1lKCkpIHsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuc2Nyb2xsTWFpbkZyYW1lVG9S
ZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVjdCkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBtaW5TY3JvbGxQb3NpdGlvbiA9IG1pbmltdW1TY3JvbGxQb3Np
dGlvbigpOworICAgIGF1dG8gbWF4U2Nyb2xsUG9zaXRpb24gPSBtYXhpbXVtU2Nyb2xsUG9zaXRp
b24oKTsKKworI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGF1dG8gdmlld1JlY3QgPSB2
aXNpYmxlQ29udGVudFJlY3QoKTsKKyNlbHNlCisgICAgLy8gRklYTUU6IENvbnRlbnRJbnNldHMg
c2hvdWxkIGJlIHRha2VuIGNhcmUgb2YgaW4gVUkgcHJvY2VzcyBzaWRlLiB3ZWJraXQub3JnL2Iv
MTk5NjgyCisgICAgLy8gVG8gZG8gdGhhdCwgZ2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1Zp
ZXcgbmVlZHMgdG8gcmV0dXJuIHRoZSBhZGRpdGlvbmFsIHNjcm9sbGluZyB0byBkbyBiZXlvbmQg
Y29udGVudCByZWN0LgorICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSB2aWV3UmVjdEV4cGFuZGVk
QnlDb250ZW50SW5zZXRzKCk7CisKKyAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9iLzE5OTY4MyBG
cmFtZVZpZXc6OnZpc2libGVDb250ZW50UmVjdCBpcyB3cm9uZyB3aGVuIGNvbnRlbnQgaW5zZXRz
IGFyZSBwcmVzZW50CisgICAgbWF4U2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbkZyb21P
ZmZzZXQoU2Nyb2xsUG9zaXRpb24odG90YWxDb250ZW50c1NpemUoKSAtIGZsb29yZWRJbnRTaXpl
KHZpZXdSZWN0LnNpemUoKSkpKTsKKworICAgIGF1dG8gY29udGVudEluc2V0cyA9IHBhZ2UtPmNv
bnRlbnRJbnNldHMoKTsKKyAgICBtaW5TY3JvbGxQb3NpdGlvbi5tb3ZlKC1jb250ZW50SW5zZXRz
LmxlZnQoKSwgLWNvbnRlbnRJbnNldHMudG9wKCkpOworICAgIG1heFNjcm9sbFBvc2l0aW9uLm1v
dmUoY29udGVudEluc2V0cy5yaWdodCgpLCBjb250ZW50SW5zZXRzLmJvdHRvbSgpKTsKKyNlbmRp
ZgorICAgIC8vIE1vdmUgdGhlIHRhcmdldCByZWN0IGludG8gInNjcm9sbFZpZXcgY29udGVudHMi
IGNvb3JkaW5hdGVzLgorICAgIGF1dG8gdGFyZ2V0UmVjdCA9IGFic29sdXRlUmVjdDsKKyAgICB0
YXJnZXRSZWN0Lm1vdmUoMCwgaGVhZGVySGVpZ2h0KCkpOworCisgICAgLy8gc2Nyb2xsLXBhZGRp
bmcgYXBwbGllcyB0byB0aGUgc2Nyb2xsIGNvbnRhaW5lciwgYnV0IGV4cGFuZCB0aGUgcmVjdGFu
Z2xlIHRoYXQgd2Ugd2FudCB0byBleHBvc2UgaW4gb3JkZXIKKyAgICAvLyBzaW11bGF0ZSBwYWRk
aW5nIHRoZSBzY3JvbGwgY29udGFpbmVyLiBUaGlzIHJlY3RhbmdsZSBpcyBwYXNzZWQgdXAgdGhl
IHRyZWUgb2Ygc2Nyb2xsaW5nIGVsZW1lbnRzIHRvCisgICAgLy8gZW5zdXJlIHRoYXQgdGhlIHBh
ZGRpbmcgb24gdGhpcyBzY3JvbGwgY29udGFpbmVyIGlzIG1haW50YWluZWQuCisgICAgYXV0byog
ZWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKSA/IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCkgOiBudWxscHRyOworICAgIGlmIChhdXRvKiByZW5kZXJCb3ggPSBlbGVtZW50
ID8gZWxlbWVudC0+cmVuZGVyQm94KCkgOiBudWxscHRyKQorICAgICAgICB0YXJnZXRSZWN0LmV4
cGFuZChyZW5kZXJCb3gtPnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qodmlld1JlY3QpKTsK
KworICAgIExheW91dFJlY3QgcmV2ZWFsUmVjdCA9IGdldFBvc3NpYmx5Rml4ZWRSZWN0VG9FeHBv
c2Uodmlld1JlY3QsIHRhcmdldFJlY3QsIGluc2lkZUZpeGVkLCBvcHRpb25zLmFsaWduWCwgb3B0
aW9ucy5hbGlnblkpOworCisgICAgLy8gQXZvaWQgc2Nyb2xsaW5nIHRvIHRoZSByb3VuZGVkIHZh
bHVlIG9mIHJldmVhbFJlY3QubG9jYXRpb24oKSBpZiB3ZSBkb24ndCBhY3R1YWxseSBuZWVkIHRv
IHNjcm9sbAorICAgIGlmIChyZXZlYWxSZWN0ICE9IHZpZXdSZWN0KSB7CisgICAgICAgIC8vIEZJ
WE1FOiBTaG91bGQgd2UgdXNlIGRvY3VtZW50KCktPnNjcm9sbGluZ0VsZW1lbnQoKT8KKyAgICAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwNTkK
KyAgICAgICAgU2Nyb2xsT2Zmc2V0IGNsYW1wZWRTY3JvbGxQb3NpdGlvbiA9IHJvdW5kZWRJbnRQ
b2ludChyZXZlYWxSZWN0LmxvY2F0aW9uKCkpLmNvbnN0cmFpbmVkQmV0d2VlbihtaW5TY3JvbGxQ
b3NpdGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24pOworICAgICAgICBzZXRTY3JvbGxQb3NpdGlvbihj
bGFtcGVkU2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVsZW1l
bnQoKnRoaXMsIGVsZW1lbnQsIG9wdGlvbnMpKTsKKyAgICB9CisKKyAgICAvLyBUaGlzIGlzIHRo
ZSBvdXRlcm1vc3QgdmlldyBvZiBhIHdlYiBwYWdlLCBzbyBhZnRlciBzY3JvbGxpbmcgdGhpcyB2
aWV3IHdlCisgICAgLy8gc2Nyb2xsIGl0cyBjb250YWluZXIgYnkgY2FsbGluZyBQYWdlOjpzY3Jv
bGxNYWluRnJhbWVUb1JldmVhbFJlY3QuCisgICAgLy8gVGhpcyBvbmx5IGhhcyBhbiBlZmZlY3Qg
b24gdGhlIE1hYyBwbGF0Zm9ybSBpbiBhcHBsaWNhdGlvbnMKKyAgICAvLyB0aGF0IHB1dCB3ZWIg
dmlld3MgaW50byBzY3JvbGxpbmcgY29udGFpbmVycywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgor
ICAgIC8vIFRoZSBjYW5BdXRvc2Nyb2xsIGZ1bmN0aW9uIGluIEV2ZW50SGFuZGxlciBhbHNvIGtu
b3dzIGFib3V0IHRoaXMuCisgICAgcGFnZS0+Y2hyb21lKCkuc2Nyb2xsQ29udGFpbmluZ1Njcm9s
bFZpZXdzVG9SZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVjdCkpOwogfQogCiB2
b2lkIEZyYW1lVmlldzo6Y29udGVudHNSZXNpemVkKCkKQEAgLTMyODQsMTEgKzM0MjMsMTEgQEAg
dm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKCkKICAgICAvLyBTY3JvbGwgbmVzdGVkIGxh
eWVycyBhbmQgZnJhbWVzIHRvIHJldmVhbCB0aGUgYW5jaG9yLgogICAgIC8vIEFsaWduIHRvIHRo
ZSB0b3AgYW5kIHRvIHRoZSBjbG9zZXN0IHNpZGUgKHRoaXMgbWF0Y2hlcyBvdGhlciBicm93c2Vy
cykuCiAgICAgaWYgKGFuY2hvck5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSkKLSAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVj
dFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZl
YWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50
OjphbGlnblRvcEFsd2F5cywgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7
CisgICAgICAgIHNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgKmFuY2hvck5vZGUtPnJlbmRlcmVy
KCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9wQWx3
YXlzLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKICAgICBlbHNlIGlm
IChhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLmlzRmxpcHBlZEJsb2Nrc1dyaXRpbmdN
b2RlKCkpCi0gICAgICAgIGFuY2hvck5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2li
bGUocmVjdCwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduUmlnaHRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0Vk
Z2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CisgICAg
ICAgIHNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgKmFuY2hvck5vZGUtPnJlbmRlcmVyKCksIGlu
c2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50
OjphbGlnblJpZ2h0QWx3YXlzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQs
IFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UKLSAgICAg
ICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNp
ZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6
YWxpZ25MZWZ0QWx3YXlzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNo
b3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOworICAgICAgICBzY3JvbGxSZWN0
VG9WaXNpYmxlKHJlY3QsICphbmNob3JOb2RlLT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBT
ZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25MZWZ0QWx3
YXlzLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNob3VsZEFsbG93Q3Jv
c3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hl
ID0gZnJhbWUoKS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAg
Y2FjaGUtPmhhbmRsZVNjcm9sbGVkVG9BbmNob3IoYW5jaG9yTm9kZS5nZXQoKSk7CkBAIC01Nzcz
LDYgKzU5MTIsNDQgQEAgT3ZlcnNjcm9sbEJlaGF2aW9yIEZyYW1lVmlldzo6dmVydGljYWxPdmVy
c2Nyb2xsQmVoYXZpb3IoKSAgY29uc3QKICAgICAgICAgcmV0dXJuIHNjcm9sbGluZ09iamVjdC0+
c3R5bGUoKS5vdmVyc2Nyb2xsQmVoYXZpb3JZKCk7CiAgICAgcmV0dXJuIE92ZXJzY3JvbGxCZWhh
dmlvcjo6QXV0bzsKIH0KKworTGF5b3V0UmVjdCBGcmFtZVZpZXc6OmdldFBvc3NpYmx5Rml4ZWRS
ZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJl
Y3QmIGV4cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYg
YWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkgY29uc3QKK3sKKyAgICBpZiAo
IWluc2lkZUZpeGVkKQorICAgICAgICByZXR1cm4gZ2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50
b1ZpZXcodmlzaWJsZVJlY3QsIGV4cG9zZVJlY3QsIGFsaWduWCwgYWxpZ25ZKTsKKworICAgIC8v
IElmIHRoZSBlbGVtZW50IGlzIGluc2lkZSBwb3NpdGlvbjpmaXhlZCBhbmQgd2UncmUgbm90IHNj
YWxlZCwgbm8gYW1vdW50IG9mIHNjcm9sbGluZyBpcyBnb2luZyB0byBtb3ZlIHRoaW5ncyBhcm91
bmQuCisgICAgaWYgKGZyYW1lU2NhbGVGYWN0b3IoKSA9PSAxKQorICAgICAgICByZXR1cm4gdmlz
aWJsZVJlY3Q7CisKKyAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgcmV0dXJuIHZpc2libGVS
ZWN0IGFzIHdlbGw/CisgICAgaWYgKCFmcmFtZSgpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRF
bmFibGVkKCkpCisgICAgICAgIHJldHVybiBnZXRSZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmll
dyh2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdCwgYWxpZ25YLCBhbGlnblkpOworCisgICAgLy8gZXhw
b3NlUmVjdCBpcyBpbiBhYnNvbHV0ZSBjb29yZHMsIGFmZmVjdGVkIGJ5IHBhZ2Ugc2NhbGUuIFVu
c2NhbGUgaXQuCisgICAgYXV0byB1bnNjYWxlZEV4cG9zZVJlY3QgPSBleHBvc2VSZWN0OworICAg
IHVuc2NhbGVkRXhwb3NlUmVjdC5zY2FsZSgxIC8gZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAgICB1
bnNjYWxlZEV4cG9zZVJlY3QubW92ZSgwLCAtaGVhZGVySGVpZ2h0KCkpOworCisgICAgLy8gVGhl
c2UgYXJlIGJvdGggaW4gdW5zY2FsZWQgY29vcmRpbmF0ZXMuCisgICAgYXV0byBsYXlvdXRWaWV3
cG9ydCA9IGxheW91dFZpZXdwb3J0UmVjdCgpOworICAgIGF1dG8gdmlzdWFsVmlld3BvcnQgPSB2
aXN1YWxWaWV3cG9ydFJlY3QoKTsKKworICAgIC8vIFRoZSByZWN0IHRvIGV4cG9zZSBtYXkgYmUg
cGFydGlhbGx5IG9mZnNjcmVlbiwgd2hpY2ggd2UgY2FuJ3QgZG8gYW55dGhpbmcgYWJvdXQgd2l0
aCBwb3NpdGlvbjpmaXhlZC4KKyAgICB1bnNjYWxlZEV4cG9zZVJlY3QuaW50ZXJzZWN0KGxheW91
dFZpZXdwb3J0KTsKKworICAgIC8vIE1ha2Ugc3VyZSBpdCdzIG5vdCBsYXJnZXIgdGhhbiB0aGUg
dmlzdWFsIHZpZXdwb3J0OyBpZiBzbywgd2UnbGwganVzdCBtb3ZlIHRvIHRoZSB0b3AgbGVmdC4K
KyAgICB1bnNjYWxlZEV4cG9zZVJlY3Quc2V0U2l6ZSh1bnNjYWxlZEV4cG9zZVJlY3Quc2l6ZSgp
LnNocnVua1RvKHZpc3VhbFZpZXdwb3J0LnNpemUoKSkpOworCisgICAgLy8gQ29tcHV0ZSBob3cg
bXVjaCB3ZSBoYXZlIHRvIG1vdmUgdGhlIHZpc3VhbFZpZXdwb3J0IHRvIHJldmVhbCB0aGUgcGFy
dCBvZiB0aGUgbGF5b3V0Vmlld3BvcnQgdGhhdCBjb250YWlucyBleHBvc2VSZWN0LgorICAgIGF1
dG8gcmVxdWlyZWRWaXN1YWxWaWV3cG9ydCA9IGdldFJlY3RUb0V4cG9zZUZvclNjcm9sbEludG9W
aWV3KHZpc3VhbFZpZXdwb3J0LCB1bnNjYWxlZEV4cG9zZVJlY3QsIGFsaWduWCwgYWxpZ25ZKTsK
KworICAgIC8vIFNjYWxlIGl0IGJhY2sgdXAuCisgICAgcmVxdWlyZWRWaXN1YWxWaWV3cG9ydC5z
Y2FsZShmcmFtZVNjYWxlRmFjdG9yKCkpOworICAgIHJlcXVpcmVkVmlzdWFsVmlld3BvcnQubW92
ZSgwLCBoZWFkZXJIZWlnaHQoKSk7CisgICAgcmV0dXJuIHJlcXVpcmVkVmlzdWFsVmlld3BvcnQ7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI3VuZGVmIFBBR0VfSUQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5oCmluZGV4IDYwMmQ2MGM5Yzk3MDU1ZjY0OGNhNDhmZmZiZjljNDJiNWMxNmY5
MzMuLmQ1MDhlNjAyZDI0ODZmY2Y3YmQ2YzM2YTc1NmRjNTAwYjE2MzYyMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaApAQCAtMjU0LDYgKzI1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjcm9s
bFRvRm9jdXNlZEVsZW1lbnRJbW1lZGlhdGVseUlmTmVlZGVkKCk7CiAgICAgdm9pZCB1cGRhdGVM
YXllclBvc2l0aW9uc0FmdGVyU2Nyb2xsaW5nKCkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVDb21w
b3NpdGluZ0xheWVyc0FmdGVyU2Nyb2xsaW5nKCkgZmluYWw7CisgICAgc3RhdGljIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0
ZVJlY3QsIGNvbnN0IFJlbmRlck9iamVjdCYsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9s
bFJlY3RUb1Zpc2libGVPcHRpb25zJik7CiAKICAgICBib29sIHJlcXVlc3RTY3JvbGxQb3NpdGlv
blVwZGF0ZShjb25zdCBTY3JvbGxQb3NpdGlvbiYsIFNjcm9sbFR5cGUgPSBTY3JvbGxUeXBlOjpV
c2VyLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKSBmaW5hbDsKICAg
ICBib29sIHJlcXVlc3RBbmltYXRlZFNjcm9sbFRvUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRp
b24mLCBTY3JvbGxDbGFtcGluZyA9IFNjcm9sbENsYW1waW5nOjpDbGFtcGVkKSBmaW5hbDsKQEAg
LTg4Myw2ICs4ODQsMTAgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBNb25vdG9uaWNUaW1lIHND
dXJyZW50UGFpbnRUaW1lU3RhbXA7IC8vIHVzZWQgZm9yIGRldGVjdGluZyBkZWNvZGVkIHJlc291
cmNlIHRocmFzaCBpbiB0aGUgY2FjaGUKIAorICAgIHZvaWQgc2Nyb2xsUmVjdFRvVmlzaWJsZUlu
Q2hpbGRWaWV3KGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZGVGaXhl
ZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmLCBjb25zdCBIVE1MRnJhbWVPd25l
ckVsZW1lbnQqKTsKKyAgICB2b2lkIHNjcm9sbFJlY3RUb1Zpc2libGVJblRvcExldmVsVmlldyhj
b25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNj
cm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7CisgICAgTGF5b3V0UmVjdCBnZXRQb3NzaWJseUZp
eGVkUmVjdFRvRXhwb3NlKGNvbnN0IExheW91dFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBMYXlv
dXRSZWN0JiBleHBvc2VSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxBbGlnbm1l
bnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpIGNvbnN0OworCiAgICAg
Y29uc3QgUmVmPEZyYW1lPiBtX2ZyYW1lOwogICAgIEZyYW1lVmlld0xheW91dENvbnRleHQgbV9s
YXlvdXRDb250ZXh0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbGlnbm1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQWxpZ25tZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41MzM1ZmNmZGU2MDU3YzVlOWNjNzA4ZTQ5NGM1MTc1YjI2OGNiNmVk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQWxpZ25t
ZW50LmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBQb3J0
aW9ucyBhcmUgQ29weXJpZ2h0IChDKSAxOTk4IE5ldHNjYXBlIENvbW11bmljYXRpb25zIENvcnBv
cmF0aW9uLgorICoKKyAqIE90aGVyIGNvbnRyaWJ1dG9yczoKKyAqICAgUm9iZXJ0IE8nQ2FsbGFo
YW4gPHJvYytAY3MuY211LmVkdT4KKyAqICAgRGF2aWQgQmFyb24gPGRiYXJvbkBmYXMuaGFydmFy
ZC5lZHU+CisgKiAgIENocmlzdGlhbiBCaWVzaW5nZXIgPGNiaWVzaW5nZXJAd2ViLmRlPgorICog
ICBSYW5kYWxsIEplc3VwIDxyamVzdXBAd2dhdGUuY29tPgorICogICBSb2xhbmQgTWFpbnogPHJv
bGFuZC5tYWluekBpbmZvcm1hdGlrLm1lZC51bmktZ2llc3Nlbi5kZT4KKyAqICAgSm9zaCBTb3Jl
ZiA8dGltZWxlc3NAbWFjLmNvbT4KKyAqICAgQm9yaXMgWmJhcnNreSA8YnpiYXJza3lAbWl0LmVk
dT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorICoKKyAqIEFsdGVybmF0aXZlbHksIHRoZSBjb250ZW50cyBv
ZiB0aGlzIGZpbGUgbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisgKiBvZiBlaXRoZXIgdGhl
IE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjEsIGZvdW5kIGF0CisgKiBodHRwOi8v
d3d3Lm1vemlsbGEub3JnL01QTC8gKHRoZSAiTVBMIikgb3IgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBWZXJzaW9uIDIuMCwgZm91bmQgYXQgaHR0cDovL3d3dy5mc2Yub3JnL2Nv
cHlsZWZ0L2dwbC5odG1sCisgKiAodGhlICJHUEwiKSwgaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlz
aW9ucyBvZiB0aGUgTVBMIG9yIHRoZSBHUEwgYXJlCisgKiBhcHBsaWNhYmxlIGluc3RlYWQgb2Yg
dGhvc2UgYWJvdmUuICBJZiB5b3Ugd2lzaCB0byBhbGxvdyB1c2Ugb2YgeW91cgorICogdmVyc2lv
biBvZiB0aGlzIGZpbGUgb25seSB1bmRlciB0aGUgdGVybXMgb2Ygb25lIG9mIHRob3NlIHR3bwor
ICogbGljZW5zZXMgKHRoZSBNUEwgb3IgdGhlIEdQTCkgYW5kIG5vdCB0byBhbGxvdyBvdGhlcnMg
dG8gdXNlIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSBMR1BMLCBpbmRp
Y2F0ZSB5b3VyIGRlY2lzaW9uIGJ5CisgKiBkZWxldGluZ3RoZSBwcm92aXNpb25zIGFib3ZlIGFu
ZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgbm90aWNlIGFuZAorICogb3RoZXIgcHJvdmlzaW9ucyBy
ZXF1aXJlZCBieSB0aGUgTVBMIG9yIHRoZSBHUEwsIGFzIHRoZSBjYXNlIG1heSBiZS4KKyAqIElm
IHlvdSBkbyBub3QgZGVsZXRlIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lwaWVudCBtYXkg
dXNlIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIGFueSBvZiB0aGUgTEdQTCwg
dGhlIE1QTCBvciB0aGUgR1BMLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTY3JvbGxBbGlnbm1lbnQuaCIKKworI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9UZXh0U3RyZWFtLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgU2Ny
b2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5vdFZpc2libGUgPSB7
IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVoYXZpb3I6OkFsaWduQ2VudGVyLCBCZWhhdmlvcjo6Tm9T
Y3JvbGwgfTsKK2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9F
ZGdlSWZOb3RWaXNpYmxlID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnblRv
Q2xvc2VzdEVkZ2UsIEJlaGF2aW9yOjpOb1Njcm9sbCB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50ZXJJZk5lZWRlZCA9IHsgQmVoYXZpb3I6Ok5vU2Ny
b2xsLCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpBbGlnblRvQ2xvc2VzdEVkZ2Ug
fTsKK1dFQkNPUkVfRVhQT1JUIGNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduVG9FZGdlSWZOZWVkZWQgPSB7IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVoYXZpb3I6OkFs
aWduVG9DbG9zZXN0RWRnZSwgQmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSB9OworV0VCQ09S
RV9FWFBPUlQgY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25DZW50
ZXJBbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6OkFsaWduQ2VudGVy
LCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIgfTsKK2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduVG9wQWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25Ub3AsIEJlaGF2aW9y
OjpBbGlnblRvcCwgQmVoYXZpb3I6OkFsaWduVG9wIH07Citjb25zdCBTY3JvbGxBbGlnbm1lbnQg
U2Nyb2xsQWxpZ25tZW50OjphbGlnblJpZ2h0QWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25SaWdo
dCwgQmVoYXZpb3I6OkFsaWduUmlnaHQsIEJlaGF2aW9yOjpBbGlnblJpZ2h0IH07Citjb25zdCBT
Y3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkxlZnRBbHdheXMgPSB7IEJlaGF2
aW9yOjpBbGlnbkxlZnQsIEJlaGF2aW9yOjpBbGlnbkxlZnQsIEJlaGF2aW9yOjpBbGlnbkxlZnQg
fTsKK2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQm90dG9tQWx3
YXlzID0geyBCZWhhdmlvcjo6QWxpZ25Cb3R0b20sIEJlaGF2aW9yOjpBbGlnbkJvdHRvbSwgQmVo
YXZpb3I6OkFsaWduQm90dG9tIH07CisgICAgCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yIGIpCit7CisgICAgc3dpdGNoIChi
KSB7CisgICAgY2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9sbDoKKyAgICAg
ICAgcmV0dXJuIHRzIDw8ICJOb1Njcm9sbCI7CisgICAgY2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJl
aGF2aW9yOjpBbGlnbkNlbnRlcjoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnbkNlbnRlciI7
CisgICAgY2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblRvcDoKKyAgICAgICAg
cmV0dXJuIHRzIDw8ICJBbGlnblRvcCI7CisgICAgY2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2
aW9yOjpBbGlnbkJvdHRvbToKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnbkJvdHRvbSI7Cisg
ICAgY2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkxlZnQ6CisgICAgICAgIHJl
dHVybiB0cyA8PCAiQWxpZ25MZWZ0IjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3I6OkFsaWduUmlnaHQ6CisgICAgICAgIHJldHVybiB0cyA8PCAiQWxpZ25SaWdodCI7CisgICAg
Y2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblRvQ2xvc2VzdEVkZ2U6CisgICAg
ICAgIHJldHVybiB0cyA8PCAiQWxpZ25Ub0Nsb3Nlc3RFZGdlIjsKKyAgICB9CisgICAgcmV0dXJu
IHRzOworfQorICAgIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgU2Nyb2xsQWxpZ25tZW50JiBzKQoreworICAgIHJldHVybiB0cyA8PCAiU2Nyb2xsQWxpZ25t
ZW50OiB2aXNpYmxlOiAiIDw8IHMubV9yZWN0VmlzaWJsZSA8PCAiIGhpZGRlbjogIiA8PCBzLm1f
cmVjdEhpZGRlbiA8PCAiIHBhcnRpYWw6ICIgPDwgcy5tX3JlY3RQYXJ0aWFsOworfQorCit9OyAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQWxpZ25tZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1l
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMWJiNmVmOWUyMmU3YzU5NTU4OGFiOGIzMTI3OTJhMDg1MzNhZWFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQWxpZ25t
ZW50LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOSwg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBvcnRpb25zIGFy
ZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24u
CisgKgorICogT3RoZXIgY29udHJpYnV0b3JzOgorICogICBSb2JlcnQgTydDYWxsYWhhbiA8cm9j
K0Bjcy5jbXUuZWR1PgorICogICBEYXZpZCBCYXJvbiA8ZGJhcm9uQGZhcy5oYXJ2YXJkLmVkdT4K
KyAqICAgQ2hyaXN0aWFuIEJpZXNpbmdlciA8Y2JpZXNpbmdlckB3ZWIuZGU+CisgKiAgIFJhbmRh
bGwgSmVzdXAgPHJqZXN1cEB3Z2F0ZS5jb20+CisgKiAgIFJvbGFuZCBNYWlueiA8cm9sYW5kLm1h
aW56QGluZm9ybWF0aWsubWVkLnVuaS1naWVzc2VuLmRlPgorICogICBKb3NoIFNvcmVmIDx0aW1l
bGVzc0BtYWMuY29tPgorICogICBCb3JpcyBaYmFyc2t5IDxiemJhcnNreUBtaXQuZWR1PgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCisgKgorICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMg
ZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIGVpdGhlciB0aGUgTW96aWxs
YSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKKyAqIGh0dHA6Ly93d3cubW96
aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQv
Z3BsLmh0bWwKKyAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9m
IHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKKyAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBh
Ym92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCisgKiB2ZXJzaW9uIG9mIHRo
aXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCisgKiBsaWNl
bnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2Ug
eW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlv
dXIgZGVjaXNpb24gYnkKKyAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxh
Y2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kCisgKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVk
IGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgorICogSWYgeW91IGRv
IG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91
cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBM
IG9yIHRoZSBHUEwuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgVGV4dFN0cmVhbTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2Nyb2xs
QWxpZ25tZW50IHsKKworICAgIGVudW0gY2xhc3MgQmVoYXZpb3IgeworICAgICAgICBOb1Njcm9s
bCwKKyAgICAgICAgQWxpZ25DZW50ZXIsCisgICAgICAgIEFsaWduVG9wLAorICAgICAgICBBbGln
bkJvdHRvbSwKKyAgICAgICAgQWxpZ25MZWZ0LAorICAgICAgICBBbGlnblJpZ2h0LAorICAgICAg
ICBBbGlnblRvQ2xvc2VzdEVkZ2UKKyAgICB9OworCisgICAgQmVoYXZpb3IgZ2V0VmlzaWJsZUJl
aGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0VmlzaWJsZTsgfQorICAgIEJlaGF2aW9yIGdl
dFBhcnRpYWxCZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdFBhcnRpYWw7IH0KKyAgICBC
ZWhhdmlvciBnZXRIaWRkZW5CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdEhpZGRlbjsg
fQorICAgIHZvaWQgZGlzYWJsZUxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkKCkg
eyBtX2VuYWJsZUxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkID0gZmFsc2U7IH0K
KyAgICBib29sIGxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQ7
IH0KKworICAgIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25DZW50ZXJJZk5vdFZp
c2libGU7CisgICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnblRvRWRnZUlmTm90
VmlzaWJsZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50
IGFsaWduQ2VudGVySWZOZWVkZWQ7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFNj
cm9sbEFsaWdubWVudCBhbGlnblRvRWRnZUlmTmVlZGVkOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25DZW50ZXJBbHdheXM7CisgICAgc3RhdGlj
IGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnblRvcEFsd2F5czsKKyAgICBzdGF0aWMgY29uc3Qg
U2Nyb2xsQWxpZ25tZW50IGFsaWduUmlnaHRBbHdheXM7CisgICAgc3RhdGljIGNvbnN0IFNjcm9s
bEFsaWdubWVudCBhbGlnbkxlZnRBbHdheXM7CisgICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdu
bWVudCBhbGlnbkJvdHRvbUFsd2F5czsKKworICAgIEJlaGF2aW9yIG1fcmVjdFZpc2libGU7Cisg
ICAgQmVoYXZpb3IgbV9yZWN0SGlkZGVuOworICAgIEJlaGF2aW9yIG1fcmVjdFBhcnRpYWw7Cisg
ICAgYm9vbCBtX2VuYWJsZUxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkIHsgdHJ1
ZSB9OworfTsKKyAgICAKK1dFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yKTsKK1dFQkNPUkVf
RVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmKTsKKworfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAppbmRleCA5ZTYxYmQ3ZWVkZmM1MDRm
YzZjOGVlYjExMjU4MjY0NWI2MGQxYmNmLi42NjMyMGI1MGM5OGZlOGU0NTIwMmM5MzllNzczZTMx
MWYxYjY0NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxl
QXJlYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CkBAIC04MDEsNiArODAxLDgxIEBAIHN0ZDo6b3B0aW9uYWw8Qm94U2lkZT4gU2Nyb2xsYWJsZUFy
ZWE6OnRhcmdldFNpZGVGb3JTY3JvbGxEZWx0YShGbG9hdFNpemUgZGVsdGEsCiAgICAgcmV0dXJu
IHsgfTsKIH0KIAorTGF5b3V0UmVjdCBTY3JvbGxhYmxlQXJlYTo6Z2V0UmVjdFRvRXhwb3NlRm9y
U2Nyb2xsSW50b1ZpZXcoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IExheW91
dFJlY3QmIGV4cG9zZVJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQmIGFsaWduWSkgY29uc3QKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1p
bkludGVyc2VjdEZvclJldmVhbCA9IDMyOworCisgICAgLy8gRGV0ZXJtaW5lIHRoZSBhcHByb3By
aWF0ZSBYIGJlaGF2aW9yLgorICAgIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3Igc2Nyb2xsWDsK
KyAgICBMYXlvdXRSZWN0IGV4cG9zZVJlY3RYKGV4cG9zZVJlY3QueCgpLCB2aXNpYmxlUmVjdC55
KCksIGV4cG9zZVJlY3Qud2lkdGgoKSwgdmlzaWJsZVJlY3QuaGVpZ2h0KCkpOworICAgIExheW91
dFVuaXQgaW50ZXJzZWN0V2lkdGggPSBpbnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIGV4cG9zZVJl
Y3RYKS53aWR0aCgpOworICAgIGlmIChpbnRlcnNlY3RXaWR0aCA9PSBleHBvc2VSZWN0LndpZHRo
KCkgfHwgKGFsaWduWC5sZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZEVuYWJsZWQo
KSAmJiBpbnRlcnNlY3RXaWR0aCA+PSBtaW5JbnRlcnNlY3RGb3JSZXZlYWwpKSB7CisgICAgICAg
IC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQg
dmlzaWJsZSBiZWhhdmlvci4KKyAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFs
bHkgdmlzaWJsZSwgYnV0IG92ZXIgYSBjZXJ0YWluIHRocmVzaG9sZCwKKyAgICAgICAgLy8gdGhl
biB0cmVhdCBpdCBhcyBmdWxseSB2aXNpYmxlIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGhvcml6b250
YWwgc2Nyb2xsaW5nCisgICAgICAgIHNjcm9sbFggPSBhbGlnblguZ2V0VmlzaWJsZUJlaGF2aW9y
KCk7CisgICAgfSBlbHNlIGlmIChpbnRlcnNlY3RXaWR0aCA9PSB2aXNpYmxlUmVjdC53aWR0aCgp
KSB7CisgICAgICAgIC8vIElmIHRoZSByZWN0IGlzIGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFy
ZWEsIGRvbid0IGJvdGhlciB0cnlpbmcgdG8gY2VudGVyLiBPdGhlciBhbGlnbm1lbnRzIHdpbGwg
d29yay4KKyAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKKyAg
ICAgICAgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50
ZXIpCisgICAgICAgICAgICBzY3JvbGxYID0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9T
Y3JvbGw7CisgICAgfSBlbHNlIGlmIChpbnRlcnNlY3RXaWR0aCA+IDApCisgICAgICAgIC8vIElm
IHRoZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZpc2libGUsIGJ1dCBub3QgYWJvdmUgdGhlIG1p
bmltdW0gdGhyZXNob2xkLCB1c2UgdGhlIHNwZWNpZmllZCBwYXJ0aWFsIGJlaGF2aW9yCisgICAg
ICAgIHNjcm9sbFggPSBhbGlnblguZ2V0UGFydGlhbEJlaGF2aW9yKCk7CisgICAgZWxzZQorICAg
ICAgICBzY3JvbGxYID0gYWxpZ25YLmdldEhpZGRlbkJlaGF2aW9yKCk7CisgICAgLy8gSWYgd2Un
cmUgdHJ5aW5nIHRvIGFsaWduIHRvIHRoZSBjbG9zZXN0IGVkZ2UsIGFuZCB0aGUgZXhwb3NlUmVj
dCBpcyBmdXJ0aGVyIHJpZ2h0CisgICAgLy8gdGhhbiB0aGUgdmlzaWJsZVJlY3QsIGFuZCBub3Qg
YmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgdGhlbiBhbGlnbiB3aXRoIHRoZSByaWdodC4K
KyAgICBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblRvQ2xv
c2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5tYXhYKCkgPiB2aXNpYmxlUmVjdC5tYXhYKCkgJiYgZXhw
b3NlUmVjdC53aWR0aCgpIDwgdmlzaWJsZVJlY3Qud2lkdGgoKSkKKyAgICAgICAgc2Nyb2xsWCA9
IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduUmlnaHQ7CisKKyAgICAvLyBHaXZlbiB0
aGUgWCBiZWhhdmlvciwgY29tcHV0ZSB0aGUgWCBjb29yZGluYXRlLgorICAgIExheW91dFVuaXQg
eDsKKyAgICBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9s
bCkKKyAgICAgICAgeCA9IHZpc2libGVSZWN0LngoKTsKKyAgICBlbHNlIGlmIChzY3JvbGxYID09
IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduUmlnaHQpCisgICAgICAgIHggPSBleHBv
c2VSZWN0Lm1heFgoKSAtIHZpc2libGVSZWN0LndpZHRoKCk7CisgICAgZWxzZSBpZiAoc2Nyb2xs
WCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKKyAgICAgICAgeCA9
IGV4cG9zZVJlY3QueCgpICsgKGV4cG9zZVJlY3Qud2lkdGgoKSAtIHZpc2libGVSZWN0LndpZHRo
KCkpIC8gMjsKKyAgICBlbHNlCisgICAgICAgIHggPSBleHBvc2VSZWN0LngoKTsKKworICAgIC8v
IERldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgWSBiZWhhdmlvci4KKyAgICBTY3JvbGxBbGlnbm1l
bnQ6OkJlaGF2aW9yIHNjcm9sbFk7CisgICAgTGF5b3V0UmVjdCBleHBvc2VSZWN0WSh2aXNpYmxl
UmVjdC54KCksIGV4cG9zZVJlY3QueSgpLCB2aXNpYmxlUmVjdC53aWR0aCgpLCBleHBvc2VSZWN0
LmhlaWdodCgpKTsKKyAgICBMYXlvdXRVbml0IGludGVyc2VjdEhlaWdodCA9IGludGVyc2VjdGlv
bih2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdFkpLmhlaWdodCgpOworICAgIGlmIChpbnRlcnNlY3RI
ZWlnaHQgPT0gZXhwb3NlUmVjdC5oZWlnaHQoKSkgeworICAgICAgICAvLyBJZiB0aGUgcmVjdGFu
Z2xlIGlzIGZ1bGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHZpc2libGUgYmVoYXZpb3Iu
CisgICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0VmlzaWJsZUJlaGF2aW9yKCk7CisgICAgfSBl
bHNlIGlmIChpbnRlcnNlY3RIZWlnaHQgPT0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIHsKKyAgICAg
ICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgZG9uJ3Qg
Ym90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3JrLgorICAg
ICAgICBzY3JvbGxZID0gYWxpZ25ZLmdldFZpc2libGVCZWhhdmlvcigpOworICAgICAgICBpZiAo
c2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKKyAgICAg
ICAgICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9sbDsKKyAg
ICB9IGVsc2UgaWYgKGludGVyc2VjdEhlaWdodCA+IDApCisgICAgICAgIC8vIElmIHRoZSByZWN0
YW5nbGUgaXMgcGFydGlhbGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRpYWwgYmVo
YXZpb3IKKyAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRQYXJ0aWFsQmVoYXZpb3IoKTsKKyAg
ICBlbHNlCisgICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0SGlkZGVuQmVoYXZpb3IoKTsKKyAg
ICAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5kIHRo
ZSBleHBvc2VSZWN0IGlzIGZ1cnRoZXIgZG93bgorICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0
LCBhbmQgbm90IGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0
aGUgYm90dG9tLgorICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6
OkFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFkoKSA+IHZpc2libGVSZWN0Lm1h
eFkoKSAmJiBleHBvc2VSZWN0LmhlaWdodCgpIDwgdmlzaWJsZVJlY3QuaGVpZ2h0KCkpCisgICAg
ICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkJvdHRvbTsKKwor
ICAgIC8vIEdpdmVuIHRoZSBZIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBZIGNvb3JkaW5hdGUuCisg
ICAgTGF5b3V0VW5pdCB5OworICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVo
YXZpb3I6Ok5vU2Nyb2xsKQorICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgpOworICAgIGVsc2Ug
aWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Cb3R0b20pCisg
ICAgICAgIHkgPSBleHBvc2VSZWN0Lm1heFkoKSAtIHZpc2libGVSZWN0LmhlaWdodCgpOworICAg
IGVsc2UgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50
ZXIpCisgICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKSArIChleHBvc2VSZWN0LmhlaWdodCgpIC0g
dmlzaWJsZVJlY3QuaGVpZ2h0KCkpIC8gMjsKKyAgICBlbHNlCisgICAgICAgIHkgPSBleHBvc2VS
ZWN0LnkoKTsKKworICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KHgsIHkpLCB2aXNp
YmxlUmVjdC5zaXplKCkpOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTY3JvbGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEpCiB7CiAgICAgdHMgPDwg
c2Nyb2xsYWJsZUFyZWEuZGVidWdEZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGFibGVBcmVhLmgKaW5kZXggMmJkYzE4YTE5ODgwMDRmYWZjMjM3NTcyZGFmMjkyNzI5
MWVkOGRlZi4uMDg0MTc0OTFjNDcyOTI2YmM2ZjRkNjdmMmRlYjYyOTA0OGFkZDIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlJlY3RFZGdlcy5oIgorI2luY2x1ZGUgIlNjcm9sbEFs
aWdubWVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUg
IlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC0zOTksNiArNDAwLDgg
QEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBoYXNMYXllckZvclNjcm9sbENvcm5lcigpIGNvbnN0
OwogCisgICAgTGF5b3V0UmVjdCBnZXRSZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmlldyhjb25z
dCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25ZKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIEludFJl
Y3QgdmlzaWJsZUNvbnRlbnRSZWN0SW50ZXJuYWwoVmlzaWJsZUNvbnRlbnRSZWN0SW5jbHVkZXNT
Y3JvbGxiYXJzLCBWaXNpYmxlQ29udGVudFJlY3RCZWhhdmlvcikgY29uc3Q7CiAgICAgdm9pZCBz
Y3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3QgU2Nyb2xsUG9zaXRpb24mKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGEwMTQ1MDcwNzgwMzkzYzZiMjY4YmMw
MTc5NzFkM2YyNjMxZmNlM2IuLjc2OTk5ODRjMzIzZDJhNWJhMjBmNTM0NTE0ODU2NjA3MWYzY2Yz
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMTIxLDcg
KzEyMSw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbmNs
dWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5o
IgogI2luY2x1ZGUgIlNjcm9sbFNuYXBPZmZzZXRzSW5mby5oIgogI2luY2x1ZGUgIlNjcm9sbGJh
ci5oIgpAQCAtMTQzLDggKzE0Miw2IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAotI2RlZmluZSBNSU5fSU5URVJTRUNU
X0ZPUl9SRVZFQUwgMzIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwpAQCAtNTY3LDE2ICs1NjQsNiBAQCBzdGF0aWMgYm9vbCBjYW5DcmVhdGVTdGFj
a2luZ0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogICAgICAgICB8fCBsYXllci5l
c3RhYmxpc2hlc1RvcExheWVyKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGV4cGFuZFNjcm9sbFJlY3RU
b1Zpc2libGVUYXJnZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyhSZW5kZXJCb3gqIHJlbmRl
ckJveCwgY29uc3QgTGF5b3V0UmVjdCYgdmlld1JlY3QsIExheW91dFJlY3QmIHRhcmdldFJlY3Qp
Ci17Ci0gICAgaWYgKCFyZW5kZXJCb3gpCi0gICAgICAgIHJldHVybjsKLSAgICAvLyBzY3JvbGwt
cGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSBy
ZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgotICAgIC8vIHNpbXVsYXRl
IHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1
cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KLSAgICAvLyBlbnN1cmUgdGhhdCB0
aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KLSAgICB0
YXJnZXRSZWN0LmV4cGFuZChyZW5kZXJCb3gtPnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qo
dmlld1JlY3QpKTsKLX0KLQogYm9vbCBSZW5kZXJMYXllcjo6c2hvdWxkQmVOb3JtYWxGbG93T25s
eSgpIGNvbnN0CiB7CiAgICAgaWYgKGNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dCgqdGhpcykpCkBA
IC0yNDE4LDIyICsyNDA1LDcgQEAgTGF5b3V0U2l6ZSBSZW5kZXJMYXllcjo6b2Zmc2V0RnJvbUFu
Y2VzdG9yKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBDb2wKICAgICByZXR1cm4g
dG9MYXlvdXRTaXplKGNvbnZlcnRUb0xheWVyQ29vcmRzKGFuY2VzdG9yTGF5ZXIsIExheW91dFBv
aW50KCksIGFkanVzdEZvckNvbHVtbnMpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGZyYW1l
RWxlbWVudEFuZFZpZXdQZXJtaXRTY3JvbGwoSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lRWxl
bWVudEJhc2UsIEZyYW1lVmlldyYgZnJhbWVWaWV3KQotewotICAgIC8vIElmIHNjcm9sbGJhcnMg
YXJlbid0IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBwZXJtaXQgc2Nyb2xsaW5nLgotICAgIGlmIChm
cmFtZUVsZW1lbnRCYXNlICYmIGZyYW1lRWxlbWVudEJhc2UtPnNjcm9sbGluZ01vZGUoKSAhPSBT
Y3JvbGxiYXJNb2RlOjpBbHdheXNPZmYpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8g
SWYgc2Nyb2xsYmFycyBhcmUgZm9yYmlkZGVuLCB1c2VyIGluaXRpYXRlZCBzY3JvbGxzIHNob3Vs
ZCBvYnZpb3VzbHkgYmUgaWdub3JlZC4KLSAgICBpZiAoZnJhbWVWaWV3Lndhc1Njcm9sbGVkQnlV
c2VyKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEZvcmJpZCBhdXRvc2Nyb2xs
cyB3aGVuIHNjcm9sbGJhcnMgYXJlIG9mZiwgYnV0IHBlcm1pdHMgb3RoZXIgcHJvZ3JhbW1hdGlj
IHNjcm9sbHMsCi0gICAgLy8gbGlrZSBuYXZpZ2F0aW9uIHRvIGFuIGFuY2hvci4KLSAgICByZXR1
cm4gIWZyYW1lVmlldy5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxJblByb2dyZXNz
KCk7Ci19Ci0KLWJvb2wgUmVuZGVyTGF5ZXI6OmFsbG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdAor
Ym9vbCBSZW5kZXJMYXllcjo6c2hvdWxkVHJ5VG9TY3JvbGxGb3JTY3JvbGxJbnRvVmlldygpIGNv
bnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlcigpLmhhc05vblZpc2libGVPdmVyZmxvdygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNDQ2LDkgKzI0MTgsOSBAQCBib29sIFJlbmRlckxheWVy
OjphbGxvd3NDdXJyZW50U2Nyb2xsKCkgY29uc3QKICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRl
ckJveCgpOwogICAgIEFTU0VSVChib3gpOyAvLyBPbmx5IGJveGVzIGNhbiBoYXZlIG92ZXJmbG93
Q2xpcCBzZXQuCiAKKyAgICAvLyBXaGVuIGF1dG9zY3JvbGxpbmcsIHNraXAgIm92ZXJmbG93OiBo
aWRkZW4iLiBUaGUgInByb2dyYW1tYXRpY2FsbHkiIGhlcmUgaXMKKyAgICAvLyBtaXNsZWFkaW5n
OyB0aGlzIGFza3Mgd2hldGhlciB0aGUgYm94IGhhcyAib3ZlcmZsb3c6IHNjcm9sbCIgb3IgIm92
ZXJmbG93OiBhdXRvLiIKICAgICBpZiAocmVuZGVyZXIoKS5mcmFtZSgpLmV2ZW50SGFuZGxlcigp
LmF1dG9zY3JvbGxJblByb2dyZXNzKCkpIHsKLSAgICAgICAgLy8gVGhlICJwcm9ncmFtbWF0aWNh
bGx5IiBoZXJlIGlzIG1pc2xlYWRpbmc7IHRoaXMgYXNrcyB3aGV0aGVyIHRoZSBib3ggaGFzIHNj
cm9sbGFibGUgb3ZlcmZsb3csCi0gICAgICAgIC8vIG9yIGlzIGEgc3BlY2lhbCBjYXNlIGxpa2Ug
YSBmb3JtIGNvbnRyb2wuCiAgICAgICAgIHJldHVybiBib3gtPmNhbkJlUHJvZ3JhbWF0aWNhbGx5
U2Nyb2xsZWQoKTsKICAgICB9CiAKQEAgLTI0NTYsMjQ4ICsyNDI4LDEwIEBAIGJvb2wgUmVuZGVy
TGF5ZXI6OmFsbG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdAogICAgIHJldHVybiBib3gtPmhhc0hv
cml6b250YWxPdmVyZmxvdygpIHx8IGJveC0+aGFzVmVydGljYWxPdmVyZmxvdygpOwogfQogCi12
b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFi
c29sdXRlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9w
dGlvbnMmIG9wdGlvbnMpCi17Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFt
IDw8ICJMYXllciAiIDw8IHRoaXMgPDwgIiBzY3JvbGxSZWN0VG9WaXNpYmxlICIgPDwgYWJzb2x1
dGVSZWN0KTsKLQotICAgIExheW91dFJlY3QgbmV3UmVjdCA9IGFic29sdXRlUmVjdDsKLSAgICBG
cmFtZVZpZXcmIGZyYW1lVmlldyA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpOwotICAg
IGF1dG8qIHBhcmVudExheWVyID0gZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoQ3Jvc3NG
cmFtZUJvdW5kYXJpZXM6Ok5vKTsKLQotICAgIGF1dG8gc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRp
b25zRm9yRWxlbWVudCA9IFt0aGlzLCBvcHRpb25zXShFbGVtZW50KiBlbGVtZW50KQotICAgIHsK
LSAgICAgICAgYXV0byBzY3JvbGxQb3NpdGlvbk9wdGlvbnMgPSBTY3JvbGxQb3NpdGlvbkNoYW5n
ZU9wdGlvbnM6OmNyZWF0ZVByb2dyYW1tYXRpYygpOwotICAgICAgICBpZiAoIXJlbmRlcmVyKCku
ZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5hdXRvc2Nyb2xsSW5Qcm9ncmVzcygpICYmIGVsZW1lbnQg
JiYgdXNlU21vb3RoU2Nyb2xsaW5nKG9wdGlvbnMuYmVoYXZpb3IsIGVsZW1lbnQpKQotICAgICAg
ICAgICAgc2Nyb2xsUG9zaXRpb25PcHRpb25zLmFuaW1hdGVkID0gU2Nyb2xsSXNBbmltYXRlZDo6
WWVzOwotICAgICAgICByZXR1cm4gc2Nyb2xsUG9zaXRpb25PcHRpb25zOwotICAgIH07Ci0KLSAg
ICBpZiAoYWxsb3dzQ3VycmVudFNjcm9sbCgpKSB7Ci0gICAgICAgIGF1dG8qIHNjcm9sbGFibGVB
cmVhID0gZW5zdXJlTGF5ZXJTY3JvbGxhYmxlQXJlYSgpOwotCi0gICAgICAgIC8vIERvbid0IHNj
cm9sbCB0byByZXZlYWwgYW4gb3ZlcmZsb3cgbGF5ZXIgdGhhdCBpcyByZXN0cmljdGVkIGJ5IHRo
ZSAtd2Via2l0LWxpbmUtY2xhbXAgcHJvcGVydHkuCi0gICAgICAgIC8vIFRoaXMgd2lsbCBwcmV2
ZW50IHVzIGZyb20gcmV2ZWFsaW5nIHRleHQgaGlkZGVuIGJ5IHRoZSBzbGlkZXIgaW4gU2FmYXJp
IFJTUy4KLSAgICAgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKLSAgICAgICAgQVNT
RVJUKGJveCk7Ci0gICAgICAgIExheW91dFJlY3QgbG9jYWxFeHBvc2VSZWN0KGJveC0+YWJzb2x1
dGVUb0xvY2FsUXVhZChGbG9hdFF1YWQoRmxvYXRSZWN0KGFic29sdXRlUmVjdCkpKS5ib3VuZGlu
Z0JveCgpKTsKLQotICAgICAgICAvLyBsb2NhbEV4cG9zZWRSZWN0IGlzIG5vdyB0aGUgYWJzb2x1
dGUgcmVjdCBpbiBsb2NhbCBjb29yZGluYXRlcywgYnV0IHJlbGF0aXZlIHRvIHRoZQotICAgICAg
ICAvLyBib3JkZXIgZWRnZS4gTWFrZSB0aGUgcmVjdGFuZ2xlIHJlbGF0aXZlIHRvIHRoZSBzY3Jv
bGxhYmxlIGFyZWEuCi0gICAgICAgIGxvY2FsRXhwb3NlUmVjdC5tb3ZlQnkoLUxheW91dFBvaW50
KGJveC0+Ym9yZGVyTGVmdCgpLCBib3gtPmJvcmRlclRvcCgpKSk7Ci0KLSAgICAgICAgaWYgKGJv
eC0+c2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpKSB7Ci0gICAgICAgICAgICAv
LyBGb3IgYGRpcmVjdGlvbjogcnRsOyB3cml0aW5nLW1vZGU6IGhvcml6b250YWwte3RiLGJ0fWAg
YW5kIGB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsYAotICAgICAgICAgICAgLy8gYm94ZXMsIHRo
ZSBzY3JvbGwgYmFyIGlzIG9uIHRoZSBsZWZ0IHNpZGUuIFRoZSB2aXNpYmxlIHJlY3Qgc3RhcnRz
IGZyb20gdGhlIHJpZ2h0IHNpZGUKLSAgICAgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwgYmFyLiBT
byB0aGUgeCBvZiBsb2NhbEV4cG9zZVJlY3Qgc2hvdWxkIHN0YXJ0IGZyb20gdGhlIHNhbWUgcG9z
aXRpb24gdG9vLgotICAgICAgICAgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmVCeShMYXlvdXRQb2lu
dCgtc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKSwgMCkpOwotICAgICAg
ICB9Ci0gICAgICAgIExheW91dFJlY3QgbGF5ZXJCb3VuZHMoMF9sdSwgMF9sdSwgYm94LT5jbGll
bnRXaWR0aCgpLCBib3gtPmNsaWVudEhlaWdodCgpKTsKLSAgICAgICAgZXhwYW5kU2Nyb2xsUmVj
dFRvVmlzaWJsZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQYWRkaW5nKGJveCwgbGF5ZXJCb3Vu
ZHMsIGxvY2FsRXhwb3NlUmVjdCk7Ci0gICAgICAgIExheW91dFJlY3QgcmV2ZWFsUmVjdCA9IGdl
dFJlY3RUb0V4cG9zZShsYXllckJvdW5kcywgbG9jYWxFeHBvc2VSZWN0LCBpbnNpZGVGaXhlZCwg
b3B0aW9ucy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsKLQotICAgICAgICBpZiAoYXV0byByZXN1
bHQgPSBzY3JvbGxhYmxlQXJlYS0+dXBkYXRlU2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb25D
aGFuZ2VPcHRpb25zRm9yRWxlbWVudChib3gtPmVsZW1lbnQoKSksIHJldmVhbFJlY3QsIGxvY2Fs
RXhwb3NlUmVjdCkpCi0gICAgICAgICAgICBuZXdSZWN0ID0gcmVzdWx0LnZhbHVlKCk7Ci0gICAg
fSBlbHNlIGlmICghcGFyZW50TGF5ZXIpIHsKLSAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQgPSByZW5kZXJlcigpLmRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7Ci0K
LSAgICAgICAgaWYgKG93bmVyRWxlbWVudCAmJiBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCkpIHsK
LSAgICAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlKiBmcmFtZUVsZW1lbnRCYXNlID0gbnVs
bHB0cjsKLQotICAgICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZUVsZW1lbnRCYXNlPigqb3duZXJF
bGVtZW50KSkKLSAgICAgICAgICAgICAgICBmcmFtZUVsZW1lbnRCYXNlID0gZG93bmNhc3Q8SFRN
TEZyYW1lRWxlbWVudEJhc2U+KG93bmVyRWxlbWVudCk7Ci0KLSAgICAgICAgICAgIGlmIChmcmFt
ZUVsZW1lbnRBbmRWaWV3UGVybWl0U2Nyb2xsKGZyYW1lRWxlbWVudEJhc2UsIGZyYW1lVmlldykp
IHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFzc2VydGlvbiBmaXJlcyB3ZSBuZWVkIHRv
IHByb3RlY3QgdGhlIG93bmVyRWxlbWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZC4KLSAgICAgICAg
ICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxv
d2VkU2NvcGU7Ci0KLSAgICAgICAgICAgICAgICBMYXlvdXRSZWN0IHZpZXdSZWN0ID0gZnJhbWVW
aWV3LnZpc2libGVDb250ZW50UmVjdChTY3JvbGxhYmxlQXJlYTo6TGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCk7Ci0KLSAgICAgICAgICAgICAgICBhdXRvKiBlbGVtZW50ID0gb3duZXJFbGVt
ZW50LT5jb250ZW50RG9jdW1lbnQoKSA/IG93bmVyRWxlbWVudC0+Y29udGVudERvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpIDogbnVsbHB0cjsKLSAgICAgICAgICAgICAgICBSZW5kZXJCb3gq
IHJlbmRlcmVyID0gZWxlbWVudCA/IGVsZW1lbnQtPnJlbmRlckJveCgpIDogbnVsbHB0cjsKLSAg
ICAgICAgICAgICAgICBleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVk
ZVNjcm9sbFBhZGRpbmcocmVuZGVyZXIsIHZpZXdSZWN0LCBuZXdSZWN0KTsKLQotICAgICAgICAg
ICAgICAgIExheW91dFJlY3QgZXhwb3NlUmVjdCA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwg
bmV3UmVjdCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7Ci0g
ICAgICAgICAgICAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24ocm91bmRlZEludFBvaW50KGV4
cG9zZVJlY3QubG9jYXRpb24oKSkpOwotCi0gICAgICAgICAgICAgICAgLy8gQWRqdXN0IG9mZnNl
dHMgaWYgdGhleSdyZSBvdXRzaWRlIG9mIHRoZSBhbGxvd2FibGUgcmFuZ2UuCi0gICAgICAgICAg
ICAgICAgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4o
SW50UG9pbnQoKSwgSW50UG9pbnQoZnJhbWVWaWV3LmNvbnRlbnRzU2l6ZSgpKSk7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIHVzZSBjb250ZW50RG9jdW1lbnQoKS0+c2Ny
b2xsaW5nRWxlbWVudCgpPwotICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDU5Ci0gICAgICAgICAgICAgICAgZnJhbWVWaWV3
LnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbkNoYW5nZU9w
dGlvbnNGb3JFbGVtZW50KGVsZW1lbnQpKTsKLQotICAgICAgICAgICAgICAgIGlmIChvcHRpb25z
LnNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmcgPT0gU2hvdWxkQWxsb3dDcm9zc09yaWdp
blNjcm9sbGluZzo6WWVzIHx8IGZyYW1lVmlldy5zYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVu
dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBlbmNsb3NpbmdMYXllciA9IG93
bmVyRWxlbWVudC0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudExheWVyID0gZW5jbG9zaW5nTGF5ZXItPmVuY2xvc2luZ1Njcm9sbGFi
bGVMYXllcihJbmNsdWRlU2VsZk9yTm90OjpJbmNsdWRlU2VsZiwgQ3Jvc3NGcmFtZUJvdW5kYXJp
ZXM6Ok5vKTsKLSAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgcmVjdCBpbnRvIHRo
ZSBjb29yZGluYXRlIHNwYWNlIG9mIHRoZSBwYXJlbnQgZnJhbWUncyBkb2N1bWVudC4KLSAgICAg
ICAgICAgICAgICAgICAgbmV3UmVjdCA9IGZyYW1lVmlldy5jb250ZW50c1RvQ29udGFpbmluZ1Zp
ZXdDb250ZW50cyhlbmNsb3NpbmdJbnRSZWN0KG5ld1JlY3QpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaW5zaWRlRml4ZWQgPSBmYWxzZTsgLy8gRklYTUU6IGlkZWFsbHkgbmVlZCB0byBkZXRlcm1p
bmUgaWYgdGhpcyA8aWZyYW1lPiBpcyBpbnNpZGUgcG9zaXRpb246Zml4ZWQuCi0gICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudExheWVyID0gbnVsbHB0cjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChvcHRpb25z
LnJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsVXBUb01haW5GcmFtZSAm
JiBmcmFtZVZpZXcuZnJhbWUoKS5pc01haW5GcmFtZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICAgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZl
YWxNb2RlOjpEZWxlZ2F0ZU1haW5GcmFtZVNjcm9sbCAmJiBmcmFtZVZpZXcuZnJhbWUoKS5pc01h
aW5GcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFnZSgpLmNocm9tZSgpLnNjcm9sbE1haW5G
cmFtZVRvUmV2ZWFsUmVjdChzbmFwcGVkSW50UmVjdChhYnNvbHV0ZVJlY3QpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGF1dG8gbWluU2Ny
b2xsUG9zaXRpb24gPSBmcmFtZVZpZXcubWluaW11bVNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgICAg
ICAgICBhdXRvIG1heFNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3Lm1heGltdW1TY3JvbGxQb3Np
dGlvbigpOwotCi0jaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICAgICBMYXlvdXRS
ZWN0IHZpZXdSZWN0ID0gZnJhbWVWaWV3LnZpc2libGVDb250ZW50UmVjdCgpOwotI2Vsc2UKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBDb250ZW50SW5zZXRzIHNob3VsZCBiZSB0YWtlbiBjYXJlIG9m
IGluIFVJIHByb2Nlc3Mgc2lkZS4gd2Via2l0Lm9yZy9iLzE5OTY4MgotICAgICAgICAgICAgLy8g
VG8gZG8gdGhhdCwgZ2V0UmVjdFRvRXhwb3NlIG5lZWRzIHRvIHJldHVybiB0aGUgYWRkaXRpb25h
bCBzY3JvbGxpbmcgdG8gZG8gYmV5b25kIGNvbnRlbnQgcmVjdC4KLSAgICAgICAgICAgIExheW91
dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlld1JlY3RFeHBhbmRlZEJ5Q29udGVudEluc2V0
cygpOwotCi0gICAgICAgICAgICAvLyBGSVhNRTogd2Via2l0Lm9yZy9iLzE5OTY4MyBGcmFtZVZp
ZXc6OnZpc2libGVDb250ZW50UmVjdCBpcyB3cm9uZyB3aGVuIGNvbnRlbnQgaW5zZXRzIGFyZSBw
cmVzZW50Ci0gICAgICAgICAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy5zY3JvbGxQ
b3NpdGlvbkZyb21PZmZzZXQoU2Nyb2xsUG9zaXRpb24oZnJhbWVWaWV3LnRvdGFsQ29udGVudHNT
aXplKCkgLSBmbG9vcmVkSW50U2l6ZSh2aWV3UmVjdC5zaXplKCkpKSk7Ci0KLSAgICAgICAgICAg
IGF1dG8gY29udGVudEluc2V0cyA9IHBhZ2UoKS5jb250ZW50SW5zZXRzKCk7Ci0gICAgICAgICAg
ICBtaW5TY3JvbGxQb3NpdGlvbi5tb3ZlKC1jb250ZW50SW5zZXRzLmxlZnQoKSwgLWNvbnRlbnRJ
bnNldHMudG9wKCkpOwotICAgICAgICAgICAgbWF4U2Nyb2xsUG9zaXRpb24ubW92ZShjb250ZW50
SW5zZXRzLnJpZ2h0KCksIGNvbnRlbnRJbnNldHMuYm90dG9tKCkpOwotI2VuZGlmCi0gICAgICAg
ICAgICAvLyBNb3ZlIHRoZSB0YXJnZXQgcmVjdCBpbnRvICJzY3JvbGxWaWV3IGNvbnRlbnRzIiBj
b29yZGluYXRlcy4KLSAgICAgICAgICAgIExheW91dFJlY3QgdGFyZ2V0UmVjdCA9IGFic29sdXRl
UmVjdDsKLSAgICAgICAgICAgIHRhcmdldFJlY3QubW92ZSgwLCBmcmFtZVZpZXcuaGVhZGVySGVp
Z2h0KCkpOwotCi0gICAgICAgICAgICBhdXRvKiBlbGVtZW50ID0gZnJhbWVWaWV3LmZyYW1lKCku
ZG9jdW1lbnQoKSA/IGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIFJlbmRlckJveCogcmVuZGVyZXIgPSBlbGVtZW50
ID8gZWxlbWVudC0+cmVuZGVyQm94KCkgOiBudWxscHRyOwotICAgICAgICAgICAgZXhwYW5kU2Ny
b2xsUmVjdFRvVmlzaWJsZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQYWRkaW5nKHJlbmRlcmVy
LCB2aWV3UmVjdCwgdGFyZ2V0UmVjdCk7Ci0KLSAgICAgICAgICAgIExheW91dFJlY3QgcmV2ZWFs
UmVjdCA9IGdldFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgdGFyZ2V0UmVjdCwgaW5zaWRlRml4ZWQs
IG9wdGlvbnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7Ci0gICAgICAgICAgICAvLyBBdm9pZCBz
Y3JvbGxpbmcgdG8gdGhlIHJvdW5kZWQgdmFsdWUgb2YgcmV2ZWFsUmVjdC5sb2NhdGlvbigpIGlm
IHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gc2Nyb2xsCi0gICAgICAgICAgICBpZiAocmV2ZWFs
UmVjdCAhPSB2aWV3UmVjdCkgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2Ug
dXNlIGRvY3VtZW50KCktPnNjcm9sbGluZ0VsZW1lbnQoKT8KLSAgICAgICAgICAgICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA1OQotICAgICAg
ICAgICAgICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xsUG9zaXRpb24gPSByb3VuZGVkSW50
UG9pbnQocmV2ZWFsUmVjdC5sb2NhdGlvbigpKS5jb25zdHJhaW5lZEJldHdlZW4obWluU2Nyb2xs
UG9zaXRpb24sIG1heFNjcm9sbFBvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICBmcmFtZVZpZXcu
c2V0U2Nyb2xsUG9zaXRpb24oY2xhbXBlZFNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbkNo
YW5nZU9wdGlvbnNGb3JFbGVtZW50KGVsZW1lbnQpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgb3V0ZXJtb3N0IHZpZXcgb2YgYSB3ZWIgcGFnZSwgc28gYWZ0
ZXIgc2Nyb2xsaW5nIHRoaXMgdmlldyB3ZQotICAgICAgICAgICAgLy8gc2Nyb2xsIGl0cyBjb250
YWluZXIgYnkgY2FsbGluZyBQYWdlOjpzY3JvbGxNYWluRnJhbWVUb1JldmVhbFJlY3QuCi0gICAg
ICAgICAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0aGUgTWFjIHBsYXRmb3JtIGlu
IGFwcGxpY2F0aW9ucwotICAgICAgICAgICAgLy8gdGhhdCBwdXQgd2ViIHZpZXdzIGludG8gc2Ny
b2xsaW5nIGNvbnRhaW5lcnMsIHN1Y2ggYXMgTWFjIE9TIFggTWFpbC4KLSAgICAgICAgICAgIC8v
IFRoZSBjYW5BdXRvc2Nyb2xsIGZ1bmN0aW9uIGluIEV2ZW50SGFuZGxlciBhbHNvIGtub3dzIGFi
b3V0IHRoaXMuCi0gICAgICAgICAgICBwYWdlKCkuY2hyb21lKCkuc2Nyb2xsQ29udGFpbmluZ1Nj
cm9sbFZpZXdzVG9SZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVjdCkpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChwYXJlbnRMYXllcikKLSAgICAgICAgcGFyZW50
TGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2libGUobmV3UmVjdCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMp
OwotfQotCi1MYXlvdXRSZWN0IFJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UoY29uc3QgTGF5
b3V0UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGV4cG9zZVJlY3QsIGJvb2wg
aW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxB
bGlnbm1lbnQmIGFsaWduWSkgY29uc3QKLXsKLSAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9IHJl
bmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpOwotICAgIGlmIChyZW5kZXJlcigpLmlzUmVuZGVy
VmlldygpICYmIGluc2lkZUZpeGVkKSB7Ci0gICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGlu
c2lkZSBwb3NpdGlvbjpmaXhlZCBhbmQgd2UncmUgbm90IHNjYWxlZCwgbm8gYW1vdW50IG9mIHNj
cm9sbGluZyBpcyBnb2luZyB0byBtb3ZlIHRoaW5ncyBhcm91bmQuCi0gICAgICAgIGlmIChmcmFt
ZVZpZXcuZnJhbWVTY2FsZUZhY3RvcigpID09IDEpCi0gICAgICAgICAgICByZXR1cm4gdmlzaWJs
ZVJlY3Q7Ci0KLSAgICAgICAgaWYgKHJlbmRlcmVyKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9y
dEVuYWJsZWQoKSkgewotICAgICAgICAgICAgLy8gZXhwb3NlUmVjdCBpcyBpbiBhYnNvbHV0ZSBj
b29yZHMsIGFmZmVjdGVkIGJ5IHBhZ2Ugc2NhbGUuIFVuc2NhbGUgaXQuCi0gICAgICAgICAgICBM
YXlvdXRSZWN0IHVuc2NhbGVkRXhwb3NlUmVjdCA9IGV4cG9zZVJlY3Q7Ci0gICAgICAgICAgICB1
bnNjYWxlZEV4cG9zZVJlY3Quc2NhbGUoMSAvIGZyYW1lVmlldy5mcmFtZVNjYWxlRmFjdG9yKCkp
OwotICAgICAgICAgICAgdW5zY2FsZWRFeHBvc2VSZWN0Lm1vdmUoMCwgLWZyYW1lVmlldy5oZWFk
ZXJIZWlnaHQoKSk7Ci0KLSAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBib3RoIGluIHVuc2NhbGVk
IGNvb3JkaW5hdGVzLgotICAgICAgICAgICAgTGF5b3V0UmVjdCBsYXlvdXRWaWV3cG9ydCA9IGZy
YW1lVmlldy5sYXlvdXRWaWV3cG9ydFJlY3QoKTsKLSAgICAgICAgICAgIExheW91dFJlY3Qgdmlz
dWFsVmlld3BvcnQgPSBmcmFtZVZpZXcudmlzdWFsVmlld3BvcnRSZWN0KCk7Ci0KLSAgICAgICAg
ICAgIC8vIFRoZSByZWN0IHRvIGV4cG9zZSBtYXkgYmUgcGFydGlhbGx5IG9mZnNjcmVlbiwgd2hp
Y2ggd2UgY2FuJ3QgZG8gYW55dGhpbmcgYWJvdXQgd2l0aCBwb3NpdGlvbjpmaXhlZC4KLSAgICAg
ICAgICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5pbnRlcnNlY3QobGF5b3V0Vmlld3BvcnQpOwotICAg
ICAgICAgICAgLy8gTWFrZSBzdXJlIGl0J3Mgbm90IGxhcmdlciB0aGFuIHRoZSB2aXN1YWwgdmll
d3BvcnQ7IGlmIHNvLCB3ZSdsbCBqdXN0IG1vdmUgdG8gdGhlIHRvcCBsZWZ0LgotICAgICAgICAg
ICAgdW5zY2FsZWRFeHBvc2VSZWN0LnNldFNpemUodW5zY2FsZWRFeHBvc2VSZWN0LnNpemUoKS5z
aHJ1bmtUbyh2aXN1YWxWaWV3cG9ydC5zaXplKCkpKTsKLQotICAgICAgICAgICAgLy8gQ29tcHV0
ZSBob3cgbXVjaCB3ZSBoYXZlIHRvIG1vdmUgdGhlIHZpc3VhbFZpZXdwb3J0IHRvIHJldmVhbCB0
aGUgcGFydCBvZiB0aGUgbGF5b3V0Vmlld3BvcnQgdGhhdCBjb250YWlucyBleHBvc2VSZWN0Lgot
ICAgICAgICAgICAgTGF5b3V0UmVjdCByZXF1aXJlZFZpc3VhbFZpZXdwb3J0ID0gZ2V0UmVjdFRv
RXhwb3NlKHZpc3VhbFZpZXdwb3J0LCB1bnNjYWxlZEV4cG9zZVJlY3QsIGZhbHNlLCBhbGlnblgs
IGFsaWduWSk7Ci0gICAgICAgICAgICAvLyBTY2FsZSBpdCBiYWNrIHVwLgotICAgICAgICAgICAg
cmVxdWlyZWRWaXN1YWxWaWV3cG9ydC5zY2FsZShmcmFtZVZpZXcuZnJhbWVTY2FsZUZhY3Rvcigp
KTsKLSAgICAgICAgICAgIHJlcXVpcmVkVmlzdWFsVmlld3BvcnQubW92ZSgwLCBmcmFtZVZpZXcu
aGVhZGVySGVpZ2h0KCkpOwotICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmVkVmlzdWFsVmlld3Bv
cnQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRl
IFggYmVoYXZpb3IuCi0gICAgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvciBzY3JvbGxYOwotICAg
IExheW91dFJlY3QgZXhwb3NlUmVjdFgoZXhwb3NlUmVjdC54KCksIHZpc2libGVSZWN0LnkoKSwg
ZXhwb3NlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5p
dCBpbnRlcnNlY3RXaWR0aCA9IGludGVyc2VjdGlvbih2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdFgp
LndpZHRoKCk7Ci0gICAgaWYgKGludGVyc2VjdFdpZHRoID09IGV4cG9zZVJlY3Qud2lkdGgoKSB8
fCAoYWxpZ25YLmxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkRW5hYmxlZCgpICYm
IGludGVyc2VjdFdpZHRoID49IE1JTl9JTlRFUlNFQ1RfRk9SX1JFVkVBTCkpIHsKLSAgICAgICAg
Ly8gSWYgdGhlIHJlY3RhbmdsZSBpcyBmdWxseSB2aXNpYmxlLCB1c2UgdGhlIHNwZWNpZmllZCB2
aXNpYmxlIGJlaGF2aW9yLgotICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIHBhcnRpYWxs
eSB2aXNpYmxlLCBidXQgb3ZlciBhIGNlcnRhaW4gdGhyZXNob2xkLAotICAgICAgICAvLyB0aGVu
IHRyZWF0IGl0IGFzIGZ1bGx5IHZpc2libGUgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaG9yaXpvbnRh
bCBzY3JvbGxpbmcKLSAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRWaXNpYmxlQmVoYXZpb3Io
KTsKLSAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID09IHZpc2libGVSZWN0LndpZHRoKCkp
IHsKLSAgICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJl
YSwgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3
b3JrLgotICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFZpc2libGVCZWhhdmlvcigpOwotICAg
ICAgICBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRl
cikKLSAgICAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Nj
cm9sbDsKLSAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID4gMCkKLSAgICAgICAgLy8gSWYg
dGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgYnV0IG5vdCBhYm92ZSB0aGUgbWlu
aW11bSB0aHJlc2hvbGQsIHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRpYWwgYmVoYXZpb3IKLSAgICAg
ICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRQYXJ0aWFsQmVoYXZpb3IoKTsKLSAgICBlbHNlCi0gICAg
ICAgIHNjcm9sbFggPSBhbGlnblguZ2V0SGlkZGVuQmVoYXZpb3IoKTsKLSAgICAvLyBJZiB3ZSdy
ZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0
IGlzIGZ1cnRoZXIgcmlnaHQKLSAgICAvLyB0aGFuIHRoZSB2aXNpYmxlUmVjdCwgYW5kIG5vdCBi
aWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCB0aGVuIGFsaWduIHdpdGggdGhlIHJpZ2h0Lgot
ICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9z
ZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFgoKSA+IHZpc2libGVSZWN0Lm1heFgoKSAmJiBleHBv
c2VSZWN0LndpZHRoKCkgPCB2aXNpYmxlUmVjdC53aWR0aCgpKQotICAgICAgICBzY3JvbGxYID0g
U2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodDsKLQotICAgIC8vIEdpdmVuIHRo
ZSBYIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBYIGNvb3JkaW5hdGUuCi0gICAgTGF5b3V0VW5pdCB4
OwotICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xs
KQotICAgICAgICB4ID0gdmlzaWJsZVJlY3QueCgpOwotICAgIGVsc2UgaWYgKHNjcm9sbFggPT0g
U2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodCkKLSAgICAgICAgeCA9IGV4cG9z
ZVJlY3QubWF4WCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKTsKLSAgICBlbHNlIGlmIChzY3JvbGxY
ID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQotICAgICAgICB4ID0g
ZXhwb3NlUmVjdC54KCkgKyAoZXhwb3NlUmVjdC53aWR0aCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgo
KSkgLyAyOwotICAgIGVsc2UKLSAgICAgICAgeCA9IGV4cG9zZVJlY3QueCgpOwotCi0gICAgLy8g
RGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBZIGJlaGF2aW9yLgotICAgIFNjcm9sbEFsaWdubWVu
dDo6QmVoYXZpb3Igc2Nyb2xsWTsKLSAgICBMYXlvdXRSZWN0IGV4cG9zZVJlY3RZKHZpc2libGVS
ZWN0LngoKSwgZXhwb3NlUmVjdC55KCksIHZpc2libGVSZWN0LndpZHRoKCksIGV4cG9zZVJlY3Qu
aGVpZ2h0KCkpOwotICAgIExheW91dFVuaXQgaW50ZXJzZWN0SGVpZ2h0ID0gaW50ZXJzZWN0aW9u
KHZpc2libGVSZWN0LCBleHBvc2VSZWN0WSkuaGVpZ2h0KCk7Ci0gICAgaWYgKGludGVyc2VjdEhl
aWdodCA9PSBleHBvc2VSZWN0LmhlaWdodCgpKQotICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xl
IGlzIGZ1bGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHZpc2libGUgYmVoYXZpb3IuCi0g
ICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0VmlzaWJsZUJlaGF2aW9yKCk7Ci0gICAgZWxzZSBp
ZiAoaW50ZXJzZWN0SGVpZ2h0ID09IHZpc2libGVSZWN0LmhlaWdodCgpKSB7Ci0gICAgICAgIC8v
IElmIHRoZSByZWN0IGlzIGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIGRvbid0IGJvdGhl
ciB0cnlpbmcgdG8gY2VudGVyLiBPdGhlciBhbGlnbm1lbnRzIHdpbGwgd29yay4KLSAgICAgICAg
c2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKLSAgICAgICAgaWYgKHNjcm9s
bFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXIpCi0gICAgICAgICAg
ICBzY3JvbGxZID0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGw7Ci0gICAgfSBl
bHNlIGlmIChpbnRlcnNlY3RIZWlnaHQgPiAwKQotICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xl
IGlzIHBhcnRpYWxseSB2aXNpYmxlLCB1c2UgdGhlIHNwZWNpZmllZCBwYXJ0aWFsIGJlaGF2aW9y
Ci0gICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0UGFydGlhbEJlaGF2aW9yKCk7Ci0gICAgZWxz
ZQotICAgICAgICBzY3JvbGxZID0gYWxpZ25ZLmdldEhpZGRlbkJlaGF2aW9yKCk7Ci0gICAgLy8g
SWYgd2UncmUgdHJ5aW5nIHRvIGFsaWduIHRvIHRoZSBjbG9zZXN0IGVkZ2UsIGFuZCB0aGUgZXhw
b3NlUmVjdCBpcyBmdXJ0aGVyIGRvd24KLSAgICAvLyB0aGFuIHRoZSB2aXNpYmxlUmVjdCwgYW5k
IG5vdCBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCB0aGVuIGFsaWduIHdpdGggdGhlIGJv
dHRvbS4KLSAgICBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGln
blRvQ2xvc2VzdEVkZ2UgJiYgZXhwb3NlUmVjdC5tYXhZKCkgPiB2aXNpYmxlUmVjdC5tYXhZKCkg
JiYgZXhwb3NlUmVjdC5oZWlnaHQoKSA8IHZpc2libGVSZWN0LmhlaWdodCgpKQotICAgICAgICBz
Y3JvbGxZID0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Cb3R0b207Ci0KLSAgICAv
LyBHaXZlbiB0aGUgWSBiZWhhdmlvciwgY29tcHV0ZSB0aGUgWSBjb29yZGluYXRlLgotICAgIExh
eW91dFVuaXQgeTsKLSAgICBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9y
OjpOb1Njcm9sbCkKLSAgICAgICAgeSA9IHZpc2libGVSZWN0LnkoKTsKLSAgICBlbHNlIGlmIChz
Y3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQm90dG9tKQotICAgICAg
ICB5ID0gZXhwb3NlUmVjdC5tYXhZKCkgLSB2aXNpYmxlUmVjdC5oZWlnaHQoKTsKLSAgICBlbHNl
IGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQot
ICAgICAgICB5ID0gZXhwb3NlUmVjdC55KCkgKyAoZXhwb3NlUmVjdC5oZWlnaHQoKSAtIHZpc2li
bGVSZWN0LmhlaWdodCgpKSAvIDI7Ci0gICAgZWxzZQotICAgICAgICB5ID0gZXhwb3NlUmVjdC55
KCk7Ci0KLSAgICByZXR1cm4gTGF5b3V0UmVjdChMYXlvdXRQb2ludCh4LCB5KSwgdmlzaWJsZVJl
Y3Quc2l6ZSgpKTsKLX0KLQogdm9pZCBSZW5kZXJMYXllcjo6YXV0b3Njcm9sbChjb25zdCBJbnRQ
b2ludCYgcG9zaXRpb25JbldpbmRvdykKIHsKICAgICBJbnRQb2ludCBjdXJyZW50RG9jdW1lbnRQ
b3NpdGlvbiA9IHJlbmRlcmVyKCkudmlldygpLmZyYW1lVmlldygpLndpbmRvd1RvQ29udGVudHMo
cG9zaXRpb25JbldpbmRvdyk7Ci0gICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShMYXlvdXRSZWN0KGN1
cnJlbnREb2N1bWVudFBvc2l0aW9uLCBMYXlvdXRTaXplKDEsIDEpKSwgZmFsc2UsIHsgU2VsZWN0
aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVk
ZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9z
c09yaWdpblNjcm9sbGluZzo6WWVzIH0pOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlz
aWJsZShMYXlvdXRSZWN0KGN1cnJlbnREb2N1bWVudFBvc2l0aW9uLCBMYXlvdXRTaXplKDEsIDEp
KSwgcmVuZGVyZXIoKSwgZmFsc2UsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOwog
fQogCiBib29sIFJlbmRlckxheWVyOjpjYW5SZXNpemUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCBlNWU1ZWM5NDg0ZDYxY2E3ZDk5ZWFlNWVmNWQ0ZTY1
ODJkYzllYmU1Li4zNWJmMTZkM2RhYjlmNmI1MGYyMjQzMmExODllN2I2NzY2NmEwY2E5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDU5LDggKzQ1OSw2IEBAIHB1
YmxpYzoKICAgICAvLyBGSVhNRTogVGhpcyBjYW4gcmV0dXJuIHRoZSBSZW5kZXJWaWV3J3MgbGF5
ZXIgd2hlbiBjYWxsZXJzIHByb2JhYmx5IHdhbnQgdGhlIEZyYW1lVmlldyBhcyBhIFNjcm9sbGFi
bGVBcmVhLgogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIoSW5jbHVk
ZVNlbGZPck5vdCwgQ3Jvc3NGcmFtZUJvdW5kYXJpZXMpIGNvbnN0OwogCi0gICAgLy8gImFic29s
dXRlUmVjdCIgaXMgaW4gc2NhbGVkIGRvY3VtZW50IGNvb3JkaW5hdGVzLgotICAgIHZvaWQgc2Ny
b2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5z
aWRlRml4ZWQsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7CiAgICAgLy8gUmV0
dXJucyB0cnVlIHdoZW4gdGhlIGxheWVyIGNvdWxkIGRvIHRvdWNoIHNjcm9sbGluZywgYnV0IGRv
ZXNuJ3QgbG9vayBhdCB3aGV0aGVyIHRoZXJlIGlzIGFjdHVhbGx5IHNjcm9sbGFibGUgb3ZlcmZs
b3cuCiAgICAgYm9vbCBjYW5Vc2VDb21wb3NpdGVkU2Nyb2xsaW5nKCkgY29uc3Q7CiAgICAgLy8g
UmV0dXJucyB0cnVlIHdoZW4gdGhlcmUgaXMgYWN0dWFsbHkgc2Nyb2xsYWJsZSBvdmVyZmxvdyAo
cmVxdWlyZXMgbGF5b3V0IHRvIGJlIHVwLXRvLWRhdGUpLgpAQCAtNDc0LDYgKzQ3Miw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpOwogICAgIHZvaWQg
dXBkYXRlU2Nyb2xsYmFyU3RlcHMoKTsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFJl
bmRlckxheWVyIGlzIGEgY2FuZGlkYXRlIGZvciBzY3JvbGxpbmcgZHVyaW5nIHNjcm9sbEludG9W
aWV3IG9wZXJhdGlvbnMuCisgICAgYm9vbCBzaG91bGRUcnlUb1Njcm9sbEZvclNjcm9sbEludG9W
aWV3KCkgY29uc3Q7CiAgICAgdm9pZCBhdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50Jik7CiAKICAg
ICBib29sIGNhblJlc2l6ZSgpIGNvbnN0OwpAQCAtMTAzNCw4ICsxMDM0LDYgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgc2hvdWxkQmVTZWxmUGFpbnRpbmdMYXllcigpIGNvbnN0OwogCi0gICAgYm9v
bCBhbGxvd3NDdXJyZW50U2Nyb2xsKCkgY29uc3Q7Ci0KICAgICB2b2lkIGRpcnR5QW5jZXN0b3JD
aGFpblZpc2libGVEZXNjZW5kYW50U3RhdHVzKCk7CiAgICAgdm9pZCBzZXRBbmNlc3RvckNoYWlu
SGFzVmlzaWJsZURlc2NlbmRhbnQoKTsKICAgICAKQEAgLTEwNzAsOCArMTA2OCw2IEBAIHByaXZh
dGU6CiAKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nVHJhbnNmb3JtZWRBbmNlc3RvcigpIGNv
bnN0OwogCi0gICAgTGF5b3V0UmVjdCBnZXRSZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCYg
dmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGV4cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4
ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQm
IGFsaWduWSkgY29uc3Q7Ci0KICAgICAvLyBDb252ZXJ0IGEgcG9pbnQgaW4gYWJzb2x1dGUgY29v
cmRzIGludG8gbGF5ZXIgY29vcmRzLCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQKICAg
ICBMYXlvdXRQb2ludCBhYnNvbHV0ZVRvQ29udGVudHMoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuY3BwCmluZGV4IDRkN2UxNjMwNzMxZmIwMmQ3MzAwMjNjMTM3MGMwNmFhMGZh
YmU2YzQuLjBkMzYyNDQ5MTI2NjQxMzRlYmM2NzUxNWMxMDM4OGMzOGM3MGEwMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJl
YS5jcHAKQEAgLTE3NTgsMjUgKzE3NTgsNTQgQEAgdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVB
cmVhOjpwYW5TY3JvbGxGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmIHNvdXJjZVBvaW50KQogICAg
IHNjcm9sbEJ5UmVjdXJzaXZlbHkoYWRqdXN0ZWRTY3JvbGxEZWx0YShkZWx0YSkpOwogfQogCi1z
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnVwZGF0
ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9u
cywgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxF
eHBvc2VSZWN0KQorTGF5b3V0UmVjdCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgY29uc3QgU2Nyb2xs
UmVjdFRvVmlzaWJsZU9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgQVNTRVJUKG1fbGF5ZXIuYWxs
b3dzQ3VycmVudFNjcm9sbCgpKTsKKyAgICBSZW5kZXJCb3gqIGJveCA9IGxheWVyKCkucmVuZGVy
Qm94KCk7CisgICAgQVNTRVJUKGJveCk7CisgICAgTGF5b3V0UmVjdCBsb2NhbEV4cG9zZVJlY3Qo
Ym94LT5hYnNvbHV0ZVRvTG9jYWxRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QoYWJzb2x1dGVSZWN0
KSkpLmJvdW5kaW5nQm94KCkpOworCisgICAgLy8gbG9jYWxFeHBvc2VkUmVjdCBpcyBub3cgdGhl
IGFic29sdXRlIHJlY3QgaW4gbG9jYWwgY29vcmRpbmF0ZXMsIGJ1dCByZWxhdGl2ZSB0byB0aGUK
KyAgICAvLyBib3JkZXIgZWRnZS4gTWFrZSB0aGUgcmVjdGFuZ2xlIHJlbGF0aXZlIHRvIHRoZSBz
Y3JvbGxhYmxlIGFyZWEuCisgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQo
Ym94LT5ib3JkZXJMZWZ0KCksIGJveC0+Ym9yZGVyVG9wKCkpKTsKKworICAgIGlmIChib3gtPnNo
b3VsZFBsYWNlVmVydGljYWxTY3JvbGxiYXJPbkxlZnQoKSkgeworICAgICAgICAvLyBGb3IgYGRp
cmVjdGlvbjogcnRsOyB3cml0aW5nLW1vZGU6IGhvcml6b250YWwte3RiLGJ0fWAgYW5kIGB3cml0
aW5nLW1vZGU6IHZlcnRpY2FsLXJsYAorICAgICAgICAvLyBib3hlcywgdGhlIHNjcm9sbCBiYXIg
aXMgb24gdGhlIGxlZnQgc2lkZS4gVGhlIHZpc2libGUgcmVjdCBzdGFydHMgZnJvbSB0aGUgcmln
aHQgc2lkZQorICAgICAgICAvLyBvZiB0aGUgc2Nyb2xsIGJhci4gU28gdGhlIHggb2YgbG9jYWxF
eHBvc2VSZWN0IHNob3VsZCBzdGFydCBmcm9tIHRoZSBzYW1lIHBvc2l0aW9uIHRvby4KKyAgICAg
ICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmVCeShMYXlvdXRQb2ludCgtdmVydGljYWxTY3JvbGxiYXJX
aWR0aCgpLCAwKSk7CisgICAgfQorCisgICAgLy8gc2Nyb2xsLXBhZGRpbmcgYXBwbGllcyB0byB0
aGUgc2Nyb2xsIGNvbnRhaW5lciwgYnV0IGV4cGFuZCB0aGUgcmVjdGFuZ2xlIHRoYXQgd2Ugd2Fu
dCB0byBleHBvc2UgaW4gb3JkZXIKKyAgICAvLyBzaW11bGF0ZSBwYWRkaW5nIHRoZSBzY3JvbGwg
Y29udGFpbmVyLiBUaGlzIHJlY3RhbmdsZSBpcyBwYXNzZWQgdXAgdGhlIHRyZWUgb2Ygc2Nyb2xs
aW5nIGVsZW1lbnRzIHRvCisgICAgLy8gZW5zdXJlIHRoYXQgdGhlIHBhZGRpbmcgb24gdGhpcyBz
Y3JvbGwgY29udGFpbmVyIGlzIG1haW50YWluZWQuCisgICAgTGF5b3V0UmVjdCBsYXllckJvdW5k
cygwX2x1LCAwX2x1LCBib3gtPmNsaWVudFdpZHRoKCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOwor
ICAgIGxvY2FsRXhwb3NlUmVjdC5leHBhbmQoYm94LT5zY3JvbGxQYWRkaW5nRm9yVmlld3BvcnRS
ZWN0KGxheWVyQm91bmRzKSk7CiAKKyAgICBhdXRvIHJldmVhbFJlY3QgPSBnZXRSZWN0VG9FeHBv
c2VGb3JTY3JvbGxJbnRvVmlldyhsYXllckJvdW5kcywgbG9jYWxFeHBvc2VSZWN0LCBvcHRpb25z
LmFsaWduWCwgb3B0aW9ucy5hbGlnblkpOworCisgICAgYXV0byBzY3JvbGxQb3NpdGlvbk9wdGlv
bnMgPSBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnM6OmNyZWF0ZVByb2dyYW1tYXRpYygpOwor
ICAgIGlmICghYm94LT5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxJblByb2dyZXNz
KCkgJiYgYm94LT5lbGVtZW50KCkgJiYgdXNlU21vb3RoU2Nyb2xsaW5nKG9wdGlvbnMuYmVoYXZp
b3IsIGJveC0+ZWxlbWVudCgpKSkKKyAgICAgICAgc2Nyb2xsUG9zaXRpb25PcHRpb25zLmFuaW1h
dGVkID0gU2Nyb2xsSXNBbmltYXRlZDo6WWVzOworICAgIGlmIChhdXRvIHJlc3VsdCA9IHVwZGF0
ZVNjcm9sbFBvc2l0aW9uRm9yU2Nyb2xsSW50b1ZpZXcoc2Nyb2xsUG9zaXRpb25PcHRpb25zLCBy
ZXZlYWxSZWN0LCBsb2NhbEV4cG9zZVJlY3QpKQorICAgICAgICByZXR1cm4gcmVzdWx0LnZhbHVl
KCk7CisgICAgcmV0dXJuIGFic29sdXRlUmVjdDsKK30KK3N0ZDo6b3B0aW9uYWw8TGF5b3V0UmVj
dD4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb25Gb3JTY3Jv
bGxJbnRvVmlldyhjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmIG9wdGlvbnMsIGNv
bnN0IExheW91dFJlY3QmIHJldmVhbFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3Nl
UmVjdCkKK3sKICAgICBSZW5kZXJCb3gqIGJveCA9IG1fbGF5ZXIucmVuZGVyQm94KCk7CiAgICAg
QVNTRVJUKGJveCk7CiAKICAgICBTY3JvbGxPZmZzZXQgY2xhbXBlZFNjcm9sbE9mZnNldCA9IGNs
YW1wU2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCgpICsgdG9JbnRTaXplKHJvdW5kZWRJbnRSZWN0
KHJldmVhbFJlY3QpLmxvY2F0aW9uKCkpKTsKLSAgICBpZiAoY2xhbXBlZFNjcm9sbE9mZnNldCAh
PSBzY3JvbGxPZmZzZXQoKSB8fCBzY3JvbGxBbmltYXRpb25TdGF0dXMoKSAhPSBTY3JvbGxBbmlt
YXRpb25TdGF0dXM6Ok5vdEFuaW1hdGluZykgewotICAgICAgICBTY3JvbGxPZmZzZXQgb2xkU2Ny
b2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAgIFNjcm9sbE9mZnNldCByZWFsU2Ny
b2xsT2Zmc2V0ID0gc2Nyb2xsVG9PZmZzZXQoY2xhbXBlZFNjcm9sbE9mZnNldCwgb3B0aW9ucyk7
Ci0KLSAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXREaWZmZXJlbmNlID0gcmVhbFNjcm9sbE9m
ZnNldCAtIG9sZFNjcm9sbE9mZnNldDsKLSAgICAgICAgYXV0byBsb2NhbEV4cG9zZVJlY3RTY3Jv
bGxlZCA9IGxvY2FsRXhwb3NlUmVjdDsKLSAgICAgICAgbG9jYWxFeHBvc2VSZWN0U2Nyb2xsZWQu
bW92ZSgtc2Nyb2xsT2Zmc2V0RGlmZmVyZW5jZSk7Ci0gICAgICAgIHJldHVybiBMYXlvdXRSZWN0
KGJveC0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1YWQoRmxvYXRSZWN0KGxvY2FsRXhwb3Nl
UmVjdFNjcm9sbGVkKSksIFVzZVRyYW5zZm9ybXMpLmJvdW5kaW5nQm94KCkpOwotICAgIH0KKyAg
ICBpZiAoY2xhbXBlZFNjcm9sbE9mZnNldCA9PSBzY3JvbGxPZmZzZXQoKSAmJiBzY3JvbGxBbmlt
YXRpb25TdGF0dXMoKSA9PSBTY3JvbGxBbmltYXRpb25TdGF0dXM6Ok5vdEFuaW1hdGluZykKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFNjcm9sbE9mZnNldCBvbGRTY3JvbGxP
ZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKKyAgICBTY3JvbGxPZmZzZXQgcmVhbFNjcm9sbE9mZnNl
dCA9IHNjcm9sbFRvT2Zmc2V0KGNsYW1wZWRTY3JvbGxPZmZzZXQsIG9wdGlvbnMpOwogCi0gICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldERpZmZlcmVuY2Ug
PSByZWFsU2Nyb2xsT2Zmc2V0IC0gb2xkU2Nyb2xsT2Zmc2V0OworICAgIGF1dG8gbG9jYWxFeHBv
c2VSZWN0U2Nyb2xsZWQgPSBsb2NhbEV4cG9zZVJlY3Q7CisgICAgbG9jYWxFeHBvc2VSZWN0U2Ny
b2xsZWQubW92ZSgtc2Nyb2xsT2Zmc2V0RGlmZmVyZW5jZSk7CisgICAgcmV0dXJuIExheW91dFJl
Y3QoYm94LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QobG9jYWxFeHBv
c2VSZWN0U2Nyb2xsZWQpKSwgVXNlVHJhbnNmb3JtcykuYm91bmRpbmdCb3goKSk7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6c2Nyb2xsQnlSZWN1cnNpdmVseShjb25zdCBJ
bnRTaXplJiBkZWx0YSwgU2Nyb2xsYWJsZUFyZWEqKiBzY3JvbGxlZEFyZWEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaAppbmRl
eCBiZjI3ZWRjMTUyNjc0NDgzZmM3OTc3N2I2OWE5ZWMxYmRkYTE2YTYzLi44OTk1ODI4YjI2NGIw
MGJhYmZiN2Q2NDI4MTgxYzZkZTEyYTNmMGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKQEAgLTIzNiw3ICsyMzYsOCBA
QCBwdWJsaWM6CiAKICAgICBJbnRTaXplIHNjcm9sbGJhck9mZnNldChjb25zdCBTY3JvbGxiYXIm
KSBjb25zdDsKIAotICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gdXBkYXRlU2Nyb2xsUG9z
aXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zJiwgY29uc3QgTGF5b3V0UmVj
dCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxFeHBvc2VSZWN0KTsKKyAgICBM
YXlvdXRSZWN0IHNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVS
ZWN0LCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpOworICAgIHN0ZDo6b3B0aW9u
YWw8TGF5b3V0UmVjdD4gdXBkYXRlU2Nyb2xsUG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyhjb25z
dCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpOwogCiBwcml2YXRlOgogICAg
IGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGI0YjY3MTAyZGZlNzRkZjVlYWIxNWMyMGZlNGVk
YzU2MTUyYWMzZjMuLjY5NzM5MmYxNjVmNWJkNWYzN2EwMzE2ODBkNzM2MmI3YjI0NTc2MTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC00NDksMTkgKzQ0
OSw2IEBAIFJlbmRlckxheWVyKiBSZW5kZXJPYmplY3Q6OmVuY2xvc2luZ0xheWVyKCkgY29uc3QK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBSZW5kZXJPYmplY3Q6OnNjcm9sbFJlY3RU
b1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVk
LCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBpZiAo
b3B0aW9ucy5yZXZlYWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OkRvTm90UmV2ZWFsKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5ZXIg
PSB0aGlzLT5lbmNsb3NpbmdMYXllcigpOwotICAgIGlmICghZW5jbG9zaW5nTGF5ZXIpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGVuY2xvc2luZ0xheWVyLT5zY3JvbGxSZWN0VG9WaXNp
YmxlKGFic29sdXRlUmVjdCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMpOwotICAgIHJldHVybiB0cnVl
OwotfQotCiBSZW5kZXJCb3gmIFJlbmRlck9iamVjdDo6ZW5jbG9zaW5nQm94KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gKmxpbmVhZ2VPZlR5cGU8UmVuZGVyQm94Pihjb25zdF9jYXN0PFJlbmRlck9i
amVjdCY+KCp0aGlzKSkuZmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaAppbmRleCA2ZmYyMDIxMmJhOWM5ODFiYzg3ZmUxZjRiN2YyYjUwOGNlYzMzZDM3Li5hM2Fi
M2Q4NDBmYzhlNjQyNzJkZTIxOWRmYzg0NzNiNGZhNjg0NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC0xNTQsOSArMTU0LDYgQEAgcHVibGljOgogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0xheWVyKCkgY29uc3Q7CiAKLSAg
ICAvLyBTY3JvbGxpbmcgaXMgYSBSZW5kZXJCb3ggY29uY2VwdCwgaG93ZXZlciBzb21lIGNvZGUg
anVzdCBjYXJlcyBhYm91dCByZWN1cnNpdmVseSBzY3JvbGxpbmcgb3VyIGVuY2xvc2luZyBTY3Jv
bGxhYmxlQXJlYShzKS4KLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNjcm9sbFJlY3RUb1Zpc2li
bGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25z
dCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYpOwotCiAgICAgV0VCQ09SRV9FWFBPUlQgUmVu
ZGVyQm94JiBlbmNsb3NpbmdCb3goKSBjb25zdDsKICAgICBSZW5kZXJCb3hNb2RlbE9iamVjdCYg
ZW5jbG9zaW5nQm94TW9kZWxPYmplY3QoKSBjb25zdDsKICAgICBSZW5kZXJCb3gqIGVuY2xvc2lu
Z1Njcm9sbGFibGVDb250YWluZXJGb3JTbmFwcGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNTMzNWZjZmRlNjA1N2M1ZTljYzcwOGU0OTRjNTE3NWIyNjhjYjZlZC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDE5
OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCi0gKgotICogT3RoZXIgY29u
dHJpYnV0b3JzOgotICogICBSb2JlcnQgTydDYWxsYWhhbiA8cm9jK0Bjcy5jbXUuZWR1PgotICog
ICBEYXZpZCBCYXJvbiA8ZGJhcm9uQGZhcy5oYXJ2YXJkLmVkdT4KLSAqICAgQ2hyaXN0aWFuIEJp
ZXNpbmdlciA8Y2JpZXNpbmdlckB3ZWIuZGU+Ci0gKiAgIFJhbmRhbGwgSmVzdXAgPHJqZXN1cEB3
Z2F0ZS5jb20+Ci0gKiAgIFJvbGFuZCBNYWlueiA8cm9sYW5kLm1haW56QGluZm9ybWF0aWsubWVk
LnVuaS1naWVzc2VuLmRlPgotICogICBKb3NoIFNvcmVmIDx0aW1lbGVzc0BtYWMuY29tPgotICog
ICBCb3JpcyBaYmFyc2t5IDxiemJhcnNreUBtaXQuZWR1PgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgot
ICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1
bmRlciB0aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBW
ZXJzaW9uIDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAodGhl
ICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIFZlcnNpb24gMi4w
LCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKLSAqICh0aGUg
IkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQ
TCBhcmUKLSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNo
IHRvIGFsbG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVy
IHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAodGhlIE1QTCBvciB0
aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgotICogdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKLSAq
IGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBu
b3RpY2UgYW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhl
IEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhlIHBy
b3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0
aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcm9sbEFsaWdubWVudC5oIgotCi0j
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25t
ZW50OjphbGlnbkNlbnRlcklmTm90VmlzaWJsZSA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhh
dmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpOb1Njcm9sbCB9OwotY29uc3QgU2Nyb2xsQWxp
Z25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5vdFZpc2libGUgPSB7IEJlaGF2
aW9yOjpOb1Njcm9sbCwgQmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSwgQmVoYXZpb3I6Ok5v
U2Nyb2xsIH07Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNl
bnRlcklmTmVlZGVkID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnbkNlbnRl
ciwgQmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSB9OwotV0VCQ09SRV9FWFBPUlQgY29uc3Qg
U2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCA9IHsg
QmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlLCBCZWhhdmlv
cjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlIH07Ci1XRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxBbGln
bm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA9IHsgQmVoYXZpb3I6OkFs
aWduQ2VudGVyLCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciB9
OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMg
PSB7IEJlaGF2aW9yOjpBbGlnblRvcCwgQmVoYXZpb3I6OkFsaWduVG9wLCBCZWhhdmlvcjo6QWxp
Z25Ub3AgfTsKLWNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduUmln
aHRBbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnblJpZ2h0LCBCZWhhdmlvcjo6QWxpZ25SaWdodCwg
QmVoYXZpb3I6OkFsaWduUmlnaHQgfTsKLWNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduTGVmdEFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduTGVmdCwgQmVoYXZpb3I6
OkFsaWduTGVmdCwgQmVoYXZpb3I6OkFsaWduTGVmdCB9OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Cb3R0b21BbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnbkJv
dHRvbSwgQmVoYXZpb3I6OkFsaWduQm90dG9tLCBCZWhhdmlvcjo6QWxpZ25Cb3R0b20gfTsKLSAg
ICAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbEFsaWdubWVu
dDo6QmVoYXZpb3IgYikKLXsKLSAgICBzd2l0Y2ggKGIpIHsKLSAgICBjYXNlIFNjcm9sbEFsaWdu
bWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsOgotICAgICAgICByZXR1cm4gdHMgPDwgIk5vU2Nyb2xs
IjsKLSAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyOgotICAg
ICAgICByZXR1cm4gdHMgPDwgIkFsaWduQ2VudGVyIjsKLSAgICBjYXNlIFNjcm9sbEFsaWdubWVu
dDo6QmVoYXZpb3I6OkFsaWduVG9wOgotICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduVG9wIjsK
LSAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQm90dG9tOgotICAgICAg
ICByZXR1cm4gdHMgPDwgIkFsaWduQm90dG9tIjsKLSAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6
QmVoYXZpb3I6OkFsaWduTGVmdDoKLSAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnbkxlZnQiOwot
ICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodDoKLSAgICAgICAg
cmV0dXJuIHRzIDw8ICJBbGlnblJpZ2h0IjsKLSAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVo
YXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZToKLSAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnblRv
Q2xvc2VzdEVkZ2UiOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0gICAgCi1UZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIHMpCi17
Ci0gICAgcmV0dXJuIHRzIDw8ICJTY3JvbGxBbGlnbm1lbnQ6IHZpc2libGU6ICIgPDwgcy5tX3Jl
Y3RWaXNpYmxlIDw8ICIgaGlkZGVuOiAiIDw8IHMubV9yZWN0SGlkZGVuIDw8ICIgcGFydGlhbDog
IiA8PCBzLm1fcmVjdFBhcnRpYWw7Ci19Ci0KLX07IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAxYmI2ZWY5ZTIyZTdjNTk1NTg4YWI4YjMxMjc5MmEwODUzM2FlYWQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwOSwgMjAxNiBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDE5
OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCi0gKgotICogT3RoZXIgY29u
dHJpYnV0b3JzOgotICogICBSb2JlcnQgTydDYWxsYWhhbiA8cm9jK0Bjcy5jbXUuZWR1PgotICog
ICBEYXZpZCBCYXJvbiA8ZGJhcm9uQGZhcy5oYXJ2YXJkLmVkdT4KLSAqICAgQ2hyaXN0aWFuIEJp
ZXNpbmdlciA8Y2JpZXNpbmdlckB3ZWIuZGU+Ci0gKiAgIFJhbmRhbGwgSmVzdXAgPHJqZXN1cEB3
Z2F0ZS5jb20+Ci0gKiAgIFJvbGFuZCBNYWlueiA8cm9sYW5kLm1haW56QGluZm9ybWF0aWsubWVk
LnVuaS1naWVzc2VuLmRlPgotICogICBKb3NoIFNvcmVmIDx0aW1lbGVzc0BtYWMuY29tPgotICog
ICBCb3JpcyBaYmFyc2t5IDxiemJhcnNreUBtaXQuZWR1PgotICoKLSAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgot
ICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKgot
ICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1
bmRlciB0aGUgdGVybXMKLSAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBW
ZXJzaW9uIDEuMSwgZm91bmQgYXQKLSAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAodGhl
ICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIFZlcnNpb24gMi4w
LCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKLSAqICh0aGUg
IkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQ
TCBhcmUKLSAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNo
IHRvIGFsbG93IHVzZSBvZiB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVy
IHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCi0gKiBsaWNlbnNlcyAodGhlIE1QTCBvciB0
aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgotICogdmVyc2lvbiBv
ZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKLSAq
IGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBu
b3RpY2UgYW5kCi0gKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhl
IEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgotICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhlIHBy
b3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgotICogdmVyc2lvbiBvZiB0
aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLW5hbWVzcGFjZSBXVEYgewotY2xhc3MgVGV4dFN0cmVhbTsKLX0K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdHJ1Y3QgU2Nyb2xsQWxpZ25tZW50IHsKLQotICAg
IGVudW0gY2xhc3MgQmVoYXZpb3IgewotICAgICAgICBOb1Njcm9sbCwKLSAgICAgICAgQWxpZ25D
ZW50ZXIsCi0gICAgICAgIEFsaWduVG9wLAotICAgICAgICBBbGlnbkJvdHRvbSwKLSAgICAgICAg
QWxpZ25MZWZ0LAotICAgICAgICBBbGlnblJpZ2h0LAotICAgICAgICBBbGlnblRvQ2xvc2VzdEVk
Z2UKLSAgICB9OwotCi0gICAgQmVoYXZpb3IgZ2V0VmlzaWJsZUJlaGF2aW9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWN0VmlzaWJsZTsgfQotICAgIEJlaGF2aW9yIGdldFBhcnRpYWxCZWhhdmlvcigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVjdFBhcnRpYWw7IH0KLSAgICBCZWhhdmlvciBnZXRIaWRkZW5C
ZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdEhpZGRlbjsgfQotICAgIHZvaWQgZGlzYWJs
ZUxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkKCkgeyBtX2VuYWJsZUxlZ2FjeUhv
cml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkID0gZmFsc2U7IH0KLSAgICBib29sIGxlZ2FjeUhv
cml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQ7IH0KLQotICAgIHN0YXRpYyBj
b25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25DZW50ZXJJZk5vdFZpc2libGU7Ci0gICAgc3RhdGlj
IGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnblRvRWRnZUlmTm90VmlzaWJsZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduQ2VudGVySWZOZWVk
ZWQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGln
blRvRWRnZUlmTmVlZGVkOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTY3JvbGxB
bGlnbm1lbnQgYWxpZ25DZW50ZXJBbHdheXM7Ci0gICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdu
bWVudCBhbGlnblRvcEFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFs
aWduUmlnaHRBbHdheXM7Ci0gICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkxl
ZnRBbHdheXM7Ci0gICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkJvdHRvbUFs
d2F5czsKLQotICAgIEJlaGF2aW9yIG1fcmVjdFZpc2libGU7Ci0gICAgQmVoYXZpb3IgbV9yZWN0
SGlkZGVuOwotICAgIEJlaGF2aW9yIG1fcmVjdFBhcnRpYWw7Ci0gICAgYm9vbCBtX2VuYWJsZUxl
Z2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkIHsgdHJ1ZSB9OwotfTsKLSAgICAKLVdF
QkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yKTsKLVdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQm
KTsKLQotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGRmZGMzYTljOGIyZmRlYjgzYWQzYWVlOTQ5ZmNkMWZm
MTU1ZjczM2QuLjVkOTNkODU4ZGE4N2ExODhjNzM3ODY4YWM3MTU0OGYzNjIzNjhmMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtODEsNiArODEs
NyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9GcmFtZVNlbGVjdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0dyYXBo
aWNzQ29udGV4dENHLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5o
PgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KQEAgLTcyOCwxMSArNzI5LDExIEBAIC0g
KHZvaWQpX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01SYW5nZSAqKXJhbmdlCiAgICAgICAg
IAogICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigpKSB7CiAjaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xs
UmVjdFRvVmlzaWJsZShXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KHJhbmdlUmVjdCksIGluc2lk
ZUZpeGVkLCB7IFdlYkNvcmU6OlNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgV2ViQ29yZTo6
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTY3JvbGxBbGln
bm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNob3VsZEFsbG93Q3Jvc3NPcmln
aW5TY3JvbGxpbmc6OlllcyB9KTsKKyAgICAgICAgV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxS
ZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VSZWN0KSwgKnN0YXJ0
Tm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFs
TW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVk
ZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29y
ZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOwogI2Vsc2UKICAgICAg
ICAgYXV0byogbGF5ZXIgPSBzdGFydE5vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7
CiAgICAgICAgIGlmIChsYXllcikgewotICAgICAgICAgICAgc3RhcnROb2RlLT5yZW5kZXJlcigp
LT5zY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VSZWN0
KSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBX
ZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNj
cm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxsb3dD
cm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOworICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWVW
aWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VS
ZWN0KSwgKnN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2Vs
ZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWdu
VG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5l
ZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOwog
ICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0Q2FyZXRSZWN0
TmVlZHNVcGRhdGUoKTsKICAgICAgICAgICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlv
bigpLnVwZGF0ZUFwcGVhcmFuY2UoKTsKICAgICAgICAgfQpAQCAtNzUwLDcgKzc1MSw3IEBAIC0g
KHZvaWQpX3Njcm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01SYW5nZSAqKXJhbmdlIHdpdGhJbnNl
dDooQ0dGbG9hdClpbnNldAogICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJl
cigpKSB7CiAgICAgICAgIGF1dG8qIGxheWVyID0gc3RhcnROb2RlLT5yZW5kZXJlcigpLT5lbmNs
b3NpbmdMYXllcigpOwogICAgICAgICBpZiAobGF5ZXIpIHsKLSAgICAgICAgICAgIHN0YXJ0Tm9k
ZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShXZWJDb3JlOjplbmNsb3NpbmdJbnRS
ZWN0KHJhbmdlUmVjdCksIGluc2lkZUZpeGVkLCB7IFdlYkNvcmU6OlNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVk
LCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6
OlNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Olllc30pOworICAgICAgICAgICAgV2Vi
Q29yZTo6RnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0lu
dFJlY3QocmFuZ2VSZWN0KSwgKnN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsg
V2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGln
bm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxp
Z25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGlu
Zzo6WWVzIH0pOwogCiAgICAgICAgICAgICBhdXRvIGNvcmVGcmFtZSA9IGNvcmUoc2VsZik7CiAg
ICAgICAgICAgICBpZiAoY29yZUZyYW1lKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451219</attachid>
            <date>2022-02-08 01:09:35 -0800</date>
            <delta_ts>2022-02-08 10:51:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236220-20220208100933.patch</filename>
            <type>text/plain</type>
            <size>89532</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUyMmRhMmQ4ZmYyNWJk
NmZiY2Y0NjNkN2M0OGFjYTJmYzRiZjM3Ni4uZmJmZGU3NDE4ZjUxM2YzMDlmOTgwODM5MmY1OTMx
MDY0NGI3OTI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAyLTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWZhY3RvciBS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBub3QgY2hh
bmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1vdmUgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUgdG8gYSBzdGF0aWMgbWV0aG9kIGluIEZyYW1lVmlldyBhbmQgY29tYmluZSBpdCB3aXRo
CisgICAgICAgIFJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4gVGhpcyBhbHNvIHNw
bGl0cyBvdXQgdGhlIHRocmVlIGNvZGUgcGF0aHMgaW4gdGhpcyBtZXRob2QKKyAgICAgICAgaW50
byB0aHJlZSBzZXBhcmF0ZSBtZXRob2RzLCB0d28gb2YgdGhlbSBvbiBGcmFtZVZpZXcgYW5kIG9u
ZSBvZiB0aGVtIG9uCisgICAgICAgIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAg
ICAgSW4gYWRkaXRpb25zLCB2YXJpb3VzIG1ldGhvZHMgYXJlIG1vdmVkIGFuZCByZW5hbWVkIHRv
IG1ha2UgdGhlbSBtb3JlCisgICAgICAgIHVuZGVyc3RhbmRhYmxlLiBTY3JvbGxBbGlnbm1lbnQg
bXVzdCBtb3ZlIHRvIHBsYXRmb3JtLCBiZWNhdXNlIGdldFJlY3RUb0V4cG9zZSBtb3ZlcyB0bwor
ICAgICAgICBTY3JvbGxhYmxlQXJlYSBhbmQgaXMgcmVuYW1lZCB0byBnZXRSZWN0VG9FeHBvc2VG
b3JTY3JvbGxJbnRvVmlldy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOb3RWaXNpYmxlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24pOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Ny
b2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxQb3NpdGlv
bkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpnZXRQb3NzaWJseUZpeGVkUmVjdFRvRXhwb3NlIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
Z2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNj
cm9sbEludG9WaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRv
c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJn
ZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpmcmFtZUVsZW1lbnRBbmRWaWV3UGVybWl0U2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjphbGxvd3NDdXJyZW50U2Nyb2xsIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xs
UG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorCiAyMDIyLTAyLTA3ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtMQlNFXSBTdXBwcmVzcyBub24tZm9yZWdyb3VuZCBw
YWludCBwaGFzZXMgZm9yIFNWRyBzaGFwZXMgJiBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwppbmRleCBiNjdkYmNjYjMxNjZkZTY3MzgxODA1ODdlMjg4MTkzODFlNWVkOGQ2Li4wNGJi
NmU5YzMyMGUzY2MxYTgwMzFmMWU1MzdmZmMyZDlkZTgwMGM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDItMDcgIE1hcnRpbiBSb2JpbnNvbiAg
PG1yb2JpbnNvbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIFJlbmRlckxheWVyOjpz
Y3JvbGxSZWN0VG9WaXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzYyMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9z
Y3JvbGxET01SYW5nZVRvVmlzaWJsZTpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3Njcm9sbERP
TVJhbmdlVG9WaXNpYmxlOndpdGhJbnNldDpdKToKKwogMjAyMi0wMi0wNiAgVHlsZXIgV2lsY29j
ayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBBZGQgaW50ZXJuYWwtb25seSBm
bGFnIHRvIGVuYWJsZSBXSVAgZGlzcGxheTogY29udGVudHMgc3VwcG9ydApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKaW5kZXggODIxNjVmZGM4MDhkMDNmNzk5YjAzYWE3ZWY3MzUyZTA4ODhjZGRlZi4uZDNmZTY4
Nzk2ZGMzZTRlMDE4M2NjMzgwZDQ2MTJmNDE1NzhmY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC0xMzEzLDYgKzEzMTMsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmgKICAgICBwbGF0Zm9ybS9TY3JlZW5Qcm9w
ZXJ0aWVzLmgKICAgICBwbGF0Zm9ybS9TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
CisgICAgcGxhdGZvcm0vU2Nyb2xsQWxpZ25tZW50LmgKICAgICBwbGF0Zm9ybS9TY3JvbGxBbmlt
YXRpb25Nb21lbnR1bS5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaAogICAgIHBsYXRm
b3JtL1Njcm9sbFR5cGVzLmgKQEAgLTE4NTUsNyArMTg1Niw2IEBAIHNldChXZWJDb3JlX1BSSVZB
VEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICByZW5kZXJpbmcvUmVuZGVyVmlkZW8uaAogICAgIHJl
bmRlcmluZy9SZW5kZXJWaWV3LmgKICAgICByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKLSAgICBy
ZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKICAgICByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VE
YXRhLmgKICAgICByZW5kZXJpbmcvVGV4dEJveFNlbGVjdGFibGVSYW5nZS5oCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggOThiMDM1NzkxYTZlYmIwZDlmMTU3MWE1N2E0MmVjZDVmMTU1
Y2ZiOS4uOWE2MTFkNTk1OGM4OGIyMmIwYTUyNzllNDYzMWRjM2IyMzZiODE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1NYWMuY21ha2UKQEAgLTU2Myw2ICs1NjMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9NYWluVGhyZWFkU2hhcmVk
VGltZXIuaAogICAgIHBsYXRmb3JtL1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0LmgKICAgICBwbGF0
Zm9ybS9QbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaAorICAgIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVu
dC5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmgKICAgICBwbGF0Zm9ybS9TY3JvbGxp
bmdFZmZlY3RzQ29udHJvbGxlci5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCA4MTRhYTRmZGI4YmQ0ZWYxZWM2YWZjMDViMGU4NDBjZjhm
ZGVlMzAzLi4xZjYyODU0ZWYyM2QyNmRhZDNhN2UyOTJmNmE1YmM2MzY3YzZjNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMTg5OCw2ICsxODk4LDcgQEAgcGxhdGZvcm0vUmVmZXJyZXJQb2xpY3kuY3Bw
CiBwbGF0Zm9ybS9SZW1vdGVDb21tYW5kTGlzdGVuZXIuY3BwCiBwbGF0Zm9ybS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuY3BwCiBwbGF0Zm9ybS9TU0xLZXlHZW5lcmF0b3IuY3BwCitwbGF0Zm9y
bS9TY3JvbGxBbGlnbm1lbnQuY3BwCiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRpb24uY3BwCiBwbGF0
Zm9ybS9TY3JvbGxBbmltYXRpb25LaW5ldGljLmNwcAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
TW9tZW50dW0uY3BwCkBAIC0yMzk0LDcgKzIzOTUsNiBAQCByZW5kZXJpbmcvUmVuZGVyVlRUQ3Vl
LmNwcAogcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAotcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5j
cHAKIHJlbmRlcmluZy9TZWxlY3Rpb25SYW5nZURhdGEuY3BwCiByZW5kZXJpbmcvU3R5bGVkTWFy
a2VkVGV4dC5jcHAKIHJlbmRlcmluZy9UYWJsZUxheW91dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkYTc4ZWE5ZTRkOWRi
MTM3MWRhN2Y1NGZlMjRmZGU1MzcwYmU4MzVkLi5hYTQ2MjEwMTMzNjlkYmMzNWIzZGI4MGY0ZjVm
MDQxZmNhOTcxMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yMDQzLDYgKzIwNDMsNyBAQAogCQk1OUMyODA0NjEzOERDMjQx
MDA3OUI3RTIgLyogWE1MRXJyb3JzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1OUMyODA0NDEzOERDMjQxMDA3OUI3RTIgLyogWE1MRXJyb3JzLmggKi87
IH07CiAJCTVBNTc0RjI1MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUE1NzRGMjMxMzFEQjkzOTAw
NDcxQjg4IC8qIFJlbmRlclF1b3RlLmggKi87IH07CiAJCTVBNTc0RjI5MTMxREI5NkQwMDQ3MUI4
OCAvKiBRdW90ZXNEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QTU3NEYyNzEzMURCOTZEMDA0NzFCODggLyogUXVvdGVzRGF0YS5oICovOyB9Owor
CQk1QjJENzY3MjI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjJENzY3MDI3QjE0NjA4MDBG
OUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUIzMDY5NUUxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJh
d0J1ZmZlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCMzA2OTVCMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggKi87IH07CiAJ
CTVCNDY2NTYzMjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0NjY1NUYy
NUQxNEMwOTAwMENGRTE0IC8qIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUI0NjY1NjQyNUQxNEMw
QTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjQ2NjU2MDI1RDE0QzBBMDAwQ0ZFMTQgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMjA3Nyw3ICsyMDc4LDYgQEAKIAkJNUNFRUU0MzYxRjVGOEYy
MTAwMTRBNUY1IC8qIFJlY3RFZGdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUM5N0EzMzYxRjVGN0E2NTAwMTA1MjA3IC8qIFJlY3RFZGdlcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVEMjFBODAz
MTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEMjFBODAxMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJW
VFRQYXJzZXIuaCAqLzsgfTsKIAkJNUQ1OTc1QjMxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZl
cnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVE
NTk3NUIxMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNUQ5MjVCNjgwRjY0RDRERDAwQjg0
N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUQ5MjVCNjYwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEFsaWdubWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVE
QTVFMEZEMTAyQjk1MzgwMDA4OENGOSAvKiBKU1dlYlNvY2tldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNURBNUUwRkIxMDJCOTUzODAwMDg4Q0Y5IC8q
IEpTV2ViU29ja2V0LmggKi87IH07CiAJCTVEQjFCQzZBMTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFu
c2Zvcm1Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1Tb3VyY2UuaCAqLzsgfTsK
IAkJNURGN0Y1QzIwRjAxRjkyQTAwNTI2QjRCIC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBDb3B5
IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
NjU4MEVGMDlEMTJCMjAwMDBFNjFENyAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggKi87IH07CkBAIC0x
MDU2MSw2ICsxMDU2MSw4IEBACiAJCTVBNTc0RjI3MTMxREI5NkQwMDQ3MUI4OCAvKiBRdW90ZXNE
YXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1b3Rlc0RhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUE5MTQ2OUU4RTlGODQ4NUMzN0EyODc2IC8qIEpT
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVCMUUwRTQzMjVEMTYyOUIwMDI3MjI4MSAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjJENzY2RTI3QjE0NjA3MDBGOUJBM0Mg
LyogU2Nyb2xsQWxpZ25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcm9sbEFsaWdubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVC
MkQ3NjcwMjdCMTQ2MDgwMEY5QkEzQyAvKiBTY3JvbGxBbGlnbm1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVCMzA2OTVBMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkdMRHJhd0J1ZmZl
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjMwNjk1QjE4QjNEMzQ1MDA5
OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJHTERyYXdCdWZmZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVC
MzA2OTVDMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBXZWJHTERyYXdCdWZmZXJzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwNjY4LDggKzEwNjcwLDYgQEAKIAkJNUQyMUE4MDExM0VDRTVERjAwQkI3MDY0
IC8qIFdlYlZUVFBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJW
VFRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1OTc1QjExOTYzNUYx
MTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3lzdGVtVmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDU5
NzVCMjE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbVZlcnNpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsQWxpZ25t
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUQ5MjVCNjYwRjY0RDRERDAw
Qjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxBbGlnbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURB
NUUwRkExMDJCOTUzODAwMDg4Q0Y5IC8qIEpTV2ViU29ja2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViU29ja2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNURBNUUwRkIxMDJCOTUzODAwMDg4Q0Y5IC8qIEpTV2ViU29ja2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViU29ja2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVEQjFCQzY4MTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFuc2Zvcm1T
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHJhbnNmb3JtU291cmNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMDA2Miw2ICszMDA2Miw4IEBACiAJ
CQkJNDExMjIzQjgyNjAyNDRGRTAwQjBBMEI2IC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyLmggKi8sCiAJCQkJQkM4QUUzNEMxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVB
cmVhLmNwcCAqLywKIAkJCQlCQzhBRTM0RDEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xsYWJsZUFy
ZWEuaCAqLywKKwkJCQk1QjJENzY2RTI3QjE0NjA3MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50
LmNwcCAqLywKKwkJCQk1QjJENzY3MDI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50
LmggKi8sCiAJCQkJMEY2RUFENjYyNkZFNzI4MDAwMDY0RDAzIC8qIFNjcm9sbEFuaW1hdGlvbi5j
cHAgKi8sCiAJCQkJMEZBNjFCMEMyNkY0MzIxMjAwMUFBREI2IC8qIFNjcm9sbEFuaW1hdGlvbi5o
ICovLAogCQkJCTBGQzY5MkJDMjU3QzBGNDEwMDk4RTNGOSAvKiBTY3JvbGxBbmltYXRpb25LaW5l
dGljLmNwcCAqLywKQEAgLTMyMTU4LDggKzMyMTYwLDYgQEAKIAkJCQlCRTIwNTA3QzE4QTQ1OEIx
MDA4MDY0N0UgLyogUmVuZGVyVlRUQ3VlLmggKi8sCiAJCQkJQTg3MURGRTEwQTE1Mzc2QjAwQjEy
QTY4IC8qIFJlbmRlcldpZGdldC5jcHAgKi8sCiAJCQkJQTg3MURGRTAwQTE1Mzc2QjAwQjEyQTY4
IC8qIFJlbmRlcldpZGdldC5oICovLAotCQkJCTVEOTI1QjY1MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxBbGlnbm1lbnQuY3BwICovLAotCQkJCTVEOTI1QjY2MEY2NEQ0REQwMEI4NDdGMCAvKiBT
Y3JvbGxBbGlnbm1lbnQuaCAqLywKIAkJCQk0NEIzOEJGOTI1MzY5QTg4MDBBNDQ1OEQgLyogU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcCAqLywKIAkJCQk0NEIzOEJGNDI1MzY5MDFBMDBBNDQ1OEQgLyog
U2VsZWN0aW9uUmFuZ2VEYXRhLmggKi8sCiAJCQkJRTQ0MEZENTQyNUE0QUZFRTAwRjdDODQ5IC8q
IFN0eWxlZE1hcmtlZFRleHQuY3BwICovLApAQCAtMzcwNjcsNyArMzcwNjcsNyBAQAogCQkJCTIy
OEMyODQ1MTBEODI1MDAwMDlEMEQwRSAvKiBTY3JpcHRXcmFwcGFibGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0MDBEN0E4MTcxMzZFQTcwMDc3Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBRTM0RjEyRUEwOTZBMDBFQjNBRTYgLyogU2Nyb2xs
YWJsZUFyZWEuaCBpbiBIZWFkZXJzICovLAotCQkJCTVEOTI1QjY4MEY2NEQ0REQwMEI4NDdGMCAv
KiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTVCMkQ3NjcyMjdCMTQ2MDgw
MEY5QkEzQyAvKiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQTYxQjBF
MjZGNDMyMTMwMDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEUwMDlDMjZGOTJEODQwMEFDRTlDNiAvKiBTY3JvbGxBbmltYXRpb25Nb21lbnR1bS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1h
dG9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGVkMWM2NWI2MWMwZWVkMWJlMzVjOGQy
ZDY2NDE4ODdjNzRjYWZkODAuLjBkZDk4Y2RkYTI0M2ZkMTEwZTAwZDllMjUxYTFmYmUzMGU0ZGRj
NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmNwcApAQCAtMzI2Niw3ICszMjY2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlKGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25z
JgogICAgICAgICBwYXJlbnRPYmplY3QoKS0+c2Nyb2xsVG9NYWtlVmlzaWJsZSgpOwogCiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIt
PnNjcm9sbFJlY3RUb1Zpc2libGUoYm91bmRpbmdCb3hSZWN0KCksIGZhbHNlLCBvcHRpb25zKTsK
KyAgICAgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kaW5nQm94UmVjdCgp
LCAqcmVuZGVyZXIsIGZhbHNlLCBvcHRpb25zKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlV2l0aFN1YkZvY3VzKGNvbnN0IEludFJlY3QmIHN1YmZv
Y3VzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNw
aS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKaW5kZXggNGQz
Y2ZiNzViYTYwNjE4NDJmMmE2MTMxZmUwNzllNDU2NzUwNGQwMi4uNmIyMjY2NDJiODMyZDBiYTgy
NzFiNDY4ZjY5YWM3MTM1MDAxNzM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRz
cGkuY3BwCkBAIC05OTMsNyArOTkzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGk6
OnNjcm9sbFRvTWFrZVZpc2libGUoaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2UKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCi0gICAgbV9jb3JlT2JqZWN0LT5yZW5kZXJlcigpLT5zY3JvbGxS
ZWN0VG9WaXNpYmxlKHJlY3QsIGZhbHNlLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwg
YWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9KTsK
KyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgKm1fY29yZU9iamVjdC0+
cmVuZGVyZXIoKSwgZmFsc2UsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgs
IGFsaWduWSwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggODUyMWMyNDAxOTExYzI2
MzFhNjc2NTk0ZDE5MjNlZTQ1MGU0ZGY0NC4uNzYyYjU0MTZlNGI2NmE5ZTc1ZDczMjc5ODBhMzM2
MGI4MDA0Y2E4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTAyOSw3ICsxMDI5LDcgQEAg
dm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlldyhzdGQ6Om9wdGlvbmFsPHN0ZDo6dmFyaWFudDxi
b29sLCBTY3JvbGxJbnRvVmlld09wdGkKICAgICAgICAgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6Tm8sCiAgICAgICAgIG9wdGlvbnMuYmVoYXZpb3IudmFsdWVfb3IoU2Nyb2xsQmVo
YXZpb3I6OkF1dG8pCiAgICAgfTsKLSAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxl
KGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgdmlzaWJsZU9wdGlvbnMpOworICAgIEZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyKCksIGlu
c2lkZUZpeGVkLCB2aXNpYmxlT3B0aW9ucyk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50
b1ZpZXcoYm9vbCBhbGlnblRvVG9wKSAKQEAgLTEwNDcsNyArMTA0Nyw3IEBAIHZvaWQgRWxlbWVu
dDo6c2Nyb2xsSW50b1ZpZXcoYm9vbCBhbGlnblRvVG9wKQogICAgIGF1dG8gYWxpZ25YID0gU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkOwogICAgIGFsaWduWC5kaXNhYmxlTGVn
YWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKTsKIAotICAgIHJlbmRlcmVyKCktPnNj
cm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlv
blJldmVhbE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmln
aW5TY3JvbGxpbmc6Ok5vIH0pOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShh
YnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVh
bE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3Jv
bGxpbmc6Ok5vIH0pOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOZWVkZWQo
Ym9vbCBjZW50ZXJJZk5lZWRlZCkKQEAgLTEwNjQsNyArMTA2NCw3IEBAIHZvaWQgRWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChib29sIGNlbnRlcklmTmVlZGVkKQogICAgIGF1dG8gYWxp
Z25YID0gY2VudGVySWZOZWVkZWQgPyBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVk
ZWQgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQ7CiAgICAgYWxpZ25YLmRp
c2FibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZCgpOwogCi0gICAgcmVuZGVy
ZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRlRml4ZWQsIHsg
U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgsIGFsaWduWSwgU2hvdWxkQWxsb3dD
cm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CisgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9W
aXNpYmxlKGFic29sdXRlQm91bmRzLCAqcmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0
aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBhbGlnblgsIGFsaWduWSwgU2hvdWxkQWxsb3dDcm9zc09y
aWdpblNjcm9sbGluZzo6Tm8gfSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJ
Zk5vdFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUpCkBAIC0xMDc2LDEwICsxMDc2LDgg
QEAgdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShib29sIGNlbnRlcklm
Tm90VmlzaWJsZSkKICAgICAKICAgICBib29sIGluc2lkZUZpeGVkOwogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlcigpLT5hYnNvbHV0ZUFuY2hvclJlY3RXaXRoU2Nyb2xs
TWFyZ2luKCZpbnNpZGVGaXhlZCk7Ci0gICAgaWYgKGNlbnRlcklmTm90VmlzaWJsZSkKLSAgICAg
ICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRl
Rml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduQ2VudGVySWZOb3RWaXNpYmxlLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RW
aXNpYmxlLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMs
IGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25t
ZW50OjphbGlnblRvRWRnZUlmTm90VmlzaWJsZSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTm90VmlzaWJsZSwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7Cisg
ICAgYXV0byBhbGlnbiA9IGNlbnRlcklmTm90VmlzaWJsZSA/IFNjcm9sbEFsaWdubWVudDo6YWxp
Z25DZW50ZXJJZk5vdFZpc2libGUgOiBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOb3RW
aXNpYmxlOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5k
cywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVh
bCwgYWxpZ24sIGFsaWduLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsK
IH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlv
bnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCmluZGV4IGFkYWI5
ZDFhOGNjN2MwOWRjZjlkNjc4NjhlM2ZlMDg5NzIzNGRiZmYuLjdjMTRhNzM4MDUyMjdmNjNhOTNh
M2JlNjBjODU4ZDU2MjcyMGI5NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCkBAIC0yNDU3LDI0ICsyNDU3LDI0IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnJl
dmVhbFNlbGVjdGlvbihTZWxlY3Rpb25SZXZlYWxNb2RlIHJldmVhbE1vZGUsIGNvbnN0IFNjcm9s
CiAKICAgICBQb3NpdGlvbiBzdGFydCA9IG1fc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgQVNTRVJU
KHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCkpOwotICAgIGlmIChzdGFydC5kZXByZWNhdGVkTm9kZSgp
ICYmIHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoIXN0YXJ0
LmRlcHJlY2F0ZWROb2RlKCkgfHwgIXN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkp
CisgICAgICAgIHJldHVybjsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlm
IChSZW5kZXJMYXllciogbGF5ZXIgPSBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigp
LT5lbmNsb3NpbmdMYXllcigpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc2Nyb2xsaW5nU3VwcHJl
c3NDb3VudCkgewotICAgICAgICAgICAgICAgIGxheWVyLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJl
Y3QsIGluc2lkZUZpeGVkLCB7IHJldmVhbE1vZGUsIGFsaWdubWVudCwgYWxpZ25tZW50LCBTaG91
bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMsIHNjcm9sbEJlaGF2aW9yfSk7Ci0gICAg
ICAgICAgICAgICAgdXBkYXRlQXBwZWFyYW5jZSgpOwotICAgICAgICAgICAgICAgIGlmIChtX2Rv
Y3VtZW50LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCkubm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb25CeVNjcm9sbGluZ0ZyYW1l
KCptX2RvY3VtZW50LT5mcmFtZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2Vsc2UK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgY29kZSBvbmx5IGhhbmRsZXMgc2Nyb2xsaW5nIHRoZSBz
dGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKLSAgICAgICAgLy8gdGhlIHNlbGVjdGlvbiByZWN0
IGNvdWxkIGludGVyc2VjdCBtb3JlIHRoYW4ganVzdCB0aGF0LgotICAgICAgICAvLyBTZWUgPHJk
YXI6Ly9wcm9ibGVtLzQ3OTk4OTk+LgotICAgICAgICBpZiAoc3RhcnQuZGVwcmVjYXRlZE5vZGUo
KS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyBy
ZXZlYWxNb2RlLCBhbGlnbm1lbnQsIGFsaWdubWVudCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6WWVzLCBzY3JvbGxCZWhhdmlvcn0pKQotICAgICAgICAgICAgdXBkYXRlQXBwZWFy
YW5jZSgpOworICAgIGlmIChtX3Njcm9sbGluZ1N1cHByZXNzQ291bnQpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZgorCisgICAgLy8gRklYTUU6IFRoaXMgY29kZSBvbmx5IGhhbmRsZXMgc2Nyb2xs
aW5nIHRoZSBzdGFydENvbnRhaW5lcidzIGxheWVyLCBidXQKKyAgICAvLyB0aGUgc2VsZWN0aW9u
IHJlY3QgY291bGQgaW50ZXJzZWN0IG1vcmUgdGhhbiBqdXN0IHRoYXQuCisgICAgLy8gU2VlIDxy
ZGFyOi8vcHJvYmxlbS80Nzk5ODk5Pi4KKyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2li
bGUocmVjdCwgKnN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCksIGluc2lkZUZpeGVk
LCB7IHJldmVhbE1vZGUsIGFsaWdubWVudCwgYWxpZ25tZW50LCBTaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nOjpZZXMsIHNjcm9sbEJlaGF2aW9yIH0pOworICAgIHVwZGF0ZUFwcGVhcmFu
Y2UoKTsKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgaWYgKG1fZG9jdW1lbnQtPnBh
Z2UoKSkKKyAgICAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5ub3Rp
ZnlSZXZlYWxlZFNlbGVjdGlvbkJ5U2Nyb2xsaW5nRnJhbWUoKm1fZG9jdW1lbnQtPmZyYW1lKCkp
OwogI2VuZGlmCi0gICAgfQogfQogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25G
cm9tTm9uZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMTZiMWUyMjk0ZjQ2N2Vh
M2YwZjA3NjcyNGJkMGMwODcwNDhmZWVlNi4uMTVjZjdjNjk0OGIxNWVkNzE2MzQwMzIzYWZkMzdh
ODg2ZjkzMDUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMTAxLDYgKzEwMSw3
IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50VHlwZUhl
bHBlcnMuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlz
YWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIK
QEAgLTI0NDEsNyArMjQ0MiwxNDYgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFRvRm9jdXNlZEVs
ZW1lbnRJbnRlcm5hbCgpCiAKICAgICBib29sIGluc2lkZUZpeGVkOwogICAgIExheW91dFJlY3Qg
YWJzb2x1dGVCb3VuZHMgPSByZW5kZXJlci0+YWJzb2x1dGVBbmNob3JSZWN0KCZpbnNpZGVGaXhl
ZCk7Ci0gICAgcmVuZGVyZXItPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGlu
c2lkZUZpeGVkLCB7IG1fc2VsZWN0aW9uUmV2ZWFsTW9kZUZvckZvY3VzZWRFbGVtZW50LCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25D
ZW50ZXJJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7Cisg
ICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCAqcmVuZGVy
ZXIsIGluc2lkZUZpeGVkLCB7IG1fc2VsZWN0aW9uUmV2ZWFsTW9kZUZvckZvY3VzZWRFbGVtZW50
LCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6
YWxpZ25DZW50ZXJJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8g
fSk7Cit9CisKK2Jvb2wgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91
dFJlY3QmIGFic29sdXRlUmVjdCwgY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgYm9vbCBp
bnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmIG9wdGlvbnMpCit7
CisgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpEb05v
dFJldmVhbCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgUmVuZGVyTGF5ZXIqIGxheWVy
ID0gcmVuZGVyZXIuZW5jbG9zaW5nTGF5ZXIoKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byB1c2UgUmVu
ZGVyTGF5ZXI6OmVuY2xvc2luZ1Njcm9sbGFibGVMYXllciBoZXJlLCBidXQgdGhhdCBzZWVtcyB0
byBza2lwIG92ZXJmbG93OmhpZGRlbiBsYXllcnMuCisgICAgTGF5b3V0UmVjdCBhZGp1c3RlZFJl
Y3QgPSBhYnNvbHV0ZVJlY3Q7CisgICAgZm9yICg7IGxheWVyOyBsYXllciA9IGxheWVyLT5lbmNs
b3NpbmdDb250YWluaW5nQmxvY2tMYXllcihDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8pKSB7Cisg
ICAgICAgIGlmIChsYXllci0+c2hvdWxkVHJ5VG9TY3JvbGxGb3JTY3JvbGxJbnRvVmlldygpKQor
ICAgICAgICAgICAgYWRqdXN0ZWRSZWN0ID0gbGF5ZXItPmVuc3VyZUxheWVyU2Nyb2xsYWJsZUFy
ZWEoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhZGp1c3RlZFJlY3QsIG9wdGlvbnMpOworICAgIH0K
KworICAgIGF1dG8mIGZyYW1lVmlldyA9IHJlbmRlcmVyLnZpZXcoKS5mcmFtZVZpZXcoKTsKKyAg
ICBjb25zdCBhdXRvKiBvd25lckVsZW1lbnQgPSBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgp
ID8gZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkgOiBudWxscHRy
OworICAgIGlmIChvd25lckVsZW1lbnQgJiYgb3duZXJFbGVtZW50LT5yZW5kZXJlcigpKQorICAg
ICAgICBmcmFtZVZpZXcuc2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KGFkanVzdGVkUmVj
dCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMsIG93bmVyRWxlbWVudCk7CisgICAgZWxzZQorICAgICAg
ICBmcmFtZVZpZXcuc2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KGFkanVzdGVkUmVj
dCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMg
U2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0Zv
ckVsZW1lbnQoY29uc3QgRnJhbWVWaWV3JiBmcmFtZVZpZXcsIEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJiBvcHRpb25zKQoreworICAgIGF1dG8gc2Ny
b2xsUG9zaXRpb25PcHRpb25zID0gU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zOjpjcmVhdGVQ
cm9ncmFtbWF0aWMoKTsKKyAgICBpZiAoIWZyYW1lVmlldy5mcmFtZSgpLmV2ZW50SGFuZGxlcigp
LmF1dG9zY3JvbGxJblByb2dyZXNzKCkgJiYgZWxlbWVudCAmJiB1c2VTbW9vdGhTY3JvbGxpbmco
b3B0aW9ucy5iZWhhdmlvciwgZWxlbWVudCkpCisgICAgICAgIHNjcm9sbFBvc2l0aW9uT3B0aW9u
cy5hbmltYXRlZCA9IFNjcm9sbElzQW5pbWF0ZWQ6OlllczsKKyAgICByZXR1cm4gc2Nyb2xsUG9z
aXRpb25PcHRpb25zOworfTsKKwordm9pZCBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGVJ
bkNoaWxkVmlldyhjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWRlRml4
ZWQsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKK3sKKyAgICBjb25zdCBIVE1MRnJhbWVF
bGVtZW50QmFzZSogZnJhbWVFbGVtZW50QmFzZSA9IG51bGxwdHI7CisgICAgaWYgKGlzPEhUTUxG
cmFtZUVsZW1lbnRCYXNlPigqb3duZXJFbGVtZW50KSkKKyAgICAgICAgZnJhbWVFbGVtZW50QmFz
ZSA9IGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnRCYXNlPihvd25lckVsZW1lbnQpOworCisgICAg
Ly8gSWYgc2Nyb2xsYmFycyBhcmVuJ3QgZXhwbGljaXRseSBmb3JiaWRkZW4sIHBlcm1pdCBzY3Jv
bGxpbmcuCisgICAgaWYgKGZyYW1lRWxlbWVudEJhc2UgJiYgZnJhbWVFbGVtZW50QmFzZS0+c2Ny
b2xsaW5nTW9kZSgpID09IFNjcm9sbGJhck1vZGU6OkFsd2F5c09mZikgeworICAgICAgICAvLyBJ
ZiBzY3JvbGxiYXJzIGFyZSBmb3JiaWRkZW4sIHVzZXIgaW5pdGlhdGVkIHNjcm9sbHMgc2hvdWxk
IG9idmlvdXNseSBiZSBpZ25vcmVkLgorICAgICAgICBpZiAod2FzU2Nyb2xsZWRCeVVzZXIoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gRm9yYmlkIGF1dG9zY3JvbGxzIHdoZW4g
c2Nyb2xsYmFycyBhcmUgb2ZmLCBidXQgcGVybWl0cyBvdGhlciBwcm9ncmFtbWF0aWMgc2Nyb2xs
cywgbGlrZSBuYXZpZ2F0aW9uIHRvIGFuIGFuY2hvci4KKyAgICAgICAgaWYgKGZyYW1lKCkuZXZl
bnRIYW5kbGVyKCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAob3B0aW9ucy5zaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
ICE9IFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyAmJiAhc2FmZVRvUHJvcGFn
YXRlU2Nyb2xsVG9QYXJlbnQoKSkgCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoaXMg
YXNzZXJ0aW9uIGZpcmVzIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgb3duZXJFbGVtZW50IGZyb20g
YmVpbmcgZGVzdHJveWVkLgorICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFk
IHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAgICBhdXRvIHZpZXdSZWN0ID0gdmlzaWJsZUNvbnRl
bnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKKwor
ICAgIC8vIHNjcm9sbC1wYWRkaW5nIGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250YWluZXIsIGJ1
dCBleHBhbmQgdGhlIHJlY3RhbmdsZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGluIG9yZGVyCisg
ICAgLy8gc2ltdWxhdGUgcGFkZGluZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhpcyByZWN0YW5n
bGUgaXMgcGFzc2VkIHVwIHRoZSB0cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0bworICAgIC8v
IGVuc3VyZSB0aGF0IHRoZSBwYWRkaW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBtYWlu
dGFpbmVkLgorICAgIGF1dG8gdGFyZ2V0UmVjdCA9IGFic29sdXRlUmVjdDsKKyAgICBhdXRvKiBl
bGVtZW50ID0gb3duZXJFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKSA/IG93bmVyRWxlbWVudC0+
Y29udGVudERvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpIDogbnVsbHB0cjsKKyAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSBlbGVtZW50ID8gZWxlbWVudC0+cmVuZGVyQm94KCkgOiBudWxscHRy
KQorICAgICAgICB0YXJnZXRSZWN0LmV4cGFuZChyZW5kZXJlci0+c2Nyb2xsUGFkZGluZ0ZvclZp
ZXdwb3J0UmVjdCh2aWV3UmVjdCkpOworCisgICAgYXV0byByZXZlYWxSZWN0ID0gZ2V0UG9zc2li
bHlGaXhlZFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgdGFyZ2V0UmVjdCwgaW5zaWRlRml4ZWQsIG9w
dGlvbnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7CisgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRp
b24ocm91bmRlZEludFBvaW50KHJldmVhbFJlY3QubG9jYXRpb24oKSkpOworCisgICAgLy8gQWRq
dXN0IG9mZnNldHMgaWYgdGhleSdyZSBvdXRzaWRlIG9mIHRoZSBhbGxvd2FibGUgcmFuZ2UuCisg
ICAgc2Nyb2xsUG9zaXRpb24gPSBzY3JvbGxQb3NpdGlvbi5jb25zdHJhaW5lZEJldHdlZW4oSW50
UG9pbnQoKSwgSW50UG9pbnQoY29udGVudHNTaXplKCkpKTsKKworICAgIC8vIEZJWE1FOiBTaG91
bGQgd2UgdXNlIGNvbnRlbnREb2N1bWVudCgpLT5zY3JvbGxpbmdFbGVtZW50KCk/CisgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwNTkKKyAgICBz
ZXRTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRp
b25zRm9yRWxlbWVudCgqdGhpcywgZWxlbWVudCwgb3B0aW9ucykpOworCisgICAgLy8gRklYTUU6
IGlkZWFsbHkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyA8aWZyYW1lPiBpcyBpbnNpZGUgcG9z
aXRpb246Zml4ZWQuCisgICAgaWYgKGF1dG8qIG93bmVyUmVuZGVyZXIgPSBvd25lckVsZW1lbnQt
PnJlbmRlcmVyKCkpCisgICAgICAgIHNjcm9sbFJlY3RUb1Zpc2libGUoY29udGVudHNUb0NvbnRh
aW5pbmdWaWV3Q29udGVudHMoZW5jbG9zaW5nSW50UmVjdCh0YXJnZXRSZWN0KSksICpvd25lclJl
bmRlcmVyLCBmYWxzZSAvKiBpbnNpZGVGaXhlZCAqLywgb3B0aW9ucyk7Cit9CisKK3ZvaWQgRnJh
bWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlSW5Ub3BMZXZlbFZpZXcoY29uc3QgTGF5b3V0UmVj
dCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxSZWN0VG9WaXNp
YmxlT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2RlID09IFNl
bGVjdGlvblJldmVhbE1vZGU6OlJldmVhbFVwVG9NYWluRnJhbWUgJiYgZnJhbWUoKS5pc01haW5G
cmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdl
KCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAob3B0aW9ucy5y
ZXZlYWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OkRlbGVnYXRlTWFpbkZyYW1lU2Nyb2xs
ICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkgeworICAgICAgICBwYWdlLT5jaHJvbWUoKS5zY3Jv
bGxNYWluRnJhbWVUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVSZWN0KSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1pblNjcm9sbFBvc2l0aW9uID0gbWlu
aW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgYXV0byBtYXhTY3JvbGxQb3NpdGlvbiA9IG1heGlt
dW1TY3JvbGxQb3NpdGlvbigpOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0
byB2aWV3UmVjdCA9IHZpc2libGVDb250ZW50UmVjdCgpOworI2Vsc2UKKyAgICAvLyBGSVhNRTog
Q29udGVudEluc2V0cyBzaG91bGQgYmUgdGFrZW4gY2FyZSBvZiBpbiBVSSBwcm9jZXNzIHNpZGUu
IHdlYmtpdC5vcmcvYi8xOTk2ODIKKyAgICAvLyBUbyBkbyB0aGF0LCBnZXRSZWN0VG9FeHBvc2VG
b3JTY3JvbGxJbnRvVmlldyBuZWVkcyB0byByZXR1cm4gdGhlIGFkZGl0aW9uYWwgc2Nyb2xsaW5n
IHRvIGRvIGJleW9uZCBjb250ZW50IHJlY3QuCisgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCA9IHZp
ZXdSZWN0RXhwYW5kZWRCeUNvbnRlbnRJbnNldHMoKTsKKworICAgIC8vIEZJWE1FOiB3ZWJraXQu
b3JnL2IvMTk5NjgzIEZyYW1lVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0IGlzIHdyb25nIHdoZW4g
Y29udGVudCBpbnNldHMgYXJlIHByZXNlbnQKKyAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IHNjcm9s
bFBvc2l0aW9uRnJvbU9mZnNldChTY3JvbGxQb3NpdGlvbih0b3RhbENvbnRlbnRzU2l6ZSgpIC0g
Zmxvb3JlZEludFNpemUodmlld1JlY3Quc2l6ZSgpKSkpOworCisgICAgYXV0byBjb250ZW50SW5z
ZXRzID0gcGFnZS0+Y29udGVudEluc2V0cygpOworICAgIG1pblNjcm9sbFBvc2l0aW9uLm1vdmUo
LWNvbnRlbnRJbnNldHMubGVmdCgpLCAtY29udGVudEluc2V0cy50b3AoKSk7CisgICAgbWF4U2Ny
b2xsUG9zaXRpb24ubW92ZShjb250ZW50SW5zZXRzLnJpZ2h0KCksIGNvbnRlbnRJbnNldHMuYm90
dG9tKCkpOworI2VuZGlmCisgICAgLy8gTW92ZSB0aGUgdGFyZ2V0IHJlY3QgaW50byAic2Nyb2xs
VmlldyBjb250ZW50cyIgY29vcmRpbmF0ZXMuCisgICAgYXV0byB0YXJnZXRSZWN0ID0gYWJzb2x1
dGVSZWN0OworICAgIHRhcmdldFJlY3QubW92ZSgwLCBoZWFkZXJIZWlnaHQoKSk7CisKKyAgICAv
LyBzY3JvbGwtcGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhw
YW5kIHRoZSByZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgorICAgIC8v
IHNpbXVsYXRlIHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlz
IHBhc3NlZCB1cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1
cmUgdGhhdCB0aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5l
ZC4KKyAgICBhdXRvKiBlbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWUoKS5kb2N1
bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJlbmRl
ckJveCA9IGVsZW1lbnQgPyBlbGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHIpCisgICAgICAg
IHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVj
dCh2aWV3UmVjdCkpOworCisgICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UG9zc2libHlG
aXhlZFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgdGFyZ2V0UmVjdCwgaW5zaWRlRml4ZWQsIG9wdGlv
bnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7CisKKyAgICAvLyBBdm9pZCBzY3JvbGxpbmcgdG8g
dGhlIHJvdW5kZWQgdmFsdWUgb2YgcmV2ZWFsUmVjdC5sb2NhdGlvbigpIGlmIHdlIGRvbid0IGFj
dHVhbGx5IG5lZWQgdG8gc2Nyb2xsCisgICAgaWYgKHJldmVhbFJlY3QgIT0gdmlld1JlY3QpIHsK
KyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2UgZG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxl
bWVudCgpPworICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwNTA1OQorICAgICAgICBTY3JvbGxPZmZzZXQgY2xhbXBlZFNjcm9sbFBvc2l0aW9u
ID0gcm91bmRlZEludFBvaW50KHJldmVhbFJlY3QubG9jYXRpb24oKSkuY29uc3RyYWluZWRCZXR3
ZWVuKG1pblNjcm9sbFBvc2l0aW9uLCBtYXhTY3JvbGxQb3NpdGlvbik7CisgICAgICAgIHNldFNj
cm9sbFBvc2l0aW9uKGNsYW1wZWRTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb25DaGFuZ2VP
cHRpb25zRm9yRWxlbWVudCgqdGhpcywgZWxlbWVudCwgb3B0aW9ucykpOworICAgIH0KKworICAg
IC8vIFRoaXMgaXMgdGhlIG91dGVybW9zdCB2aWV3IG9mIGEgd2ViIHBhZ2UsIHNvIGFmdGVyIHNj
cm9sbGluZyB0aGlzIHZpZXcgd2UKKyAgICAvLyBzY3JvbGwgaXRzIGNvbnRhaW5lciBieSBjYWxs
aW5nIFBhZ2U6OnNjcm9sbE1haW5GcmFtZVRvUmV2ZWFsUmVjdC4KKyAgICAvLyBUaGlzIG9ubHkg
aGFzIGFuIGVmZmVjdCBvbiB0aGUgTWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucworICAgIC8v
IHRoYXQgcHV0IHdlYiB2aWV3cyBpbnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1h
YyBPUyBYIE1haWwuCisgICAgLy8gVGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRI
YW5kbGVyIGFsc28ga25vd3MgYWJvdXQgdGhpcy4KKyAgICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxD
b250YWluaW5nU2Nyb2xsVmlld3NUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVS
ZWN0KSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojpjb250ZW50c1Jlc2l6ZWQoKQpAQCAtMzI4NCwx
MSArMzQyNCwxMSBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoKQogICAgIC8vIFNj
cm9sbCBuZXN0ZWQgbGF5ZXJzIGFuZCBmcmFtZXMgdG8gcmV2ZWFsIHRoZSBhbmNob3IuCiAgICAg
Ly8gQWxpZ24gdG8gdGhlIHRvcCBhbmQgdG8gdGhlIGNsb3Nlc3Qgc2lkZSAodGhpcyBtYXRjaGVz
IG90aGVyIGJyb3dzZXJzKS4KICAgICBpZiAoYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUo
KS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICBhbmNob3JOb2RlLT5yZW5kZXJl
cigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJl
dmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9wQWx3YXlzLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Ny
b2xsaW5nOjpObyB9KTsKKyAgICAgICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCAqYW5jaG9y
Tm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2
ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25Ub3BBbHdheXMsIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0p
OwogICAgIGVsc2UgaWYgKGFuY2hvck5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVk
QmxvY2tzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Ny
b2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25SaWdodEFsd2F5cywgU2Nyb2xsQWxpZ25t
ZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
OjpObyB9KTsKKyAgICAgICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCAqYW5jaG9yTm9kZS0+
cmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduUmlnaHRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CiAg
ICAgZWxzZQotICAgICAgICBhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNp
YmxlKHJlY3QsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Ny
b2xsQWxpZ25tZW50OjphbGlnbkxlZnRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0Vk
Z2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CisgICAg
ICAgIHNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgKmFuY2hvck5vZGUtPnJlbmRlcmVyKCksIGlu
c2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50
OjphbGlnbkxlZnRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwg
U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CiAKICAgICBpZiAoQVhPYmpl
Y3RDYWNoZSogY2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpKQogICAgICAgICBjYWNoZS0+aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihhbmNob3JOb2RlLmdl
dCgpKTsKQEAgLTU3NzMsNiArNTkxMyw0NCBAQCBPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3
Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAogICAgICAgICByZXR1cm4gc2Ny
b2xsaW5nT2JqZWN0LT5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKICAgICByZXR1cm4g
T3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOwogfQorCitMYXlvdXRSZWN0IEZyYW1lVmlldzo6Z2V0
UG9zc2libHlGaXhlZFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwg
Y29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Ny
b2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25z
dAoreworICAgIGlmICghaW5zaWRlRml4ZWQpCisgICAgICAgIHJldHVybiBnZXRSZWN0VG9FeHBv
c2VGb3JTY3JvbGxJbnRvVmlldyh2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdCwgYWxpZ25YLCBhbGln
blkpOworCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkIGFu
ZCB3ZSdyZSBub3Qgc2NhbGVkLCBubyBhbW91bnQgb2Ygc2Nyb2xsaW5nIGlzIGdvaW5nIHRvIG1v
dmUgdGhpbmdzIGFyb3VuZC4KKyAgICBpZiAoZnJhbWVTY2FsZUZhY3RvcigpID09IDEpCisgICAg
ICAgIHJldHVybiB2aXNpYmxlUmVjdDsKKworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBy
ZXR1cm4gdmlzaWJsZVJlY3QgYXMgd2VsbD8KKyAgICBpZiAoIWZyYW1lKCkuc2V0dGluZ3MoKS52
aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGdldFJlY3RUb0V4cG9zZUZv
clNjcm9sbEludG9WaWV3KHZpc2libGVSZWN0LCBleHBvc2VSZWN0LCBhbGlnblgsIGFsaWduWSk7
CisKKyAgICAvLyBleHBvc2VSZWN0IGlzIGluIGFic29sdXRlIGNvb3JkcywgYWZmZWN0ZWQgYnkg
cGFnZSBzY2FsZS4gVW5zY2FsZSBpdC4KKyAgICBhdXRvIHVuc2NhbGVkRXhwb3NlUmVjdCA9IGV4
cG9zZVJlY3Q7CisgICAgdW5zY2FsZWRFeHBvc2VSZWN0LnNjYWxlKDEgLyBmcmFtZVNjYWxlRmFj
dG9yKCkpOworICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5tb3ZlKDAsIC1oZWFkZXJIZWlnaHQoKSk7
CisKKyAgICAvLyBUaGVzZSBhcmUgYm90aCBpbiB1bnNjYWxlZCBjb29yZGluYXRlcy4KKyAgICBh
dXRvIGxheW91dFZpZXdwb3J0ID0gbGF5b3V0Vmlld3BvcnRSZWN0KCk7CisgICAgYXV0byB2aXN1
YWxWaWV3cG9ydCA9IHZpc3VhbFZpZXdwb3J0UmVjdCgpOworCisgICAgLy8gVGhlIHJlY3QgdG8g
ZXhwb3NlIG1heSBiZSBwYXJ0aWFsbHkgb2Zmc2NyZWVuLCB3aGljaCB3ZSBjYW4ndCBkbyBhbnl0
aGluZyBhYm91dCB3aXRoIHBvc2l0aW9uOmZpeGVkLgorICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5p
bnRlcnNlY3QobGF5b3V0Vmlld3BvcnQpOworCisgICAgLy8gTWFrZSBzdXJlIGl0J3Mgbm90IGxh
cmdlciB0aGFuIHRoZSB2aXN1YWwgdmlld3BvcnQ7IGlmIHNvLCB3ZSdsbCBqdXN0IG1vdmUgdG8g
dGhlIHRvcCBsZWZ0LgorICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5zZXRTaXplKHVuc2NhbGVkRXhw
b3NlUmVjdC5zaXplKCkuc2hydW5rVG8odmlzdWFsVmlld3BvcnQuc2l6ZSgpKSk7CisKKyAgICAv
LyBDb21wdXRlIGhvdyBtdWNoIHdlIGhhdmUgdG8gbW92ZSB0aGUgdmlzdWFsVmlld3BvcnQgdG8g
cmV2ZWFsIHRoZSBwYXJ0IG9mIHRoZSBsYXlvdXRWaWV3cG9ydCB0aGF0IGNvbnRhaW5zIGV4cG9z
ZVJlY3QuCisgICAgYXV0byByZXF1aXJlZFZpc3VhbFZpZXdwb3J0ID0gZ2V0UmVjdFRvRXhwb3Nl
Rm9yU2Nyb2xsSW50b1ZpZXcodmlzdWFsVmlld3BvcnQsIHVuc2NhbGVkRXhwb3NlUmVjdCwgYWxp
Z25YLCBhbGlnblkpOworCisgICAgLy8gU2NhbGUgaXQgYmFjayB1cC4KKyAgICByZXF1aXJlZFZp
c3VhbFZpZXdwb3J0LnNjYWxlKGZyYW1lU2NhbGVGYWN0b3IoKSk7CisgICAgcmVxdWlyZWRWaXN1
YWxWaWV3cG9ydC5tb3ZlKDAsIGhlYWRlckhlaWdodCgpKTsKKyAgICByZXR1cm4gcmVxdWlyZWRW
aXN1YWxWaWV3cG9ydDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjdW5kZWYgUEFH
RV9JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNjAyZDYwYzljOTcwNTVmNjQ4Y2E0OGZm
ZmJmOWM0MmI1YzE2ZjkzMy4uZDUwOGU2MDJkMjQ4NmZjZjdiZDZjMzZhNzU2ZGM1MDBiMTYzNjIx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yNTQsNiArMjU0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2Nyb2xsVG9Gb2N1c2VkRWxlbWVudEltbWVkaWF0ZWx5SWZOZWVkZWQoKTsKICAg
ICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSBmaW5hbDsKICAgICB2
b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBmaW5hbDsKKyAgICBz
dGF0aWMgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91
dFJlY3QmIGFic29sdXRlUmVjdCwgY29uc3QgUmVuZGVyT2JqZWN0JiwgYm9vbCBpbnNpZGVGaXhl
ZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKTsKIAogICAgIGJvb2wgcmVxdWVz
dFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9
IFNjcm9sbFR5cGU6OlVzZXIsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1w
ZWQpIGZpbmFsOwogICAgIGJvb2wgcmVxdWVzdEFuaW1hdGVkU2Nyb2xsVG9Qb3NpdGlvbihjb25z
dCBTY3JvbGxQb3NpdGlvbiYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1w
ZWQpIGZpbmFsOwpAQCAtODgzLDYgKzg4NCwxMCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIE1v
bm90b25pY1RpbWUgc0N1cnJlbnRQYWludFRpbWVTdGFtcDsgLy8gdXNlZCBmb3IgZGV0ZWN0aW5n
IGRlY29kZWQgcmVzb3VyY2UgdGhyYXNoIGluIHRoZSBjYWNoZQogCisgICAgdm9pZCBzY3JvbGxS
ZWN0VG9WaXNpYmxlSW5DaGlsZFZpZXcoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBi
b29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYsIGNvbnN0
IEhUTUxGcmFtZU93bmVyRWxlbWVudCopOworICAgIHZvaWQgc2Nyb2xsUmVjdFRvVmlzaWJsZUlu
VG9wTGV2ZWxWaWV3KGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZGVG
aXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKTsKKyAgICBMYXlvdXRSZWN0
IGdldFBvc3NpYmx5Rml4ZWRSZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZVJl
Y3QsIGNvbnN0IExheW91dFJlY3QmIGV4cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0
IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkg
Y29uc3Q7CisKICAgICBjb25zdCBSZWY8RnJhbWU+IG1fZnJhbWU7CiAgICAgRnJhbWVWaWV3TGF5
b3V0Q29udGV4dCBtX2xheW91dENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbGlnbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMzVmY2ZkZTYwNTdjNWU5Y2M3MDhlNDk0
YzUxNzViMjY4Y2I2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbGlnbm1lbnQuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVu
aWNhdGlvbnMgQ29ycG9yYXRpb24uCisgKgorICogT3RoZXIgY29udHJpYnV0b3JzOgorICogICBS
b2JlcnQgTydDYWxsYWhhbiA8cm9jK0Bjcy5jbXUuZWR1PgorICogICBEYXZpZCBCYXJvbiA8ZGJh
cm9uQGZhcy5oYXJ2YXJkLmVkdT4KKyAqICAgQ2hyaXN0aWFuIEJpZXNpbmdlciA8Y2JpZXNpbmdl
ckB3ZWIuZGU+CisgKiAgIFJhbmRhbGwgSmVzdXAgPHJqZXN1cEB3Z2F0ZS5jb20+CisgKiAgIFJv
bGFuZCBNYWlueiA8cm9sYW5kLm1haW56QGluZm9ybWF0aWsubWVkLnVuaS1naWVzc2VuLmRlPgor
ICogICBKb3NoIFNvcmVmIDx0aW1lbGVzc0BtYWMuY29tPgorICogICBCb3JpcyBaYmFyc2t5IDxi
emJhcnNreUBtaXQuZWR1PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
LjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICogQWx0ZXJuYXRpdmVseSwg
dGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyAq
IG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQg
YXQKKyAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05V
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8v
d3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKKyAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBj
YXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKKyAqIGFwcGxpY2Fi
bGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5
b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUg
b2YgdGhvc2UgdHdvCisgKiBsaWNlbnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRv
IGFsbG93IG90aGVycyB0byB1c2UgeW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIg
dGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKKyAqIGRlbGV0aW5ndGhlIHByb3Zp
c2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kCisgKiBvdGhl
ciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2Ug
bWF5IGJlLgorICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEg
cmVjaXBpZW50IG1heSB1c2UgeW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55
IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNjcm9sbEFsaWdubWVudC5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklm
Tm90VmlzaWJsZSA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIs
IEJlaGF2aW9yOjpOb1Njcm9sbCB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5vdFZpc2libGUgPSB7IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVo
YXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSwgQmVoYXZpb3I6Ok5vU2Nyb2xsIH07Citjb25zdCBT
Y3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkID0geyBC
ZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6OkFsaWdu
VG9DbG9zZXN0RWRnZSB9OworV0VCQ09SRV9FWFBPUlQgY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xs
LCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RF
ZGdlIH07CitXRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25t
ZW50OjphbGlnbkNlbnRlckFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduQ2VudGVyLCBCZWhhdmlv
cjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciB9OworY29uc3QgU2Nyb2xsQWxp
Z25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMgPSB7IEJlaGF2aW9yOjpBbGln
blRvcCwgQmVoYXZpb3I6OkFsaWduVG9wLCBCZWhhdmlvcjo6QWxpZ25Ub3AgfTsKK2NvbnN0IFNj
cm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduUmlnaHRBbHdheXMgPSB7IEJlaGF2
aW9yOjpBbGlnblJpZ2h0LCBCZWhhdmlvcjo6QWxpZ25SaWdodCwgQmVoYXZpb3I6OkFsaWduUmln
aHQgfTsKK2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduTGVmdEFs
d2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduTGVmdCwgQmVoYXZpb3I6OkFsaWduTGVmdCwgQmVoYXZp
b3I6OkFsaWduTGVmdCB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6
YWxpZ25Cb3R0b21BbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnbkJvdHRvbSwgQmVoYXZpb3I6OkFs
aWduQm90dG9tLCBCZWhhdmlvcjo6QWxpZ25Cb3R0b20gfTsKKyAgICAKK1RleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3IgYikKK3sK
KyAgICBzd2l0Y2ggKGIpIHsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5v
U2Nyb2xsOgorICAgICAgICByZXR1cm4gdHMgPDwgIk5vU2Nyb2xsIjsKKyAgICBjYXNlIFNjcm9s
bEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyOgorICAgICAgICByZXR1cm4gdHMgPDwg
IkFsaWduQ2VudGVyIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWdu
VG9wOgorICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduVG9wIjsKKyAgICBjYXNlIFNjcm9sbEFs
aWdubWVudDo6QmVoYXZpb3I6OkFsaWduQm90dG9tOgorICAgICAgICByZXR1cm4gdHMgPDwgIkFs
aWduQm90dG9tIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduTGVm
dDoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnbkxlZnQiOworICAgIGNhc2UgU2Nyb2xsQWxp
Z25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodDoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGln
blJpZ2h0IjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9z
ZXN0RWRnZToKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnblRvQ2xvc2VzdEVkZ2UiOworICAg
IH0KKyAgICByZXR1cm4gdHM7Cit9CisgICAgCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIHMpCit7CisgICAgcmV0dXJuIHRzIDw8
ICJTY3JvbGxBbGlnbm1lbnQ6IHZpc2libGU6ICIgPDwgcy5tX3JlY3RWaXNpYmxlIDw8ICIgaGlk
ZGVuOiAiIDw8IHMubV9yZWN0SGlkZGVuIDw8ICIgcGFydGlhbDogIiA8PCBzLm1fcmVjdFBhcnRp
YWw7Cit9CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbEFsaWdubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxYmI2ZWY5ZTIyZTdjNTk1NTg4YWI4YjMx
Mjc5MmEwODUzM2FlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxBbGlnbm1lbnQuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDAzLCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9u
cyBDb3Jwb3JhdGlvbi4KKyAqCisgKiBPdGhlciBjb250cmlidXRvcnM6CisgKiAgIFJvYmVydCBP
J0NhbGxhaGFuIDxyb2MrQGNzLmNtdS5lZHU+CisgKiAgIERhdmlkIEJhcm9uIDxkYmFyb25AZmFz
LmhhcnZhcmQuZWR1PgorICogICBDaHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2luZ2VyQHdlYi5k
ZT4KKyAqICAgUmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRlLmNvbT4KKyAqICAgUm9sYW5kIE1h
aW56IDxyb2xhbmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+CisgKiAgIEpv
c2ggU29yZWYgPHRpbWVsZXNzQG1hYy5jb20+CisgKiAgIEJvcmlzIFpiYXJza3kgPGJ6YmFyc2t5
QG1pdC5lZHU+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC
b3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29u
dGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworICogb2YgZWl0
aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAorICog
aHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNm
Lm9yZy9jb3B5bGVmdC9ncGwuaHRtbAorICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhl
IHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQorICogYXBwbGljYWJsZSBpbnN0
ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKKyAq
IHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9z
ZSB0d28KKyAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cg
b3RoZXJzIHRvIHVzZSB5b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQ
TCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQorICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBh
Ym92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKKyAqIG90aGVyIHByb3Zp
c2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUu
CisgKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGll
bnQgbWF5IHVzZSB5b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhl
IExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNw
YWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFtOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBTY3JvbGxBbGlnbm1lbnQgeworCisgICAgZW51bSBjbGFzcyBCZWhhdmlvciB7Cisg
ICAgICAgIE5vU2Nyb2xsLAorICAgICAgICBBbGlnbkNlbnRlciwKKyAgICAgICAgQWxpZ25Ub3As
CisgICAgICAgIEFsaWduQm90dG9tLAorICAgICAgICBBbGlnbkxlZnQsCisgICAgICAgIEFsaWdu
UmlnaHQsCisgICAgICAgIEFsaWduVG9DbG9zZXN0RWRnZQorICAgIH07CisKKyAgICBCZWhhdmlv
ciBnZXRWaXNpYmxlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3JlY3RWaXNpYmxlOyB9Cisg
ICAgQmVoYXZpb3IgZ2V0UGFydGlhbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0UGFy
dGlhbDsgfQorICAgIEJlaGF2aW9yIGdldEhpZGRlbkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
bV9yZWN0SGlkZGVuOyB9CisgICAgdm9pZCBkaXNhYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxp
dHlUaHJlc2hvbGQoKSB7IG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hv
bGQgPSBmYWxzZTsgfQorICAgIGJvb2wgbGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hv
bGRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJp
bGl0eVRocmVzaG9sZDsgfQorCisgICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGln
bkNlbnRlcklmTm90VmlzaWJsZTsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFs
aWduVG9FZGdlSWZOb3RWaXNpYmxlOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQgYWxpZ25DZW50ZXJJZk5lZWRlZDsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOZWVkZWQ7CisgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlckFsd2F5
czsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9wQWx3YXlzOworICAg
IHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25SaWdodEFsd2F5czsKKyAgICBzdGF0
aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduTGVmdEFsd2F5czsKKyAgICBzdGF0aWMgY29u
c3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduQm90dG9tQWx3YXlzOworCisgICAgQmVoYXZpb3IgbV9y
ZWN0VmlzaWJsZTsKKyAgICBCZWhhdmlvciBtX3JlY3RIaWRkZW47CisgICAgQmVoYXZpb3IgbV9y
ZWN0UGFydGlhbDsKKyAgICBib29sIG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlU
aHJlc2hvbGQgeyB0cnVlIH07Cit9OworICAgIAorV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3IpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4
dFN0cmVhbSYsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYpOworCit9OyAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDll
NjFiZDdlZWRmYzUwNGZjNmM4ZWViMTEyNTgyNjQ1YjYwZDFiY2YuLjY2MzIwYjUwYzk4ZmU4ZTQ1
MjAyYzkzOWU3NzNlMzExZjFiNjQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5jcHAKQEAgLTgwMSw2ICs4MDEsODEgQEAgc3RkOjpvcHRpb25hbDxCb3hTaWRl
PiBTY3JvbGxhYmxlQXJlYTo6dGFyZ2V0U2lkZUZvclNjcm9sbERlbHRhKEZsb2F0U2l6ZSBkZWx0
YSwKICAgICByZXR1cm4geyB9OwogfQogCitMYXlvdXRSZWN0IFNjcm9sbGFibGVBcmVhOjpnZXRS
ZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmlldyhjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVj
dCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBh
bGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAoreworICAgIHN0YXRp
YyBjb25zdCBpbnQgbWluSW50ZXJzZWN0Rm9yUmV2ZWFsID0gMzI7CisKKyAgICAvLyBEZXRlcm1p
bmUgdGhlIGFwcHJvcHJpYXRlIFggYmVoYXZpb3IuCisgICAgU2Nyb2xsQWxpZ25tZW50OjpCZWhh
dmlvciBzY3JvbGxYOworICAgIExheW91dFJlY3QgZXhwb3NlUmVjdFgoZXhwb3NlUmVjdC54KCks
IHZpc2libGVSZWN0LnkoKSwgZXhwb3NlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQo
KSk7CisgICAgTGF5b3V0VW5pdCBpbnRlcnNlY3RXaWR0aCA9IGludGVyc2VjdGlvbih2aXNpYmxl
UmVjdCwgZXhwb3NlUmVjdFgpLndpZHRoKCk7CisgICAgaWYgKGludGVyc2VjdFdpZHRoID09IGV4
cG9zZVJlY3Qud2lkdGgoKSB8fCAoYWxpZ25YLmxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhy
ZXNob2xkRW5hYmxlZCgpICYmIGludGVyc2VjdFdpZHRoID49IG1pbkludGVyc2VjdEZvclJldmVh
bCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBmdWxseSB2aXNpYmxlLCB1c2Ug
dGhlIHNwZWNpZmllZCB2aXNpYmxlIGJlaGF2aW9yLgorICAgICAgICAvLyBJZiB0aGUgcmVjdGFu
Z2xlIGlzIHBhcnRpYWxseSB2aXNpYmxlLCBidXQgb3ZlciBhIGNlcnRhaW4gdGhyZXNob2xkLAor
ICAgICAgICAvLyB0aGVuIHRyZWF0IGl0IGFzIGZ1bGx5IHZpc2libGUgdG8gYXZvaWQgdW5uZWNl
c3NhcnkgaG9yaXpvbnRhbCBzY3JvbGxpbmcKKyAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRW
aXNpYmxlQmVoYXZpb3IoKTsKKyAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID09IHZpc2li
bGVSZWN0LndpZHRoKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4g
dGhlIHZpc2libGUgYXJlYSwgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFs
aWdubWVudHMgd2lsbCB3b3JrLgorICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFZpc2libGVC
ZWhhdmlvcigpOworICAgICAgICBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2
aW9yOjpBbGlnbkNlbnRlcikKKyAgICAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6
OkJlaGF2aW9yOjpOb1Njcm9sbDsKKyAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID4gMCkK
KyAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgYnV0IG5v
dCBhYm92ZSB0aGUgbWluaW11bSB0aHJlc2hvbGQsIHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRpYWwg
YmVoYXZpb3IKKyAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRQYXJ0aWFsQmVoYXZpb3IoKTsK
KyAgICBlbHNlCisgICAgICAgIHNjcm9sbFggPSBhbGlnblguZ2V0SGlkZGVuQmVoYXZpb3IoKTsK
KyAgICAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5k
IHRoZSBleHBvc2VSZWN0IGlzIGZ1cnRoZXIgcmlnaHQKKyAgICAvLyB0aGFuIHRoZSB2aXNpYmxl
UmVjdCwgYW5kIG5vdCBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCB0aGVuIGFsaWduIHdp
dGggdGhlIHJpZ2h0LgorICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3I6OkFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFgoKSA+IHZpc2libGVSZWN0
Lm1heFgoKSAmJiBleHBvc2VSZWN0LndpZHRoKCkgPCB2aXNpYmxlUmVjdC53aWR0aCgpKQorICAg
ICAgICBzY3JvbGxYID0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodDsKKwor
ICAgIC8vIEdpdmVuIHRoZSBYIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBYIGNvb3JkaW5hdGUuCisg
ICAgTGF5b3V0VW5pdCB4OworICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVo
YXZpb3I6Ok5vU2Nyb2xsKQorICAgICAgICB4ID0gdmlzaWJsZVJlY3QueCgpOworICAgIGVsc2Ug
aWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodCkKKyAg
ICAgICAgeCA9IGV4cG9zZVJlY3QubWF4WCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKTsKKyAgICBl
bHNlIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVy
KQorICAgICAgICB4ID0gZXhwb3NlUmVjdC54KCkgKyAoZXhwb3NlUmVjdC53aWR0aCgpIC0gdmlz
aWJsZVJlY3Qud2lkdGgoKSkgLyAyOworICAgIGVsc2UKKyAgICAgICAgeCA9IGV4cG9zZVJlY3Qu
eCgpOworCisgICAgLy8gRGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBZIGJlaGF2aW9yLgorICAg
IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3Igc2Nyb2xsWTsKKyAgICBMYXlvdXRSZWN0IGV4cG9z
ZVJlY3RZKHZpc2libGVSZWN0LngoKSwgZXhwb3NlUmVjdC55KCksIHZpc2libGVSZWN0LndpZHRo
KCksIGV4cG9zZVJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgaW50ZXJzZWN0SGVpZ2h0
ID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0LCBleHBvc2VSZWN0WSkuaGVpZ2h0KCk7CisgICAg
aWYgKGludGVyc2VjdEhlaWdodCA9PSBleHBvc2VSZWN0LmhlaWdodCgpKSB7CisgICAgICAgIC8v
IElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgdmlz
aWJsZSBiZWhhdmlvci4KKyAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxlQmVoYXZp
b3IoKTsKKyAgICB9IGVsc2UgaWYgKGludGVyc2VjdEhlaWdodCA9PSB2aXNpYmxlUmVjdC5oZWln
aHQoKSkgeworICAgICAgICAvLyBJZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUgdmlzaWJs
ZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxpZ25tZW50cyB3
aWxsIHdvcmsuCisgICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0VmlzaWJsZUJlaGF2aW9yKCk7
CisgICAgICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWdu
Q2VudGVyKQorICAgICAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6
Ok5vU2Nyb2xsOworICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0SGVpZ2h0ID4gMCkKKyAgICAgICAg
Ly8gSWYgdGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZp
ZWQgcGFydGlhbCBiZWhhdmlvcgorICAgICAgICBzY3JvbGxZID0gYWxpZ25ZLmdldFBhcnRpYWxC
ZWhhdmlvcigpOworICAgIGVsc2UKKyAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRIaWRkZW5C
ZWhhdmlvcigpOworICAgIC8vIElmIHdlJ3JlIHRyeWluZyB0byBhbGlnbiB0byB0aGUgY2xvc2Vz
dCBlZGdlLCBhbmQgdGhlIGV4cG9zZVJlY3QgaXMgZnVydGhlciBkb3duCisgICAgLy8gdGhhbiB0
aGUgdmlzaWJsZVJlY3QsIGFuZCBub3QgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgdGhl
biBhbGlnbiB3aXRoIHRoZSBib3R0b20uCisgICAgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25t
ZW50OjpCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3QubWF4WSgpID4g
dmlzaWJsZVJlY3QubWF4WSgpICYmIGV4cG9zZVJlY3QuaGVpZ2h0KCkgPCB2aXNpYmxlUmVjdC5o
ZWlnaHQoKSkKKyAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFs
aWduQm90dG9tOworCisgICAgLy8gR2l2ZW4gdGhlIFkgYmVoYXZpb3IsIGNvbXB1dGUgdGhlIFkg
Y29vcmRpbmF0ZS4KKyAgICBMYXlvdXRVbml0IHk7CisgICAgaWYgKHNjcm9sbFkgPT0gU2Nyb2xs
QWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGwpCisgICAgICAgIHkgPSB2aXNpYmxlUmVjdC55
KCk7CisgICAgZWxzZSBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpB
bGlnbkJvdHRvbSkKKyAgICAgICAgeSA9IGV4cG9zZVJlY3QubWF4WSgpIC0gdmlzaWJsZVJlY3Qu
aGVpZ2h0KCk7CisgICAgZWxzZSBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2
aW9yOjpBbGlnbkNlbnRlcikKKyAgICAgICAgeSA9IGV4cG9zZVJlY3QueSgpICsgKGV4cG9zZVJl
Y3QuaGVpZ2h0KCkgLSB2aXNpYmxlUmVjdC5oZWlnaHQoKSkgLyAyOworICAgIGVsc2UKKyAgICAg
ICAgeSA9IGV4cG9zZVJlY3QueSgpOworCisgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9p
bnQoeCwgeSksIHZpc2libGVSZWN0LnNpemUoKSk7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkK
IHsKICAgICB0cyA8PCBzY3JvbGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCAyYmRjMThhMTk4ODAwNGZhZmMy
Mzc1NzJkYWYyOTI3MjkxZWQ4ZGVmLi4wODQxNzQ5MWM0NzI5MjZiYzZmNGQ2N2YyZGViNjI5MDQ4
YWRkMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVjdEVkZ2VzLmgiCisjaW5j
bHVkZSAiU2Nyb2xsQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKQEAg
LTM5OSw2ICs0MDAsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc0xheWVyRm9yU2Nyb2xs
Q29ybmVyKCkgY29uc3Q7CiAKKyAgICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4cG9zZUZvclNjcm9s
bEludG9WaWV3KGNvbnN0IExheW91dFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBMYXlvdXRSZWN0
JiBleHBvc2VSZWN0LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xs
QWxpZ25tZW50JiBhbGlnblkpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVu
dFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25z
dDsKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3NpdGlvbiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggYTAxNDUwNzA3
ODAzOTNjNmIyNjhiYzAxNzk3MWQzZjI2MzFmY2UzYi4uNzY5OTk4NGMzMjNkMmE1YmEyMGY1MzQ1
MTQ4NTY2MDcxZjNjZjNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCkBAIC0xMjEsNyArMTIxLDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNj
cm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC0xNDMsOCArMTQyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi0jZGVmaW5l
IE1JTl9JTlRFUlNFQ1RfRk9SX1JFVkVBTCAzMgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC01NjcsMTYgKzU2NCw2IEBAIHN0YXRpYyBib29s
IGNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dChjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpCiAgICAg
ICAgIHx8IGxheWVyLmVzdGFibGlzaGVzVG9wTGF5ZXIoKTsKIH0KIAotc3RhdGljIHZvaWQgZXhw
YW5kU2Nyb2xsUmVjdFRvVmlzaWJsZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQYWRkaW5nKFJl
bmRlckJveCogcmVuZGVyQm94LCBjb25zdCBMYXlvdXRSZWN0JiB2aWV3UmVjdCwgTGF5b3V0UmVj
dCYgdGFyZ2V0UmVjdCkKLXsKLSAgICBpZiAoIXJlbmRlckJveCkKLSAgICAgICAgcmV0dXJuOwot
ICAgIC8vIHNjcm9sbC1wYWRkaW5nIGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250YWluZXIsIGJ1
dCBleHBhbmQgdGhlIHJlY3RhbmdsZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGluIG9yZGVyCi0g
ICAgLy8gc2ltdWxhdGUgcGFkZGluZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhpcyByZWN0YW5n
bGUgaXMgcGFzc2VkIHVwIHRoZSB0cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0bwotICAgIC8v
IGVuc3VyZSB0aGF0IHRoZSBwYWRkaW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBtYWlu
dGFpbmVkLgotICAgIHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGluZ0Zv
clZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOwotfQotCiBib29sIFJlbmRlckxheWVyOjpzaG91bGRC
ZU5vcm1hbEZsb3dPbmx5KCkgY29uc3QKIHsKICAgICBpZiAoY2FuQ3JlYXRlU3RhY2tpbmdDb250
ZXh0KCp0aGlzKSkKQEAgLTI0MTgsMjIgKzI0MDUsNyBAQCBMYXlvdXRTaXplIFJlbmRlckxheWVy
OjpvZmZzZXRGcm9tQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIENv
bAogICAgIHJldHVybiB0b0xheW91dFNpemUoY29udmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JM
YXllciwgTGF5b3V0UG9pbnQoKSwgYWRqdXN0Rm9yQ29sdW1ucykpOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgZnJhbWVFbGVtZW50QW5kVmlld1Blcm1pdFNjcm9sbChIVE1MRnJhbWVFbGVtZW50
QmFzZSogZnJhbWVFbGVtZW50QmFzZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCi17Ci0gICAgLy8g
SWYgc2Nyb2xsYmFycyBhcmVuJ3QgZXhwbGljaXRseSBmb3JiaWRkZW4sIHBlcm1pdCBzY3JvbGxp
bmcuCi0gICAgaWYgKGZyYW1lRWxlbWVudEJhc2UgJiYgZnJhbWVFbGVtZW50QmFzZS0+c2Nyb2xs
aW5nTW9kZSgpICE9IFNjcm9sbGJhck1vZGU6OkFsd2F5c09mZikKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAvLyBJZiBzY3JvbGxiYXJzIGFyZSBmb3JiaWRkZW4sIHVzZXIgaW5pdGlhdGVk
IHNjcm9sbHMgc2hvdWxkIG9idmlvdXNseSBiZSBpZ25vcmVkLgotICAgIGlmIChmcmFtZVZpZXcu
d2FzU2Nyb2xsZWRCeVVzZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRm9y
YmlkIGF1dG9zY3JvbGxzIHdoZW4gc2Nyb2xsYmFycyBhcmUgb2ZmLCBidXQgcGVybWl0cyBvdGhl
ciBwcm9ncmFtbWF0aWMgc2Nyb2xscywKLSAgICAvLyBsaWtlIG5hdmlnYXRpb24gdG8gYW4gYW5j
aG9yLgotICAgIHJldHVybiAhZnJhbWVWaWV3LmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MoKTsKLX0KLQotYm9vbCBSZW5kZXJMYXllcjo6YWxsb3dzQ3VycmVudFNj
cm9sbCgpIGNvbnN0Citib29sIFJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNjcm9s
bEludG9WaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzTm9uVmlzaWJsZU92
ZXJmbG93KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0NDYsOSArMjQxOCw5IEBAIGJv
b2wgUmVuZGVyTGF5ZXI6OmFsbG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdAogICAgIFJlbmRlckJv
eCogYm94ID0gcmVuZGVyQm94KCk7CiAgICAgQVNTRVJUKGJveCk7IC8vIE9ubHkgYm94ZXMgY2Fu
IGhhdmUgb3ZlcmZsb3dDbGlwIHNldC4KIAorICAgIC8vIFdoZW4gYXV0b3Njcm9sbGluZywgc2tp
cCAib3ZlcmZsb3c6IGhpZGRlbiIuIFRoZSAicHJvZ3JhbW1hdGljYWxseSIgaGVyZSBpcworICAg
IC8vIG1pc2xlYWRpbmc7IHRoaXMgYXNrcyB3aGV0aGVyIHRoZSBib3ggaGFzICJvdmVyZmxvdzog
c2Nyb2xsIiBvciAib3ZlcmZsb3c6IGF1dG8uIgogICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCku
ZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSkgewotICAgICAgICAvLyBUaGUg
InByb2dyYW1tYXRpY2FsbHkiIGhlcmUgaXMgbWlzbGVhZGluZzsgdGhpcyBhc2tzIHdoZXRoZXIg
dGhlIGJveCBoYXMgc2Nyb2xsYWJsZSBvdmVyZmxvdywKLSAgICAgICAgLy8gb3IgaXMgYSBzcGVj
aWFsIGNhc2UgbGlrZSBhIGZvcm0gY29udHJvbC4KICAgICAgICAgcmV0dXJuIGJveC0+Y2FuQmVQ
cm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpOwogICAgIH0KIApAQCAtMjQ1NiwyNDggKzI0MjgsMTAg
QEAgYm9vbCBSZW5kZXJMYXllcjo6YWxsb3dzQ3VycmVudFNjcm9sbCgpIGNvbnN0CiAgICAgcmV0
dXJuIGJveC0+aGFzSG9yaXpvbnRhbE92ZXJmbG93KCkgfHwgYm94LT5oYXNWZXJ0aWNhbE92ZXJm
bG93KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3Qg
TGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxS
ZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Ny
b2xsaW5nLCBzdHJlYW0gPDwgIkxheWVyICIgPDwgdGhpcyA8PCAiIHNjcm9sbFJlY3RUb1Zpc2li
bGUgIiA8PCBhYnNvbHV0ZVJlY3QpOwotCi0gICAgTGF5b3V0UmVjdCBuZXdSZWN0ID0gYWJzb2x1
dGVSZWN0OwotICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJh
bWVWaWV3KCk7Ci0gICAgYXV0byogcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdDb250YWluaW5nQmxv
Y2tMYXllcihDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8pOwotCi0gICAgYXV0byBzY3JvbGxQb3Np
dGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50ID0gW3RoaXMsIG9wdGlvbnNdKEVsZW1lbnQqIGVs
ZW1lbnQpCi0gICAgewotICAgICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9IFNjcm9s
bFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7Ci0gICAgICAgIGlm
ICghcmVuZGVyZXIoKS5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxJblByb2dyZXNz
KCkgJiYgZWxlbWVudCAmJiB1c2VTbW9vdGhTY3JvbGxpbmcob3B0aW9ucy5iZWhhdmlvciwgZWxl
bWVudCkpCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBTY3Jv
bGxJc0FuaW1hdGVkOjpZZXM7Ci0gICAgICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbk9wdGlvbnM7
Ci0gICAgfTsKLQotICAgIGlmIChhbGxvd3NDdXJyZW50U2Nyb2xsKCkpIHsKLSAgICAgICAgYXV0
byogc2Nyb2xsYWJsZUFyZWEgPSBlbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7Ci0KLSAgICAg
ICAgLy8gRG9uJ3Qgc2Nyb2xsIHRvIHJldmVhbCBhbiBvdmVyZmxvdyBsYXllciB0aGF0IGlzIHJl
c3RyaWN0ZWQgYnkgdGhlIC13ZWJraXQtbGluZS1jbGFtcCBwcm9wZXJ0eS4KLSAgICAgICAgLy8g
VGhpcyB3aWxsIHByZXZlbnQgdXMgZnJvbSByZXZlYWxpbmcgdGV4dCBoaWRkZW4gYnkgdGhlIHNs
aWRlciBpbiBTYWZhcmkgUlNTLgotICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgp
OwotICAgICAgICBBU1NFUlQoYm94KTsKLSAgICAgICAgTGF5b3V0UmVjdCBsb2NhbEV4cG9zZVJl
Y3QoYm94LT5hYnNvbHV0ZVRvTG9jYWxRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QoYWJzb2x1dGVS
ZWN0KSkpLmJvdW5kaW5nQm94KCkpOwotCi0gICAgICAgIC8vIGxvY2FsRXhwb3NlZFJlY3QgaXMg
bm93IHRoZSBhYnNvbHV0ZSByZWN0IGluIGxvY2FsIGNvb3JkaW5hdGVzLCBidXQgcmVsYXRpdmUg
dG8gdGhlCi0gICAgICAgIC8vIGJvcmRlciBlZGdlLiBNYWtlIHRoZSByZWN0YW5nbGUgcmVsYXRp
dmUgdG8gdGhlIHNjcm9sbGFibGUgYXJlYS4KLSAgICAgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmVC
eSgtTGF5b3V0UG9pbnQoYm94LT5ib3JkZXJMZWZ0KCksIGJveC0+Ym9yZGVyVG9wKCkpKTsKLQot
ICAgICAgICBpZiAoYm94LT5zaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpIHsK
LSAgICAgICAgICAgIC8vIEZvciBgZGlyZWN0aW9uOiBydGw7IHdyaXRpbmctbW9kZTogaG9yaXpv
bnRhbC17dGIsYnR9YCBhbmQgYHdyaXRpbmctbW9kZTogdmVydGljYWwtcmxgCi0gICAgICAgICAg
ICAvLyBib3hlcywgdGhlIHNjcm9sbCBiYXIgaXMgb24gdGhlIGxlZnQgc2lkZS4gVGhlIHZpc2li
bGUgcmVjdCBzdGFydHMgZnJvbSB0aGUgcmlnaHQgc2lkZQotICAgICAgICAgICAgLy8gb2YgdGhl
IHNjcm9sbCBiYXIuIFNvIHRoZSB4IG9mIGxvY2FsRXhwb3NlUmVjdCBzaG91bGQgc3RhcnQgZnJv
bSB0aGUgc2FtZSBwb3NpdGlvbiB0b28uCi0gICAgICAgICAgICBsb2NhbEV4cG9zZVJlY3QubW92
ZUJ5KExheW91dFBvaW50KC1zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXJXaWR0aCgp
LCAwKSk7Ci0gICAgICAgIH0KLSAgICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kcygwX2x1LCAw
X2x1LCBib3gtPmNsaWVudFdpZHRoKCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOwotICAgICAgICBl
eHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmco
Ym94LCBsYXllckJvdW5kcywgbG9jYWxFeHBvc2VSZWN0KTsKLSAgICAgICAgTGF5b3V0UmVjdCBy
ZXZlYWxSZWN0ID0gZ2V0UmVjdFRvRXhwb3NlKGxheWVyQm91bmRzLCBsb2NhbEV4cG9zZVJlY3Qs
IGluc2lkZUZpeGVkLCBvcHRpb25zLmFsaWduWCwgb3B0aW9ucy5hbGlnblkpOwotCi0gICAgICAg
IGlmIChhdXRvIHJlc3VsdCA9IHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxQb3NpdGlvbihz
Y3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KGJveC0+ZWxlbWVudCgpKSwgcmV2
ZWFsUmVjdCwgbG9jYWxFeHBvc2VSZWN0KSkKLSAgICAgICAgICAgIG5ld1JlY3QgPSByZXN1bHQu
dmFsdWUoKTsKLSAgICB9IGVsc2UgaWYgKCFwYXJlbnRMYXllcikgewotICAgICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5vd25l
ckVsZW1lbnQoKTsKLQotICAgICAgICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVyRWxlbWVudC0+
cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lRWxl
bWVudEJhc2UgPSBudWxscHRyOwotCi0gICAgICAgICAgICBpZiAoaXM8SFRNTEZyYW1lRWxlbWVu
dEJhc2U+KCpvd25lckVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGZyYW1lRWxlbWVudEJhc2Ug
PSBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZT4ob3duZXJFbGVtZW50KTsKLQotICAgICAg
ICAgICAgaWYgKGZyYW1lRWxlbWVudEFuZFZpZXdQZXJtaXRTY3JvbGwoZnJhbWVFbGVtZW50QmFz
ZSwgZnJhbWVWaWV3KSkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYXNzZXJ0aW9uIGZp
cmVzIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgb3duZXJFbGVtZW50IGZyb20gYmVpbmcgZGVzdHJv
eWVkLgotICAgICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFk
IHNjcmlwdERpc2FsbG93ZWRTY29wZTsKLQotICAgICAgICAgICAgICAgIExheW91dFJlY3Qgdmll
d1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdh
Y3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKLQotICAgICAgICAgICAgICAgIGF1dG8qIGVsZW1l
bnQgPSBvd25lckVsZW1lbnQtPmNvbnRlbnREb2N1bWVudCgpID8gb3duZXJFbGVtZW50LT5jb250
ZW50RG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwotICAgICAgICAgICAg
ICAgIFJlbmRlckJveCogcmVuZGVyZXIgPSBlbGVtZW50ID8gZWxlbWVudC0+cmVuZGVyQm94KCkg
OiBudWxscHRyOwotICAgICAgICAgICAgICAgIGV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJn
ZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyhyZW5kZXJlciwgdmlld1JlY3QsIG5ld1JlY3Qp
OwotCi0gICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBleHBvc2VSZWN0ID0gZ2V0UmVjdFRvRXhw
b3NlKHZpZXdSZWN0LCBuZXdSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucy5hbGlnblgsIG9wdGlv
bnMuYWxpZ25ZKTsKLSAgICAgICAgICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbihyb3Vu
ZGVkSW50UG9pbnQoZXhwb3NlUmVjdC5sb2NhdGlvbigpKSk7Ci0KLSAgICAgICAgICAgICAgICAv
LyBBZGp1c3Qgb2Zmc2V0cyBpZiB0aGV5J3JlIG91dHNpZGUgb2YgdGhlIGFsbG93YWJsZSByYW5n
ZS4KLSAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uLmNvbnN0
cmFpbmVkQmV0d2VlbihJbnRQb2ludCgpLCBJbnRQb2ludChmcmFtZVZpZXcuY29udGVudHNTaXpl
KCkpKTsKLQotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdXNlIGNvbnRlbnRE
b2N1bWVudCgpLT5zY3JvbGxpbmdFbGVtZW50KCk/Ci0gICAgICAgICAgICAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwNTkKLSAgICAgICAgICAg
ICAgICBmcmFtZVZpZXcuc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBv
c2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpOwotCi0gICAgICAgICAgICAg
ICAgaWYgKG9wdGlvbnMuc2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZyA9PSBTaG91bGRB
bGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfHwgZnJhbWVWaWV3LnNhZmVUb1Byb3BhZ2F0
ZVNjcm9sbFRvUGFyZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGVuY2xv
c2luZ0xheWVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdMYXllci0+ZW5j
bG9zaW5nU2Nyb2xsYWJsZUxheWVyKEluY2x1ZGVTZWxmT3JOb3Q6OkluY2x1ZGVTZWxmLCBDcm9z
c0ZyYW1lQm91bmRhcmllczo6Tm8pOwotICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRo
ZSByZWN0IGludG8gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIHBhcmVudCBmcmFtZSdzIGRv
Y3VtZW50LgotICAgICAgICAgICAgICAgICAgICBuZXdSZWN0ID0gZnJhbWVWaWV3LmNvbnRlbnRz
VG9Db250YWluaW5nVmlld0NvbnRlbnRzKGVuY2xvc2luZ0ludFJlY3QobmV3UmVjdCkpOwotICAg
ICAgICAgICAgICAgICAgICBpbnNpZGVGaXhlZCA9IGZhbHNlOyAvLyBGSVhNRTogaWRlYWxseSBu
ZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIDxpZnJhbWU+IGlzIGluc2lkZSBwb3NpdGlvbjpmaXhl
ZC4KLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5
ZXIgPSBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWxV
cFRvTWFpbkZyYW1lICYmIGZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2RlID09
IFNlbGVjdGlvblJldmVhbE1vZGU6OkRlbGVnYXRlTWFpbkZyYW1lU2Nyb2xsICYmIGZyYW1lVmll
dy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBwYWdlKCkuY2hyb21l
KCkuc2Nyb2xsTWFpbkZyYW1lVG9SZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVj
dCkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgYXV0byBtaW5TY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy5taW5pbXVtU2Nyb2xsUG9zaXRp
b24oKTsKLSAgICAgICAgICAgIGF1dG8gbWF4U2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXcubWF4
aW11bVNjcm9sbFBvc2l0aW9uKCk7Ci0KLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAg
ICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0
KCk7Ci0jZWxzZQotICAgICAgICAgICAgLy8gRklYTUU6IENvbnRlbnRJbnNldHMgc2hvdWxkIGJl
IHRha2VuIGNhcmUgb2YgaW4gVUkgcHJvY2VzcyBzaWRlLiB3ZWJraXQub3JnL2IvMTk5NjgyCi0g
ICAgICAgICAgICAvLyBUbyBkbyB0aGF0LCBnZXRSZWN0VG9FeHBvc2UgbmVlZHMgdG8gcmV0dXJu
IHRoZSBhZGRpdGlvbmFsIHNjcm9sbGluZyB0byBkbyBiZXlvbmQgY29udGVudCByZWN0LgotICAg
ICAgICAgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy52aWV3UmVjdEV4cGFuZGVk
QnlDb250ZW50SW5zZXRzKCk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiB3ZWJraXQub3JnL2Iv
MTk5NjgzIEZyYW1lVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0IGlzIHdyb25nIHdoZW4gY29udGVu
dCBpbnNldHMgYXJlIHByZXNlbnQKLSAgICAgICAgICAgIG1heFNjcm9sbFBvc2l0aW9uID0gZnJh
bWVWaWV3LnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChTY3JvbGxQb3NpdGlvbihmcmFtZVZpZXcu
dG90YWxDb250ZW50c1NpemUoKSAtIGZsb29yZWRJbnRTaXplKHZpZXdSZWN0LnNpemUoKSkpKTsK
LQotICAgICAgICAgICAgYXV0byBjb250ZW50SW5zZXRzID0gcGFnZSgpLmNvbnRlbnRJbnNldHMo
KTsKLSAgICAgICAgICAgIG1pblNjcm9sbFBvc2l0aW9uLm1vdmUoLWNvbnRlbnRJbnNldHMubGVm
dCgpLCAtY29udGVudEluc2V0cy50b3AoKSk7Ci0gICAgICAgICAgICBtYXhTY3JvbGxQb3NpdGlv
bi5tb3ZlKGNvbnRlbnRJbnNldHMucmlnaHQoKSwgY29udGVudEluc2V0cy5ib3R0b20oKSk7Ci0j
ZW5kaWYKLSAgICAgICAgICAgIC8vIE1vdmUgdGhlIHRhcmdldCByZWN0IGludG8gInNjcm9sbFZp
ZXcgY29udGVudHMiIGNvb3JkaW5hdGVzLgotICAgICAgICAgICAgTGF5b3V0UmVjdCB0YXJnZXRS
ZWN0ID0gYWJzb2x1dGVSZWN0OwotICAgICAgICAgICAgdGFyZ2V0UmVjdC5tb3ZlKDAsIGZyYW1l
Vmlldy5oZWFkZXJIZWlnaHQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFt
ZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwotICAgICAgICAgICAgUmVuZGVyQm94KiByZW5k
ZXJlciA9IGVsZW1lbnQgPyBlbGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHI7Ci0gICAgICAg
ICAgICBleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBh
ZGRpbmcocmVuZGVyZXIsIHZpZXdSZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgICAgICAgICAgTGF5
b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCB0YXJnZXRSZWN0
LCBpbnNpZGVGaXhlZCwgb3B0aW9ucy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsKLSAgICAgICAg
ICAgIC8vIEF2b2lkIHNjcm9sbGluZyB0byB0aGUgcm91bmRlZCB2YWx1ZSBvZiByZXZlYWxSZWN0
LmxvY2F0aW9uKCkgaWYgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBzY3JvbGwKLSAgICAgICAg
ICAgIGlmIChyZXZlYWxSZWN0ICE9IHZpZXdSZWN0KSB7Ci0gICAgICAgICAgICAgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSB1c2UgZG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgpPwotICAgICAg
ICAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA1MDU5Ci0gICAgICAgICAgICAgICAgU2Nyb2xsT2Zmc2V0IGNsYW1wZWRTY3JvbGxQb3NpdGlv
biA9IHJvdW5kZWRJbnRQb2ludChyZXZlYWxSZWN0LmxvY2F0aW9uKCkpLmNvbnN0cmFpbmVkQmV0
d2VlbihtaW5TY3JvbGxQb3NpdGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24pOwotICAgICAgICAgICAg
ICAgIGZyYW1lVmlldy5zZXRTY3JvbGxQb3NpdGlvbihjbGFtcGVkU2Nyb2xsUG9zaXRpb24sIHNj
cm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBvdXRlcm1vc3QgdmlldyBvZiBhIHdl
YiBwYWdlLCBzbyBhZnRlciBzY3JvbGxpbmcgdGhpcyB2aWV3IHdlCi0gICAgICAgICAgICAvLyBz
Y3JvbGwgaXRzIGNvbnRhaW5lciBieSBjYWxsaW5nIFBhZ2U6OnNjcm9sbE1haW5GcmFtZVRvUmV2
ZWFsUmVjdC4KLSAgICAgICAgICAgIC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBN
YWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25zCi0gICAgICAgICAgICAvLyB0aGF0IHB1dCB3ZWIg
dmlld3MgaW50byBzY3JvbGxpbmcgY29udGFpbmVycywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgot
ICAgICAgICAgICAgLy8gVGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVy
IGFsc28ga25vd3MgYWJvdXQgdGhpcy4KLSAgICAgICAgICAgIHBhZ2UoKS5jaHJvbWUoKS5zY3Jv
bGxDb250YWluaW5nU2Nyb2xsVmlld3NUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1
dGVSZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcmVudExheWVyKQot
ICAgICAgICBwYXJlbnRMYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShuZXdSZWN0LCBpbnNpZGVG
aXhlZCwgb3B0aW9ucyk7Ci19Ci0KLUxheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4
cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhw
b3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgs
IGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAotewotICAgIEZyYW1lVmlldyYg
ZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAgaWYgKHJlbmRl
cmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgaW5zaWRlRml4ZWQpIHsKLSAgICAgICAgLy8gSWYgdGhl
IGVsZW1lbnQgaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkIGFuZCB3ZSdyZSBub3Qgc2NhbGVkLCBu
byBhbW91bnQgb2Ygc2Nyb2xsaW5nIGlzIGdvaW5nIHRvIG1vdmUgdGhpbmdzIGFyb3VuZC4KLSAg
ICAgICAgaWYgKGZyYW1lVmlldy5mcmFtZVNjYWxlRmFjdG9yKCkgPT0gMSkKLSAgICAgICAgICAg
IHJldHVybiB2aXNpYmxlUmVjdDsKLQotICAgICAgICBpZiAocmVuZGVyZXIoKS5zZXR0aW5ncygp
LnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAvLyBleHBvc2VSZWN0IGlz
IGluIGFic29sdXRlIGNvb3JkcywgYWZmZWN0ZWQgYnkgcGFnZSBzY2FsZS4gVW5zY2FsZSBpdC4K
LSAgICAgICAgICAgIExheW91dFJlY3QgdW5zY2FsZWRFeHBvc2VSZWN0ID0gZXhwb3NlUmVjdDsK
LSAgICAgICAgICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5zY2FsZSgxIC8gZnJhbWVWaWV3LmZyYW1l
U2NhbGVGYWN0b3IoKSk7Ci0gICAgICAgICAgICB1bnNjYWxlZEV4cG9zZVJlY3QubW92ZSgwLCAt
ZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpKTsKLQotICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGJv
dGggaW4gdW5zY2FsZWQgY29vcmRpbmF0ZXMuCi0gICAgICAgICAgICBMYXlvdXRSZWN0IGxheW91
dFZpZXdwb3J0ID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0UmVjdCgpOwotICAgICAgICAgICAg
TGF5b3V0UmVjdCB2aXN1YWxWaWV3cG9ydCA9IGZyYW1lVmlldy52aXN1YWxWaWV3cG9ydFJlY3Qo
KTsKLQotICAgICAgICAgICAgLy8gVGhlIHJlY3QgdG8gZXhwb3NlIG1heSBiZSBwYXJ0aWFsbHkg
b2Zmc2NyZWVuLCB3aGljaCB3ZSBjYW4ndCBkbyBhbnl0aGluZyBhYm91dCB3aXRoIHBvc2l0aW9u
OmZpeGVkLgotICAgICAgICAgICAgdW5zY2FsZWRFeHBvc2VSZWN0LmludGVyc2VjdChsYXlvdXRW
aWV3cG9ydCk7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBub3QgbGFyZ2VyIHRoYW4g
dGhlIHZpc3VhbCB2aWV3cG9ydDsgaWYgc28sIHdlJ2xsIGp1c3QgbW92ZSB0byB0aGUgdG9wIGxl
ZnQuCi0gICAgICAgICAgICB1bnNjYWxlZEV4cG9zZVJlY3Quc2V0U2l6ZSh1bnNjYWxlZEV4cG9z
ZVJlY3Quc2l6ZSgpLnNocnVua1RvKHZpc3VhbFZpZXdwb3J0LnNpemUoKSkpOwotCi0gICAgICAg
ICAgICAvLyBDb21wdXRlIGhvdyBtdWNoIHdlIGhhdmUgdG8gbW92ZSB0aGUgdmlzdWFsVmlld3Bv
cnQgdG8gcmV2ZWFsIHRoZSBwYXJ0IG9mIHRoZSBsYXlvdXRWaWV3cG9ydCB0aGF0IGNvbnRhaW5z
IGV4cG9zZVJlY3QuCi0gICAgICAgICAgICBMYXlvdXRSZWN0IHJlcXVpcmVkVmlzdWFsVmlld3Bv
cnQgPSBnZXRSZWN0VG9FeHBvc2UodmlzdWFsVmlld3BvcnQsIHVuc2NhbGVkRXhwb3NlUmVjdCwg
ZmFsc2UsIGFsaWduWCwgYWxpZ25ZKTsKLSAgICAgICAgICAgIC8vIFNjYWxlIGl0IGJhY2sgdXAu
Ci0gICAgICAgICAgICByZXF1aXJlZFZpc3VhbFZpZXdwb3J0LnNjYWxlKGZyYW1lVmlldy5mcmFt
ZVNjYWxlRmFjdG9yKCkpOwotICAgICAgICAgICAgcmVxdWlyZWRWaXN1YWxWaWV3cG9ydC5tb3Zl
KDAsIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWly
ZWRWaXN1YWxWaWV3cG9ydDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERldGVybWluZSB0
aGUgYXBwcm9wcmlhdGUgWCBiZWhhdmlvci4KLSAgICBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9y
IHNjcm9sbFg7Ci0gICAgTGF5b3V0UmVjdCBleHBvc2VSZWN0WChleHBvc2VSZWN0LngoKSwgdmlz
aWJsZVJlY3QueSgpLCBleHBvc2VSZWN0LndpZHRoKCksIHZpc2libGVSZWN0LmhlaWdodCgpKTsK
LSAgICBMYXlvdXRVbml0IGludGVyc2VjdFdpZHRoID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0
LCBleHBvc2VSZWN0WCkud2lkdGgoKTsKLSAgICBpZiAoaW50ZXJzZWN0V2lkdGggPT0gZXhwb3Nl
UmVjdC53aWR0aCgpIHx8IChhbGlnblgubGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hv
bGRFbmFibGVkKCkgJiYgaW50ZXJzZWN0V2lkdGggPj0gTUlOX0lOVEVSU0VDVF9GT1JfUkVWRUFM
KSkgewotICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIGZ1bGx5IHZpc2libGUsIHVzZSB0
aGUgc3BlY2lmaWVkIHZpc2libGUgYmVoYXZpb3IuCi0gICAgICAgIC8vIElmIHRoZSByZWN0YW5n
bGUgaXMgcGFydGlhbGx5IHZpc2libGUsIGJ1dCBvdmVyIGEgY2VydGFpbiB0aHJlc2hvbGQsCi0g
ICAgICAgIC8vIHRoZW4gdHJlYXQgaXQgYXMgZnVsbHkgdmlzaWJsZSB0byBhdm9pZCB1bm5lY2Vz
c2FyeSBob3Jpem9udGFsIHNjcm9sbGluZwotICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFZp
c2libGVCZWhhdmlvcigpOwotICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGggPT0gdmlzaWJs
ZVJlY3Qud2lkdGgoKSkgewotICAgICAgICAvLyBJZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0
aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxp
Z25tZW50cyB3aWxsIHdvcmsuCi0gICAgICAgIHNjcm9sbFggPSBhbGlnblguZ2V0VmlzaWJsZUJl
aGF2aW9yKCk7Ci0gICAgICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3I6OkFsaWduQ2VudGVyKQotICAgICAgICAgICAgc2Nyb2xsWCA9IFNjcm9sbEFsaWdubWVudDo6
QmVoYXZpb3I6Ok5vU2Nyb2xsOwotICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGggPiAwKQot
ICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIHBhcnRpYWxseSB2aXNpYmxlLCBidXQgbm90
IGFib3ZlIHRoZSBtaW5pbXVtIHRocmVzaG9sZCwgdXNlIHRoZSBzcGVjaWZpZWQgcGFydGlhbCBi
ZWhhdmlvcgotICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFBhcnRpYWxCZWhhdmlvcigpOwot
ICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRIaWRkZW5CZWhhdmlvcigpOwot
ICAgIC8vIElmIHdlJ3JlIHRyeWluZyB0byBhbGlnbiB0byB0aGUgY2xvc2VzdCBlZGdlLCBhbmQg
dGhlIGV4cG9zZVJlY3QgaXMgZnVydGhlciByaWdodAotICAgIC8vIHRoYW4gdGhlIHZpc2libGVS
ZWN0LCBhbmQgbm90IGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0
aCB0aGUgcmlnaHQuCi0gICAgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlv
cjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3QubWF4WCgpID4gdmlzaWJsZVJlY3Qu
bWF4WCgpICYmIGV4cG9zZVJlY3Qud2lkdGgoKSA8IHZpc2libGVSZWN0LndpZHRoKCkpCi0gICAg
ICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0OwotCi0g
ICAgLy8gR2l2ZW4gdGhlIFggYmVoYXZpb3IsIGNvbXB1dGUgdGhlIFggY29vcmRpbmF0ZS4KLSAg
ICBMYXlvdXRVbml0IHg7Ci0gICAgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhh
dmlvcjo6Tm9TY3JvbGwpCi0gICAgICAgIHggPSB2aXNpYmxlUmVjdC54KCk7Ci0gICAgZWxzZSBp
ZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0KQotICAg
ICAgICB4ID0gZXhwb3NlUmVjdC5tYXhYKCkgLSB2aXNpYmxlUmVjdC53aWR0aCgpOwotICAgIGVs
c2UgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXIp
Ci0gICAgICAgIHggPSBleHBvc2VSZWN0LngoKSArIChleHBvc2VSZWN0LndpZHRoKCkgLSB2aXNp
YmxlUmVjdC53aWR0aCgpKSAvIDI7Ci0gICAgZWxzZQotICAgICAgICB4ID0gZXhwb3NlUmVjdC54
KCk7Ci0KLSAgICAvLyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIFkgYmVoYXZpb3IuCi0gICAg
U2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvciBzY3JvbGxZOwotICAgIExheW91dFJlY3QgZXhwb3Nl
UmVjdFkodmlzaWJsZVJlY3QueCgpLCBleHBvc2VSZWN0LnkoKSwgdmlzaWJsZVJlY3Qud2lkdGgo
KSwgZXhwb3NlUmVjdC5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBpbnRlcnNlY3RIZWlnaHQg
PSBpbnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIGV4cG9zZVJlY3RZKS5oZWlnaHQoKTsKLSAgICBp
ZiAoaW50ZXJzZWN0SGVpZ2h0ID09IGV4cG9zZVJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIC8vIElm
IHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgdmlzaWJs
ZSBiZWhhdmlvci4KLSAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxlQmVoYXZpb3Io
KTsKLSAgICBlbHNlIGlmIChpbnRlcnNlY3RIZWlnaHQgPT0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkp
IHsKLSAgICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJl
YSwgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3
b3JrLgotICAgICAgICBzY3JvbGxZID0gYWxpZ25ZLmdldFZpc2libGVCZWhhdmlvcigpOwotICAg
ICAgICBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRl
cikKLSAgICAgICAgICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Nj
cm9sbDsKLSAgICB9IGVsc2UgaWYgKGludGVyc2VjdEhlaWdodCA+IDApCi0gICAgICAgIC8vIElm
IHRoZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHBh
cnRpYWwgYmVoYXZpb3IKLSAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRQYXJ0aWFsQmVoYXZp
b3IoKTsKLSAgICBlbHNlCi0gICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0SGlkZGVuQmVoYXZp
b3IoKTsKLSAgICAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRn
ZSwgYW5kIHRoZSBleHBvc2VSZWN0IGlzIGZ1cnRoZXIgZG93bgotICAgIC8vIHRoYW4gdGhlIHZp
c2libGVSZWN0LCBhbmQgbm90IGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxp
Z24gd2l0aCB0aGUgYm90dG9tLgotICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6
QmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFkoKSA+IHZpc2li
bGVSZWN0Lm1heFkoKSAmJiBleHBvc2VSZWN0LmhlaWdodCgpIDwgdmlzaWJsZVJlY3QuaGVpZ2h0
KCkpCi0gICAgICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkJv
dHRvbTsKLQotICAgIC8vIEdpdmVuIHRoZSBZIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBZIGNvb3Jk
aW5hdGUuCi0gICAgTGF5b3V0VW5pdCB5OwotICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdu
bWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsKQotICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgpOwot
ICAgIGVsc2UgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25C
b3R0b20pCi0gICAgICAgIHkgPSBleHBvc2VSZWN0Lm1heFkoKSAtIHZpc2libGVSZWN0LmhlaWdo
dCgpOwotICAgIGVsc2UgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6
QWxpZ25DZW50ZXIpCi0gICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKSArIChleHBvc2VSZWN0Lmhl
aWdodCgpIC0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIC8gMjsKLSAgICBlbHNlCi0gICAgICAgIHkg
PSBleHBvc2VSZWN0LnkoKTsKLQotICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KHgs
IHkpLCB2aXNpYmxlUmVjdC5zaXplKCkpOwotfQotCiB2b2lkIFJlbmRlckxheWVyOjphdXRvc2Ny
b2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbkluV2luZG93KQogewogICAgIEludFBvaW50IGN1
cnJlbnREb2N1bWVudFBvc2l0aW9uID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkud2lu
ZG93VG9Db250ZW50cyhwb3NpdGlvbkluV2luZG93KTsKLSAgICBzY3JvbGxSZWN0VG9WaXNpYmxl
KExheW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCBm
YWxzZSwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxp
Z25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBT
aG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgRnJhbWVWaWV3Ojpz
Y3JvbGxSZWN0VG9WaXNpYmxlKExheW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExh
eW91dFNpemUoMSwgMSkpLCByZW5kZXJlcigpLCBmYWxzZSwgeyBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xs
aW5nOjpZZXMgfSk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXI6OmNhblJlc2l6ZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGU1ZTVlYzk0ODRkNjFjYTdk
OTllYWU1ZWY1ZDRlNjU4MmRjOWViZTUuLjM1YmYxNmQzZGFiOWY2YjUwZjIyNDMyYTE4OWU3YjY3
NjY2YTBjYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00NTks
OCArNDU5LDYgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiByZXR1cm4gdGhlIFJl
bmRlclZpZXcncyBsYXllciB3aGVuIGNhbGxlcnMgcHJvYmFibHkgd2FudCB0aGUgRnJhbWVWaWV3
IGFzIGEgU2Nyb2xsYWJsZUFyZWEuCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1Njcm9sbGFi
bGVMYXllcihJbmNsdWRlU2VsZk9yTm90LCBDcm9zc0ZyYW1lQm91bmRhcmllcykgY29uc3Q7CiAK
LSAgICAvLyAiYWJzb2x1dGVSZWN0IiBpcyBpbiBzY2FsZWQgZG9jdW1lbnQgY29vcmRpbmF0ZXMu
Ci0gICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRl
UmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMm
KTsKICAgICAvLyBSZXR1cm5zIHRydWUgd2hlbiB0aGUgbGF5ZXIgY291bGQgZG8gdG91Y2ggc2Ny
b2xsaW5nLCBidXQgZG9lc24ndCBsb29rIGF0IHdoZXRoZXIgdGhlcmUgaXMgYWN0dWFsbHkgc2Ny
b2xsYWJsZSBvdmVyZmxvdy4KICAgICBib29sIGNhblVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcoKSBj
b25zdDsKICAgICAvLyBSZXR1cm5zIHRydWUgd2hlbiB0aGVyZSBpcyBhY3R1YWxseSBzY3JvbGxh
YmxlIG92ZXJmbG93IChyZXF1aXJlcyBsYXlvdXQgdG8gYmUgdXAtdG8tZGF0ZSkuCkBAIC00NzQs
NiArNDcyLDggQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0
KCk7CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOwogCisgICAgLy8gUmV0dXJucyB0
cnVlIGlmIHRoaXMgUmVuZGVyTGF5ZXIgaXMgYSBjYW5kaWRhdGUgZm9yIHNjcm9sbGluZyBkdXJp
bmcgc2Nyb2xsSW50b1ZpZXcgb3BlcmF0aW9ucy4KKyAgICBib29sIHNob3VsZFRyeVRvU2Nyb2xs
Rm9yU2Nyb2xsSW50b1ZpZXcoKSBjb25zdDsKICAgICB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50
UG9pbnQmKTsKIAogICAgIGJvb2wgY2FuUmVzaXplKCkgY29uc3Q7CkBAIC0xMDM0LDggKzEwMzQs
NiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRCZVNlbGZQYWludGluZ0xheWVyKCkgY29u
c3Q7CiAKLSAgICBib29sIGFsbG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdDsKLQogICAgIHZvaWQg
ZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRhbnRTdGF0dXMoKTsKICAgICB2b2lkIHNl
dEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgpOwogICAgIApAQCAtMTA3MCw4ICsx
MDY4LDYgQEAgcHJpdmF0ZToKIAogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdUcmFuc2Zvcm1l
ZEFuY2VzdG9yKCkgY29uc3Q7CiAKLSAgICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4cG9zZShjb25z
dCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwg
Ym9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNj
cm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdDsKLQogICAgIC8vIENvbnZlcnQgYSBwb2ludCBp
biBhYnNvbHV0ZSBjb29yZHMgaW50byBsYXllciBjb29yZHMsIHRha2luZyB0cmFuc2Zvcm1zIGlu
dG8gYWNjb3VudAogICAgIExheW91dFBvaW50IGFic29sdXRlVG9Db250ZW50cyhjb25zdCBMYXlv
dXRQb2ludCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNGQ3ZTE2MzA3MzFmYjAyZDczMDAy
M2MxMzcwYzA2YWEwZmFiZTZjNC4uMGQzNjI0NDkxMjY2NDEzNGViYzY3NTE1YzEwMzg4YzM4Yzcw
YTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhLmNwcApAQCAtMTc1OCwyNSArMTc1OCw1NCBAQCB2b2lkIFJlbmRlckxh
eWVyU2Nyb2xsYWJsZUFyZWE6OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgc291
cmNlUG9pbnQpCiAgICAgc2Nyb2xsQnlSZWN1cnNpdmVseShhZGp1c3RlZFNjcm9sbERlbHRhKGRl
bHRhKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VP
cHRpb25zJiBvcHRpb25zLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlv
dXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpCitMYXlvdXRSZWN0IFJlbmRlckxheWVyU2Nyb2xsYWJs
ZUFyZWE6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0
LCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBBU1NF
UlQobV9sYXllci5hbGxvd3NDdXJyZW50U2Nyb2xsKCkpOworICAgIFJlbmRlckJveCogYm94ID0g
bGF5ZXIoKS5yZW5kZXJCb3goKTsKKyAgICBBU1NFUlQoYm94KTsKKyAgICBMYXlvdXRSZWN0IGxv
Y2FsRXhwb3NlUmVjdChib3gtPmFic29sdXRlVG9Mb2NhbFF1YWQoRmxvYXRRdWFkKEZsb2F0UmVj
dChhYnNvbHV0ZVJlY3QpKSkuYm91bmRpbmdCb3goKSk7CisKKyAgICAvLyBsb2NhbEV4cG9zZWRS
ZWN0IGlzIG5vdyB0aGUgYWJzb2x1dGUgcmVjdCBpbiBsb2NhbCBjb29yZGluYXRlcywgYnV0IHJl
bGF0aXZlIHRvIHRoZQorICAgIC8vIGJvcmRlciBlZGdlLiBNYWtlIHRoZSByZWN0YW5nbGUgcmVs
YXRpdmUgdG8gdGhlIHNjcm9sbGFibGUgYXJlYS4KKyAgICBsb2NhbEV4cG9zZVJlY3QubW92ZUJ5
KC1MYXlvdXRQb2ludChib3gtPmJvcmRlckxlZnQoKSwgYm94LT5ib3JkZXJUb3AoKSkpOworCisg
ICAgaWYgKGJveC0+c2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpKSB7CisgICAg
ICAgIC8vIEZvciBgZGlyZWN0aW9uOiBydGw7IHdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC17dGIs
YnR9YCBhbmQgYHdyaXRpbmctbW9kZTogdmVydGljYWwtcmxgCisgICAgICAgIC8vIGJveGVzLCB0
aGUgc2Nyb2xsIGJhciBpcyBvbiB0aGUgbGVmdCBzaWRlLiBUaGUgdmlzaWJsZSByZWN0IHN0YXJ0
cyBmcm9tIHRoZSByaWdodCBzaWRlCisgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwgYmFyLiBTbyB0
aGUgeCBvZiBsb2NhbEV4cG9zZVJlY3Qgc2hvdWxkIHN0YXJ0IGZyb20gdGhlIHNhbWUgcG9zaXRp
b24gdG9vLgorICAgICAgICBsb2NhbEV4cG9zZVJlY3QubW92ZUJ5KExheW91dFBvaW50KC12ZXJ0
aWNhbFNjcm9sbGJhcldpZHRoKCksIDApKTsKKyAgICB9CisKKyAgICAvLyBzY3JvbGwtcGFkZGlu
ZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSByZWN0YW5n
bGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVsYXRlIHBhZGRp
bmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1cCB0aGUg
dHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCB0aGUgcGFk
ZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAgICBMYXlvdXRS
ZWN0IGxheWVyQm91bmRzKDBfbHUsIDBfbHUsIGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5jbGll
bnRIZWlnaHQoKSk7CisgICAgbG9jYWxFeHBvc2VSZWN0LmV4cGFuZChib3gtPnNjcm9sbFBhZGRp
bmdGb3JWaWV3cG9ydFJlY3QobGF5ZXJCb3VuZHMpKTsKIAorICAgIGF1dG8gcmV2ZWFsUmVjdCA9
IGdldFJlY3RUb0V4cG9zZUZvclNjcm9sbEludG9WaWV3KGxheWVyQm91bmRzLCBsb2NhbEV4cG9z
ZVJlY3QsIG9wdGlvbnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7CisKKyAgICBhdXRvIHNjcm9s
bFBvc2l0aW9uT3B0aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJv
Z3JhbW1hdGljKCk7CisgICAgaWYgKCFib3gtPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Nj
cm9sbEluUHJvZ3Jlc3MoKSAmJiBib3gtPmVsZW1lbnQoKSAmJiB1c2VTbW9vdGhTY3JvbGxpbmco
b3B0aW9ucy5iZWhhdmlvciwgYm94LT5lbGVtZW50KCkpKQorICAgICAgICBzY3JvbGxQb3NpdGlv
bk9wdGlvbnMuYW5pbWF0ZWQgPSBTY3JvbGxJc0FuaW1hdGVkOjpZZXM7CisgICAgaWYgKGF1dG8g
cmVzdWx0ID0gdXBkYXRlU2Nyb2xsUG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyhzY3JvbGxQb3Np
dGlvbk9wdGlvbnMsIHJldmVhbFJlY3QsIGxvY2FsRXhwb3NlUmVjdCkpCisgICAgICAgIHJldHVy
biByZXN1bHQudmFsdWUoKTsKKyAgICByZXR1cm4gYWJzb2x1dGVSZWN0OworfQorc3RkOjpvcHRp
b25hbDxMYXlvdXRSZWN0PiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQ
b3NpdGlvbkZvclNjcm9sbEludG9WaWV3KGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
cyYgb3B0aW9ucywgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVj
dCYgbG9jYWxFeHBvc2VSZWN0KQorewogICAgIFJlbmRlckJveCogYm94ID0gbV9sYXllci5yZW5k
ZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsKIAogICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Ny
b2xsT2Zmc2V0ID0gY2xhbXBTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCkgKyB0b0ludFNpemUo
cm91bmRlZEludFJlY3QocmV2ZWFsUmVjdCkubG9jYXRpb24oKSkpOwotICAgIGlmIChjbGFtcGVk
U2Nyb2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpIHx8IHNjcm9sbEFuaW1hdGlvblN0YXR1cygp
ICE9IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90QW5pbWF0aW5nKSB7Ci0gICAgICAgIFNjcm9s
bE9mZnNldCBvbGRTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgU2Nyb2xs
T2Zmc2V0IHJlYWxTY3JvbGxPZmZzZXQgPSBzY3JvbGxUb09mZnNldChjbGFtcGVkU2Nyb2xsT2Zm
c2V0LCBvcHRpb25zKTsKLQotICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldERpZmZlcmVuY2Ug
PSByZWFsU2Nyb2xsT2Zmc2V0IC0gb2xkU2Nyb2xsT2Zmc2V0OwotICAgICAgICBhdXRvIGxvY2Fs
RXhwb3NlUmVjdFNjcm9sbGVkID0gbG9jYWxFeHBvc2VSZWN0OwotICAgICAgICBsb2NhbEV4cG9z
ZVJlY3RTY3JvbGxlZC5tb3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKLSAgICAgICAgcmV0
dXJuIExheW91dFJlY3QoYm94LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChGbG9hdFJl
Y3QobG9jYWxFeHBvc2VSZWN0U2Nyb2xsZWQpKSwgVXNlVHJhbnNmb3JtcykuYm91bmRpbmdCb3go
KSk7Ci0gICAgfQorICAgIGlmIChjbGFtcGVkU2Nyb2xsT2Zmc2V0ID09IHNjcm9sbE9mZnNldCgp
ICYmIHNjcm9sbEFuaW1hdGlvblN0YXR1cygpID09IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90
QW5pbWF0aW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU2Nyb2xsT2Zm
c2V0IG9sZFNjcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCgpOworICAgIFNjcm9sbE9mZnNldCBy
ZWFsU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsVG9PZmZzZXQoY2xhbXBlZFNjcm9sbE9mZnNldCwgb3B0
aW9ucyk7CiAKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIEludFNpemUgc2Nyb2xsT2Zm
c2V0RGlmZmVyZW5jZSA9IHJlYWxTY3JvbGxPZmZzZXQgLSBvbGRTY3JvbGxPZmZzZXQ7CisgICAg
YXV0byBsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZCA9IGxvY2FsRXhwb3NlUmVjdDsKKyAgICBsb2Nh
bEV4cG9zZVJlY3RTY3JvbGxlZC5tb3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKKyAgICBy
ZXR1cm4gTGF5b3V0UmVjdChib3gtPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKEZsb2F0
UmVjdChsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZCkpLCBVc2VUcmFuc2Zvcm1zKS5ib3VuZGluZ0Jv
eCgpKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxCeVJlY3Vy
c2l2ZWx5KGNvbnN0IEludFNpemUmIGRlbHRhLCBTY3JvbGxhYmxlQXJlYSoqIHNjcm9sbGVkQXJl
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9s
bGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5oCmluZGV4IGJmMjdlZGMxNTI2NzQ0ODNmYzc5Nzc3YjY5YTllYzFiZGRhMTZhNjMu
Ljg5OTU4MjhiMjY0YjAwYmFiZmI3ZDY0MjgxODFjNmRlMTJhM2YwZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAt
MjM2LDcgKzIzNiw4IEBAIHB1YmxpYzoKIAogICAgIEludFNpemUgc2Nyb2xsYmFyT2Zmc2V0KGNv
bnN0IFNjcm9sbGJhciYpIGNvbnN0OwogCi0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1
cGRhdGVTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmLCBj
b25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9z
ZVJlY3QpOworICAgIExheW91dFJlY3Qgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRS
ZWN0JiBhYnNvbHV0ZVJlY3QsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7Cisg
ICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlvbkZvclNjcm9s
bEludG9WaWV3KGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYsIGNvbnN0IExheW91
dFJlY3QmIHJldmVhbFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3NlUmVjdCk7CiAK
IHByaXZhdGU6CiAgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcmZsb3coKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjRiNjcxMDJkZmU3NGRm
NWVhYjE1YzIwZmU0ZWRjNTYxNTJhYzNmMy4uNjk3MzkyZjE2NWY1YmQ1ZjM3YTAzMTY4MGQ3MzYy
YjdiMjQ1NzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
QEAgLTQ0OSwxOSArNDQ5LDYgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlck9iamVjdDo6ZW5jbG9zaW5n
TGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFJlbmRlck9iamVj
dDo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJv
b2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJiBvcHRpb25z
KQotewotICAgIGlmIChvcHRpb25zLnJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6
RG9Ob3RSZXZlYWwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlbmRlckxheWVyKiBl
bmNsb3NpbmdMYXllciA9IHRoaXMtPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgaWYgKCFlbmNsb3Np
bmdMYXllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZW5jbG9zaW5nTGF5ZXItPnNj
cm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucyk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KIFJlbmRlckJveCYgUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdC
b3goKSBjb25zdAogewogICAgIHJldHVybiAqbGluZWFnZU9mVHlwZTxSZW5kZXJCb3g+KGNvbnN0
X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4oKnRoaXMpKS5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDZmZjIwMjEyYmE5Yzk4MWJjODdmZTFmNGI3ZjJiNTA4
Y2VjMzNkMzcuLmEzYWIzZDg0MGZjOGU2NDI3MmRlMjE5ZGZjODQ3M2I0ZmE2ODQ0ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTE1NCw5ICsxNTQsNiBAQCBw
dWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5ZXIo
KSBjb25zdDsKIAotICAgIC8vIFNjcm9sbGluZyBpcyBhIFJlbmRlckJveCBjb25jZXB0LCBob3dl
dmVyIHNvbWUgY29kZSBqdXN0IGNhcmVzIGFib3V0IHJlY3Vyc2l2ZWx5IHNjcm9sbGluZyBvdXIg
ZW5jbG9zaW5nIFNjcm9sbGFibGVBcmVhKHMpLgotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Ny
b2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5z
aWRlRml4ZWQsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7Ci0KICAgICBXRUJD
T1JFX0VYUE9SVCBSZW5kZXJCb3gmIGVuY2xvc2luZ0JveCgpIGNvbnN0OwogICAgIFJlbmRlckJv
eE1vZGVsT2JqZWN0JiBlbmNsb3NpbmdCb3hNb2RlbE9iamVjdCgpIGNvbnN0OwogICAgIFJlbmRl
ckJveCogZW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA1MzM1ZmNmZGU2MDU3YzVlOWNjNzA4ZTQ5NGM1MTc1YjI2OGNi
NmVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlvbnMgYXJlIENv
cHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAq
Ci0gKiBPdGhlciBjb250cmlidXRvcnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNz
LmNtdS5lZHU+Ci0gKiAgIERhdmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgotICog
ICBDaHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAgUmFuZGFsbCBK
ZXN1cCA8cmplc3VwQHdnYXRlLmNvbT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpA
aW5mb3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNz
QG1hYy5jb20+Ci0gKiAgIEJvcmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+Ci0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKLSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxl
IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1
YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3dy5tb3ppbGxh
Lm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwu
aHRtbAotICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhl
IE1QTCBvciB0aGUgR1BMIGFyZQotICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3Zl
LiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24gb2YgdGhpcyBm
aWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2Vz
ICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3Vy
Ci0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBk
ZWNpc2lvbiBieQotICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0
aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkg
dGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90
IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0g
KiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3Ig
dGhlIEdQTC4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsQWxp
Z25tZW50LmgiCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IFNjcm9sbEFsaWdubWVu
dCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNpYmxlID0geyBCZWhhdmlvcjo6
Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6Ok5vU2Nyb2xsIH07Ci1j
b25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTm90Vmlz
aWJsZSA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdl
LCBCZWhhdmlvcjo6Tm9TY3JvbGwgfTsKLWNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQgPSB7IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVoYXZp
b3I6OkFsaWduQ2VudGVyLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlIH07Ci1XRUJDT1JF
X0VYUE9SVCBjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTmVlZGVkID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnblRvQ2xvc2Vz
dEVkZ2UsIEJlaGF2aW9yOjpBbGlnblRvQ2xvc2VzdEVkZ2UgfTsKLVdFQkNPUkVfRVhQT1JUIGNv
bnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVyQWx3YXlzID0g
eyBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6
OkFsaWduQ2VudGVyIH07Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50Ojph
bGlnblRvcEFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduVG9wLCBCZWhhdmlvcjo6QWxpZ25Ub3As
IEJlaGF2aW9yOjpBbGlnblRvcCB9OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25SaWdodEFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduUmlnaHQsIEJlaGF2aW9y
OjpBbGlnblJpZ2h0LCBCZWhhdmlvcjo6QWxpZ25SaWdodCB9OwotY29uc3QgU2Nyb2xsQWxpZ25t
ZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25MZWZ0QWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25M
ZWZ0LCBCZWhhdmlvcjo6QWxpZ25MZWZ0LCBCZWhhdmlvcjo6QWxpZ25MZWZ0IH07Ci1jb25zdCBT
Y3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkJvdHRvbUFsd2F5cyA9IHsgQmVo
YXZpb3I6OkFsaWduQm90dG9tLCBCZWhhdmlvcjo6QWxpZ25Cb3R0b20sIEJlaGF2aW9yOjpBbGln
bkJvdHRvbSB9OwotICAgIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywg
U2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvciBiKQotewotICAgIHN3aXRjaCAoYikgewotICAgIGNh
c2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGw6Ci0gICAgICAgIHJldHVybiB0
cyA8PCAiTm9TY3JvbGwiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxp
Z25DZW50ZXI6Ci0gICAgICAgIHJldHVybiB0cyA8PCAiQWxpZ25DZW50ZXIiOwotICAgIGNhc2Ug
U2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Ub3A6Ci0gICAgICAgIHJldHVybiB0cyA8
PCAiQWxpZ25Ub3AiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25C
b3R0b206Ci0gICAgICAgIHJldHVybiB0cyA8PCAiQWxpZ25Cb3R0b20iOwotICAgIGNhc2UgU2Ny
b2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25MZWZ0OgotICAgICAgICByZXR1cm4gdHMgPDwg
IkFsaWduTGVmdCI7Ci0gICAgY2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJp
Z2h0OgotICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduUmlnaHQiOwotICAgIGNhc2UgU2Nyb2xs
QWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlOgotICAgICAgICByZXR1cm4g
dHMgPDwgIkFsaWduVG9DbG9zZXN0RWRnZSI7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLSAg
ICAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbEFs
aWdubWVudCYgcykKLXsKLSAgICByZXR1cm4gdHMgPDwgIlNjcm9sbEFsaWdubWVudDogdmlzaWJs
ZTogIiA8PCBzLm1fcmVjdFZpc2libGUgPDwgIiBoaWRkZW46ICIgPDwgcy5tX3JlY3RIaWRkZW4g
PDwgIiBwYXJ0aWFsOiAiIDw8IHMubV9yZWN0UGFydGlhbDsKLX0KLQotfTsgLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGln
bm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFiYjZlZjllMjJlN2M1OTU1ODhhYjhiMzEyNzky
YTA4NTMzYWVhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA5LCAyMDE2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlvbnMgYXJlIENv
cHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAq
Ci0gKiBPdGhlciBjb250cmlidXRvcnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNz
LmNtdS5lZHU+Ci0gKiAgIERhdmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgotICog
ICBDaHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAgUmFuZGFsbCBK
ZXN1cCA8cmplc3VwQHdnYXRlLmNvbT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpA
aW5mb3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNz
QG1hYy5jb20+Ci0gKiAgIEJvcmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+Ci0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKLSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxl
IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1
YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3dy5tb3ppbGxh
Lm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vu
c2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwu
aHRtbAotICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhl
IE1QTCBvciB0aGUgR1BMIGFyZQotICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3Zl
LiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24gb2YgdGhpcyBm
aWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2Vz
ICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3Vy
Ci0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBk
ZWNpc2lvbiBieQotICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0
aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkg
dGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90
IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0g
KiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3Ig
dGhlIEdQTC4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBU
ZXh0U3RyZWFtOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTY3JvbGxBbGln
bm1lbnQgewotCi0gICAgZW51bSBjbGFzcyBCZWhhdmlvciB7Ci0gICAgICAgIE5vU2Nyb2xsLAot
ICAgICAgICBBbGlnbkNlbnRlciwKLSAgICAgICAgQWxpZ25Ub3AsCi0gICAgICAgIEFsaWduQm90
dG9tLAotICAgICAgICBBbGlnbkxlZnQsCi0gICAgICAgIEFsaWduUmlnaHQsCi0gICAgICAgIEFs
aWduVG9DbG9zZXN0RWRnZQotICAgIH07Ci0KLSAgICBCZWhhdmlvciBnZXRWaXNpYmxlQmVoYXZp
b3IoKSBjb25zdCB7IHJldHVybiBtX3JlY3RWaXNpYmxlOyB9Ci0gICAgQmVoYXZpb3IgZ2V0UGFy
dGlhbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0UGFydGlhbDsgfQotICAgIEJlaGF2
aW9yIGdldEhpZGRlbkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0SGlkZGVuOyB9Ci0g
ICAgdm9pZCBkaXNhYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKSB7IG1f
ZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgPSBmYWxzZTsgfQotICAg
IGJvb2wgbGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmFibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZDsgfQot
Ci0gICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlcklmTm90VmlzaWJs
ZTsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOb3RWaXNp
YmxlOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxp
Z25DZW50ZXJJZk5lZWRlZDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xs
QWxpZ25tZW50IGFsaWduVG9FZGdlSWZOZWVkZWQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlckFsd2F5czsKLSAgICBzdGF0aWMgY29u
c3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9wQWx3YXlzOwotICAgIHN0YXRpYyBjb25zdCBTY3Jv
bGxBbGlnbm1lbnQgYWxpZ25SaWdodEFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxp
Z25tZW50IGFsaWduTGVmdEFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50
IGFsaWduQm90dG9tQWx3YXlzOwotCi0gICAgQmVoYXZpb3IgbV9yZWN0VmlzaWJsZTsKLSAgICBC
ZWhhdmlvciBtX3JlY3RIaWRkZW47Ci0gICAgQmVoYXZpb3IgbV9yZWN0UGFydGlhbDsKLSAgICBi
b29sIG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgeyB0cnVlIH07
Ci19OwotICAgIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3IpOwotV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNj
cm9sbEFsaWdubWVudCYpOwotCi19OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZGZkYzNhOWM4YjJmZGViODNh
ZDNhZWU5NDlmY2QxZmYxNTVmNzMzZC4uNWQ5M2Q4NThkYTg3YTE4OGM3Mzc4NjhhYzcxNTQ4ZjM2
MjM2OGYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJG
cmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1t
CkBAIC04MSw2ICs4MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyU3RhdGVNYWNo
aW5lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lVHJlZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZyYW1l
T3duZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtNzI4LDEx
ICs3MjksMTEgQEAgLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICop
cmFuZ2UKICAgICAgICAgCiAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPnJlbmRlcmVy
KCkpIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgc3RhcnROb2RlLT5yZW5k
ZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFu
Z2VSZWN0KSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2
ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNv
cmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hvdWxk
QWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOworICAgICAgICBXZWJDb3JlOjpGcmFt
ZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5n
ZVJlY3QpLCAqc3RhcnROb2RlLT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpT
ZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxp
Z25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlm
TmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7
CiAjZWxzZQogICAgICAgICBhdXRvKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5j
bG9zaW5nTGF5ZXIoKTsKICAgICAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgICAgICBzdGFydE5v
ZGUtPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50
UmVjdChyYW5nZVJlY3QpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxN
b2RlOjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRl
ZCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3Jl
OjpTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgICAgICAgICBX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5n
SW50UmVjdChyYW5nZVJlY3QpLCAqc3RhcnROb2RlLT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwg
eyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFs
aWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50Ojph
bGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xs
aW5nOjpZZXMgfSk7CiAgICAgICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24o
KS5zZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVG
cmFtZS0+c2VsZWN0aW9uKCkudXBkYXRlQXBwZWFyYW5jZSgpOwogICAgICAgICB9CkBAIC03NTAs
NyArNzUxLDcgQEAgLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICop
cmFuZ2Ugd2l0aEluc2V0OihDR0Zsb2F0KWluc2V0CiAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFy
dE5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgYXV0byogbGF5ZXIgPSBzdGFydE5vZGUtPnJl
bmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7CiAgICAgICAgIGlmIChsYXllcikgewotICAgICAg
ICAgICAgc3RhcnROb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6
OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VSZWN0KSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2Vs
ZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWdu
VG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5l
ZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzfSk7Cisg
ICAgICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29y
ZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCAqc3RhcnROb2RlLT5yZW5kZXJlcigpLCBp
bnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNv
cmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xs
QWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3Nz
T3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CiAKICAgICAgICAgICAgIGF1dG8gY29yZUZyYW1lID0g
Y29yZShzZWxmKTsKICAgICAgICAgICAgIGlmIChjb3JlRnJhbWUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451275</attachid>
            <date>2022-02-08 10:51:44 -0800</date>
            <delta_ts>2022-02-09 05:27:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236220-20220208195141.patch</filename>
            <type>text/plain</type>
            <size>89514</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5MzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNkNTUwYTQzYjAxZWVk
OTZiNTJiNjJkZjMyN2Q0MGQ1NTc5ODFkZi4uODRkZWFhNzFkNGU0OTZiNjU1YTUwNTVjYzMxZTg2
YzA5ZmU4ODg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAyLTA3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWZhY3RvciBS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBub3QgY2hh
bmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1vdmUgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUgdG8gYSBzdGF0aWMgbWV0aG9kIGluIEZyYW1lVmlldyBhbmQgY29tYmluZSBpdCB3aXRo
CisgICAgICAgIFJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4gVGhpcyBhbHNvIHNw
bGl0cyBvdXQgdGhlIHRocmVlIGNvZGUgcGF0aHMgaW4gdGhpcyBtZXRob2QKKyAgICAgICAgaW50
byB0aHJlZSBzZXBhcmF0ZSBtZXRob2RzLCB0d28gb2YgdGhlbSBvbiBGcmFtZVZpZXcgYW5kIG9u
ZSBvZiB0aGVtIG9uCisgICAgICAgIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAg
ICAgSW4gYWRkaXRpb25zLCB2YXJpb3VzIG1ldGhvZHMgYXJlIG1vdmVkIGFuZCByZW5hbWVkIHRv
IG1ha2UgdGhlbSBtb3JlCisgICAgICAgIHVuZGVyc3RhbmRhYmxlLiBTY3JvbGxBbGlnbm1lbnQg
bXVzdCBtb3ZlIHRvIHBsYXRmb3JtLCBiZWNhdXNlIGdldFJlY3RUb0V4cG9zZSBtb3ZlcyB0bwor
ICAgICAgICBTY3JvbGxhYmxlQXJlYSBhbmQgaXMgcmVuYW1lZCB0byBnZXRSZWN0VG9FeHBvc2VG
b3JTY3JvbGxJbnRvVmlldy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOb3RWaXNpYmxlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24pOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Ny
b2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxQb3NpdGlv
bkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpnZXRQb3NzaWJseUZpeGVkUmVjdFRvRXhwb3NlIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
Z2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNj
cm9sbEludG9WaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRv
c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJn
ZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpmcmFtZUVsZW1lbnRBbmRWaWV3UGVybWl0U2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjphbGxvd3NDdXJyZW50U2Nyb2xsIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xs
UG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorCiAyMDIyLTAyLTA4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFu
bkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbmRlckxheWVyOiBTaW1wbGlmeSBSZW5kZXJFbGVt
ZW50OjpwYWludCgpIGNhbGxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggYjY3ZGJj
Y2IzMTY2ZGU2NzM4MTgwNTg3ZTI4ODE5MzgxZTVlZDhkNi4uMDRiYjZlOWMzMjBlM2NjMWE4MDMx
ZjFlNTM3ZmZjMmQ5ZGU4MDBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIyLTAyLTA3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0
Lm9yZz4KKworICAgICAgICBSZWZhY3RvciBSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJs
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc2Nyb2xsRE9NUmFuZ2VUb1Zp
c2libGU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTp3
aXRoSW5zZXQ6XSk6CisKIDIwMjItMDItMDYgIFR5bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxl
LmNvbT4KIAogICAgICAgICBBWDogQWRkIGludGVybmFsLW9ubHkgZmxhZyB0byBlbmFibGUgV0lQ
IGRpc3BsYXk6IGNvbnRlbnRzIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDMzMmIwMDMz
MDJjM2VmOTYyZmE3MmZiM2Y4ODRjZjVmODI3MWQ0OWYuLmFiNjk2NmUzYWIzZjBjMzBkNmVjZjZm
NjA5Y2M2Yzk4Nzg2ZjA5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTMxMyw2ICsxMzEzLDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL1NT
TEtleUdlbmVyYXRvci5oCiAgICAgcGxhdGZvcm0vU2NyZWVuUHJvcGVydGllcy5oCiAgICAgcGxh
dGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaAorICAgIHBsYXRmb3JtL1Nj
cm9sbEFsaWdubWVudC5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAog
ICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKICAgICBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5o
CkBAIC0xODU1LDcgKzE4NTYsNiBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgcmVuZGVyaW5nL1JlbmRlclZpZGVvLmgKICAgICByZW5kZXJpbmcvUmVuZGVyVmll
dy5oCiAgICAgcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCi0gICAgcmVuZGVyaW5nL1Njcm9sbEFs
aWdubWVudC5oCiAgICAgcmVuZGVyaW5nL1NlbGVjdGlvblJhbmdlRGF0YS5oCiAgICAgcmVuZGVy
aW5nL1RleHRCb3hTZWxlY3RhYmxlUmFuZ2UuaAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmlu
ZGV4IDk4YjAzNTc5MWE2ZWJiMGQ5ZjE1NzFhNTdhNDJlY2Q1ZjE1NWNmYjkuLjlhNjExZDU5NThj
ODhiMjJiMGE1Mjc5ZTQ2MzFkYzNiMjM2YjgxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtl
CkBAIC01NjMsNiArNTYzLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGxhdGZvcm0vTWFpblRocmVhZFNoYXJlZFRpbWVyLmgKICAgICBwbGF0
Zm9ybS9QaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5oCiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Db250
ZW50RmlsdGVyLmgKKyAgICBwbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaAogICAgIHBsYXRmb3Jt
L1Njcm9sbEFuaW1hdGlvbi5oCiAgICAgcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xs
ZXIuaAogICAgIHBsYXRmb3JtL1Njcm9sbFNuYXBBbmltYXRvclN0YXRlLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0YWIzM2E4YmQ3NWU3YTU4YS4uNzk3ZTk3NjU2
NDFlMDczY2ZiNmY3MzRkZjljZTMwYzliYWFkMzUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4OTcs
NiArMTg5Nyw3IEBAIHBsYXRmb3JtL1JlZmVycmVyUG9saWN5LmNwcAogcGxhdGZvcm0vUmVtb3Rl
Q29tbWFuZExpc3RlbmVyLmNwcAogcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNw
cAogcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmNwcAorcGxhdGZvcm0vU2Nyb2xsQWxpZ25tZW50
LmNwcAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uLmNwcAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
aW9uS2luZXRpYy5jcHAKIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAt
MjM5Myw3ICsyMzk0LDYgQEAgcmVuZGVyaW5nL1JlbmRlclZUVEN1ZS5jcHAKIHJlbmRlcmluZy9S
ZW5kZXJWaWRlby5jcHAKIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAogcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5jcHAKLXJlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuY3BwCiByZW5kZXJpbmcvU2Vs
ZWN0aW9uUmFuZ2VEYXRhLmNwcAogcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCiByZW5k
ZXJpbmcvVGFibGVMYXlvdXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZhODY1MDRlMTZiMzAzMzM1Y2ZhOWYxOGUxOTkw
OWViMmE0NDUyMy4uMDA3NWU4ZDIxNjVhMzViMWYxZWI3MzVlN2NjMzRhMDM1OTFjOWMxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjA0Niw2ICsyMDQ2LDcgQEAKIAkJNTlDMjgwNDYxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVy
cm9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlD
MjgwNDQxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9ycy5oICovOyB9OwogCQk1QTU3NEYyNTEz
MURCOTM5MDA0NzFCODggLyogUmVuZGVyUXVvdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVBNTc0RjIzMTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJR
dW90ZS5oICovOyB9OwogCQk1QTU3NEYyOTEzMURCOTZEMDA0NzFCODggLyogUXVvdGVzRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUE1NzRGMjcx
MzFEQjk2RDAwNDcxQjg4IC8qIFF1b3Rlc0RhdGEuaCAqLzsgfTsKKwkJNUIyRDc2NzIyN0IxNDYw
ODAwRjlCQTNDIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUIyRDc2NzAyN0IxNDYwODAwRjlCQTNDIC8qIFNjcm9sbEFs
aWdubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAvKiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QjMwNjk1QjE4QjNEMzQ1
MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5oICovOyB9OwogCQk1QjQ2NjU2MzI1RDE0QzBB
MDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCNDY2NTVGMjVEMTRDMDkwMDBDRkUxNCAv
KiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVCNDY2NTY0MjVEMTRDMEEwMDBDRkUxNCAvKiBTY3Jv
bGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUI0NjY1NjAyNUQxNEMwQTAwMENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRv
clN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTIwODAsNyArMjA4MSw2IEBACiAJCTVDRUVFNDM2MUY1RjhGMjEwMDE0QTVGNSAvKiBSZWN0
RWRnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
OTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0RWRnZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1RDIxQTgwMzEzRUNFNURGMDBCQjcwNjQg
LyogV2ViVlRUUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1RDIxQTgwMTEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmggKi87IH07
CiAJCTVENTk3NUIzMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDU5NzVCMTE5NjM1RjExMDBE
MDA4NzggLyogU3lzdGVtVmVyc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCTVEOTI1QjY4MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGln
bm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVE
OTI1QjY2MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1REE1RTBGRDEwMkI5NTM4MDAw
ODhDRjkgLyogSlNXZWJTb2NrZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVEQTVFMEZCMTAyQjk1MzgwMDA4OENGOSAvKiBKU1dlYlNvY2tldC5oICov
OyB9OwogCQk1REIxQkM2QTEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REIxQkM2ODEwNzE1
QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggKi87IH07CiAJCTVERjdGNUMyMEYwMUY5
MkEwMDUyNkI0QiAvKiBDU1NQcm9wZXJ0eU5hbWVzLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODBFRjA5RDEyQjIwMDAw
RTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oICovOyB9OwpAQCAtMTA1NjcsNiArMTA1NjcsOCBA
QAogCQk1QTU3NEYyNzEzMURCOTZEMDA0NzFCODggLyogUXVvdGVzRGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90ZXNEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVBOTE0NjlFOEU5Rjg0ODVDMzdBMjg3NiAvKiBKU1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdHcmFwaGlj
c0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjFFMEU0MzI1RDE2
MjlCMDAyNzIyODEgLyogU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNUIyRDc2NkUyN0IxNDYwNzAwRjlCQTNDIC8qIFNjcm9sbEFsaWdubWVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxBbGlnbm1l
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QjJENzY3MDI3QjE0NjA4MDBG
OUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcm9sbEFsaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjMw
Njk1QTE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJHTERyYXdCdWZmZXJzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUIzMDY5NUIxOEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJh
d0J1ZmZlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR0xEcmF3QnVm
ZmVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QjMwNjk1QzE4QjNEMzQ1MDA5
OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
R0xEcmF3QnVmZmVycy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDY3NCw4
ICsxMDY3Niw2IEBACiAJCTVEMjFBODAxMTNFQ0U1REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVlRUUGFyc2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVENTk3NUIxMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0
ZW1WZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbVZlcnNp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQ1OTc1QjIxOTYzNUYxMTAwRDAw
ODc4IC8qIFN5c3RlbVZlcnNpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBTeXN0ZW1WZXJzaW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
RDkyNUI2NTBGNjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbEFsaWdubWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVEOTI1QjY2MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxB
bGlnbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsQWxpZ25t
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQTVFMEZBMTAyQjk1MzgwMDA4
OENGOSAvKiBKU1dlYlNvY2tldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dlYlNvY2tldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQTVF
MEZCMTAyQjk1MzgwMDA4OENGOSAvKiBKU1dlYlNvY2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYlNvY2tldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1REIxQkM2ODEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybVNvdXJjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzAwNzAsNiArMzAwNzAsOCBAQAogCQkJCTQxMTIyM0I4MjYwMjQ0
RkUwMEIwQTBCNiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5oICovLAogCQkJ
CUJDOEFFMzRDMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5jcHAgKi8sCiAJCQkJ
QkM4QUUzNEQxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggKi8sCisJCQkJNUIy
RDc2NkUyN0IxNDYwNzAwRjlCQTNDIC8qIFNjcm9sbEFsaWdubWVudC5jcHAgKi8sCisJCQkJNUIy
RDc2NzAyN0IxNDYwODAwRjlCQTNDIC8qIFNjcm9sbEFsaWdubWVudC5oICovLAogCQkJCTBGNkVB
RDY2MjZGRTcyODAwMDA2NEQwMyAvKiBTY3JvbGxBbmltYXRpb24uY3BwICovLAogCQkJCTBGQTYx
QjBDMjZGNDMyMTIwMDFBQURCNiAvKiBTY3JvbGxBbmltYXRpb24uaCAqLywKIAkJCQkwRkM2OTJC
QzI1N0MwRjQxMDA5OEUzRjkgLyogU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAgKi8sCkBAIC0z
MjE2OCw4ICszMjE3MCw2IEBACiAJCQkJQkUyMDUwN0MxOEE0NThCMTAwODA2NDdFIC8qIFJlbmRl
clZUVEN1ZS5oICovLAogCQkJCUE4NzFERkUxMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRn
ZXQuY3BwICovLAogCQkJCUE4NzFERkUwMEExNTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQu
aCAqLywKLQkJCQk1RDkyNUI2NTBGNjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50LmNw
cCAqLywKLQkJCQk1RDkyNUI2NjBGNjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50Lmgg
Ki8sCiAJCQkJNDRCMzhCRjkyNTM2OUE4ODAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5j
cHAgKi8sCiAJCQkJNDRCMzhCRjQyNTM2OTAxQTAwQTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0
YS5oICovLAogCQkJCUU0NDBGRDU0MjVBNEFGRUUwMEY3Qzg0OSAvKiBTdHlsZWRNYXJrZWRUZXh0
LmNwcCAqLywKQEAgLTM3MDc4LDcgKzM3MDc4LDcgQEAKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5
RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3
MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVh
ZGVycyAqLywKLQkJCQk1RDkyNUI2ODBGNjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjJENzY3MjI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xs
QWxpZ25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkE2MUIwRTI2RjQzMjEzMDAxQUFEQjYg
LyogU2Nyb2xsQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBFMDA5QzI2RjkyRDg0
MDBBQ0U5QzYgLyogU2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBTY3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAppbmRleCA2ZDU4ZTEwYjU1YWZjOWZiZmJjOGU2MzgzYjE3M2Y4NGIxZjU2YmIy
Li44ZGZjYmViZTNkZDExZjZlZmZiYTc4OWMyMmFiNGE4YTBkN2ZkMjE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAg
LTMyNjYsNyArMzI2Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtl
VmlzaWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYKICAgICAgICAgcGFyZW50
T2JqZWN0KCktPnNjcm9sbFRvTWFrZVZpc2libGUoKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyLT5zY3JvbGxSZWN0VG9WaXNp
YmxlKGJvdW5kaW5nQm94UmVjdCgpLCBmYWxzZSwgb3B0aW9ucyk7CisgICAgICAgIEZyYW1lVmll
dzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShib3VuZGluZ0JveFJlY3QoKSwgKnJlbmRlcmVyLCBmYWxz
ZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtl
VmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRSZWN0JiBzdWJmb2N1cykgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9i
amVjdFRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0Fj
Y2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwCmluZGV4IDRkM2NmYjc1YmE2MDYxODQyZjJh
NjEzMWZlMDc5ZTQ1Njc1MDRkMDIuLjZiMjI2NjQyYjgzMmQwYmE4MjcxYjQ2OGY2OWFjNzEzNTAw
MTczOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNj
ZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2JqZWN0VGV4dEF0c3BpLmNwcApAQCAtOTkzLDcg
Kzk5Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNp
YmxlKGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNlCiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAotICAgIG1fY29yZU9iamVjdC0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0
LCBmYWxzZSwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIGFsaWduWCwgYWxpZ25ZLCBT
aG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgRnJhbWVWaWV3Ojpz
Y3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsICptX2NvcmVPYmplY3QtPnJlbmRlcmVyKCksIGZhbHNl
LCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDU5YzkzNWI2YjJjYzI0Y2Q2M2RkMTY5MmE2YmNhZThj
OGRjZTRiZTcuLjIxOWMwZjMxNTk5YTlkOGY1NTE5NDQwY2ZjZjA5YjEwMDMwYjdhMTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKQEAgLTEwMjgsNyArMTAyOCw3IEBAIHZvaWQgRWxlbWVudDo6c2Ny
b2xsSW50b1ZpZXcoc3RkOjpvcHRpb25hbDxzdGQ6OnZhcmlhbnQ8Ym9vbCwgU2Nyb2xsSW50b1Zp
ZXdPcHRpCiAgICAgICAgIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vLAogICAg
ICAgICBvcHRpb25zLmJlaGF2aW9yLnZhbHVlX29yKFNjcm9sbEJlaGF2aW9yOjpBdXRvKQogICAg
IH07Ci0gICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywg
aW5zaWRlRml4ZWQsIHZpc2libGVPcHRpb25zKTsKKyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RU
b1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsICpyZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgdmlzaWJs
ZU9wdGlvbnMpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KGJvb2wgYWxpZ25U
b1RvcCkgCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
KGJvb2wgYWxpZ25Ub1RvcCkKICAgICBhdXRvIGFsaWduWCA9IFNjcm9sbEFsaWdubWVudDo6YWxp
Z25Ub0VkZ2VJZk5lZWRlZDsKICAgICBhbGlnblguZGlzYWJsZUxlZ2FjeUhvcml6b250YWxWaXNp
YmlsaXR5VGhyZXNob2xkKCk7CiAKLSAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxl
KGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZl
YWwsIGFsaWduWCwgYWxpZ25ZLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9
KTsKKyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsICpy
ZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIGFs
aWduWCwgYWxpZ25ZLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKIH0K
IAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmlld0lmTmVlZGVkKGJvb2wgY2VudGVySWZOZWVk
ZWQpCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZO
ZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCkKICAgICBhdXRvIGFsaWduWCA9IGNlbnRlcklmTmVl
ZGVkID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkIDogU2Nyb2xsQWxpZ25t
ZW50OjphbGlnblRvRWRnZUlmTmVlZGVkOwogICAgIGFsaWduWC5kaXNhYmxlTGVnYWN5SG9yaXpv
bnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKTsKIAotICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1v
ZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxp
bmc6Ok5vIH0pOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJv
dW5kcywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJl
dmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5v
IH0pOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wg
Y2VudGVySWZOb3RWaXNpYmxlKQpAQCAtMTA3NSwxMCArMTA3NSw4IEBAIHZvaWQgRWxlbWVudDo6
c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9vbCBjZW50ZXJJZk5vdFZpc2libGUpCiAgICAg
CiAgICAgYm9vbCBpbnNpZGVGaXhlZDsKICAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0g
cmVuZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRlRml4
ZWQpOwotICAgIGlmIChjZW50ZXJJZk5vdFZpc2libGUpCi0gICAgICAgIHJlbmRlcmVyKCktPnNj
cm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlv
blJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTm90Vmlz
aWJsZSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTm90VmlzaWJsZSwgU2hvdWxkQWxs
b3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7Ci0gICAgZWxzZQotICAgICAgICByZW5kZXJl
cigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBT
ZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJ
Zk5vdFZpc2libGUsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5vdFZpc2libGUsIFNo
b3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOworICAgIGF1dG8gYWxpZ24gPSBj
ZW50ZXJJZk5vdFZpc2libGUgPyBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNp
YmxlIDogU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTm90VmlzaWJsZTsKKyAgICBGcmFt
ZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsICpyZW5kZXJlcigpLCBp
bnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIGFsaWduLCBhbGlnbiwg
U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CiB9CiAKIHZvaWQgRWxlbWVu
dDo6c2Nyb2xsQnkoY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCBhZGFiOWQxYThjYzdjMDlkY2Y5ZDY3
ODY4ZTNmZTA4OTcyMzRkYmZmLi43YzE0YTczODA1MjI3ZjYzYTkzYTNiZTYwYzg1OGQ1NjI3MjBi
OTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjQ1
NywyNCArMjQ1NywyNCBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24oU2Vs
ZWN0aW9uUmV2ZWFsTW9kZSByZXZlYWxNb2RlLCBjb25zdCBTY3JvbAogCiAgICAgUG9zaXRpb24g
c3RhcnQgPSBtX3NlbGVjdGlvbi5zdGFydCgpOwogICAgIEFTU0VSVChzdGFydC5kZXByZWNhdGVk
Tm9kZSgpKTsKLSAgICBpZiAoc3RhcnQuZGVwcmVjYXRlZE5vZGUoKSAmJiBzdGFydC5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpKSB7CisgICAgaWYgKCFzdGFydC5kZXByZWNhdGVkTm9kZSgp
IHx8ICFzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm47
CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGxh
eWVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIo
KSkgewotICAgICAgICAgICAgaWYgKCFtX3Njcm9sbGluZ1N1cHByZXNzQ291bnQpIHsKLSAgICAg
ICAgICAgICAgICBsYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwg
eyByZXZlYWxNb2RlLCBhbGlnbm1lbnQsIGFsaWdubWVudCwgU2hvdWxkQWxsb3dDcm9zc09yaWdp
blNjcm9sbGluZzo6WWVzLCBzY3JvbGxCZWhhdmlvcn0pOwotICAgICAgICAgICAgICAgIHVwZGF0
ZUFwcGVhcmFuY2UoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9kb2N1bWVudC0+cGFnZSgpKQot
ICAgICAgICAgICAgICAgICAgICBtX2RvY3VtZW50LT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
Lm5vdGlmeVJldmVhbGVkU2VsZWN0aW9uQnlTY3JvbGxpbmdGcmFtZSgqbV9kb2N1bWVudC0+ZnJh
bWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIC8vIEZJWE1F
OiBUaGlzIGNvZGUgb25seSBoYW5kbGVzIHNjcm9sbGluZyB0aGUgc3RhcnRDb250YWluZXIncyBs
YXllciwgYnV0Ci0gICAgICAgIC8vIHRoZSBzZWxlY3Rpb24gcmVjdCBjb3VsZCBpbnRlcnNlY3Qg
bW9yZSB0aGFuIGp1c3QgdGhhdC4KLSAgICAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS80Nzk5
ODk5Pi4KLSAgICAgICAgaWYgKHN0YXJ0LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPnNj
cm9sbFJlY3RUb1Zpc2libGUocmVjdCwgaW5zaWRlRml4ZWQsIHsgcmV2ZWFsTW9kZSwgYWxpZ25t
ZW50LCBhbGlnbm1lbnQsIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Olllcywgc2Ny
b2xsQmVoYXZpb3J9KSkKLSAgICAgICAgICAgIHVwZGF0ZUFwcGVhcmFuY2UoKTsKKyAgICBpZiAo
bV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50KQorICAgICAgICByZXR1cm47CisjZW5kaWYKKworICAg
IC8vIEZJWE1FOiBUaGlzIGNvZGUgb25seSBoYW5kbGVzIHNjcm9sbGluZyB0aGUgc3RhcnRDb250
YWluZXIncyBsYXllciwgYnV0CisgICAgLy8gdGhlIHNlbGVjdGlvbiByZWN0IGNvdWxkIGludGVy
c2VjdCBtb3JlIHRoYW4ganVzdCB0aGF0LgorICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNDc5
OTg5OT4uCisgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsICpzdGFydC5k
ZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyByZXZlYWxNb2RlLCBh
bGlnbm1lbnQsIGFsaWdubWVudCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVz
LCBzY3JvbGxCZWhhdmlvciB9KTsKKyAgICB1cGRhdGVBcHBlYXJhbmNlKCk7CisKKyNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQorICAgIGlmIChtX2RvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIG1f
ZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubm90aWZ5UmV2ZWFsZWRTZWxlY3Rp
b25CeVNjcm9sbGluZ0ZyYW1lKCptX2RvY3VtZW50LT5mcmFtZSgpKTsKICNlbmRpZgotICAgIH0K
IH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDE2YjFlMjI5NGY0NjdlYTNmMGYwNzY3MjRiZDBjMDg3
MDQ4ZmVlZTYuLmJmMjFkN2UxM2M4YmE1OTQ2ZTg4MmNlMWIxYWJkYmEwYTExNjRlNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEwMSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIlNW
R0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgog
I2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCkBAIC0yNDQxLDcgKzI0NDIs
MTQ2IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxUb0ZvY3VzZWRFbGVtZW50SW50ZXJuYWwoKQog
CiAgICAgYm9vbCBpbnNpZGVGaXhlZDsKICAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0g
cmVuZGVyZXItPmFic29sdXRlQW5jaG9yUmVjdCgmaW5zaWRlRml4ZWQpOwotICAgIHJlbmRlcmVy
LT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBtX3Nl
bGVjdGlvblJldmVhbE1vZGVGb3JGb2N1c2VkRWxlbWVudCwgU2Nyb2xsQWxpZ25tZW50OjphbGln
bkNlbnRlcklmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNo
b3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOworICAgIEZyYW1lVmlldzo6c2Ny
b2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyLCBpbnNpZGVGaXhlZCwg
eyBtX3NlbGVjdGlvblJldmVhbE1vZGVGb3JGb2N1c2VkRWxlbWVudCwgU2Nyb2xsQWxpZ25tZW50
OjphbGlnbkNlbnRlcklmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVk
ZWQsIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOworfQorCitib29sIEZy
YW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJl
Y3QsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0
IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJiBvcHRpb25zKQoreworICAgIGlmIChvcHRpb25z
LnJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6RG9Ob3RSZXZlYWwpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJlbmRlcmVyLmVuY2xv
c2luZ0xheWVyKCk7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIFJlbmRlckxheWVyOjplbmNsb3Np
bmdTY3JvbGxhYmxlTGF5ZXIgaGVyZSwgYnV0IHRoYXQgc2VlbXMgdG8gc2tpcCBvdmVyZmxvdzpo
aWRkZW4gbGF5ZXJzLgorICAgIExheW91dFJlY3QgYWRqdXN0ZWRSZWN0ID0gYWJzb2x1dGVSZWN0
OworICAgIGZvciAoOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+ZW5jbG9zaW5nQ29udGFpbmluZ0Js
b2NrTGF5ZXIoQ3Jvc3NGcmFtZUJvdW5kYXJpZXM6Ok5vKSkgeworICAgICAgICBpZiAobGF5ZXIt
PnNob3VsZFRyeVRvU2Nyb2xsRm9yU2Nyb2xsSW50b1ZpZXcoKSkKKyAgICAgICAgICAgIGFkanVz
dGVkUmVjdCA9IGxheWVyLT5lbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCktPnNjcm9sbFJlY3RU
b1Zpc2libGUoYWRqdXN0ZWRSZWN0LCBvcHRpb25zKTsKKyAgICB9CisKKyAgICBhdXRvJiBmcmFt
ZVZpZXcgPSByZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCk7CisgICAgY29uc3QgYXV0byogb3du
ZXJFbGVtZW50ID0gZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKSA/IGZyYW1lVmlldy5mcmFt
ZSgpLmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpIDogbnVsbHB0cjsKKyAgICBpZiAob3duZXJF
bGVtZW50ICYmIG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgZnJhbWVWaWV3LnNj
cm9sbFJlY3RUb1Zpc2libGVJbkNoaWxkVmlldyhhZGp1c3RlZFJlY3QsIGluc2lkZUZpeGVkLCBv
cHRpb25zLCBvd25lckVsZW1lbnQpOworICAgIGVsc2UKKyAgICAgICAgZnJhbWVWaWV3LnNjcm9s
bFJlY3RUb1Zpc2libGVJblRvcExldmVsVmlldyhhZGp1c3RlZFJlY3QsIGluc2lkZUZpeGVkLCBv
cHRpb25zKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFNjcm9sbFBvc2l0aW9uQ2hh
bmdlT3B0aW9ucyBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KGNvbnN0IEZy
YW1lVmlldyYgZnJhbWVWaWV3LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTY3JvbGxSZWN0VG9W
aXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9u
cyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7Cisg
ICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5ldmVudEhhbmRsZXIoKS5hdXRvc2Nyb2xsSW5Qcm9n
cmVzcygpICYmIGVsZW1lbnQgJiYgdXNlU21vb3RoU2Nyb2xsaW5nKG9wdGlvbnMuYmVoYXZpb3Is
IGVsZW1lbnQpKQorICAgICAgICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBTY3Jv
bGxJc0FuaW1hdGVkOjpZZXM7CisgICAgcmV0dXJuIHNjcm9sbFBvc2l0aW9uT3B0aW9uczsKK307
CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlSW5DaGlsZFZpZXcoY29uc3Qg
TGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxS
ZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50
KiBvd25lckVsZW1lbnQpCit7CisgICAgY29uc3QgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZyYW1l
RWxlbWVudEJhc2UgPSBudWxscHRyOworICAgIGlmIChpczxIVE1MRnJhbWVFbGVtZW50QmFzZT4o
Km93bmVyRWxlbWVudCkpCisgICAgICAgIGZyYW1lRWxlbWVudEJhc2UgPSBkb3duY2FzdDxIVE1M
RnJhbWVFbGVtZW50QmFzZT4ob3duZXJFbGVtZW50KTsKKworICAgIC8vIElmIHNjcm9sbGJhcnMg
YXJlbid0IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBwZXJtaXQgc2Nyb2xsaW5nLgorICAgIGlmIChm
cmFtZUVsZW1lbnRCYXNlICYmIGZyYW1lRWxlbWVudEJhc2UtPnNjcm9sbGluZ01vZGUoKSA9PSBT
Y3JvbGxiYXJNb2RlOjpBbHdheXNPZmYpIHsKKyAgICAgICAgLy8gSWYgc2Nyb2xsYmFycyBhcmUg
Zm9yYmlkZGVuLCB1c2VyIGluaXRpYXRlZCBzY3JvbGxzIHNob3VsZCBvYnZpb3VzbHkgYmUgaWdu
b3JlZC4KKyAgICAgICAgaWYgKHdhc1Njcm9sbGVkQnlVc2VyKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIC8vIEZvcmJpZCBhdXRvc2Nyb2xscyB3aGVuIHNjcm9sbGJhcnMgYXJlIG9m
ZiwgYnV0IHBlcm1pdHMgb3RoZXIgcHJvZ3JhbW1hdGljIHNjcm9sbHMsIGxpa2UgbmF2aWdhdGlv
biB0byBhbiBhbmNob3IuCisgICAgICAgIGlmIChmcmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1dG9z
Y3JvbGxJblByb2dyZXNzKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
SWYgdGhpcyBhc3NlcnRpb24gZmlyZXMgd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBvd25lckVsZW1l
bnQgZnJvbSBiZWluZyBkZXN0cm95ZWQuCisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1h
aW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOworICAgIGF1dG8gdmlld1JlY3QgPSB2aXNp
YmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJl
Y3QpOworCisgICAgLy8gc2Nyb2xsLXBhZGRpbmcgYXBwbGllcyB0byB0aGUgc2Nyb2xsIGNvbnRh
aW5lciwgYnV0IGV4cGFuZCB0aGUgcmVjdGFuZ2xlIHRoYXQgd2Ugd2FudCB0byBleHBvc2UgaW4g
b3JkZXIKKyAgICAvLyBzaW11bGF0ZSBwYWRkaW5nIHRoZSBzY3JvbGwgY29udGFpbmVyLiBUaGlz
IHJlY3RhbmdsZSBpcyBwYXNzZWQgdXAgdGhlIHRyZWUgb2Ygc2Nyb2xsaW5nIGVsZW1lbnRzIHRv
CisgICAgLy8gZW5zdXJlIHRoYXQgdGhlIHBhZGRpbmcgb24gdGhpcyBzY3JvbGwgY29udGFpbmVy
IGlzIG1haW50YWluZWQuCisgICAgYXV0byB0YXJnZXRSZWN0ID0gYWJzb2x1dGVSZWN0OworICAg
IGF1dG8qIGVsZW1lbnQgPSBvd25lckVsZW1lbnQtPmNvbnRlbnREb2N1bWVudCgpID8gb3duZXJF
bGVtZW50LT5jb250ZW50RG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwor
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1lbnQgPyBlbGVtZW50LT5yZW5kZXJCb3goKSA6
IG51bGxwdHIpCisgICAgICAgIHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlcmVyLT5zY3JvbGxQYWRk
aW5nRm9yVmlld3BvcnRSZWN0KHZpZXdSZWN0KSk7CisKKyAgICBhdXRvIHJldmVhbFJlY3QgPSBn
ZXRQb3NzaWJseUZpeGVkUmVjdFRvRXhwb3NlKHZpZXdSZWN0LCB0YXJnZXRSZWN0LCBpbnNpZGVG
aXhlZCwgb3B0aW9ucy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsKKyAgICBJbnRQb2ludCBzY3Jv
bGxQb3NpdGlvbihyb3VuZGVkSW50UG9pbnQocmV2ZWFsUmVjdC5sb2NhdGlvbigpKSk7CisKKyAg
ICAvLyBBZGp1c3Qgb2Zmc2V0cyBpZiB0aGV5J3JlIG91dHNpZGUgb2YgdGhlIGFsbG93YWJsZSBy
YW5nZS4KKyAgICBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uLmNvbnN0cmFpbmVkQmV0
d2VlbihJbnRQb2ludCgpLCBJbnRQb2ludChjb250ZW50c1NpemUoKSkpOworCisgICAgLy8gRklY
TUU6IFNob3VsZCB3ZSB1c2UgY29udGVudERvY3VtZW50KCktPnNjcm9sbGluZ0VsZW1lbnQoKT8K
KyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA1
OQorICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbkNo
YW5nZU9wdGlvbnNGb3JFbGVtZW50KCp0aGlzLCBlbGVtZW50LCBvcHRpb25zKSk7CisKKyAgICBp
ZiAob3B0aW9ucy5zaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nID09IFNob3VsZEFsbG93
Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIHx8ICFzYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVu
dCgpKSAKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IGlkZWFsbHkgbmVlZCB0byBk
ZXRlcm1pbmUgaWYgdGhpcyA8aWZyYW1lPiBpcyBpbnNpZGUgcG9zaXRpb246Zml4ZWQuCisgICAg
aWYgKGF1dG8qIG93bmVyUmVuZGVyZXIgPSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAg
ICAgIHNjcm9sbFJlY3RUb1Zpc2libGUoY29udGVudHNUb0NvbnRhaW5pbmdWaWV3Q29udGVudHMo
ZW5jbG9zaW5nSW50UmVjdCh0YXJnZXRSZWN0KSksICpvd25lclJlbmRlcmVyLCBmYWxzZSAvKiBp
bnNpZGVGaXhlZCAqLywgb3B0aW9ucyk7Cit9CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxSZWN0
VG9WaXNpYmxlSW5Ub3BMZXZlbFZpZXcoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBi
b29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9u
cykKK3sKKyAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6
OlJldmVhbFVwVG9NYWluRnJhbWUgJiYgZnJhbWUoKS5pc01haW5GcmFtZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdl
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2RlID09IFNlbGVj
dGlvblJldmVhbE1vZGU6OkRlbGVnYXRlTWFpbkZyYW1lU2Nyb2xsICYmIGZyYW1lKCkuaXNNYWlu
RnJhbWUoKSkgeworICAgICAgICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxNYWluRnJhbWVUb1JldmVh
bFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVSZWN0KSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBhdXRvIG1pblNjcm9sbFBvc2l0aW9uID0gbWluaW11bVNjcm9sbFBvc2l0aW9u
KCk7CisgICAgYXV0byBtYXhTY3JvbGxQb3NpdGlvbiA9IG1heGltdW1TY3JvbGxQb3NpdGlvbigp
OworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgYXV0byB2aWV3UmVjdCA9IHZpc2li
bGVDb250ZW50UmVjdCgpOworI2Vsc2UKKyAgICAvLyBGSVhNRTogQ29udGVudEluc2V0cyBzaG91
bGQgYmUgdGFrZW4gY2FyZSBvZiBpbiBVSSBwcm9jZXNzIHNpZGUuIHdlYmtpdC5vcmcvYi8xOTk2
ODIKKyAgICAvLyBUbyBkbyB0aGF0LCBnZXRSZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmlldyBu
ZWVkcyB0byByZXR1cm4gdGhlIGFkZGl0aW9uYWwgc2Nyb2xsaW5nIHRvIGRvIGJleW9uZCBjb250
ZW50IHJlY3QuCisgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCA9IHZpZXdSZWN0RXhwYW5kZWRCeUNv
bnRlbnRJbnNldHMoKTsKKworICAgIC8vIEZJWE1FOiB3ZWJraXQub3JnL2IvMTk5NjgzIEZyYW1l
Vmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0IGlzIHdyb25nIHdoZW4gY29udGVudCBpbnNldHMgYXJl
IHByZXNlbnQKKyAgICBtYXhTY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uRnJvbU9mZnNl
dChTY3JvbGxQb3NpdGlvbih0b3RhbENvbnRlbnRzU2l6ZSgpIC0gZmxvb3JlZEludFNpemUodmll
d1JlY3Quc2l6ZSgpKSkpOworCisgICAgYXV0byBjb250ZW50SW5zZXRzID0gcGFnZS0+Y29udGVu
dEluc2V0cygpOworICAgIG1pblNjcm9sbFBvc2l0aW9uLm1vdmUoLWNvbnRlbnRJbnNldHMubGVm
dCgpLCAtY29udGVudEluc2V0cy50b3AoKSk7CisgICAgbWF4U2Nyb2xsUG9zaXRpb24ubW92ZShj
b250ZW50SW5zZXRzLnJpZ2h0KCksIGNvbnRlbnRJbnNldHMuYm90dG9tKCkpOworI2VuZGlmCisg
ICAgLy8gTW92ZSB0aGUgdGFyZ2V0IHJlY3QgaW50byAic2Nyb2xsVmlldyBjb250ZW50cyIgY29v
cmRpbmF0ZXMuCisgICAgYXV0byB0YXJnZXRSZWN0ID0gYWJzb2x1dGVSZWN0OworICAgIHRhcmdl
dFJlY3QubW92ZSgwLCBoZWFkZXJIZWlnaHQoKSk7CisKKyAgICAvLyBzY3JvbGwtcGFkZGluZyBh
cHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSByZWN0YW5nbGUg
dGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVsYXRlIHBhZGRpbmcg
dGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1cCB0aGUgdHJl
ZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCB0aGUgcGFkZGlu
ZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAgICBhdXRvKiBlbGVt
ZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGF1dG8qIHJlbmRlckJveCA9IGVsZW1lbnQgPyBl
bGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHIpCisgICAgICAgIHRhcmdldFJlY3QuZXhwYW5k
KHJlbmRlckJveC0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOworCisg
ICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UG9zc2libHlGaXhlZFJlY3RUb0V4cG9zZSh2
aWV3UmVjdCwgdGFyZ2V0UmVjdCwgaW5zaWRlRml4ZWQsIG9wdGlvbnMuYWxpZ25YLCBvcHRpb25z
LmFsaWduWSk7CisKKyAgICAvLyBBdm9pZCBzY3JvbGxpbmcgdG8gdGhlIHJvdW5kZWQgdmFsdWUg
b2YgcmV2ZWFsUmVjdC5sb2NhdGlvbigpIGlmIHdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gc2Ny
b2xsCisgICAgaWYgKHJldmVhbFJlY3QgIT0gdmlld1JlY3QpIHsKKyAgICAgICAgLy8gRklYTUU6
IFNob3VsZCB3ZSB1c2UgZG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgpPworICAgICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA1OQorICAg
ICAgICBTY3JvbGxPZmZzZXQgY2xhbXBlZFNjcm9sbFBvc2l0aW9uID0gcm91bmRlZEludFBvaW50
KHJldmVhbFJlY3QubG9jYXRpb24oKSkuY29uc3RyYWluZWRCZXR3ZWVuKG1pblNjcm9sbFBvc2l0
aW9uLCBtYXhTY3JvbGxQb3NpdGlvbik7CisgICAgICAgIHNldFNjcm9sbFBvc2l0aW9uKGNsYW1w
ZWRTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zRm9yRWxlbWVudCgq
dGhpcywgZWxlbWVudCwgb3B0aW9ucykpOworICAgIH0KKworICAgIC8vIFRoaXMgaXMgdGhlIG91
dGVybW9zdCB2aWV3IG9mIGEgd2ViIHBhZ2UsIHNvIGFmdGVyIHNjcm9sbGluZyB0aGlzIHZpZXcg
d2UKKyAgICAvLyBzY3JvbGwgaXRzIGNvbnRhaW5lciBieSBjYWxsaW5nIFBhZ2U6OnNjcm9sbE1h
aW5GcmFtZVRvUmV2ZWFsUmVjdC4KKyAgICAvLyBUaGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0
aGUgTWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9ucworICAgIC8vIHRoYXQgcHV0IHdlYiB2aWV3
cyBpbnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBzdWNoIGFzIE1hYyBPUyBYIE1haWwuCisgICAg
Ly8gVGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVyIGFsc28ga25vd3Mg
YWJvdXQgdGhpcy4KKyAgICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxDb250YWluaW5nU2Nyb2xsVmll
d3NUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVSZWN0KSk7CiB9CiAKIHZvaWQg
RnJhbWVWaWV3Ojpjb250ZW50c1Jlc2l6ZWQoKQpAQCAtMzI4NCwxMSArMzQyNCwxMSBAQCB2b2lk
IEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoKQogICAgIC8vIFNjcm9sbCBuZXN0ZWQgbGF5ZXJz
IGFuZCBmcmFtZXMgdG8gcmV2ZWFsIHRoZSBhbmNob3IuCiAgICAgLy8gQWxpZ24gdG8gdGhlIHRv
cCBhbmQgdG8gdGhlIGNsb3Nlc3Qgc2lkZSAodGhpcyBtYXRjaGVzIG90aGVyIGJyb3dzZXJzKS4K
ICAgICBpZiAoYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0
aW5nTW9kZSgpKQotICAgICAgICBhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9W
aXNpYmxlKHJlY3QsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwg
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduVG9wQWx3YXlzLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKKyAg
ICAgICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCAqYW5jaG9yTm9kZS0+cmVuZGVyZXIoKSwg
aW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMs
IFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogICAgIGVsc2UgaWYgKGFu
Y2hvck5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCkuaXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUo
KSkKLSAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShy
ZWN0LCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFs
aWdubWVudDo6YWxpZ25SaWdodEFsd2F5cywgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlm
TmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKKyAgICAgICAg
c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCAqYW5jaG9yTm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRl
Rml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduUmlnaHRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hv
dWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CiAgICAgZWxzZQotICAgICAgICBh
bmNob3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsIGluc2lkZUZp
eGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGln
bkxlZnRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxk
QWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CisgICAgICAgIHNjcm9sbFJlY3RUb1Zp
c2libGUocmVjdCwgKmFuY2hvck5vZGUtPnJlbmRlcmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVj
dGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkxlZnRBbHdheXMs
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09y
aWdpblNjcm9sbGluZzo6Tm8gfSk7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBm
cmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQogICAgICAgICBjYWNo
ZS0+aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihhbmNob3JOb2RlLmdldCgpKTsKQEAgLTU3NzMsNiAr
NTkxMyw0NCBAQCBPdmVyc2Nyb2xsQmVoYXZpb3IgRnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3Jv
bGxCZWhhdmlvcigpICBjb25zdAogICAgICAgICByZXR1cm4gc2Nyb2xsaW5nT2JqZWN0LT5zdHls
ZSgpLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKICAgICByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9y
OjpBdXRvOwogfQorCitMYXlvdXRSZWN0IEZyYW1lVmlldzo6Z2V0UG9zc2libHlGaXhlZFJlY3RU
b0V4cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYg
ZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGln
blgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAoreworICAgIGlmICghaW5z
aWRlRml4ZWQpCisgICAgICAgIHJldHVybiBnZXRSZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmll
dyh2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdCwgYWxpZ25YLCBhbGlnblkpOworCisgICAgLy8gSWYg
dGhlIGVsZW1lbnQgaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkIGFuZCB3ZSdyZSBub3Qgc2NhbGVk
LCBubyBhbW91bnQgb2Ygc2Nyb2xsaW5nIGlzIGdvaW5nIHRvIG1vdmUgdGhpbmdzIGFyb3VuZC4K
KyAgICBpZiAoZnJhbWVTY2FsZUZhY3RvcigpID09IDEpCisgICAgICAgIHJldHVybiB2aXNpYmxl
UmVjdDsKKworICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyByZXR1cm4gdmlzaWJsZVJlY3Qg
YXMgd2VsbD8KKyAgICBpZiAoIWZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3cG9ydEVuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuIGdldFJlY3RUb0V4cG9zZUZvclNjcm9sbEludG9WaWV3KHZp
c2libGVSZWN0LCBleHBvc2VSZWN0LCBhbGlnblgsIGFsaWduWSk7CisKKyAgICAvLyBleHBvc2VS
ZWN0IGlzIGluIGFic29sdXRlIGNvb3JkcywgYWZmZWN0ZWQgYnkgcGFnZSBzY2FsZS4gVW5zY2Fs
ZSBpdC4KKyAgICBhdXRvIHVuc2NhbGVkRXhwb3NlUmVjdCA9IGV4cG9zZVJlY3Q7CisgICAgdW5z
Y2FsZWRFeHBvc2VSZWN0LnNjYWxlKDEgLyBmcmFtZVNjYWxlRmFjdG9yKCkpOworICAgIHVuc2Nh
bGVkRXhwb3NlUmVjdC5tb3ZlKDAsIC1oZWFkZXJIZWlnaHQoKSk7CisKKyAgICAvLyBUaGVzZSBh
cmUgYm90aCBpbiB1bnNjYWxlZCBjb29yZGluYXRlcy4KKyAgICBhdXRvIGxheW91dFZpZXdwb3J0
ID0gbGF5b3V0Vmlld3BvcnRSZWN0KCk7CisgICAgYXV0byB2aXN1YWxWaWV3cG9ydCA9IHZpc3Vh
bFZpZXdwb3J0UmVjdCgpOworCisgICAgLy8gVGhlIHJlY3QgdG8gZXhwb3NlIG1heSBiZSBwYXJ0
aWFsbHkgb2Zmc2NyZWVuLCB3aGljaCB3ZSBjYW4ndCBkbyBhbnl0aGluZyBhYm91dCB3aXRoIHBv
c2l0aW9uOmZpeGVkLgorICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5pbnRlcnNlY3QobGF5b3V0Vmll
d3BvcnQpOworCisgICAgLy8gTWFrZSBzdXJlIGl0J3Mgbm90IGxhcmdlciB0aGFuIHRoZSB2aXN1
YWwgdmlld3BvcnQ7IGlmIHNvLCB3ZSdsbCBqdXN0IG1vdmUgdG8gdGhlIHRvcCBsZWZ0LgorICAg
IHVuc2NhbGVkRXhwb3NlUmVjdC5zZXRTaXplKHVuc2NhbGVkRXhwb3NlUmVjdC5zaXplKCkuc2hy
dW5rVG8odmlzdWFsVmlld3BvcnQuc2l6ZSgpKSk7CisKKyAgICAvLyBDb21wdXRlIGhvdyBtdWNo
IHdlIGhhdmUgdG8gbW92ZSB0aGUgdmlzdWFsVmlld3BvcnQgdG8gcmV2ZWFsIHRoZSBwYXJ0IG9m
IHRoZSBsYXlvdXRWaWV3cG9ydCB0aGF0IGNvbnRhaW5zIGV4cG9zZVJlY3QuCisgICAgYXV0byBy
ZXF1aXJlZFZpc3VhbFZpZXdwb3J0ID0gZ2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXco
dmlzdWFsVmlld3BvcnQsIHVuc2NhbGVkRXhwb3NlUmVjdCwgYWxpZ25YLCBhbGlnblkpOworCisg
ICAgLy8gU2NhbGUgaXQgYmFjayB1cC4KKyAgICByZXF1aXJlZFZpc3VhbFZpZXdwb3J0LnNjYWxl
KGZyYW1lU2NhbGVGYWN0b3IoKSk7CisgICAgcmVxdWlyZWRWaXN1YWxWaWV3cG9ydC5tb3ZlKDAs
IGhlYWRlckhlaWdodCgpKTsKKyAgICByZXR1cm4gcmVxdWlyZWRWaXN1YWxWaWV3cG9ydDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjdW5kZWYgUEFHRV9JRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmgKaW5kZXggNjAyZDYwYzljOTcwNTVmNjQ4Y2E0OGZmZmJmOWM0MmI1YzE2ZjkzMy4u
ZDUwOGU2MDJkMjQ4NmZjZjdiZDZjMzZhNzU2ZGM1MDBiMTYzNjIxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5oCkBAIC0yNTQsNiArMjU0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsVG9G
b2N1c2VkRWxlbWVudEltbWVkaWF0ZWx5SWZOZWVkZWQoKTsKICAgICB2b2lkIHVwZGF0ZUxheWVy
UG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0
aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBmaW5hbDsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVj
dCwgY29uc3QgUmVuZGVyT2JqZWN0JiwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVj
dFRvVmlzaWJsZU9wdGlvbnMmKTsKIAogICAgIGJvb2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBk
YXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Nyb2xsVHlwZSA9IFNjcm9sbFR5cGU6OlVzZXIs
IFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIGZpbmFsOwogICAgIGJv
b2wgcmVxdWVzdEFuaW1hdGVkU2Nyb2xsVG9Qb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYs
IFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBpbmc6OkNsYW1wZWQpIGZpbmFsOwpAQCAtODgz
LDYgKzg4NCwxMCBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIE1vbm90b25pY1RpbWUgc0N1cnJl
bnRQYWludFRpbWVTdGFtcDsgLy8gdXNlZCBmb3IgZGV0ZWN0aW5nIGRlY29kZWQgcmVzb3VyY2Ug
dGhyYXNoIGluIHRoZSBjYWNoZQogCisgICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlSW5DaGls
ZFZpZXcoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBj
b25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYsIGNvbnN0IEhUTUxGcmFtZU93bmVyRWxl
bWVudCopOworICAgIHZvaWQgc2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KGNvbnN0
IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xs
UmVjdFRvVmlzaWJsZU9wdGlvbnMmKTsKKyAgICBMYXlvdXRSZWN0IGdldFBvc3NpYmx5Rml4ZWRS
ZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJl
Y3QmIGV4cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYg
YWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWSkgY29uc3Q7CisKICAgICBjb25z
dCBSZWY8RnJhbWU+IG1fZnJhbWU7CiAgICAgRnJhbWVWaWV3TGF5b3V0Q29udGV4dCBtX2xheW91
dENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFs
aWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjUzMzVmY2ZkZTYwNTdjNWU5Y2M3MDhlNDk0YzUxNzViMjY4Y2I2ZWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQu
Y3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFBvcnRpb25z
IGFyZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRp
b24uCisgKgorICogT3RoZXIgY29udHJpYnV0b3JzOgorICogICBSb2JlcnQgTydDYWxsYWhhbiA8
cm9jK0Bjcy5jbXUuZWR1PgorICogICBEYXZpZCBCYXJvbiA8ZGJhcm9uQGZhcy5oYXJ2YXJkLmVk
dT4KKyAqICAgQ2hyaXN0aWFuIEJpZXNpbmdlciA8Y2JpZXNpbmdlckB3ZWIuZGU+CisgKiAgIFJh
bmRhbGwgSmVzdXAgPHJqZXN1cEB3Z2F0ZS5jb20+CisgKiAgIFJvbGFuZCBNYWlueiA8cm9sYW5k
Lm1haW56QGluZm9ybWF0aWsubWVkLnVuaS1naWVzc2VuLmRlPgorICogICBKb3NoIFNvcmVmIDx0
aW1lbGVzc0BtYWMuY29tPgorICogICBCb3JpcyBaYmFyc2t5IDxiemJhcnNreUBtaXQuZWR1Pgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAg
MDIxMTAtMTMwMSAgVVNBCisgKgorICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRo
aXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyAqIG9mIGVpdGhlciB0aGUgTW96
aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEuMSwgZm91bmQgYXQKKyAqIGh0dHA6Ly93d3cu
bW96aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBvciB0aGUgR05VIEdlbmVyYWwgUHVibGljCisg
KiBMaWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBhdCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxl
ZnQvZ3BsLmh0bWwKKyAqICh0aGUgIkdQTCIpLCBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25z
IG9mIHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKKyAqIGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9z
ZSBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93IHVzZSBvZiB5b3VyCisgKiB2ZXJzaW9uIG9m
IHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiBvbmUgb2YgdGhvc2UgdHdvCisgKiBs
aWNlbnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1
c2UgeW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRl
IHlvdXIgZGVjaXNpb24gYnkKKyAqIGRlbGV0aW5ndGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJl
cGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5kCisgKiBvdGhlciBwcm92aXNpb25zIHJlcXVp
cmVkIGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMgdGhlIGNhc2UgbWF5IGJlLgorICogSWYgeW91
IGRvIG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMgYWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2Ug
eW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUg
TVBMIG9yIHRoZSBHUEwuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNj
cm9sbEFsaWdubWVudC5oIgorCisjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBTY3JvbGxB
bGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTm90VmlzaWJsZSA9IHsgQmVo
YXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpOb1Njcm9s
bCB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJ
Zk5vdFZpc2libGUgPSB7IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVoYXZpb3I6OkFsaWduVG9DbG9z
ZXN0RWRnZSwgQmVoYXZpb3I6Ok5vU2Nyb2xsIH07Citjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Ny
b2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkID0geyBCZWhhdmlvcjo6Tm9TY3JvbGws
IEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSB9Owor
V0VCQ09SRV9FWFBPUlQgY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxp
Z25Ub0VkZ2VJZk5lZWRlZCA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25U
b0Nsb3Nlc3RFZGdlLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlIH07CitXRUJDT1JFX0VY
UE9SVCBjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFs
d2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduQ2VudGVyLCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJl
aGF2aW9yOjpBbGlnbkNlbnRlciB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub3BBbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnblRvcCwgQmVoYXZpb3I6OkFs
aWduVG9wLCBCZWhhdmlvcjo6QWxpZ25Ub3AgfTsKK2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduUmlnaHRBbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnblJpZ2h0LCBC
ZWhhdmlvcjo6QWxpZ25SaWdodCwgQmVoYXZpb3I6OkFsaWduUmlnaHQgfTsKK2NvbnN0IFNjcm9s
bEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduTGVmdEFsd2F5cyA9IHsgQmVoYXZpb3I6
OkFsaWduTGVmdCwgQmVoYXZpb3I6OkFsaWduTGVmdCwgQmVoYXZpb3I6OkFsaWduTGVmdCB9Owor
Y29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Cb3R0b21BbHdheXMg
PSB7IEJlaGF2aW9yOjpBbGlnbkJvdHRvbSwgQmVoYXZpb3I6OkFsaWduQm90dG9tLCBCZWhhdmlv
cjo6QWxpZ25Cb3R0b20gfTsKKyAgICAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3IgYikKK3sKKyAgICBzd2l0Y2ggKGIpIHsK
KyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsOgorICAgICAgICBy
ZXR1cm4gdHMgPDwgIk5vU2Nyb2xsIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3I6OkFsaWduQ2VudGVyOgorICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduQ2VudGVyIjsKKyAg
ICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9wOgorICAgICAgICByZXR1
cm4gdHMgPDwgIkFsaWduVG9wIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6
OkFsaWduQm90dG9tOgorICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduQm90dG9tIjsKKyAgICBj
YXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduTGVmdDoKKyAgICAgICAgcmV0dXJu
IHRzIDw8ICJBbGlnbkxlZnQiOworICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6
QWxpZ25SaWdodDoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnblJpZ2h0IjsKKyAgICBjYXNl
IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZToKKyAgICAgICAg
cmV0dXJuIHRzIDw8ICJBbGlnblRvQ2xvc2VzdEVkZ2UiOworICAgIH0KKyAgICByZXR1cm4gdHM7
Cit9CisgICAgCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBT
Y3JvbGxBbGlnbm1lbnQmIHMpCit7CisgICAgcmV0dXJuIHRzIDw8ICJTY3JvbGxBbGlnbm1lbnQ6
IHZpc2libGU6ICIgPDwgcy5tX3JlY3RWaXNpYmxlIDw8ICIgaGlkZGVuOiAiIDw8IHMubV9yZWN0
SGlkZGVuIDw8ICIgcGFydGlhbDogIiA8PCBzLm1fcmVjdFBhcnRpYWw7Cit9CisKK307IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbGlnbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjAxYmI2ZWY5ZTIyZTdjNTk1NTg4YWI4YjMxMjc5MmEwODUzM2FlYWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQu
aApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA5LCAyMDE2
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUG9ydGlvbnMgYXJlIENv
cHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAq
CisgKiBPdGhlciBjb250cmlidXRvcnM6CisgKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNz
LmNtdS5lZHU+CisgKiAgIERhdmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgorICog
ICBDaHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KKyAqICAgUmFuZGFsbCBK
ZXN1cCA8cmplc3VwQHdnYXRlLmNvbT4KKyAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpA
aW5mb3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+CisgKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNz
QG1hYy5jb20+CisgKiAgIEJvcmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+CisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxl
IG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcworICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1
YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAorICogaHR0cDovL3d3dy5tb3ppbGxh
Lm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwu
aHRtbAorICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhl
IE1QTCBvciB0aGUgR1BMIGFyZQorICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3Zl
LiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBm
aWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KKyAqIGxpY2Vuc2Vz
ICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3Vy
CisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBk
ZWNpc2lvbiBieQorICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0
aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKKyAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkg
dGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCisgKiBJZiB5b3UgZG8gbm90
IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCisg
KiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3Ig
dGhlIEdQTC4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBU
ZXh0U3RyZWFtOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTY3JvbGxBbGln
bm1lbnQgeworCisgICAgZW51bSBjbGFzcyBCZWhhdmlvciB7CisgICAgICAgIE5vU2Nyb2xsLAor
ICAgICAgICBBbGlnbkNlbnRlciwKKyAgICAgICAgQWxpZ25Ub3AsCisgICAgICAgIEFsaWduQm90
dG9tLAorICAgICAgICBBbGlnbkxlZnQsCisgICAgICAgIEFsaWduUmlnaHQsCisgICAgICAgIEFs
aWduVG9DbG9zZXN0RWRnZQorICAgIH07CisKKyAgICBCZWhhdmlvciBnZXRWaXNpYmxlQmVoYXZp
b3IoKSBjb25zdCB7IHJldHVybiBtX3JlY3RWaXNpYmxlOyB9CisgICAgQmVoYXZpb3IgZ2V0UGFy
dGlhbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0UGFydGlhbDsgfQorICAgIEJlaGF2
aW9yIGdldEhpZGRlbkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0SGlkZGVuOyB9Cisg
ICAgdm9pZCBkaXNhYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKSB7IG1f
ZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgPSBmYWxzZTsgfQorICAg
IGJvb2wgbGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9lbmFibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZDsgfQor
CisgICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlcklmTm90VmlzaWJs
ZTsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOb3RWaXNp
YmxlOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxp
Z25DZW50ZXJJZk5lZWRlZDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xs
QWxpZ25tZW50IGFsaWduVG9FZGdlSWZOZWVkZWQ7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlckFsd2F5czsKKyAgICBzdGF0aWMgY29u
c3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9wQWx3YXlzOworICAgIHN0YXRpYyBjb25zdCBTY3Jv
bGxBbGlnbm1lbnQgYWxpZ25SaWdodEFsd2F5czsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxp
Z25tZW50IGFsaWduTGVmdEFsd2F5czsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50
IGFsaWduQm90dG9tQWx3YXlzOworCisgICAgQmVoYXZpb3IgbV9yZWN0VmlzaWJsZTsKKyAgICBC
ZWhhdmlvciBtX3JlY3RIaWRkZW47CisgICAgQmVoYXZpb3IgbV9yZWN0UGFydGlhbDsKKyAgICBi
b29sIG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgeyB0cnVlIH07
Cit9OworICAgIAorV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdU
Rjo6VGV4dFN0cmVhbSYsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3IpOworV0VCQ09SRV9FWFBP
UlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNj
cm9sbEFsaWdubWVudCYpOworCit9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCmluZGV4IDllNjFiZDdlZWRmYzUwNGZjNmM4
ZWViMTEyNTgyNjQ1YjYwZDFiY2YuLjY2MzIwYjUwYzk4ZmU4ZTQ1MjAyYzkzOWU3NzNlMzExZjFi
NjQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAg
LTgwMSw2ICs4MDEsODEgQEAgc3RkOjpvcHRpb25hbDxCb3hTaWRlPiBTY3JvbGxhYmxlQXJlYTo6
dGFyZ2V0U2lkZUZvclNjcm9sbERlbHRhKEZsb2F0U2l6ZSBkZWx0YSwKICAgICByZXR1cm4geyB9
OwogfQogCitMYXlvdXRSZWN0IFNjcm9sbGFibGVBcmVhOjpnZXRSZWN0VG9FeHBvc2VGb3JTY3Jv
bGxJbnRvVmlldyhjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVj
dCYgZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9s
bEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWluSW50
ZXJzZWN0Rm9yUmV2ZWFsID0gMzI7CisKKyAgICAvLyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRl
IFggYmVoYXZpb3IuCisgICAgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvciBzY3JvbGxYOworICAg
IExheW91dFJlY3QgZXhwb3NlUmVjdFgoZXhwb3NlUmVjdC54KCksIHZpc2libGVSZWN0LnkoKSwg
ZXhwb3NlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVjdC5oZWlnaHQoKSk7CisgICAgTGF5b3V0VW5p
dCBpbnRlcnNlY3RXaWR0aCA9IGludGVyc2VjdGlvbih2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdFgp
LndpZHRoKCk7CisgICAgaWYgKGludGVyc2VjdFdpZHRoID09IGV4cG9zZVJlY3Qud2lkdGgoKSB8
fCAoYWxpZ25YLmxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkRW5hYmxlZCgpICYm
IGludGVyc2VjdFdpZHRoID49IG1pbkludGVyc2VjdEZvclJldmVhbCkpIHsKKyAgICAgICAgLy8g
SWYgdGhlIHJlY3RhbmdsZSBpcyBmdWxseSB2aXNpYmxlLCB1c2UgdGhlIHNwZWNpZmllZCB2aXNp
YmxlIGJlaGF2aW9yLgorICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIHBhcnRpYWxseSB2
aXNpYmxlLCBidXQgb3ZlciBhIGNlcnRhaW4gdGhyZXNob2xkLAorICAgICAgICAvLyB0aGVuIHRy
ZWF0IGl0IGFzIGZ1bGx5IHZpc2libGUgdG8gYXZvaWQgdW5uZWNlc3NhcnkgaG9yaXpvbnRhbCBz
Y3JvbGxpbmcKKyAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRWaXNpYmxlQmVoYXZpb3IoKTsK
KyAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID09IHZpc2libGVSZWN0LndpZHRoKCkpIHsK
KyAgICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwg
ZG9uJ3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3Jr
LgorICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFZpc2libGVCZWhhdmlvcigpOworICAgICAg
ICBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikK
KyAgICAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9s
bDsKKyAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRoID4gMCkKKyAgICAgICAgLy8gSWYgdGhl
IHJlY3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgYnV0IG5vdCBhYm92ZSB0aGUgbWluaW11
bSB0aHJlc2hvbGQsIHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRpYWwgYmVoYXZpb3IKKyAgICAgICAg
c2Nyb2xsWCA9IGFsaWduWC5nZXRQYXJ0aWFsQmVoYXZpb3IoKTsKKyAgICBlbHNlCisgICAgICAg
IHNjcm9sbFggPSBhbGlnblguZ2V0SGlkZGVuQmVoYXZpb3IoKTsKKyAgICAvLyBJZiB3ZSdyZSB0
cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0IGlz
IGZ1cnRoZXIgcmlnaHQKKyAgICAvLyB0aGFuIHRoZSB2aXNpYmxlUmVjdCwgYW5kIG5vdCBiaWdn
ZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCB0aGVuIGFsaWduIHdpdGggdGhlIHJpZ2h0LgorICAg
IGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0
RWRnZSAmJiBleHBvc2VSZWN0Lm1heFgoKSA+IHZpc2libGVSZWN0Lm1heFgoKSAmJiBleHBvc2VS
ZWN0LndpZHRoKCkgPCB2aXNpYmxlUmVjdC53aWR0aCgpKQorICAgICAgICBzY3JvbGxYID0gU2Ny
b2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodDsKKworICAgIC8vIEdpdmVuIHRoZSBY
IGJlaGF2aW9yLCBjb21wdXRlIHRoZSBYIGNvb3JkaW5hdGUuCisgICAgTGF5b3V0VW5pdCB4Owor
ICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsKQor
ICAgICAgICB4ID0gdmlzaWJsZVJlY3QueCgpOworICAgIGVsc2UgaWYgKHNjcm9sbFggPT0gU2Ny
b2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodCkKKyAgICAgICAgeCA9IGV4cG9zZVJl
Y3QubWF4WCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKTsKKyAgICBlbHNlIGlmIChzY3JvbGxYID09
IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQorICAgICAgICB4ID0gZXhw
b3NlUmVjdC54KCkgKyAoZXhwb3NlUmVjdC53aWR0aCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKSkg
LyAyOworICAgIGVsc2UKKyAgICAgICAgeCA9IGV4cG9zZVJlY3QueCgpOworCisgICAgLy8gRGV0
ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBZIGJlaGF2aW9yLgorICAgIFNjcm9sbEFsaWdubWVudDo6
QmVoYXZpb3Igc2Nyb2xsWTsKKyAgICBMYXlvdXRSZWN0IGV4cG9zZVJlY3RZKHZpc2libGVSZWN0
LngoKSwgZXhwb3NlUmVjdC55KCksIHZpc2libGVSZWN0LndpZHRoKCksIGV4cG9zZVJlY3QuaGVp
Z2h0KCkpOworICAgIExheW91dFVuaXQgaW50ZXJzZWN0SGVpZ2h0ID0gaW50ZXJzZWN0aW9uKHZp
c2libGVSZWN0LCBleHBvc2VSZWN0WSkuaGVpZ2h0KCk7CisgICAgaWYgKGludGVyc2VjdEhlaWdo
dCA9PSBleHBvc2VSZWN0LmhlaWdodCgpKSB7CisgICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUg
aXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KKyAg
ICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKKyAgICB9IGVsc2Ug
aWYgKGludGVyc2VjdEhlaWdodCA9PSB2aXNpYmxlUmVjdC5oZWlnaHQoKSkgeworICAgICAgICAv
LyBJZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3Ro
ZXIgdHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsuCisgICAgICAg
IHNjcm9sbFkgPSBhbGlnblkuZ2V0VmlzaWJsZUJlaGF2aW9yKCk7CisgICAgICAgIGlmIChzY3Jv
bGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQorICAgICAgICAg
ICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsOworICAgIH0g
ZWxzZSBpZiAoaW50ZXJzZWN0SGVpZ2h0ID4gMCkKKyAgICAgICAgLy8gSWYgdGhlIHJlY3Rhbmds
ZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgcGFydGlhbCBiZWhhdmlv
cgorICAgICAgICBzY3JvbGxZID0gYWxpZ25ZLmdldFBhcnRpYWxCZWhhdmlvcigpOworICAgIGVs
c2UKKyAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRIaWRkZW5CZWhhdmlvcigpOworICAgIC8v
IElmIHdlJ3JlIHRyeWluZyB0byBhbGlnbiB0byB0aGUgY2xvc2VzdCBlZGdlLCBhbmQgdGhlIGV4
cG9zZVJlY3QgaXMgZnVydGhlciBkb3duCisgICAgLy8gdGhhbiB0aGUgdmlzaWJsZVJlY3QsIGFu
ZCBub3QgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgdGhlbiBhbGlnbiB3aXRoIHRoZSBi
b3R0b20uCisgICAgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxp
Z25Ub0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3QubWF4WSgpID4gdmlzaWJsZVJlY3QubWF4WSgp
ICYmIGV4cG9zZVJlY3QuaGVpZ2h0KCkgPCB2aXNpYmxlUmVjdC5oZWlnaHQoKSkKKyAgICAgICAg
c2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQm90dG9tOworCisgICAg
Ly8gR2l2ZW4gdGhlIFkgYmVoYXZpb3IsIGNvbXB1dGUgdGhlIFkgY29vcmRpbmF0ZS4KKyAgICBM
YXlvdXRVbml0IHk7CisgICAgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlv
cjo6Tm9TY3JvbGwpCisgICAgICAgIHkgPSB2aXNpYmxlUmVjdC55KCk7CisgICAgZWxzZSBpZiAo
c2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkJvdHRvbSkKKyAgICAg
ICAgeSA9IGV4cG9zZVJlY3QubWF4WSgpIC0gdmlzaWJsZVJlY3QuaGVpZ2h0KCk7CisgICAgZWxz
ZSBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikK
KyAgICAgICAgeSA9IGV4cG9zZVJlY3QueSgpICsgKGV4cG9zZVJlY3QuaGVpZ2h0KCkgLSB2aXNp
YmxlUmVjdC5oZWlnaHQoKSkgLyAyOworICAgIGVsc2UKKyAgICAgICAgeSA9IGV4cG9zZVJlY3Qu
eSgpOworCisgICAgcmV0dXJuIExheW91dFJlY3QoTGF5b3V0UG9pbnQoeCwgeSksIHZpc2libGVS
ZWN0LnNpemUoKSk7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxhYmxlQXJlYSkKIHsKICAgICB0cyA8PCBzY3Jv
bGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaAppbmRleCAyYmRjMThhMTk4ODAwNGZhZmMyMzc1NzJkYWYyOTI3MjkxZWQ4
ZGVmLi4wODQxNzQ5MWM0NzI5MjZiYzZmNGQ2N2YyZGViNjI5MDQ4YWRkMjFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiUmVjdEVkZ2VzLmgiCisjaW5jbHVkZSAiU2Nyb2xsQWxpZ25t
ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKQEAgLTM5OSw2ICs0MDAsOCBAQCBw
cm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc0xheWVyRm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAK
KyAgICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4cG9zZUZvclNjcm9sbEludG9WaWV3KGNvbnN0IExh
eW91dFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBleHBvc2VSZWN0LCBjb25z
dCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgSW50UmVjdCB2
aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNpYmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9s
bGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2aW9yKSBjb25zdDsKICAgICB2b2lkIHNjcm9s
bFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQb3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZmZhZGQwMWRmNGQwY2I1YzUxYTliMjE1OGEz
Mjk4Y2YwNTRiZDAxMy4uMWIyZjI3Y2Y3ZThkZDU5ZmU4MWJhODdjNTcxNjUzZWFjM2VkMmRjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xMjMsNyArMTIz
LDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgi
CkBAIC0xNDUsOCArMTQ0LDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCi0jZGVmaW5lIE1JTl9JTlRFUlNFQ1RfRk9S
X1JFVkVBTCAzMgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1M
TmFtZXM7CkBAIC01NjksMTYgKzU2Niw2IEBAIHN0YXRpYyBib29sIGNhbkNyZWF0ZVN0YWNraW5n
Q29udGV4dChjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpCiAgICAgICAgIHx8IGxheWVyLmVzdGFi
bGlzaGVzVG9wTGF5ZXIoKTsKIH0KIAotc3RhdGljIHZvaWQgZXhwYW5kU2Nyb2xsUmVjdFRvVmlz
aWJsZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQYWRkaW5nKFJlbmRlckJveCogcmVuZGVyQm94
LCBjb25zdCBMYXlvdXRSZWN0JiB2aWV3UmVjdCwgTGF5b3V0UmVjdCYgdGFyZ2V0UmVjdCkKLXsK
LSAgICBpZiAoIXJlbmRlckJveCkKLSAgICAgICAgcmV0dXJuOwotICAgIC8vIHNjcm9sbC1wYWRk
aW5nIGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250YWluZXIsIGJ1dCBleHBhbmQgdGhlIHJlY3Rh
bmdsZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGluIG9yZGVyCi0gICAgLy8gc2ltdWxhdGUgcGFk
ZGluZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhpcyByZWN0YW5nbGUgaXMgcGFzc2VkIHVwIHRo
ZSB0cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0bwotICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBw
YWRkaW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5lciBpcyBtYWludGFpbmVkLgotICAgIHRhcmdl
dFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGluZ0ZvclZpZXdwb3J0UmVjdCh2aWV3
UmVjdCkpOwotfQotCiBib29sIFJlbmRlckxheWVyOjpzaG91bGRCZU5vcm1hbEZsb3dPbmx5KCkg
Y29uc3QKIHsKICAgICBpZiAoY2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KCp0aGlzKSkKQEAgLTI0
NDQsMjIgKzI0MzEsNyBAQCBMYXlvdXRTaXplIFJlbmRlckxheWVyOjpvZmZzZXRGcm9tQW5jZXN0
b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIENvbAogICAgIHJldHVybiB0b0xh
eW91dFNpemUoY29udmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgTGF5b3V0UG9pbnQo
KSwgYWRqdXN0Rm9yQ29sdW1ucykpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgZnJhbWVFbGVt
ZW50QW5kVmlld1Blcm1pdFNjcm9sbChIVE1MRnJhbWVFbGVtZW50QmFzZSogZnJhbWVFbGVtZW50
QmFzZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCi17Ci0gICAgLy8gSWYgc2Nyb2xsYmFycyBhcmVu
J3QgZXhwbGljaXRseSBmb3JiaWRkZW4sIHBlcm1pdCBzY3JvbGxpbmcuCi0gICAgaWYgKGZyYW1l
RWxlbWVudEJhc2UgJiYgZnJhbWVFbGVtZW50QmFzZS0+c2Nyb2xsaW5nTW9kZSgpICE9IFNjcm9s
bGJhck1vZGU6OkFsd2F5c09mZikKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBz
Y3JvbGxiYXJzIGFyZSBmb3JiaWRkZW4sIHVzZXIgaW5pdGlhdGVkIHNjcm9sbHMgc2hvdWxkIG9i
dmlvdXNseSBiZSBpZ25vcmVkLgotICAgIGlmIChmcmFtZVZpZXcud2FzU2Nyb2xsZWRCeVVzZXIo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gRm9yYmlkIGF1dG9zY3JvbGxzIHdo
ZW4gc2Nyb2xsYmFycyBhcmUgb2ZmLCBidXQgcGVybWl0cyBvdGhlciBwcm9ncmFtbWF0aWMgc2Ny
b2xscywKLSAgICAvLyBsaWtlIG5hdmlnYXRpb24gdG8gYW4gYW5jaG9yLgotICAgIHJldHVybiAh
ZnJhbWVWaWV3LmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKTsK
LX0KLQotYm9vbCBSZW5kZXJMYXllcjo6YWxsb3dzQ3VycmVudFNjcm9sbCgpIGNvbnN0Citib29s
IFJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNjcm9sbEludG9WaWV3KCkgY29uc3QK
IHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzTm9uVmlzaWJsZU92ZXJmbG93KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTI0NzIsOSArMjQ0NCw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFs
bG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdAogICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94
KCk7CiAgICAgQVNTRVJUKGJveCk7IC8vIE9ubHkgYm94ZXMgY2FuIGhhdmUgb3ZlcmZsb3dDbGlw
IHNldC4KIAorICAgIC8vIFdoZW4gYXV0b3Njcm9sbGluZywgc2tpcCAib3ZlcmZsb3c6IGhpZGRl
biIuIFRoZSAicHJvZ3JhbW1hdGljYWxseSIgaGVyZSBpcworICAgIC8vIG1pc2xlYWRpbmc7IHRo
aXMgYXNrcyB3aGV0aGVyIHRoZSBib3ggaGFzICJvdmVyZmxvdzogc2Nyb2xsIiBvciAib3ZlcmZs
b3c6IGF1dG8uIgogICAgIGlmIChyZW5kZXJlcigpLmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0
b3Njcm9sbEluUHJvZ3Jlc3MoKSkgewotICAgICAgICAvLyBUaGUgInByb2dyYW1tYXRpY2FsbHki
IGhlcmUgaXMgbWlzbGVhZGluZzsgdGhpcyBhc2tzIHdoZXRoZXIgdGhlIGJveCBoYXMgc2Nyb2xs
YWJsZSBvdmVyZmxvdywKLSAgICAgICAgLy8gb3IgaXMgYSBzcGVjaWFsIGNhc2UgbGlrZSBhIGZv
cm0gY29udHJvbC4KICAgICAgICAgcmV0dXJuIGJveC0+Y2FuQmVQcm9ncmFtYXRpY2FsbHlTY3Jv
bGxlZCgpOwogICAgIH0KIApAQCAtMjQ4MiwyNDggKzI0NTQsMTAgQEAgYm9vbCBSZW5kZXJMYXll
cjo6YWxsb3dzQ3VycmVudFNjcm9sbCgpIGNvbnN0CiAgICAgcmV0dXJuIGJveC0+aGFzSG9yaXpv
bnRhbE92ZXJmbG93KCkgfHwgYm94LT5oYXNWZXJ0aWNhbE92ZXJmbG93KCk7CiB9CiAKLXZvaWQg
UmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1
dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9u
cyYgb3B0aW9ucykKLXsKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwg
IkxheWVyICIgPDwgdGhpcyA8PCAiIHNjcm9sbFJlY3RUb1Zpc2libGUgIiA8PCBhYnNvbHV0ZVJl
Y3QpOwotCi0gICAgTGF5b3V0UmVjdCBuZXdSZWN0ID0gYWJzb2x1dGVSZWN0OwotICAgIEZyYW1l
VmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAgYXV0
byogcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdDb250YWluaW5nQmxvY2tMYXllcihDcm9zc0ZyYW1l
Qm91bmRhcmllczo6Tm8pOwotCi0gICAgYXV0byBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNG
b3JFbGVtZW50ID0gW3RoaXMsIG9wdGlvbnNdKEVsZW1lbnQqIGVsZW1lbnQpCi0gICAgewotICAg
ICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0
aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIoKS5mcmFt
ZSgpLmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxJblByb2dyZXNzKCkgJiYgZWxlbWVudCAmJiB1
c2VTbW9vdGhTY3JvbGxpbmcob3B0aW9ucy5iZWhhdmlvciwgZWxlbWVudCkpCi0gICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBTY3JvbGxJc0FuaW1hdGVkOjpZZXM7
Ci0gICAgICAgIHJldHVybiBzY3JvbGxQb3NpdGlvbk9wdGlvbnM7Ci0gICAgfTsKLQotICAgIGlm
IChhbGxvd3NDdXJyZW50U2Nyb2xsKCkpIHsKLSAgICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEg
PSBlbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7Ci0KLSAgICAgICAgLy8gRG9uJ3Qgc2Nyb2xs
IHRvIHJldmVhbCBhbiBvdmVyZmxvdyBsYXllciB0aGF0IGlzIHJlc3RyaWN0ZWQgYnkgdGhlIC13
ZWJraXQtbGluZS1jbGFtcCBwcm9wZXJ0eS4KLSAgICAgICAgLy8gVGhpcyB3aWxsIHByZXZlbnQg
dXMgZnJvbSByZXZlYWxpbmcgdGV4dCBoaWRkZW4gYnkgdGhlIHNsaWRlciBpbiBTYWZhcmkgUlNT
LgotICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwotICAgICAgICBBU1NFUlQo
Ym94KTsKLSAgICAgICAgTGF5b3V0UmVjdCBsb2NhbEV4cG9zZVJlY3QoYm94LT5hYnNvbHV0ZVRv
TG9jYWxRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QoYWJzb2x1dGVSZWN0KSkpLmJvdW5kaW5nQm94
KCkpOwotCi0gICAgICAgIC8vIGxvY2FsRXhwb3NlZFJlY3QgaXMgbm93IHRoZSBhYnNvbHV0ZSBy
ZWN0IGluIGxvY2FsIGNvb3JkaW5hdGVzLCBidXQgcmVsYXRpdmUgdG8gdGhlCi0gICAgICAgIC8v
IGJvcmRlciBlZGdlLiBNYWtlIHRoZSByZWN0YW5nbGUgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGFi
bGUgYXJlYS4KLSAgICAgICAgbG9jYWxFeHBvc2VSZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQoYm94
LT5ib3JkZXJMZWZ0KCksIGJveC0+Ym9yZGVyVG9wKCkpKTsKLQotICAgICAgICBpZiAoYm94LT5z
aG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25MZWZ0KCkpIHsKLSAgICAgICAgICAgIC8vIEZv
ciBgZGlyZWN0aW9uOiBydGw7IHdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC17dGIsYnR9YCBhbmQg
YHdyaXRpbmctbW9kZTogdmVydGljYWwtcmxgCi0gICAgICAgICAgICAvLyBib3hlcywgdGhlIHNj
cm9sbCBiYXIgaXMgb24gdGhlIGxlZnQgc2lkZS4gVGhlIHZpc2libGUgcmVjdCBzdGFydHMgZnJv
bSB0aGUgcmlnaHQgc2lkZQotICAgICAgICAgICAgLy8gb2YgdGhlIHNjcm9sbCBiYXIuIFNvIHRo
ZSB4IG9mIGxvY2FsRXhwb3NlUmVjdCBzaG91bGQgc3RhcnQgZnJvbSB0aGUgc2FtZSBwb3NpdGlv
biB0b28uCi0gICAgICAgICAgICBsb2NhbEV4cG9zZVJlY3QubW92ZUJ5KExheW91dFBvaW50KC1z
Y3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXJXaWR0aCgpLCAwKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5kcygwX2x1LCAwX2x1LCBib3gtPmNsaWVudFdp
ZHRoKCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOwotICAgICAgICBleHBhbmRTY3JvbGxSZWN0VG9W
aXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcoYm94LCBsYXllckJvdW5kcywg
bG9jYWxFeHBvc2VSZWN0KTsKLSAgICAgICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UmVj
dFRvRXhwb3NlKGxheWVyQm91bmRzLCBsb2NhbEV4cG9zZVJlY3QsIGluc2lkZUZpeGVkLCBvcHRp
b25zLmFsaWduWCwgb3B0aW9ucy5hbGlnblkpOwotCi0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9
IHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxQb3NpdGlvbihzY3JvbGxQb3NpdGlvbkNoYW5n
ZU9wdGlvbnNGb3JFbGVtZW50KGJveC0+ZWxlbWVudCgpKSwgcmV2ZWFsUmVjdCwgbG9jYWxFeHBv
c2VSZWN0KSkKLSAgICAgICAgICAgIG5ld1JlY3QgPSByZXN1bHQudmFsdWUoKTsKLSAgICB9IGVs
c2UgaWYgKCFwYXJlbnRMYXllcikgewotICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCA9IHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKTsKLQotICAg
ICAgICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAg
ICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lRWxlbWVudEJhc2UgPSBudWxscHRy
OwotCi0gICAgICAgICAgICBpZiAoaXM8SFRNTEZyYW1lRWxlbWVudEJhc2U+KCpvd25lckVsZW1l
bnQpKQotICAgICAgICAgICAgICAgIGZyYW1lRWxlbWVudEJhc2UgPSBkb3duY2FzdDxIVE1MRnJh
bWVFbGVtZW50QmFzZT4ob3duZXJFbGVtZW50KTsKLQotICAgICAgICAgICAgaWYgKGZyYW1lRWxl
bWVudEFuZFZpZXdQZXJtaXRTY3JvbGwoZnJhbWVFbGVtZW50QmFzZSwgZnJhbWVWaWV3KSkgewot
ICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYXNzZXJ0aW9uIGZpcmVzIHdlIG5lZWQgdG8gcHJv
dGVjdCB0aGUgb3duZXJFbGVtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkLgotICAgICAgICAgICAg
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRT
Y29wZTsKLQotICAgICAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcu
dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2li
bGVSZWN0KTsKLQotICAgICAgICAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBvd25lckVsZW1lbnQt
PmNvbnRlbnREb2N1bWVudCgpID8gb3duZXJFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwotICAgICAgICAgICAgICAgIFJlbmRlckJveCogcmVu
ZGVyZXIgPSBlbGVtZW50ID8gZWxlbWVudC0+cmVuZGVyQm94KCkgOiBudWxscHRyOwotICAgICAg
ICAgICAgICAgIGV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJnZXRSZWN0VG9JbmNsdWRlU2Ny
b2xsUGFkZGluZyhyZW5kZXJlciwgdmlld1JlY3QsIG5ld1JlY3QpOwotCi0gICAgICAgICAgICAg
ICAgTGF5b3V0UmVjdCBleHBvc2VSZWN0ID0gZ2V0UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCBuZXdS
ZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsKLSAgICAg
ICAgICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbihyb3VuZGVkSW50UG9pbnQoZXhwb3Nl
UmVjdC5sb2NhdGlvbigpKSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBBZGp1c3Qgb2Zmc2V0cyBp
ZiB0aGV5J3JlIG91dHNpZGUgb2YgdGhlIGFsbG93YWJsZSByYW5nZS4KLSAgICAgICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQ
b2ludCgpLCBJbnRQb2ludChmcmFtZVZpZXcuY29udGVudHNTaXplKCkpKTsKLQotICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdXNlIGNvbnRlbnREb2N1bWVudCgpLT5zY3JvbGxp
bmdFbGVtZW50KCk/Ci0gICAgICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwNTkKLSAgICAgICAgICAgICAgICBmcmFtZVZpZXcuc2V0
U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
c0ZvckVsZW1lbnQoZWxlbWVudCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hv
dWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZyA9PSBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Ny
b2xsaW5nOjpZZXMgfHwgZnJhbWVWaWV3LnNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGVuY2xvc2luZ0xheWVyID0gb3duZXJF
bGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdMYXllci0+ZW5jbG9zaW5nU2Nyb2xsYWJsZUxh
eWVyKEluY2x1ZGVTZWxmT3JOb3Q6OkluY2x1ZGVTZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6
Tm8pOwotICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSByZWN0IGludG8gdGhlIGNv
b3JkaW5hdGUgc3BhY2Ugb2YgdGhlIHBhcmVudCBmcmFtZSdzIGRvY3VtZW50LgotICAgICAgICAg
ICAgICAgICAgICBuZXdSZWN0ID0gZnJhbWVWaWV3LmNvbnRlbnRzVG9Db250YWluaW5nVmlld0Nv
bnRlbnRzKGVuY2xvc2luZ0ludFJlY3QobmV3UmVjdCkpOwotICAgICAgICAgICAgICAgICAgICBp
bnNpZGVGaXhlZCA9IGZhbHNlOyAvLyBGSVhNRTogaWRlYWxseSBuZWVkIHRvIGRldGVybWluZSBp
ZiB0aGlzIDxpZnJhbWU+IGlzIGluc2lkZSBwb3NpdGlvbjpmaXhlZC4KLSAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBudWxscHRyOwotICAg
ICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG9wdGlvbnMucmV2
ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWxVcFRvTWFpbkZyYW1lICYmIGZy
YW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICBpZiAob3B0aW9ucy5yZXZlYWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1v
ZGU6OkRlbGVnYXRlTWFpbkZyYW1lU2Nyb2xsICYmIGZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZy
YW1lKCkpIHsKLSAgICAgICAgICAgICAgICBwYWdlKCkuY2hyb21lKCkuc2Nyb2xsTWFpbkZyYW1l
VG9SZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFic29sdXRlUmVjdCkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXV0byBtaW5TY3JvbGxQ
b3NpdGlvbiA9IGZyYW1lVmlldy5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKTsKLSAgICAgICAgICAg
IGF1dG8gbWF4U2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXcubWF4aW11bVNjcm9sbFBvc2l0aW9u
KCk7Ci0KLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgICAgIExheW91dFJlY3Qg
dmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KCk7Ci0jZWxzZQotICAgICAg
ICAgICAgLy8gRklYTUU6IENvbnRlbnRJbnNldHMgc2hvdWxkIGJlIHRha2VuIGNhcmUgb2YgaW4g
VUkgcHJvY2VzcyBzaWRlLiB3ZWJraXQub3JnL2IvMTk5NjgyCi0gICAgICAgICAgICAvLyBUbyBk
byB0aGF0LCBnZXRSZWN0VG9FeHBvc2UgbmVlZHMgdG8gcmV0dXJuIHRoZSBhZGRpdGlvbmFsIHNj
cm9sbGluZyB0byBkbyBiZXlvbmQgY29udGVudCByZWN0LgotICAgICAgICAgICAgTGF5b3V0UmVj
dCB2aWV3UmVjdCA9IGZyYW1lVmlldy52aWV3UmVjdEV4cGFuZGVkQnlDb250ZW50SW5zZXRzKCk7
Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiB3ZWJraXQub3JnL2IvMTk5NjgzIEZyYW1lVmlldzo6
dmlzaWJsZUNvbnRlbnRSZWN0IGlzIHdyb25nIHdoZW4gY29udGVudCBpbnNldHMgYXJlIHByZXNl
bnQKLSAgICAgICAgICAgIG1heFNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3LnNjcm9sbFBvc2l0
aW9uRnJvbU9mZnNldChTY3JvbGxQb3NpdGlvbihmcmFtZVZpZXcudG90YWxDb250ZW50c1NpemUo
KSAtIGZsb29yZWRJbnRTaXplKHZpZXdSZWN0LnNpemUoKSkpKTsKLQotICAgICAgICAgICAgYXV0
byBjb250ZW50SW5zZXRzID0gcGFnZSgpLmNvbnRlbnRJbnNldHMoKTsKLSAgICAgICAgICAgIG1p
blNjcm9sbFBvc2l0aW9uLm1vdmUoLWNvbnRlbnRJbnNldHMubGVmdCgpLCAtY29udGVudEluc2V0
cy50b3AoKSk7Ci0gICAgICAgICAgICBtYXhTY3JvbGxQb3NpdGlvbi5tb3ZlKGNvbnRlbnRJbnNl
dHMucmlnaHQoKSwgY29udGVudEluc2V0cy5ib3R0b20oKSk7Ci0jZW5kaWYKLSAgICAgICAgICAg
IC8vIE1vdmUgdGhlIHRhcmdldCByZWN0IGludG8gInNjcm9sbFZpZXcgY29udGVudHMiIGNvb3Jk
aW5hdGVzLgotICAgICAgICAgICAgTGF5b3V0UmVjdCB0YXJnZXRSZWN0ID0gYWJzb2x1dGVSZWN0
OwotICAgICAgICAgICAgdGFyZ2V0UmVjdC5tb3ZlKDAsIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQo
KSk7Ci0KLSAgICAgICAgICAgIGF1dG8qIGVsZW1lbnQgPSBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1
bWVudCgpID8gZnJhbWVWaWV3LmZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkg
OiBudWxscHRyOwotICAgICAgICAgICAgUmVuZGVyQm94KiByZW5kZXJlciA9IGVsZW1lbnQgPyBl
bGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHI7Ci0gICAgICAgICAgICBleHBhbmRTY3JvbGxS
ZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9sbFBhZGRpbmcocmVuZGVyZXIsIHZp
ZXdSZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgICAgICAgICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0
ID0gZ2V0UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCB0YXJnZXRSZWN0LCBpbnNpZGVGaXhlZCwgb3B0
aW9ucy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsKLSAgICAgICAgICAgIC8vIEF2b2lkIHNjcm9s
bGluZyB0byB0aGUgcm91bmRlZCB2YWx1ZSBvZiByZXZlYWxSZWN0LmxvY2F0aW9uKCkgaWYgd2Ug
ZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBzY3JvbGwKLSAgICAgICAgICAgIGlmIChyZXZlYWxSZWN0
ICE9IHZpZXdSZWN0KSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2Ug
ZG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgpPwotICAgICAgICAgICAgICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA1MDU5Ci0gICAgICAgICAg
ICAgICAgU2Nyb2xsT2Zmc2V0IGNsYW1wZWRTY3JvbGxQb3NpdGlvbiA9IHJvdW5kZWRJbnRQb2lu
dChyZXZlYWxSZWN0LmxvY2F0aW9uKCkpLmNvbnN0cmFpbmVkQmV0d2VlbihtaW5TY3JvbGxQb3Np
dGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24pOwotICAgICAgICAgICAgICAgIGZyYW1lVmlldy5zZXRT
Y3JvbGxQb3NpdGlvbihjbGFtcGVkU2Nyb2xsUG9zaXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdl
T3B0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAvLyBUaGlzIGlzIHRoZSBvdXRlcm1vc3QgdmlldyBvZiBhIHdlYiBwYWdlLCBzbyBhZnRlciBz
Y3JvbGxpbmcgdGhpcyB2aWV3IHdlCi0gICAgICAgICAgICAvLyBzY3JvbGwgaXRzIGNvbnRhaW5l
ciBieSBjYWxsaW5nIFBhZ2U6OnNjcm9sbE1haW5GcmFtZVRvUmV2ZWFsUmVjdC4KLSAgICAgICAg
ICAgIC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBw
bGljYXRpb25zCi0gICAgICAgICAgICAvLyB0aGF0IHB1dCB3ZWIgdmlld3MgaW50byBzY3JvbGxp
bmcgY29udGFpbmVycywgc3VjaCBhcyBNYWMgT1MgWCBNYWlsLgotICAgICAgICAgICAgLy8gVGhl
IGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVyIGFsc28ga25vd3MgYWJvdXQg
dGhpcy4KLSAgICAgICAgICAgIHBhZ2UoKS5jaHJvbWUoKS5zY3JvbGxDb250YWluaW5nU2Nyb2xs
Vmlld3NUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVSZWN0KSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcmVudExheWVyKQotICAgICAgICBwYXJlbnRMYXll
ci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShuZXdSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucyk7Ci19
Ci0KLUxheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRS
ZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNp
ZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdu
bWVudCYgYWxpZ25ZKSBjb25zdAotewotICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVy
ZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAgaWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3
KCkgJiYgaW5zaWRlRml4ZWQpIHsKLSAgICAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW5zaWRl
IHBvc2l0aW9uOmZpeGVkIGFuZCB3ZSdyZSBub3Qgc2NhbGVkLCBubyBhbW91bnQgb2Ygc2Nyb2xs
aW5nIGlzIGdvaW5nIHRvIG1vdmUgdGhpbmdzIGFyb3VuZC4KLSAgICAgICAgaWYgKGZyYW1lVmll
dy5mcmFtZVNjYWxlRmFjdG9yKCkgPT0gMSkKLSAgICAgICAgICAgIHJldHVybiB2aXNpYmxlUmVj
dDsKLQotICAgICAgICBpZiAocmVuZGVyZXIoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5h
YmxlZCgpKSB7Ci0gICAgICAgICAgICAvLyBleHBvc2VSZWN0IGlzIGluIGFic29sdXRlIGNvb3Jk
cywgYWZmZWN0ZWQgYnkgcGFnZSBzY2FsZS4gVW5zY2FsZSBpdC4KLSAgICAgICAgICAgIExheW91
dFJlY3QgdW5zY2FsZWRFeHBvc2VSZWN0ID0gZXhwb3NlUmVjdDsKLSAgICAgICAgICAgIHVuc2Nh
bGVkRXhwb3NlUmVjdC5zY2FsZSgxIC8gZnJhbWVWaWV3LmZyYW1lU2NhbGVGYWN0b3IoKSk7Ci0g
ICAgICAgICAgICB1bnNjYWxlZEV4cG9zZVJlY3QubW92ZSgwLCAtZnJhbWVWaWV3LmhlYWRlckhl
aWdodCgpKTsKLQotICAgICAgICAgICAgLy8gVGhlc2UgYXJlIGJvdGggaW4gdW5zY2FsZWQgY29v
cmRpbmF0ZXMuCi0gICAgICAgICAgICBMYXlvdXRSZWN0IGxheW91dFZpZXdwb3J0ID0gZnJhbWVW
aWV3LmxheW91dFZpZXdwb3J0UmVjdCgpOwotICAgICAgICAgICAgTGF5b3V0UmVjdCB2aXN1YWxW
aWV3cG9ydCA9IGZyYW1lVmlldy52aXN1YWxWaWV3cG9ydFJlY3QoKTsKLQotICAgICAgICAgICAg
Ly8gVGhlIHJlY3QgdG8gZXhwb3NlIG1heSBiZSBwYXJ0aWFsbHkgb2Zmc2NyZWVuLCB3aGljaCB3
ZSBjYW4ndCBkbyBhbnl0aGluZyBhYm91dCB3aXRoIHBvc2l0aW9uOmZpeGVkLgotICAgICAgICAg
ICAgdW5zY2FsZWRFeHBvc2VSZWN0LmludGVyc2VjdChsYXlvdXRWaWV3cG9ydCk7Ci0gICAgICAg
ICAgICAvLyBNYWtlIHN1cmUgaXQncyBub3QgbGFyZ2VyIHRoYW4gdGhlIHZpc3VhbCB2aWV3cG9y
dDsgaWYgc28sIHdlJ2xsIGp1c3QgbW92ZSB0byB0aGUgdG9wIGxlZnQuCi0gICAgICAgICAgICB1
bnNjYWxlZEV4cG9zZVJlY3Quc2V0U2l6ZSh1bnNjYWxlZEV4cG9zZVJlY3Quc2l6ZSgpLnNocnVu
a1RvKHZpc3VhbFZpZXdwb3J0LnNpemUoKSkpOwotCi0gICAgICAgICAgICAvLyBDb21wdXRlIGhv
dyBtdWNoIHdlIGhhdmUgdG8gbW92ZSB0aGUgdmlzdWFsVmlld3BvcnQgdG8gcmV2ZWFsIHRoZSBw
YXJ0IG9mIHRoZSBsYXlvdXRWaWV3cG9ydCB0aGF0IGNvbnRhaW5zIGV4cG9zZVJlY3QuCi0gICAg
ICAgICAgICBMYXlvdXRSZWN0IHJlcXVpcmVkVmlzdWFsVmlld3BvcnQgPSBnZXRSZWN0VG9FeHBv
c2UodmlzdWFsVmlld3BvcnQsIHVuc2NhbGVkRXhwb3NlUmVjdCwgZmFsc2UsIGFsaWduWCwgYWxp
Z25ZKTsKLSAgICAgICAgICAgIC8vIFNjYWxlIGl0IGJhY2sgdXAuCi0gICAgICAgICAgICByZXF1
aXJlZFZpc3VhbFZpZXdwb3J0LnNjYWxlKGZyYW1lVmlldy5mcmFtZVNjYWxlRmFjdG9yKCkpOwot
ICAgICAgICAgICAgcmVxdWlyZWRWaXN1YWxWaWV3cG9ydC5tb3ZlKDAsIGZyYW1lVmlldy5oZWFk
ZXJIZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gcmVxdWlyZWRWaXN1YWxWaWV3cG9ydDsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgWCBi
ZWhhdmlvci4KLSAgICBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yIHNjcm9sbFg7Ci0gICAgTGF5
b3V0UmVjdCBleHBvc2VSZWN0WChleHBvc2VSZWN0LngoKSwgdmlzaWJsZVJlY3QueSgpLCBleHBv
c2VSZWN0LndpZHRoKCksIHZpc2libGVSZWN0LmhlaWdodCgpKTsKLSAgICBMYXlvdXRVbml0IGlu
dGVyc2VjdFdpZHRoID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0LCBleHBvc2VSZWN0WCkud2lk
dGgoKTsKLSAgICBpZiAoaW50ZXJzZWN0V2lkdGggPT0gZXhwb3NlUmVjdC53aWR0aCgpIHx8IChh
bGlnblgubGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVkKCkgJiYgaW50
ZXJzZWN0V2lkdGggPj0gTUlOX0lOVEVSU0VDVF9GT1JfUkVWRUFMKSkgewotICAgICAgICAvLyBJ
ZiB0aGUgcmVjdGFuZ2xlIGlzIGZ1bGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHZpc2li
bGUgYmVoYXZpb3IuCi0gICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZp
c2libGUsIGJ1dCBvdmVyIGEgY2VydGFpbiB0aHJlc2hvbGQsCi0gICAgICAgIC8vIHRoZW4gdHJl
YXQgaXQgYXMgZnVsbHkgdmlzaWJsZSB0byBhdm9pZCB1bm5lY2Vzc2FyeSBob3Jpem9udGFsIHNj
cm9sbGluZwotICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFZpc2libGVCZWhhdmlvcigpOwot
ICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGggPT0gdmlzaWJsZVJlY3Qud2lkdGgoKSkgewot
ICAgICAgICAvLyBJZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBk
b24ndCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsu
Ci0gICAgICAgIHNjcm9sbFggPSBhbGlnblguZ2V0VmlzaWJsZUJlaGF2aW9yKCk7Ci0gICAgICAg
IGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQot
ICAgICAgICAgICAgc2Nyb2xsWCA9IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xs
OwotICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGggPiAwKQotICAgICAgICAvLyBJZiB0aGUg
cmVjdGFuZ2xlIGlzIHBhcnRpYWxseSB2aXNpYmxlLCBidXQgbm90IGFib3ZlIHRoZSBtaW5pbXVt
IHRocmVzaG9sZCwgdXNlIHRoZSBzcGVjaWZpZWQgcGFydGlhbCBiZWhhdmlvcgotICAgICAgICBz
Y3JvbGxYID0gYWxpZ25YLmdldFBhcnRpYWxCZWhhdmlvcigpOwotICAgIGVsc2UKLSAgICAgICAg
c2Nyb2xsWCA9IGFsaWduWC5nZXRIaWRkZW5CZWhhdmlvcigpOwotICAgIC8vIElmIHdlJ3JlIHRy
eWluZyB0byBhbGlnbiB0byB0aGUgY2xvc2VzdCBlZGdlLCBhbmQgdGhlIGV4cG9zZVJlY3QgaXMg
ZnVydGhlciByaWdodAotICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90IGJpZ2dl
ciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0aGUgcmlnaHQuCi0gICAg
aWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RF
ZGdlICYmIGV4cG9zZVJlY3QubWF4WCgpID4gdmlzaWJsZVJlY3QubWF4WCgpICYmIGV4cG9zZVJl
Y3Qud2lkdGgoKSA8IHZpc2libGVSZWN0LndpZHRoKCkpCi0gICAgICAgIHNjcm9sbFggPSBTY3Jv
bGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0OwotCi0gICAgLy8gR2l2ZW4gdGhlIFgg
YmVoYXZpb3IsIGNvbXB1dGUgdGhlIFggY29vcmRpbmF0ZS4KLSAgICBMYXlvdXRVbml0IHg7Ci0g
ICAgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGwpCi0g
ICAgICAgIHggPSB2aXNpYmxlUmVjdC54KCk7Ci0gICAgZWxzZSBpZiAoc2Nyb2xsWCA9PSBTY3Jv
bGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0KQotICAgICAgICB4ID0gZXhwb3NlUmVj
dC5tYXhYKCkgLSB2aXNpYmxlUmVjdC53aWR0aCgpOwotICAgIGVsc2UgaWYgKHNjcm9sbFggPT0g
U2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXIpCi0gICAgICAgIHggPSBleHBv
c2VSZWN0LngoKSArIChleHBvc2VSZWN0LndpZHRoKCkgLSB2aXNpYmxlUmVjdC53aWR0aCgpKSAv
IDI7Ci0gICAgZWxzZQotICAgICAgICB4ID0gZXhwb3NlUmVjdC54KCk7Ci0KLSAgICAvLyBEZXRl
cm1pbmUgdGhlIGFwcHJvcHJpYXRlIFkgYmVoYXZpb3IuCi0gICAgU2Nyb2xsQWxpZ25tZW50OjpC
ZWhhdmlvciBzY3JvbGxZOwotICAgIExheW91dFJlY3QgZXhwb3NlUmVjdFkodmlzaWJsZVJlY3Qu
eCgpLCBleHBvc2VSZWN0LnkoKSwgdmlzaWJsZVJlY3Qud2lkdGgoKSwgZXhwb3NlUmVjdC5oZWln
aHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBpbnRlcnNlY3RIZWlnaHQgPSBpbnRlcnNlY3Rpb24odmlz
aWJsZVJlY3QsIGV4cG9zZVJlY3RZKS5oZWlnaHQoKTsKLSAgICBpZiAoaW50ZXJzZWN0SGVpZ2h0
ID09IGV4cG9zZVJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMg
ZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KLSAgICAg
ICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKLSAgICBlbHNlIGlmIChp
bnRlcnNlY3RIZWlnaHQgPT0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIHsKLSAgICAgICAgLy8gSWYg
dGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgZG9uJ3QgYm90aGVyIHRy
eWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3JrLgotICAgICAgICBzY3Jv
bGxZID0gYWxpZ25ZLmdldFZpc2libGVCZWhhdmlvcigpOwotICAgICAgICBpZiAoc2Nyb2xsWSA9
PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKLSAgICAgICAgICAgIHNj
cm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9sbDsKLSAgICB9IGVsc2Ug
aWYgKGludGVyc2VjdEhlaWdodCA+IDApCi0gICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMg
cGFydGlhbGx5IHZpc2libGUsIHVzZSB0aGUgc3BlY2lmaWVkIHBhcnRpYWwgYmVoYXZpb3IKLSAg
ICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRQYXJ0aWFsQmVoYXZpb3IoKTsKLSAgICBlbHNlCi0g
ICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0SGlkZGVuQmVoYXZpb3IoKTsKLSAgICAvLyBJZiB3
ZSdyZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3QgZWRnZSwgYW5kIHRoZSBleHBvc2VS
ZWN0IGlzIGZ1cnRoZXIgZG93bgotICAgIC8vIHRoYW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90
IGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4gYWxpZ24gd2l0aCB0aGUgYm90dG9t
LgotICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9D
bG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFkoKSA+IHZpc2libGVSZWN0Lm1heFkoKSAmJiBl
eHBvc2VSZWN0LmhlaWdodCgpIDwgdmlzaWJsZVJlY3QuaGVpZ2h0KCkpCi0gICAgICAgIHNjcm9s
bFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnbkJvdHRvbTsKLQotICAgIC8vIEdp
dmVuIHRoZSBZIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBZIGNvb3JkaW5hdGUuCi0gICAgTGF5b3V0
VW5pdCB5OwotICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5v
U2Nyb2xsKQotICAgICAgICB5ID0gdmlzaWJsZVJlY3QueSgpOwotICAgIGVsc2UgaWYgKHNjcm9s
bFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Cb3R0b20pCi0gICAgICAgIHkg
PSBleHBvc2VSZWN0Lm1heFkoKSAtIHZpc2libGVSZWN0LmhlaWdodCgpOwotICAgIGVsc2UgaWYg
KHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXIpCi0gICAg
ICAgIHkgPSBleHBvc2VSZWN0LnkoKSArIChleHBvc2VSZWN0LmhlaWdodCgpIC0gdmlzaWJsZVJl
Y3QuaGVpZ2h0KCkpIC8gMjsKLSAgICBlbHNlCi0gICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKTsK
LQotICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91dFBvaW50KHgsIHkpLCB2aXNpYmxlUmVjdC5z
aXplKCkpOwotfQotCiB2b2lkIFJlbmRlckxheWVyOjphdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbkluV2luZG93KQogewogICAgIEludFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0
aW9uID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCkud2luZG93VG9Db250ZW50cyhwb3Np
dGlvbkluV2luZG93KTsKLSAgICBzY3JvbGxSZWN0VG9WaXNpYmxlKExheW91dFJlY3QoY3VycmVu
dERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCBmYWxzZSwgeyBTZWxlY3Rpb25S
ZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwg
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxl
KExheW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUoMSwgMSkpLCBy
ZW5kZXJlcigpLCBmYWxzZSwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFs
aWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CiB9CiAK
IGJvb2wgUmVuZGVyTGF5ZXI6OmNhblJlc2l6ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5oCmluZGV4IGFhMjlmZmU5OWQxNDY5MGMzMzE2MmZkNTQyZGUxNjQ1NWQy
Y2NiOWEuLmIzMDA5NGU3Njg4NDcxZjBhZjAwZThiMWNkM2I2Y2IyZjMzZGJmM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00NjAsOCArNDYwLDYgQEAgcHVibGlj
OgogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiByZXR1cm4gdGhlIFJlbmRlclZpZXcncyBsYXllciB3
aGVuIGNhbGxlcnMgcHJvYmFibHkgd2FudCB0aGUgRnJhbWVWaWV3IGFzIGEgU2Nyb2xsYWJsZUFy
ZWEuCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2Vs
Zk9yTm90LCBDcm9zc0ZyYW1lQm91bmRhcmllcykgY29uc3Q7CiAKLSAgICAvLyAiYWJzb2x1dGVS
ZWN0IiBpcyBpbiBzY2FsZWQgZG9jdW1lbnQgY29vcmRpbmF0ZXMuCi0gICAgdm9pZCBzY3JvbGxS
ZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZGVG
aXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKTsKICAgICAvLyBSZXR1cm5z
IHRydWUgd2hlbiB0aGUgbGF5ZXIgY291bGQgZG8gdG91Y2ggc2Nyb2xsaW5nLCBidXQgZG9lc24n
dCBsb29rIGF0IHdoZXRoZXIgdGhlcmUgaXMgYWN0dWFsbHkgc2Nyb2xsYWJsZSBvdmVyZmxvdy4K
ICAgICBib29sIGNhblVzZUNvbXBvc2l0ZWRTY3JvbGxpbmcoKSBjb25zdDsKICAgICAvLyBSZXR1
cm5zIHRydWUgd2hlbiB0aGVyZSBpcyBhY3R1YWxseSBzY3JvbGxhYmxlIG92ZXJmbG93IChyZXF1
aXJlcyBsYXlvdXQgdG8gYmUgdXAtdG8tZGF0ZSkuCkBAIC00NzUsNiArNDczLDggQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCk7CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxiYXJTdGVwcygpOwogCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgUmVuZGVy
TGF5ZXIgaXMgYSBjYW5kaWRhdGUgZm9yIHNjcm9sbGluZyBkdXJpbmcgc2Nyb2xsSW50b1ZpZXcg
b3BlcmF0aW9ucy4KKyAgICBib29sIHNob3VsZFRyeVRvU2Nyb2xsRm9yU2Nyb2xsSW50b1ZpZXco
KSBjb25zdDsKICAgICB2b2lkIGF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKTsKIAogICAgIGJv
b2wgY2FuUmVzaXplKCkgY29uc3Q7CkBAIC0xMDQ5LDggKzEwNDksNiBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBzaG91bGRCZVNlbGZQYWludGluZ0xheWVyKCkgY29uc3Q7CiAKLSAgICBib29sIGFs
bG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdDsKLQogICAgIHZvaWQgZGlydHlBbmNlc3RvckNoYWlu
VmlzaWJsZURlc2NlbmRhbnRTdGF0dXMoKTsKICAgICB2b2lkIHNldEFuY2VzdG9yQ2hhaW5IYXNW
aXNpYmxlRGVzY2VuZGFudCgpOwogICAgIApAQCAtMTA4NSw4ICsxMDgzLDYgQEAgcHJpdmF0ZToK
IAogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdUcmFuc2Zvcm1lZEFuY2VzdG9yKCkgY29uc3Q7
CiAKLSAgICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNp
YmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25ZKSBjb25zdDsKLQogICAgIC8vIENvbnZlcnQgYSBwb2ludCBpbiBhYnNvbHV0ZSBjb29yZHMg
aW50byBsYXllciBjb29yZHMsIHRha2luZyB0cmFuc2Zvcm1zIGludG8gYWNjb3VudAogICAgIExh
eW91dFBvaW50IGFic29sdXRlVG9Db250ZW50cyhjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxh
YmxlQXJlYS5jcHAKaW5kZXggNGQ3ZTE2MzA3MzFmYjAyZDczMDAyM2MxMzcwYzA2YWEwZmFiZTZj
NC4uMGQzNjI0NDkxMjY2NDEzNGViYzY3NTE1YzEwMzg4YzM4YzcwYTAyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNw
cApAQCAtMTc1OCwyNSArMTc1OCw1NCBAQCB2b2lkIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6
OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgc291cmNlUG9pbnQpCiAgICAgc2Ny
b2xsQnlSZWN1cnNpdmVseShhZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRhKSk7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Ny
b2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRpb25DaGFuZ2VPcHRpb25zJiBvcHRpb25zLCBj
b25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9z
ZVJlY3QpCitMYXlvdXRSZWN0IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RU
b1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBjb25zdCBTY3JvbGxSZWN0
VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBBU1NFUlQobV9sYXllci5hbGxvd3ND
dXJyZW50U2Nyb2xsKCkpOworICAgIFJlbmRlckJveCogYm94ID0gbGF5ZXIoKS5yZW5kZXJCb3go
KTsKKyAgICBBU1NFUlQoYm94KTsKKyAgICBMYXlvdXRSZWN0IGxvY2FsRXhwb3NlUmVjdChib3gt
PmFic29sdXRlVG9Mb2NhbFF1YWQoRmxvYXRRdWFkKEZsb2F0UmVjdChhYnNvbHV0ZVJlY3QpKSku
Ym91bmRpbmdCb3goKSk7CisKKyAgICAvLyBsb2NhbEV4cG9zZWRSZWN0IGlzIG5vdyB0aGUgYWJz
b2x1dGUgcmVjdCBpbiBsb2NhbCBjb29yZGluYXRlcywgYnV0IHJlbGF0aXZlIHRvIHRoZQorICAg
IC8vIGJvcmRlciBlZGdlLiBNYWtlIHRoZSByZWN0YW5nbGUgcmVsYXRpdmUgdG8gdGhlIHNjcm9s
bGFibGUgYXJlYS4KKyAgICBsb2NhbEV4cG9zZVJlY3QubW92ZUJ5KC1MYXlvdXRQb2ludChib3gt
PmJvcmRlckxlZnQoKSwgYm94LT5ib3JkZXJUb3AoKSkpOworCisgICAgaWYgKGJveC0+c2hvdWxk
UGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgpKSB7CisgICAgICAgIC8vIEZvciBgZGlyZWN0
aW9uOiBydGw7IHdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC17dGIsYnR9YCBhbmQgYHdyaXRpbmct
bW9kZTogdmVydGljYWwtcmxgCisgICAgICAgIC8vIGJveGVzLCB0aGUgc2Nyb2xsIGJhciBpcyBv
biB0aGUgbGVmdCBzaWRlLiBUaGUgdmlzaWJsZSByZWN0IHN0YXJ0cyBmcm9tIHRoZSByaWdodCBz
aWRlCisgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwgYmFyLiBTbyB0aGUgeCBvZiBsb2NhbEV4cG9z
ZVJlY3Qgc2hvdWxkIHN0YXJ0IGZyb20gdGhlIHNhbWUgcG9zaXRpb24gdG9vLgorICAgICAgICBs
b2NhbEV4cG9zZVJlY3QubW92ZUJ5KExheW91dFBvaW50KC12ZXJ0aWNhbFNjcm9sbGJhcldpZHRo
KCksIDApKTsKKyAgICB9CisKKyAgICAvLyBzY3JvbGwtcGFkZGluZyBhcHBsaWVzIHRvIHRoZSBz
Y3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRoZSByZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRv
IGV4cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVsYXRlIHBhZGRpbmcgdGhlIHNjcm9sbCBjb250
YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3NlZCB1cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcg
ZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhhdCB0aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9s
bCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzKDBf
bHUsIDBfbHUsIGJveC0+Y2xpZW50V2lkdGgoKSwgYm94LT5jbGllbnRIZWlnaHQoKSk7CisgICAg
bG9jYWxFeHBvc2VSZWN0LmV4cGFuZChib3gtPnNjcm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3Qo
bGF5ZXJCb3VuZHMpKTsKIAorICAgIGF1dG8gcmV2ZWFsUmVjdCA9IGdldFJlY3RUb0V4cG9zZUZv
clNjcm9sbEludG9WaWV3KGxheWVyQm91bmRzLCBsb2NhbEV4cG9zZVJlY3QsIG9wdGlvbnMuYWxp
Z25YLCBvcHRpb25zLmFsaWduWSk7CisKKyAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9
IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7CisgICAg
aWYgKCFib3gtPmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAm
JiBib3gtPmVsZW1lbnQoKSAmJiB1c2VTbW9vdGhTY3JvbGxpbmcob3B0aW9ucy5iZWhhdmlvciwg
Ym94LT5lbGVtZW50KCkpKQorICAgICAgICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQg
PSBTY3JvbGxJc0FuaW1hdGVkOjpZZXM7CisgICAgaWYgKGF1dG8gcmVzdWx0ID0gdXBkYXRlU2Ny
b2xsUG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyhzY3JvbGxQb3NpdGlvbk9wdGlvbnMsIHJldmVh
bFJlY3QsIGxvY2FsRXhwb3NlUmVjdCkpCisgICAgICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsK
KyAgICByZXR1cm4gYWJzb2x1dGVSZWN0OworfQorc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBS
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkZvclNjcm9sbElu
dG9WaWV3KGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYgb3B0aW9ucywgY29uc3Qg
TGF5b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxFeHBvc2VSZWN0
KQorewogICAgIFJlbmRlckJveCogYm94ID0gbV9sYXllci5yZW5kZXJCb3goKTsKICAgICBBU1NF
UlQoYm94KTsKIAogICAgIFNjcm9sbE9mZnNldCBjbGFtcGVkU2Nyb2xsT2Zmc2V0ID0gY2xhbXBT
Y3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCkgKyB0b0ludFNpemUocm91bmRlZEludFJlY3QocmV2
ZWFsUmVjdCkubG9jYXRpb24oKSkpOwotICAgIGlmIChjbGFtcGVkU2Nyb2xsT2Zmc2V0ICE9IHNj
cm9sbE9mZnNldCgpIHx8IHNjcm9sbEFuaW1hdGlvblN0YXR1cygpICE9IFNjcm9sbEFuaW1hdGlv
blN0YXR1czo6Tm90QW5pbWF0aW5nKSB7Ci0gICAgICAgIFNjcm9sbE9mZnNldCBvbGRTY3JvbGxP
ZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgU2Nyb2xsT2Zmc2V0IHJlYWxTY3JvbGxP
ZmZzZXQgPSBzY3JvbGxUb09mZnNldChjbGFtcGVkU2Nyb2xsT2Zmc2V0LCBvcHRpb25zKTsKLQot
ICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldERpZmZlcmVuY2UgPSByZWFsU2Nyb2xsT2Zmc2V0
IC0gb2xkU2Nyb2xsT2Zmc2V0OwotICAgICAgICBhdXRvIGxvY2FsRXhwb3NlUmVjdFNjcm9sbGVk
ID0gbG9jYWxFeHBvc2VSZWN0OwotICAgICAgICBsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZC5tb3Zl
KC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKLSAgICAgICAgcmV0dXJuIExheW91dFJlY3QoYm94
LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3QobG9jYWxFeHBvc2VSZWN0
U2Nyb2xsZWQpKSwgVXNlVHJhbnNmb3JtcykuYm91bmRpbmdCb3goKSk7Ci0gICAgfQorICAgIGlm
IChjbGFtcGVkU2Nyb2xsT2Zmc2V0ID09IHNjcm9sbE9mZnNldCgpICYmIHNjcm9sbEFuaW1hdGlv
blN0YXR1cygpID09IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90QW5pbWF0aW5nKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgU2Nyb2xsT2Zmc2V0IG9sZFNjcm9sbE9mZnNl
dCA9IHNjcm9sbE9mZnNldCgpOworICAgIFNjcm9sbE9mZnNldCByZWFsU2Nyb2xsT2Zmc2V0ID0g
c2Nyb2xsVG9PZmZzZXQoY2xhbXBlZFNjcm9sbE9mZnNldCwgb3B0aW9ucyk7CiAKLSAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0RGlmZmVyZW5jZSA9IHJl
YWxTY3JvbGxPZmZzZXQgLSBvbGRTY3JvbGxPZmZzZXQ7CisgICAgYXV0byBsb2NhbEV4cG9zZVJl
Y3RTY3JvbGxlZCA9IGxvY2FsRXhwb3NlUmVjdDsKKyAgICBsb2NhbEV4cG9zZVJlY3RTY3JvbGxl
ZC5tb3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdChi
b3gtPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRRdWFkKEZsb2F0UmVjdChsb2NhbEV4cG9zZVJl
Y3RTY3JvbGxlZCkpLCBVc2VUcmFuc2Zvcm1zKS5ib3VuZGluZ0JveCgpKTsKIH0KIAogdm9pZCBS
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3JvbGxCeVJlY3Vyc2l2ZWx5KGNvbnN0IEludFNp
emUmIGRlbHRhLCBTY3JvbGxhYmxlQXJlYSoqIHNjcm9sbGVkQXJlYSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IGJm
MjdlZGMxNTI2NzQ0ODNmYzc5Nzc3YjY5YTllYzFiZGRhMTZhNjMuLjg5OTU4MjhiMjY0YjAwYmFi
ZmI3ZDY0MjgxODFjNmRlMTJhM2YwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaApAQCAtMjM2LDcgKzIzNiw4IEBAIHB1
YmxpYzoKIAogICAgIEludFNpemUgc2Nyb2xsYmFyT2Zmc2V0KGNvbnN0IFNjcm9sbGJhciYpIGNv
bnN0OwogCi0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlv
bihjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0JiBy
ZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpOworICAgIExheW91
dFJlY3Qgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3Qs
IGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7CisgICAgc3RkOjpvcHRpb25hbDxM
YXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlvbkZvclNjcm9sbEludG9WaWV3KGNvbnN0IFNj
cm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYsIGNvbnN0IExheW91dFJlY3QmIHJldmVhbFJlY3Qs
IGNvbnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3NlUmVjdCk7CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBoYXNIb3Jpem9udGFsT3ZlcmZsb3coKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjRiNjcxMDJkZmU3NGRmNWVhYjE1YzIwZmU0ZWRjNTYx
NTJhYzNmMy4uNjk3MzkyZjE2NWY1YmQ1ZjM3YTAzMTY4MGQ3MzYyYjdiMjQ1NzYxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTQ0OSwxOSArNDQ5LDYg
QEAgUmVuZGVyTGF5ZXIqIFJlbmRlck9iamVjdDo6ZW5jbG9zaW5nTGF5ZXIoKSBjb25zdAogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlz
aWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNv
bnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJiBvcHRpb25zKQotewotICAgIGlmIChvcHRp
b25zLnJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFsTW9kZTo6RG9Ob3RSZXZlYWwpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdMYXllciA9IHRo
aXMtPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgaWYgKCFlbmNsb3NpbmdMYXllcikKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgZW5jbG9zaW5nTGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2libGUo
YWJzb2x1dGVSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIFJlbmRlckJveCYgUmVuZGVyT2JqZWN0OjplbmNsb3NpbmdCb3goKSBjb25zdAogewogICAg
IHJldHVybiAqbGluZWFnZU9mVHlwZTxSZW5kZXJCb3g+KGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0
Jj4oKnRoaXMpKS5maXJzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IGQwZjRjZWM0YmFkYzUyYTZlNzRhMGZjODFiNzgwZjJkMjUzYWJmNjkuLjAwNjQwODM0
OTRlMzM1Zjk5MDg1NjE5ZTg4NGZlOTNjZmE2NDE1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTE1Myw5ICsxNTMsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZW5kZXJMYXllciogZW5jbG9zaW5nTGF5ZXIoKSBjb25zdDsKIAotICAgIC8v
IFNjcm9sbGluZyBpcyBhIFJlbmRlckJveCBjb25jZXB0LCBob3dldmVyIHNvbWUgY29kZSBqdXN0
IGNhcmVzIGFib3V0IHJlY3Vyc2l2ZWx5IHNjcm9sbGluZyBvdXIgZW5jbG9zaW5nIFNjcm9sbGFi
bGVBcmVhKHMpLgotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2Nyb2xsUmVjdFRvVmlzaWJsZShj
b25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNj
cm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJC
b3gmIGVuY2xvc2luZ0JveCgpIGNvbnN0OwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0JiBlbmNs
b3NpbmdCb3hNb2RlbE9iamVjdCgpIGNvbnN0OwogICAgIFJlbmRlckJveCogZW5jbG9zaW5nU2Ny
b2xsYWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1MzM1ZmNmZGU2MDU3YzVlOWNjNzA4ZTQ5NGM1MTc1YjI2OGNiNmVkLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TY3JvbGxBbGlnbm1lbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBO
ZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAqCi0gKiBPdGhlciBjb250cmli
dXRvcnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNzLmNtdS5lZHU+Ci0gKiAgIERh
dmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgotICogICBDaHJpc3RpYW4gQmllc2lu
Z2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAgUmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRl
LmNvbT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5p
LWdpZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNzQG1hYy5jb20+Ci0gKiAgIEJv
cmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBB
bHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVy
IHRoZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNp
b24gMS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1Q
TCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZv
dW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BM
IiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFy
ZQotICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8g
YWxsb3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhl
IHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBH
UEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRo
aXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQotICogZGVs
ZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGlj
ZSBhbmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BM
LCBhcyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlz
aW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMg
ZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Nyb2xsQWxpZ25tZW50LmgiCi0KLSNpbmNs
dWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6
OmFsaWduQ2VudGVySWZOb3RWaXNpYmxlID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9y
OjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6Ok5vU2Nyb2xsIH07Ci1jb25zdCBTY3JvbGxBbGlnbm1l
bnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTm90VmlzaWJsZSA9IHsgQmVoYXZpb3I6
Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlLCBCZWhhdmlvcjo6Tm9TY3Jv
bGwgfTsKLWNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVy
SWZOZWVkZWQgPSB7IEJlaGF2aW9yOjpOb1Njcm9sbCwgQmVoYXZpb3I6OkFsaWduQ2VudGVyLCBC
ZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlIH07Ci1XRUJDT1JFX0VYUE9SVCBjb25zdCBTY3Jv
bGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkID0geyBCZWhh
dmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnblRvQ2xvc2VzdEVkZ2UsIEJlaGF2aW9yOjpB
bGlnblRvQ2xvc2VzdEVkZ2UgfTsKLVdFQkNPUkVfRVhQT1JUIGNvbnN0IFNjcm9sbEFsaWdubWVu
dCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVyQWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25D
ZW50ZXIsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6OkFsaWduQ2VudGVyIH07Ci1j
b25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvcEFsd2F5cyA9IHsg
QmVoYXZpb3I6OkFsaWduVG9wLCBCZWhhdmlvcjo6QWxpZ25Ub3AsIEJlaGF2aW9yOjpBbGlnblRv
cCB9OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25SaWdodEFs
d2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduUmlnaHQsIEJlaGF2aW9yOjpBbGlnblJpZ2h0LCBCZWhh
dmlvcjo6QWxpZ25SaWdodCB9OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25MZWZ0QWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25MZWZ0LCBCZWhhdmlvcjo6QWxp
Z25MZWZ0LCBCZWhhdmlvcjo6QWxpZ25MZWZ0IH07Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Ny
b2xsQWxpZ25tZW50OjphbGlnbkJvdHRvbUFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduQm90dG9t
LCBCZWhhdmlvcjo6QWxpZ25Cb3R0b20sIEJlaGF2aW9yOjpBbGlnbkJvdHRvbSB9OwotICAgIAot
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgU2Nyb2xsQWxpZ25tZW50OjpC
ZWhhdmlvciBiKQotewotICAgIHN3aXRjaCAoYikgewotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50
OjpCZWhhdmlvcjo6Tm9TY3JvbGw6Ci0gICAgICAgIHJldHVybiB0cyA8PCAiTm9TY3JvbGwiOwot
ICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25DZW50ZXI6Ci0gICAgICAg
IHJldHVybiB0cyA8PCAiQWxpZ25DZW50ZXIiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpC
ZWhhdmlvcjo6QWxpZ25Ub3A6Ci0gICAgICAgIHJldHVybiB0cyA8PCAiQWxpZ25Ub3AiOwotICAg
IGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Cb3R0b206Ci0gICAgICAgIHJl
dHVybiB0cyA8PCAiQWxpZ25Cb3R0b20iOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhh
dmlvcjo6QWxpZ25MZWZ0OgotICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduTGVmdCI7Ci0gICAg
Y2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJpZ2h0OgotICAgICAgICByZXR1
cm4gdHMgPDwgIkFsaWduUmlnaHQiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlv
cjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlOgotICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduVG9DbG9z
ZXN0RWRnZSI7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLSAgICAKLVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgcykKLXsKLSAg
ICByZXR1cm4gdHMgPDwgIlNjcm9sbEFsaWdubWVudDogdmlzaWJsZTogIiA8PCBzLm1fcmVjdFZp
c2libGUgPDwgIiBoaWRkZW46ICIgPDwgcy5tX3JlY3RIaWRkZW4gPDwgIiBwYXJ0aWFsOiAiIDw8
IHMubV9yZWN0UGFydGlhbDsKLX0KLQotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDFiYjZlZjllMjJlN2M1OTU1ODhhYjhiMzEyNzkyYTA4NTMzYWVhZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBO
ZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KLSAqCi0gKiBPdGhlciBjb250cmli
dXRvcnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNzLmNtdS5lZHU+Ci0gKiAgIERh
dmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQuZWR1PgotICogICBDaHJpc3RpYW4gQmllc2lu
Z2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAgUmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRl
LmNvbT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5p
LWdpZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNzQG1hYy5jb20+Ci0gKiAgIEJv
cmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBB
bHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVy
IHRoZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNp
b24gMS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1Q
TCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZv
dW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BM
IiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFy
ZQotICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8g
YWxsb3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhl
IHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBH
UEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRo
aXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQotICogZGVs
ZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGlj
ZSBhbmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BM
LCBhcyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlz
aW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMg
ZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBTY3JvbGxBbGlnbm1lbnQgewotCi0gICAgZW51
bSBjbGFzcyBCZWhhdmlvciB7Ci0gICAgICAgIE5vU2Nyb2xsLAotICAgICAgICBBbGlnbkNlbnRl
ciwKLSAgICAgICAgQWxpZ25Ub3AsCi0gICAgICAgIEFsaWduQm90dG9tLAotICAgICAgICBBbGln
bkxlZnQsCi0gICAgICAgIEFsaWduUmlnaHQsCi0gICAgICAgIEFsaWduVG9DbG9zZXN0RWRnZQot
ICAgIH07Ci0KLSAgICBCZWhhdmlvciBnZXRWaXNpYmxlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVy
biBtX3JlY3RWaXNpYmxlOyB9Ci0gICAgQmVoYXZpb3IgZ2V0UGFydGlhbEJlaGF2aW9yKCkgY29u
c3QgeyByZXR1cm4gbV9yZWN0UGFydGlhbDsgfQotICAgIEJlaGF2aW9yIGdldEhpZGRlbkJlaGF2
aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0SGlkZGVuOyB9Ci0gICAgdm9pZCBkaXNhYmxlTGVn
YWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKSB7IG1fZW5hYmxlTGVnYWN5SG9yaXpv
bnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgPSBmYWxzZTsgfQotICAgIGJvb2wgbGVnYWN5SG9yaXpv
bnRhbFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVM
ZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVzaG9sZDsgfQotCi0gICAgc3RhdGljIGNvbnN0
IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlcklmTm90VmlzaWJsZTsKLSAgICBzdGF0aWMgY29u
c3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOb3RWaXNpYmxlOwotICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25DZW50ZXJJZk5lZWRlZDsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9F
ZGdlSWZOZWVkZWQ7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdu
bWVudCBhbGlnbkNlbnRlckFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50
IGFsaWduVG9wQWx3YXlzOwotICAgIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25S
aWdodEFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduTGVmdEFs
d2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduQm90dG9tQWx3YXlz
OwotCi0gICAgQmVoYXZpb3IgbV9yZWN0VmlzaWJsZTsKLSAgICBCZWhhdmlvciBtX3JlY3RIaWRk
ZW47Ci0gICAgQmVoYXZpb3IgbV9yZWN0UGFydGlhbDsKLSAgICBib29sIG1fZW5hYmxlTGVnYWN5
SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgeyB0cnVlIH07Ci19OwotICAgIAotV0VCQ09S
RV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNj
cm9sbEFsaWdubWVudDo6QmVoYXZpb3IpOwotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYpOwot
Ci19OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KaW5kZXggZGZkYzNhOWM4YjJmZGViODNhZDNhZWU5NDlmY2QxZmYxNTVm
NzMzZC4uNWQ5M2Q4NThkYTg3YTE4OGM3Mzc4NjhhYzcxNTQ4ZjM2MjM2OGYwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04MSw2ICs4MSw3IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3ND
b250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpAQCAtNzI4LDExICs3MjksMTEgQEAgLSAodm9p
ZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICopcmFuZ2UKICAgICAgICAgCiAg
ICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPnJlbmRlcmVyKCkpIHsKICNpZiAhUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgc3RhcnROb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0
VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VSZWN0KSwgaW5zaWRlRml4
ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVu
dDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNj
cm9sbGluZzo6WWVzIH0pOworICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RU
b1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCAqc3RhcnROb2Rl
LT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwg
V2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpT
aG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CiAjZWxzZQogICAgICAgICBh
dXRvKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAg
ICAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgICAgICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNj
cm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCBp
bnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNv
cmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xs
QWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3Nz
T3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXc6
OnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3Qp
LCAqc3RhcnROb2RlLT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rp
b25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0Vk
Z2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVk
LCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CiAgICAg
ICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZXRDYXJldFJlY3ROZWVk
c1VwZGF0ZSgpOwogICAgICAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCku
dXBkYXRlQXBwZWFyYW5jZSgpOwogICAgICAgICB9CkBAIC03NTAsNyArNzUxLDcgQEAgLSAodm9p
ZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERPTVJhbmdlICopcmFuZ2Ugd2l0aEluc2V0OihD
R0Zsb2F0KWluc2V0CiAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUtPnJlbmRlcmVyKCkp
IHsKICAgICAgICAgYXV0byogbGF5ZXIgPSBzdGFydE5vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2lu
Z0xheWVyKCk7CiAgICAgICAgIGlmIChsYXllcikgewotICAgICAgICAgICAgc3RhcnROb2RlLT5y
ZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3Qo
cmFuZ2VSZWN0KSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6
UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdl
YkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hv
dWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzfSk7CisgICAgICAgICAgICBXZWJDb3Jl
OjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVj
dChyYW5nZVJlY3QpLCAqc3RhcnROb2RlLT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBXZWJD
b3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVu
dDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRv
RWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZ
ZXMgfSk7CiAKICAgICAgICAgICAgIGF1dG8gY29yZUZyYW1lID0gY29yZShzZWxmKTsKICAgICAg
ICAgICAgIGlmIChjb3JlRnJhbWUpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451362</attachid>
            <date>2022-02-09 05:27:37 -0800</date>
            <delta_ts>2022-05-27 01:23:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236220-20220209142735.patch</filename>
            <type>text/plain</type>
            <size>89541</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTJlYTU4MmI0ZDZlYjUx
ZGE5NTY0YzYyYTU1NGViNjRiMjExYmEyMC4uNTBlNWUwMjExZWRmMWMzMjI2YzE4NDkyNTdiMGY0
YWY5YzA2YzM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAyLTA5ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWZhY3RvciBS
ZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHNob3VsZCBub3QgY2hh
bmdlIGJlaGF2aW9yLgorCisgICAgICAgIE1vdmUgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zp
c2libGUgdG8gYSBzdGF0aWMgbWV0aG9kIGluIEZyYW1lVmlldyBhbmQgY29tYmluZSBpdCB3aXRo
CisgICAgICAgIFJlbmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlzaWJsZS4gVGhpcyBhbHNvIHNw
bGl0cyBvdXQgdGhlIHRocmVlIGNvZGUgcGF0aHMgaW4gdGhpcyBtZXRob2QKKyAgICAgICAgaW50
byB0aHJlZSBzZXBhcmF0ZSBtZXRob2RzLCB0d28gb2YgdGhlbSBvbiBGcmFtZVZpZXcgYW5kIG9u
ZSBvZiB0aGVtIG9uCisgICAgICAgIFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuCisKKyAgICAg
ICAgSW4gYWRkaXRpb25zLCB2YXJpb3VzIG1ldGhvZHMgYXJlIG1vdmVkIGFuZCByZW5hbWVkIHRv
IG1ha2UgdGhlbSBtb3JlCisgICAgICAgIHVuZGVyc3RhbmRhYmxlLiBTY3JvbGxBbGlnbm1lbnQg
bXVzdCBtb3ZlIHRvIHBsYXRmb3JtLCBiZWNhdXNlIGdldFJlY3RUb0V4cG9zZSBtb3ZlcyB0bwor
ICAgICAgICBTY3JvbGxhYmxlQXJlYSBhbmQgaXMgcmVuYW1lZCB0byBnZXRSZWN0VG9FeHBvc2VG
b3JTY3JvbGxJbnRvVmlldy4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICog
UGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlIGNvbnN0
KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNjcm9sbEludG9WaWV3
SWZOb3RWaXNpYmxlKToKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24pOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2Ny
b2xsVG9Gb2N1c2VkRWxlbWVudEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxQb3NpdGlv
bkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
c2Nyb2xsUmVjdFRvVmlzaWJsZUluQ2hpbGRWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZUluVG9wTGV2ZWxWaWV3KToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpnZXRQb3NzaWJseUZpeGVkUmVjdFRvRXhwb3NlIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5jcHA6IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmNwcC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaDogUmVuYW1lZCBmcm9tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuaC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9TY3JvbGxhYmxlQXJlYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6
Z2V0UmVjdFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXcgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL1Njcm9sbGFibGVBcmVhLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9sbEZvclNj
cm9sbEludG9WaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjphdXRv
c2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OmV4cGFuZFNjcm9sbFJlY3RUb1Zpc2libGVUYXJn
ZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpmcmFtZUVsZW1lbnRBbmRWaWV3UGVybWl0U2Nyb2xsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjphbGxvd3NDdXJyZW50U2Nyb2xsIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpnZXRSZWN0VG9FeHBvc2UgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RUb1Zpc2libGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xs
UG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
clNjcm9sbGFibGVBcmVhOjp1cGRhdGVTY3JvbGxQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2Nyb2xsUmVjdFRvVmlzaWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorCiAyMDIyLTAyLTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ1NTIENvbnRhaW5lciBRdWVyaWVzXSBUcmFjayBxdWVyeSBjb250YWlu
ZXJzIHNvIHRoZXkgY2FuIGJlIGludmFsaWRhdGVkIG9uIHNpemUgY2hhbmdlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKaW5kZXggYjY3ZGJjY2IzMTY2ZGU2NzM4MTgwNTg3ZTI4ODE5MzgxZTVl
ZDhkNi4uZTIzZmZkZGY0YzYzMzc0MzZkNmNkNGVjYzA5ZjNjZjNhMjFmY2QxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIyLTAyLTA5ICBNYXJ0aW4g
Um9iaW5zb24gIDxtcm9iaW5zb25Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZWZhY3RvciBSZW5k
ZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2MjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6XSk6CisgICAgICAgICgtW1dlYkZyYW1l
IF9zY3JvbGxET01SYW5nZVRvVmlzaWJsZTp3aXRoSW5zZXQ6XSk6CisKIDIwMjItMDItMDYgIFR5
bGVyIFdpbGNvY2sgIDx0eWxlcl93QGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQWRkIGludGVy
bmFsLW9ubHkgZmxhZyB0byBlbmFibGUgV0lQIGRpc3BsYXk6IGNvbnRlbnRzIHN1cHBvcnQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCmluZGV4IDMzMmIwMDMzMDJjM2VmOTYyZmE3MmZiM2Y4ODRjZjVmODI3MWQ0
OWYuLmFiNjk2NmUzYWIzZjBjMzBkNmVjZjZmNjA5Y2M2Yzk4Nzg2ZjA5ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQpAQCAtMTMxMyw2ICsxMzEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIHBsYXRmb3JtL1NTTEtleUdlbmVyYXRvci5oCiAgICAgcGxhdGZvcm0v
U2NyZWVuUHJvcGVydGllcy5oCiAgICAgcGxhdGZvcm0vU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIuaAorICAgIHBsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5oCiAgICAgcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0aW9uTW9tZW50dW0uaAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgK
ICAgICBwbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCkBAIC0xODU1LDcgKzE4NTYsNiBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcmVuZGVyaW5nL1JlbmRlclZpZGVv
LmgKICAgICByZW5kZXJpbmcvUmVuZGVyVmlldy5oCiAgICAgcmVuZGVyaW5nL1JlbmRlcldpZGdl
dC5oCi0gICAgcmVuZGVyaW5nL1Njcm9sbEFsaWdubWVudC5oCiAgICAgcmVuZGVyaW5nL1NlbGVj
dGlvblJhbmdlRGF0YS5oCiAgICAgcmVuZGVyaW5nL1RleHRCb3hTZWxlY3RhYmxlUmFuZ2UuaAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDk4YjAzNTc5MWE2ZWJiMGQ5ZjE1NzFhNTdh
NDJlY2Q1ZjE1NWNmYjkuLjlhNjExZDU5NThjODhiMjJiMGE1Mjc5ZTQ2MzFkYzNiMjM2YjgxOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01NjMsNiArNTYzLDcgQEAgbGlzdChBUFBF
TkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vTWFpblRo
cmVhZFNoYXJlZFRpbWVyLmgKICAgICBwbGF0Zm9ybS9QaWN0dXJlSW5QaWN0dXJlU3VwcG9ydC5o
CiAgICAgcGxhdGZvcm0vUGxhdGZvcm1Db250ZW50RmlsdGVyLmgKKyAgICBwbGF0Zm9ybS9TY3Jv
bGxBbGlnbm1lbnQuaAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdGlvbi5oCiAgICAgcGxhdGZv
cm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaAogICAgIHBsYXRmb3JtL1Njcm9sbFNuYXBB
bmltYXRvclN0YXRlLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWVkZDcxODM4Y2QyN2QzN2MyOWQ3OWY0
YWIzM2E4YmQ3NWU3YTU4YS4uNzk3ZTk3NjU2NDFlMDczY2ZiNmY3MzRkZjljZTMwYzliYWFkMzUw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTE4OTcsNiArMTg5Nyw3IEBAIHBsYXRmb3JtL1JlZmVycmVy
UG9saWN5LmNwcAogcGxhdGZvcm0vUmVtb3RlQ29tbWFuZExpc3RlbmVyLmNwcAogcGxhdGZvcm0v
UnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAogcGxhdGZvcm0vU1NMS2V5R2VuZXJhdG9yLmNw
cAorcGxhdGZvcm0vU2Nyb2xsQWxpZ25tZW50LmNwcAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9u
LmNwcAogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0aW9uS2luZXRpYy5jcHAKIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdGlvbk1vbWVudHVtLmNwcApAQCAtMjM5Myw3ICsyMzk0LDYgQEAgcmVuZGVyaW5nL1Jl
bmRlclZUVEN1ZS5jcHAKIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAKIHJlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKLXJlbmRlcmluZy9TY3JvbGxB
bGlnbm1lbnQuY3BwCiByZW5kZXJpbmcvU2VsZWN0aW9uUmFuZ2VEYXRhLmNwcAogcmVuZGVyaW5n
L1N0eWxlZE1hcmtlZFRleHQuY3BwCiByZW5kZXJpbmcvVGFibGVMYXlvdXQuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZh
ODY1MDRlMTZiMzAzMzM1Y2ZhOWYxOGUxOTkwOWViMmE0NDUyMy4uMDA3NWU4ZDIxNjVhMzViMWYx
ZWI3MzVlN2NjMzRhMDM1OTFjOWMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA0Niw2ICsyMDQ2LDcgQEAKIAkJNTlDMjgw
NDYxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVycm9ycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTlDMjgwNDQxMzhEQzI0MTAwNzlCN0UyIC8qIFhNTEVy
cm9ycy5oICovOyB9OwogCQk1QTU3NEYyNTEzMURCOTM5MDA0NzFCODggLyogUmVuZGVyUXVvdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVBNTc0RjIz
MTMxREI5MzkwMDQ3MUI4OCAvKiBSZW5kZXJRdW90ZS5oICovOyB9OwogCQk1QTU3NEYyOTEzMURC
OTZEMDA0NzFCODggLyogUXVvdGVzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUE1NzRGMjcxMzFEQjk2RDAwNDcxQjg4IC8qIFF1b3Rlc0RhdGEu
aCAqLzsgfTsKKwkJNUIyRDc2NzIyN0IxNDYwODAwRjlCQTNDIC8qIFNjcm9sbEFsaWdubWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUIyRDc2NzAy
N0IxNDYwODAwRjlCQTNDIC8qIFNjcm9sbEFsaWdubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVCMzA2OTVFMThCM0QzNDUwMDk5RDVFOCAv
KiBXZWJHTERyYXdCdWZmZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QjMwNjk1QjE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5o
ICovOyB9OwogCQk1QjQ2NjU2MzI1RDE0QzBBMDAwQ0ZFMTQgLyogU2Nyb2xsaW5nRWZmZWN0c0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVCNDY2NTVGMjVEMTRDMDkwMDBDRkUxNCAvKiBTY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVCNDY2
NTY0MjVEMTRDMEEwMDBDRkUxNCAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUI0NjY1NjAyNUQxNEMwQTAw
MENGRTE0IC8qIFNjcm9sbFNuYXBBbmltYXRvclN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTIwODAsNyArMjA4MSw2IEBACiAJCTVDRUVF
NDM2MUY1RjhGMjEwMDE0QTVGNSAvKiBSZWN0RWRnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOTdBMzM2MUY1RjdBNjUwMDEwNTIwNyAvKiBSZWN0
RWRnZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1RDIxQTgwMzEzRUNFNURGMDBCQjcwNjQgLyogV2ViVlRUUGFyc2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RDIxQTgwMTEzRUNFNURGMDBCQjcw
NjQgLyogV2ViVlRUUGFyc2VyLmggKi87IH07CiAJCTVENTk3NUIzMTk2MzVGMTEwMEQwMDg3OCAv
KiBTeXN0ZW1WZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1RDU5NzVCMTE5NjM1RjExMDBEMDA4NzggLyogU3lzdGVtVmVyc2lvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTVEOTI1QjY4MEY2
NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEOTI1QjY2MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3Jv
bGxBbGlnbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1REE1RTBGRDEwMkI5NTM4MDAwODhDRjkgLyogSlNXZWJTb2NrZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEQTVFMEZCMTAyQjk1Mzgw
MDA4OENGOSAvKiBKU1dlYlNvY2tldC5oICovOyB9OwogCQk1REIxQkM2QTEwNzE1QTY0MDBFRkFB
NDkgLyogVHJhbnNmb3JtU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1REIxQkM2ODEwNzE1QTY0MDBFRkFBNDkgLyogVHJhbnNmb3JtU291cmNl
LmggKi87IH07CiAJCTVERjdGNUMyMEYwMUY5MkEwMDUyNkI0QiAvKiBDU1NQcm9wZXJ0eU5hbWVz
LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NTY1ODBFRjA5RDEyQjIwMDAwRTYxRDcgLyogQ1NTUHJvcGVydHlOYW1lcy5oICov
OyB9OwpAQCAtMTA1NjcsNiArMTA1NjcsOCBAQAogCQk1QTU3NEYyNzEzMURCOTZEMDA0NzFCODgg
LyogUXVvdGVzRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdW90ZXNE
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVBOTE0NjlFOEU5Rjg0ODVDMzdB
Mjg3NiAvKiBKU1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNTVkdHcmFwaGljc0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QjFFMEU0MzI1RDE2MjlCMDAyNzIyODEgLyogU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUIyRDc2NkUyN0IxNDYw
NzAwRjlCQTNDIC8qIFNjcm9sbEFsaWdubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY3JvbGxBbGlnbm1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QjJENzY3MDI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbEFsaWdubWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QjMwNjk1QTE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xE
cmF3QnVmZmVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJH
TERyYXdCdWZmZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUIzMDY5NUIx
OEIzRDM0NTAwOTlENUU4IC8qIFdlYkdMRHJhd0J1ZmZlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViR0xEcmF3QnVmZmVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QjMwNjk1QzE4QjNEMzQ1MDA5OUQ1RTggLyogV2ViR0xEcmF3QnVmZmVycy5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViR0xEcmF3QnVmZmVycy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xMDY3NCw4ICsxMDY3Niw2IEBACiAJCTVEMjFBODAxMTNFQ0U1
REYwMEJCNzA2NCAvKiBXZWJWVFRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVlRUUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVENTk3
NUIxMTk2MzVGMTEwMEQwMDg3OCAvKiBTeXN0ZW1WZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFN5c3RlbVZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUQ1OTc1QjIxOTYzNUYxMTAwRDAwODc4IC8qIFN5c3RlbVZlcnNpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTeXN0ZW1WZXJzaW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1RDkyNUI2NTBGNjRENEREMDBCODQ3RjAgLyogU2Ny
b2xsQWxpZ25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cm9sbEFsaWdubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVEOTI1QjY2
MEY2NEQ0REQwMEI4NDdGMCAvKiBTY3JvbGxBbGlnbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2Nyb2xsQWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVEQTVFMEZBMTAyQjk1MzgwMDA4OENGOSAvKiBKU1dlYlNvY2tldC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYlNvY2tldC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEQTVFMEZCMTAyQjk1MzgwMDA4OENGOSAvKiBKU1dlYlNv
Y2tldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYlNvY2tldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1REIxQkM2ODEwNzE1QTY0MDBFRkFBNDkgLyog
VHJhbnNmb3JtU291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5z
Zm9ybVNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzAwNzAsNiArMzAw
NzAsOCBAQAogCQkJCTQxMTIyM0I4MjYwMjQ0RkUwMEIwQTBCNiAvKiBTY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllci5oICovLAogCQkJCUJDOEFFMzRDMTJFQTA5NkEwMEVCM0FFNiAvKiBT
Y3JvbGxhYmxlQXJlYS5jcHAgKi8sCiAJCQkJQkM4QUUzNEQxMkVBMDk2QTAwRUIzQUU2IC8qIFNj
cm9sbGFibGVBcmVhLmggKi8sCisJCQkJNUIyRDc2NkUyN0IxNDYwNzAwRjlCQTNDIC8qIFNjcm9s
bEFsaWdubWVudC5jcHAgKi8sCisJCQkJNUIyRDc2NzAyN0IxNDYwODAwRjlCQTNDIC8qIFNjcm9s
bEFsaWdubWVudC5oICovLAogCQkJCTBGNkVBRDY2MjZGRTcyODAwMDA2NEQwMyAvKiBTY3JvbGxB
bmltYXRpb24uY3BwICovLAogCQkJCTBGQTYxQjBDMjZGNDMyMTIwMDFBQURCNiAvKiBTY3JvbGxB
bmltYXRpb24uaCAqLywKIAkJCQkwRkM2OTJCQzI1N0MwRjQxMDA5OEUzRjkgLyogU2Nyb2xsQW5p
bWF0aW9uS2luZXRpYy5jcHAgKi8sCkBAIC0zMjE2OCw4ICszMjE3MCw2IEBACiAJCQkJQkUyMDUw
N0MxOEE0NThCMTAwODA2NDdFIC8qIFJlbmRlclZUVEN1ZS5oICovLAogCQkJCUE4NzFERkUxMEEx
NTM3NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuY3BwICovLAogCQkJCUE4NzFERkUwMEExNTM3
NkIwMEIxMkE2OCAvKiBSZW5kZXJXaWRnZXQuaCAqLywKLQkJCQk1RDkyNUI2NTBGNjRENEREMDBC
ODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50LmNwcCAqLywKLQkJCQk1RDkyNUI2NjBGNjRENEREMDBC
ODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50LmggKi8sCiAJCQkJNDRCMzhCRjkyNTM2OUE4ODAwQTQ0
NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5jcHAgKi8sCiAJCQkJNDRCMzhCRjQyNTM2OTAxQTAw
QTQ0NThEIC8qIFNlbGVjdGlvblJhbmdlRGF0YS5oICovLAogCQkJCUU0NDBGRDU0MjVBNEFGRUUw
MEY3Qzg0OSAvKiBTdHlsZWRNYXJrZWRUZXh0LmNwcCAqLywKQEAgLTM3MDc4LDcgKzM3MDc4LDcg
QEAKIAkJCQkyMjhDMjg0NTEwRDgyNTAwMDA5RDBEMEUgLyogU2NyaXB0V3JhcHBhYmxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxNDAwRDdBODE3MTM2RUE3MDA3N0NFMDUgLyogU2NyaXB0V3JhcHBh
YmxlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4QUUzNEYxMkVBMDk2QTAwRUIzQUU2
IC8qIFNjcm9sbGFibGVBcmVhLmggaW4gSGVhZGVycyAqLywKLQkJCQk1RDkyNUI2ODBGNjRENERE
MDBCODQ3RjAgLyogU2Nyb2xsQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QjJENzY3
MjI3QjE0NjA4MDBGOUJBM0MgLyogU2Nyb2xsQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkE2MUIwRTI2RjQzMjEzMDAxQUFEQjYgLyogU2Nyb2xsQW5pbWF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBFMDA5QzI2RjkyRDg0MDBBQ0U5QzYgLyogU2Nyb2xsQW5pbWF0aW9uTW9t
ZW50dW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBT
Y3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA2ZDU4ZTEwYjU1YWZj
OWZiZmJjOGU2MzgzYjE3M2Y4NGIxZjU2YmIyLi44ZGZjYmViZTNkZDExZjZlZmZiYTc4OWMyMmFi
NGE4YTBkN2ZkMjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTMyNjYsNyArMzI2Niw3IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZShjb25zdCBTY3JvbGxSZWN0VG9WaXNp
YmxlT3B0aW9ucyYKICAgICAgICAgcGFyZW50T2JqZWN0KCktPnNjcm9sbFRvTWFrZVZpc2libGUo
KTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAg
IHJlbmRlcmVyLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGJvdW5kaW5nQm94UmVjdCgpLCBmYWxzZSwg
b3B0aW9ucyk7CisgICAgICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShib3VuZGlu
Z0JveFJlY3QoKSwgKnJlbmRlcmVyLCBmYWxzZSwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgQWNjZXNz
aWJpbGl0eU9iamVjdDo6c2Nyb2xsVG9NYWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhjb25zdCBJbnRS
ZWN0JiBzdWJmb2N1cykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0c3BpL0FjY2Vzc2liaWxpdHlPYmplY3RUZXh0QXRzcGkuY3Bw
CmluZGV4IDRkM2NmYjc1YmE2MDYxODQyZjJhNjEzMWZlMDc5ZTQ1Njc1MDRkMDIuLjZiMjI2NjQy
YjgzMmQwYmE4MjcxYjQ2OGY2OWFjNzEzNTAwMTczOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRzcGkvQWNjZXNzaWJpbGl0eU9iamVjdFRleHRBdHNwaS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdHNwaS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0VGV4dEF0c3BpLmNwcApAQCAtOTkzLDcgKzk5Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9i
amVjdEF0c3BpOjpzY3JvbGxUb01ha2VWaXNpYmxlKGludCBzdGFydE9mZnNldCwgaW50IGVuZE9m
ZnNlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIG1fY29yZU9iamVjdC0+cmVuZGVyZXIo
KS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBmYWxzZSwgeyBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWwsIGFsaWduWCwgYWxpZ25ZLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
OjpZZXMgfSk7CisgICAgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsICptX2Nv
cmVPYmplY3QtPnJlbmRlcmVyKCksIGZhbHNlLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVh
bCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6OlllcyB9
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDE3ZDYw
ZjU4YTE5MjQyYmU1MjZiMjlhZjEyMWU2MTYzNjA2ZGE3ZjcuLjJmZWI4MDhjNGQ5YjY3YzcwNTBh
YmI5ZTYyNTYyODRkNzg0OWUzZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEwMjgsNyAr
MTAyOCw3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXcoc3RkOjpvcHRpb25hbDxzdGQ6
OnZhcmlhbnQ8Ym9vbCwgU2Nyb2xsSW50b1ZpZXdPcHRpCiAgICAgICAgIFNob3VsZEFsbG93Q3Jv
c3NPcmlnaW5TY3JvbGxpbmc6Ok5vLAogICAgICAgICBvcHRpb25zLmJlaGF2aW9yLnZhbHVlX29y
KFNjcm9sbEJlaGF2aW9yOjpBdXRvKQogICAgIH07Ci0gICAgcmVuZGVyZXIoKS0+c2Nyb2xsUmVj
dFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgaW5zaWRlRml4ZWQsIHZpc2libGVPcHRpb25zKTsK
KyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsICpyZW5k
ZXJlcigpLCBpbnNpZGVGaXhlZCwgdmlzaWJsZU9wdGlvbnMpOwogfQogCiB2b2lkIEVsZW1lbnQ6
OnNjcm9sbEludG9WaWV3KGJvb2wgYWxpZ25Ub1RvcCkgCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCB2
b2lkIEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3KGJvb2wgYWxpZ25Ub1RvcCkKICAgICBhdXRvIGFs
aWduWCA9IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZDsKICAgICBhbGlnblgu
ZGlzYWJsZUxlZ2FjeUhvcml6b250YWxWaXNpYmlsaXR5VGhyZXNob2xkKCk7CiAKLSAgICByZW5k
ZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRlQm91bmRzLCBpbnNpZGVGaXhlZCwg
eyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIGFsaWduWCwgYWxpZ25ZLCBTaG91bGRBbGxv
d0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKKyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RU
b1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsICpyZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBTZWxl
Y3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIGFsaWduWCwgYWxpZ25ZLCBTaG91bGRBbGxvd0Nyb3Nz
T3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKIH0KIAogdm9pZCBFbGVtZW50OjpzY3JvbGxJbnRvVmll
d0lmTmVlZGVkKGJvb2wgY2VudGVySWZOZWVkZWQpCkBAIC0xMDYzLDcgKzEwNjMsNyBAQCB2b2lk
IEVsZW1lbnQ6OnNjcm9sbEludG9WaWV3SWZOZWVkZWQoYm9vbCBjZW50ZXJJZk5lZWRlZCkKICAg
ICBhdXRvIGFsaWduWCA9IGNlbnRlcklmTmVlZGVkID8gU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNl
bnRlcklmTmVlZGVkIDogU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkOwogICAg
IGFsaWduWC5kaXNhYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQoKTsKIAot
ICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3VuZHMsIGluc2lk
ZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNo
b3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOworICAgIEZyYW1lVmlldzo6c2Ny
b2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5kcywgKnJlbmRlcmVyKCksIGluc2lkZUZpeGVk
LCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgYWxpZ25YLCBhbGlnblksIFNob3VsZEFs
bG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vIH0pOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNjcm9s
bEludG9WaWV3SWZOb3RWaXNpYmxlKGJvb2wgY2VudGVySWZOb3RWaXNpYmxlKQpAQCAtMTA3NSwx
MCArMTA3NSw4IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoYm9v
bCBjZW50ZXJJZk5vdFZpc2libGUpCiAgICAgCiAgICAgYm9vbCBpbnNpZGVGaXhlZDsKICAgICBM
YXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXIoKS0+YWJzb2x1dGVBbmNob3JSZWN0
V2l0aFNjcm9sbE1hcmdpbigmaW5zaWRlRml4ZWQpOwotICAgIGlmIChjZW50ZXJJZk5vdFZpc2li
bGUpCi0gICAgICAgIHJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVCb3Vu
ZHMsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxp
Z25tZW50OjphbGlnbkNlbnRlcklmTm90VmlzaWJsZSwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNl
bnRlcklmTm90VmlzaWJsZSwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7
Ci0gICAgZWxzZQotICAgICAgICByZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29s
dXRlQm91bmRzLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNj
cm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5vdFZpc2libGUsIFNjcm9sbEFsaWdubWVudDo6
YWxpZ25Ub0VkZ2VJZk5vdFZpc2libGUsIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6
Ok5vIH0pOworICAgIGF1dG8gYWxpZ24gPSBjZW50ZXJJZk5vdFZpc2libGUgPyBTY3JvbGxBbGln
bm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNpYmxlIDogU2Nyb2xsQWxpZ25tZW50OjphbGlnblRv
RWRnZUlmTm90VmlzaWJsZTsKKyAgICBGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoYWJz
b2x1dGVCb3VuZHMsICpyZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25SZXZlYWxN
b2RlOjpSZXZlYWwsIGFsaWduLCBhbGlnbiwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGlu
Zzo6Tm8gfSk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2Nyb2xsQnkoY29uc3QgU2Nyb2xsVG9PcHRp
b25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApp
bmRleCBhZGFiOWQxYThjYzdjMDlkY2Y5ZDY3ODY4ZTNmZTA4OTcyMzRkYmZmLi43YzE0YTczODA1
MjI3ZjYzYTkzYTNiZTYwYzg1OGQ1NjI3MjBiOTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMjQ1NywyNCArMjQ1NywyNCBAQCB2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjpyZXZlYWxTZWxlY3Rpb24oU2VsZWN0aW9uUmV2ZWFsTW9kZSByZXZlYWxNb2RlLCBj
b25zdCBTY3JvbAogCiAgICAgUG9zaXRpb24gc3RhcnQgPSBtX3NlbGVjdGlvbi5zdGFydCgpOwog
ICAgIEFTU0VSVChzdGFydC5kZXByZWNhdGVkTm9kZSgpKTsKLSAgICBpZiAoc3RhcnQuZGVwcmVj
YXRlZE5vZGUoKSAmJiBzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpKSB7CisgICAg
aWYgKCFzdGFydC5kZXByZWNhdGVkTm9kZSgpIHx8ICFzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5y
ZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGxheWVyID0gc3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+
cmVuZGVyZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKSkgewotICAgICAgICAgICAgaWYgKCFtX3Njcm9s
bGluZ1N1cHByZXNzQ291bnQpIHsKLSAgICAgICAgICAgICAgICBsYXllci0+c2Nyb2xsUmVjdFRv
VmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyByZXZlYWxNb2RlLCBhbGlnbm1lbnQsIGFsaWdu
bWVudCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzLCBzY3JvbGxCZWhhdmlv
cn0pOwotICAgICAgICAgICAgICAgIHVwZGF0ZUFwcGVhcmFuY2UoKTsKLSAgICAgICAgICAgICAg
ICBpZiAobV9kb2N1bWVudC0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICBtX2RvY3VtZW50
LT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLm5vdGlmeVJldmVhbGVkU2VsZWN0aW9uQnlTY3Jv
bGxpbmdGcmFtZSgqbV9kb2N1bWVudC0+ZnJhbWUoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSNlbHNlCi0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgb25seSBoYW5kbGVzIHNjcm9s
bGluZyB0aGUgc3RhcnRDb250YWluZXIncyBsYXllciwgYnV0Ci0gICAgICAgIC8vIHRoZSBzZWxl
Y3Rpb24gcmVjdCBjb3VsZCBpbnRlcnNlY3QgbW9yZSB0aGFuIGp1c3QgdGhhdC4KLSAgICAgICAg
Ly8gU2VlIDxyZGFyOi8vcHJvYmxlbS80Nzk5ODk5Pi4KLSAgICAgICAgaWYgKHN0YXJ0LmRlcHJl
Y2F0ZWROb2RlKCktPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgaW5zaWRl
Rml4ZWQsIHsgcmV2ZWFsTW9kZSwgYWxpZ25tZW50LCBhbGlnbm1lbnQsIFNob3VsZEFsbG93Q3Jv
c3NPcmlnaW5TY3JvbGxpbmc6Olllcywgc2Nyb2xsQmVoYXZpb3J9KSkKLSAgICAgICAgICAgIHVw
ZGF0ZUFwcGVhcmFuY2UoKTsKKyAgICBpZiAobV9zY3JvbGxpbmdTdXBwcmVzc0NvdW50KQorICAg
ICAgICByZXR1cm47CisjZW5kaWYKKworICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgb25seSBoYW5k
bGVzIHNjcm9sbGluZyB0aGUgc3RhcnRDb250YWluZXIncyBsYXllciwgYnV0CisgICAgLy8gdGhl
IHNlbGVjdGlvbiByZWN0IGNvdWxkIGludGVyc2VjdCBtb3JlIHRoYW4ganVzdCB0aGF0LgorICAg
IC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNDc5OTg5OT4uCisgICAgRnJhbWVWaWV3OjpzY3JvbGxS
ZWN0VG9WaXNpYmxlKHJlY3QsICpzdGFydC5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpLCBp
bnNpZGVGaXhlZCwgeyByZXZlYWxNb2RlLCBhbGlnbm1lbnQsIGFsaWdubWVudCwgU2hvdWxkQWxs
b3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzLCBzY3JvbGxCZWhhdmlvciB9KTsKKyAgICB1cGRh
dGVBcHBlYXJhbmNlKCk7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGlmIChtX2Rv
Y3VtZW50LT5wYWdlKCkpCisgICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCkubm90aWZ5UmV2ZWFsZWRTZWxlY3Rpb25CeVNjcm9sbGluZ0ZyYW1lKCptX2RvY3VtZW50
LT5mcmFtZSgpKTsKICNlbmRpZgotICAgIH0KIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0
U2VsZWN0aW9uRnJvbU5vbmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDE4ZmM4
YjdmNWY3MTcxMjFjZTE4N2U2ZmRiY2Y2MjQ3YjhhMDRmZDIuLjFmYTE1MjgxM2JiZWRhNjgxNjQ5
MTZhYWEyMzc1NjQ4ZWE3ZjQ4OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEw
MSw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcm9sbEFu
aW1hdG9yLmgiCkBAIC0yNDQxLDcgKzI0NDIsMTQ2IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxU
b0ZvY3VzZWRFbGVtZW50SW50ZXJuYWwoKQogCiAgICAgYm9vbCBpbnNpZGVGaXhlZDsKICAgICBM
YXlvdXRSZWN0IGFic29sdXRlQm91bmRzID0gcmVuZGVyZXItPmFic29sdXRlQW5jaG9yUmVjdCgm
aW5zaWRlRml4ZWQpOwotICAgIHJlbmRlcmVyLT5zY3JvbGxSZWN0VG9WaXNpYmxlKGFic29sdXRl
Qm91bmRzLCBpbnNpZGVGaXhlZCwgeyBtX3NlbGVjdGlvblJldmVhbE1vZGVGb3JGb2N1c2VkRWxl
bWVudCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6
Ok5vIH0pOworICAgIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShhYnNvbHV0ZUJvdW5k
cywgKnJlbmRlcmVyLCBpbnNpZGVGaXhlZCwgeyBtX3NlbGVjdGlvblJldmVhbE1vZGVGb3JGb2N1
c2VkRWxlbWVudCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVlZGVkLCBTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQsIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3Jv
bGxpbmc6Ok5vIH0pOworfQorCitib29sIEZyYW1lVmlldzo6c2Nyb2xsUmVjdFRvVmlzaWJsZShj
b25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJiBv
cHRpb25zKQoreworICAgIGlmIChvcHRpb25zLnJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2ZWFs
TW9kZTo6RG9Ob3RSZXZlYWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHJlbmRlcmVyLmVuY2xvc2luZ0xheWVyKCk7CisgICAgaWYgKCFsYXllcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2Ug
dG8gdXNlIFJlbmRlckxheWVyOjplbmNsb3NpbmdTY3JvbGxhYmxlTGF5ZXIgaGVyZSwgYnV0IHRo
YXQgc2VlbXMgdG8gc2tpcCBvdmVyZmxvdzpoaWRkZW4gbGF5ZXJzLgorICAgIExheW91dFJlY3Qg
YWRqdXN0ZWRSZWN0ID0gYWJzb2x1dGVSZWN0OworICAgIGZvciAoOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+ZW5jbG9zaW5nQ29udGFpbmluZ0Jsb2NrTGF5ZXIoQ3Jvc3NGcmFtZUJvdW5kYXJpZXM6
Ok5vKSkgeworICAgICAgICBpZiAobGF5ZXItPnNob3VsZFRyeVRvU2Nyb2xsRm9yU2Nyb2xsSW50
b1ZpZXcoKSkKKyAgICAgICAgICAgIGFkanVzdGVkUmVjdCA9IGxheWVyLT5lbnN1cmVMYXllclNj
cm9sbGFibGVBcmVhKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoYWRqdXN0ZWRSZWN0LCBvcHRpb25z
KTsKKyAgICB9CisKKyAgICBhdXRvJiBmcmFtZVZpZXcgPSByZW5kZXJlci52aWV3KCkuZnJhbWVW
aWV3KCk7CisgICAgY29uc3QgYXV0byogb3duZXJFbGVtZW50ID0gZnJhbWVWaWV3LmZyYW1lKCku
ZG9jdW1lbnQoKSA/IGZyYW1lVmlldy5mcmFtZSgpLmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgp
IDogbnVsbHB0cjsKKyAgICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVyRWxlbWVudC0+cmVuZGVy
ZXIoKSkKKyAgICAgICAgZnJhbWVWaWV3LnNjcm9sbFJlY3RUb1Zpc2libGVJbkNoaWxkVmlldyhh
ZGp1c3RlZFJlY3QsIGluc2lkZUZpeGVkLCBvcHRpb25zLCBvd25lckVsZW1lbnQpOworICAgIGVs
c2UKKyAgICAgICAgZnJhbWVWaWV3LnNjcm9sbFJlY3RUb1Zpc2libGVJblRvcExldmVsVmlldyhh
ZGp1c3RlZFJlY3QsIGluc2lkZUZpeGVkLCBvcHRpb25zKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyBzY3JvbGxQb3NpdGlvbkNoYW5n
ZU9wdGlvbnNGb3JFbGVtZW50KGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3LCBFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAg
ICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9u
czo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7CisgICAgaWYgKCFmcmFtZVZpZXcuZnJhbWUoKS5ldmVu
dEhhbmRsZXIoKS5hdXRvc2Nyb2xsSW5Qcm9ncmVzcygpICYmIGVsZW1lbnQgJiYgdXNlU21vb3Ro
U2Nyb2xsaW5nKG9wdGlvbnMuYmVoYXZpb3IsIGVsZW1lbnQpKQorICAgICAgICBzY3JvbGxQb3Np
dGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBTY3JvbGxJc0FuaW1hdGVkOjpZZXM7CisgICAgcmV0dXJu
IHNjcm9sbFBvc2l0aW9uT3B0aW9uczsKK307CisKK3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxSZWN0
VG9WaXNpYmxlSW5DaGlsZFZpZXcoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29s
IGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucywg
Y29uc3QgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCit7CisgICAgY29uc3Qg
SFRNTEZyYW1lRWxlbWVudEJhc2UqIGZyYW1lRWxlbWVudEJhc2UgPSBudWxscHRyOworICAgIGlm
IChpczxIVE1MRnJhbWVFbGVtZW50QmFzZT4oKm93bmVyRWxlbWVudCkpCisgICAgICAgIGZyYW1l
RWxlbWVudEJhc2UgPSBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZT4ob3duZXJFbGVtZW50
KTsKKworICAgIC8vIElmIHNjcm9sbGJhcnMgYXJlbid0IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBw
ZXJtaXQgc2Nyb2xsaW5nLgorICAgIGlmIChmcmFtZUVsZW1lbnRCYXNlICYmIGZyYW1lRWxlbWVu
dEJhc2UtPnNjcm9sbGluZ01vZGUoKSA9PSBTY3JvbGxiYXJNb2RlOjpBbHdheXNPZmYpIHsKKyAg
ICAgICAgLy8gSWYgc2Nyb2xsYmFycyBhcmUgZm9yYmlkZGVuLCB1c2VyIGluaXRpYXRlZCBzY3Jv
bGxzIHNob3VsZCBvYnZpb3VzbHkgYmUgaWdub3JlZC4KKyAgICAgICAgaWYgKHdhc1Njcm9sbGVk
QnlVc2VyKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEZvcmJpZCBhdXRvc2Ny
b2xscyB3aGVuIHNjcm9sbGJhcnMgYXJlIG9mZiwgYnV0IHBlcm1pdHMgb3RoZXIgcHJvZ3JhbW1h
dGljIHNjcm9sbHMsIGxpa2UgbmF2aWdhdGlvbiB0byBhbiBhbmNob3IuCisgICAgICAgIGlmIChm
cmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxJblByb2dyZXNzKCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gSWYgdGhpcyBhc3NlcnRpb24gZmlyZXMgd2UgbmVl
ZCB0byBwcm90ZWN0IHRoZSBvd25lckVsZW1lbnQgZnJvbSBiZWluZyBkZXN0cm95ZWQuCisgICAg
U2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3Bl
OworICAgIGF1dG8gdmlld1JlY3QgPSB2aXNpYmxlQ29udGVudFJlY3QoU2Nyb2xsYWJsZUFyZWE6
OkxlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3QpOworCisgICAgLy8gc2Nyb2xsLXBhZGRpbmcg
YXBwbGllcyB0byB0aGUgc2Nyb2xsIGNvbnRhaW5lciwgYnV0IGV4cGFuZCB0aGUgcmVjdGFuZ2xl
IHRoYXQgd2Ugd2FudCB0byBleHBvc2UgaW4gb3JkZXIKKyAgICAvLyBzaW11bGF0ZSBwYWRkaW5n
IHRoZSBzY3JvbGwgY29udGFpbmVyLiBUaGlzIHJlY3RhbmdsZSBpcyBwYXNzZWQgdXAgdGhlIHRy
ZWUgb2Ygc2Nyb2xsaW5nIGVsZW1lbnRzIHRvCisgICAgLy8gZW5zdXJlIHRoYXQgdGhlIHBhZGRp
bmcgb24gdGhpcyBzY3JvbGwgY29udGFpbmVyIGlzIG1haW50YWluZWQuCisgICAgYXV0byB0YXJn
ZXRSZWN0ID0gYWJzb2x1dGVSZWN0OworICAgIGF1dG8qIGVsZW1lbnQgPSBvd25lckVsZW1lbnQt
PmNvbnRlbnREb2N1bWVudCgpID8gb3duZXJFbGVtZW50LT5jb250ZW50RG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCkgOiBudWxscHRyOworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGVsZW1l
bnQgPyBlbGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHIpCisgICAgICAgIHRhcmdldFJlY3Qu
ZXhwYW5kKHJlbmRlcmVyLT5zY3JvbGxQYWRkaW5nRm9yVmlld3BvcnRSZWN0KHZpZXdSZWN0KSk7
CisKKyAgICBhdXRvIHJldmVhbFJlY3QgPSBnZXRQb3NzaWJseUZpeGVkUmVjdFRvRXhwb3NlKHZp
ZXdSZWN0LCB0YXJnZXRSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucy5hbGlnblgsIG9wdGlvbnMu
YWxpZ25ZKTsKKyAgICBJbnRQb2ludCBzY3JvbGxQb3NpdGlvbihyb3VuZGVkSW50UG9pbnQocmV2
ZWFsUmVjdC5sb2NhdGlvbigpKSk7CisKKyAgICAvLyBBZGp1c3Qgb2Zmc2V0cyBpZiB0aGV5J3Jl
IG91dHNpZGUgb2YgdGhlIGFsbG93YWJsZSByYW5nZS4KKyAgICBzY3JvbGxQb3NpdGlvbiA9IHNj
cm9sbFBvc2l0aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQb2ludCgpLCBJbnRQb2ludChjb250
ZW50c1NpemUoKSkpOworCisgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2UgY29udGVudERvY3Vt
ZW50KCktPnNjcm9sbGluZ0VsZW1lbnQoKT8KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNTA1OQorICAgIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9s
bFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KCp0aGlzLCBl
bGVtZW50LCBvcHRpb25zKSk7CisKKyAgICBpZiAob3B0aW9ucy5zaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nID09IFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxpbmc6Ok5vICYmICFz
YWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCgpKSAKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gRklYTUU6IGlkZWFsbHkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyA8aWZyYW1lPiBpcyBp
bnNpZGUgcG9zaXRpb246Zml4ZWQuCisgICAgaWYgKGF1dG8qIG93bmVyUmVuZGVyZXIgPSBvd25l
ckVsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgICAgIHNjcm9sbFJlY3RUb1Zpc2libGUoY29udGVu
dHNUb0NvbnRhaW5pbmdWaWV3Q29udGVudHMoZW5jbG9zaW5nSW50UmVjdCh0YXJnZXRSZWN0KSks
ICpvd25lclJlbmRlcmVyLCBmYWxzZSAvKiBpbnNpZGVGaXhlZCAqLywgb3B0aW9ucyk7Cit9CisK
K3ZvaWQgRnJhbWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlSW5Ub3BMZXZlbFZpZXcoY29uc3Qg
TGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxS
ZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKK3sKKyAgICBpZiAob3B0aW9ucy5yZXZlYWxN
b2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbFVwVG9NYWluRnJhbWUgJiYgZnJhbWUo
KS5pc01haW5GcmFtZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBwYWdlID0gZnJh
bWUoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
b3B0aW9ucy5yZXZlYWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OkRlbGVnYXRlTWFpbkZy
YW1lU2Nyb2xsICYmIGZyYW1lKCkuaXNNYWluRnJhbWUoKSkgeworICAgICAgICBwYWdlLT5jaHJv
bWUoKS5zY3JvbGxNYWluRnJhbWVUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3QoYWJzb2x1dGVS
ZWN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1pblNjcm9sbFBvc2l0
aW9uID0gbWluaW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgYXV0byBtYXhTY3JvbGxQb3NpdGlv
biA9IG1heGltdW1TY3JvbGxQb3NpdGlvbigpOworCisjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgYXV0byB2aWV3UmVjdCA9IHZpc2libGVDb250ZW50UmVjdCgpOworI2Vsc2UKKyAgICAv
LyBGSVhNRTogQ29udGVudEluc2V0cyBzaG91bGQgYmUgdGFrZW4gY2FyZSBvZiBpbiBVSSBwcm9j
ZXNzIHNpZGUuIHdlYmtpdC5vcmcvYi8xOTk2ODIKKyAgICAvLyBUbyBkbyB0aGF0LCBnZXRSZWN0
VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmlldyBuZWVkcyB0byByZXR1cm4gdGhlIGFkZGl0aW9uYWwg
c2Nyb2xsaW5nIHRvIGRvIGJleW9uZCBjb250ZW50IHJlY3QuCisgICAgTGF5b3V0UmVjdCB2aWV3
UmVjdCA9IHZpZXdSZWN0RXhwYW5kZWRCeUNvbnRlbnRJbnNldHMoKTsKKworICAgIC8vIEZJWE1F
OiB3ZWJraXQub3JnL2IvMTk5NjgzIEZyYW1lVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0IGlzIHdy
b25nIHdoZW4gY29udGVudCBpbnNldHMgYXJlIHByZXNlbnQKKyAgICBtYXhTY3JvbGxQb3NpdGlv
biA9IHNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChTY3JvbGxQb3NpdGlvbih0b3RhbENvbnRlbnRz
U2l6ZSgpIC0gZmxvb3JlZEludFNpemUodmlld1JlY3Quc2l6ZSgpKSkpOworCisgICAgYXV0byBj
b250ZW50SW5zZXRzID0gcGFnZS0+Y29udGVudEluc2V0cygpOworICAgIG1pblNjcm9sbFBvc2l0
aW9uLm1vdmUoLWNvbnRlbnRJbnNldHMubGVmdCgpLCAtY29udGVudEluc2V0cy50b3AoKSk7Cisg
ICAgbWF4U2Nyb2xsUG9zaXRpb24ubW92ZShjb250ZW50SW5zZXRzLnJpZ2h0KCksIGNvbnRlbnRJ
bnNldHMuYm90dG9tKCkpOworI2VuZGlmCisgICAgLy8gTW92ZSB0aGUgdGFyZ2V0IHJlY3QgaW50
byAic2Nyb2xsVmlldyBjb250ZW50cyIgY29vcmRpbmF0ZXMuCisgICAgYXV0byB0YXJnZXRSZWN0
ID0gYWJzb2x1dGVSZWN0OworICAgIHRhcmdldFJlY3QubW92ZSgwLCBoZWFkZXJIZWlnaHQoKSk7
CisKKyAgICAvLyBzY3JvbGwtcGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVy
LCBidXQgZXhwYW5kIHRoZSByZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRl
cgorICAgIC8vIHNpbXVsYXRlIHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVj
dGFuZ2xlIGlzIHBhc3NlZCB1cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAg
ICAvLyBlbnN1cmUgdGhhdCB0aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMg
bWFpbnRhaW5lZC4KKyAgICBhdXRvKiBlbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpID8gZnJh
bWUoKS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSA6IG51bGxwdHI7CisgICAgaWYgKGF1
dG8qIHJlbmRlckJveCA9IGVsZW1lbnQgPyBlbGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHIp
CisgICAgICAgIHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xsUGFkZGluZ0ZvclZp
ZXdwb3J0UmVjdCh2aWV3UmVjdCkpOworCisgICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0
UG9zc2libHlGaXhlZFJlY3RUb0V4cG9zZSh2aWV3UmVjdCwgdGFyZ2V0UmVjdCwgaW5zaWRlRml4
ZWQsIG9wdGlvbnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7CisKKyAgICAvLyBBdm9pZCBzY3Jv
bGxpbmcgdG8gdGhlIHJvdW5kZWQgdmFsdWUgb2YgcmV2ZWFsUmVjdC5sb2NhdGlvbigpIGlmIHdl
IGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gc2Nyb2xsCisgICAgaWYgKHJldmVhbFJlY3QgIT0gdmll
d1JlY3QpIHsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2UgZG9jdW1lbnQoKS0+c2Ny
b2xsaW5nRWxlbWVudCgpPworICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNTA1OQorICAgICAgICBTY3JvbGxPZmZzZXQgY2xhbXBlZFNjcm9s
bFBvc2l0aW9uID0gcm91bmRlZEludFBvaW50KHJldmVhbFJlY3QubG9jYXRpb24oKSkuY29uc3Ry
YWluZWRCZXR3ZWVuKG1pblNjcm9sbFBvc2l0aW9uLCBtYXhTY3JvbGxQb3NpdGlvbik7CisgICAg
ICAgIHNldFNjcm9sbFBvc2l0aW9uKGNsYW1wZWRTY3JvbGxQb3NpdGlvbiwgc2Nyb2xsUG9zaXRp
b25DaGFuZ2VPcHRpb25zRm9yRWxlbWVudCgqdGhpcywgZWxlbWVudCwgb3B0aW9ucykpOworICAg
IH0KKworICAgIC8vIFRoaXMgaXMgdGhlIG91dGVybW9zdCB2aWV3IG9mIGEgd2ViIHBhZ2UsIHNv
IGFmdGVyIHNjcm9sbGluZyB0aGlzIHZpZXcgd2UKKyAgICAvLyBzY3JvbGwgaXRzIGNvbnRhaW5l
ciBieSBjYWxsaW5nIFBhZ2U6OnNjcm9sbE1haW5GcmFtZVRvUmV2ZWFsUmVjdC4KKyAgICAvLyBU
aGlzIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiB0aGUgTWFjIHBsYXRmb3JtIGluIGFwcGxpY2F0aW9u
cworICAgIC8vIHRoYXQgcHV0IHdlYiB2aWV3cyBpbnRvIHNjcm9sbGluZyBjb250YWluZXJzLCBz
dWNoIGFzIE1hYyBPUyBYIE1haWwuCisgICAgLy8gVGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24g
aW4gRXZlbnRIYW5kbGVyIGFsc28ga25vd3MgYWJvdXQgdGhpcy4KKyAgICBwYWdlLT5jaHJvbWUo
KS5zY3JvbGxDb250YWluaW5nU2Nyb2xsVmlld3NUb1JldmVhbFJlY3Qoc25hcHBlZEludFJlY3Qo
YWJzb2x1dGVSZWN0KSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3Ojpjb250ZW50c1Jlc2l6ZWQoKQpA
QCAtMzI4NCwxMSArMzQyNCwxMSBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoKQog
ICAgIC8vIFNjcm9sbCBuZXN0ZWQgbGF5ZXJzIGFuZCBmcmFtZXMgdG8gcmV2ZWFsIHRoZSBhbmNo
b3IuCiAgICAgLy8gQWxpZ24gdG8gdGhlIHRvcCBhbmQgdG8gdGhlIGNsb3Nlc3Qgc2lkZSAodGhp
cyBtYXRjaGVzIG90aGVyIGJyb3dzZXJzKS4KICAgICBpZiAoYW5jaG9yTm9kZS0+cmVuZGVyZXIo
KS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICBhbmNob3JOb2Rl
LT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3QsIGluc2lkZUZpeGVkLCB7IFNl
bGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlm
TmVlZGVkLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9wQWx3YXlzLCBTaG91bGRBbGxvd0Nyb3Nz
T3JpZ2luU2Nyb2xsaW5nOjpObyB9KTsKKyAgICAgICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0
LCAqYW5jaG9yTm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFs
TW9kZTo6UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9s
bEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMsIFNob3VsZEFsbG93Q3Jvc3NPcmlnaW5TY3JvbGxp
bmc6Ok5vIH0pOwogICAgIGVsc2UgaWYgKGFuY2hvck5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCku
aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgYW5jaG9yTm9kZS0+cmVuZGVy
ZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBpbnNpZGVGaXhlZCwgeyBTZWxlY3Rpb25S
ZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25SaWdodEFsd2F5cywgU2Ny
b2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2lu
U2Nyb2xsaW5nOjpObyB9KTsKKyAgICAgICAgc2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCAqYW5j
aG9yTm9kZS0+cmVuZGVyZXIoKSwgaW5zaWRlRml4ZWQsIHsgU2VsZWN0aW9uUmV2ZWFsTW9kZTo6
UmV2ZWFsLCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduUmlnaHRBbHdheXMsIFNjcm9sbEFsaWdubWVu
dDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6
Tm8gfSk7CiAgICAgZWxzZQotICAgICAgICBhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxS
ZWN0VG9WaXNpYmxlKHJlY3QsIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJl
dmVhbCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkxlZnRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6
YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8g
fSk7CisgICAgICAgIHNjcm9sbFJlY3RUb1Zpc2libGUocmVjdCwgKmFuY2hvck5vZGUtPnJlbmRl
cmVyKCksIGluc2lkZUZpeGVkLCB7IFNlbGVjdGlvblJldmVhbE1vZGU6OlJldmVhbCwgU2Nyb2xs
QWxpZ25tZW50OjphbGlnbkxlZnRBbHdheXMsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJ
Zk5lZWRlZCwgU2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6Tm8gfSk7CiAKICAgICBp
ZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhP
YmplY3RDYWNoZSgpKQogICAgICAgICBjYWNoZS0+aGFuZGxlU2Nyb2xsZWRUb0FuY2hvcihhbmNo
b3JOb2RlLmdldCgpKTsKQEAgLTU3NzQsNiArNTkxNCw0NCBAQCBPdmVyc2Nyb2xsQmVoYXZpb3Ig
RnJhbWVWaWV3Ojp2ZXJ0aWNhbE92ZXJzY3JvbGxCZWhhdmlvcigpICBjb25zdAogICAgICAgICBy
ZXR1cm4gc2Nyb2xsaW5nT2JqZWN0LT5zdHlsZSgpLm92ZXJzY3JvbGxCZWhhdmlvclkoKTsKICAg
ICByZXR1cm4gT3ZlcnNjcm9sbEJlaGF2aW9yOjpBdXRvOwogfQorCitMYXlvdXRSZWN0IEZyYW1l
Vmlldzo6Z2V0UG9zc2libHlGaXhlZFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNp
YmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwg
Y29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxp
Z25ZKSBjb25zdAoreworICAgIGlmICghaW5zaWRlRml4ZWQpCisgICAgICAgIHJldHVybiBnZXRS
ZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmlldyh2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdCwgYWxp
Z25YLCBhbGlnblkpOworCisgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW5zaWRlIHBvc2l0aW9u
OmZpeGVkIGFuZCB3ZSdyZSBub3Qgc2NhbGVkLCBubyBhbW91bnQgb2Ygc2Nyb2xsaW5nIGlzIGdv
aW5nIHRvIG1vdmUgdGhpbmdzIGFyb3VuZC4KKyAgICBpZiAoZnJhbWVTY2FsZUZhY3RvcigpID09
IDEpCisgICAgICAgIHJldHVybiB2aXNpYmxlUmVjdDsKKworICAgIC8vIEZJWE1FOiBTaG91bGRu
J3QgdGhpcyByZXR1cm4gdmlzaWJsZVJlY3QgYXMgd2VsbD8KKyAgICBpZiAoIWZyYW1lKCkuc2V0
dGluZ3MoKS52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGdldFJlY3RU
b0V4cG9zZUZvclNjcm9sbEludG9WaWV3KHZpc2libGVSZWN0LCBleHBvc2VSZWN0LCBhbGlnblgs
IGFsaWduWSk7CisKKyAgICAvLyBleHBvc2VSZWN0IGlzIGluIGFic29sdXRlIGNvb3JkcywgYWZm
ZWN0ZWQgYnkgcGFnZSBzY2FsZS4gVW5zY2FsZSBpdC4KKyAgICBhdXRvIHVuc2NhbGVkRXhwb3Nl
UmVjdCA9IGV4cG9zZVJlY3Q7CisgICAgdW5zY2FsZWRFeHBvc2VSZWN0LnNjYWxlKDEgLyBmcmFt
ZVNjYWxlRmFjdG9yKCkpOworICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5tb3ZlKDAsIC1oZWFkZXJI
ZWlnaHQoKSk7CisKKyAgICAvLyBUaGVzZSBhcmUgYm90aCBpbiB1bnNjYWxlZCBjb29yZGluYXRl
cy4KKyAgICBhdXRvIGxheW91dFZpZXdwb3J0ID0gbGF5b3V0Vmlld3BvcnRSZWN0KCk7CisgICAg
YXV0byB2aXN1YWxWaWV3cG9ydCA9IHZpc3VhbFZpZXdwb3J0UmVjdCgpOworCisgICAgLy8gVGhl
IHJlY3QgdG8gZXhwb3NlIG1heSBiZSBwYXJ0aWFsbHkgb2Zmc2NyZWVuLCB3aGljaCB3ZSBjYW4n
dCBkbyBhbnl0aGluZyBhYm91dCB3aXRoIHBvc2l0aW9uOmZpeGVkLgorICAgIHVuc2NhbGVkRXhw
b3NlUmVjdC5pbnRlcnNlY3QobGF5b3V0Vmlld3BvcnQpOworCisgICAgLy8gTWFrZSBzdXJlIGl0
J3Mgbm90IGxhcmdlciB0aGFuIHRoZSB2aXN1YWwgdmlld3BvcnQ7IGlmIHNvLCB3ZSdsbCBqdXN0
IG1vdmUgdG8gdGhlIHRvcCBsZWZ0LgorICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5zZXRTaXplKHVu
c2NhbGVkRXhwb3NlUmVjdC5zaXplKCkuc2hydW5rVG8odmlzdWFsVmlld3BvcnQuc2l6ZSgpKSk7
CisKKyAgICAvLyBDb21wdXRlIGhvdyBtdWNoIHdlIGhhdmUgdG8gbW92ZSB0aGUgdmlzdWFsVmll
d3BvcnQgdG8gcmV2ZWFsIHRoZSBwYXJ0IG9mIHRoZSBsYXlvdXRWaWV3cG9ydCB0aGF0IGNvbnRh
aW5zIGV4cG9zZVJlY3QuCisgICAgYXV0byByZXF1aXJlZFZpc3VhbFZpZXdwb3J0ID0gZ2V0UmVj
dFRvRXhwb3NlRm9yU2Nyb2xsSW50b1ZpZXcodmlzdWFsVmlld3BvcnQsIHVuc2NhbGVkRXhwb3Nl
UmVjdCwgYWxpZ25YLCBhbGlnblkpOworCisgICAgLy8gU2NhbGUgaXQgYmFjayB1cC4KKyAgICBy
ZXF1aXJlZFZpc3VhbFZpZXdwb3J0LnNjYWxlKGZyYW1lU2NhbGVGYWN0b3IoKSk7CisgICAgcmVx
dWlyZWRWaXN1YWxWaWV3cG9ydC5tb3ZlKDAsIGhlYWRlckhlaWdodCgpKTsKKyAgICByZXR1cm4g
cmVxdWlyZWRWaXN1YWxWaWV3cG9ydDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
dW5kZWYgUEFHRV9JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggNjAyZDYwYzljOTcwNTVm
NjQ4Y2E0OGZmZmJmOWM0MmI1YzE2ZjkzMy4uZDUwOGU2MDJkMjQ4NmZjZjdiZDZjMzZhNzU2ZGM1
MDBiMTYzNjIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yNTQsNiArMjU0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2Nyb2xsVG9Gb2N1c2VkRWxlbWVudEltbWVkaWF0ZWx5SWZOZWVk
ZWQoKTsKICAgICB2b2lkIHVwZGF0ZUxheWVyUG9zaXRpb25zQWZ0ZXJTY3JvbGxpbmcoKSBmaW5h
bDsKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJTY3JvbGxpbmcoKSBmaW5h
bDsKKyAgICBzdGF0aWMgV0VCQ09SRV9FWFBPUlQgYm9vbCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNv
bnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgY29uc3QgUmVuZGVyT2JqZWN0JiwgYm9vbCBp
bnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKTsKIAogICAgIGJv
b2wgcmVxdWVzdFNjcm9sbFBvc2l0aW9uVXBkYXRlKGNvbnN0IFNjcm9sbFBvc2l0aW9uJiwgU2Ny
b2xsVHlwZSA9IFNjcm9sbFR5cGU6OlVzZXIsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBp
bmc6OkNsYW1wZWQpIGZpbmFsOwogICAgIGJvb2wgcmVxdWVzdEFuaW1hdGVkU2Nyb2xsVG9Qb3Np
dGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbiYsIFNjcm9sbENsYW1waW5nID0gU2Nyb2xsQ2xhbXBp
bmc6OkNsYW1wZWQpIGZpbmFsOwpAQCAtODgzLDYgKzg4NCwxMCBAQCBwcml2YXRlOgogCiAgICAg
c3RhdGljIE1vbm90b25pY1RpbWUgc0N1cnJlbnRQYWludFRpbWVTdGFtcDsgLy8gdXNlZCBmb3Ig
ZGV0ZWN0aW5nIGRlY29kZWQgcmVzb3VyY2UgdGhyYXNoIGluIHRoZSBjYWNoZQogCisgICAgdm9p
ZCBzY3JvbGxSZWN0VG9WaXNpYmxlSW5DaGlsZFZpZXcoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1
dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9u
cyYsIGNvbnN0IEhUTUxGcmFtZU93bmVyRWxlbWVudCopOworICAgIHZvaWQgc2Nyb2xsUmVjdFRv
VmlzaWJsZUluVG9wTGV2ZWxWaWV3KGNvbnN0IExheW91dFJlY3QmIGFic29sdXRlUmVjdCwgYm9v
bCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJsZU9wdGlvbnMmKTsKKyAgICBM
YXlvdXRSZWN0IGdldFBvc3NpYmx5Rml4ZWRSZWN0VG9FeHBvc2UoY29uc3QgTGF5b3V0UmVjdCYg
dmlzaWJsZVJlY3QsIGNvbnN0IExheW91dFJlY3QmIGV4cG9zZVJlY3QsIGJvb2wgaW5zaWRlRml4
ZWQsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25YLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQm
IGFsaWduWSkgY29uc3Q7CisKICAgICBjb25zdCBSZWY8RnJhbWU+IG1fZnJhbWU7CiAgICAgRnJh
bWVWaWV3TGF5b3V0Q29udGV4dCBtX2xheW91dENvbnRleHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUzMzVmY2ZkZTYwNTdjNWU5
Y2M3MDhlNDk0YzUxNzViMjY4Y2I2ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFBvcnRpb25zIGFyZSBDb3B5cmlnaHQgKEMpIDE5OTggTmV0c2Nh
cGUgQ29tbXVuaWNhdGlvbnMgQ29ycG9yYXRpb24uCisgKgorICogT3RoZXIgY29udHJpYnV0b3Jz
OgorICogICBSb2JlcnQgTydDYWxsYWhhbiA8cm9jK0Bjcy5jbXUuZWR1PgorICogICBEYXZpZCBC
YXJvbiA8ZGJhcm9uQGZhcy5oYXJ2YXJkLmVkdT4KKyAqICAgQ2hyaXN0aWFuIEJpZXNpbmdlciA8
Y2JpZXNpbmdlckB3ZWIuZGU+CisgKiAgIFJhbmRhbGwgSmVzdXAgPHJqZXN1cEB3Z2F0ZS5jb20+
CisgKiAgIFJvbGFuZCBNYWlueiA8cm9sYW5kLm1haW56QGluZm9ybWF0aWsubWVkLnVuaS1naWVz
c2VuLmRlPgorICogICBKb3NoIFNvcmVmIDx0aW1lbGVzc0BtYWMuY29tPgorICogICBCb3JpcyBa
YmFyc2t5IDxiemJhcnNreUBtaXQuZWR1PgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKgorICogQWx0ZXJu
YXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUg
dGVybXMKKyAqIG9mIGVpdGhlciB0aGUgTW96aWxsYSBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDEu
MSwgZm91bmQgYXQKKyAqIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTVBMLyAodGhlICJNUEwiKSBv
ciB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIFZlcnNpb24gMi4wLCBmb3VuZCBh
dCBodHRwOi8vd3d3LmZzZi5vcmcvY29weWxlZnQvZ3BsLmh0bWwKKyAqICh0aGUgIkdQTCIpLCBp
biB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBNUEwgb3IgdGhlIEdQTCBhcmUKKyAq
IGFwcGxpY2FibGUgaW5zdGVhZCBvZiB0aG9zZSBhYm92ZS4gIElmIHlvdSB3aXNoIHRvIGFsbG93
IHVzZSBvZiB5b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5IHVuZGVyIHRoZSB0ZXJt
cyBvZiBvbmUgb2YgdGhvc2UgdHdvCisgKiBsaWNlbnNlcyAodGhlIE1QTCBvciB0aGUgR1BMKSBh
bmQgbm90IHRvIGFsbG93IG90aGVycyB0byB1c2UgeW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZp
bGUgdW5kZXIgdGhlIExHUEwsIGluZGljYXRlIHlvdXIgZGVjaXNpb24gYnkKKyAqIGRlbGV0aW5n
dGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSBub3RpY2UgYW5k
CisgKiBvdGhlciBwcm92aXNpb25zIHJlcXVpcmVkIGJ5IHRoZSBNUEwgb3IgdGhlIEdQTCwgYXMg
dGhlIGNhc2UgbWF5IGJlLgorICogSWYgeW91IGRvIG5vdCBkZWxldGUgdGhlIHByb3Zpc2lvbnMg
YWJvdmUsIGEgcmVjaXBpZW50IG1heSB1c2UgeW91cgorICogdmVyc2lvbiBvZiB0aGlzIGZpbGUg
dW5kZXIgYW55IG9mIHRoZSBMR1BMLCB0aGUgTVBMIG9yIHRoZSBHUEwuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbEFsaWdubWVudC5oIgorCisjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGln
bkNlbnRlcklmTm90VmlzaWJsZSA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxp
Z25DZW50ZXIsIEJlaGF2aW9yOjpOb1Njcm9sbCB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5vdFZpc2libGUgPSB7IEJlaGF2aW9yOjpOb1Nj
cm9sbCwgQmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSwgQmVoYXZpb3I6Ok5vU2Nyb2xsIH07
Citjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkNlbnRlcklmTmVl
ZGVkID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZp
b3I6OkFsaWduVG9DbG9zZXN0RWRnZSB9OworV0VCQ09SRV9FWFBPUlQgY29uc3QgU2Nyb2xsQWxp
Z25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCA9IHsgQmVoYXZpb3I6
Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlLCBCZWhhdmlvcjo6QWxpZ25U
b0Nsb3Nlc3RFZGdlIH07CitXRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Ny
b2xsQWxpZ25tZW50OjphbGlnbkNlbnRlckFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduQ2VudGVy
LCBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciB9OworY29uc3Qg
U2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub3BBbHdheXMgPSB7IEJlaGF2
aW9yOjpBbGlnblRvcCwgQmVoYXZpb3I6OkFsaWduVG9wLCBCZWhhdmlvcjo6QWxpZ25Ub3AgfTsK
K2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduUmlnaHRBbHdheXMg
PSB7IEJlaGF2aW9yOjpBbGlnblJpZ2h0LCBCZWhhdmlvcjo6QWxpZ25SaWdodCwgQmVoYXZpb3I6
OkFsaWduUmlnaHQgfTsKK2NvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFs
aWduTGVmdEFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduTGVmdCwgQmVoYXZpb3I6OkFsaWduTGVm
dCwgQmVoYXZpb3I6OkFsaWduTGVmdCB9OworY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNjcm9sbEFs
aWdubWVudDo6YWxpZ25Cb3R0b21BbHdheXMgPSB7IEJlaGF2aW9yOjpBbGlnbkJvdHRvbSwgQmVo
YXZpb3I6OkFsaWduQm90dG9tLCBCZWhhdmlvcjo6QWxpZ25Cb3R0b20gfTsKKyAgICAKK1RleHRT
dHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3IgYikKK3sKKyAgICBzd2l0Y2ggKGIpIHsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVo
YXZpb3I6Ok5vU2Nyb2xsOgorICAgICAgICByZXR1cm4gdHMgPDwgIk5vU2Nyb2xsIjsKKyAgICBj
YXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyOgorICAgICAgICByZXR1
cm4gdHMgPDwgIkFsaWduQ2VudGVyIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3I6OkFsaWduVG9wOgorICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduVG9wIjsKKyAgICBjYXNl
IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFsaWduQm90dG9tOgorICAgICAgICByZXR1cm4g
dHMgPDwgIkFsaWduQm90dG9tIjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6
OkFsaWduTGVmdDoKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnbkxlZnQiOworICAgIGNhc2Ug
U2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25SaWdodDoKKyAgICAgICAgcmV0dXJuIHRz
IDw8ICJBbGlnblJpZ2h0IjsKKyAgICBjYXNlIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFs
aWduVG9DbG9zZXN0RWRnZToKKyAgICAgICAgcmV0dXJuIHRzIDw8ICJBbGlnblRvQ2xvc2VzdEVk
Z2UiOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisgICAgCitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIHMpCit7CisgICAgcmV0
dXJuIHRzIDw8ICJTY3JvbGxBbGlnbm1lbnQ6IHZpc2libGU6ICIgPDwgcy5tX3JlY3RWaXNpYmxl
IDw8ICIgaGlkZGVuOiAiIDw8IHMubV9yZWN0SGlkZGVuIDw8ICIgcGFydGlhbDogIiA8PCBzLm1f
cmVjdFBhcnRpYWw7Cit9CisKK307IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbEFsaWdubWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxYmI2ZWY5ZTIyZTdjNTk1
NTg4YWI4YjMxMjc5MmEwODUzM2FlYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxBbGlnbm1lbnQuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA5LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUG9ydGlvbnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21t
dW5pY2F0aW9ucyBDb3Jwb3JhdGlvbi4KKyAqCisgKiBPdGhlciBjb250cmlidXRvcnM6CisgKiAg
IFJvYmVydCBPJ0NhbGxhaGFuIDxyb2MrQGNzLmNtdS5lZHU+CisgKiAgIERhdmlkIEJhcm9uIDxk
YmFyb25AZmFzLmhhcnZhcmQuZWR1PgorICogICBDaHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2lu
Z2VyQHdlYi5kZT4KKyAqICAgUmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRlLmNvbT4KKyAqICAg
Um9sYW5kIE1haW56IDxyb2xhbmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+
CisgKiAgIEpvc2ggU29yZWYgPHRpbWVsZXNzQG1hYy5jb20+CisgKiAgIEJvcmlzIFpiYXJza3kg
PGJ6YmFyc2t5QG1pdC5lZHU+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqCisgKiBBbHRlcm5hdGl2ZWx5
LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwor
ICogb2YgZWl0aGVyIHRoZSBNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3Vu
ZCBhdAorICogaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6
Ly93d3cuZnNmLm9yZy9jb3B5bGVmdC9ncGwuaHRtbAorICogKHRoZSAiR1BMIiksIGluIHdoaWNo
IGNhc2UgdGhlIHByb3Zpc2lvbnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQorICogYXBwbGlj
YWJsZSBpbnN0ZWFkIG9mIHRob3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9m
IHlvdXIKKyAqIHZlcnNpb24gb2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9u
ZSBvZiB0aG9zZSB0d28KKyAqIGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3Qg
dG8gYWxsb3cgb3RoZXJzIHRvIHVzZSB5b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRl
ciB0aGUgTEdQTCwgaW5kaWNhdGUgeW91ciBkZWNpc2lvbiBieQorICogZGVsZXRpbmd0aGUgcHJv
dmlzaW9ucyBhYm92ZSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKKyAqIG90
aGVyIHByb3Zpc2lvbnMgcmVxdWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2Fz
ZSBtYXkgYmUuCisgKiBJZiB5b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwg
YSByZWNpcGllbnQgbWF5IHVzZSB5b3VyCisgKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBh
bnkgb2YgdGhlIExHUEwsIHRoZSBNUEwgb3IgdGhlIEdQTC4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdURiB7CitjbGFzcyBUZXh0U3RyZWFtOworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBTY3JvbGxBbGlnbm1lbnQgeworCisgICAgZW51bSBjbGFzcyBCZWhh
dmlvciB7CisgICAgICAgIE5vU2Nyb2xsLAorICAgICAgICBBbGlnbkNlbnRlciwKKyAgICAgICAg
QWxpZ25Ub3AsCisgICAgICAgIEFsaWduQm90dG9tLAorICAgICAgICBBbGlnbkxlZnQsCisgICAg
ICAgIEFsaWduUmlnaHQsCisgICAgICAgIEFsaWduVG9DbG9zZXN0RWRnZQorICAgIH07CisKKyAg
ICBCZWhhdmlvciBnZXRWaXNpYmxlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3JlY3RWaXNp
YmxlOyB9CisgICAgQmVoYXZpb3IgZ2V0UGFydGlhbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
bV9yZWN0UGFydGlhbDsgfQorICAgIEJlaGF2aW9yIGdldEhpZGRlbkJlaGF2aW9yKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWN0SGlkZGVuOyB9CisgICAgdm9pZCBkaXNhYmxlTGVnYWN5SG9yaXpvbnRh
bFZpc2liaWxpdHlUaHJlc2hvbGQoKSB7IG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxp
dHlUaHJlc2hvbGQgPSBmYWxzZTsgfQorICAgIGJvb2wgbGVnYWN5SG9yaXpvbnRhbFZpc2liaWxp
dHlUaHJlc2hvbGRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVMZWdhY3lIb3Jpem9u
dGFsVmlzaWJpbGl0eVRocmVzaG9sZDsgfQorCisgICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdu
bWVudCBhbGlnbkNlbnRlcklmTm90VmlzaWJsZTsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxp
Z25tZW50IGFsaWduVG9FZGdlSWZOb3RWaXNpYmxlOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25DZW50ZXJJZk5lZWRlZDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOZWVkZWQ7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNl
bnRlckFsd2F5czsKKyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9wQWx3
YXlzOworICAgIHN0YXRpYyBjb25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25SaWdodEFsd2F5czsK
KyAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduTGVmdEFsd2F5czsKKyAgICBz
dGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduQm90dG9tQWx3YXlzOworCisgICAgQmVo
YXZpb3IgbV9yZWN0VmlzaWJsZTsKKyAgICBCZWhhdmlvciBtX3JlY3RIaWRkZW47CisgICAgQmVo
YXZpb3IgbV9yZWN0UGFydGlhbDsKKyAgICBib29sIG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZp
c2liaWxpdHlUaHJlc2hvbGQgeyB0cnVlIH07Cit9OworICAgIAorV0VCQ09SRV9FWFBPUlQgV1RG
OjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbEFsaWdubWVu
dDo6QmVoYXZpb3IpOworV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYpOworCit9OyAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YWJsZUFyZWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3Bw
CmluZGV4IDllNjFiZDdlZWRmYzUwNGZjNmM4ZWViMTEyNTgyNjQ1YjYwZDFiY2YuLjY2MzIwYjUw
Yzk4ZmU4ZTQ1MjAyYzkzOWU3NzNlMzExZjFiNjQ2MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAKQEAgLTgwMSw2ICs4MDEsODEgQEAgc3RkOjpvcHRpb25h
bDxCb3hTaWRlPiBTY3JvbGxhYmxlQXJlYTo6dGFyZ2V0U2lkZUZvclNjcm9sbERlbHRhKEZsb2F0
U2l6ZSBkZWx0YSwKICAgICByZXR1cm4geyB9OwogfQogCitMYXlvdXRSZWN0IFNjcm9sbGFibGVB
cmVhOjpnZXRSZWN0VG9FeHBvc2VGb3JTY3JvbGxJbnRvVmlldyhjb25zdCBMYXlvdXRSZWN0JiB2
aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhwb3NlUmVjdCwgY29uc3QgU2Nyb2xsQWxp
Z25tZW50JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgbWluSW50ZXJzZWN0Rm9yUmV2ZWFsID0gMzI7CisKKyAgICAv
LyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIFggYmVoYXZpb3IuCisgICAgU2Nyb2xsQWxpZ25t
ZW50OjpCZWhhdmlvciBzY3JvbGxYOworICAgIExheW91dFJlY3QgZXhwb3NlUmVjdFgoZXhwb3Nl
UmVjdC54KCksIHZpc2libGVSZWN0LnkoKSwgZXhwb3NlUmVjdC53aWR0aCgpLCB2aXNpYmxlUmVj
dC5oZWlnaHQoKSk7CisgICAgTGF5b3V0VW5pdCBpbnRlcnNlY3RXaWR0aCA9IGludGVyc2VjdGlv
bih2aXNpYmxlUmVjdCwgZXhwb3NlUmVjdFgpLndpZHRoKCk7CisgICAgaWYgKGludGVyc2VjdFdp
ZHRoID09IGV4cG9zZVJlY3Qud2lkdGgoKSB8fCAoYWxpZ25YLmxlZ2FjeUhvcml6b250YWxWaXNp
YmlsaXR5VGhyZXNob2xkRW5hYmxlZCgpICYmIGludGVyc2VjdFdpZHRoID49IG1pbkludGVyc2Vj
dEZvclJldmVhbCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBmdWxseSB2aXNp
YmxlLCB1c2UgdGhlIHNwZWNpZmllZCB2aXNpYmxlIGJlaGF2aW9yLgorICAgICAgICAvLyBJZiB0
aGUgcmVjdGFuZ2xlIGlzIHBhcnRpYWxseSB2aXNpYmxlLCBidXQgb3ZlciBhIGNlcnRhaW4gdGhy
ZXNob2xkLAorICAgICAgICAvLyB0aGVuIHRyZWF0IGl0IGFzIGZ1bGx5IHZpc2libGUgdG8gYXZv
aWQgdW5uZWNlc3NhcnkgaG9yaXpvbnRhbCBzY3JvbGxpbmcKKyAgICAgICAgc2Nyb2xsWCA9IGFs
aWduWC5nZXRWaXNpYmxlQmVoYXZpb3IoKTsKKyAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdpZHRo
ID09IHZpc2libGVSZWN0LndpZHRoKCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmln
Z2VyIHRoYW4gdGhlIHZpc2libGUgYXJlYSwgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIu
IE90aGVyIGFsaWdubWVudHMgd2lsbCB3b3JrLgorICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdl
dFZpc2libGVCZWhhdmlvcigpOworICAgICAgICBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1l
bnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKKyAgICAgICAgICAgIHNjcm9sbFggPSBTY3JvbGxB
bGlnbm1lbnQ6OkJlaGF2aW9yOjpOb1Njcm9sbDsKKyAgICB9IGVsc2UgaWYgKGludGVyc2VjdFdp
ZHRoID4gMCkKKyAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJs
ZSwgYnV0IG5vdCBhYm92ZSB0aGUgbWluaW11bSB0aHJlc2hvbGQsIHVzZSB0aGUgc3BlY2lmaWVk
IHBhcnRpYWwgYmVoYXZpb3IKKyAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRQYXJ0aWFsQmVo
YXZpb3IoKTsKKyAgICBlbHNlCisgICAgICAgIHNjcm9sbFggPSBhbGlnblguZ2V0SGlkZGVuQmVo
YXZpb3IoKTsKKyAgICAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNsb3Nlc3Qg
ZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0IGlzIGZ1cnRoZXIgcmlnaHQKKyAgICAvLyB0aGFuIHRo
ZSB2aXNpYmxlUmVjdCwgYW5kIG5vdCBiaWdnZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCB0aGVu
IGFsaWduIHdpdGggdGhlIHJpZ2h0LgorICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVu
dDo6QmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFgoKSA+IHZp
c2libGVSZWN0Lm1heFgoKSAmJiBleHBvc2VSZWN0LndpZHRoKCkgPCB2aXNpYmxlUmVjdC53aWR0
aCgpKQorICAgICAgICBzY3JvbGxYID0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25S
aWdodDsKKworICAgIC8vIEdpdmVuIHRoZSBYIGJlaGF2aW9yLCBjb21wdXRlIHRoZSBYIGNvb3Jk
aW5hdGUuCisgICAgTGF5b3V0VW5pdCB4OworICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdu
bWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsKQorICAgICAgICB4ID0gdmlzaWJsZVJlY3QueCgpOwor
ICAgIGVsc2UgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25S
aWdodCkKKyAgICAgICAgeCA9IGV4cG9zZVJlY3QubWF4WCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgo
KTsKKyAgICBlbHNlIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3I6OkFs
aWduQ2VudGVyKQorICAgICAgICB4ID0gZXhwb3NlUmVjdC54KCkgKyAoZXhwb3NlUmVjdC53aWR0
aCgpIC0gdmlzaWJsZVJlY3Qud2lkdGgoKSkgLyAyOworICAgIGVsc2UKKyAgICAgICAgeCA9IGV4
cG9zZVJlY3QueCgpOworCisgICAgLy8gRGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBZIGJlaGF2
aW9yLgorICAgIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3Igc2Nyb2xsWTsKKyAgICBMYXlvdXRS
ZWN0IGV4cG9zZVJlY3RZKHZpc2libGVSZWN0LngoKSwgZXhwb3NlUmVjdC55KCksIHZpc2libGVS
ZWN0LndpZHRoKCksIGV4cG9zZVJlY3QuaGVpZ2h0KCkpOworICAgIExheW91dFVuaXQgaW50ZXJz
ZWN0SGVpZ2h0ID0gaW50ZXJzZWN0aW9uKHZpc2libGVSZWN0LCBleHBvc2VSZWN0WSkuaGVpZ2h0
KCk7CisgICAgaWYgKGludGVyc2VjdEhlaWdodCA9PSBleHBvc2VSZWN0LmhlaWdodCgpKSB7Cisg
ICAgICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVj
aWZpZWQgdmlzaWJsZSBiZWhhdmlvci4KKyAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNp
YmxlQmVoYXZpb3IoKTsKKyAgICB9IGVsc2UgaWYgKGludGVyc2VjdEhlaWdodCA9PSB2aXNpYmxl
UmVjdC5oZWlnaHQoKSkgeworICAgICAgICAvLyBJZiB0aGUgcmVjdCBpcyBiaWdnZXIgdGhhbiB0
aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRlci4gT3RoZXIgYWxp
Z25tZW50cyB3aWxsIHdvcmsuCisgICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0VmlzaWJsZUJl
aGF2aW9yKCk7CisgICAgICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFsaWdubWVudDo6QmVoYXZp
b3I6OkFsaWduQ2VudGVyKQorICAgICAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6
QmVoYXZpb3I6Ok5vU2Nyb2xsOworICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0SGVpZ2h0ID4gMCkK
KyAgICAgICAgLy8gSWYgdGhlIHJlY3RhbmdsZSBpcyBwYXJ0aWFsbHkgdmlzaWJsZSwgdXNlIHRo
ZSBzcGVjaWZpZWQgcGFydGlhbCBiZWhhdmlvcgorICAgICAgICBzY3JvbGxZID0gYWxpZ25ZLmdl
dFBhcnRpYWxCZWhhdmlvcigpOworICAgIGVsc2UKKyAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5n
ZXRIaWRkZW5CZWhhdmlvcigpOworICAgIC8vIElmIHdlJ3JlIHRyeWluZyB0byBhbGlnbiB0byB0
aGUgY2xvc2VzdCBlZGdlLCBhbmQgdGhlIGV4cG9zZVJlY3QgaXMgZnVydGhlciBkb3duCisgICAg
Ly8gdGhhbiB0aGUgdmlzaWJsZVJlY3QsIGFuZCBub3QgYmlnZ2VyIHRoYW4gdGhlIHZpc2libGUg
YXJlYSwgdGhlbiBhbGlnbiB3aXRoIHRoZSBib3R0b20uCisgICAgaWYgKHNjcm9sbFkgPT0gU2Ny
b2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3Qu
bWF4WSgpID4gdmlzaWJsZVJlY3QubWF4WSgpICYmIGV4cG9zZVJlY3QuaGVpZ2h0KCkgPCB2aXNp
YmxlUmVjdC5oZWlnaHQoKSkKKyAgICAgICAgc2Nyb2xsWSA9IFNjcm9sbEFsaWdubWVudDo6QmVo
YXZpb3I6OkFsaWduQm90dG9tOworCisgICAgLy8gR2l2ZW4gdGhlIFkgYmVoYXZpb3IsIGNvbXB1
dGUgdGhlIFkgY29vcmRpbmF0ZS4KKyAgICBMYXlvdXRVbml0IHk7CisgICAgaWYgKHNjcm9sbFkg
PT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGwpCisgICAgICAgIHkgPSB2aXNp
YmxlUmVjdC55KCk7CisgICAgZWxzZSBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJl
aGF2aW9yOjpBbGlnbkJvdHRvbSkKKyAgICAgICAgeSA9IGV4cG9zZVJlY3QubWF4WSgpIC0gdmlz
aWJsZVJlY3QuaGVpZ2h0KCk7CisgICAgZWxzZSBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1l
bnQ6OkJlaGF2aW9yOjpBbGlnbkNlbnRlcikKKyAgICAgICAgeSA9IGV4cG9zZVJlY3QueSgpICsg
KGV4cG9zZVJlY3QuaGVpZ2h0KCkgLSB2aXNpYmxlUmVjdC5oZWlnaHQoKSkgLyAyOworICAgIGVs
c2UKKyAgICAgICAgeSA9IGV4cG9zZVJlY3QueSgpOworCisgICAgcmV0dXJuIExheW91dFJlY3Qo
TGF5b3V0UG9pbnQoeCwgeSksIHZpc2libGVSZWN0LnNpemUoKSk7Cit9CisKIFRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGFibGVBcmVhJiBzY3JvbGxh
YmxlQXJlYSkKIHsKICAgICB0cyA8PCBzY3JvbGxhYmxlQXJlYS5kZWJ1Z0Rlc2NyaXB0aW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaAppbmRleCAyYmRjMThhMTk4
ODAwNGZhZmMyMzc1NzJkYWYyOTI3MjkxZWQ4ZGVmLi4wODQxNzQ5MWM0NzI5MjZiYzZmNGQ2N2Yy
ZGViNjI5MDQ4YWRkMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxhYmxlQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUmVjdEVkZ2Vz
LmgiCisjaW5jbHVkZSAiU2Nyb2xsQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9m
ZnNldHNJbmZvLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJTY3JvbGxi
YXIuaCIKQEAgLTM5OSw2ICs0MDAsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGhhc0xheWVy
Rm9yU2Nyb2xsQ29ybmVyKCkgY29uc3Q7CiAKKyAgICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4cG9z
ZUZvclNjcm9sbEludG9WaWV3KGNvbnN0IExheW91dFJlY3QmIHZpc2libGVSZWN0LCBjb25zdCBM
YXlvdXRSZWN0JiBleHBvc2VSZWN0LCBjb25zdCBTY3JvbGxBbGlnbm1lbnQmIGFsaWduWCwgY29u
c3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblkpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdFQkNP
UkVfRVhQT1JUIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3RJbnRlcm5hbChWaXNp
YmxlQ29udGVudFJlY3RJbmNsdWRlc1Njcm9sbGJhcnMsIFZpc2libGVDb250ZW50UmVjdEJlaGF2
aW9yKSBjb25zdDsKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBTY3JvbGxQ
b3NpdGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
ZmZhZGQwMWRmNGQwY2I1YzUxYTliMjE1OGEzMjk4Y2YwNTRiZDAxMy4uMWIyZjI3Y2Y3ZThkZDU5
ZmU4MWJhODdjNTcxNjUzZWFjM2VkMmRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0xMjMsNyArMTIzLDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2lu
Y2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsU25hcE9mZnNldHNJbmZv
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCkBAIC0xNDUsOCArMTQ0LDYgQEAKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgog
Ci0jZGVmaW5lIE1JTl9JTlRFUlNFQ1RfRk9SX1JFVkVBTCAzMgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC01NjksMTYgKzU2Niw2IEBAIHN0
YXRpYyBib29sIGNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dChjb25zdCBSZW5kZXJMYXllciYgbGF5
ZXIpCiAgICAgICAgIHx8IGxheWVyLmVzdGFibGlzaGVzVG9wTGF5ZXIoKTsKIH0KIAotc3RhdGlj
IHZvaWQgZXhwYW5kU2Nyb2xsUmVjdFRvVmlzaWJsZVRhcmdldFJlY3RUb0luY2x1ZGVTY3JvbGxQ
YWRkaW5nKFJlbmRlckJveCogcmVuZGVyQm94LCBjb25zdCBMYXlvdXRSZWN0JiB2aWV3UmVjdCwg
TGF5b3V0UmVjdCYgdGFyZ2V0UmVjdCkKLXsKLSAgICBpZiAoIXJlbmRlckJveCkKLSAgICAgICAg
cmV0dXJuOwotICAgIC8vIHNjcm9sbC1wYWRkaW5nIGFwcGxpZXMgdG8gdGhlIHNjcm9sbCBjb250
YWluZXIsIGJ1dCBleHBhbmQgdGhlIHJlY3RhbmdsZSB0aGF0IHdlIHdhbnQgdG8gZXhwb3NlIGlu
IG9yZGVyCi0gICAgLy8gc2ltdWxhdGUgcGFkZGluZyB0aGUgc2Nyb2xsIGNvbnRhaW5lci4gVGhp
cyByZWN0YW5nbGUgaXMgcGFzc2VkIHVwIHRoZSB0cmVlIG9mIHNjcm9sbGluZyBlbGVtZW50cyB0
bwotICAgIC8vIGVuc3VyZSB0aGF0IHRoZSBwYWRkaW5nIG9uIHRoaXMgc2Nyb2xsIGNvbnRhaW5l
ciBpcyBtYWludGFpbmVkLgotICAgIHRhcmdldFJlY3QuZXhwYW5kKHJlbmRlckJveC0+c2Nyb2xs
UGFkZGluZ0ZvclZpZXdwb3J0UmVjdCh2aWV3UmVjdCkpOwotfQotCiBib29sIFJlbmRlckxheWVy
OjpzaG91bGRCZU5vcm1hbEZsb3dPbmx5KCkgY29uc3QKIHsKICAgICBpZiAoY2FuQ3JlYXRlU3Rh
Y2tpbmdDb250ZXh0KCp0aGlzKSkKQEAgLTI0NDQsMjIgKzI0MzEsNyBAQCBMYXlvdXRTaXplIFJl
bmRlckxheWVyOjpvZmZzZXRGcm9tQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9y
TGF5ZXIsIENvbAogICAgIHJldHVybiB0b0xheW91dFNpemUoY29udmVydFRvTGF5ZXJDb29yZHMo
YW5jZXN0b3JMYXllciwgTGF5b3V0UG9pbnQoKSwgYWRqdXN0Rm9yQ29sdW1ucykpOwogfQogCi1z
dGF0aWMgaW5saW5lIGJvb2wgZnJhbWVFbGVtZW50QW5kVmlld1Blcm1pdFNjcm9sbChIVE1MRnJh
bWVFbGVtZW50QmFzZSogZnJhbWVFbGVtZW50QmFzZSwgRnJhbWVWaWV3JiBmcmFtZVZpZXcpCi17
Ci0gICAgLy8gSWYgc2Nyb2xsYmFycyBhcmVuJ3QgZXhwbGljaXRseSBmb3JiaWRkZW4sIHBlcm1p
dCBzY3JvbGxpbmcuCi0gICAgaWYgKGZyYW1lRWxlbWVudEJhc2UgJiYgZnJhbWVFbGVtZW50QmFz
ZS0+c2Nyb2xsaW5nTW9kZSgpICE9IFNjcm9sbGJhck1vZGU6OkFsd2F5c09mZikKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBzY3JvbGxiYXJzIGFyZSBmb3JiaWRkZW4sIHVzZXIg
aW5pdGlhdGVkIHNjcm9sbHMgc2hvdWxkIG9idmlvdXNseSBiZSBpZ25vcmVkLgotICAgIGlmIChm
cmFtZVZpZXcud2FzU2Nyb2xsZWRCeVVzZXIoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gRm9yYmlkIGF1dG9zY3JvbGxzIHdoZW4gc2Nyb2xsYmFycyBhcmUgb2ZmLCBidXQgcGVy
bWl0cyBvdGhlciBwcm9ncmFtbWF0aWMgc2Nyb2xscywKLSAgICAvLyBsaWtlIG5hdmlnYXRpb24g
dG8gYW4gYW5jaG9yLgotICAgIHJldHVybiAhZnJhbWVWaWV3LmZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKTsKLX0KLQotYm9vbCBSZW5kZXJMYXllcjo6YWxsb3dz
Q3VycmVudFNjcm9sbCgpIGNvbnN0Citib29sIFJlbmRlckxheWVyOjpzaG91bGRUcnlUb1Njcm9s
bEZvclNjcm9sbEludG9WaWV3KCkgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyKCkuaGFzTm9u
VmlzaWJsZU92ZXJmbG93KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI0NzIsOSArMjQ0
NCw5IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFsbG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdAogICAg
IFJlbmRlckJveCogYm94ID0gcmVuZGVyQm94KCk7CiAgICAgQVNTRVJUKGJveCk7IC8vIE9ubHkg
Ym94ZXMgY2FuIGhhdmUgb3ZlcmZsb3dDbGlwIHNldC4KIAorICAgIC8vIFdoZW4gYXV0b3Njcm9s
bGluZywgc2tpcCAib3ZlcmZsb3c6IGhpZGRlbiIuIFRoZSAicHJvZ3JhbW1hdGljYWxseSIgaGVy
ZSBpcworICAgIC8vIG1pc2xlYWRpbmc7IHRoaXMgYXNrcyB3aGV0aGVyIHRoZSBib3ggaGFzICJv
dmVyZmxvdzogc2Nyb2xsIiBvciAib3ZlcmZsb3c6IGF1dG8uIgogICAgIGlmIChyZW5kZXJlcigp
LmZyYW1lKCkuZXZlbnRIYW5kbGVyKCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSkgewotICAgICAg
ICAvLyBUaGUgInByb2dyYW1tYXRpY2FsbHkiIGhlcmUgaXMgbWlzbGVhZGluZzsgdGhpcyBhc2tz
IHdoZXRoZXIgdGhlIGJveCBoYXMgc2Nyb2xsYWJsZSBvdmVyZmxvdywKLSAgICAgICAgLy8gb3Ig
aXMgYSBzcGVjaWFsIGNhc2UgbGlrZSBhIGZvcm0gY29udHJvbC4KICAgICAgICAgcmV0dXJuIGJv
eC0+Y2FuQmVQcm9ncmFtYXRpY2FsbHlTY3JvbGxlZCgpOwogICAgIH0KIApAQCAtMjQ4MiwyNDgg
KzI0NTQsMTAgQEAgYm9vbCBSZW5kZXJMYXllcjo6YWxsb3dzQ3VycmVudFNjcm9sbCgpIGNvbnN0
CiAgICAgcmV0dXJuIGJveC0+aGFzSG9yaXpvbnRhbE92ZXJmbG93KCkgfHwgYm94LT5oYXNWZXJ0
aWNhbE92ZXJmbG93KCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2li
bGUoY29uc3QgTGF5b3V0UmVjdCYgYWJzb2x1dGVSZWN0LCBib29sIGluc2lkZUZpeGVkLCBjb25z
dCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKLXsKLSAgICBMT0dfV0lUSF9T
VFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkxheWVyICIgPDwgdGhpcyA8PCAiIHNjcm9sbFJl
Y3RUb1Zpc2libGUgIiA8PCBhYnNvbHV0ZVJlY3QpOwotCi0gICAgTGF5b3V0UmVjdCBuZXdSZWN0
ID0gYWJzb2x1dGVSZWN0OwotICAgIEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52
aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAgYXV0byogcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdDb250
YWluaW5nQmxvY2tMYXllcihDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8pOwotCi0gICAgYXV0byBz
Y3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50ID0gW3RoaXMsIG9wdGlvbnNdKEVs
ZW1lbnQqIGVsZW1lbnQpCi0gICAgewotICAgICAgICBhdXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9u
cyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6Y3JlYXRlUHJvZ3JhbW1hdGljKCk7Ci0g
ICAgICAgIGlmICghcmVuZGVyZXIoKS5mcmFtZSgpLmV2ZW50SGFuZGxlcigpLmF1dG9zY3JvbGxJ
blByb2dyZXNzKCkgJiYgZWxlbWVudCAmJiB1c2VTbW9vdGhTY3JvbGxpbmcob3B0aW9ucy5iZWhh
dmlvciwgZWxlbWVudCkpCi0gICAgICAgICAgICBzY3JvbGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0
ZWQgPSBTY3JvbGxJc0FuaW1hdGVkOjpZZXM7Ci0gICAgICAgIHJldHVybiBzY3JvbGxQb3NpdGlv
bk9wdGlvbnM7Ci0gICAgfTsKLQotICAgIGlmIChhbGxvd3NDdXJyZW50U2Nyb2xsKCkpIHsKLSAg
ICAgICAgYXV0byogc2Nyb2xsYWJsZUFyZWEgPSBlbnN1cmVMYXllclNjcm9sbGFibGVBcmVhKCk7
Ci0KLSAgICAgICAgLy8gRG9uJ3Qgc2Nyb2xsIHRvIHJldmVhbCBhbiBvdmVyZmxvdyBsYXllciB0
aGF0IGlzIHJlc3RyaWN0ZWQgYnkgdGhlIC13ZWJraXQtbGluZS1jbGFtcCBwcm9wZXJ0eS4KLSAg
ICAgICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgdXMgZnJvbSByZXZlYWxpbmcgdGV4dCBoaWRkZW4g
YnkgdGhlIHNsaWRlciBpbiBTYWZhcmkgUlNTLgotICAgICAgICBSZW5kZXJCb3gqIGJveCA9IHJl
bmRlckJveCgpOwotICAgICAgICBBU1NFUlQoYm94KTsKLSAgICAgICAgTGF5b3V0UmVjdCBsb2Nh
bEV4cG9zZVJlY3QoYm94LT5hYnNvbHV0ZVRvTG9jYWxRdWFkKEZsb2F0UXVhZChGbG9hdFJlY3Qo
YWJzb2x1dGVSZWN0KSkpLmJvdW5kaW5nQm94KCkpOwotCi0gICAgICAgIC8vIGxvY2FsRXhwb3Nl
ZFJlY3QgaXMgbm93IHRoZSBhYnNvbHV0ZSByZWN0IGluIGxvY2FsIGNvb3JkaW5hdGVzLCBidXQg
cmVsYXRpdmUgdG8gdGhlCi0gICAgICAgIC8vIGJvcmRlciBlZGdlLiBNYWtlIHRoZSByZWN0YW5n
bGUgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGFibGUgYXJlYS4KLSAgICAgICAgbG9jYWxFeHBvc2VS
ZWN0Lm1vdmVCeSgtTGF5b3V0UG9pbnQoYm94LT5ib3JkZXJMZWZ0KCksIGJveC0+Ym9yZGVyVG9w
KCkpKTsKLQotICAgICAgICBpZiAoYm94LT5zaG91bGRQbGFjZVZlcnRpY2FsU2Nyb2xsYmFyT25M
ZWZ0KCkpIHsKLSAgICAgICAgICAgIC8vIEZvciBgZGlyZWN0aW9uOiBydGw7IHdyaXRpbmctbW9k
ZTogaG9yaXpvbnRhbC17dGIsYnR9YCBhbmQgYHdyaXRpbmctbW9kZTogdmVydGljYWwtcmxgCi0g
ICAgICAgICAgICAvLyBib3hlcywgdGhlIHNjcm9sbCBiYXIgaXMgb24gdGhlIGxlZnQgc2lkZS4g
VGhlIHZpc2libGUgcmVjdCBzdGFydHMgZnJvbSB0aGUgcmlnaHQgc2lkZQotICAgICAgICAgICAg
Ly8gb2YgdGhlIHNjcm9sbCBiYXIuIFNvIHRoZSB4IG9mIGxvY2FsRXhwb3NlUmVjdCBzaG91bGQg
c3RhcnQgZnJvbSB0aGUgc2FtZSBwb3NpdGlvbiB0b28uCi0gICAgICAgICAgICBsb2NhbEV4cG9z
ZVJlY3QubW92ZUJ5KExheW91dFBvaW50KC1zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxi
YXJXaWR0aCgpLCAwKSk7Ci0gICAgICAgIH0KLSAgICAgICAgTGF5b3V0UmVjdCBsYXllckJvdW5k
cygwX2x1LCAwX2x1LCBib3gtPmNsaWVudFdpZHRoKCksIGJveC0+Y2xpZW50SGVpZ2h0KCkpOwot
ICAgICAgICBleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVkZVNjcm9s
bFBhZGRpbmcoYm94LCBsYXllckJvdW5kcywgbG9jYWxFeHBvc2VSZWN0KTsKLSAgICAgICAgTGF5
b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UmVjdFRvRXhwb3NlKGxheWVyQm91bmRzLCBsb2NhbEV4
cG9zZVJlY3QsIGluc2lkZUZpeGVkLCBvcHRpb25zLmFsaWduWCwgb3B0aW9ucy5hbGlnblkpOwot
Ci0gICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IHNjcm9sbGFibGVBcmVhLT51cGRhdGVTY3JvbGxQ
b3NpdGlvbihzY3JvbGxQb3NpdGlvbkNoYW5nZU9wdGlvbnNGb3JFbGVtZW50KGJveC0+ZWxlbWVu
dCgpKSwgcmV2ZWFsUmVjdCwgbG9jYWxFeHBvc2VSZWN0KSkKLSAgICAgICAgICAgIG5ld1JlY3Qg
PSByZXN1bHQudmFsdWUoKTsKLSAgICB9IGVsc2UgaWYgKCFwYXJlbnRMYXllcikgewotICAgICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHJlbmRlcmVyKCkuZG9jdW1l
bnQoKS5vd25lckVsZW1lbnQoKTsKLQotICAgICAgICBpZiAob3duZXJFbGVtZW50ICYmIG93bmVy
RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2Uq
IGZyYW1lRWxlbWVudEJhc2UgPSBudWxscHRyOwotCi0gICAgICAgICAgICBpZiAoaXM8SFRNTEZy
YW1lRWxlbWVudEJhc2U+KCpvd25lckVsZW1lbnQpKQotICAgICAgICAgICAgICAgIGZyYW1lRWxl
bWVudEJhc2UgPSBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50QmFzZT4ob3duZXJFbGVtZW50KTsK
LQotICAgICAgICAgICAgaWYgKGZyYW1lRWxlbWVudEFuZFZpZXdQZXJtaXRTY3JvbGwoZnJhbWVF
bGVtZW50QmFzZSwgZnJhbWVWaWV3KSkgewotICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYXNz
ZXJ0aW9uIGZpcmVzIHdlIG5lZWQgdG8gcHJvdGVjdCB0aGUgb3duZXJFbGVtZW50IGZyb20gYmVp
bmcgZGVzdHJveWVkLgotICAgICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5N
YWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKLQotICAgICAgICAgICAgICAgIExheW91
dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVB
cmVhOjpMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KTsKLQotICAgICAgICAgICAgICAgIGF1
dG8qIGVsZW1lbnQgPSBvd25lckVsZW1lbnQtPmNvbnRlbnREb2N1bWVudCgpID8gb3duZXJFbGVt
ZW50LT5jb250ZW50RG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwotICAg
ICAgICAgICAgICAgIFJlbmRlckJveCogcmVuZGVyZXIgPSBlbGVtZW50ID8gZWxlbWVudC0+cmVu
ZGVyQm94KCkgOiBudWxscHRyOwotICAgICAgICAgICAgICAgIGV4cGFuZFNjcm9sbFJlY3RUb1Zp
c2libGVUYXJnZXRSZWN0VG9JbmNsdWRlU2Nyb2xsUGFkZGluZyhyZW5kZXJlciwgdmlld1JlY3Qs
IG5ld1JlY3QpOwotCi0gICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBleHBvc2VSZWN0ID0gZ2V0
UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCBuZXdSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucy5hbGln
blgsIG9wdGlvbnMuYWxpZ25ZKTsKLSAgICAgICAgICAgICAgICBJbnRQb2ludCBzY3JvbGxQb3Np
dGlvbihyb3VuZGVkSW50UG9pbnQoZXhwb3NlUmVjdC5sb2NhdGlvbigpKSk7Ci0KLSAgICAgICAg
ICAgICAgICAvLyBBZGp1c3Qgb2Zmc2V0cyBpZiB0aGV5J3JlIG91dHNpZGUgb2YgdGhlIGFsbG93
YWJsZSByYW5nZS4KLSAgICAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IHNjcm9sbFBvc2l0
aW9uLmNvbnN0cmFpbmVkQmV0d2VlbihJbnRQb2ludCgpLCBJbnRQb2ludChmcmFtZVZpZXcuY29u
dGVudHNTaXplKCkpKTsKLQotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgdXNl
IGNvbnRlbnREb2N1bWVudCgpLT5zY3JvbGxpbmdFbGVtZW50KCk/Ci0gICAgICAgICAgICAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDUwNTkKLSAg
ICAgICAgICAgICAgICBmcmFtZVZpZXcuc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24s
IHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpOwotCi0gICAg
ICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZyA9
PSBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfHwgZnJhbWVWaWV3LnNhZmVU
b1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGVuY2xvc2luZ0xheWVyID0gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpLT5lbmNsb3NpbmdM
YXllcigpKQotICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50TGF5ZXIgPSBlbmNsb3NpbmdM
YXllci0+ZW5jbG9zaW5nU2Nyb2xsYWJsZUxheWVyKEluY2x1ZGVTZWxmT3JOb3Q6OkluY2x1ZGVT
ZWxmLCBDcm9zc0ZyYW1lQm91bmRhcmllczo6Tm8pOwotICAgICAgICAgICAgICAgICAgICAvLyBD
b252ZXJ0IHRoZSByZWN0IGludG8gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgdGhlIHBhcmVudCBm
cmFtZSdzIGRvY3VtZW50LgotICAgICAgICAgICAgICAgICAgICBuZXdSZWN0ID0gZnJhbWVWaWV3
LmNvbnRlbnRzVG9Db250YWluaW5nVmlld0NvbnRlbnRzKGVuY2xvc2luZ0ludFJlY3QobmV3UmVj
dCkpOwotICAgICAgICAgICAgICAgICAgICBpbnNpZGVGaXhlZCA9IGZhbHNlOyAvLyBGSVhNRTog
aWRlYWxseSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIDxpZnJhbWU+IGlzIGluc2lkZSBwb3Np
dGlvbjpmaXhlZC4KLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
cGFyZW50TGF5ZXIgPSBudWxscHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKG9wdGlvbnMucmV2ZWFsTW9kZSA9PSBTZWxlY3Rpb25SZXZlYWxNb2Rl
OjpSZXZlYWxVcFRvTWFpbkZyYW1lICYmIGZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAob3B0aW9ucy5yZXZl
YWxNb2RlID09IFNlbGVjdGlvblJldmVhbE1vZGU6OkRlbGVnYXRlTWFpbkZyYW1lU2Nyb2xsICYm
IGZyYW1lVmlldy5mcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBwYWdl
KCkuY2hyb21lKCkuc2Nyb2xsTWFpbkZyYW1lVG9SZXZlYWxSZWN0KHNuYXBwZWRJbnRSZWN0KGFi
c29sdXRlUmVjdCkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgYXV0byBtaW5TY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy5taW5pbXVtU2Ny
b2xsUG9zaXRpb24oKTsKLSAgICAgICAgICAgIGF1dG8gbWF4U2Nyb2xsUG9zaXRpb24gPSBmcmFt
ZVZpZXcubWF4aW11bVNjcm9sbFBvc2l0aW9uKCk7Ci0KLSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBmcmFtZVZpZXcudmlzaWJsZUNv
bnRlbnRSZWN0KCk7Ci0jZWxzZQotICAgICAgICAgICAgLy8gRklYTUU6IENvbnRlbnRJbnNldHMg
c2hvdWxkIGJlIHRha2VuIGNhcmUgb2YgaW4gVUkgcHJvY2VzcyBzaWRlLiB3ZWJraXQub3JnL2Iv
MTk5NjgyCi0gICAgICAgICAgICAvLyBUbyBkbyB0aGF0LCBnZXRSZWN0VG9FeHBvc2UgbmVlZHMg
dG8gcmV0dXJuIHRoZSBhZGRpdGlvbmFsIHNjcm9sbGluZyB0byBkbyBiZXlvbmQgY29udGVudCBy
ZWN0LgotICAgICAgICAgICAgTGF5b3V0UmVjdCB2aWV3UmVjdCA9IGZyYW1lVmlldy52aWV3UmVj
dEV4cGFuZGVkQnlDb250ZW50SW5zZXRzKCk7Ci0KLSAgICAgICAgICAgIC8vIEZJWE1FOiB3ZWJr
aXQub3JnL2IvMTk5NjgzIEZyYW1lVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0IGlzIHdyb25nIHdo
ZW4gY29udGVudCBpbnNldHMgYXJlIHByZXNlbnQKLSAgICAgICAgICAgIG1heFNjcm9sbFBvc2l0
aW9uID0gZnJhbWVWaWV3LnNjcm9sbFBvc2l0aW9uRnJvbU9mZnNldChTY3JvbGxQb3NpdGlvbihm
cmFtZVZpZXcudG90YWxDb250ZW50c1NpemUoKSAtIGZsb29yZWRJbnRTaXplKHZpZXdSZWN0LnNp
emUoKSkpKTsKLQotICAgICAgICAgICAgYXV0byBjb250ZW50SW5zZXRzID0gcGFnZSgpLmNvbnRl
bnRJbnNldHMoKTsKLSAgICAgICAgICAgIG1pblNjcm9sbFBvc2l0aW9uLm1vdmUoLWNvbnRlbnRJ
bnNldHMubGVmdCgpLCAtY29udGVudEluc2V0cy50b3AoKSk7Ci0gICAgICAgICAgICBtYXhTY3Jv
bGxQb3NpdGlvbi5tb3ZlKGNvbnRlbnRJbnNldHMucmlnaHQoKSwgY29udGVudEluc2V0cy5ib3R0
b20oKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIC8vIE1vdmUgdGhlIHRhcmdldCByZWN0IGludG8g
InNjcm9sbFZpZXcgY29udGVudHMiIGNvb3JkaW5hdGVzLgotICAgICAgICAgICAgTGF5b3V0UmVj
dCB0YXJnZXRSZWN0ID0gYWJzb2x1dGVSZWN0OwotICAgICAgICAgICAgdGFyZ2V0UmVjdC5tb3Zl
KDAsIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSk7Ci0KLSAgICAgICAgICAgIGF1dG8qIGVsZW1l
bnQgPSBmcmFtZVZpZXcuZnJhbWUoKS5kb2N1bWVudCgpID8gZnJhbWVWaWV3LmZyYW1lKCkuZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkgOiBudWxscHRyOwotICAgICAgICAgICAgUmVuZGVy
Qm94KiByZW5kZXJlciA9IGVsZW1lbnQgPyBlbGVtZW50LT5yZW5kZXJCb3goKSA6IG51bGxwdHI7
Ci0gICAgICAgICAgICBleHBhbmRTY3JvbGxSZWN0VG9WaXNpYmxlVGFyZ2V0UmVjdFRvSW5jbHVk
ZVNjcm9sbFBhZGRpbmcocmVuZGVyZXIsIHZpZXdSZWN0LCB0YXJnZXRSZWN0KTsKLQotICAgICAg
ICAgICAgTGF5b3V0UmVjdCByZXZlYWxSZWN0ID0gZ2V0UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCB0
YXJnZXRSZWN0LCBpbnNpZGVGaXhlZCwgb3B0aW9ucy5hbGlnblgsIG9wdGlvbnMuYWxpZ25ZKTsK
LSAgICAgICAgICAgIC8vIEF2b2lkIHNjcm9sbGluZyB0byB0aGUgcm91bmRlZCB2YWx1ZSBvZiBy
ZXZlYWxSZWN0LmxvY2F0aW9uKCkgaWYgd2UgZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBzY3JvbGwK
LSAgICAgICAgICAgIGlmIChyZXZlYWxSZWN0ICE9IHZpZXdSZWN0KSB7Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB3ZSB1c2UgZG9jdW1lbnQoKS0+c2Nyb2xsaW5nRWxlbWVudCgp
PwotICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA1MDU5Ci0gICAgICAgICAgICAgICAgU2Nyb2xsT2Zmc2V0IGNsYW1wZWRTY3Jv
bGxQb3NpdGlvbiA9IHJvdW5kZWRJbnRQb2ludChyZXZlYWxSZWN0LmxvY2F0aW9uKCkpLmNvbnN0
cmFpbmVkQmV0d2VlbihtaW5TY3JvbGxQb3NpdGlvbiwgbWF4U2Nyb2xsUG9zaXRpb24pOwotICAg
ICAgICAgICAgICAgIGZyYW1lVmlldy5zZXRTY3JvbGxQb3NpdGlvbihjbGFtcGVkU2Nyb2xsUG9z
aXRpb24sIHNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCkpOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBvdXRlcm1vc3Qgdmll
dyBvZiBhIHdlYiBwYWdlLCBzbyBhZnRlciBzY3JvbGxpbmcgdGhpcyB2aWV3IHdlCi0gICAgICAg
ICAgICAvLyBzY3JvbGwgaXRzIGNvbnRhaW5lciBieSBjYWxsaW5nIFBhZ2U6OnNjcm9sbE1haW5G
cmFtZVRvUmV2ZWFsUmVjdC4KLSAgICAgICAgICAgIC8vIFRoaXMgb25seSBoYXMgYW4gZWZmZWN0
IG9uIHRoZSBNYWMgcGxhdGZvcm0gaW4gYXBwbGljYXRpb25zCi0gICAgICAgICAgICAvLyB0aGF0
IHB1dCB3ZWIgdmlld3MgaW50byBzY3JvbGxpbmcgY29udGFpbmVycywgc3VjaCBhcyBNYWMgT1Mg
WCBNYWlsLgotICAgICAgICAgICAgLy8gVGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZl
bnRIYW5kbGVyIGFsc28ga25vd3MgYWJvdXQgdGhpcy4KLSAgICAgICAgICAgIHBhZ2UoKS5jaHJv
bWUoKS5zY3JvbGxDb250YWluaW5nU2Nyb2xsVmlld3NUb1JldmVhbFJlY3Qoc25hcHBlZEludFJl
Y3QoYWJzb2x1dGVSZWN0KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcmVu
dExheWVyKQotICAgICAgICBwYXJlbnRMYXllci0+c2Nyb2xsUmVjdFRvVmlzaWJsZShuZXdSZWN0
LCBpbnNpZGVGaXhlZCwgb3B0aW9ucyk7Ci19Ci0KLUxheW91dFJlY3QgUmVuZGVyTGF5ZXI6Omdl
dFJlY3RUb0V4cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0
UmVjdCYgZXhwb3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50
JiBhbGlnblgsIGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdAotewotICAgIEZy
YW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVWaWV3KCk7Ci0gICAg
aWYgKHJlbmRlcmVyKCkuaXNSZW5kZXJWaWV3KCkgJiYgaW5zaWRlRml4ZWQpIHsKLSAgICAgICAg
Ly8gSWYgdGhlIGVsZW1lbnQgaXMgaW5zaWRlIHBvc2l0aW9uOmZpeGVkIGFuZCB3ZSdyZSBub3Qg
c2NhbGVkLCBubyBhbW91bnQgb2Ygc2Nyb2xsaW5nIGlzIGdvaW5nIHRvIG1vdmUgdGhpbmdzIGFy
b3VuZC4KLSAgICAgICAgaWYgKGZyYW1lVmlldy5mcmFtZVNjYWxlRmFjdG9yKCkgPT0gMSkKLSAg
ICAgICAgICAgIHJldHVybiB2aXNpYmxlUmVjdDsKLQotICAgICAgICBpZiAocmVuZGVyZXIoKS5z
ZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAvLyBleHBv
c2VSZWN0IGlzIGluIGFic29sdXRlIGNvb3JkcywgYWZmZWN0ZWQgYnkgcGFnZSBzY2FsZS4gVW5z
Y2FsZSBpdC4KLSAgICAgICAgICAgIExheW91dFJlY3QgdW5zY2FsZWRFeHBvc2VSZWN0ID0gZXhw
b3NlUmVjdDsKLSAgICAgICAgICAgIHVuc2NhbGVkRXhwb3NlUmVjdC5zY2FsZSgxIC8gZnJhbWVW
aWV3LmZyYW1lU2NhbGVGYWN0b3IoKSk7Ci0gICAgICAgICAgICB1bnNjYWxlZEV4cG9zZVJlY3Qu
bW92ZSgwLCAtZnJhbWVWaWV3LmhlYWRlckhlaWdodCgpKTsKLQotICAgICAgICAgICAgLy8gVGhl
c2UgYXJlIGJvdGggaW4gdW5zY2FsZWQgY29vcmRpbmF0ZXMuCi0gICAgICAgICAgICBMYXlvdXRS
ZWN0IGxheW91dFZpZXdwb3J0ID0gZnJhbWVWaWV3LmxheW91dFZpZXdwb3J0UmVjdCgpOwotICAg
ICAgICAgICAgTGF5b3V0UmVjdCB2aXN1YWxWaWV3cG9ydCA9IGZyYW1lVmlldy52aXN1YWxWaWV3
cG9ydFJlY3QoKTsKLQotICAgICAgICAgICAgLy8gVGhlIHJlY3QgdG8gZXhwb3NlIG1heSBiZSBw
YXJ0aWFsbHkgb2Zmc2NyZWVuLCB3aGljaCB3ZSBjYW4ndCBkbyBhbnl0aGluZyBhYm91dCB3aXRo
IHBvc2l0aW9uOmZpeGVkLgotICAgICAgICAgICAgdW5zY2FsZWRFeHBvc2VSZWN0LmludGVyc2Vj
dChsYXlvdXRWaWV3cG9ydCk7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBub3QgbGFy
Z2VyIHRoYW4gdGhlIHZpc3VhbCB2aWV3cG9ydDsgaWYgc28sIHdlJ2xsIGp1c3QgbW92ZSB0byB0
aGUgdG9wIGxlZnQuCi0gICAgICAgICAgICB1bnNjYWxlZEV4cG9zZVJlY3Quc2V0U2l6ZSh1bnNj
YWxlZEV4cG9zZVJlY3Quc2l6ZSgpLnNocnVua1RvKHZpc3VhbFZpZXdwb3J0LnNpemUoKSkpOwot
Ci0gICAgICAgICAgICAvLyBDb21wdXRlIGhvdyBtdWNoIHdlIGhhdmUgdG8gbW92ZSB0aGUgdmlz
dWFsVmlld3BvcnQgdG8gcmV2ZWFsIHRoZSBwYXJ0IG9mIHRoZSBsYXlvdXRWaWV3cG9ydCB0aGF0
IGNvbnRhaW5zIGV4cG9zZVJlY3QuCi0gICAgICAgICAgICBMYXlvdXRSZWN0IHJlcXVpcmVkVmlz
dWFsVmlld3BvcnQgPSBnZXRSZWN0VG9FeHBvc2UodmlzdWFsVmlld3BvcnQsIHVuc2NhbGVkRXhw
b3NlUmVjdCwgZmFsc2UsIGFsaWduWCwgYWxpZ25ZKTsKLSAgICAgICAgICAgIC8vIFNjYWxlIGl0
IGJhY2sgdXAuCi0gICAgICAgICAgICByZXF1aXJlZFZpc3VhbFZpZXdwb3J0LnNjYWxlKGZyYW1l
Vmlldy5mcmFtZVNjYWxlRmFjdG9yKCkpOwotICAgICAgICAgICAgcmVxdWlyZWRWaXN1YWxWaWV3
cG9ydC5tb3ZlKDAsIGZyYW1lVmlldy5oZWFkZXJIZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVxdWlyZWRWaXN1YWxWaWV3cG9ydDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIERl
dGVybWluZSB0aGUgYXBwcm9wcmlhdGUgWCBiZWhhdmlvci4KLSAgICBTY3JvbGxBbGlnbm1lbnQ6
OkJlaGF2aW9yIHNjcm9sbFg7Ci0gICAgTGF5b3V0UmVjdCBleHBvc2VSZWN0WChleHBvc2VSZWN0
LngoKSwgdmlzaWJsZVJlY3QueSgpLCBleHBvc2VSZWN0LndpZHRoKCksIHZpc2libGVSZWN0Lmhl
aWdodCgpKTsKLSAgICBMYXlvdXRVbml0IGludGVyc2VjdFdpZHRoID0gaW50ZXJzZWN0aW9uKHZp
c2libGVSZWN0LCBleHBvc2VSZWN0WCkud2lkdGgoKTsKLSAgICBpZiAoaW50ZXJzZWN0V2lkdGgg
PT0gZXhwb3NlUmVjdC53aWR0aCgpIHx8IChhbGlnblgubGVnYWN5SG9yaXpvbnRhbFZpc2liaWxp
dHlUaHJlc2hvbGRFbmFibGVkKCkgJiYgaW50ZXJzZWN0V2lkdGggPj0gTUlOX0lOVEVSU0VDVF9G
T1JfUkVWRUFMKSkgewotICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIGZ1bGx5IHZpc2li
bGUsIHVzZSB0aGUgc3BlY2lmaWVkIHZpc2libGUgYmVoYXZpb3IuCi0gICAgICAgIC8vIElmIHRo
ZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZpc2libGUsIGJ1dCBvdmVyIGEgY2VydGFpbiB0aHJl
c2hvbGQsCi0gICAgICAgIC8vIHRoZW4gdHJlYXQgaXQgYXMgZnVsbHkgdmlzaWJsZSB0byBhdm9p
ZCB1bm5lY2Vzc2FyeSBob3Jpem9udGFsIHNjcm9sbGluZwotICAgICAgICBzY3JvbGxYID0gYWxp
Z25YLmdldFZpc2libGVCZWhhdmlvcigpOwotICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lkdGgg
PT0gdmlzaWJsZVJlY3Qud2lkdGgoKSkgewotICAgICAgICAvLyBJZiB0aGUgcmVjdCBpcyBiaWdn
ZXIgdGhhbiB0aGUgdmlzaWJsZSBhcmVhLCBkb24ndCBib3RoZXIgdHJ5aW5nIHRvIGNlbnRlci4g
T3RoZXIgYWxpZ25tZW50cyB3aWxsIHdvcmsuCi0gICAgICAgIHNjcm9sbFggPSBhbGlnblguZ2V0
VmlzaWJsZUJlaGF2aW9yKCk7Ci0gICAgICAgIGlmIChzY3JvbGxYID09IFNjcm9sbEFsaWdubWVu
dDo6QmVoYXZpb3I6OkFsaWduQ2VudGVyKQotICAgICAgICAgICAgc2Nyb2xsWCA9IFNjcm9sbEFs
aWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsOwotICAgIH0gZWxzZSBpZiAoaW50ZXJzZWN0V2lk
dGggPiAwKQotICAgICAgICAvLyBJZiB0aGUgcmVjdGFuZ2xlIGlzIHBhcnRpYWxseSB2aXNpYmxl
LCBidXQgbm90IGFib3ZlIHRoZSBtaW5pbXVtIHRocmVzaG9sZCwgdXNlIHRoZSBzcGVjaWZpZWQg
cGFydGlhbCBiZWhhdmlvcgotICAgICAgICBzY3JvbGxYID0gYWxpZ25YLmdldFBhcnRpYWxCZWhh
dmlvcigpOwotICAgIGVsc2UKLSAgICAgICAgc2Nyb2xsWCA9IGFsaWduWC5nZXRIaWRkZW5CZWhh
dmlvcigpOwotICAgIC8vIElmIHdlJ3JlIHRyeWluZyB0byBhbGlnbiB0byB0aGUgY2xvc2VzdCBl
ZGdlLCBhbmQgdGhlIGV4cG9zZVJlY3QgaXMgZnVydGhlciByaWdodAotICAgIC8vIHRoYW4gdGhl
IHZpc2libGVSZWN0LCBhbmQgbm90IGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEsIHRoZW4g
YWxpZ24gd2l0aCB0aGUgcmlnaHQuCi0gICAgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50
OjpCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlICYmIGV4cG9zZVJlY3QubWF4WCgpID4gdmlz
aWJsZVJlY3QubWF4WCgpICYmIGV4cG9zZVJlY3Qud2lkdGgoKSA8IHZpc2libGVSZWN0LndpZHRo
KCkpCi0gICAgICAgIHNjcm9sbFggPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJp
Z2h0OwotCi0gICAgLy8gR2l2ZW4gdGhlIFggYmVoYXZpb3IsIGNvbXB1dGUgdGhlIFggY29vcmRp
bmF0ZS4KLSAgICBMYXlvdXRVbml0IHg7Ci0gICAgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25t
ZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGwpCi0gICAgICAgIHggPSB2aXNpYmxlUmVjdC54KCk7Ci0g
ICAgZWxzZSBpZiAoc2Nyb2xsWCA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpBbGlnblJp
Z2h0KQotICAgICAgICB4ID0gZXhwb3NlUmVjdC5tYXhYKCkgLSB2aXNpYmxlUmVjdC53aWR0aCgp
OwotICAgIGVsc2UgaWYgKHNjcm9sbFggPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxp
Z25DZW50ZXIpCi0gICAgICAgIHggPSBleHBvc2VSZWN0LngoKSArIChleHBvc2VSZWN0LndpZHRo
KCkgLSB2aXNpYmxlUmVjdC53aWR0aCgpKSAvIDI7Ci0gICAgZWxzZQotICAgICAgICB4ID0gZXhw
b3NlUmVjdC54KCk7Ci0KLSAgICAvLyBEZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIFkgYmVoYXZp
b3IuCi0gICAgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvciBzY3JvbGxZOwotICAgIExheW91dFJl
Y3QgZXhwb3NlUmVjdFkodmlzaWJsZVJlY3QueCgpLCBleHBvc2VSZWN0LnkoKSwgdmlzaWJsZVJl
Y3Qud2lkdGgoKSwgZXhwb3NlUmVjdC5oZWlnaHQoKSk7Ci0gICAgTGF5b3V0VW5pdCBpbnRlcnNl
Y3RIZWlnaHQgPSBpbnRlcnNlY3Rpb24odmlzaWJsZVJlY3QsIGV4cG9zZVJlY3RZKS5oZWlnaHQo
KTsKLSAgICBpZiAoaW50ZXJzZWN0SGVpZ2h0ID09IGV4cG9zZVJlY3QuaGVpZ2h0KCkpCi0gICAg
ICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgZnVsbHkgdmlzaWJsZSwgdXNlIHRoZSBzcGVjaWZp
ZWQgdmlzaWJsZSBiZWhhdmlvci4KLSAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRWaXNpYmxl
QmVoYXZpb3IoKTsKLSAgICBlbHNlIGlmIChpbnRlcnNlY3RIZWlnaHQgPT0gdmlzaWJsZVJlY3Qu
aGVpZ2h0KCkpIHsKLSAgICAgICAgLy8gSWYgdGhlIHJlY3QgaXMgYmlnZ2VyIHRoYW4gdGhlIHZp
c2libGUgYXJlYSwgZG9uJ3QgYm90aGVyIHRyeWluZyB0byBjZW50ZXIuIE90aGVyIGFsaWdubWVu
dHMgd2lsbCB3b3JrLgotICAgICAgICBzY3JvbGxZID0gYWxpZ25ZLmdldFZpc2libGVCZWhhdmlv
cigpOwotICAgICAgICBpZiAoc2Nyb2xsWSA9PSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9yOjpB
bGlnbkNlbnRlcikKLSAgICAgICAgICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2
aW9yOjpOb1Njcm9sbDsKLSAgICB9IGVsc2UgaWYgKGludGVyc2VjdEhlaWdodCA+IDApCi0gICAg
ICAgIC8vIElmIHRoZSByZWN0YW5nbGUgaXMgcGFydGlhbGx5IHZpc2libGUsIHVzZSB0aGUgc3Bl
Y2lmaWVkIHBhcnRpYWwgYmVoYXZpb3IKLSAgICAgICAgc2Nyb2xsWSA9IGFsaWduWS5nZXRQYXJ0
aWFsQmVoYXZpb3IoKTsKLSAgICBlbHNlCi0gICAgICAgIHNjcm9sbFkgPSBhbGlnblkuZ2V0SGlk
ZGVuQmVoYXZpb3IoKTsKLSAgICAvLyBJZiB3ZSdyZSB0cnlpbmcgdG8gYWxpZ24gdG8gdGhlIGNs
b3Nlc3QgZWRnZSwgYW5kIHRoZSBleHBvc2VSZWN0IGlzIGZ1cnRoZXIgZG93bgotICAgIC8vIHRo
YW4gdGhlIHZpc2libGVSZWN0LCBhbmQgbm90IGJpZ2dlciB0aGFuIHRoZSB2aXNpYmxlIGFyZWEs
IHRoZW4gYWxpZ24gd2l0aCB0aGUgYm90dG9tLgotICAgIGlmIChzY3JvbGxZID09IFNjcm9sbEFs
aWdubWVudDo6QmVoYXZpb3I6OkFsaWduVG9DbG9zZXN0RWRnZSAmJiBleHBvc2VSZWN0Lm1heFko
KSA+IHZpc2libGVSZWN0Lm1heFkoKSAmJiBleHBvc2VSZWN0LmhlaWdodCgpIDwgdmlzaWJsZVJl
Y3QuaGVpZ2h0KCkpCi0gICAgICAgIHNjcm9sbFkgPSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9y
OjpBbGlnbkJvdHRvbTsKLQotICAgIC8vIEdpdmVuIHRoZSBZIGJlaGF2aW9yLCBjb21wdXRlIHRo
ZSBZIGNvb3JkaW5hdGUuCi0gICAgTGF5b3V0VW5pdCB5OwotICAgIGlmIChzY3JvbGxZID09IFNj
cm9sbEFsaWdubWVudDo6QmVoYXZpb3I6Ok5vU2Nyb2xsKQotICAgICAgICB5ID0gdmlzaWJsZVJl
Y3QueSgpOwotICAgIGVsc2UgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlv
cjo6QWxpZ25Cb3R0b20pCi0gICAgICAgIHkgPSBleHBvc2VSZWN0Lm1heFkoKSAtIHZpc2libGVS
ZWN0LmhlaWdodCgpOwotICAgIGVsc2UgaWYgKHNjcm9sbFkgPT0gU2Nyb2xsQWxpZ25tZW50OjpC
ZWhhdmlvcjo6QWxpZ25DZW50ZXIpCi0gICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKSArIChleHBv
c2VSZWN0LmhlaWdodCgpIC0gdmlzaWJsZVJlY3QuaGVpZ2h0KCkpIC8gMjsKLSAgICBlbHNlCi0g
ICAgICAgIHkgPSBleHBvc2VSZWN0LnkoKTsKLQotICAgIHJldHVybiBMYXlvdXRSZWN0KExheW91
dFBvaW50KHgsIHkpLCB2aXNpYmxlUmVjdC5zaXplKCkpOwotfQotCiB2b2lkIFJlbmRlckxheWVy
OjphdXRvc2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbkluV2luZG93KQogewogICAgIElu
dFBvaW50IGN1cnJlbnREb2N1bWVudFBvc2l0aW9uID0gcmVuZGVyZXIoKS52aWV3KCkuZnJhbWVW
aWV3KCkud2luZG93VG9Db250ZW50cyhwb3NpdGlvbkluV2luZG93KTsKLSAgICBzY3JvbGxSZWN0
VG9WaXNpYmxlKExheW91dFJlY3QoY3VycmVudERvY3VtZW50UG9zaXRpb24sIExheW91dFNpemUo
MSwgMSkpLCBmYWxzZSwgeyBTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlm
TmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAgRnJh
bWVWaWV3OjpzY3JvbGxSZWN0VG9WaXNpYmxlKExheW91dFJlY3QoY3VycmVudERvY3VtZW50UG9z
aXRpb24sIExheW91dFNpemUoMSwgMSkpLCByZW5kZXJlcigpLCBmYWxzZSwgeyBTZWxlY3Rpb25S
ZXZlYWxNb2RlOjpSZXZlYWwsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwg
U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBTaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nOjpZZXMgfSk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXI6OmNhblJlc2l6ZSgp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IGFhMjlmZmU5
OWQxNDY5MGMzMzE2MmZkNTQyZGUxNjQ1NWQyY2NiOWEuLmIzMDA5NGU3Njg4NDcxZjBhZjAwZThi
MWNkM2I2Y2IyZjMzZGJmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
CkBAIC00NjAsOCArNDYwLDYgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBUaGlzIGNhbiByZXR1
cm4gdGhlIFJlbmRlclZpZXcncyBsYXllciB3aGVuIGNhbGxlcnMgcHJvYmFibHkgd2FudCB0aGUg
RnJhbWVWaWV3IGFzIGEgU2Nyb2xsYWJsZUFyZWEuCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2lu
Z1Njcm9sbGFibGVMYXllcihJbmNsdWRlU2VsZk9yTm90LCBDcm9zc0ZyYW1lQm91bmRhcmllcykg
Y29uc3Q7CiAKLSAgICAvLyAiYWJzb2x1dGVSZWN0IiBpcyBpbiBzY2FsZWQgZG9jdW1lbnQgY29v
cmRpbmF0ZXMuCi0gICAgdm9pZCBzY3JvbGxSZWN0VG9WaXNpYmxlKGNvbnN0IExheW91dFJlY3Qm
IGFic29sdXRlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsUmVjdFRvVmlzaWJs
ZU9wdGlvbnMmKTsKICAgICAvLyBSZXR1cm5zIHRydWUgd2hlbiB0aGUgbGF5ZXIgY291bGQgZG8g
dG91Y2ggc2Nyb2xsaW5nLCBidXQgZG9lc24ndCBsb29rIGF0IHdoZXRoZXIgdGhlcmUgaXMgYWN0
dWFsbHkgc2Nyb2xsYWJsZSBvdmVyZmxvdy4KICAgICBib29sIGNhblVzZUNvbXBvc2l0ZWRTY3Jv
bGxpbmcoKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIHRydWUgd2hlbiB0aGVyZSBpcyBhY3R1YWxs
eSBzY3JvbGxhYmxlIG92ZXJmbG93IChyZXF1aXJlcyBsYXlvdXQgdG8gYmUgdXAtdG8tZGF0ZSku
CkBAIC00NzUsNiArNDczLDggQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0KCk7CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJTdGVwcygpOwogCisgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoaXMgUmVuZGVyTGF5ZXIgaXMgYSBjYW5kaWRhdGUgZm9yIHNjcm9s
bGluZyBkdXJpbmcgc2Nyb2xsSW50b1ZpZXcgb3BlcmF0aW9ucy4KKyAgICBib29sIHNob3VsZFRy
eVRvU2Nyb2xsRm9yU2Nyb2xsSW50b1ZpZXcoKSBjb25zdDsKICAgICB2b2lkIGF1dG9zY3JvbGwo
Y29uc3QgSW50UG9pbnQmKTsKIAogICAgIGJvb2wgY2FuUmVzaXplKCkgY29uc3Q7CkBAIC0xMDQ5
LDggKzEwNDksNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzaG91bGRCZVNlbGZQYWludGluZ0xh
eWVyKCkgY29uc3Q7CiAKLSAgICBib29sIGFsbG93c0N1cnJlbnRTY3JvbGwoKSBjb25zdDsKLQog
ICAgIHZvaWQgZGlydHlBbmNlc3RvckNoYWluVmlzaWJsZURlc2NlbmRhbnRTdGF0dXMoKTsKICAg
ICB2b2lkIHNldEFuY2VzdG9yQ2hhaW5IYXNWaXNpYmxlRGVzY2VuZGFudCgpOwogICAgIApAQCAt
MTA4NSw4ICsxMDgzLDYgQEAgcHJpdmF0ZToKIAogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdU
cmFuc2Zvcm1lZEFuY2VzdG9yKCkgY29uc3Q7CiAKLSAgICBMYXlvdXRSZWN0IGdldFJlY3RUb0V4
cG9zZShjb25zdCBMYXlvdXRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgTGF5b3V0UmVjdCYgZXhw
b3NlUmVjdCwgYm9vbCBpbnNpZGVGaXhlZCwgY29uc3QgU2Nyb2xsQWxpZ25tZW50JiBhbGlnblgs
IGNvbnN0IFNjcm9sbEFsaWdubWVudCYgYWxpZ25ZKSBjb25zdDsKLQogICAgIC8vIENvbnZlcnQg
YSBwb2ludCBpbiBhYnNvbHV0ZSBjb29yZHMgaW50byBsYXllciBjb29yZHMsIHRha2luZyB0cmFu
c2Zvcm1zIGludG8gYWNjb3VudAogICAgIExheW91dFBvaW50IGFic29sdXRlVG9Db250ZW50cyhj
b25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5jcHAKaW5kZXggNGQ3ZTE2MzA3MzFm
YjAyZDczMDAyM2MxMzcwYzA2YWEwZmFiZTZjNC4uMGQzNjI0NDkxMjY2NDEzNGViYzY3NTE1YzEw
Mzg4YzM4YzcwYTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyU2Nyb2xsYWJsZUFyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmNwcApAQCAtMTc1OCwyNSArMTc1OCw1NCBAQCB2b2lk
IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWE6OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQ
b2ludCYgc291cmNlUG9pbnQpCiAgICAgc2Nyb2xsQnlSZWN1cnNpdmVseShhZGp1c3RlZFNjcm9s
bERlbHRhKGRlbHRhKSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYTo6dXBkYXRlU2Nyb2xsUG9zaXRpb24oY29uc3QgU2Nyb2xsUG9zaXRp
b25DaGFuZ2VPcHRpb25zJiBvcHRpb25zLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBj
b25zdCBMYXlvdXRSZWN0JiBsb2NhbEV4cG9zZVJlY3QpCitMYXlvdXRSZWN0IFJlbmRlckxheWVy
U2Nyb2xsYWJsZUFyZWE6OnNjcm9sbFJlY3RUb1Zpc2libGUoY29uc3QgTGF5b3V0UmVjdCYgYWJz
b2x1dGVSZWN0LCBjb25zdCBTY3JvbGxSZWN0VG9WaXNpYmxlT3B0aW9ucyYgb3B0aW9ucykKIHsK
LSAgICBBU1NFUlQobV9sYXllci5hbGxvd3NDdXJyZW50U2Nyb2xsKCkpOworICAgIFJlbmRlckJv
eCogYm94ID0gbGF5ZXIoKS5yZW5kZXJCb3goKTsKKyAgICBBU1NFUlQoYm94KTsKKyAgICBMYXlv
dXRSZWN0IGxvY2FsRXhwb3NlUmVjdChib3gtPmFic29sdXRlVG9Mb2NhbFF1YWQoRmxvYXRRdWFk
KEZsb2F0UmVjdChhYnNvbHV0ZVJlY3QpKSkuYm91bmRpbmdCb3goKSk7CisKKyAgICAvLyBsb2Nh
bEV4cG9zZWRSZWN0IGlzIG5vdyB0aGUgYWJzb2x1dGUgcmVjdCBpbiBsb2NhbCBjb29yZGluYXRl
cywgYnV0IHJlbGF0aXZlIHRvIHRoZQorICAgIC8vIGJvcmRlciBlZGdlLiBNYWtlIHRoZSByZWN0
YW5nbGUgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGFibGUgYXJlYS4KKyAgICBsb2NhbEV4cG9zZVJl
Y3QubW92ZUJ5KC1MYXlvdXRQb2ludChib3gtPmJvcmRlckxlZnQoKSwgYm94LT5ib3JkZXJUb3Ao
KSkpOworCisgICAgaWYgKGJveC0+c2hvdWxkUGxhY2VWZXJ0aWNhbFNjcm9sbGJhck9uTGVmdCgp
KSB7CisgICAgICAgIC8vIEZvciBgZGlyZWN0aW9uOiBydGw7IHdyaXRpbmctbW9kZTogaG9yaXpv
bnRhbC17dGIsYnR9YCBhbmQgYHdyaXRpbmctbW9kZTogdmVydGljYWwtcmxgCisgICAgICAgIC8v
IGJveGVzLCB0aGUgc2Nyb2xsIGJhciBpcyBvbiB0aGUgbGVmdCBzaWRlLiBUaGUgdmlzaWJsZSBy
ZWN0IHN0YXJ0cyBmcm9tIHRoZSByaWdodCBzaWRlCisgICAgICAgIC8vIG9mIHRoZSBzY3JvbGwg
YmFyLiBTbyB0aGUgeCBvZiBsb2NhbEV4cG9zZVJlY3Qgc2hvdWxkIHN0YXJ0IGZyb20gdGhlIHNh
bWUgcG9zaXRpb24gdG9vLgorICAgICAgICBsb2NhbEV4cG9zZVJlY3QubW92ZUJ5KExheW91dFBv
aW50KC12ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKCksIDApKTsKKyAgICB9CisKKyAgICAvLyBzY3Jv
bGwtcGFkZGluZyBhcHBsaWVzIHRvIHRoZSBzY3JvbGwgY29udGFpbmVyLCBidXQgZXhwYW5kIHRo
ZSByZWN0YW5nbGUgdGhhdCB3ZSB3YW50IHRvIGV4cG9zZSBpbiBvcmRlcgorICAgIC8vIHNpbXVs
YXRlIHBhZGRpbmcgdGhlIHNjcm9sbCBjb250YWluZXIuIFRoaXMgcmVjdGFuZ2xlIGlzIHBhc3Nl
ZCB1cCB0aGUgdHJlZSBvZiBzY3JvbGxpbmcgZWxlbWVudHMgdG8KKyAgICAvLyBlbnN1cmUgdGhh
dCB0aGUgcGFkZGluZyBvbiB0aGlzIHNjcm9sbCBjb250YWluZXIgaXMgbWFpbnRhaW5lZC4KKyAg
ICBMYXlvdXRSZWN0IGxheWVyQm91bmRzKDBfbHUsIDBfbHUsIGJveC0+Y2xpZW50V2lkdGgoKSwg
Ym94LT5jbGllbnRIZWlnaHQoKSk7CisgICAgbG9jYWxFeHBvc2VSZWN0LmV4cGFuZChib3gtPnNj
cm9sbFBhZGRpbmdGb3JWaWV3cG9ydFJlY3QobGF5ZXJCb3VuZHMpKTsKIAorICAgIGF1dG8gcmV2
ZWFsUmVjdCA9IGdldFJlY3RUb0V4cG9zZUZvclNjcm9sbEludG9WaWV3KGxheWVyQm91bmRzLCBs
b2NhbEV4cG9zZVJlY3QsIG9wdGlvbnMuYWxpZ25YLCBvcHRpb25zLmFsaWduWSk7CisKKyAgICBh
dXRvIHNjcm9sbFBvc2l0aW9uT3B0aW9ucyA9IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9uczo6
Y3JlYXRlUHJvZ3JhbW1hdGljKCk7CisgICAgaWYgKCFib3gtPmZyYW1lKCkuZXZlbnRIYW5kbGVy
KCkuYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSAmJiBib3gtPmVsZW1lbnQoKSAmJiB1c2VTbW9vdGhT
Y3JvbGxpbmcob3B0aW9ucy5iZWhhdmlvciwgYm94LT5lbGVtZW50KCkpKQorICAgICAgICBzY3Jv
bGxQb3NpdGlvbk9wdGlvbnMuYW5pbWF0ZWQgPSBTY3JvbGxJc0FuaW1hdGVkOjpZZXM7CisgICAg
aWYgKGF1dG8gcmVzdWx0ID0gdXBkYXRlU2Nyb2xsUG9zaXRpb25Gb3JTY3JvbGxJbnRvVmlldyhz
Y3JvbGxQb3NpdGlvbk9wdGlvbnMsIHJldmVhbFJlY3QsIGxvY2FsRXhwb3NlUmVjdCkpCisgICAg
ICAgIHJldHVybiByZXN1bHQudmFsdWUoKTsKKyAgICByZXR1cm4gYWJzb2x1dGVSZWN0OworfQor
c3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjp1cGRh
dGVTY3JvbGxQb3NpdGlvbkZvclNjcm9sbEludG9WaWV3KGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hh
bmdlT3B0aW9ucyYgb3B0aW9ucywgY29uc3QgTGF5b3V0UmVjdCYgcmV2ZWFsUmVjdCwgY29uc3Qg
TGF5b3V0UmVjdCYgbG9jYWxFeHBvc2VSZWN0KQorewogICAgIFJlbmRlckJveCogYm94ID0gbV9s
YXllci5yZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsKIAogICAgIFNjcm9sbE9mZnNldCBj
bGFtcGVkU2Nyb2xsT2Zmc2V0ID0gY2xhbXBTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KCkgKyB0
b0ludFNpemUocm91bmRlZEludFJlY3QocmV2ZWFsUmVjdCkubG9jYXRpb24oKSkpOwotICAgIGlm
IChjbGFtcGVkU2Nyb2xsT2Zmc2V0ICE9IHNjcm9sbE9mZnNldCgpIHx8IHNjcm9sbEFuaW1hdGlv
blN0YXR1cygpICE9IFNjcm9sbEFuaW1hdGlvblN0YXR1czo6Tm90QW5pbWF0aW5nKSB7Ci0gICAg
ICAgIFNjcm9sbE9mZnNldCBvbGRTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQoKTsKLSAgICAg
ICAgU2Nyb2xsT2Zmc2V0IHJlYWxTY3JvbGxPZmZzZXQgPSBzY3JvbGxUb09mZnNldChjbGFtcGVk
U2Nyb2xsT2Zmc2V0LCBvcHRpb25zKTsKLQotICAgICAgICBJbnRTaXplIHNjcm9sbE9mZnNldERp
ZmZlcmVuY2UgPSByZWFsU2Nyb2xsT2Zmc2V0IC0gb2xkU2Nyb2xsT2Zmc2V0OwotICAgICAgICBh
dXRvIGxvY2FsRXhwb3NlUmVjdFNjcm9sbGVkID0gbG9jYWxFeHBvc2VSZWN0OwotICAgICAgICBs
b2NhbEV4cG9zZVJlY3RTY3JvbGxlZC5tb3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNlKTsKLSAg
ICAgICAgcmV0dXJuIExheW91dFJlY3QoYm94LT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVh
ZChGbG9hdFJlY3QobG9jYWxFeHBvc2VSZWN0U2Nyb2xsZWQpKSwgVXNlVHJhbnNmb3JtcykuYm91
bmRpbmdCb3goKSk7Ci0gICAgfQorICAgIGlmIChjbGFtcGVkU2Nyb2xsT2Zmc2V0ID09IHNjcm9s
bE9mZnNldCgpICYmIHNjcm9sbEFuaW1hdGlvblN0YXR1cygpID09IFNjcm9sbEFuaW1hdGlvblN0
YXR1czo6Tm90QW5pbWF0aW5nKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
U2Nyb2xsT2Zmc2V0IG9sZFNjcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldCgpOworICAgIFNjcm9s
bE9mZnNldCByZWFsU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsVG9PZmZzZXQoY2xhbXBlZFNjcm9sbE9m
ZnNldCwgb3B0aW9ucyk7CiAKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIEludFNpemUg
c2Nyb2xsT2Zmc2V0RGlmZmVyZW5jZSA9IHJlYWxTY3JvbGxPZmZzZXQgLSBvbGRTY3JvbGxPZmZz
ZXQ7CisgICAgYXV0byBsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZCA9IGxvY2FsRXhwb3NlUmVjdDsK
KyAgICBsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZC5tb3ZlKC1zY3JvbGxPZmZzZXREaWZmZXJlbmNl
KTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdChib3gtPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRR
dWFkKEZsb2F0UmVjdChsb2NhbEV4cG9zZVJlY3RTY3JvbGxlZCkpLCBVc2VUcmFuc2Zvcm1zKS5i
b3VuZGluZ0JveCgpKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhOjpzY3Jv
bGxCeVJlY3Vyc2l2ZWx5KGNvbnN0IEludFNpemUmIGRlbHRhLCBTY3JvbGxhYmxlQXJlYSoqIHNj
cm9sbGVkQXJlYSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJTY3JvbGxhYmxlQXJlYS5oCmluZGV4IGJmMjdlZGMxNTI2NzQ0ODNmYzc5Nzc3YjY5YTllYzFi
ZGRhMTZhNjMuLjg5OTU4MjhiMjY0YjAwYmFiZmI3ZDY0MjgxODFjNmRlMTJhM2YwZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllclNjcm9sbGFibGVBcmVh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyU2Nyb2xsYWJsZUFy
ZWEuaApAQCAtMjM2LDcgKzIzNiw4IEBAIHB1YmxpYzoKIAogICAgIEludFNpemUgc2Nyb2xsYmFy
T2Zmc2V0KGNvbnN0IFNjcm9sbGJhciYpIGNvbnN0OwogCi0gICAgc3RkOjpvcHRpb25hbDxMYXlv
dXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlvbihjb25zdCBTY3JvbGxQb3NpdGlvbkNoYW5nZU9w
dGlvbnMmLCBjb25zdCBMYXlvdXRSZWN0JiByZXZlYWxSZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBs
b2NhbEV4cG9zZVJlY3QpOworICAgIExheW91dFJlY3Qgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25z
dCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3QsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRp
b25zJik7CisgICAgc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiB1cGRhdGVTY3JvbGxQb3NpdGlv
bkZvclNjcm9sbEludG9WaWV3KGNvbnN0IFNjcm9sbFBvc2l0aW9uQ2hhbmdlT3B0aW9ucyYsIGNv
bnN0IExheW91dFJlY3QmIHJldmVhbFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGxvY2FsRXhwb3Nl
UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBoYXNIb3Jpem9udGFsT3ZlcmZsb3coKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggYjRiNjcx
MDJkZmU3NGRmNWVhYjE1YzIwZmU0ZWRjNTYxNTJhYzNmMy4uNjk3MzkyZjE2NWY1YmQ1ZjM3YTAz
MTY4MGQ3MzYyYjdiMjQ1NzYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKQEAgLTQ0OSwxOSArNDQ5LDYgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlck9iamVjdDo6
ZW5jbG9zaW5nTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIFJl
bmRlck9iamVjdDo6c2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0
ZVJlY3QsIGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25z
JiBvcHRpb25zKQotewotICAgIGlmIChvcHRpb25zLnJldmVhbE1vZGUgPT0gU2VsZWN0aW9uUmV2
ZWFsTW9kZTo6RG9Ob3RSZXZlYWwpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFJlbmRl
ckxheWVyKiBlbmNsb3NpbmdMYXllciA9IHRoaXMtPmVuY2xvc2luZ0xheWVyKCk7Ci0gICAgaWYg
KCFlbmNsb3NpbmdMYXllcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZW5jbG9zaW5n
TGF5ZXItPnNjcm9sbFJlY3RUb1Zpc2libGUoYWJzb2x1dGVSZWN0LCBpbnNpZGVGaXhlZCwgb3B0
aW9ucyk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIFJlbmRlckJveCYgUmVuZGVyT2JqZWN0Ojpl
bmNsb3NpbmdCb3goKSBjb25zdAogewogICAgIHJldHVybiAqbGluZWFnZU9mVHlwZTxSZW5kZXJC
b3g+KGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Jj4oKnRoaXMpKS5maXJzdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGQwZjRjZWM0YmFkYzUyYTZlNzRhMGZj
ODFiNzgwZjJkMjUzYWJmNjkuLjAwNjQwODM0OTRlMzM1Zjk5MDg1NjE5ZTg4NGZlOTNjZmE2NDE1
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTE1Myw5ICsx
NTMsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJMYXllciogZW5jbG9z
aW5nTGF5ZXIoKSBjb25zdDsKIAotICAgIC8vIFNjcm9sbGluZyBpcyBhIFJlbmRlckJveCBjb25j
ZXB0LCBob3dldmVyIHNvbWUgY29kZSBqdXN0IGNhcmVzIGFib3V0IHJlY3Vyc2l2ZWx5IHNjcm9s
bGluZyBvdXIgZW5jbG9zaW5nIFNjcm9sbGFibGVBcmVhKHMpLgotICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2Nyb2xsUmVjdFRvVmlzaWJsZShjb25zdCBMYXlvdXRSZWN0JiBhYnNvbHV0ZVJlY3Qs
IGJvb2wgaW5zaWRlRml4ZWQsIGNvbnN0IFNjcm9sbFJlY3RUb1Zpc2libGVPcHRpb25zJik7Ci0K
ICAgICBXRUJDT1JFX0VYUE9SVCBSZW5kZXJCb3gmIGVuY2xvc2luZ0JveCgpIGNvbnN0OwogICAg
IFJlbmRlckJveE1vZGVsT2JqZWN0JiBlbmNsb3NpbmdCb3hNb2RlbE9iamVjdCgpIGNvbnN0Owog
ICAgIFJlbmRlckJveCogZW5jbG9zaW5nU2Nyb2xsYWJsZUNvbnRhaW5lckZvclNuYXBwaW5nKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25t
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzM1ZmNmZGU2MDU3YzVlOWNjNzA4ZTQ5NGM1
MTc1YjI2OGNiNmVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1lbnQuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlv
bnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3Jh
dGlvbi4KLSAqCi0gKiBPdGhlciBjb250cmlidXRvcnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFu
IDxyb2MrQGNzLmNtdS5lZHU+Ci0gKiAgIERhdmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQu
ZWR1PgotICogICBDaHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAg
UmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRlLmNvbT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xh
bmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYg
PHRpbWVsZXNzQG1hYy5jb20+Ci0gKiAgIEJvcmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2Yg
dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBN
b3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3
dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5
bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lv
bnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQotICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRo
b3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24g
b2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAq
IGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRv
IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNh
dGUgeW91ciBkZWNpc2lvbiBieQotICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQg
cmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVx
dWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5
b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVz
ZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRo
ZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
U2Nyb2xsQWxpZ25tZW50LmgiCi0KLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IFNjcm9s
bEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOb3RWaXNpYmxlID0geyBC
ZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwgQmVoYXZpb3I6Ok5vU2Ny
b2xsIH07Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRn
ZUlmTm90VmlzaWJsZSA9IHsgQmVoYXZpb3I6Ok5vU2Nyb2xsLCBCZWhhdmlvcjo6QWxpZ25Ub0Ns
b3Nlc3RFZGdlLCBCZWhhdmlvcjo6Tm9TY3JvbGwgfTsKLWNvbnN0IFNjcm9sbEFsaWdubWVudCBT
Y3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVySWZOZWVkZWQgPSB7IEJlaGF2aW9yOjpOb1Njcm9s
bCwgQmVoYXZpb3I6OkFsaWduQ2VudGVyLCBCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlIH07
Ci1XRUJDT1JFX0VYUE9SVCBjb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50Ojph
bGlnblRvRWRnZUlmTmVlZGVkID0geyBCZWhhdmlvcjo6Tm9TY3JvbGwsIEJlaGF2aW9yOjpBbGln
blRvQ2xvc2VzdEVkZ2UsIEJlaGF2aW9yOjpBbGlnblRvQ2xvc2VzdEVkZ2UgfTsKLVdFQkNPUkVf
RVhQT1JUIGNvbnN0IFNjcm9sbEFsaWdubWVudCBTY3JvbGxBbGlnbm1lbnQ6OmFsaWduQ2VudGVy
QWx3YXlzID0geyBCZWhhdmlvcjo6QWxpZ25DZW50ZXIsIEJlaGF2aW9yOjpBbGlnbkNlbnRlciwg
QmVoYXZpb3I6OkFsaWduQ2VudGVyIH07Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvcEFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduVG9wLCBCZWhhdmlvcjo6
QWxpZ25Ub3AsIEJlaGF2aW9yOjpBbGlnblRvcCB9OwotY29uc3QgU2Nyb2xsQWxpZ25tZW50IFNj
cm9sbEFsaWdubWVudDo6YWxpZ25SaWdodEFsd2F5cyA9IHsgQmVoYXZpb3I6OkFsaWduUmlnaHQs
IEJlaGF2aW9yOjpBbGlnblJpZ2h0LCBCZWhhdmlvcjo6QWxpZ25SaWdodCB9OwotY29uc3QgU2Ny
b2xsQWxpZ25tZW50IFNjcm9sbEFsaWdubWVudDo6YWxpZ25MZWZ0QWx3YXlzID0geyBCZWhhdmlv
cjo6QWxpZ25MZWZ0LCBCZWhhdmlvcjo6QWxpZ25MZWZ0LCBCZWhhdmlvcjo6QWxpZ25MZWZ0IH07
Ci1jb25zdCBTY3JvbGxBbGlnbm1lbnQgU2Nyb2xsQWxpZ25tZW50OjphbGlnbkJvdHRvbUFsd2F5
cyA9IHsgQmVoYXZpb3I6OkFsaWduQm90dG9tLCBCZWhhdmlvcjo6QWxpZ25Cb3R0b20sIEJlaGF2
aW9yOjpBbGlnbkJvdHRvbSB9OwotICAgIAotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvciBiKQotewotICAgIHN3aXRjaCAoYikg
ewotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6Tm9TY3JvbGw6Ci0gICAgICAg
IHJldHVybiB0cyA8PCAiTm9TY3JvbGwiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhh
dmlvcjo6QWxpZ25DZW50ZXI6Ci0gICAgICAgIHJldHVybiB0cyA8PCAiQWxpZ25DZW50ZXIiOwot
ICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Ub3A6Ci0gICAgICAgIHJl
dHVybiB0cyA8PCAiQWxpZ25Ub3AiOwotICAgIGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlv
cjo6QWxpZ25Cb3R0b206Ci0gICAgICAgIHJldHVybiB0cyA8PCAiQWxpZ25Cb3R0b20iOwotICAg
IGNhc2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25MZWZ0OgotICAgICAgICByZXR1
cm4gdHMgPDwgIkFsaWduTGVmdCI7Ci0gICAgY2FzZSBTY3JvbGxBbGlnbm1lbnQ6OkJlaGF2aW9y
OjpBbGlnblJpZ2h0OgotICAgICAgICByZXR1cm4gdHMgPDwgIkFsaWduUmlnaHQiOwotICAgIGNh
c2UgU2Nyb2xsQWxpZ25tZW50OjpCZWhhdmlvcjo6QWxpZ25Ub0Nsb3Nlc3RFZGdlOgotICAgICAg
ICByZXR1cm4gdHMgPDwgIkFsaWduVG9DbG9zZXN0RWRnZSI7Ci0gICAgfQotICAgIHJldHVybiB0
czsKLX0KLSAgICAKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNjcm9sbEFsaWdubWVudCYgcykKLXsKLSAgICByZXR1cm4gdHMgPDwgIlNjcm9sbEFsaWdubWVu
dDogdmlzaWJsZTogIiA8PCBzLm1fcmVjdFZpc2libGUgPDwgIiBoaWRkZW46ICIgPDwgcy5tX3Jl
Y3RIaWRkZW4gPDwgIiBwYXJ0aWFsOiAiIDw8IHMubV9yZWN0UGFydGlhbDsKLX0KLQotfTsgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
Y3JvbGxBbGlnbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TY3JvbGxBbGlnbm1l
bnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDFiYjZlZjllMjJlN2M1OTU1ODhh
YjhiMzEyNzkyYTA4NTMzYWVhZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2Nyb2xsQWxpZ25tZW50LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA5LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUG9ydGlv
bnMgYXJlIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3Jwb3Jh
dGlvbi4KLSAqCi0gKiBPdGhlciBjb250cmlidXRvcnM6Ci0gKiAgIFJvYmVydCBPJ0NhbGxhaGFu
IDxyb2MrQGNzLmNtdS5lZHU+Ci0gKiAgIERhdmlkIEJhcm9uIDxkYmFyb25AZmFzLmhhcnZhcmQu
ZWR1PgotICogICBDaHJpc3RpYW4gQmllc2luZ2VyIDxjYmllc2luZ2VyQHdlYi5kZT4KLSAqICAg
UmFuZGFsbCBKZXN1cCA8cmplc3VwQHdnYXRlLmNvbT4KLSAqICAgUm9sYW5kIE1haW56IDxyb2xh
bmQubWFpbnpAaW5mb3JtYXRpay5tZWQudW5pLWdpZXNzZW4uZGU+Ci0gKiAgIEpvc2ggU29yZWYg
PHRpbWVsZXNzQG1hYy5jb20+Ci0gKiAgIEJvcmlzIFpiYXJza3kgPGJ6YmFyc2t5QG1pdC5lZHU+
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKLSAqCi0gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2Yg
dGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcwotICogb2YgZWl0aGVyIHRoZSBN
b3ppbGxhIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4xLCBmb3VuZCBhdAotICogaHR0cDovL3d3
dy5tb3ppbGxhLm9yZy9NUEwvICh0aGUgIk1QTCIpIG9yIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgVmVyc2lvbiAyLjAsIGZvdW5kIGF0IGh0dHA6Ly93d3cuZnNmLm9yZy9jb3B5
bGVmdC9ncGwuaHRtbAotICogKHRoZSAiR1BMIiksIGluIHdoaWNoIGNhc2UgdGhlIHByb3Zpc2lv
bnMgb2YgdGhlIE1QTCBvciB0aGUgR1BMIGFyZQotICogYXBwbGljYWJsZSBpbnN0ZWFkIG9mIHRo
b3NlIGFib3ZlLiAgSWYgeW91IHdpc2ggdG8gYWxsb3cgdXNlIG9mIHlvdXIKLSAqIHZlcnNpb24g
b2YgdGhpcyBmaWxlIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIG9uZSBvZiB0aG9zZSB0d28KLSAq
IGxpY2Vuc2VzICh0aGUgTVBMIG9yIHRoZSBHUEwpIGFuZCBub3QgdG8gYWxsb3cgb3RoZXJzIHRv
IHVzZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciB0aGUgTEdQTCwgaW5kaWNh
dGUgeW91ciBkZWNpc2lvbiBieQotICogZGVsZXRpbmd0aGUgcHJvdmlzaW9ucyBhYm92ZSBhbmQg
cmVwbGFjZSB0aGVtIHdpdGggdGhlIG5vdGljZSBhbmQKLSAqIG90aGVyIHByb3Zpc2lvbnMgcmVx
dWlyZWQgYnkgdGhlIE1QTCBvciB0aGUgR1BMLCBhcyB0aGUgY2FzZSBtYXkgYmUuCi0gKiBJZiB5
b3UgZG8gbm90IGRlbGV0ZSB0aGUgcHJvdmlzaW9ucyBhYm92ZSwgYSByZWNpcGllbnQgbWF5IHVz
ZSB5b3VyCi0gKiB2ZXJzaW9uIG9mIHRoaXMgZmlsZSB1bmRlciBhbnkgb2YgdGhlIExHUEwsIHRo
ZSBNUEwgb3IgdGhlIEdQTC4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdURiB7
Ci1jbGFzcyBUZXh0U3RyZWFtOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0cnVjdCBT
Y3JvbGxBbGlnbm1lbnQgewotCi0gICAgZW51bSBjbGFzcyBCZWhhdmlvciB7Ci0gICAgICAgIE5v
U2Nyb2xsLAotICAgICAgICBBbGlnbkNlbnRlciwKLSAgICAgICAgQWxpZ25Ub3AsCi0gICAgICAg
IEFsaWduQm90dG9tLAotICAgICAgICBBbGlnbkxlZnQsCi0gICAgICAgIEFsaWduUmlnaHQsCi0g
ICAgICAgIEFsaWduVG9DbG9zZXN0RWRnZQotICAgIH07Ci0KLSAgICBCZWhhdmlvciBnZXRWaXNp
YmxlQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX3JlY3RWaXNpYmxlOyB9Ci0gICAgQmVoYXZp
b3IgZ2V0UGFydGlhbEJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0UGFydGlhbDsgfQot
ICAgIEJlaGF2aW9yIGdldEhpZGRlbkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9yZWN0SGlk
ZGVuOyB9Ci0gICAgdm9pZCBkaXNhYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hv
bGQoKSB7IG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQgPSBmYWxz
ZTsgfQotICAgIGJvb2wgbGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGRFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVMZWdhY3lIb3Jpem9udGFsVmlzaWJpbGl0eVRocmVz
aG9sZDsgfQotCi0gICAgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlcklm
Tm90VmlzaWJsZTsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdl
SWZOb3RWaXNpYmxlOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTY3JvbGxBbGln
bm1lbnQgYWxpZ25DZW50ZXJJZk5lZWRlZDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9FZGdlSWZOZWVkZWQ7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGNvbnN0IFNjcm9sbEFsaWdubWVudCBhbGlnbkNlbnRlckFsd2F5czsKLSAgICBz
dGF0aWMgY29uc3QgU2Nyb2xsQWxpZ25tZW50IGFsaWduVG9wQWx3YXlzOwotICAgIHN0YXRpYyBj
b25zdCBTY3JvbGxBbGlnbm1lbnQgYWxpZ25SaWdodEFsd2F5czsKLSAgICBzdGF0aWMgY29uc3Qg
U2Nyb2xsQWxpZ25tZW50IGFsaWduTGVmdEFsd2F5czsKLSAgICBzdGF0aWMgY29uc3QgU2Nyb2xs
QWxpZ25tZW50IGFsaWduQm90dG9tQWx3YXlzOwotCi0gICAgQmVoYXZpb3IgbV9yZWN0VmlzaWJs
ZTsKLSAgICBCZWhhdmlvciBtX3JlY3RIaWRkZW47Ci0gICAgQmVoYXZpb3IgbV9yZWN0UGFydGlh
bDsKLSAgICBib29sIG1fZW5hYmxlTGVnYWN5SG9yaXpvbnRhbFZpc2liaWxpdHlUaHJlc2hvbGQg
eyB0cnVlIH07Ci19OwotICAgIAotV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIFNjcm9sbEFsaWdubWVudDo6QmVoYXZpb3IpOwotV0VC
Q09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYs
IGNvbnN0IFNjcm9sbEFsaWdubWVudCYpOwotCi19OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggZGZkYzNhOWM4
YjJmZGViODNhZDNhZWU5NDlmY2QxZmYxNTVmNzMzZC4uNWQ5M2Q4NThkYTg3YTE4OGM3Mzc4Njhh
YzcxNTQ4ZjM2MjM2OGYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YkZyYW1lLm1tCkBAIC04MSw2ICs4MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVy
U3RhdGVNYWNoaW5lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lU2VsZWN0aW9uLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lVHJlZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9GcmFtZVZpZXcuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SFRNTEZyYW1lT3duZXJFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxOYW1lcy5oPgpA
QCAtNzI4LDExICs3MjksMTEgQEAgLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERP
TVJhbmdlICopcmFuZ2UKICAgICAgICAgCiAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBzdGFydE5vZGUt
PnJlbmRlcmVyKCkpIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgc3RhcnRO
b2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKFdlYkNvcmU6OmVuY2xvc2luZ0lu
dFJlY3QocmFuZ2VSZWN0KSwgaW5zaWRlRml4ZWQsIHsgV2ViQ29yZTo6U2VsZWN0aW9uUmV2ZWFs
TW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVk
ZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29y
ZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6WWVzIH0pOworICAgICAgICBXZWJD
b3JlOjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50
UmVjdChyYW5nZVJlY3QpLCAqc3RhcnROb2RlLT5yZW5kZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBX
ZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdu
bWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGln
blRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5n
OjpZZXMgfSk7CiAjZWxzZQogICAgICAgICBhdXRvKiBsYXllciA9IHN0YXJ0Tm9kZS0+cmVuZGVy
ZXIoKS0+ZW5jbG9zaW5nTGF5ZXIoKTsKICAgICAgICAgaWYgKGxheWVyKSB7Ci0gICAgICAgICAg
ICBzdGFydE5vZGUtPnJlbmRlcmVyKCktPnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6ZW5j
bG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rp
b25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0Vk
Z2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVk
LCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CisgICAg
ICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2libGUoV2ViQ29yZTo6
ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCAqc3RhcnROb2RlLT5yZW5kZXJlcigpLCBpbnNp
ZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZlYWwsIFdlYkNvcmU6
OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2Nyb2xsQWxp
Z25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRBbGxvd0Nyb3NzT3Jp
Z2luU2Nyb2xsaW5nOjpZZXMgfSk7CiAgICAgICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5z
ZWxlY3Rpb24oKS5zZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogICAgICAgICAgICAgX3ByaXZh
dGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkudXBkYXRlQXBwZWFyYW5jZSgpOwogICAgICAgICB9
CkBAIC03NTAsNyArNzUxLDcgQEAgLSAodm9pZClfc2Nyb2xsRE9NUmFuZ2VUb1Zpc2libGU6KERP
TVJhbmdlICopcmFuZ2Ugd2l0aEluc2V0OihDR0Zsb2F0KWluc2V0CiAgICAgaWYgKHN0YXJ0Tm9k
ZSAmJiBzdGFydE5vZGUtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgYXV0byogbGF5ZXIgPSBzdGFy
dE5vZGUtPnJlbmRlcmVyKCktPmVuY2xvc2luZ0xheWVyKCk7CiAgICAgICAgIGlmIChsYXllcikg
ewotICAgICAgICAgICAgc3RhcnROb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxl
KFdlYkNvcmU6OmVuY2xvc2luZ0ludFJlY3QocmFuZ2VSZWN0KSwgaW5zaWRlRml4ZWQsIHsgV2Vi
Q29yZTo6U2VsZWN0aW9uUmV2ZWFsTW9kZTo6UmV2ZWFsLCBXZWJDb3JlOjpTY3JvbGxBbGlnbm1l
bnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b0VkZ2VJZk5lZWRlZCwgV2ViQ29yZTo6U2hvdWxkQWxsb3dDcm9zc09yaWdpblNjcm9sbGluZzo6
WWVzfSk7CisgICAgICAgICAgICBXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFJlY3RUb1Zpc2li
bGUoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChyYW5nZVJlY3QpLCAqc3RhcnROb2RlLT5yZW5k
ZXJlcigpLCBpbnNpZGVGaXhlZCwgeyBXZWJDb3JlOjpTZWxlY3Rpb25SZXZlYWxNb2RlOjpSZXZl
YWwsIFdlYkNvcmU6OlNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgV2ViQ29y
ZTo6U2Nyb2xsQWxpZ25tZW50OjphbGlnblRvRWRnZUlmTmVlZGVkLCBXZWJDb3JlOjpTaG91bGRB
bGxvd0Nyb3NzT3JpZ2luU2Nyb2xsaW5nOjpZZXMgfSk7CiAKICAgICAgICAgICAgIGF1dG8gY29y
ZUZyYW1lID0gY29yZShzZWxmKTsKICAgICAgICAgICAgIGlmIChjb3JlRnJhbWUpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>